Changeset 11727


Ignore:
Timestamp:
Jul 13, 2011, 3:30:06 PM (9 years ago)
Author:
plg
Message:

feature 2245: when a new private album is added, the creator and admins
automatically get permission on it.

Location:
branches/2.2/admin
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2.2/admin/include/functions.php

    r11056 r11727  
    12731273function create_virtual_category($category_name, $parent_id=null)
    12741274{
    1275   global $conf;
     1275  global $conf, $user;
    12761276
    12771277  // is the given category name only containing blank spaces ?
     
    13611361;';
    13621362  pwg_query($query);
     1363
     1364  if ('private' == $insert['status'])
     1365  {
     1366    add_permission_on_category($inserted_id, array_unique(array_merge(get_admins(), array($user['id']))));
     1367  }
    13631368
    13641369  return array(
     
    21682173}
    21692174
     2175function add_permission_on_category($category_ids, $user_ids)
     2176{
     2177  // array-ify categories and users
     2178  if (!is_array($category_ids))
     2179  {
     2180    $category_ids = array($category_ids);
     2181  }
     2182
     2183  if (!is_array($user_ids))
     2184  {
     2185    $user_ids = array($user_ids);
     2186  }
     2187
     2188  // check for emptiness
     2189  if (count($category_ids) == 0 or count($user_ids) == 0)
     2190  {
     2191    return;
     2192  }
     2193 
     2194  // make sure categories are private and select uppercats
     2195  $query = '
     2196SELECT
     2197    id
     2198  FROM '.CATEGORIES_TABLE.'
     2199  WHERE id IN ('.implode(',', get_uppercat_ids($category_ids)).')
     2200    AND status = \'private\'
     2201;';
     2202  $private_uppercats = array_from_query($query, 'id');
     2203
     2204  if (count($private_uppercats) == 0)
     2205  {
     2206    return;
     2207  }
     2208 
     2209  // We must not reinsert already existing lines in user_access table
     2210  $granteds = array();
     2211  foreach ($private_uppercats as $cat_id)
     2212  {
     2213    $granteds[$cat_id] = array();
     2214  }
     2215 
     2216  $query = '
     2217SELECT
     2218    user_id,
     2219    cat_id
     2220  FROM '.USER_ACCESS_TABLE.'
     2221  WHERE cat_id IN ('.implode(',', $private_uppercats).')
     2222    AND user_id IN ('.implode(',', $user_ids).')
     2223;';
     2224  $result = pwg_query($query);
     2225  while ($row = pwg_db_fetch_assoc($result))
     2226  {
     2227    array_push($granteds[$row['cat_id']], $row['user_id']);
     2228  }
     2229
     2230  $inserts = array();
     2231 
     2232  foreach ($private_uppercats as $cat_id)
     2233  {
     2234    $grant_to_users = array_diff($user_ids, $granteds[$cat_id]);
     2235   
     2236    foreach ($grant_to_users as $user_id)
     2237    {
     2238      array_push(
     2239        $inserts,
     2240        array(
     2241          'user_id' => $user_id,
     2242          'cat_id' => $cat_id
     2243          )
     2244        );
     2245    }
     2246  }
     2247
     2248  if (count($inserts) > 0)
     2249  {
     2250    mass_inserts(USER_ACCESS_TABLE, array_keys($inserts[0]), $inserts);
     2251  }
     2252}
     2253
     2254
     2255function get_admins($include_webmaster=true)
     2256{
     2257  $status_list = array('admin');
     2258
     2259  if ($include_webmaster)
     2260  {
     2261    $status_list[] = 'webmaster';
     2262  }
     2263 
     2264  $query = '
     2265SELECT
     2266    user_id
     2267  FROM '.USER_INFOS_TABLE.'
     2268  WHERE status in (\''.implode("','", $status_list).'\')
     2269;';
     2270
     2271  return array_from_query($query, 'user_id');
     2272}
    21702273?>
  • branches/2.2/admin/site_update.php

    r11040 r11727  
    315315    }
    316316
     317    // add default permissions to categories
     318    $category_ids = array();
     319    foreach ($inserts as $category)
     320    {
     321      $category_ids[] = $category['id'];
     322    }
     323    add_permission_on_category($category_ids, get_admins());
     324
    317325    $counts['new_categories'] = count($inserts);
    318326  }
Note: See TracChangeset for help on using the changeset viewer.