1 | <?php |
---|
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 | |
---|
38 | // Keeps file coded in UTF-8 without BOM : é |
---|
39 | |
---|
40 | if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!'); |
---|
41 | |
---|
42 | global $template, $conf, $lang, $prefixeTable, |
---|
43 | $ec_conf, $page, $ec_debug, $ec_lists; |
---|
44 | |
---|
45 | load_language('plugin.lang', EVNTCATS_PATH); |
---|
46 | |
---|
47 | include_once(PHPWG_ROOT_PATH.'admin/include/functions.php'); |
---|
48 | include_once(PHPWG_ROOT_PATH.'include/functions.inc.php'); |
---|
49 | include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php'); |
---|
50 | include_once(PHPWG_ROOT_PATH.'include/functions_url.inc.php'); |
---|
51 | include_once(EVNTCATS_PATH.'include/evntcats_main_funcs.inc.php'); |
---|
52 | include_once(EVNTCATS_PATH.'include/evntcats_admin_funcs.inc.php'); |
---|
53 | $my_base_url = get_admin_plugin_menu_link(__FILE__); |
---|
54 | |
---|
55 | $template->assign('EVNTCATS_VERSION', EVNTCATS_INFO_VERSION); |
---|
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 | ); |
---|
62 | if (!isset($ec_debug)) $ec_debug = array(); |
---|
63 | |
---|
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 |
---|
70 | if ( |
---|
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 | |
---|
75 | |
---|
76 | // If needed, stores in the DB that acknowledgement message has been displayed |
---|
77 | if ($ec_howto = (read_ec_conf('howto') == '0')) change_ec_conf('howto', '1'); |
---|
78 | |
---|
79 | // If needed, stores in the DB whether help banner must be displayed or not |
---|
80 | if ( |
---|
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']); |
---|
84 | |
---|
85 | build_ec_lists(); // in evntcats_main_funcs.php |
---|
86 | |
---|
87 | $dup_types_exist = false; |
---|
88 | $dup_entries_exist = false; |
---|
89 | $ec_exist_entries = false; |
---|
90 | function 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 | |
---|
109 | check_DB(); |
---|
110 | |
---|
111 | // If no entry exist, default tab is 'autolog_new'. |
---|
112 | $page['tab'] = (!$ec_exist_entries) ? 'autolog_new' : 'autolog_entries'; |
---|
113 | |
---|
114 | // If no entry exist, but some duplication management entries exist, and |
---|
115 | // duplication setting is "managed per groups", default tab is 'duplication' |
---|
116 | if ( |
---|
117 | !$ec_exist_entries and |
---|
118 | read_ec_conf('dup_allow') == '2' and |
---|
119 | $dup_entries_exist |
---|
120 | ) $page['tab'] = 'duplication'; |
---|
121 | |
---|
122 | // If a modification of duplication management has been posted, default tab |
---|
123 | // is 'duplication'. |
---|
124 | if ( |
---|
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'; |
---|
137 | |
---|
138 | if (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); |
---|
151 | if (isset($_POST['ec_comments'])) |
---|
152 | if (!change_ec_conf('comment_display', $_POST['ec_comments'])) |
---|
153 | ec_end2(11); |
---|
154 | if (isset($_POST['ec_connection'])) |
---|
155 | if (!change_ec_conf('display_connection', $_POST['ec_connection'])) |
---|
156 | ec_end2(12); |
---|
157 | $page['tab'] = 'config'; |
---|
158 | $page['infos'][] = l10n('ec_config_saved'); |
---|
159 | } |
---|
160 | elseif (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'); |
---|
173 | } |
---|
174 | elseif ( |
---|
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'); |
---|
186 | } |
---|
187 | elseif ( |
---|
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'); |
---|
199 | } |
---|
200 | elseif ( |
---|
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 | ) { |
---|
207 | $c = $ec_lists['types_granted']; |
---|
208 | if (isset($_POST['deny_types'])) |
---|
209 | foreach ($_POST['deny_types'] as $v) $c = $c & ~intval($v); |
---|
210 | if (isset($_POST['deny_generic'])) $c = $c & 7; |
---|
211 | $q = ($dup_types_exist) ? " |
---|
212 | UPDATE `".EVNTCATS_TABLE."` |
---|
213 | SET `arg2` = $c |
---|
214 | WHERE `arg1` = 3 |
---|
215 | LIMIT 1 ; |
---|
216 | " : " |
---|
217 | INSERT INTO `".EVNTCATS_TABLE."` |
---|
218 | (`arg1`, `arg2`) |
---|
219 | VALUES (3, $c); |
---|
220 | "; |
---|
221 | if (pwg_query($q) === false) ec_end2(3); |
---|
222 | else $page['infos'][] = l10n('ec_config_saved'); |
---|
223 | } |
---|
224 | elseif ( |
---|
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 | ) { |
---|
231 | $c = $ec_lists['types_granted']; |
---|
232 | if (isset($_POST['grant_types'])) |
---|
233 | foreach ($_POST['grant_types'] as $v) $c = $c | intval($v); |
---|
234 | if (isset($_POST['grant_generic'])) $c = $c | 8; |
---|
235 | $q = ($dup_types_exist) ? " |
---|
236 | UPDATE `".EVNTCATS_TABLE."` |
---|
237 | SET `arg2` = $c |
---|
238 | WHERE `arg1` = 3 |
---|
239 | LIMIT 1 ; |
---|
240 | " : " |
---|
241 | INSERT INTO `".EVNTCATS_TABLE."` |
---|
242 | (`arg1`, `arg2`) |
---|
243 | VALUES (3, $c); |
---|
244 | "; |
---|
245 | if (pwg_query($q) === false) ec_end2(4); |
---|
246 | else $page['infos'][] = l10n('ec_config_saved'); |
---|
247 | } |
---|
248 | elseif ( |
---|
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'); |
---|
260 | } |
---|
261 | elseif ( |
---|
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'); |
---|
273 | } |
---|
274 | elseif (isset($_POST['ec_act1'])) { |
---|
275 | if ( |
---|
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 ( |
---|
283 | $_POST['ec_act1'] == 'duplicate_entry_ask' or |
---|
284 | $_POST['ec_act1'] == 'create_ask' |
---|
285 | ) |
---|
286 | $page['tab'] = 'autolog_new'; |
---|
287 | elseif ( |
---|
288 | $_POST['ec_act1'] == 'disable' or |
---|
289 | $_POST['ec_act1'] == 'modify_entry_ask' |
---|
290 | ) |
---|
291 | $page['tab'] = 'autolog_modif'; |
---|
292 | elseif ($_POST['ec_act1'] == 'create') |
---|
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 | ) { |
---|
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'; |
---|
303 | else { |
---|
304 | $page['tab'] = 'autolog_entries'; |
---|
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 | } |
---|
310 | else ec_end1('ec_entry_sel', 'Bad argument : '); |
---|
311 | } |
---|
312 | else if ($_POST['ec_act1'] == 'toggle_forced') |
---|
313 | ec_create_modify_entry_OK(); |
---|
314 | } |
---|
315 | } |
---|
316 | } |
---|
317 | else { |
---|
318 | if (isset($_GET['tab'])) switch ($_GET['tab']) { |
---|
319 | case 'autolog_modif': |
---|
320 | if ($ec_exist_entries) $page['tab'] = $_GET['tab']; |
---|
321 | break; |
---|
322 | case 'duplication': |
---|
323 | if (read_ec_conf('dup_allow') == '2') $page['tab'] = $_GET['tab']; |
---|
324 | break; |
---|
325 | case 'autolog_new': |
---|
326 | case 'config': |
---|
327 | $page['tab'] = $_GET['tab']; |
---|
328 | break; |
---|
329 | } |
---|
330 | } |
---|
331 | |
---|
332 | // +-----------------------------------------------------------------------+ |
---|
333 | // | Tabsheet |
---|
334 | // +-----------------------------------------------------------------------+ |
---|
335 | |
---|
336 | check_DB(); |
---|
337 | |
---|
338 | if ( |
---|
339 | $page['tab'] == 'duplication' and |
---|
340 | read_ec_conf('dup_allow') != '2' |
---|
341 | ) $page['tab'] = 'config'; |
---|
342 | |
---|
343 | if (!$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 | |
---|
347 | $tabsheet = new tabsheet(); |
---|
348 | if ($ec_exist_entries) { |
---|
349 | $tabsheet->add('autolog_entries', |
---|
350 | l10n('ec_tab_autoid_entries'), |
---|
351 | $my_base_url.'&tab=autolog_entries'); |
---|
352 | $tabsheet->add('autolog_modif', |
---|
353 | l10n('ec_tab_autoid_modif'), |
---|
354 | $my_base_url.'&tab=autolog_modif'); |
---|
355 | } |
---|
356 | $tabsheet->add('autolog_new', |
---|
357 | l10n('ec_tab_autoid_new'), |
---|
358 | $my_base_url.'&tab=autolog_new'); |
---|
359 | if (read_ec_conf('dup_allow') == '2') $tabsheet->add('duplication', |
---|
360 | l10n('ec_tab_duplication'), |
---|
361 | $my_base_url.'&tab=duplication'); |
---|
362 | $tabsheet->add('config', |
---|
363 | l10n('ec_tab_config'), |
---|
364 | $my_base_url.'&tab=config'); |
---|
365 | |
---|
366 | $template->assign('EVNTCATS_URLS', array( |
---|
367 | 'ROOT' => EVNTCATS_PATH, |
---|
368 | )); |
---|
369 | |
---|
370 | /****************************************************************************/ |
---|
371 | |
---|
372 | $ec_file = ($page['tab'] == 'autolog_modif') ? 'autolog_new' : $page['tab']; |
---|
373 | |
---|
374 | include(EVNTCATS_PATH.'admin/'.$ec_file.'.inc.php'); |
---|
375 | |
---|
376 | $tabsheet->select($page['tab']); |
---|
377 | $tabsheet->assign(); |
---|
378 | |
---|
379 | /* |
---|
380 | print '<pre>'; |
---|
381 | //print_r('EC_ROOT_URL : '.EC_ROOT_URL.'<br>EVNTCATS_PATH : '.EVNTCATS_PATH); |
---|
382 | print('EC_ROOT_URL + ... : '.preg_match('/(\d+\.\d+)\.(\d+)/', PHPWG_VERSION, $matches)); |
---|
383 | print('<br />'); |
---|
384 | print_r($matches); |
---|
385 | print '</pre>'; |
---|
386 | */ |
---|
387 | |
---|
388 | $template->assign( |
---|
389 | 'HeaderIncTPL', realpath('plugins/event_cats/admin/template/header.inc.tpl') |
---|
390 | ); |
---|
391 | |
---|
392 | $template->assign( |
---|
393 | 'FooterIncTPL', realpath('plugins/event_cats/admin/template/footer.inc.tpl') |
---|
394 | ); |
---|
395 | |
---|
396 | $template->assign( |
---|
397 | 'ec_howto', |
---|
398 | ($ec_howto and (count($page['errors']) == 0 and count($page['infos']) == 0)) |
---|
399 | ); |
---|
400 | |
---|
401 | $template->assign( |
---|
402 | 'ec_help_banner_OK', |
---|
403 | (read_ec_conf('in_help_display') == '1') |
---|
404 | ); |
---|
405 | |
---|
406 | $template->assign('EVNTCATS_PATH', EVNTCATS_PATH); |
---|
407 | $template->assign('RACINE_URL', EC_ROOT_URL); |
---|
408 | $template->assign('U_HELP', get_root_url().'popuphelp.php?page=help'); |
---|
409 | |
---|
410 | if (isset($conf['ec_debug1']) and $conf['ec_debug1']) |
---|
411 | $template->assign('ec_debug1', array( |
---|
412 | 'POST' => str_from_var($_POST), |
---|
413 | 'ec_debug' => (isset($ec_debug)) ? str_from_var($ec_debug) : '(unset)', |
---|
414 | 'GET' => str_from_var($_GET), |
---|
415 | 'page' => str_from_var($page), |
---|
416 | 'ec_conf' => str_from_var($ec_conf), |
---|
417 | 'ec_lists' => (isset($ec_lists)) ? str_from_var($ec_lists) : '(unset)', |
---|
418 | 'code_list' => (isset($code_list)) ? str_from_var($code_list) : '(unset)', |
---|
419 | )); |
---|
420 | |
---|
421 | $template->set_filenames(array( |
---|
422 | 'evntcats_admin_content' => dirname(__FILE__).'/template/'.$ec_file.'.tpl' |
---|
423 | )); |
---|
424 | $template->assign_var_from_handle('ADMIN_CONTENT','evntcats_admin_content'); |
---|
425 | ?> |
---|