diff options
| author | 2019-01-17 21:36:29 +0100 | |
|---|---|---|
| committer | 2019-01-17 21:36:29 +0100 | |
| commit | 34fe41ac78b6bd465c12086edbbd856d9533065c (patch) | |
| tree | 12e86c946a9a76aa83af0f1f8ff315368e08535c /app | |
| parent | 6bc49e137e2f996f768770c3702d7d6552f556b3 (diff) | |
| parent | 48c901bc5c090ff0ee8397d0b1ecfb337d774a86 (diff) | |
Merge branch 'FreshRSS/dev' into FreshRSS/dev-1.14.0
Diffstat (limited to 'app')
| -rw-r--r-- | app/Controllers/importExportController.php | 36 | ||||
| -rw-r--r-- | app/Models/EntryDAO.php | 6 | ||||
| -rw-r--r-- | app/i18n/cz/sub.php | 1 | ||||
| -rw-r--r-- | app/i18n/de/sub.php | 1 | ||||
| -rw-r--r-- | app/i18n/en/sub.php | 1 | ||||
| -rwxr-xr-x | app/i18n/es/sub.php | 1 | ||||
| -rw-r--r-- | app/i18n/fr/sub.php | 1 | ||||
| -rw-r--r-- | app/i18n/he/sub.php | 1 | ||||
| -rw-r--r-- | app/i18n/it/sub.php | 1 | ||||
| -rw-r--r-- | app/i18n/kr/sub.php | 1 | ||||
| -rw-r--r-- | app/i18n/nl/sub.php | 1 | ||||
| -rw-r--r-- | app/i18n/oc/sub.php | 1 | ||||
| -rw-r--r-- | app/i18n/pt-br/sub.php | 1 | ||||
| -rw-r--r-- | app/i18n/ru/sub.php | 1 | ||||
| -rw-r--r-- | app/i18n/tr/sub.php | 1 | ||||
| -rw-r--r-- | app/i18n/zh-cn/sub.php | 1 | ||||
| -rw-r--r-- | app/layout/header.phtml | 2 | ||||
| -rw-r--r-- | app/views/helpers/export/articles.phtml | 10 | ||||
| -rw-r--r-- | app/views/importExport/index.phtml | 5 |
19 files changed, 51 insertions, 22 deletions
diff --git a/app/Controllers/importExportController.php b/app/Controllers/importExportController.php index 2d8d4e01d..3f2947c7a 100644 --- a/app/Controllers/importExportController.php +++ b/app/Controllers/importExportController.php @@ -650,7 +650,7 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { return $return; } - public function exportFile($export_opml = true, $export_starred = false, $export_feeds = array(), $maxFeedEntries = 50, $username = null) { + public function exportFile($export_opml = true, $export_starred = false, $export_labelled = false, $export_feeds = array(), $maxFeedEntries = 50, $username = null) { require_once(LIB_PATH . '/lib_opml.php'); $this->catDAO = new FreshRSS_CategoryDAO($username); @@ -674,8 +674,11 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { $export_files["feeds_${day}.opml.xml"] = $this->generateOpml(); } - if ($export_starred) { - $export_files["starred_${day}.json"] = $this->generateEntries('starred'); + if ($export_starred || $export_labelled) { + $export_files["starred_${day}.json"] = $this->generateEntries( + ($export_starred ? 'S' : '') . + ($export_labelled ? 'T' : '') + ); } foreach ($export_feeds as $feed_id) { @@ -683,7 +686,7 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { if ($feed) { $filename = "feed_${day}_" . $feed->category() . '_' . $feed->id() . '.json'; - $export_files[$filename] = $this->generateEntries('feed', $feed, $maxFeedEntries); + $export_files[$filename] = $this->generateEntries('f', $feed, $maxFeedEntries); } } @@ -725,6 +728,7 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { $nb_files = $this->exportFile( Minz_Request::param('export_opml', false), Minz_Request::param('export_starred', false), + Minz_Request::param('export_labelled', false), Minz_Request::param('export_feeds', array()) ); } catch (FreshRSS_ZipMissing_Exception $zme) { @@ -758,27 +762,29 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { /** * This method returns a JSON file content. * - * @param string $type must be "starred" or "feed" + * @param string $type must be one of: + * 'S' (starred/favourite), 'f' (feed), 'T' (taggued/labelled), 'ST' (starred or labelled) * @param FreshRSS_Feed $feed feed of which we want to get entries. * @return string the JSON file content. */ private function generateEntries($type, $feed = null, $maxFeedEntries = 50) { $this->view->categories = $this->catDAO->listCategories(); + $tagDAO = FreshRSS_Factory::createTagDao(); - if ($type == 'starred') { + if ($type === 's' || $type === 'S' || $type === 'T' || $type === 'ST') { $this->view->list_title = _t('sub.import_export.starred_list'); $this->view->type = 'starred'; - $unread_fav = $this->entryDAO->countUnreadReadFavorites(); - $this->view->entriesRaw = $this->entryDAO->listWhereRaw( - 's', '', FreshRSS_Entry::STATE_ALL, 'ASC', $unread_fav['all'] - ); - } elseif ($type === 'feed' && $feed != null) { + $this->view->entriesId = $this->entryDAO->listIdsWhere($type, '', FreshRSS_Entry::STATE_ALL, 'ASC', -1); + $this->view->entryIdsTagNames = $tagDAO->getEntryIdsTagNames($this->view->entriesId); + //The following is a streamable query, i.e. must be last + $this->view->entriesRaw = $this->entryDAO->listWhereRaw($type, '', FreshRSS_Entry::STATE_ALL, 'ASC', -1); + } elseif ($type === 'f' && $feed != null) { $this->view->list_title = _t('sub.import_export.feed_list', $feed->name()); $this->view->type = 'feed/' . $feed->id(); - $this->view->entriesRaw = $this->entryDAO->listWhereRaw( - 'f', $feed->id(), FreshRSS_Entry::STATE_ALL, 'ASC', - $maxFeedEntries - ); + $this->view->entriesId = $this->entryDAO->listIdsWhere($type, $feed->id(), FreshRSS_Entry::STATE_ALL, 'ASC', $maxFeedEntries); + $this->view->entryIdsTagNames = $tagDAO->getEntryIdsTagNames($this->view->entriesId); + //The following is a streamable query, i.e. must be last + $this->view->entriesRaw = $this->entryDAO->listWhereRaw($type, $feed->id(), FreshRSS_Entry::STATE_ALL, 'ASC', $maxFeedEntries); $this->view->feed = $feed; } diff --git a/app/Models/EntryDAO.php b/app/Models/EntryDAO.php index 9ae1ed797..21f17c097 100644 --- a/app/Models/EntryDAO.php +++ b/app/Models/EntryDAO.php @@ -839,6 +839,9 @@ class FreshRSS_EntryDAO extends Minz_ModelPdo implements FreshRSS_Searchable { $where .= 'f.priority >= ' . FreshRSS_Feed::PRIORITY_NORMAL . ' '; $where .= 'AND e.is_favorite=1 '; break; + case 'S': //Starred + $where .= 'e.is_favorite=1 '; + break; case 'c': //Category $where .= 'f.priority >= ' . FreshRSS_Feed::PRIORITY_NORMAL . ' '; $where .= 'AND f.category=? '; @@ -855,6 +858,9 @@ class FreshRSS_EntryDAO extends Minz_ModelPdo implements FreshRSS_Searchable { case 'T': //Any tag $where .= '1=1 '; break; + case 'ST': //Starred or tagged + $where .= 'e.is_favorite=1 OR EXISTS (SELECT et2.id_tag FROM `' . $this->prefix . 'entrytag` et2 WHERE et2.id_entry = e.id) '; + break; default: throw new FreshRSS_EntriesGetter_Exception('Bad type in Entry->listByType: [' . $type . ']!'); } diff --git a/app/i18n/cz/sub.php b/app/i18n/cz/sub.php index ad02f6f49..5b5634fed 100644 --- a/app/i18n/cz/sub.php +++ b/app/i18n/cz/sub.php @@ -72,6 +72,7 @@ return array( 'export' => 'Export', 'export_opml' => 'Exportovat seznam kanálů (OPML)', 'export_starred' => 'Exportovat oblíbené', + 'export_labelled' => 'Export your labelled articles', //TODO 'feed_list' => 'Seznam %s článků', 'file_to_import' => 'Soubor k importu<br />(OPML, JSON nebo ZIP)', 'file_to_import_no_zip' => 'Soubor k importu<br />(OPML nebo JSON)', diff --git a/app/i18n/de/sub.php b/app/i18n/de/sub.php index aa408e8c7..27e893177 100644 --- a/app/i18n/de/sub.php +++ b/app/i18n/de/sub.php @@ -72,6 +72,7 @@ return array( 'export' => 'Exportieren', 'export_opml' => 'Liste der Feeds exportieren (OPML)', 'export_starred' => 'Ihre Favoriten exportieren', + 'export_labelled' => 'Export your labelled articles', //TODO 'feed_list' => 'Liste von %s Artikeln', 'file_to_import' => 'Zu importierende Datei<br />(OPML, JSON oder ZIP)', 'file_to_import_no_zip' => 'Zu importierende Datei<br />(OPML oder JSON)', diff --git a/app/i18n/en/sub.php b/app/i18n/en/sub.php index 9acbcbf33..4efd81ba4 100644 --- a/app/i18n/en/sub.php +++ b/app/i18n/en/sub.php @@ -72,6 +72,7 @@ return array( 'export' => 'Export', 'export_opml' => 'Export list of feeds (OPML)', 'export_starred' => 'Export your favourites', + 'export_labelled' => 'Export your labelled articles', 'feed_list' => 'List of %s articles', 'file_to_import' => 'File to import<br />(OPML, JSON or ZIP)', 'file_to_import_no_zip' => 'File to import<br />(OPML or JSON)', diff --git a/app/i18n/es/sub.php b/app/i18n/es/sub.php index 64e420dc1..854984891 100755 --- a/app/i18n/es/sub.php +++ b/app/i18n/es/sub.php @@ -72,6 +72,7 @@ return array( 'export' => 'Exportar', 'export_opml' => 'Exportar la lista de fuentes (OPML)', 'export_starred' => 'Exportar tus favoritos', + 'export_labelled' => 'Export your labelled articles', //TODO 'feed_list' => 'Lista de %s artículos', 'file_to_import' => 'Archivo a importar<br />(OPML, JSON o ZIP)', 'file_to_import_no_zip' => 'Archivo a importar<br />(OPML o JSON)', diff --git a/app/i18n/fr/sub.php b/app/i18n/fr/sub.php index 6cb31414d..d9964ac6e 100644 --- a/app/i18n/fr/sub.php +++ b/app/i18n/fr/sub.php @@ -72,6 +72,7 @@ return array( 'export' => 'Exporter', 'export_opml' => 'Exporter la liste des flux (OPML)', 'export_starred' => 'Exporter les favoris', + 'export_labelled' => 'Exporter les articles étiquetés', 'feed_list' => 'Liste des articles de %s', 'file_to_import' => 'Fichier à importer<br />(OPML, JSON ou ZIP)', 'file_to_import_no_zip' => 'Fichier à importer<br />(OPML ou JSON)', diff --git a/app/i18n/he/sub.php b/app/i18n/he/sub.php index e4c487b84..6d824e349 100644 --- a/app/i18n/he/sub.php +++ b/app/i18n/he/sub.php @@ -72,6 +72,7 @@ return array( 'export' => 'ייצוא', 'export_opml' => 'ייצוא רשימת הזנות (OPML)', 'export_starred' => 'ייצוא מועדפים', + 'export_labelled' => 'Export your labelled articles', //TODO 'feed_list' => 'רשימה של %s מאמרים', 'file_to_import' => 'קובץ לייבוא<br />(OPML, Json or Zip)', 'file_to_import_no_zip' => 'קובץ לייבוא<br />(OPML or Json)', diff --git a/app/i18n/it/sub.php b/app/i18n/it/sub.php index 6faa48d63..ff7fa6f1d 100644 --- a/app/i18n/it/sub.php +++ b/app/i18n/it/sub.php @@ -72,6 +72,7 @@ return array( 'export' => 'Esporta', 'export_opml' => 'Esporta tutta la lista dei feed (OPML)', 'export_starred' => 'Esporta i tuoi preferiti', + 'export_labelled' => 'Export your labelled articles', //TODO 'feed_list' => 'Elenco di %s articoli', 'file_to_import' => 'File da importare<br />(OPML, JSON o ZIP)', 'file_to_import_no_zip' => 'File da importare<br />(OPML o JSON)', diff --git a/app/i18n/kr/sub.php b/app/i18n/kr/sub.php index 463496c57..9f8967053 100644 --- a/app/i18n/kr/sub.php +++ b/app/i18n/kr/sub.php @@ -72,6 +72,7 @@ return array( 'export' => '내보내기', 'export_opml' => '피드 목록 내보내기 (OPML)', 'export_starred' => '즐겨찾기 내보내기', + 'export_labelled' => 'Export your labelled articles', //TODO 'feed_list' => '%s 개의 글 목록', 'file_to_import' => '불러올 파일<br />(OPML, JSON 또는 ZIP)', 'file_to_import_no_zip' => '불러올 파일<br />(OPML 또는 JSON)', diff --git a/app/i18n/nl/sub.php b/app/i18n/nl/sub.php index 36c96b53f..0ab7ac44f 100644 --- a/app/i18n/nl/sub.php +++ b/app/i18n/nl/sub.php @@ -72,6 +72,7 @@ return array( 'export' => 'Exporteer', 'export_opml' => 'Exporteer lijst van feeds (OPML)', 'export_starred' => 'Exporteer je favorieten', + 'export_labelled' => 'Export your labelled articles', //TODO 'feed_list' => 'Lijst van %s artikelen', 'file_to_import' => 'Bestand om te importeren<br />(OPML, JSON of ZIP)', 'file_to_import_no_zip' => 'Bestand om te importeren<br />(OPML of JSON)', diff --git a/app/i18n/oc/sub.php b/app/i18n/oc/sub.php index f9ddf339a..3ca98d75e 100644 --- a/app/i18n/oc/sub.php +++ b/app/i18n/oc/sub.php @@ -71,6 +71,7 @@ return array( 'export' => 'Exportar', 'export_opml' => 'Exportar la lista de fluxes (OPML)', 'export_starred' => 'Exportar los favorits', + 'export_labelled' => 'Export your labelled articles', //TODO 'feed_list' => 'Lista dels %s articles', 'file_to_import' => 'Fichièr d’importar<br />(OPML, JSON o ZIP)', 'file_to_import_no_zip' => 'Fichièr d’importar<br />(OPML o JSON)', diff --git a/app/i18n/pt-br/sub.php b/app/i18n/pt-br/sub.php index 78684c14c..58b2fc1f9 100644 --- a/app/i18n/pt-br/sub.php +++ b/app/i18n/pt-br/sub.php @@ -68,6 +68,7 @@ return array( 'export' => 'Exportar', 'export_opml' => 'Exporta a lista dos feeds (OPML)', 'export_starred' => 'Exportar seus favoritos', + 'export_labelled' => 'Export your labelled articles', //TODO 'feed_list' => 'Lista dos %s artigos', 'file_to_import' => 'Arquivo para importar<br />(OPML, JSON or ZIP)', 'file_to_import_no_zip' => 'Arquivo para importar<br />(OPML or JSON)', diff --git a/app/i18n/ru/sub.php b/app/i18n/ru/sub.php index 7de80586b..62f8a8e3a 100644 --- a/app/i18n/ru/sub.php +++ b/app/i18n/ru/sub.php @@ -72,6 +72,7 @@ return array( 'export' => 'Export', //TODO - Translation 'export_opml' => 'Export list of feeds (OPML)', //TODO - Translation 'export_starred' => 'Export your favourites', //TODO - Translation + 'export_labelled' => 'Export your labelled articles', //TODO 'feed_list' => 'List of %s articles', //TODO - Translation 'file_to_import' => 'File to import<br />(OPML, JSON or ZIP)', //TODO - Translation 'file_to_import_no_zip' => 'File to import<br />(OPML or JSON)', //TODO - Translation diff --git a/app/i18n/tr/sub.php b/app/i18n/tr/sub.php index b5b56f4b8..7f29633be 100644 --- a/app/i18n/tr/sub.php +++ b/app/i18n/tr/sub.php @@ -72,6 +72,7 @@ return array( 'export' => 'Dışa aktar', 'export_opml' => 'Akış listesini dışarı aktar (OPML)', 'export_starred' => 'Favorileri dışarı aktar', + 'export_labelled' => 'Export your labelled articles', //TODO 'feed_list' => '%s makalenin listesi', 'file_to_import' => 'Dosyadan içe aktar<br />(OPML, JSON or ZIP)', 'file_to_import_no_zip' => 'Dosyadan içe aktar<br />(OPML or JSON)', diff --git a/app/i18n/zh-cn/sub.php b/app/i18n/zh-cn/sub.php index e1c176bc6..3a9623468 100644 --- a/app/i18n/zh-cn/sub.php +++ b/app/i18n/zh-cn/sub.php @@ -72,6 +72,7 @@ return array( 'export' => '导出', 'export_opml' => '导出 RSS 源列表 (OPML)', 'export_starred' => '导出你的收藏', + 'export_labelled' => 'Export your labelled articles', //TODO 'feed_list' => '%s 文章列表', 'file_to_import' => '需要导入的文件<br />(OPML, JSON 或 ZIP)', 'file_to_import_no_zip' => '需要导入的文件<br />(OPML 或 JSON)', diff --git a/app/layout/header.phtml b/app/layout/header.phtml index 6b538851b..410ac1ff0 100644 --- a/app/layout/header.phtml +++ b/app/layout/header.phtml @@ -16,7 +16,7 @@ if (FreshRSS_Auth::accessNeedsAction()) { <div class="item title"> <h1> <a href="<?php echo _url('index', 'index'); ?>"> - <img class="logo" src="<?php echo _i('icon', true); ?>" alt="⊚" /> + <img class="logo" src="<?php echo _i('icon', true); ?>" alt="" /> <?php echo FreshRSS_Context::$system_conf->title; ?> </a> </h1> 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; } diff --git a/app/views/importExport/index.phtml b/app/views/importExport/index.phtml index c5049e3ea..139e715c5 100644 --- a/app/views/importExport/index.phtml +++ b/app/views/importExport/index.phtml @@ -33,6 +33,11 @@ <?php echo _t('sub.import_export.export_opml'); ?> </label> + <label class="checkbox" for="export_labelled"> + <input type="checkbox" name="export_labelled" id="export_labelled" value="1" <?php echo extension_loaded('zip') ? 'checked="checked"' : ''; ?> /> + <?php echo _t('sub.import_export.export_labelled'); ?> + </label> + <label class="checkbox" for="export_starred"> <input type="checkbox" name="export_starred" id="export_starred" value="1" <?php echo extension_loaded('zip') ? 'checked="checked"' : ''; ?> /> <?php echo _t('sub.import_export.export_starred'); ?> |
