source: extensions/NBC_UserAdvManager/trunk/admin/UserAdvManager_admin.php @ 4948

Revision 4948, 54.4 KB checked in by Eric, 10 years ago (diff)

[NBC_UserAdvManager] Pre-2.13.4 for testing only:

  • Bug 1445 pre-fixed : Adding of plugin's css file, adding "tips ans tricks" section in config page, insert of 1st tip.
  • Property svn:eol-style set to LF
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
11if (!defined('NBC_UAM_PATH')) define('NBC_UAM_PATH' , PHPWG_PLUGINS_PATH.basename(dirname(__FILE__)).'/');
12
13//ini_set('error_reporting', E_ALL);
14//ini_set('display_errors', true);
15
16include_once (PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
17include_once (PHPWG_ROOT_PATH.'/include/constants.php');
18$my_base_url = get_admin_plugin_menu_link(__FILE__);
19
20load_language('plugin.lang', NBC_UAM_PATH);
21load_language('help/plugin.lang', NBC_UAM_PATH);
22
23$page['global'] = array();
24$error = array();
25$UserAdvManager_Password_Test_Score = 0;
26$pattern = '/;/';
27$replacement = '.';
28
29$UserAdvManager_MailInfo_Error_Txt = false;
30$UserAdvManager_ConfirmMail_Error_Txt = false;
31$UserAdvManager_Reminder_Error_Txt = false;
32$UserAdvManager_ConfirmMail_Error_Txt1 = false;
33$UserAdvManager_ConfirmMail_Error_Txt2 = false;
34$UserAdvManager_Exclusionlist_Error = false;
35
36// +-----------------------------------------------------------------------+
37// |                            Tabssheet                                  |
38// +-----------------------------------------------------------------------+
39if (!isset($_GET['tab']))
40        $page['tab'] = 'global';
41else
42  $page['tab'] = $_GET['tab'];
43
44$tabsheet = new tabsheet();
45$tabsheet->add('global',
46               l10n('Tab_Global'),
47               $my_base_url.'&amp;tab=global');
48//if (isset($conf_nbc_UserAdvManager[20]) and $conf_nbc_UserAdvManager[20]=='true')
49//{
50  $tabsheet->add('userlist',
51                 l10n('Tab_UserList'),
52                 $my_base_url.'&amp;tab=userlist');
53//}
54$tabsheet->add('usermanager',
55               l10n('Tab_UserManager'),
56               $my_base_url.'&amp;tab=usermanager');
57$tabsheet->add('ghosttracker',
58               l10n('Tab_GhostTracker'),
59               $my_base_url.'&amp;tab=ghosttracker');
60$tabsheet->select($page['tab']);
61$tabsheet->assign();
62
63// +-----------------------------------------------------------------------+
64// |                      Getting plugin version                           |
65// +-----------------------------------------------------------------------+
66$plugin =  PluginVer(NBC_UAM_PATH);
67$version = $plugin['version'] ;
68
69// +-----------------------------------------------------------------------+
70// |                            Tabssheet select                           |
71// +-----------------------------------------------------------------------+
72
73switch ($page['tab'])
74{
75// *************************************************************************
76// +-----------------------------------------------------------------------+
77// |                           Global Config                               |
78// +-----------------------------------------------------------------------+
79// *************************************************************************
80  case 'global':
81
82        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']) and isset($_POST['UserAdvManager_Password_Enforced']) and isset($_POST['UserAdvManager_AdminPassword_Enforced']) and isset($_POST['UserAdvManager_GhostUser_Tracker']))
83  {
84
85/* General configuration settings */
86                $_POST['UserAdvManager_MailInfo_Text'] = str_replace("\'", "'", str_replace("\\\\", "\\", $_POST['UserAdvManager_MailInfo_Text']));
87   
88                $_POST['UserAdvManager_ConfirmMail_Text'] = str_replace("\'", "'", str_replace("\\\\", "\\", $_POST['UserAdvManager_ConfirmMail_Text']));
89
90    $_POST['UserAdvManager_GhostTracker_ReminderText'] = str_replace("\'", "'", str_replace("\\\\", "\\", $_POST['UserAdvManager_GhostTracker_ReminderText']));
91
92
93/* Control of semicolons - Replaced by dots - Warning message is displayed */   
94    if ((preg_match($pattern, $_POST['UserAdvManager_MailInfo_Text'])) or (preg_match($pattern, $_POST['UserAdvManager_GhostTracker_ReminderText'])) or (preg_match($pattern, $_POST['UserAdvManager_ConfirmMail_Text'])))
95    {
96      if (preg_match($pattern, $_POST['UserAdvManager_MailInfo_Text']))
97      {
98        $_POST['UserAdvManager_MailInfo_Text'] = preg_replace($pattern, $replacement, $_POST['UserAdvManager_MailInfo_Text']);
99        $UserAdvManager_MailInfo_Error_Txt = true;
100      }
101     
102      if (preg_match($pattern, $_POST['UserAdvManager_ConfirmMail_Text']))
103      {
104        $_POST['UserAdvManager_ConfirmMail_Text'] = preg_replace($pattern, $replacement, $_POST['UserAdvManager_ConfirmMail_Text']);
105        $UserAdvManager_ConfirmMail_Error_Txt = true;
106      }
107     
108      if (preg_match($pattern, $_POST['UserAdvManager_GhostTracker_ReminderText']))
109      {
110        $_POST['UserAdvManager_GhostTracker_ReminderText'] = preg_replace($pattern, $replacement, $_POST['UserAdvManager_GhostTracker_ReminderText']);
111        $UserAdvManager_Reminder_Error_Txt = true;
112      }
113     
114      array_push($page['errors'], l10n('mail_text_error'));
115    }
116
117    /* Check if CR-LF exist at begining and end of mail exclusion list - If yes, removes them */
118    if (preg_match('/^[\s]+/', $_POST['UserAdvManager_MailExclusion_List']))
119    {
120      array_push($page['errors'], l10n('mail_exclusionlist_error'));
121      $UserAdvManager_Exclusionlist_Error = true;
122    }
123               
124                $newconf_nbc_UserAdvManager =
125      $_POST['UserAdvManager_Mail_Info'].';'
126      .$_POST['UserAdvManager_No_Casse'].';'
127      .$_POST['UserAdvManager_Confirm_Mail'].';'
128      .(isset($_POST['UserAdvManager_No_Confirm_Group'])?$_POST['UserAdvManager_No_Confirm_Group']:'').';'
129      .(isset($_POST['UserAdvManager_Validated_Group'])?$_POST['UserAdvManager_Validated_Group']:'').';'
130      .(isset($_POST['UserAdvManager_Validated_Status'])?$_POST['UserAdvManager_Validated_Status']:'').';'
131      .$_POST['UserAdvManager_No_Comment_Anonymous'].';'
132      .$_POST['UserAdvManager_Username_Char'].';'
133      .$_POST['UserAdvManager_Username_List'].';'
134      .(isset($_POST['UserAdvManager_No_Confirm_Status'])?$_POST['UserAdvManager_No_Confirm_Status']:'').';'
135      .$_POST['UserAdvManager_MailInfo_Text'].';'
136      .$_POST['UserAdvManager_ConfirmMail_Text'].';'
137      .$_POST['UserAdvManager_MailExclusion'].';'
138      .$_POST['UserAdvManager_MailExclusion_List'].';'
139      .$_POST['UserAdvManager_Password_Enforced'].';'
140      .$_POST['UserAdvManager_Password_Score'].';'
141      .$_POST['UserAdvManager_AdminPassword_Enforced'].';'
142      .$_POST['UserAdvManager_GhostUser_Tracker'].';'
143      .$_POST['UserAdvManager_GhostTracker_DayLimit'].';'
144      .$_POST['UserAdvManager_GhostTracker_ReminderText'].';'
145      .$_POST['UserAdvManager_Add_LastVisit_Column'];
146               
147                $conf['nbc_UserAdvManager'] = $newconf_nbc_UserAdvManager;
148               
149                $query = '
150                UPDATE '.CONFIG_TABLE.'
151                SET value="'.$newconf_nbc_UserAdvManager.'"
152                WHERE param="nbc_UserAdvManager"
153                LIMIT 1
154                ;';
155               
156                pwg_query($query);
157
158
159
160/* Email confirmation settings */
161    $_POST['UserAdvManager_ConfirmMail_ReMail_Txt1'] = str_replace("\'", "'", str_replace("\\\\", "\\", $_POST['UserAdvManager_ConfirmMail_ReMail_Txt1']));
162
163    $_POST['UserAdvManager_ConfirmMail_ReMail_Txt2'] = str_replace("\'", "'", str_replace("\\\\", "\\", $_POST['UserAdvManager_ConfirmMail_ReMail_Txt2']));
164
165/* Control of semicolons - Replaced by dots - Warning message displayed */
166    if ((preg_match($pattern, $_POST['UserAdvManager_ConfirmMail_ReMail_Txt1'])) or (preg_match($pattern, $_POST['UserAdvManager_ConfirmMail_ReMail_Txt2'])))
167    {
168      if ((preg_match($pattern, $_POST['UserAdvManager_ConfirmMail_ReMail_Txt1'])))
169      {
170        $_POST['UserAdvManager_ConfirmMail_ReMail_Txt1'] = preg_replace($pattern, $replacement, $_POST['UserAdvManager_ConfirmMail_ReMail_Txt1']);
171        $UserAdvManager_ConfirmMail_Error_Txt1 = true;
172      }
173     
174      if ((preg_match($pattern, $_POST['UserAdvManager_ConfirmMail_ReMail_Txt2'])))
175      {
176        $_POST['UserAdvManager_ConfirmMail_ReMail_Txt2'] = preg_replace($pattern, $replacement, $_POST['UserAdvManager_ConfirmMail_ReMail_Txt2']);
177       
178        $UserAdvManager_ConfirmMail_Error_Txt2 = true;
179      }
180     
181      array_push($page['errors'], l10n('mail_text_error'));
182    }
183
184          $newconf_nbc_UserAdvManager_ConfirmMail =
185      $_POST['UserAdvManager_ConfirmMail_TimeOut'].';'
186      .$_POST['UserAdvManager_ConfirmMail_Delay'].';'
187      .$_POST['UserAdvManager_ConfirmMail_ReMail_Txt1'].';'
188      .$_POST['UserAdvManager_ConfirmMail_Remail'].';'
189      .$_POST['UserAdvManager_ConfirmMail_ReMail_Txt2'];
190
191    $conf['nbc_UserAdvManager_ConfirmMail'] = $newconf_nbc_UserAdvManager_ConfirmMail;
192               
193          $query = '
194      UPDATE '.CONFIG_TABLE.'
195                        SET value="'.$newconf_nbc_UserAdvManager_ConfirmMail.'"
196                        WHERE param="nbc_UserAdvManager_ConfirmMail"
197                        LIMIT 1
198                ;';
199
200                pwg_query($query);
201
202                array_push($page['infos'], l10n('UserAdvManager_save_config'));
203  }
204
205
206/* Testing password enforcement */
207  if (isset($_POST['PasswordTest']) and !is_adviser() and isset($_POST['UserAdvManager_Password_Test']) and !empty($_POST['UserAdvManager_Password_Test']))
208  {
209    $UserAdvManager_Password_Test_Score = testpassword($_POST['UserAdvManager_Password_Test']);
210  }
211  else if (isset($_POST['PasswordTest']) and !is_adviser() and empty($_POST['UserAdvManager_Password_Test']))
212  {
213    array_push($page['errors'], l10n('reg_err_login3'));
214  }
215       
216
217  $conf_nbc_UserAdvManager = isset($conf['nbc_UserAdvManager']) ? explode(";" , $conf['nbc_UserAdvManager']) : array();
218
219/* Group setting for unvalidated and validated users */
220  $groups[-1] = '---------';
221  $No_Valid = -1;
222  $Valid = -1;
223       
224/* Check groups list in database  */
225  $query = '
226SELECT id, name
227FROM '.GROUPS_TABLE.'
228ORDER BY name ASC
229;';
230       
231  $result = pwg_query($query);
232       
233  while ($row = mysql_fetch_assoc($result))
234  {
235    $groups[$row['id']] = $row['name'];
236/* configuration value for unvalidated users */
237    if (isset($conf_nbc_UserAdvManager[3]) and $conf_nbc_UserAdvManager[3] == $row['id'])
238    {
239                $No_Valid = $row['id'];
240                }
241/* configuration value for validated users */
242    if (isset($conf_nbc_UserAdvManager[4]) and $conf_nbc_UserAdvManager[4] == $row['id'])
243                {
244                $Valid = $row['id'];
245                }
246  }
247       
248/* Template initialization for unvalidated users group */
249  $template->assign(
250    'No_Confirm_Group',
251        array(
252                'group_options'=> $groups,
253                'group_selected' => $No_Valid
254                        )
255                );
256/* Template initialization for validated users group */
257  $template->assign(
258    'Validated_Group',
259                array(
260      'group_options'=> $groups,
261      'group_selected' => $Valid
262                        )
263        );
264       
265/* Status setting for unvalidated and validated users */
266  $status_options[-1] = '------------';
267  $No_Valid_Status = -1;
268  $Valid_Status = -1;
269       
270/* Get status values */
271  foreach (get_enums(USER_INFOS_TABLE, 'status') as $status)
272  {
273          $status_options[$status] = l10n('user_status_'.$status);
274          if (isset($conf_nbc_UserAdvManager[9]) and $conf_nbc_UserAdvManager[9] == $status)
275          {
276            $No_Valid_Status = $status;
277          }
278         
279/* Template initialization for unvalidated users group */
280      $template->assign(
281        'No_Confirm_Status',
282        array(
283                                        'Status_options' => $status_options,
284                                'Status_selected' => $No_Valid_Status
285                                        )
286                        );
287  }
288 
289/* Get status values */
290  foreach (get_enums(USER_INFOS_TABLE, 'status') as $status)
291  {
292          $status_options[$status] = l10n('user_status_'.$status);
293          if (isset($conf_nbc_UserAdvManager[5]) and $conf_nbc_UserAdvManager[5] == $status)
294                {
295                  $Valid_Status = $status;
296                }
297               
298/* Template initialization for unvalidated users group */
299      $template->assign(
300            'Confirm_Status',
301            array(
302                    'Status_options' => $status_options,
303                    'Status_selected' => $Valid_Status
304                    )
305            );
306        }
307 
308  $template->assign(
309    array(
310    /* Plugin version inserted */
311    'UAM_VERSION'                             => $version,
312    'NBC_UAM_PATH'                            => NBC_UAM_PATH,
313                'UserAdvManager_MAIL_INFO_TRUE'           => $conf_nbc_UserAdvManager[0]=='true' ?  'checked="checked"' : '' ,
314                'UserAdvManager_MAIL_INFO_FALSE'          => $conf_nbc_UserAdvManager[0]=='false' ?  'checked="checked"' : '' ,
315                'UserAdvManager_MAILINFO_TEXT'            => $conf_nbc_UserAdvManager[10],
316                'UserAdvManager_NO_CASSE_TRUE'            => $conf_nbc_UserAdvManager[1]=='true' ?  'checked="checked"' : '' ,
317                'UserAdvManager_NO_CASSE_FALSE'           => $conf_nbc_UserAdvManager[1]=='false' ?  'checked="checked"' : '' ,
318                'UserAdvManager_USERNAME_CHAR_TRUE'       => $conf_nbc_UserAdvManager[7]=='true' ?  'checked="checked"' : '' ,
319                'UserAdvManager_USERNAME_CHAR_FALSE'      => $conf_nbc_UserAdvManager[7]=='false' ?  'checked="checked"' : '' ,
320                'UserAdvManager_USERNAME_CHAR_LIST'       => $conf_nbc_UserAdvManager[8],
321                'UserAdvManager_CONFIRM_MAIL_TRUE'        => $conf_nbc_UserAdvManager[2]=='true' ?  'checked="checked"' : '' ,
322                'UserAdvManager_CONFIRM_MAIL_FALSE'       => $conf_nbc_UserAdvManager[2]=='false' ?  'checked="checked"' : '' ,
323                'UserAdvManager_CONFIRMMAIL_TEXT'         => $conf_nbc_UserAdvManager[11],
324                'UserAdvManager_No_Confirm_Group'         => $conf_nbc_UserAdvManager[3],
325                'UserAdvManager_Validated_Group'          => $conf_nbc_UserAdvManager[4],
326                'UserAdvManager_No_Confirm_Status'        => $conf_nbc_UserAdvManager[9],
327                'UserAdvManager_Validated_Status'         => $conf_nbc_UserAdvManager[5],
328                'UserAdvManager_NO_COMMENT_ANO_TRUE'      => $conf_nbc_UserAdvManager[6]=='true' ?  'checked="checked"' : '' ,
329                'UserAdvManager_NO_COMMENT_ANO_FALSE'     => $conf_nbc_UserAdvManager[6]=='false' ?  'checked="checked"' : '' ,
330                'UserAdvManager_MAILEXCLUSION_TRUE'       => $conf_nbc_UserAdvManager[12]=='true' ?  'checked="checked"' : '' ,
331                'UserAdvManager_MAILEXCLUSION_FALSE'      => $conf_nbc_UserAdvManager[12]=='false' ?  'checked="checked"' : '' ,
332                'UserAdvManager_MAILEXCLUSION_LIST'       => $conf_nbc_UserAdvManager[13],
333                'UserAdvManager_PASSWORDENF_TRUE'         => $conf_nbc_UserAdvManager[14]=='true' ?  'checked="checked"' : '' ,
334                'UserAdvManager_PASSWORDENF_FALSE'        => $conf_nbc_UserAdvManager[14]=='false' ?  'checked="checked"' : '' ,
335                'UserAdvManager_PASSWORD_SCORE'           => $conf_nbc_UserAdvManager[15],
336    'UserAdvManager_ADMINPASSWENF_TRUE'       => $conf_nbc_UserAdvManager[16]=='true' ?  'checked="checked"' : '' ,
337                'UserAdvManager_ADMINPASSWENF_FALSE'      => $conf_nbc_UserAdvManager[16]=='false' ?  'checked="checked"' : '' ,
338    'UserAdvManager_GHOSTRACKER_TRUE'         => $conf_nbc_UserAdvManager[17]=='true' ?  'checked="checked"' : '' ,
339                'UserAdvManager_GHOSTRACKER_FALSE'        => $conf_nbc_UserAdvManager[17]=='false' ?  'checked="checked"' : '' ,
340    'UserAdvManager_GHOSTRACKER_DAYLIMIT'     => $conf_nbc_UserAdvManager[18],
341    'UserAdvManager_GHOSTRACKER_REMINDERTEXT' => $conf_nbc_UserAdvManager[19],
342    'UserAdvManager_ADDLASTVISIT_TRUE'        => $conf_nbc_UserAdvManager[20]=='true' ?  'checked="checked"' : '' ,
343    'UserAdvManager_ADDLASTVISIT_FALSE'       => $conf_nbc_UserAdvManager[20]=='false' ?  'checked="checked"' : '' ,
344                'UserAdvManager_PASSWORD_TEST_SCORE'      => $UserAdvManager_Password_Test_Score,
345    'UserAdvManager_ERROR_REPORTS1'           => $UserAdvManager_MailInfo_Error_Txt,
346    'UserAdvManager_ERROR_REPORTS2'           => $UserAdvManager_ConfirmMail_Error_Txt,
347    'UserAdvManager_ERROR_REPORTS3'           => $UserAdvManager_Reminder_Error_Txt,
348    'UserAdvManager_ERROR_REPORTS4'           => $UserAdvManager_Exclusionlist_Error,
349    )
350  );
351
352                $conf_nbc_UserAdvManager_ConfirmMail = isset($conf['nbc_UserAdvManager_ConfirmMail']) ? explode(";" , $conf['nbc_UserAdvManager_ConfirmMail']) : array();               
353
354          $template->assign(
355          array(
356    'NBC_UAM_PATH'                              => NBC_UAM_PATH,
357                'UserAdvManager_CONFIRMMAIL_TIMEOUT_TRUE'               => $conf_nbc_UserAdvManager_ConfirmMail[0]=='true' ?  'checked="checked"' : '' ,
358                'UserAdvManager_CONFIRMMAIL_TIMEOUT_FALSE'      => $conf_nbc_UserAdvManager_ConfirmMail[0]=='false' ?  'checked="checked"' : '' ,
359                'UserAdvManager_CONFIRMMAIL_DELAY'                                      => $conf_nbc_UserAdvManager_ConfirmMail[1],
360    'UserAdvManager_CONFIRMMAIL_REMAIL_TRUE'            => $conf_nbc_UserAdvManager_ConfirmMail[3]=='true' ? 'checked="checked"' : '',
361    'UserAdvManager_CONFIRMMAIL_REMAIL_FALSE'           => $conf_nbc_UserAdvManager_ConfirmMail[3]=='false' ? 'checked="checked"' : '',
362    'UserAdvManager_CONFIRMMAIL_REMAIL_TXT1'            => $conf_nbc_UserAdvManager_ConfirmMail[2],
363    'UserAdvManager_CONFIRMMAIL_REMAIL_TXT2'            => $conf_nbc_UserAdvManager_ConfirmMail[4],
364    'UserAdvManager_ERROR_REPORTS1'             => $UserAdvManager_ConfirmMail_Error_Txt1,
365    'UserAdvManager_ERROR_REPORTS2'             => $UserAdvManager_ConfirmMail_Error_Txt2,
366        )
367          );
368       
369
370  if (isset($_POST['audit']))
371        {
372                $msg_error1 = '';
373               
374/* username insensible a la casse */
375    if (isset($conf_nbc_UserAdvManager[3]) and $conf_nbc_UserAdvManager[3] == 'true')
376          {
377                        $query = "
378SELECT ".$conf['user_fields']['username']."
379  FROM ".USERS_TABLE." p1
380WHERE EXISTS(
381  SELECT ".$conf['user_fields']['username']."
382         FROM ".USERS_TABLE." p2
383        WHERE p1.".$conf['user_fields']['id']." <> p2.".$conf['user_fields']['id']."
384         AND LOWER(p1.".$conf['user_fields']['username'].") = LOWER(p2.".$conf['user_fields']['username'].")
385        )
386;";
387                         
388                  $result = pwg_query($query);
389                       
390                  while($row = mysql_fetch_assoc($result))
391                {
392                                $msg_error1 .= (($msg_error1 <> '') ? '<br/>' : '') . l10n('Err_audit_no_casse').stripslashes($row['username']);
393                        }
394                }
395
396                $msg_error2 = '';
397               
398/* Username without forbidden keys */
399    if ( isset($conf_nbc_UserAdvManager[7]) and $conf_nbc_UserAdvManager[7] == 'true' )
400          {
401                        $query = "
402SELECT ".$conf['user_fields']['username'].", ".$conf['user_fields']['email']."
403  FROM ".USERS_TABLE."
404;";
405                         
406                        $result = pwg_query($query);
407                       
408                        while($row = mysql_fetch_assoc($result))
409                        {
410                                if (!ValidateUsername(stripslashes($row['username'])))
411                                        $msg_error2 .= (($msg_error2 <> '') ? '<br/>' : '') . l10n('Err_audit_username_char').stripslashes($row['username']);
412                        }
413                }
414
415                $msg_error3 = '';
416               
417/* Email without forbidden domain */
418    if ( isset($conf_nbc_UserAdvManager[12]) and $conf_nbc_UserAdvManager[12] == 'true' )
419          {
420                        $query = "
421SELECT ".$conf['user_fields']['username'].", ".$conf['user_fields']['email']."
422  FROM ".USERS_TABLE."
423;";
424                         
425                  $result = pwg_query($query);
426                       
427                  while($row = mysql_fetch_assoc($result))
428                  {
429                          $conf_nbc_MailExclusion = preg_split("/[\s,]+/",$conf_nbc_UserAdvManager[13]);
430                          for ($i = 0 ; $i < count($conf_nbc_MailExclusion) ; $i++)
431                          {
432                                        $pattern = '/'.$conf_nbc_MailExclusion[$i].'/';
433                                  if (preg_match($pattern, $row['mail_address']))
434                                  {
435                                                $msg_error3 .=  (($msg_error3 <> '') ? '<br/>' : '') . l10n('Err_audit_email_forbidden').stripslashes($row['username']).' ('.$row['mail_address'].')';
436                                        }
437                                }
438                        }
439                }
440               
441    if ($msg_error1 <> '')
442                        $errors[] = $msg_error1.'<br/><br/>';
443               
444                if ($msg_error2 <> '')
445                        $errors[] = $msg_error2.'<br/><br/>';
446               
447                if ($msg_error3 <> '')
448                $errors[] = $msg_error3.'<br/><br/>';
449               
450                if ($msg_error1 <> '' or $msg_error2 <> '' or $msg_error3 <> '')
451                array_push($page['errors'], l10n('Err_audit_advise'));
452                else
453        array_push($page['infos'], l10n('UserAdvManager_audit_ok'));
454        }
455
456
457// +-----------------------------------------------------------------------+
458// |                             errors display                            |
459// +-----------------------------------------------------------------------+
460  if (isset ($errors) and count($errors) != 0)
461  {
462          $template->assign('errors',array());
463          foreach ($errors as $error)
464          {
465                  array_push($page['errors'], $error);
466                }
467        } 
468
469// +-----------------------------------------------------------------------+
470// |                           templates display                           |
471// +-----------------------------------------------------------------------+
472  $template->set_filename('plugin_admin_content', dirname(__FILE__) . '/global.tpl');
473  $template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');
474
475  break;
476
477
478// *************************************************************************
479// +-----------------------------------------------------------------------+
480// |                           Users list page                             |
481// +-----------------------------------------------------------------------+
482// *************************************************************************
483  case 'userlist':
484 
485  $conf_nbc_UserAdvManager = isset($conf['nbc_UserAdvManager']) ? explode(";" , $conf['nbc_UserAdvManager']) : array();
486 
487  if (isset($conf_nbc_UserAdvManager[20]) and $conf_nbc_UserAdvManager[20]=='true')
488  {
489// +-----------------------------------------------------------------------+
490// |                           initialization                              |
491// +-----------------------------------------------------------------------+
492
493                if (!defined('PHPWG_ROOT_PATH'))
494    {
495        die('Hacking attempt!');
496    }
497         
498    include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
499
500// +-----------------------------------------------------------------------+
501// | Check Access and exit when user status is not ok                      |
502// +-----------------------------------------------------------------------+
503                check_status(ACCESS_ADMINISTRATOR);
504
505
506// +-----------------------------------------------------------------------+
507// |                               user list                               |
508// +-----------------------------------------------------------------------+
509
510                $page['filtered_users'] = get_user_list();
511
512// +-----------------------------------------------------------------------+
513// |                           Template Init                               |
514// +-----------------------------------------------------------------------+
515                $base_url = PHPWG_ROOT_PATH.'admin.php?page=user_list';
516
517    if (isset($_GET['start']) and is_numeric($_GET['start']))
518    {
519      $start = $_GET['start'];
520    }
521    else
522    {
523      $start = 0;
524    }
525
526// +-----------------------------------------------------------------------+
527// |                            navigation bar                             |
528// +-----------------------------------------------------------------------+
529
530$url = PHPWG_ROOT_PATH.'admin.php'.get_query_string_diff(array('start'));
531
532$navbar = create_navigation_bar(
533  $url,
534  count($page['filtered_users']),
535  $start,
536  $conf['users_page']
537  );
538
539$template->assign('NAVBAR', $navbar);
540
541// +-----------------------------------------------------------------------+
542// |                               user list                               |
543// +-----------------------------------------------------------------------+
544
545    $visible_user_list = array();
546    foreach ($page['filtered_users'] as $num => $local_user)
547    {
548/* simulate LIMIT $start, $conf['users_page'] */
549                        if ($num < $start)
550      {
551        continue;
552      }
553      if ($num >= $start + $conf['users_page'])
554      {
555        break;
556      }
557
558      $visible_user_list[] = $local_user;
559                }
560
561                foreach ($visible_user_list as $local_user)
562    {
563      // dates formating and compare
564      $today = date("d-m-Y"); // Get today's date
565      list($day, $month, $year) = explode('-', $today); // explode date of today                                                 
566      $daytimestamp = mktime(0, 0, 0, $month, $day, $year);// Generate UNIX timestamp
567               
568      list($regdate, $regtime) = explode(' ', $local_user['lastvisit']); // Explode date and time from registration date
569      list($regyear, $regmonth, $regday) = explode('-', $regdate); // Explode date from registration date
570      $regtimestamp = mktime(0, 0, 0, $regmonth, $regday, $regyear);// Generate UNIX timestamp
571                       
572      $deltasecs = $daytimestamp - $regtimestamp;// Compare the 2 UNIX timestamps       
573      $deltadays = floor($deltasecs / 86400);// Convert result from seconds to days
574     
575      if (isset($conf_nbc_UserAdvManager[17]) and $conf_nbc_UserAdvManager[17]=='true' and $conf_nbc_UserAdvManager[18] <> '')
576      {
577        if ($deltadays <= ($conf_nbc_UserAdvManager[18]/2))
578        {
579          $display = 'green';
580        }
581       
582        if (($deltadays > ($conf_nbc_UserAdvManager[18]/2)) and ($deltadays < $conf_nbc_UserAdvManager[18]))
583        {
584          $display = 'orange';
585        }
586       
587        if ($deltadays >= $conf_nbc_UserAdvManager[18])
588        {
589          $display = 'red';
590        }
591       
592      }
593      /* Plugin version inserted */
594      $template->assign(
595        array(
596          'UAM_VERSION' => $version,
597          )
598        );
599
600                $template->append(
601                'users',
602        array(
603                'ID'          => $local_user['id'],
604                'USERNAME'    => stripslashes($local_user['username']),
605                                        'EMAIL'       => get_email_address_as_display_text($local_user['email']),
606          'LASTVISIT'   => $local_user['lastvisit'],
607          'DAYS'        => $deltadays,
608          'DISPLAY'     => $display,
609                                )
610                        );
611                }
612// +-----------------------------------------------------------------------+
613// |                             errors display                            |
614// +-----------------------------------------------------------------------+
615                if ( isset ($errors) and count($errors) != 0)
616                {
617                $template->assign('errors',array());
618                        foreach ($errors as $error)
619                {
620                                array_push($page['errors'], $error);
621                }
622                } 
623
624// +-----------------------------------------------------------------------+
625// |                           templates display                           |
626// +-----------------------------------------------------------------------+
627                $template->set_filename('plugin_admin_content', dirname(__FILE__) . '/userlist.tpl');
628    $template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');         
629  }
630  else
631  {
632                array_push($page['infos'], l10n('Err_Userlist_Settings'));
633  }
634  break;
635
636
637// *************************************************************************
638// +-----------------------------------------------------------------------+
639// |                           Users manager page                          |
640// +-----------------------------------------------------------------------+
641// *************************************************************************
642  case 'usermanager':
643 
644  $conf_nbc_UserAdvManager = isset($conf['nbc_UserAdvManager']) ? explode(";" , $conf['nbc_UserAdvManager']) : array();
645  $conf_nbc_UserAdvManager_ConfirmMail = isset($conf['nbc_UserAdvManager_ConfirmMail']) ? explode(";" , $conf['nbc_UserAdvManager_ConfirmMail']) : array();
646       
647  if (isset($conf_nbc_UserAdvManager[2]) and $conf_nbc_UserAdvManager[2]=='true' and ((isset($conf_nbc_UserAdvManager[3]) and $conf_nbc_UserAdvManager[3] <> '-1') or (isset($conf_nbc_UserAdvManager[9]) and $conf_nbc_UserAdvManager[9] <> '-1')) and isset($conf_nbc_UserAdvManager_ConfirmMail[0]) and $conf_nbc_UserAdvManager_ConfirmMail[0]=='true')
648  {
649// +-----------------------------------------------------------------------+
650// |                           initialization                              |
651// +-----------------------------------------------------------------------+
652
653                if (!defined('PHPWG_ROOT_PATH'))
654    {
655        die('Hacking attempt!');
656    }
657         
658    include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
659
660// +-----------------------------------------------------------------------+
661// | Check Access and exit when user status is not ok                      |
662// +-----------------------------------------------------------------------+
663                check_status(ACCESS_ADMINISTRATOR);
664
665// +-----------------------------------------------------------------------+
666// |                               user list                               |
667// +-----------------------------------------------------------------------+
668
669                $page['filtered_users'] = get_unvalid_user_list();
670
671// +-----------------------------------------------------------------------+
672// |                            selected users                             |
673// +-----------------------------------------------------------------------+
674                if (isset($_POST['Del_Selected']))
675                {
676                $collection = array();
677
678                        switch ($_POST['target'])
679        {
680                case 'all' :
681        {
682                foreach($page['filtered_users'] as $local_user)
683                {
684                        array_push($collection, $local_user['id']);
685                }
686                                        break;
687                                }
688        case 'selection' :
689        {
690                if (isset($_POST['selection']))
691                {
692                        $collection = $_POST['selection'];
693                }
694                break;
695        }
696                        }
697
698                        if (count($collection) == 0)
699        {
700                array_push($page['errors'], l10n('Select at least one user'));
701                }
702                }
703
704// +-----------------------------------------------------------------------+
705// |                             delete users                              |
706// +-----------------------------------------------------------------------+
707                if (isset($_POST['Del_Selected']) and count($collection) > 0)
708        {
709                if (in_array($conf['guest_id'], $collection))
710                {
711                array_push($page['errors'], l10n('Guest cannot be deleted'));
712        }
713        if (($conf['guest_id'] != $conf['default_user_id']) and
714                in_array($conf['default_user_id'], $collection))
715        {
716                array_push($page['errors'], l10n('Default user cannot be deleted'));
717        }
718        if (in_array($conf['webmaster_id'], $collection))
719        {
720                array_push($page['errors'], l10n('Webmaster cannot be deleted'));
721        }
722        if (in_array($user['id'], $collection))
723        {
724                array_push($page['errors'], l10n('You cannot delete your account'));
725        }
726
727                        if (count($page['errors']) == 0)
728        {
729                foreach ($collection as $user_id)
730        {
731                delete_user($user_id);
732        }
733                array_push(
734                $page['infos'],
735                l10n_dec(
736                '%d user deleted', '%d users deleted',
737                count($collection)
738                )
739        );
740
741        foreach ($page['filtered_users'] as $filter_key => $filter_user)
742        {
743                if (in_array($filter_user['id'], $collection))
744                {
745                        unset($page['filtered_users'][$filter_key]);
746                }
747                }
748                        }
749                }
750
751// +-----------------------------------------------------------------------+
752// |                 Resend new validation key to users                    |
753// +-----------------------------------------------------------------------+
754// +-----------------------------------------------------------------------+
755// |                            selected users                             |
756// +-----------------------------------------------------------------------+
757                if (isset($_POST['Mail_With_Key']))
758                {
759                $collection = array();
760
761                        switch ($_POST['target'])
762        {
763                case 'all' :
764        {
765                foreach($page['filtered_users'] as $local_user)
766                {
767                        array_push($collection, $local_user['id']);
768                }
769                break;
770                                }
771        case 'selection' :
772        {
773                if (isset($_POST['selection']))
774                {
775                        $collection = $_POST['selection'];
776                }
777                break;
778        }
779                        }
780
781        if (count($collection) == 0)
782        {
783                array_push($page['errors'], l10n('Select at least one user'));
784        }
785                }
786// +-----------------------------------------------------------------------+
787// |                 Resend new validation key to users                    |
788// +-----------------------------------------------------------------------+
789                if (isset($_POST['Mail_With_Key']) and count($collection) > 0)
790                {
791                        if (in_array($conf['guest_id'], $collection))
792                {
793                array_push($page['errors'], l10n('No_validation_for_Guest'));
794        }
795        if (($conf['guest_id'] != $conf['default_user_id']) and
796                in_array($conf['default_user_id'], $collection))
797        {
798                array_push($page['errors'], l10n('No_validation_for_default_user'));
799        }
800                if (in_array($conf['webmaster_id'], $collection))
801        {
802                array_push($page['errors'], l10n('No_validation_for_Webmaster'));
803        }
804        if (in_array($user['id'], $collection))
805        {
806                array_push($page['errors'], l10n('No_validation_for_your_account'));
807        }
808
809        if (count($page['errors']) == 0)
810        {
811                foreach ($collection as $user_id)
812        {       
813                $typemail = 1;
814                                  $query = "
815SELECT id, username, mail_address
816  FROM ".USERS_TABLE."
817WHERE id = '".$user_id."'
818;";
819                                        $data = mysql_fetch_assoc(pwg_query($query));
820                               
821                ResendMail2User($typemail,$user_id,stripslashes($data['username']),$data['mail_address'],true);
822        }
823        array_push(
824                $page['infos'],
825                l10n_dec(
826                        '%d_Mail_With_Key', '%d_Mails_With_Key',
827                count($collection)
828                )
829        );
830       
831                                $page['filtered_users'] = get_unvalid_user_list();
832                        }
833                }
834
835// +-----------------------------------------------------------------------+
836// |             Send reminder without new key to users                    |
837// +-----------------------------------------------------------------------+
838// +-----------------------------------------------------------------------+
839// |                            selected users                             |
840// +-----------------------------------------------------------------------+
841                if (isset($_POST['Mail_Without_Key']))
842                {
843                $collection = array();
844
845                        switch ($_POST['target'])
846        {
847                case 'all' :
848        {
849                foreach($page['filtered_users'] as $local_user)
850                {
851                        array_push($collection, $local_user['id']);
852                }
853                break;
854                                }
855        case 'selection' :
856        {
857                if (isset($_POST['selection']))
858                {
859                        $collection = $_POST['selection'];
860                }
861                break;
862        }
863                        }
864
865        if (count($collection) == 0)
866        {
867                array_push($page['errors'], l10n('Select at least one user'));
868        }
869                }
870// +-----------------------------------------------------------------------+
871// |             Send reminder without new key to users                    |
872// +-----------------------------------------------------------------------+
873                if (isset($_POST['Mail_Without_Key']) and count($collection) > 0)
874                {
875                        if (in_array($conf['guest_id'], $collection))
876                {
877                array_push($page['errors'], l10n('No_validation_for_Guest'));
878        }
879        if (($conf['guest_id'] != $conf['default_user_id']) and
880                in_array($conf['default_user_id'], $collection))
881        {
882                array_push($page['errors'], l10n('No_validation_for_default_user'));
883        }
884                if (in_array($conf['webmaster_id'], $collection))
885        {
886                array_push($page['errors'], l10n('No_validation_for_Webmaster'));
887        }
888        if (in_array($user['id'], $collection))
889        {
890                array_push($page['errors'], l10n('No_validation_for_your_account'));
891        }
892
893        if (count($page['errors']) == 0)
894        {
895                foreach ($collection as $user_id)
896        {
897                $typemail = 2;
898                                  $query = "
899SELECT id, username, mail_address
900  FROM ".USERS_TABLE."
901WHERE id = '".$user_id."'
902;";
903                                       
904                                        $data = mysql_fetch_assoc(pwg_query($query));
905                               
906                ResendMail2User($typemail,$user_id,stripslashes($data['username']),$data['mail_address'],false);                               
907        }
908        array_push(
909                $page['infos'],
910                l10n_dec(
911                        '%d_Reminder_Sent', '%d_Reminders_Sent',
912                count($collection)
913                )
914        );
915       
916                                $page['filtered_users'] = get_unvalid_user_list();
917                        }
918                }
919
920// +-----------------------------------------------------------------------+
921// |                                                                            Force validation                                                         |
922// +-----------------------------------------------------------------------+
923// +-----------------------------------------------------------------------+
924// |                            selected users                             |
925// +-----------------------------------------------------------------------+
926                if (isset($_POST['Force_Validation']))
927                {
928                $collection = array();
929
930                        switch ($_POST['target'])
931        {
932                case 'all' :
933        {
934                foreach($page['filtered_users'] as $local_user)
935                {
936                        array_push($collection, $local_user['id']);
937                }
938                break;
939                                }
940        case 'selection' :
941        {
942                if (isset($_POST['selection']))
943                {
944                        $collection = $_POST['selection'];
945                }
946                break;
947        }
948                        }
949
950        if (count($collection) == 0)
951        {
952                array_push($page['errors'], l10n('Select at least one user'));
953        }
954                }
955// +-----------------------------------------------------------------------+
956// |                                                                            Force validation                                                         |
957// +-----------------------------------------------------------------------+
958                if (isset($_POST['Force_Validation']) and count($collection) > 0)
959                {
960                        if (in_array($conf['guest_id'], $collection))
961                {
962                array_push($page['errors'], l10n('No_validation_for_Guest'));
963        }
964        if (($conf['guest_id'] != $conf['default_user_id']) and
965                in_array($conf['default_user_id'], $collection))
966        {
967                array_push($page['errors'], l10n('No_validation_for_default_user'));
968        }
969                if (in_array($conf['webmaster_id'], $collection))
970        {
971                array_push($page['errors'], l10n('No_validation_for_Webmaster'));
972        }
973        if (in_array($user['id'], $collection))
974        {
975                array_push($page['errors'], l10n('No_validation_for_your_account'));
976        }
977
978        if (count($page['errors']) == 0)
979        {
980                foreach ($collection as $user_id)
981        {
982                                  $query = "
983SELECT id, username, mail_address
984  FROM ".USERS_TABLE."
985WHERE id = '".$user_id."'
986;";
987                                       
988                                        $data = mysql_fetch_assoc(pwg_query($query));
989                               
990                ForceValidation($data['id']);                           
991        }
992        array_push(
993                $page['infos'],
994                l10n_dec(
995                        '%d_Validated_User', '%d_Validated_Users',
996                count($collection)
997                )
998        );
999
1000                                $page['filtered_users'] = get_unvalid_user_list();
1001                        }
1002                }
1003               
1004
1005// +-----------------------------------------------------------------------+
1006// |                              groups list                              |
1007// +-----------------------------------------------------------------------+
1008
1009                $groups[-1] = '------------';
1010
1011    $query = '
1012SELECT id, name
1013  FROM '.GROUPS_TABLE.'
1014ORDER BY name ASC
1015;';
1016
1017                $result = pwg_query($query);
1018         
1019    while ($row = mysql_fetch_assoc($result))
1020    {
1021      $groups[$row['id']] = $row['name'];
1022    }
1023
1024// +-----------------------------------------------------------------------+
1025// |                           Template Init                               |
1026// +-----------------------------------------------------------------------+
1027                $base_url = PHPWG_ROOT_PATH.'admin.php?page=user_list';
1028
1029    if (isset($_GET['start']) and is_numeric($_GET['start']))
1030    {
1031      $start = $_GET['start'];
1032    }
1033    else
1034    {
1035      $start = 0;
1036    }
1037
1038/* Hide radio-button if not allow to assign adviser */
1039                if ($conf['allow_adviser'])
1040        {
1041        $template->assign('adviser', true);
1042        }
1043
1044// +-----------------------------------------------------------------------+
1045// |                            navigation bar                             |
1046// +-----------------------------------------------------------------------+
1047
1048$url = PHPWG_ROOT_PATH.'admin.php'.get_query_string_diff(array('start'));
1049
1050$navbar = create_navigation_bar(
1051  $url,
1052  count($page['filtered_users']),
1053  $start,
1054  $conf['users_page']
1055  );
1056
1057$template->assign('NAVBAR', $navbar);
1058
1059// +-----------------------------------------------------------------------+
1060// |                               user list                               |
1061// +-----------------------------------------------------------------------+
1062
1063                $profile_url = get_root_url().'admin.php?page=profile&amp;user_id=';
1064                $perm_url = get_root_url().'admin.php?page=user_perm&amp;user_id=';
1065
1066    $visible_user_list = array();
1067    foreach ($page['filtered_users'] as $num => $local_user)
1068    {
1069/* simulate LIMIT $start, $conf['users_page'] */
1070                        if ($num < $start)
1071      {
1072        continue;
1073      }
1074      if ($num >= $start + $conf['users_page'])
1075      {
1076        break;
1077      }
1078
1079      $visible_user_list[] = $local_user;
1080                }
1081
1082                foreach ($visible_user_list as $local_user)
1083    {
1084      $groups_string = preg_replace(
1085        '/(\d+)/e',
1086        "\$groups['$1']",
1087        implode(
1088                ', ',
1089            $local_user['groups']
1090         )
1091                        );
1092
1093      $query = '
1094SELECT user_id, reminder
1095FROM '.USER_CONFIRM_MAIL_TABLE.'
1096WHERE user_id = '.$local_user['id'].'
1097;';
1098      $result = pwg_query($query);
1099     
1100      $row = mysql_fetch_assoc($result);
1101   
1102      if (isset($row['reminder']) and $row['reminder'] == 'true')
1103      {
1104        $reminder = l10n('Reminder_Sent_OK');
1105      }
1106      else if ((isset($row['reminder']) and $row['reminder'] == 'false') or !isset($row['reminder']))
1107      {
1108        $reminder = l10n('Reminder_Sent_NOK');
1109      }
1110
1111
1112                if (isset($_POST['pref_submit'])
1113                and isset($_POST['selection'])
1114        and in_array($local_user['id'], $_POST['selection']))
1115                {
1116                                $checked = 'checked="checked"';
1117                }
1118                        else
1119        {
1120                $checked = '';
1121        }
1122
1123        $properties = array();
1124        if ( $local_user['level'] != 0 )
1125                        {
1126                $properties[] = l10n( sprintf('Level %d', $local_user['level']) );
1127                        }
1128        $properties[] =
1129                (isset($local_user['enabled_high']) and ($local_user['enabled_high'] == 'true'))
1130                ? l10n('is_high_enabled') : l10n('is_high_disabled');
1131
1132                        $expiration = expiration($local_user['id']);
1133
1134                $template->append(
1135                'users',
1136        array(
1137                'ID'               => $local_user['id'],
1138                'CHECKED'          => $checked,
1139                'U_PROFILE'        => $profile_url.$local_user['id'],
1140                'U_PERM'           => $perm_url.$local_user['id'],
1141                'USERNAME'         => stripslashes($local_user['username'])
1142                                  .($local_user['id'] == $conf['guest_id']
1143                                  ? '<BR>['.l10n('is_the_guest').']' : '')
1144                                  .($local_user['id'] == $conf['default_user_id']
1145                                  ? '<BR>['.l10n('is_the_default').']' : ''),
1146                                  'STATUS' => l10n('user_status_'
1147                                  .$local_user['status']).(($local_user['adviser'] == 'true')
1148                                  ? '<BR>['.l10n('adviser').']' : ''),
1149                                        'EMAIL'            => get_email_address_as_display_text($local_user['email']),
1150                'GROUPS'           => $groups_string,
1151                'REGISTRATION'     => $local_user['registration_date'],
1152          'REMINDER'         => $reminder,   
1153                'EXPIRATION'       => $expiration,
1154                                )
1155                        );
1156                }
1157    /* Plugin version inserted */
1158    $template->assign(
1159      array(
1160        'UAM_VERSION'      => $version,
1161      )
1162    );
1163
1164// +-----------------------------------------------------------------------+
1165// |                             errors display                            |
1166// +-----------------------------------------------------------------------+
1167                if ( isset ($errors) and count($errors) != 0)
1168                {
1169                $template->assign('errors',array());
1170                        foreach ($errors as $error)
1171                {
1172                                array_push($page['errors'], $error);
1173                }
1174                } 
1175
1176// +-----------------------------------------------------------------------+
1177// |                           templates display                           |
1178// +-----------------------------------------------------------------------+
1179                $template->set_filename('plugin_admin_content', dirname(__FILE__) . '/usermanager.tpl');
1180    $template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');         
1181        }
1182  else
1183  {
1184                array_push($page['infos'], l10n('Err_UserManager_Settings'));
1185  }
1186  break;
1187
1188
1189// *************************************************************************
1190// +-----------------------------------------------------------------------+
1191// |                           Ghost Tracker page                          |
1192// +-----------------------------------------------------------------------+
1193// *************************************************************************
1194  case 'ghosttracker':
1195  $conf_nbc_UserAdvManager = isset($conf['nbc_UserAdvManager']) ? explode(";" , $conf['nbc_UserAdvManager']) : array();
1196       
1197  if (isset($conf_nbc_UserAdvManager[17]) and $conf_nbc_UserAdvManager[17]=='true')
1198  {
1199// +-----------------------------------------------------------------------+
1200// |                           initialization                              |
1201// +-----------------------------------------------------------------------+
1202
1203                if (!defined('PHPWG_ROOT_PATH'))
1204    {
1205        die('Hacking attempt!');
1206    }
1207         
1208    include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
1209
1210// +-----------------------------------------------------------------------+
1211// | Check Access and exit when user status is not ok                      |
1212// +-----------------------------------------------------------------------+
1213                check_status(ACCESS_ADMINISTRATOR);
1214
1215// +-----------------------------------------------------------------------+
1216// |                               user list                               |
1217// +-----------------------------------------------------------------------+
1218
1219                $page['filtered_users'] = get_ghost_user_list();
1220
1221// +-----------------------------------------------------------------------+
1222// |                            selected users                             |
1223// +-----------------------------------------------------------------------+
1224                if (isset($_POST['Del_Selected']))
1225                {
1226                $collection = array();
1227
1228                        switch ($_POST['target'])
1229        {
1230                case 'all' :
1231        {
1232                foreach($page['filtered_users'] as $local_user)
1233                {
1234                        array_push($collection, $local_user['id']);
1235                }
1236                                        break;
1237                                }
1238        case 'selection' :
1239        {
1240                if (isset($_POST['selection']))
1241                {
1242                        $collection = $_POST['selection'];
1243                }
1244                break;
1245        }
1246                        }
1247
1248                        if (count($collection) == 0)
1249        {
1250                array_push($page['errors'], l10n('Select at least one user'));
1251                }
1252                }
1253
1254// +-----------------------------------------------------------------------+
1255// |                             delete users                              |
1256// +-----------------------------------------------------------------------+
1257                if (isset($_POST['Del_Selected']) and count($collection) > 0)
1258        {
1259                if (in_array($conf['guest_id'], $collection))
1260                {
1261                array_push($page['errors'], l10n('Guest cannot be deleted'));
1262        }
1263        if (($conf['guest_id'] != $conf['default_user_id']) and
1264                in_array($conf['default_user_id'], $collection))
1265        {
1266                array_push($page['errors'], l10n('Default user cannot be deleted'));
1267        }
1268        if (in_array($conf['webmaster_id'], $collection))
1269        {
1270                array_push($page['errors'], l10n('Webmaster cannot be deleted'));
1271        }
1272        if (in_array($user['id'], $collection))
1273        {
1274                array_push($page['errors'], l10n('You cannot delete your account'));
1275        }
1276
1277                        if (count($page['errors']) == 0)
1278        {
1279                foreach ($collection as $user_id)
1280        {
1281                delete_user($user_id);
1282        }
1283                array_push(
1284                $page['infos'],
1285                l10n_dec(
1286                '%d user deleted', '%d users deleted',
1287                count($collection)
1288                )
1289        );
1290
1291        foreach ($page['filtered_users'] as $filter_key => $filter_user)
1292        {
1293                if (in_array($filter_user['id'], $collection))
1294                {
1295                        unset($page['filtered_users'][$filter_key]);
1296                }
1297                }
1298                        }
1299                }
1300
1301// +-----------------------------------------------------------------------+
1302// |                          Send ghost reminder                          |
1303// +-----------------------------------------------------------------------+
1304// +-----------------------------------------------------------------------+
1305// |                            selected users                             |
1306// +-----------------------------------------------------------------------+
1307                if (isset($_POST['Reminder_Email']))
1308                {
1309                $collection = array();
1310
1311                        switch ($_POST['target'])
1312        {
1313                case 'all' :
1314        {
1315                foreach($page['filtered_users'] as $local_user)
1316                {
1317                        array_push($collection, $local_user['id']);
1318                }
1319                break;
1320                                }
1321        case 'selection' :
1322        {
1323                if (isset($_POST['selection']))
1324                {
1325                        $collection = $_POST['selection'];
1326                }
1327                break;
1328        }
1329                        }
1330
1331        if (count($collection) == 0)
1332        {
1333                array_push($page['errors'], l10n('Select at least one user'));
1334        }
1335                }
1336// +-----------------------------------------------------------------------+
1337// |                         Send ghost reminder                           |
1338// +-----------------------------------------------------------------------+
1339                if (isset($_POST['Reminder_Email']) and count($collection) > 0)
1340                {
1341                        if (in_array($conf['guest_id'], $collection))
1342                {
1343                array_push($page['errors'], l10n('No_reminder_for_Guest'));
1344        }
1345        if (($conf['guest_id'] != $conf['default_user_id']) and
1346                in_array($conf['default_user_id'], $collection))
1347        {
1348                array_push($page['errors'], l10n('No_reminder_for_default_user'));
1349        }
1350                if (in_array($conf['webmaster_id'], $collection))
1351        {
1352                array_push($page['errors'], l10n('No_reminder_for_Webmaster'));
1353        }
1354        if (in_array($user['id'], $collection))
1355        {
1356                array_push($page['errors'], l10n('No_reminder_for_your_account'));
1357        }
1358
1359        if (count($page['errors']) == 0)
1360        {
1361                foreach ($collection as $user_id)
1362        {
1363                                  $query = "
1364SELECT id, username, mail_address
1365  FROM ".USERS_TABLE."
1366WHERE id = '".$user_id."'
1367;";
1368                                       
1369                                        $data = mysql_fetch_assoc(pwg_query($query));
1370                               
1371                ghostreminder($user_id,stripslashes($data['username']),$data['mail_address']);                         
1372        }
1373        array_push(
1374                $page['infos'],
1375                l10n_dec(
1376                        '%d_Reminder_Sent', '%d_Reminders_Sent',
1377                count($collection)
1378                )
1379        );
1380       
1381                                $page['filtered_users'] = get_ghost_user_list();
1382                        }
1383                }
1384   
1385    if (isset($_POST['GhostTracker_Init']))
1386    {
1387      /* Reset is only allowed for admins ! */
1388      if (is_admin() and !is_adviser())
1389      {
1390        $query1 = '
1391SELECT *
1392  FROM '.USER_LASTVISIT_TABLE.';';
1393
1394        $count = mysql_num_rows(pwg_query($query1));
1395
1396        if ($count <> 0)
1397        {
1398          $query = '
1399SELECT DISTINCT u.id,
1400                ui.status AS status
1401FROM '.USERS_TABLE.' AS u
1402  INNER JOIN '.USER_INFOS_TABLE.' AS ui
1403    ON u.id = ui.user_id
1404WHERE u.id NOT IN (SELECT user_id FROM '.USER_LASTVISIT_TABLE.')
1405  AND status != "webmaster"
1406  AND status != "guest"
1407  AND status != "admin"
1408ORDER BY u.id ASC
1409;';
1410
1411          $result = pwg_query($query);
1412         
1413          while ($row = mysql_fetch_assoc($result))
1414          {
1415            list($dbnow) = mysql_fetch_row(pwg_query('SELECT NOW();'));
1416           
1417            $query = "
1418INSERT INTO ".USER_LASTVISIT_TABLE." (user_id, lastvisit, reminder)
1419VALUES ('".$row['id']."','".$dbnow."','false')
1420;";
1421            pwg_query($query);
1422          }
1423        }
1424        else if ($count == 0)
1425        {
1426          $query = '
1427SELECT DISTINCT u.id,
1428                ui.status AS status
1429FROM '.USERS_TABLE.' AS u
1430  INNER JOIN '.USER_INFOS_TABLE.' AS ui
1431    ON u.id = ui.user_id
1432WHERE status != "webmaster"
1433  AND status != "guest"
1434  AND status != "admin"
1435ORDER BY u.id ASC
1436;';
1437
1438          $result = pwg_query($query);
1439         
1440          while($row = mysql_fetch_assoc($result))
1441          {
1442            list($dbnow) = mysql_fetch_row(pwg_query('SELECT NOW();'));
1443           
1444            $query = "
1445INSERT INTO ".USER_LASTVISIT_TABLE." (user_id, lastvisit, reminder)
1446VALUES ('".$row['id']."','".$dbnow."','false')
1447;";
1448            pwg_query($query);
1449          }
1450        }
1451       
1452        array_push($page['infos'], l10n('GhostTracker_Init_OK'));
1453      }
1454    }
1455
1456// +-----------------------------------------------------------------------+
1457// |                           Template Init                               |
1458// +-----------------------------------------------------------------------+
1459                $base_url = PHPWG_ROOT_PATH.'admin.php?page=user_list';
1460
1461    if (isset($_GET['start']) and is_numeric($_GET['start']))
1462    {
1463      $start = $_GET['start'];
1464    }
1465    else
1466    {
1467      $start = 0;
1468    }
1469
1470/* Hide radio-button if not allow to assign adviser */
1471                if ($conf['allow_adviser'])
1472    {
1473      $template->assign('adviser', true);
1474        }
1475
1476// +-----------------------------------------------------------------------+
1477// |                            navigation bar                             |
1478// +-----------------------------------------------------------------------+
1479
1480$url = PHPWG_ROOT_PATH.'admin.php'.get_query_string_diff(array('start'));
1481
1482$navbar = create_navigation_bar(
1483  $url,
1484  count($page['filtered_users']),
1485  $start,
1486  $conf['users_page']
1487  );
1488
1489$template->assign('NAVBAR', $navbar);
1490
1491// +-----------------------------------------------------------------------+
1492// |                               user list                               |
1493// +-----------------------------------------------------------------------+
1494
1495    $visible_user_list = array();
1496    foreach ($page['filtered_users'] as $num => $local_user)
1497    {
1498/* simulate LIMIT $start, $conf['users_page'] */
1499                        if ($num < $start)
1500      {
1501        continue;
1502      }
1503      if ($num >= $start + $conf['users_page'])
1504      {
1505        break;
1506      }
1507
1508      $visible_user_list[] = $local_user;
1509                }
1510       
1511                foreach ($visible_user_list as $local_user)
1512    {
1513      $reminder = '';
1514   
1515      if (isset($local_user['reminder']) and $local_user['reminder'] == 'true')
1516      {
1517        $reminder = l10n('Reminder_Sent_OK');
1518      }
1519      else if (isset($local_user['reminder']) and $local_user['reminder'] == 'false')
1520      {
1521        $reminder = l10n('Reminder_Sent_NOK');
1522      }
1523   
1524      if (isset($_POST['pref_submit']) and isset($_POST['selection']) and in_array($local_user['id'], $_POST['selection']))
1525                {
1526                                $checked = 'checked="checked"';
1527                }
1528                        else
1529        {
1530                $checked = '';
1531        }
1532      /* Plugin version inserted */
1533      $template->assign(
1534        array(
1535          'UAM_VERSION'      => $version,
1536        )
1537      );
1538
1539      $template->append(
1540          'users',
1541        array(
1542                'ID'          => $local_user['id'],
1543                'CHECKED'     => $checked,
1544                'USERNAME'    => stripslashes($local_user['username']),
1545                                        'EMAIL'       => get_email_address_as_display_text($local_user['email']),
1546          'LASTVISIT'   => $local_user['lastvisit'],
1547          'REMINDER'    => $reminder,
1548                                )
1549                        );
1550                }
1551
1552// +-----------------------------------------------------------------------+
1553// |                             errors display                            |
1554// +-----------------------------------------------------------------------+
1555                if ( isset ($errors) and count($errors) != 0)
1556                {
1557                $template->assign('errors',array());
1558                        foreach ($errors as $error)
1559                {
1560                                array_push($page['errors'], $error);
1561                }
1562                } 
1563
1564// +-----------------------------------------------------------------------+
1565// |                           templates display                           |
1566// +-----------------------------------------------------------------------+
1567                $template->set_filename('plugin_admin_content', dirname(__FILE__) . '/ghosttracker.tpl');
1568    $template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');         
1569        }
1570  else
1571  {
1572                array_push($page['infos'], l10n('Err_GhostTracker_Settings'));
1573  }
1574
1575  break;
1576}
1577?>
Note: See TracBrowser for help on using the repository browser.