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

Last change on this file since 17969 was 17969, checked in by flop25, 12 years ago

No more need of rejected.php and tpl (je te laisse les supprimer, si tu valides ce changement)

  • Property svn:eol-style set to LF
File size: 62.8 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']:''),//7
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']:''),//26
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  //print_r ($conf_UAM) ;
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
355                FROM '.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'].'
675                FROM '.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'].'
695  FROM '.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 $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
1056  FROM '.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
1140  FROM '.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
1246  FROM '.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                if ( $local_user['level'] != 0 )
1313                                                {
1314                                $properties[] = l10n( sprintf('Level %d', $local_user['level']) );
1315                                                }
1316                $properties[] =
1317                                (isset($local_user['enabled_high']) and ($local_user['enabled_high'] == 'true'))
1318                                ? l10n('is_high_enabled') : l10n('is_high_disabled');
1319
1320                                                $expiration = expiration($local_user['id']);
1321
1322      // Template initialization
1323      // -----------------------
1324                        $template->append(
1325                        'users',
1326                        array(
1327                                                'ID'               => $local_user['id'],
1328                                'CHECKED'          => $checked,
1329                                'U_PROFILE'        => $profile_url.$local_user['id'],
1330                                'U_PERM'           => $perm_url.$local_user['id'],
1331                                'USERNAME'         => stripslashes($local_user['username'])
1332                                  .($local_user['id'] == $conf['guest_id']
1333                                  ? '<BR>['.l10n('is_the_guest').']' : '')
1334                                  .($local_user['id'] == $conf['default_user_id']
1335                                  ? '<BR>['.l10n('is_the_default').']' : ''),
1336                                  'STATUS' => l10n('user_status_'
1337                                  .$local_user['status']),
1338                                                                                                'EMAIL'            => get_email_address_as_display_text($local_user['email']),
1339                                'GROUPS'           => $groups_string,
1340                                'REGISTRATION'     => $local_user['registration_date'],
1341                        'REMINDER'         => $reminder,   
1342                                'EXPIRATION'       => $expiration,
1343                                                                                )
1344                                                );
1345                                }   
1346
1347    // Check if validation of register is made by admin or visitor
1348    // If visitor, $Confirm_Local is used to mask useless buttons
1349    // -----------------------------------------------------------
1350    $Confirm_Local = "";
1351   
1352    if ($conf_UAM[1] == 'local')
1353    {
1354      $Confirm_Local = $conf_UAM[1];
1355    }
1356    else
1357    {
1358      $Confirm_Local = "";
1359    } 
1360   
1361    // Plugin version inserted
1362    // -----------------------
1363    $template->assign(
1364                array(
1365        'CONFIRM_LOCAL'=> $Confirm_Local,
1366        'UAM_VERSION'  => $version,
1367        'UAM_PATH'     => UAM_PATH,
1368      )
1369    );
1370
1371// +-----------------------------------------------------------------------+
1372// |                             errors display                            |
1373// +-----------------------------------------------------------------------+
1374                                if ( isset ($errors) and count($errors) != 0)
1375                                {
1376                                $template->assign('errors',array());
1377                                                foreach ($errors as $error)
1378                                {
1379                                                                array_push($page['errors'], $error);
1380                                }
1381                                } 
1382
1383// +-----------------------------------------------------------------------+
1384// |                           templates display                           |
1385// +-----------------------------------------------------------------------+
1386                                $template->set_filename('plugin_admin_content', dirname(__FILE__) . '/template/usermanager.tpl');
1387                $template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');             
1388                }
1389  else
1390  {
1391                                array_push($page['errors'], l10n('UAM_Err_UserManager_Settings'));
1392  }
1393  break;
1394
1395
1396// *************************************************************************
1397// +-----------------------------------------------------------------------+
1398// |                           Ghost Tracker page                          |
1399// +-----------------------------------------------------------------------+
1400// *************************************************************************
1401                case 'ghosttracker':
1402
1403  $conf_UAM = unserialize($conf['UserAdvManager']);
1404       
1405  if (isset($conf_UAM[16]) and $conf_UAM[15]=='true')
1406  {
1407// +-----------------------------------------------------------------------+
1408// |                           initialization                              |
1409// +-----------------------------------------------------------------------+
1410
1411                                if (!defined('PHPWG_ROOT_PATH'))
1412                {
1413                                die('Hacking attempt!');
1414                }
1415         
1416                include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
1417
1418// +-----------------------------------------------------------------------+
1419// | Check Access and exit when user status is not ok                      |
1420// +-----------------------------------------------------------------------+
1421                                check_status(ACCESS_ADMINISTRATOR);
1422
1423// +-----------------------------------------------------------------------+
1424// |                               user list                               |
1425// +-----------------------------------------------------------------------+
1426
1427                                $page['filtered_users'] = get_ghost_user_list();
1428
1429// +-----------------------------------------------------------------------+
1430// |                            selected users                             |
1431// +-----------------------------------------------------------------------+
1432                                if (isset($_POST['Del_Selected']))
1433                                {
1434                                $collection = array();
1435
1436                                                switch ($_POST['target'])
1437                {
1438                                case 'all' :
1439                {
1440                                foreach($page['filtered_users'] as $local_user)
1441                                {
1442                                        array_push($collection, $local_user['id']);
1443                        }
1444                                                                break;
1445                                                                }
1446                case 'selection' :
1447                {
1448                                if (isset($_POST['selection']))
1449                        {
1450                                        $collection = $_POST['selection'];
1451                        }
1452                break;
1453                }
1454                                                }
1455
1456                                                if (count($collection) == 0)
1457                {
1458                                array_push($page['errors'], l10n('Select at least one user'));
1459                        }
1460                                }
1461
1462// +-----------------------------------------------------------------------+
1463// |                             delete users                              |
1464// +-----------------------------------------------------------------------+
1465                                if (isset($_POST['Del_Selected']) and count($collection) > 0)
1466                {
1467                                if (in_array($conf['guest_id'], $collection))
1468                        {
1469                                array_push($page['errors'], l10n('Guest cannot be deleted'));
1470                }
1471                if (($conf['guest_id'] != $conf['default_user_id']) and
1472                                in_array($conf['default_user_id'], $collection))
1473                {
1474                                array_push($page['errors'], l10n('Default user cannot be deleted'));
1475                }
1476                if (in_array($conf['webmaster_id'], $collection))
1477                {
1478                                array_push($page['errors'], l10n('Webmaster cannot be deleted'));
1479                }
1480                if (in_array($user['id'], $collection))
1481                {
1482                                array_push($page['errors'], l10n('You cannot delete your account'));
1483                }
1484
1485                                                if (count($page['errors']) == 0)
1486                {
1487                                foreach ($collection as $user_id)
1488                {
1489                                delete_user($user_id);
1490                }
1491                        array_push(
1492                                $page['infos'],
1493                        l10n_dec(
1494                        '%d user deleted', '%d users deleted',
1495                        count($collection)
1496                        )
1497                );
1498
1499                foreach ($page['filtered_users'] as $filter_key => $filter_user)
1500                {
1501                                if (in_array($filter_user['id'], $collection))
1502                        {
1503                                        unset($page['filtered_users'][$filter_key]);
1504                        }
1505                        }
1506                                                }
1507                                }
1508
1509// +-----------------------------------------------------------------------+
1510// |                          Send ghost reminder                          |
1511// +-----------------------------------------------------------------------+
1512// +-----------------------------------------------------------------------+
1513// |                            selected users                             |
1514// +-----------------------------------------------------------------------+
1515                                if (isset($_POST['Reminder_Email']))
1516                                {
1517                                $collection = array();
1518
1519                                                switch ($_POST['target'])
1520                {
1521                                case 'all' :
1522                {
1523                                foreach($page['filtered_users'] as $local_user)
1524                        {
1525                                        array_push($collection, $local_user['id']);
1526                        }
1527        break;
1528                                                                }
1529                case 'selection' :
1530                {
1531                                if (isset($_POST['selection']))
1532                        {
1533                                        $collection = $_POST['selection'];
1534                        }
1535                break;
1536                }
1537                                                }
1538
1539                if (count($collection) == 0)
1540                {
1541                                array_push($page['errors'], l10n('Select at least one user'));
1542                }
1543                                }
1544// +-----------------------------------------------------------------------+
1545// |                         Send ghost reminder                           |
1546// +-----------------------------------------------------------------------+
1547                                if (isset($_POST['Reminder_Email']) and count($collection) > 0)
1548                                {
1549                                                if (in_array($conf['guest_id'], $collection))
1550                        {
1551                                array_push($page['errors'], l10n('UAM_No_reminder_for_Guest'));
1552                        }
1553                if (($conf['guest_id'] != $conf['default_user_id']) and
1554                                in_array($conf['default_user_id'], $collection))
1555                {
1556                                array_push($page['errors'], l10n('UAM_No_reminder_for_default_user'));
1557                }
1558                        if (in_array($conf['webmaster_id'], $collection))
1559                {
1560                                array_push($page['errors'], l10n('UAM_No_reminder_for_Webmaster'));
1561                }
1562                if (in_array($user['id'], $collection))
1563                {
1564                                array_push($page['errors'], l10n('UAM_No_reminder_for_your_account'));
1565                        }
1566
1567                if (count($page['errors']) == 0)
1568                {
1569                                foreach ($collection as $user_id)
1570                {
1571                                                                $query = '
1572SELECT id, username, mail_address
1573  FROM '.USERS_TABLE.'
1574WHERE id = '.$user_id.'
1575;';
1576                                       
1577                                                                                $data = pwg_db_fetch_assoc(pwg_query($query));
1578                               
1579                                ghostreminder($user_id,stripslashes($data['username']),$data['mail_address']);                         
1580                }
1581                array_push(
1582                                $page['infos'],
1583                        l10n_dec(
1584                        'UAM_%d_Reminder_Sent', 'UAM_%d_Reminders_Sent',
1585                        count($collection)
1586                        )
1587                );
1588
1589                                                                $page['filtered_users'] = get_ghost_user_list();
1590                                                }
1591                                }
1592   
1593    if (isset($_POST['GhostTracker_Init']) and is_admin()) //Reset is only allowed for admins !
1594    {
1595                $query1 = '
1596SELECT *
1597  FROM '.USER_LASTVISIT_TABLE.';';
1598
1599      $count = pwg_db_num_rows(pwg_query($query1));
1600
1601      if ($count <> 0)
1602      {
1603                $query = '
1604SELECT DISTINCT u.id,
1605                ui.status AS status
1606FROM '.USERS_TABLE.' AS u
1607  INNER JOIN '.USER_INFOS_TABLE.' AS ui
1608    ON u.id = ui.user_id
1609WHERE u.id NOT IN (SELECT user_id FROM '.USER_LASTVISIT_TABLE.')
1610  AND status != "webmaster"
1611  AND status != "guest"
1612  AND status != "admin"
1613ORDER BY u.id ASC
1614;';
1615
1616        $result = pwg_query($query);
1617         
1618        while ($row = pwg_db_fetch_assoc($result))
1619        {
1620          list($dbnow) = pwg_db_fetch_row(pwg_query('SELECT NOW();'));
1621           
1622          $query = '
1623INSERT INTO '.USER_LASTVISIT_TABLE.'
1624                                (user_id, lastvisit, reminder)
1625VALUES ('.$row['id'].',"'.$dbnow.'","false")
1626;';
1627          pwg_query($query);
1628        }
1629      }
1630      else if ($count == 0)
1631      {
1632        $query = '
1633SELECT DISTINCT u.id,
1634                ui.status AS status
1635FROM '.USERS_TABLE.' AS u
1636  INNER JOIN '.USER_INFOS_TABLE.' AS ui
1637    ON u.id = ui.user_id
1638WHERE status != "webmaster"
1639  AND status != "guest"
1640  AND status != "admin"
1641ORDER BY u.id ASC
1642;';
1643
1644        $result = pwg_query($query);
1645         
1646        while($row = pwg_db_fetch_assoc($result))
1647        {
1648          list($dbnow) = pwg_db_fetch_row(pwg_query('SELECT NOW();'));
1649           
1650          $query = '
1651INSERT INTO '.USER_LASTVISIT_TABLE.'
1652    (user_id, lastvisit, reminder)
1653VALUES ('.$row['id'].',"'.$dbnow.'","false")
1654;';
1655          pwg_query($query);
1656        }
1657      }
1658       
1659      array_push($page['infos'], l10n('UAM_GhostTracker_Init_OK'));
1660    }
1661
1662// +-----------------------------------------------------------------------+
1663// |                               user list                               |
1664// +-----------------------------------------------------------------------+
1665
1666    $visible_user_list = array();
1667    foreach ($page['filtered_users'] as $num => $local_user)
1668    {
1669      $visible_user_list[] = $local_user;
1670                                }
1671   
1672                                foreach ($visible_user_list as $local_user)
1673        {
1674                $reminder = '';
1675   
1676      if (isset($local_user['reminder']) and $local_user['reminder'] == 'true')
1677      {
1678        $reminder = l10n('UAM_Reminder_Sent_OK');
1679      }
1680      else if (isset($local_user['reminder']) and $local_user['reminder'] == 'false')
1681      {
1682        $reminder = l10n('UAM_Reminder_Sent_NOK');
1683      }
1684   
1685      if (isset($_POST['pref_submit']) and isset($_POST['selection']) and in_array($local_user['id'], $_POST['selection']))
1686                                {
1687                                                                $checked = 'checked="checked"';
1688                                }
1689                                                else
1690                {
1691                                $checked = '';
1692                        }
1693
1694      // Template initialization
1695      // -----------------------
1696      $template->append(
1697          'users',
1698        array(
1699                        'ID'          => $local_user['id'],
1700                'CHECKED'     => $checked,
1701                'USERNAME'    => stripslashes($local_user['username']),
1702                                                                                'EMAIL'       => get_email_address_as_display_text($local_user['email']),
1703          'LASTVISIT'   => $local_user['lastvisit'],
1704          'REMINDER'    => $reminder,
1705                                                                )
1706                                                );
1707                                }
1708
1709    // Plugin version inserted
1710    // -----------------------
1711    $template->assign(
1712      array(
1713        'UAM_VERSION'  => $version,
1714        'UAM_PATH'     => UAM_PATH,
1715      )
1716    );
1717
1718// +-----------------------------------------------------------------------+
1719// |                             errors display                            |
1720// +-----------------------------------------------------------------------+
1721                                if ( isset ($errors) and count($errors) != 0)
1722                                {
1723                                $template->assign('errors',array());
1724                                                foreach ($errors as $error)
1725                                {
1726                                                                array_push($page['errors'], $error);
1727                                }
1728                                } 
1729
1730// +-----------------------------------------------------------------------+
1731// |                           templates display                           |
1732// +-----------------------------------------------------------------------+
1733                                $template->set_filename('plugin_admin_content', dirname(__FILE__) . '/template/ghosttracker.tpl');
1734    $template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');         
1735                }
1736  else
1737  {
1738                                array_push($page['errors'], l10n('UAM_Err_GhostTracker_Settings'));
1739  }
1740
1741  break;
1742}
1743?>
Note: See TracBrowser for help on using the repository browser.