From ddf51992f0787e92d9f6fa1dba2bbb31e50a685d Mon Sep 17 00:00:00 2001 From: plegall Date: Fri, 12 Feb 2010 23:05:37 +0000 Subject: [PATCH] merge r4883 from branch 2.0 to trunk bug 1431: Community users now can see empty categories just like any admin. git-svn-id: http://piwigo.org/svn/trunk@4884 68402e56-0260-453c-a942-63ccdbb3a9ee --- include/ws_functions.inc.php | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/include/ws_functions.inc.php b/include/ws_functions.inc.php index 66cd950ef..4a9208905 100644 --- a/include/ws_functions.inc.php +++ b/include/ws_functions.inc.php @@ -365,7 +365,9 @@ function ws_categories_getList($params, &$service) { global $user,$conf; - $where = array(); + $where = array('1=1'); + $join_type = 'INNER'; + $join_user = $user['id']; if (!$params['recursive']) { @@ -386,11 +388,19 @@ function ws_categories_getList($params, &$service) { $where[] = 'status = "public"'; $where[] = 'visible = "true"'; - $where[]= 'user_id='.$conf['guest_id']; + + $join_user = $conf['guest_id']; } - else + elseif (is_admin()) { - $where[]= 'user_id='.$user['id']; + // in this very specific case, we don't want to hide empty + // categories. Function calculate_permissions will only return + // categories that are either locked or private and not permitted + // + // calculate_permissions does not consider empty categories as forbidden + $forbidden_categories = calculate_permissions($user['id'], $user['status']); + $where[]= 'id NOT IN ('.$forbidden_categories.')'; + $join_type = 'LEFT'; } $query = ' @@ -398,7 +408,7 @@ SELECT id, name, permalink, uppercats, global_rank, nb_images, count_images AS total_nb_images, date_last, max_date_last, count_categories AS nb_categories FROM '.CATEGORIES_TABLE.' - INNER JOIN '.USER_CACHE_CATEGORIES_TABLE.' ON id=cat_id + '.$join_type.' JOIN '.USER_CACHE_CATEGORIES_TABLE.' ON id=cat_id AND user_id='.$join_user.' WHERE '. implode(' AND ', $where);