1
0
forked from Public/pics

Tag: invert behaviour of getCount and getOffset methods

This commit is contained in:
2026-02-14 12:56:50 +01:00
parent 2cd2f472d0
commit b0ee3081a6
4 changed files with 13 additions and 14 deletions

View File

@@ -59,10 +59,10 @@ class ManageAlbums extends HTMLController
'items_per_page' => 9999,
'base_url' => BASEURL . '/managealbums/',
'get_data' => function($offset, $limit, $order, $direction) {
return Tag::getOffset($offset, $limit, $order, $direction, true);
return Tag::getOffset($offset, $limit, $order, $direction);
},
'get_count' => function() {
return Tag::getCount(false, 'Album', true);
return Tag::getCount(false, 'Album');
}
];

View File

@@ -72,10 +72,10 @@ class ManageTags extends HTMLController
'items_per_page' => 9999,
'base_url' => BASEURL . '/managetags/',
'get_data' => function($offset, $limit, $order, $direction) {
return Tag::getOffset($offset, $limit, $order, $direction, false);
return Tag::getOffset($offset, $limit, $order, $direction, true);
},
'get_count' => function() {
return Tag::getCount(false, null, false);
return Tag::getCount(false, null, true);
}
];

View File

@@ -18,7 +18,7 @@ class ViewPeople extends HTMLController
$page = isset($_GET['page']) ? (int) $_GET['page'] : 1;
$start = ($page - 1) * self::PER_PAGE;
$total_count = Tag::getCount(1, 'Person', true);
$total_count = Tag::getCount(1, 'Person');
// Fetch subalbums.
$subalbums = Tag::getPeople(0, $start, self::PER_PAGE);

View File

@@ -417,16 +417,17 @@ class Tag
['tags' => $tags]);
}
public static function getCount($only_used = true, $kind = '', $isAlbum = false)
public static function getCount($only_used = true, $kind = '', $invert = false)
{
$where = [];
if ($only_used)
$where[] = 'count > 0';
$where[] = 'kind ' . ($invert ? '!=' : '=' ) . ' :kind';
if (empty($kind))
$kind = 'Album';
$operator = $isAlbum ? '=' : '!=';
$where[] = 'kind ' . $operator . ' :kind';
if ($only_used)
$where[] = 'count > 0';
$where = implode(' AND ', $where);
return Registry::get('db')->queryValue('
@@ -438,19 +439,17 @@ class Tag
]);
}
public static function getOffset($offset, $limit, $order, $direction, $isAlbum = false)
public static function getOffset($offset, $limit, $order, $direction, $invert = false)
{
assert(in_array($order, ['id_tag', 'tag', 'slug', 'count']));
$order = $order . ($direction === 'up' ? ' ASC' : ' DESC');
$operator = $isAlbum ? '=' : '!=';
$db = Registry::get('db');
$res = $db->query('
SELECT t.*, u.id_user, u.first_name, u.surname
FROM tags AS t
LEFT JOIN users AS u ON t.id_user_owner = u.id_user
WHERE kind ' . $operator . ' :album
WHERE kind ' . ($invert ? '!=' : '=') . ' :album
ORDER BY id_parent, ' . $order . '
LIMIT :offset, :limit',
[