source: extensions/NBC_UserAdvManager/trunk/admin/UAM_admin.php @ 8065

Last change on this file since 8065 was 8065, checked in by Eric, 13 years ago

Pre Branch 2.16 modifications in trunk:

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