aboutsummaryrefslogtreecommitdiffstats
path: root/include/functions_category.inc.php
diff options
context:
space:
mode:
authorplegall <plg@piwigo.org>2015-09-05 00:05:35 +0200
committerplegall <plg@piwigo.org>2015-09-05 00:05:35 +0200
commit195791c4e284204c4ff7d9ead9e7448d1cfc20ad (patch)
tree3bd55ad8ebe44e1f32222c1b892087bd0206509f /include/functions_category.inc.php
parent5579b1e1a3f1a2d845fe9dcf3d3710ff3258cdee (diff)
fixes #348 force logical album sort order
This way we can safely remove empty albums without decrementing count_categories twice.
Diffstat (limited to '')
-rw-r--r--include/functions_category.inc.php6
1 files changed, 6 insertions, 0 deletions
diff --git a/include/functions_category.inc.php b/include/functions_category.inc.php
index 15ab84c25..296b8eca2 100644
--- a/include/functions_category.inc.php
+++ b/include/functions_category.inc.php
@@ -491,6 +491,7 @@ SELECT image_id
function get_computed_categories(&$userdata, $filter_days=null)
{
$query = 'SELECT c.id AS cat_id, id_uppercat';
+ $query.= ', global_rank';
// Count by date_available to avoid count null
$query .= ',
MAX(date_available) AS date_last, COUNT(date_available) AS nb_images
@@ -533,6 +534,11 @@ FROM '.CATEGORIES_TABLE.' as c
$cats[$row['cat_id']] = $row;
}
+ // it is important to logically sort the albums because some operations
+ // (like removal) rely on this logical order. Child album doesn't always
+ // have a bigger id than its parent (if it was moved afterwards).
+ uasort($cats, 'global_rank_compare');
+
foreach ($cats as $cat)
{
if ( !isset( $cat['id_uppercat'] ) )