From 743c1b740bd8ec0b70f7058d4b52101b346a5e9c Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Wed, 16 Jan 2019 22:26:43 +0100 Subject: Export labels (#2217) * Export labels https://github.com/FreshRSS/FreshRSS/issues/2196 * Small fixes * Backport code from 1.14.0 https://github.com/FreshRSS/FreshRSS/pull/2199/commits/4888f919f104b2d170302565e481a0b731eb4145 * More fixes --- app/views/helpers/export/articles.phtml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'app/views/helpers/export/articles.phtml') diff --git a/app/views/helpers/export/articles.phtml b/app/views/helpers/export/articles.phtml index 59a2c7ad7..eb2cb0924 100644 --- a/app/views/helpers/export/articles.phtml +++ b/app/views/helpers/export/articles.phtml @@ -16,14 +16,12 @@ $articles = array( echo rtrim(json_encode($articles, $options), " ]}\n\r\t"), "\n"; $first = true; -$tagDAO = FreshRSS_Factory::createTagDao(); -$entryIdsTagNames = $tagDAO->getEntryIdsTagNames($this->entriesRaw); -if ($entryIdsTagNames == false) { - $entryIdsTagNames = array(); +if (empty($this->entryIdsTagNames)) { + $this->entryIdsTagNames = array(); } foreach ($this->entriesRaw as $entryRaw) { - if (empty($entryRaw)) { + if ($entryRaw == null) { continue; } $entry = FreshRSS_EntryDAO::daoToEntry($entryRaw); @@ -61,7 +59,7 @@ foreach ($this->entriesRaw as $entryRaw) { if ($entry->isFavorite()) { $article['categories'][] = 'user/-/state/com.google/starred'; } - $tagNames = isset($entryIdsTagNames['e_' . $entry->id()]) ? $entryIdsTagNames['e_' . $entry->id()] : array(); + $tagNames = isset($this->entryIdsTagNames['e_' . $entry->id()]) ? $this->entryIdsTagNames['e_' . $entry->id()] : array(); foreach ($tagNames as $tagName) { $article['categories'][] = 'user/-/label/' . $tagName; } -- cgit v1.2.3 From f1ac6dd5509c6aa9e1d99401c5e1a0b894d4e7b0 Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Thu, 24 Jan 2019 20:44:45 +0100 Subject: Export/import articles read/unread state (#2226) --- CHANGELOG.md | 1 + app/Controllers/importExportController.php | 10 +++++++++- app/views/helpers/export/articles.phtml | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) (limited to 'app/views/helpers/export/articles.phtml') diff --git a/CHANGELOG.md b/CHANGELOG.md index 3a0188431..3e3dfc302 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ * Features * Include articles with custom labels during export [#2196](https://github.com/FreshRSS/FreshRSS/issues/2196) + * Export/import articles read/unread state [#2226](https://github.com/FreshRSS/FreshRSS/pull/2226) * Bug fixing * Fix missing HTTP `X-Forwarded-Prefix` in cookie path behind a reverse-proxy [#2201](https://github.com/FreshRSS/FreshRSS/pull/2201) * Deployment diff --git a/app/Controllers/importExportController.php b/app/Controllers/importExportController.php index 96c5e42c2..e11221610 100644 --- a/app/Controllers/importExportController.php +++ b/app/Controllers/importExportController.php @@ -436,7 +436,7 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { return false; } - $is_read = FreshRSS_Context::$user_conf->mark_when['reception'] ? 1 : 0; + $mark_as_read = FreshRSS_Context::$user_conf->mark_when['reception'] ? 1 : 0; $google_compliant = strpos($article_object['id'], 'com.google') !== false; @@ -507,6 +507,7 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { $feed_id = $article_to_feed[$item['id']]; $author = isset($item['author']) ? $item['author'] : ''; $is_starred = false; + $is_read = null; $tags = $item['categories']; $labels = array(); for ($i = count($tags) - 1; $i >= 0; $i --) { @@ -514,6 +515,10 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { if (strpos($tag, 'user/-/') !== false) { if ($tag === 'user/-/state/com.google/starred') { $is_starred = true; + } elseif ($tag === 'user/-/state/com.google/read') { + $is_read = true; + } elseif ($tag === 'user/-/state/com.google/unread') { + $is_read = false; } elseif (strpos($tag, 'user/-/label/') === 0) { $tag = trim(substr($tag, 13)); if ($tag != '') { @@ -527,6 +532,9 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { //If the article has no label, mark it as starred (old format) $is_starred = empty($labels); } + if ($is_read === null) { + $is_read = $mark_as_read; + } $url = $item['alternate'][0]['href']; if (!empty($item['content']['content'])) { diff --git a/app/views/helpers/export/articles.phtml b/app/views/helpers/export/articles.phtml index eb2cb0924..2d1fcd133 100644 --- a/app/views/helpers/export/articles.phtml +++ b/app/views/helpers/export/articles.phtml @@ -56,6 +56,7 @@ foreach ($this->entriesRaw as $entryRaw) { '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'; } -- cgit v1.2.3