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

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

[NBC_UserAdvManager]

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