source: extensions/UserAdvManager/trunk/admin/UAM_admin.php @ 10976

Last change on this file since 10976 was 10976, checked in by Eric, 9 years ago

using conf_update_param() to update plugin parameters

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