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

Revision 14729, 61.4 KB checked in by Eric, 7 years ago (diff)

Bug 2623 fixed - Ability to customize email subjects (confirmation, information and ghostTracker email)

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