source: extensions/community/admin_permissions.php @ 9375

Last change on this file since 9375 was 9375, checked in by plg, 13 years ago

bug fixed: initialize group list (warning if no group in gallery)

File size: 9.0 KB
Line 
1<?php
2// +-----------------------------------------------------------------------+
3// | Piwigo - a PHP based picture gallery                                  |
4// +-----------------------------------------------------------------------+
5// | Copyright(C) 2008-2011 Piwigo Team                  http://piwigo.org |
6// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
7// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
8// +-----------------------------------------------------------------------+
9// | This program is free software; you can redistribute it and/or modify  |
10// | it under the terms of the GNU General Public License as published by  |
11// | the Free Software Foundation                                          |
12// |                                                                       |
13// | This program is distributed in the hope that it will be useful, but   |
14// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
15// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
16// | General Public License for more details.                              |
17// |                                                                       |
18// | You should have received a copy of the GNU General Public License     |
19// | along with this program; if not, write to the Free Software           |
20// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
21// | USA.                                                                  |
22// +-----------------------------------------------------------------------+
23
24if( !defined("PHPWG_ROOT_PATH") )
25{
26  die ("Hacking attempt!");
27}
28
29include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
30load_language('plugin.lang', COMMUNITY_PATH);
31
32$admin_base_url = get_root_url().'admin.php?page=plugin-community-permissions';
33
34// +-----------------------------------------------------------------------+
35// | Check Access and exit when user status is not ok                      |
36// +-----------------------------------------------------------------------+
37
38check_status(ACCESS_ADMINISTRATOR);
39
40// +-----------------------------------------------------------------------+
41// |                            add permissions                            |
42// +-----------------------------------------------------------------------+
43
44if (isset($_POST['submit_add']))
45{
46  $who_options = array('any_visitor', 'any_registered_user', 'user', 'group');
47 
48  if (!in_array($_POST['who'], $who_options))
49  {
50    die('hacking attempt: invalid "who" option');
51  }
52 
53  if ('user' == $_POST['who'])
54  {
55    check_input_parameter('who_user', $_POST, false, PATTERN_ID);
56  }
57
58  if ('group' == $_POST['who'])
59  {
60    check_input_parameter('who_group', $_POST, false, PATTERN_ID);
61  }
62
63  if (-1 != $_POST['category'])
64  {
65    check_input_parameter('category', $_POST, false, PATTERN_ID);
66  }
67
68  check_input_parameter('moderate', $_POST, false, '/^(true|false)$/');
69
70  // creating the permission
71  $insert = array(
72    'type' => $_POST['who'],
73    'group_id' => ('group' == $_POST['who']) ? $_POST['who_group'] : null,
74    'user_id' => ('user' == $_POST['who']) ? $_POST['who_user'] : null,
75    'category_id' => ($_POST['category'] > 0) ? $_POST['category'] : null,
76    'create_subcategories' => isset($_POST['create_subcategories']) ? 'true' : 'false',
77    'moderated' => $_POST['moderate'],
78    );
79  mass_inserts(
80    COMMUNITY_PERMISSIONS_TABLE,
81    array_keys($insert),
82    array($insert)
83    );
84 
85  array_push(
86    $page['infos'],
87    l10n('Permission added')
88    );
89}
90
91// +-----------------------------------------------------------------------+
92// |                           remove permissions                          |
93// +-----------------------------------------------------------------------+
94
95if (isset($_GET['delete']))
96{
97  check_input_parameter('delete', $_GET, false, PATTERN_ID);
98 
99  $query = '
100DELETE
101  FROM '.COMMUNITY_PERMISSIONS_TABLE.'
102  WHERE id = '.$_GET['delete'].'
103;';
104  pwg_query($query);
105
106  $_SESSION['page_infos'] = array(l10n('Permission removed'));
107  redirect($admin_base_url);
108}
109
110// +-----------------------------------------------------------------------+
111// | template init                                                         |
112// +-----------------------------------------------------------------------+
113
114$template->set_filenames(
115  array(
116    'plugin_admin_content' => dirname(__FILE__).'/admin_permissions.tpl'
117    )
118  );
119
120// +-----------------------------------------------------------------------+
121// | prepare form                                                          |
122// +-----------------------------------------------------------------------+
123
124
125// list of users
126$users = array();
127
128$query = '
129SELECT
130    '.$conf['user_fields']['id'].' AS id,
131    '.$conf['user_fields']['username'].' AS username
132  FROM '.USERS_TABLE.' AS u
133    INNER JOIN '.USER_INFOS_TABLE.' AS uf ON uf.user_id = id
134  WHERE uf.status IN (\'normal\',\'generic\')
135;';
136$result = pwg_query($query);
137while ($row = pwg_db_fetch_assoc($result))
138{
139  $users[$row['id']] = $row['username'];
140}
141
142natcasesort($users);
143
144$template->assign(
145  array(
146    'user_options' => $users,
147    )
148  );
149
150// list of groups
151$groups = array();
152
153$query = '
154SELECT
155    id,
156    name
157  FROM '.GROUPS_TABLE.'
158;';
159$result = pwg_query($query);
160while ($row = pwg_db_fetch_assoc($result))
161{
162  $groups[$row['id']] = $row['name'];
163}
164
165natcasesort($groups);
166
167$template->assign(
168  array(
169    'group_options' => $groups,
170    )
171  );
172
173
174$template->assign(
175  array(
176    'F_ADD_ACTION' => COMMUNITY_BASE_URL.'-'.$page['tab'],
177    )
178  );
179
180// list of albums
181$query = '
182SELECT id,name,uppercats,global_rank
183  FROM '.CATEGORIES_TABLE.'
184;';
185
186display_select_cat_wrapper(
187  $query,
188  array(),
189  'category_options'
190  );
191
192// +-----------------------------------------------------------------------+
193// | permission list                                                       |
194// +-----------------------------------------------------------------------+
195
196// user with community permissions
197$query = '
198SELECT
199    *
200  FROM '.COMMUNITY_PERMISSIONS_TABLE.'
201  ORDER BY id DESC
202;';
203$result = pwg_query($query);
204
205$permissions = array();
206$user_ids = array();
207$group_ids = array();
208$category_ids = array();
209
210while ($row = mysql_fetch_assoc($result))
211{
212  array_push($permissions, $row);
213
214  if (!empty($row['user_id']))
215  {
216    array_push($user_ids, $row['user_id']);
217  }
218
219  if (!empty($row['group_id']))
220  {
221    array_push($group_ids, $row['group_id']);
222  }
223
224  if (!empty($row['category_id']))
225  {
226    array_push($category_ids, $row['category_id']);
227  }
228}
229
230if (!empty($user_ids))
231{
232  $query = '
233SELECT
234    '.$conf['user_fields']['id'].' AS id,
235    '.$conf['user_fields']['username'].' AS username
236  FROM '.USERS_TABLE.'
237  WHERE '.$conf['user_fields']['id'].' IN ('.implode(',', $user_ids).')
238;';
239  $result = pwg_query($query);
240  while ($row = pwg_db_fetch_assoc($result))
241  {
242    $name_of_user[ $row['id'] ] = $row['username'];
243  }
244}
245
246if (!empty($group_ids))
247{
248  $query = '
249SELECT
250    id,
251    name
252  FROM '.GROUPS_TABLE.'
253  WHERE id IN ('.implode(',', $group_ids).')
254;';
255  $result = pwg_query($query);
256  while ($row = pwg_db_fetch_assoc($result))
257  {
258    $name_of_group[ $row['id'] ] = $row['name'];
259  }
260}
261
262if (!empty($category_ids))
263{
264  $query = '
265SELECT
266    id,
267    uppercats
268  FROM '.CATEGORIES_TABLE.'
269  WHERE id IN ('.implode(',', $category_ids).')
270;';
271  $result = pwg_query($query);
272
273  while ($row = pwg_db_fetch_assoc($result))
274  {
275    $name_of_category[ $row['id'] ] = get_cat_display_name_cache(
276      $row['uppercats'],
277      null,
278      false
279      );
280  }
281}
282
283foreach ($permissions as $permission)
284{
285  $where = l10n('The whole gallery');
286  if (isset($permission['category_id']))
287  {
288    $where = $name_of_category[ $permission['category_id'] ];
289  }
290
291  $who = l10n('any visitor');
292  if ('any_registered_user' == $permission['type'])
293  {
294    $who = l10n('any registered user');
295  }
296  elseif ('user' == $permission['type'])
297  {
298    $who = sprintf(
299      l10n('%s (the user)'),
300      $name_of_user[$permission['user_id']]
301      );
302  }
303  elseif ('group' == $permission['type'])
304  {
305    $who = sprintf(
306      l10n('%s (the group)'),
307      $name_of_group[$permission['group_id']]
308      );
309  }
310
311  $trust = l10n('low trust');
312  $trust_tooltip = l10n('uploaded photos must be validated by an administrator');
313  if ('false' == $permission['moderated'])
314  {
315    $trust = l10n('high trust');
316    $trust_tooltip = l10n('uploaded photos are directly displayed in the gallery');
317  }
318 
319  $template->append(
320    'permissions',
321    array(
322      'WHO' => $who,
323      'WHERE' => $where,
324      'TRUST' => $trust,
325      'TRUST_TOOLTIP' => $trust_tooltip,
326      'CREATE_SUBCATEGORIES' => get_boolean($permission['create_subcategories']),
327      'U_DELETE' => $admin_base_url.'&amp;delete='.$permission['id']
328      )
329    );
330}
331
332// +-----------------------------------------------------------------------+
333// | sending html code                                                     |
334// +-----------------------------------------------------------------------+
335
336$template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');
337?>
Note: See TracBrowser for help on using the repository browser.