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

Revision 17969, 62.8 KB checked in by flop25, 7 years ago (diff)

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
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.