source: extensions/UserAdvManager/branches/2.41/admin/UAM_admin.php @ 20592

Last change on this file since 20592 was 20592, checked in by Eric, 12 years ago

r20591 merged from trunk to branch 2.41

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