mirror of
https://code.mensbeam.com/MensBeam/Arsse.git
synced 2024-12-22 21:22:40 +00:00
Properly fix getCounters
This commit is contained in:
parent
af42bceac0
commit
84bd624e94
2 changed files with 10 additions and 3 deletions
|
@ -245,8 +245,9 @@ class API extends \JKingWeb\Arsse\REST\AbstractHandler {
|
|||
$labels[] = ['id' => $this->labelOut($l['id']), 'counter' => $unread, 'auxcounter' => $l['articles']];
|
||||
$categories[$catmap[self::CAT_LABELS]]['counter'] += $unread;
|
||||
}
|
||||
// do a second pass on categories, summing descendant unread counts for ancestors and building a final list
|
||||
// do a second pass on categories, summing descendant unread counts for ancestors
|
||||
$cats = $categories;
|
||||
$catCounts = [];
|
||||
while ($cats) {
|
||||
foreach ($cats as $c) {
|
||||
if ($c['children']) {
|
||||
|
@ -258,12 +259,15 @@ class API extends \JKingWeb\Arsse\REST\AbstractHandler {
|
|||
$cats[$catmap[$c['parent']]]['counter'] += $c['counter'];
|
||||
$cats[$catmap[$c['parent']]]['children'] -= 1;
|
||||
}
|
||||
// output the category
|
||||
$cats[] = ['id' => $c['id'], 'kind' => "cat", 'counter' => $c['counter']];
|
||||
$catCounts[$c['id']] = $c['counter'];
|
||||
// remove the category from the input list
|
||||
unset($cats[$catmap[$c['id']]]);
|
||||
}
|
||||
}
|
||||
// do a third pass on categories, building a final category list; this is done so that the original sort order is retained
|
||||
foreach ($categories as $c) {
|
||||
$cats[] = ['id' => $c['id'], 'kind' => "cat", 'counter' => $catCounts[$c['id']]];
|
||||
}
|
||||
// prepare data for the virtual feeds and other counters
|
||||
$special = [
|
||||
['id' => "global-unread", 'counter' => $countAll], //this should not count archived articles, but we do not have an archive
|
||||
|
|
|
@ -896,14 +896,17 @@ LONG_STRING;
|
|||
['id' => -1025, 'counter' => 0, 'auxcounter' => 2],
|
||||
['id' => "3", 'updated' => "2016-05-23T06:40:02", 'counter' => 2, 'has_img' => 1],
|
||||
['id' => "4", 'updated' => "2017-10-09T15:58:34", 'counter' => 6, 'has_img' => 1],
|
||||
['id' => "6", 'updated' => "2010-02-12T20:08:47", 'counter' => 0, 'has_img' => 1],
|
||||
['id' => "1", 'updated' => "2017-09-15T22:54:16", 'counter' => 5, 'has_img' => 0],
|
||||
['id' => "5", 'updated' => "2017-07-07T17:07:17", 'counter' => 12, 'has_img' => 0],
|
||||
['id' => "2", 'updated' => "2011-11-11T11:11:11", 'counter' => 10, 'has_img' => 1],
|
||||
['id' => 5, 'kind' => "cat", 'counter' => 10],
|
||||
['id' => 6, 'kind' => "cat", 'counter' => 18],
|
||||
['id' => 4, 'kind' => "cat", 'counter' => 0],
|
||||
['id' => 3, 'kind' => "cat", 'counter' => 28],
|
||||
['id' => 2, 'kind' => "cat", 'counter' => 5],
|
||||
['id' => 1, 'kind' => "cat", 'counter' => 7],
|
||||
['id' => 0, 'kind' => "cat", 'counter' => 0],
|
||||
['id' => -2, 'kind' => "cat", 'counter' => 6],
|
||||
];
|
||||
$this->assertResponse($this->respGood($exp), $this->req($in));
|
||||
|
|
Loading…
Reference in a new issue