source: extensions/NBC_UserAdvManager-Trunk/admin/UserAdvManager_admin.php @ 3444

Last change on this file since 3444 was 3444, checked in by Eric, 15 years ago

Preview, sharing and working directory for new plugin version. !! Warning !! For coding only !! This is not a stable release nor a release candidate.

Initial coding version is 2.11.0.x. The next stable release should be committed in NBC_UserAdvManager directory under version 2.11.x.

  • Property svn:eol-style set to LF
File size: 16.1 KB
Line 
1<?php
2
3global $user, $lang, $conf, $errors;
4
5if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
6// +-----------------------------------------------------------------------+
7// | Check Access and exit when user status is not ok                      |
8// +-----------------------------------------------------------------------+
9check_status(ACCESS_ADMINISTRATOR);
10
11//ini_set('error_reporting', E_ALL);
12//ini_set('display_errors', true);
13
14include_once (PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
15include_once (PHPWG_ROOT_PATH.'/include/constants.php');
16$my_base_url = get_admin_plugin_menu_link(__FILE__);
17
18load_language('plugin.lang', NBC_UserAdvManager_PATH);
19
20// +-----------------------------------------------------------------------+
21// |                            Tabssheet                                  |
22// +-----------------------------------------------------------------------+
23if (!isset($_GET['tab']))
24    $page['tab'] = 'global';
25else
26    $page['tab'] = $_GET['tab'];
27
28$tabsheet = new tabsheet();
29$tabsheet->add('global',
30               l10n('Tab_Global'),
31               $my_base_url.'&amp;tab=global');
32$tabsheet->add('confirmmail',
33               l10n('Tab_ConfirmMail'),
34               $my_base_url.'&amp;tab=confirmmail');
35//$tabsheet->add('Misc_Options',
36//               l10n('Tab_Misc_Options'),
37//               $my_base_url.'&amp;tab=Misc_Options');
38$tabsheet->select($page['tab']);
39$tabsheet->assign();
40
41$page['global'] = array();
42$error = array();
43
44// +-----------------------------------------------------------------------+
45// |                            Tabssheet select                           |
46// +-----------------------------------------------------------------------+
47
48switch ($page['tab'])
49{
50// +-----------------------------------------------------------------------+
51// |                           Global Config                               |
52// +-----------------------------------------------------------------------+
53        case 'global':
54       
55        if ( isset($_POST['submit']) and !is_adviser() and isset($_POST['UserAdvManager_Mail_Info']) and isset($_POST['UserAdvManager_No_Casse']) and isset($_POST['UserAdvManager_Username_Char']) and isset($_POST['UserAdvManager_Confirm_Mail']) and isset($_POST['UserAdvManager_No_Comment_Anonymous']) )
56        {
57                $_POST['UserAdvManager_MailInfo_Text'] = str_replace("\'", "'", str_replace("\\\\", "\\", $_POST['UserAdvManager_MailInfo_Text']));
58                $_POST['UserAdvManager_ConfirmMail_Text'] = str_replace("\'", "'", str_replace("\\\\", "\\", $_POST['UserAdvManager_ConfirmMail_Text']));
59               
60                $newconf_nbc_UserAdvManager = $_POST['UserAdvManager_Mail_Info'].';'.$_POST['UserAdvManager_No_Casse'].';'.$_POST['UserAdvManager_Confirm_Mail'].';'.(isset($_POST['UserAdvManager_No_Confirm_Group'])?$_POST['UserAdvManager_No_Confirm_Group']:'').';'.(isset($_POST['UserAdvManager_Validated_Group'])?$_POST['UserAdvManager_Validated_Group']:'').';'.(isset($_POST['UserAdvManager_Validated_Status'])?$_POST['UserAdvManager_Validated_Status']:'').';'.$_POST['UserAdvManager_No_Comment_Anonymous'].';'.$_POST['UserAdvManager_Username_Char'].';'.$_POST['UserAdvManager_Username_List'].';'.(isset($_POST['UserAdvManager_No_Confirm_Status'])?$_POST['UserAdvManager_No_Confirm_Status']:'').';'.$_POST['UserAdvManager_MailInfo_Text'].';'.$_POST['UserAdvManager_ConfirmMail_Text'].';'.$_POST['UserAdvManager_MailExclusion'].';'.$_POST['UserAdvManager_MailExclusion_List'];
61               
62                $conf['nbc_UserAdvManager'] = $newconf_nbc_UserAdvManager;
63               
64                $query = '
65                  UPDATE '.CONFIG_TABLE.'
66                  SET value="'.$newconf_nbc_UserAdvManager.'"
67                  WHERE param="nbc_UserAdvManager"
68                  LIMIT 1
69                  ;';
70               
71                pwg_query($query);
72               
73                array_push($page['infos'], l10n('UserAdvManager_save_config'));
74        }
75       
76        $conf_nbc_UserAdvManager = isset($conf['nbc_UserAdvManager']) ? explode(";" , $conf['nbc_UserAdvManager']) : array();
77       
78        /* Group setting for unvalidated and validated users */
79        $groups[-1] = '---------';
80        $No_Valid = -1;
81        $Valid = -1;
82       
83        /* Check groups list in database  */
84        $query = '
85          SELECT id, name
86          FROM '.GROUPS_TABLE.'
87          ORDER BY name ASC
88          ;';
89       
90        $result = pwg_query($query);
91       
92        while ($row = mysql_fetch_array($result))
93        {
94                $groups[$row['id']] = $row['name'];
95                /* configuration value for unvalidated users */
96                if (isset($conf_nbc_UserAdvManager[3]) and $conf_nbc_UserAdvManager[3] == $row['id'])
97                {
98                        $No_Valid = $row['id'];
99                }
100                /* configuration value for validated users */
101                if (isset($conf_nbc_UserAdvManager[4]) and $conf_nbc_UserAdvManager[4] == $row['id'])
102                {
103                        $Valid = $row['id'];
104                }
105        }
106       
107        /* Template initialization for unvalidated users group */
108        $template->assign(
109        'No_Confirm_Group',
110        array(
111                'group_options'=> $groups,
112                'group_selected' => $No_Valid
113                )
114        );
115        /* Template initialization for validated users group */
116        $template->assign(
117        'Validated_Group',
118        array(
119        'group_options'=> $groups,
120        'group_selected' => $Valid
121                )
122        );
123       
124        /* Status setting for unvalidated and validated users */
125        $status_options[-1] = '------------';
126        $No_Valid_Status = -1;
127        $Valid_Status = -1;
128       
129        /* Get status values */
130        foreach (get_enums(USER_INFOS_TABLE, 'status') as $status)
131        {
132                $status_options[$status] = l10n('user_status_'.$status);
133                if (isset($conf_nbc_UserAdvManager[9]) and $conf_nbc_UserAdvManager[9] == $status)
134                {
135                        $No_Valid_Status = $status;
136                }
137        /* Template initialization for unvalidated users group */
138        $template->assign(
139    'No_Confirm_Status',
140        array(
141                'Status_options' => $status_options,
142                'Status_selected' => $No_Valid_Status
143                )
144        );
145       
146        }
147        /* Get status values */
148        foreach (get_enums(USER_INFOS_TABLE, 'status') as $status)
149        {
150                $status_options[$status] = l10n('user_status_'.$status);
151                if (isset($conf_nbc_UserAdvManager[5]) and $conf_nbc_UserAdvManager[5] == $status)
152                {
153                        $Valid_Status = $status;
154                }
155        /* Template initialization for unvalidated users group */
156        $template->assign(
157        'Confirm_Status',
158        array(
159                'Status_options' => $status_options,
160                'Status_selected' => $Valid_Status
161                )
162        );
163       
164        }
165       
166       
167        $template->assign(
168        array(
169                'UserAdvManager_MAIL_INFO_TRUE'       => $conf_nbc_UserAdvManager[0]=='true' ?  'checked="checked"' : '' ,
170                'UserAdvManager_MAIL_INFO_FALSE'      => $conf_nbc_UserAdvManager[0]=='false' ?  'checked="checked"' : '' ,
171                'UserAdvManager_MAILINFO_TEXT'        => $conf_nbc_UserAdvManager[10],
172                'UserAdvManager_NO_CASSE_TRUE'        => $conf_nbc_UserAdvManager[1]=='true' ?  'checked="checked"' : '' ,
173                'UserAdvManager_NO_CASSE_FALSE'       => $conf_nbc_UserAdvManager[1]=='false' ?  'checked="checked"' : '' ,
174                'UserAdvManager_USERNAME_CHAR_TRUE'   => $conf_nbc_UserAdvManager[7]=='true' ?  'checked="checked"' : '' ,
175                'UserAdvManager_USERNAME_CHAR_FALSE'  => $conf_nbc_UserAdvManager[7]=='false' ?  'checked="checked"' : '' ,
176                'UserAdvManager_USERNAME_CHAR_LIST'   => $conf_nbc_UserAdvManager[8],
177                'UserAdvManager_CONFIRM_MAIL_TRUE'    => $conf_nbc_UserAdvManager[2]=='true' ?  'checked="checked"' : '' ,
178                'UserAdvManager_CONFIRM_MAIL_FALSE'   => $conf_nbc_UserAdvManager[2]=='false' ?  'checked="checked"' : '' ,
179                'UserAdvManager_CONFIRMMAIL_TEXT'     => $conf_nbc_UserAdvManager[11],
180                'UserAdvManager_No_Confirm_Group'     => $conf_nbc_UserAdvManager[3],
181                'UserAdvManager_Validated_Group'      => $conf_nbc_UserAdvManager[4],
182                'UserAdvManager_No_Confirm_Status'    => $conf_nbc_UserAdvManager[9],
183                'UserAdvManager_Validated_Status'     => $conf_nbc_UserAdvManager[5],
184                'UserAdvManager_NO_COMMENT_ANO_TRUE'  => $conf_nbc_UserAdvManager[6]=='true' ?  'checked="checked"' : '' ,
185                'UserAdvManager_NO_COMMENT_ANO_FALSE' => $conf_nbc_UserAdvManager[6]=='false' ?  'checked="checked"' : '' ,
186                'UserAdvManager_MAILEXCLUSION_TRUE'   => $conf_nbc_UserAdvManager[12]=='true' ?  'checked="checked"' : '' ,
187                'UserAdvManager_MAILEXCLUSION_FALSE'  => $conf_nbc_UserAdvManager[12]=='false' ?  'checked="checked"' : '' ,
188                'UserAdvManager_MAILEXCLUSION_LIST'   => $conf_nbc_UserAdvManager[13],
189                )
190        );
191       
192
193        if ( isset($_POST['audit']) or isset($_POST['submit']) )
194        {
195                $msg_error1 = '';
196               
197                /* username insensible a la casse */
198                if (isset($conf_nbc_UserAdvManager[3]) and $conf_nbc_UserAdvManager[3] == 'true')
199                {
200                        $query = "
201                          SELECT ".$conf['user_fields']['username']."
202                          FROM ".USERS_TABLE." p1
203                          WHERE EXISTS(
204                          SELECT ".$conf['user_fields']['username']."
205                          FROM ".USERS_TABLE." p2
206                          WHERE p1.".$conf['user_fields']['id']." <> p2.".$conf['user_fields']['id']."
207                          AND LOWER(p1.".$conf['user_fields']['username'].") = LOWER(p2.".$conf['user_fields']['username'].")
208                          )
209                          ;";
210                         
211                        $result = pwg_query($query);
212                       
213                        while($row = mysql_fetch_array($result))
214                        {
215                                $msg_error1 .= (($msg_error1 <> '') ? '<br/>' : '') . l10n('Err_audit_no_casse').$row['username'];
216                        }
217                }
218
219
220                $msg_error2 = '';
221               
222                /* Username without forbidden keys */
223                if ( isset($conf_nbc_UserAdvManager[7]) and $conf_nbc_UserAdvManager[7] == 'true' )
224                {
225                        $query = "
226                          SELECT ".$conf['user_fields']['username'].", ".$conf['user_fields']['email']."
227                          FROM ".USERS_TABLE."
228                          ;";
229                         
230                        $result = pwg_query($query);
231                       
232                        while($row = mysql_fetch_array($result))
233                        {
234                                if ( !ValidateUsername($row['username']) )
235                                $msg_error2 .= (($msg_error2 <> '') ? '<br/>' : '') . l10n('Err_audit_username_char').$row['username'];
236                        }
237                }
238
239               
240                $msg_error3 = '';
241               
242                /* Email without forbidden domain */
243                if ( isset($conf_nbc_UserAdvManager[12]) and $conf_nbc_UserAdvManager[12] == 'true' )
244                {
245                        $query = "
246                          SELECT ".$conf['user_fields']['username'].", ".$conf['user_fields']['email']."
247                          FROM ".USERS_TABLE."
248                          ;";
249                         
250                        $result = pwg_query($query);
251                       
252                        while($row = mysql_fetch_array($result))
253                        {
254                                $conf_nbc_UserAdvManager = isset($conf['nbc_UserAdvManager']) ? explode(";" , $conf['nbc_UserAdvManager']) : array();
255                                $conf_nbc_MailExclusion = split (",",$conf_nbc_UserAdvManager[13]);
256                                for ($i = 0 ; $i < count($conf_nbc_MailExclusion) ; $i++)
257                                {
258                                        if (ereg($conf_nbc_MailExclusion[$i], $row['mail_address']))
259                                        {
260                                                $msg_error3 .=  (($msg_error3 <> '') ? '<br/>' : '') . l10n('Err_audit_email_forbidden').$row['username'].' ('.$row['mail_address'].')';
261                                        }
262                                }
263                        }
264                }
265               
266                if ($msg_error1 <> '')
267                $errors[] = $msg_error1.'<br/><br/>';
268               
269                if ($msg_error2 <> '')
270                $errors[] = $msg_error2.'<br/><br/>';
271               
272                if ($msg_error3 <> '')
273                $errors[] = $msg_error3.'<br/><br/>';
274               
275                if ($msg_error1 <> '' or $msg_error2 <> '' or $msg_error3 <> '')
276                        array_push($page['errors'], l10n('Err_audit_advise'));
277                else
278                        array_push($page['infos'], l10n('UserAdvManager_audit_ok'));
279        }
280
281
282// +-----------------------------------------------------------------------+
283// |                             errors display                            |
284// +-----------------------------------------------------------------------+
285        if ( isset ($errors) and count($errors) != 0)
286        {
287                $template->assign('errors',array());
288                foreach ($errors as $error)
289                {
290                        array_push($page['errors'], $error);
291                }
292        } 
293
294// +-----------------------------------------------------------------------+
295// |                           templates display                           |
296// +-----------------------------------------------------------------------+
297        $template->set_filename('plugin_admin_content', dirname(__FILE__) . '/global.tpl');
298        $template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');
299
300        break;
301
302// +-----------------------------------------------------------------------+
303// |                           ConfirMail Config                           |
304// +-----------------------------------------------------------------------+
305        case 'confirmmail':
306       
307        $conf_nbc_UserAdvManager = isset($conf['nbc_UserAdvManager']) ? explode(";" , $conf['nbc_UserAdvManager']) : array();
308       
309        if (isset($conf_nbc_UserAdvManager[2]) and $conf_nbc_UserAdvManager[2]=='true' )
310        {
311                if ( isset($_POST['submit']) and !is_adviser() and isset($_POST['UserAdvManager_ConfirmMail_TimeOut']) )
312                {               
313                        $newconf_nbc_UserAdvManager_ConfirmMail = $_POST['UserAdvManager_ConfirmMail_TimeOut'].';'.$_POST['UserAdvManager_ConfirmMail_Delay'];
314                       
315                        $conf['nbc_UserAdvManager_ConfirmMail'] = $newconf_nbc_UserAdvManager_ConfirmMail;
316               
317                        $query = '
318                          UPDATE '.CONFIG_TABLE.'
319                          SET value="'.$newconf_nbc_UserAdvManager_ConfirmMail.'"
320                          WHERE param="nbc_UserAdvManager_ConfirmMail"
321                          LIMIT 1
322                          ;';
323               
324                        pwg_query($query);
325               
326                        array_push($page['infos'], l10n('UserAdvManager_save_config'));
327                }
328       
329                $conf_nbc_UserAdvManager_ConfirmMail = isset($conf['nbc_UserAdvManager_ConfirmMail']) ? explode(";" , $conf['nbc_UserAdvManager_ConfirmMail']) : array();
330
331        /* List timed out users */             
332        /* Get registration date  */
333        /* Under construction ;-) */
334function get_unvalid_user_list()
335{
336/*  global $conf, $page;
337
338  $users = array();
339  $order_by = 'id';
340  $direction = 'ASC';
341  $query = '
342                        SELECT DISTINCT u.'.$conf['user_fields']['id'].' AS id,
343                u.'.$conf['user_fields']['username'].' AS username,
344                u.'.$conf['user_fields']['email'].' AS email,
345                ui.status,
346                ui.adviser,
347                ui.enabled_high,
348                ui.level
349                        FROM '.USERS_TABLE.' AS u
350                        INNER JOIN '.USER_INFOS_TABLE.' AS ui
351                ON u.'.$conf['user_fields']['id'].' = ui.user_id
352                LEFT JOIN '.USER_GROUP_TABLE.' AS ug
353                ON u.'.$conf['user_fields']['id'].' = ug.user_id
354                        WHERE u.'.$conf['user_fields']['id'].' > 0';
355  $query.= '
356                        ORDER BY '.$order_by.' '.$direction.'
357                        ;';
358  $result = pwg_query($query);
359  while ($row = mysql_fetch_array($result))
360  {
361        $user = $row;
362        $user['groups'] = array();
363    array_push($users, $user);
364  }
365  // add group lists
366  $user_ids = array();
367  foreach ($users as $i => $user)
368  {
369    $user_ids[$i] = $user['id'];
370  }
371  $user_nums = array_flip($user_ids);
372
373  if (count($user_ids) > 0)
374  {
375    $query = '
376                        SELECT user_id, group_id
377                        FROM '.USER_GROUP_TABLE.'
378                        WHERE user_id IN ('.implode(',', $user_ids).')
379                        ;';
380   
381        $result = pwg_query($query);
382   
383    while ($row = mysql_fetch_array($result))
384    {
385      array_push(
386        $users[$user_nums[$row['user_id']]]['groups'],
387        $row['group_id']
388        );
389    }
390  }
391
392  return $users;*/
393}
394 
395/*              $query = "
396                  SELECT user.username, user.mail_address, info.registration_date
397                  FROM ".USERS_TABLE." as user, ".USER_INFOS_TABLE." as info
398                  WHERE user.id = info.user_id
399                  ;";
400                 
401                $result = pwg_query($query);
402                 
403                while ($row = mysql_fetch_array($result))
404                {
405
406                }*/
407
408// +-----------------------------------------------------------------------+
409// |                           initialization                              |
410// +-----------------------------------------------------------------------+
411
412if (!defined('PHPWG_ROOT_PATH'))
413{
414  die('Hacking attempt!');
415}
416include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
417
418$page['filtered_users'] = get_unvalid_user_list();     
419
420
421// +-----------------------------------------------------------------------+
422// |                           Template Init                               |
423// +-----------------------------------------------------------------------+
424        $template->assign(
425        array(
426                'UserAdvManager_CONFIRMMAIL_TIMEOUT_TRUE'       => $conf_nbc_UserAdvManager_ConfirmMail[0]=='true' ?  'checked="checked"' : '' ,
427                'UserAdvManager_CONFIRMMAIL_TIMEOUT_FALSE'      => $conf_nbc_UserAdvManager_ConfirmMail[0]=='false' ?  'checked="checked"' : '' ,
428                'UserAdvManager_CONFIRMMAIL_DELAY'                  => $conf_nbc_UserAdvManager_ConfirmMail[1],
429                )
430        );
431               
432               
433
434// +-----------------------------------------------------------------------+
435// |                             errors display                            |
436// +-----------------------------------------------------------------------+
437        if ( isset ($errors) and count($errors) != 0)
438        {
439                $template->assign('errors',array());
440                foreach ($errors as $error)
441                {
442                        array_push($page['errors'], $error);
443                }
444        } 
445
446// +-----------------------------------------------------------------------+
447// |                           templates display                           |
448// +-----------------------------------------------------------------------+
449        $template->set_filename('plugin_admin_content', dirname(__FILE__) . '/confirmmail.tpl');
450        $template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');             
451        }
452        else
453        {
454                array_push($page['infos'], l10n('Err_ConfirmMail_Settings'));
455
456        }
457        break;
458
459}
460
461?>
Note: See TracBrowser for help on using the repository browser.