aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2022-05-12 22:31:31 +0200
committerGravatar GitHub <noreply@github.com> 2022-05-12 22:31:31 +0200
commitda0a333b941efecd0dcfe04346ce0241b42345cf (patch)
treeb7a4b135adad34c0f8762ff79c42c97d57424f7e
parent4a87206f2898665e99953590536cedc6c5505f05 (diff)
Refactor OPML export categories (#4356)
* Refactor OPML export categories Simplify code to comply with types hints. And renamed a property to plural. * Link to OPML namespace
-rw-r--r--app/Models/Category.php26
-rw-r--r--app/Models/View.php1
-rw-r--r--app/Services/ExportService.php9
-rw-r--r--app/views/helpers/export/opml.phtml5
-rw-r--r--docs/en/developers/01_Index.md4
5 files changed, 21 insertions, 24 deletions
diff --git a/app/Models/Category.php b/app/Models/Category.php
index d2968828a..b67818e19 100644
--- a/app/Models/Category.php
+++ b/app/Models/Category.php
@@ -6,7 +6,7 @@ class FreshRSS_Category extends Minz_Model {
*/
private $id = 0;
private $name;
- private $nbFeed = -1;
+ private $nbFeeds = -1;
private $nbNotRead = -1;
private $feeds = null;
private $hasFeedsWithError = false;
@@ -17,10 +17,10 @@ class FreshRSS_Category extends Minz_Model {
$this->_name($name);
if (isset($feeds)) {
$this->_feeds($feeds);
- $this->nbFeed = 0;
+ $this->nbFeeds = 0;
$this->nbNotRead = 0;
foreach ($feeds as $feed) {
- $this->nbFeed++;
+ $this->nbFeeds++;
$this->nbNotRead += $feed->nbNotRead();
$this->hasFeedsWithError |= $feed->inError();
}
@@ -36,13 +36,13 @@ class FreshRSS_Category extends Minz_Model {
public function isDefault(): bool {
return $this->isDefault;
}
- public function nbFeed(): int {
- if ($this->nbFeed < 0) {
+ public function nbFeeds(): int {
+ if ($this->nbFeeds < 0) {
$catDAO = FreshRSS_Factory::createCategoryDao();
- $this->nbFeed = $catDAO->countFeed($this->id());
+ $this->nbFeeds = $catDAO->countFeed($this->id());
}
- return $this->nbFeed;
+ return $this->nbFeeds;
}
public function nbNotRead(): int {
if ($this->nbNotRead < 0) {
@@ -56,18 +56,18 @@ class FreshRSS_Category extends Minz_Model {
if ($this->feeds === null) {
$feedDAO = FreshRSS_Factory::createFeedDao();
$this->feeds = $feedDAO->listByCategory($this->id());
- $this->nbFeed = 0;
+ $this->nbFeeds = 0;
$this->nbNotRead = 0;
foreach ($this->feeds as $feed) {
- $this->nbFeed++;
+ $this->nbFeeds++;
$this->nbNotRead += $feed->nbNotRead();
$this->hasFeedsWithError |= $feed->inError();
}
- }
- usort($this->feeds, function ($a, $b) {
- return strnatcasecmp($a->name(), $b->name());
- });
+ usort($this->feeds, function ($a, $b) {
+ return strnatcasecmp($a->name(), $b->name());
+ });
+ }
return $this->feeds;
}
diff --git a/app/Models/View.php b/app/Models/View.php
index 365bfd261..944bfbea1 100644
--- a/app/Models/View.php
+++ b/app/Models/View.php
@@ -6,6 +6,7 @@ class FreshRSS_View extends Minz_View {
public $callbackBeforeEntries;
public $callbackBeforeFeeds;
public $callbackBeforePagination;
+ /** @var array<FreshRSS_Category> */
public $categories;
/** @var FreshRSS_Category|null */
public $category;
diff --git a/app/Services/ExportService.php b/app/Services/ExportService.php
index a80f20ce4..25e217968 100644
--- a/app/Services/ExportService.php
+++ b/app/Services/ExportService.php
@@ -47,14 +47,7 @@ class FreshRSS_Export_Service {
$view = new FreshRSS_View();
$day = date('Y-m-d');
- $categories = [];
-
- foreach ($this->category_dao->listCategories() as $key => $category) {
- $categories[$key]['name'] = $category->name();
- $categories[$key]['feeds'] = $this->feed_dao->listByCategory($category->id());
- }
-
- $view->categories = $categories;
+ $view->categories = $this->category_dao->listCategories(true);
return [
"feeds_{$day}.opml.xml",
diff --git a/app/views/helpers/export/opml.phtml b/app/views/helpers/export/opml.phtml
index 458ea0e58..30512b96a 100644
--- a/app/views/helpers/export/opml.phtml
+++ b/app/views/helpers/export/opml.phtml
@@ -11,12 +11,11 @@ $opml_array = array(
foreach ($this->categories as $key => $cat) {
$opml_array['body'][$key] = array(
- 'text' => $cat['name'],
+ 'text' => $cat->name(),
'@outlines' => array()
);
- /** @var FreshRSS_Feed $feed */
- foreach ($cat['feeds'] as $feed) {
+ foreach ($cat->feeds() as $feed) {
$outline = [
'text' => htmlspecialchars_decode($feed->name(), ENT_QUOTES),
'type' => FreshRSS_Export_Service::TYPE_RSS_ATOM,
diff --git a/docs/en/developers/01_Index.md b/docs/en/developers/01_Index.md
index c32c1d4d7..878aa56c7 100644
--- a/docs/en/developers/01_Index.md
+++ b/docs/en/developers/01_Index.md
@@ -26,6 +26,10 @@ Start by creating your development environment. A guide to setting up FreshRSSâ€
* [View files](04_Frontend/01_View_files.md)
* [Design (Themes/Theming)](04_Frontend/02_Design.md)
+## Namespaces
+
+* [OPML FreshRSS namespace](OPML.md)
+
## Minz
Minz is the homemade PHP framework used by FreshRSS. More information can be found [here](Minz/index.md).