A free, self-hostable aggregator…
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

66 lines
1.6 KiB

<?php
$username = Minz_Session::param('currentUser', '_');
$options = 0;
if (version_compare(PHP_VERSION, '5.4.0') >= 0) {
$options = JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE;
}
$articles = array(
'id' => 'user/' . str_replace('/', '', $username) . '/state/org.freshrss/' . $this->type,
'title' => $this->list_title,
'author' => $username,
'items' => array(),
);
echo rtrim(json_encode($articles, $options), " ]}\n\r\t"), "\n";
$first = true;
foreach ($this->entriesRaw as $entryRaw) {
if (empty($entryRaw)) {
continue;
}
$entry = FreshRSS_EntryDAO::daoToEntry($entryRaw);
if (!isset($this->feed)) {
$feed = FreshRSS_CategoryDAO::findFeed($this->categories, $entry->feed());
if ($feed == null) {
$feed = $entry->feed(true);
}
} else {
$feed = $this->feed;
}
$article = array(
'id' => $entry->guid(),
'categories' => array_values($entry->tags()),
'title' => $entry->title(),
'author' => $entry->author(),
'published' => $entry->date(true),
'updated' => $entry->date(true),
'alternate' => array(array(
'href' => $entry->link(),
'type' => 'text/html',
)),
'content' => array(
'content' => $entry->content(),
),
'origin' => array(
'streamId' => $feed == null ? '' : $feed->id(),
'title' => $feed == null ? '' : $feed->name(),
'htmlUrl' => $feed == null ? '' : $feed->website(),
'feedUrl' => $feed == null ? '' : $feed->url(),
)
);
$line = json_encode($article, $options);
if ($line != '') {
if ($first) {
$first = false;
} else {
echo ",\n";
}
echo $line;
}
}
echo "\n]}\n";