= 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";