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.
79 lines
2.1 KiB
79 lines
2.1 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; |
|
|
|
if (empty($this->entryIdsTagNames)) { |
|
$this->entryIdsTagNames = array(); |
|
} |
|
|
|
foreach ($this->entriesRaw as $entryRaw) { |
|
if ($entryRaw == null) { |
|
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(), |
|
'timestampUsec' => '' . $entry->id(), |
|
'categories' => array_values($entry->tags()), |
|
'title' => $entry->title(), |
|
'author' => $entry->authors(true), |
|
'published' => $entry->date(true), |
|
'updated' => $entry->date(true), |
|
'alternate' => array(array( |
|
'href' => htmlspecialchars_decode($entry->link(), ENT_QUOTES), |
|
'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(), |
|
) |
|
); |
|
$article['categories'][] = $entry->isRead() ? 'user/-/state/com.google/read' : 'user/-/state/com.google/unread'; |
|
if ($entry->isFavorite()) { |
|
$article['categories'][] = 'user/-/state/com.google/starred'; |
|
} |
|
$tagNames = isset($this->entryIdsTagNames['e_' . $entry->id()]) ? $this->entryIdsTagNames['e_' . $entry->id()] : array(); |
|
foreach ($tagNames as $tagName) { |
|
$article['categories'][] = 'user/-/label/' . $tagName; |
|
} |
|
|
|
$line = json_encode($article, $options); |
|
if ($line != '') { |
|
if ($first) { |
|
$first = false; |
|
} else { |
|
echo ",\n"; |
|
} |
|
echo $line; |
|
} |
|
} |
|
|
|
echo "\n]}\n";
|
|
|