From 496195db4e59e1a2a59ca190450a3b140e44f4a7 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Fri, 7 Jun 2013 15:31:43 +0400 Subject: [PATCH] fix calculation of feed counts in pref-feeds editor --- classes/pref/feeds.php | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/classes/pref/feeds.php b/classes/pref/feeds.php index d43740310..d2dc6f7c3 100644 --- a/classes/pref/feeds.php +++ b/classes/pref/feeds.php @@ -58,9 +58,10 @@ class Pref_Feeds extends Handler_Protected { $cat['items'] = $this->get_category_items($line['id']); - $cat['param'] = vsprintf(_ngettext('(%d feed)', '(%d feeds)', count($cat['items'])), count($cat['items'])); + $num_children = $this->calculate_children_count($cat); + $cat['param'] = vsprintf(_ngettext('(%d feed)', '(%d feeds)', $num_children), $num_children); - if (count($cat['items']) > 0 || $show_empty_cats) + if ($num_children > 0 || $show_empty_cats) array_push($items, $cat); } @@ -206,9 +207,10 @@ class Pref_Feeds extends Handler_Protected { $cat['items'] = $this->get_category_items($line['id']); - $cat['param'] = vsprintf(_ngettext('(%d feed)', '(%d feeds)', count($cat['items'])), count($cat['items'])); + $num_children = $this->calculate_children_count($cat); + $cat['param'] = vsprintf(_ngettext('(%d feed)', '(%d feeds)', $num_children), $num_children); - if (count($cat['items']) > 0 || $show_empty_cats) + if ($num_children > 0 || $show_empty_cats) array_push($root['items'], $cat); $root['param'] += count($cat['items']); @@ -255,8 +257,8 @@ class Pref_Feeds extends Handler_Protected { if (count($cat['items']) > 0 || $show_empty_cats) array_push($root['items'], $cat); - $root['param'] += count($cat['items']); - $root['param'] = vsprintf(_ngettext('(%d feed)', '(%d feeds)', count($cat['items'])), count($cat['items'])); + $num_children = $this->calculate_children_count($root); + $root['param'] = vsprintf(_ngettext('(%d feed)', '(%d feeds)', $num_children), $num_children); } else { $feed_result = $this->dbh->query("SELECT id, title, last_error, @@ -1937,6 +1939,19 @@ class Pref_Feeds extends Handler_Protected { owner_uid = " . $_SESSION["uid"]); } + private function calculate_children_count($cat) { + $c = 0; + + foreach ($cat['items'] as $child) { + if ($child['type'] == 'category') { + $c += $this->calculate_children_count($child); + } else { + $c += 1; + } + } + + return $c; + } } ?>