source: extensions/NBC_UserAdvManager/trunk/admin/UAM_admin.php @ 6801

Last change on this file since 6801 was 6801, checked in by Eric, 14 years ago

Bug 1821 fixed - Cleanup of old deprecated functions slags (Case sensitivity on logins)

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