source: extensions/event_cats/admin/evntcats_admin.php @ 4971

Last change on this file since 4971 was 4885, checked in by LucMorizur, 14 years ago

[Event Cats] bug:1432 (Event Cats help always loaded after other admin help screens ) resolved

File size: 14.3 KB
RevLine 
[3970]1<?php
[3960]2// +-----------------------------------------------------------------------+
3// | Plugin Name : Event Cats                                              |
4// | Plugin Version : 1.0                                                  |
5// | File Version : 1.0                                                    |
6// | Plugin Version author : LucMorizur                                    |
7// | Plugin description : (plugin for Piwigo, http://piwigo.org )          |
8// | This plugin allows an account to be automatically logged in ; and to  |
9// | let users duplicate the account they are logged with, to get benefits |
10// | of the groups of the previous account, immediately on their new acc.  |
11// | Ce plugin permet d'identifier automatiquement un compte ; et permet à |
12// | un utilisateur de dupliquer un compte, pour que le nouveau compte     |
13// | bénéficie immédiatement de l'affectation aux groupes de l'ancien cpte |
14// +-----------------------------------------------------------------------+
15
16// +-----------------------------------------------------------------------+
17// | Piwigo - a PHP based picture gallery                                  |
18// +-----------------------------------------------------------------------+
19// | Copyright(C) 2008-2009 Piwigo Team                  http://piwigo.org |
20// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
21// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
22// +-----------------------------------------------------------------------+
23// | This program is free software; you can redistribute it and/or modify  |
24// | it under the terms of the GNU General Public License as published by  |
25// | the Free Software Foundation                                          |
26// |                                                                       |
27// | This program is distributed in the hope that it will be useful, but   |
28// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
29// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
30// | General Public License for more details.                              |
31// |                                                                       |
32// | You should have received a copy of the GNU General Public License     |
33// | along with this program; if not, write to the Free Software           |
34// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
35// | USA.                                                                  |
36// +-----------------------------------------------------------------------+
37
[4421]38// Keeps file coded in UTF-8 without BOM : é
39
[3960]40if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
41
[4329]42global $template, $conf, $lang, $prefixeTable,
43       $ec_conf, $page, $ec_debug, $ec_lists;
[3960]44
45load_language('plugin.lang', EVNTCATS_PATH);
46
47include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
[4247]48include_once(PHPWG_ROOT_PATH.'include/functions.inc.php');
[3960]49include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
50include_once(PHPWG_ROOT_PATH.'include/functions_url.inc.php');
[4169]51include_once(EVNTCATS_PATH.'include/evntcats_main_funcs.inc.php');
52include_once(EVNTCATS_PATH.'include/evntcats_admin_funcs.inc.php');
[3960]53$my_base_url = get_admin_plugin_menu_link(__FILE__);
54
[3999]55$template->assign('EVNTCATS_VERSION', EVNTCATS_INFO_VERSION);
[3960]56$me = get_plugin_data($plugin_id);
57$template->clear_assign('ec_infos');
58$template->append('head_elements',
59  '<link rel="stylesheet" type="text/css" href="'.
60  EVNTCATS_PATH.'admin/evntcats_theme.css">'
61);
[4239]62if (!isset($ec_debug)) $ec_debug = array();
[3960]63
[4276]64// +-----------------------------------------------------------------------+
65// | $_POST analysis, to determine which tab to display (tabsheet prep.)
66// +-----------------------------------------------------------------------+
67
68// If needed, stores in the DB the new value of the number of digits of
69// automatically created codes
[4027]70if (
71  isset($_POST['ec_in_up_auto_code_length']) and
72  $_POST['ec_in_up_auto_code_length'] != read_ec_conf('auto_code_dg_nb')
73) change_ec_conf('auto_code_dg_nb', $_POST['ec_in_up_auto_code_length']);
74
[4276]75
76// If needed, stores in the DB that acknowledgement message has been displayed
[4239]77if ($ec_howto = (read_ec_conf('howto') == '0')) change_ec_conf('howto', '1');
[4092]78
[4437]79// If needed, stores in the DB whether help banner must be displayed or not
80if (
[4443]81  isset($_POST['ec_help_banner_onoff2']) and
82  $_POST['ec_help_banner_onoff2'] != read_ec_conf('in_help_display')
83) change_ec_conf('in_help_display', $_POST['ec_help_banner_onoff2']);
[4437]84
[4169]85build_ec_lists(); // in evntcats_main_funcs.php
[4115]86
[4333]87$dup_types_exist = false;
88$dup_entries_exist = false;
89$ec_exist_entries = false;
90function check_DB() {
91  global $dup_types_exist, $dup_entries_exist, $ec_exist_entries, $ec_lists;
92 
93  $dup_types_exist = build_dup_groups(); // build_dup_groups() returns
94  // true if an entry exists for duplication management for types
95 
96  // both arrays below are built when executing build_dup_groups() function
97  $dup_entries_exist = (
98    $dup_types_exist or
99    count($ec_lists['groups_granted_ids']) > 0 or
100    count($ec_lists['users_granted_direct_ids']) > 0
101  );
102 
103  $ec_exist_entries = (mysql_num_rows(pwg_query("
104    SELECT * FROM `".EVNTCATS_TABLE."`
105    WHERE `code` IS NOT NULL ;
106  ")) != 0);
107}
108
109check_DB();
110
[4329]111// If no entry exist, default tab is 'autolog_new'.
[4333]112$page['tab'] = (!$ec_exist_entries) ? 'autolog_new' : 'autolog_entries';
[4058]113
[4333]114// If no entry exist, but some duplication management entries exist, and
115// duplication setting is "managed per groups", default tab is 'duplication'
116if (
117  !$ec_exist_entries and
118  read_ec_conf('dup_allow') == '2' and
119  $dup_entries_exist
120) $page['tab'] = 'duplication';
[4058]121
[4329]122// If a modification of duplication management has been posted, default tab
123// is 'duplication'.
124if (
125  count($_POST) > 0 and
126  count(array_intersect(array(
127    'ec_duplic_conf_submit',
128    'deny_groups_submit',
129    'grant_groups_submit',
130    'deny_types_submit',
131    'grant_types_submit',
132    'deny_users_submit',
133    'grant_users_submit',
134  ),
135  array_keys($_POST))) > 0
136) $page['tab'] = 'duplication';
[4276]137
[4329]138if (isset($_POST['ec_conf_submit'])) {
139  if (isset($_POST['ec_dup_conf']))
140   if (!change_ec_conf('dup_allow', $_POST['ec_dup_conf']))
141    ec_end2(7);
142  if (isset($_POST['ec_dup_disp']))
143   if (!change_ec_conf('duplic_display', $_POST['ec_dup_disp']))
144    ec_end2(8);
145  if (isset($_POST['ec_unknown']))
146   if (!change_ec_conf('unknown_code', $_POST['ec_unknown']))
147    ec_end2(9);
148  if (isset($_POST['ec_in_up_aps']))
149   if (!change_ec_conf('unknown_code_ap_id', $_POST['ec_in_up_aps']))
150    ec_end2(10);
[4418]151  if (isset($_POST['ec_comments']))
152   if (!change_ec_conf('comment_display', $_POST['ec_comments']))
153    ec_end2(11);
[4553]154  if (isset($_POST['ec_connection']))
155   if (!change_ec_conf('display_connection', $_POST['ec_connection']))
156    ec_end2(12);
[4329]157  $page['tab'] = 'config';
158  $page['infos'][] = l10n('ec_config_saved');
[4276]159}
[4329]160elseif (isset($_POST['ec_duplic_conf_submit'])) {
161  if (isset($_POST['ec_dup_conf'])) {
162    if (
163      read_ec_conf('dup_allow') == '2' and
164      $_POST['ec_dup_conf'] != '2'
165    ) $page['tab'] = 'config';
166    if (!change_ec_conf('dup_allow', $_POST['ec_dup_conf']))
167     ec_end2(5);
168  }
169  if (isset($_POST['ec_dup_disp']))
170   if (!change_ec_conf('duplic_display', $_POST['ec_dup_disp']))
171    ec_end2(6);
172  $page['infos'][] = l10n('ec_config_saved');
[4276]173}
[4329]174elseif (
175  isset($_POST['deny_groups_submit']) and
176  isset($_POST['deny_groups']) and
177  count($_POST['deny_groups']) > 0
178) {
179  if (pwg_query("
180    DELETE
181    FROM `".EVNTCATS_TABLE."`
182    WHERE `arg1` = 1
183      AND `arg2` IN (".implode(',', $_POST['deny_groups']).");
184  ") === false) ec_end2(1);
185  else $page['infos'][] = l10n('ec_config_saved');
[4276]186}
[4329]187elseif (
188  isset($_POST['grant_groups_submit']) and
189  isset($_POST['grant_groups']) and
190  count($_POST['grant_groups']) > 0
191) {
192  $inserts = array();
193  foreach ($_POST['grant_groups'] as $v) $inserts[] = array(
194    'arg1' => 1,
195    'arg2' => intval($v)
196  );
197  mass_inserts(EVNTCATS_TABLE, array('arg1', 'arg2'), $inserts);
198  $page['infos'][] = l10n('ec_config_saved');
[4276]199}
[4329]200elseif (
201  isset($_POST['deny_types_submit']) and (
202    isset($_POST['deny_types']) and
203    count($_POST['deny_types']) > 0 or
204    isset($_POST['deny_generic'])
205  )
206) {
[4333]207  $c = $ec_lists['types_granted'];
[4329]208  if (isset($_POST['deny_types']))
[4486]209   foreach ($_POST['deny_types'] as $v) $c = $c & ~intval($v);
[4329]210  if (isset($_POST['deny_generic'])) $c = $c & 7;
[4333]211  $q = ($dup_types_exist) ? "
[4329]212    UPDATE `".EVNTCATS_TABLE."`
213    SET `arg2` = $c
214    WHERE `arg1` = 3
215    LIMIT 1 ;
[4333]216  " : "
217    INSERT INTO `".EVNTCATS_TABLE."`
218    (`arg1`, `arg2`)
219    VALUES (3, $c);
[4329]220  ";
221  if (pwg_query($q) === false) ec_end2(3);
222  else $page['infos'][] = l10n('ec_config_saved');
[4276]223}
[4329]224elseif (
225  isset($_POST['grant_types_submit']) and (
226    isset($_POST['grant_types']) and
227    count($_POST['grant_types']) > 0 or
228    isset($_POST['grant_generic'])
229  )
230) {
[4333]231  $c = $ec_lists['types_granted'];
[4329]232  if (isset($_POST['grant_types']))
[4486]233   foreach ($_POST['grant_types'] as $v) $c = $c | intval($v);
[4329]234  if (isset($_POST['grant_generic'])) $c = $c | 8;
[4333]235  $q = ($dup_types_exist) ? "
[4329]236    UPDATE `".EVNTCATS_TABLE."`
237    SET `arg2` = $c
238    WHERE `arg1` = 3
239    LIMIT 1 ;
[4333]240  " : "
241    INSERT INTO `".EVNTCATS_TABLE."`
242    (`arg1`, `arg2`)
243    VALUES (3, $c);
[4329]244  ";
245  if (pwg_query($q) === false) ec_end2(4);
246  else $page['infos'][] = l10n('ec_config_saved');
[4276]247}
[4329]248elseif (
249  isset($_POST['deny_users_submit']) and
250  isset($_POST['deny_users']) and
251  count($_POST['deny_users']) > 0
252) {
253  if (pwg_query("
254    DELETE
255    FROM `".EVNTCATS_TABLE."`
256    WHERE `arg1` = 2
257      AND `arg2` IN (".implode(',', $_POST['deny_users']).");
258  ") === false) ec_end2(2);
259  else $page['infos'][] = l10n('ec_config_saved');
[4276]260}
[4329]261elseif (
262  isset($_POST['grant_users_submit']) and
263  isset($_POST['grant_users']) and
264  count($_POST['grant_users']) > 0
265) {
266  $inserts = array();
267  foreach ($_POST['grant_users'] as $v) $inserts[] = array(
268    'arg1' => 2,
269    'arg2' => intval($v)
270  );
271  mass_inserts(EVNTCATS_TABLE, array('arg1', 'arg2'), $inserts);
272  $page['infos'][] = l10n('ec_config_saved');
[4276]273}
[4329]274elseif (isset($_POST['ec_act1'])) {
[4092]275  if (
[4157]276    $_POST['ec_act1'] == 'disable' and
277    count($ec_lists['add_pages']) == 0
278  ) {
279    $_POST['ec_act1'] = 'modify_entry_submit';
280    $_POST['ec_input_action'] = 'refused';
281  }
282  if (
[4058]283    $_POST['ec_act1'] == 'duplicate_entry_ask' or
[4157]284    $_POST['ec_act1'] == 'create_ask'
285  )
286   $page['tab'] = 'autolog_new';
287  elseif (
[4058]288    $_POST['ec_act1'] == 'disable' or
289    $_POST['ec_act1'] == 'modify_entry_ask'
[4019]290  )
[4157]291   $page['tab'] = 'autolog_modif';
[4026]292  elseif ($_POST['ec_act1'] == 'create')
[4218]293   $page['tab'] = (ec_create_modify_entry_OK()) ?
294    'autolog_entries' : 'autolog_new';
295  elseif (
296    isset($_POST['ec_entry_sel']) and
297    is_numeric($_POST['ec_entry_sel'])
298  ) {
[4219]299    if ($_POST['ec_act1'] == 'duplicate_entry_submit') $page['tab'] =
300     (ec_create_modify_entry_OK()) ? 'autolog_entries' : 'autolog_new';
301    elseif ($_POST['ec_act1'] == 'modify_entry_submit') $page['tab'] =
302     (ec_create_modify_entry_OK()) ? 'autolog_entries' : 'autolog_modif';
[4115]303    else {
304      $page['tab'] = 'autolog_entries';
[4218]305      if ($_POST['ec_act1'] == 'delete') {
306        if (isset($_POST['ec_entry_sel'])) {
307          ec_delete_entry_OK($_POST['ec_entry_sel']);
308          build_ec_table();
309        }
[4329]310        else ec_end1('ec_entry_sel', 'Bad argument : ');
[4218]311      }
[4219]312      else if ($_POST['ec_act1'] == 'toggle_forced')
313       ec_create_modify_entry_OK();
[4115]314    }
[4058]315  }
[4019]316}
[4115]317else {
318  if (isset($_GET['tab'])) switch ($_GET['tab']) {
[4157]319    case 'autolog_modif':
[4276]320      if ($ec_exist_entries) $page['tab'] = $_GET['tab'];
321    break;
322    case 'duplication':
[4329]323      if (read_ec_conf('dup_allow') == '2') $page['tab'] = $_GET['tab'];
[4276]324    break;
[4115]325    case 'autolog_new':
326    case 'config':
[4157]327      $page['tab'] = $_GET['tab'];
328    break;
[4115]329  }
[3999]330}
[3960]331
[4276]332// +-----------------------------------------------------------------------+
333// |                            Tabsheet
334// +-----------------------------------------------------------------------+
335
[4486]336check_DB();
[4333]337 
[4329]338if (
339  $page['tab'] == 'duplication' and
340  read_ec_conf('dup_allow') != '2'
341) $page['tab'] = 'config';
[4276]342
[4436]343if (!$ec_exist_entries and $page['tab'] == 'autolog_entries') $page['tab'] =
344 (read_ec_conf('dup_allow') == '2' and $dup_entries_exist) ?
345 'duplication' : 'autolog_new';
346
[3960]347$tabsheet = new tabsheet();
[4157]348if ($ec_exist_entries) {
349  $tabsheet->add('autolog_entries',
350                 l10n('ec_tab_autoid_entries'),
351                 $my_base_url.'&amp;tab=autolog_entries');
352  $tabsheet->add('autolog_modif',
353                 l10n('ec_tab_autoid_modif'),
354                 $my_base_url.'&amp;tab=autolog_modif');
355}
356$tabsheet->add('autolog_new',
357               l10n('ec_tab_autoid_new'),
[3999]358               $my_base_url.'&amp;tab=autolog_new');
[4329]359if (read_ec_conf('dup_allow') == '2') $tabsheet->add('duplication',
[3999]360               l10n('ec_tab_duplication'),
361               $my_base_url.'&amp;tab=duplication');
[3960]362$tabsheet->add('config',
363               l10n('ec_tab_config'),
364               $my_base_url.'&amp;tab=config');
365
[4157]366$template->assign('EVNTCATS_URLS', array(
[3960]367 'ROOT'     => EVNTCATS_PATH,
368));
369
370/****************************************************************************/
371
[4157]372$ec_file = ($page['tab'] == 'autolog_modif') ? 'autolog_new' : $page['tab'];
[3960]373
[4157]374include(EVNTCATS_PATH.'admin/'.$ec_file.'.inc.php');
375
[4011]376$tabsheet->select($page['tab']);
377$tabsheet->assign();
378
[3960]379/*
380print '<pre>';
381//print_r('ROOT_URL : '.ROOT_URL.'<br>EVNTCATS_PATH : '.EVNTCATS_PATH);
382print('ROOT_URL : '.ROOT_URL.'<br>EVNTCATS_PATH : '.EVNTCATS_PATH);
383print '</pre>';
384*/
385
[4092]386$template->assign('ec_howto',
387 ($ec_howto and (count($page['errors']) ==0 and count($page['infos']) == 0)));
[3960]388
[4437]389$template->assign('ec_help_banner_OK', (read_ec_conf('in_help_display') == '1'));
390
[4553]391$template->assign('EVNTCATS_PATH', EVNTCATS_PATH);
392$template->assign('RACINE_URL', ROOT_URL);
[4885]393$template->assign('U_HELP', get_root_url().'popuphelp.php?page=ec_help');
[3960]394
[4048]395if (isset($conf['ec_debug1'])) $template->assign('ec_debug1', array(
[4219]396  'POST'      => str_from_var($_POST),
397  'ec_debug'  => (isset($ec_debug)) ? str_from_var($ec_debug) : '(unset)',
[4048]398  'GET'       => str_from_var($_GET),
399  'page'      => str_from_var($page),
[4171]400  'ec_conf'   => str_from_var($ec_conf),
[4048]401  'ec_lists'  => (isset($ec_lists)) ? str_from_var($ec_lists) : '(unset)',
402  'code_list' => (isset($code_list)) ? str_from_var($code_list) : '(unset)',
403));
[3960]404
[4157]405$template->set_filenames(array(
406 'evntcats_admin_content' => dirname(__FILE__).'/template/'.$ec_file.'.tpl'
407));
[3960]408$template->assign_var_from_handle('ADMIN_CONTENT','evntcats_admin_content');
409?>
Note: See TracBrowser for help on using the repository browser.