Changeset 9500 for extensions/community/include
- Timestamp:
- Mar 3, 2011, 10:12:57 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
extensions/community/include/functions_community.inc.php
r9452 r9500 24 24 function community_get_user_permissions($user_id) 25 25 { 26 global $conf; 27 28 if (is_admin()) 29 { 30 return array( 31 'upload_whole_gallery' => true, 32 'create_whole_gallery' => true, 33 'create_categories' => array(), 34 'upload_categories' => array(), 35 'permission_ids' => array(), 36 ); 37 } 26 global $conf, $user; 38 27 39 28 $return = array( … … 58 47 id, 59 48 category_id, 49 recursive, 60 50 create_subcategories 61 51 FROM '.COMMUNITY_PERMISSIONS_TABLE.' … … 78 68 ;'; 79 69 70 $recursive_categories = array(); 71 80 72 $result = pwg_query($query); 81 73 while ($row = pwg_db_fetch_assoc($result)) … … 90 82 { 91 83 array_push($return['upload_categories'], $row['category_id']); 84 85 if ('true' == $row['recursive']) 86 { 87 array_push($recursive_categories, $row['category_id']); 88 } 92 89 } 93 90 … … 105 102 } 106 103 107 if (!$return['upload_whole_gallery'] and count($return['upload_categories']) > 0) 108 { 109 $return['upload_categories'] = get_subcat_ids($return['upload_categories']); 110 } 111 112 if (!$return ['create_whole_gallery'] and count($return['create_categories']) > 0) 113 { 104 if (is_admin()) 105 { 106 $return ['upload_whole_gallery'] = true; 107 $return ['create_whole_gallery'] = true; 108 } 109 110 // these are categories with access permission but considering the user 111 // has a level 8 (maximum level). We want to keep categories with no 112 // photos inside (for nobody) 113 $forbidden_categories = calculate_permissions($user['id'], $user['status']); 114 115 $empty_categories = array_diff( 116 explode(',', $user['forbidden_categories']), 117 explode(',', $forbidden_categories) 118 ); 119 120 if (count($empty_categories) > 0) 121 { 122 $query = ' 123 SELECT 124 category_id 125 FROM '.IMAGE_CATEGORY_TABLE.' 126 JOIN '.IMAGES_TABLE.' 127 WHERE category_id IN ('.implode(',', $empty_categories).') 128 AND level > '.$user['level'].' 129 AND level <= 8 130 GROUP BY category_id 131 ;'; 132 $not_really_empty_categories = array_keys(hash_from_query($query, 'category_id')); 133 $forbidden_categories.= ','.implode(',', $not_really_empty_categories); 134 } 135 136 $query = ' 137 SELECT 138 id 139 FROM '.CATEGORIES_TABLE.' 140 ;'; 141 $all_categories = array_keys(hash_from_query($query, 'id')); 142 143 if ($return['upload_whole_gallery']) 144 { 145 $return['upload_categories'] = array_diff( 146 $all_categories, 147 explode(',', $forbidden_categories) 148 ); 149 } 150 elseif (count($return['upload_categories']) > 0) 151 { 152 if (count($recursive_categories) > 0) 153 { 154 $return['upload_categories'] = array_unique( 155 array_merge( 156 $return['upload_categories'], 157 get_subcat_ids($recursive_categories) 158 ) 159 ); 160 } 161 162 $return['upload_categories'] = array_diff( 163 $return['upload_categories'], 164 explode(',', $forbidden_categories) 165 ); 166 } 167 168 if ($return ['create_whole_gallery']) 169 { 170 $return['create_categories'] = array_diff( 171 $all_categories, 172 explode(',', $forbidden_categories) 173 ); 174 } 175 elseif (count($return['create_categories']) > 0) 176 { 177 // no need to check for "recursive", an upload permission can't be 178 // "create_subcategories" without being "recursive" 114 179 $return['create_categories'] = get_subcat_ids($return['create_categories']); 180 181 $return['create_categories'] = array_diff( 182 $return['create_categories'], 183 explode(',', $forbidden_categories) 184 ); 115 185 } 116 186
Note: See TracChangeset
for help on using the changeset viewer.