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

Last change on this file since 6775 was 6775, checked in by Eric, 14 years ago
  • Bug 1727 partially fixed: New option to redirect users to profile page after their first login only.
  • Known problem:
  • The redirection doesn't work after registration and after confirmation page (if ConfirmMail is enabled)
  • The redirection applies to already registered users including admins, webmaster and generic status.
  • Language files updated
  • Upgrade of upgradedb.inc.php
  • Prepare to new version 2.15.4 encode
  • Property svn:eol-style set to LF
File size: 51.2 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 insensible a la casse */
355    if (isset($conf_UAM[2]) and $conf_UAM[2] == 'true')
356          {
357                        $query = "
358SELECT ".$conf['user_fields']['username']."
359  FROM ".USERS_TABLE." p1
360WHERE EXISTS(
361  SELECT ".$conf['user_fields']['username']."
362         FROM ".USERS_TABLE." p2
363        WHERE p1.".$conf['user_fields']['id']." <> p2.".$conf['user_fields']['id']."
364         AND LOWER(p1.".$conf['user_fields']['username'].") = LOWER(p2.".$conf['user_fields']['username'].")
365        )
366;";
367                         
368                  $result = pwg_query($query);
369                       
370                  while($row = pwg_db_fetch_assoc($result))
371                {
372                                $msg_error1 .= (($msg_error1 <> '') ? '<br/>' : '') . l10n('Err_audit_no_casse').stripslashes($row['username']);
373                        }
374                }
375
376                $msg_error2 = '';
377               
378/* Username without forbidden keys */
379    if ( isset($conf_UAM[6]) and $conf_UAM[6] == 'true' )
380          {
381                        $query = "
382SELECT ".$conf['user_fields']['username'].", ".$conf['user_fields']['email']."
383  FROM ".USERS_TABLE."
384;";
385                         
386                        $result = pwg_query($query);
387                       
388                        while($row = pwg_db_fetch_assoc($result))
389                        {
390                                if (!ValidateUsername(stripslashes($row['username'])))
391                                        $msg_error2 .= (($msg_error2 <> '') ? '<br/>' : '') . l10n('Err_audit_username_char').stripslashes($row['username']);
392                        }
393                }
394
395                $msg_error3 = '';
396               
397/* Email without forbidden domain */
398    if ( isset($conf_UAM[11]) and $conf_UAM[11] == 'true' )
399          {
400                        $query = "
401SELECT ".$conf['user_fields']['username'].", ".$conf['user_fields']['email']."
402  FROM ".USERS_TABLE."
403;";
404                         
405                  $result = pwg_query($query);
406                       
407                  while($row = pwg_db_fetch_assoc($result))
408                  {
409                          $conf_MailExclusion = preg_split("/[\s,]+/",$conf_UAM[12]);
410                          for ($i = 0 ; $i < count($conf_MailExclusion) ; $i++)
411                          {
412                                        $pattern = '/'.$conf_MailExclusion[$i].'/';
413                                  if (preg_match($pattern, $row['mail_address']))
414                                  {
415                                                $msg_error3 .=  (($msg_error3 <> '') ? '<br/>' : '') . l10n('Err_audit_email_forbidden').stripslashes($row['username']).' ('.$row['mail_address'].')';
416                                        }
417                                }
418                        }
419                }
420               
421    if ($msg_error1 <> '')
422                        $errors[] = $msg_error1.'<br/><br/>';
423               
424                if ($msg_error2 <> '')
425                        $errors[] = $msg_error2.'<br/><br/>';
426               
427                if ($msg_error3 <> '')
428                $errors[] = $msg_error3.'<br/><br/>';
429               
430                if ($msg_error1 <> '' or $msg_error2 <> '' or $msg_error3 <> '')
431                array_push($page['errors'], l10n('Err_audit_advise'));
432                else
433        array_push($page['infos'], l10n('UAM_audit_ok'));
434        }
435
436
437// +-----------------------------------------------------------------------+
438// |                             errors display                            |
439// +-----------------------------------------------------------------------+
440  if (isset ($errors) and count($errors) != 0)
441  {
442          $template->assign('errors',array());
443          foreach ($errors as $error)
444          {
445                  array_push($page['errors'], $error);
446                }
447        } 
448
449// +-----------------------------------------------------------------------+
450// |                           templates display                           |
451// +-----------------------------------------------------------------------+
452  $template->set_filename('plugin_admin_content', dirname(__FILE__) . '/template/global.tpl');
453  $template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');
454
455  break;
456
457
458// *************************************************************************
459// +-----------------------------------------------------------------------+
460// |                           Users list page                             |
461// +-----------------------------------------------------------------------+
462// *************************************************************************
463  case 'userlist':
464 
465  $conf_UAM = unserialize($conf['UserAdvManager']);
466 
467  if (isset($conf_UAM[19]) and $conf_UAM[19]=='true')
468  {
469// +-----------------------------------------------------------------------+
470// |                           initialization                              |
471// +-----------------------------------------------------------------------+
472
473                if (!defined('PHPWG_ROOT_PATH'))
474    {
475        die('Hacking attempt!');
476    }
477         
478    include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
479
480// +-----------------------------------------------------------------------+
481// | Check Access and exit when user status is not ok                      |
482// +-----------------------------------------------------------------------+
483                check_status(ACCESS_ADMINISTRATOR);
484
485
486// +-----------------------------------------------------------------------+
487// |                               user list                               |
488// +-----------------------------------------------------------------------+
489
490                $page['filtered_users'] = get_user_list();
491
492// +-----------------------------------------------------------------------+
493// |                           Template Init                               |
494// +-----------------------------------------------------------------------+
495                /*$base_url = PHPWG_ROOT_PATH.'admin.php?page=user_list';
496
497    if (isset($_GET['start']) and is_numeric($_GET['start']))
498    {
499      $start = $_GET['start'];
500    }
501    else
502    {
503      $start = 0;
504    }*/
505
506// +-----------------------------------------------------------------------+
507// |                            navigation bar                             |
508// +-----------------------------------------------------------------------+
509
510/*$url = PHPWG_ROOT_PATH.'admin.php'.get_query_string_diff(array('start'));
511
512$navbar = create_navigation_bar(
513  $url,
514  count($page['filtered_users']),
515  $start,
516  $conf['users_page']
517  );
518
519$template->assign('navbar', $navbar);*/
520
521// +-----------------------------------------------------------------------+
522// |                               user list                               |
523// +-----------------------------------------------------------------------+
524
525    $visible_user_list = array();
526    foreach ($page['filtered_users'] as $num => $local_user)
527    {
528// simulate LIMIT $start, $conf['users_page']
529                        /*if ($num < $start)
530      {
531        continue;
532      }
533      if ($num >= $start + $conf['users_page'])
534      {
535        break;
536      }*/
537
538      $visible_user_list[] = $local_user;
539                }
540
541                foreach ($visible_user_list as $local_user)
542    {
543      // dates formating and compare
544      $today = date("d-m-Y"); // Get today's date
545      list($day, $month, $year) = explode('-', $today); // explode date of today                                                 
546      $daytimestamp = mktime(0, 0, 0, $month, $day, $year);// Generate UNIX timestamp
547               
548      list($regdate, $regtime) = explode(' ', $local_user['lastvisit']); // Explode date and time from registration date
549      list($regyear, $regmonth, $regday) = explode('-', $regdate); // Explode date from registration date
550      $regtimestamp = mktime(0, 0, 0, $regmonth, $regday, $regyear);// Generate UNIX timestamp
551                       
552      $deltasecs = $daytimestamp - $regtimestamp;// Compare the 2 UNIX timestamps       
553      $deltadays = floor($deltasecs / 86400);// Convert result from seconds to days
554     
555      if (isset($conf_UAM[16]) and $conf_UAM[16]=='true' and $conf_UAM[17] <> '')
556      {
557        if ($deltadays <= ($conf_UAM[17]/2))
558        {
559          $display = 'green';
560        }
561       
562        if (($deltadays > ($conf_UAM[17]/2)) and ($deltadays < $conf_UAM[17]))
563        {
564          $display = 'orange';
565        }
566       
567        if ($deltadays >= $conf_UAM[17])
568        {
569          $display = 'red';
570        }
571      }
572      else $display = '';
573
574                $template->append(
575                'users',
576        array(
577                'ID'          => $local_user['id'],
578                'USERNAME'    => stripslashes($local_user['username']),
579                                        'EMAIL'       => get_email_address_as_display_text($local_user['email']),
580          'LASTVISIT'   => $local_user['lastvisit'],
581          'DAYS'        => $deltadays,
582          'DISPLAY'     => $display,
583                                )
584                        );
585                }
586    /* Plugin version inserted */
587    $template->assign(
588      array(
589        'UAM_VERSION'  => $version,
590        'UAM_PATH'     => UAM_PATH,
591      )
592    );   
593// +-----------------------------------------------------------------------+
594// |                             errors display                            |
595// +-----------------------------------------------------------------------+
596                if ( isset ($errors) and count($errors) != 0)
597                {
598                $template->assign('errors',array());
599                        foreach ($errors as $error)
600                {
601                                array_push($page['errors'], $error);
602                }
603                } 
604
605// +-----------------------------------------------------------------------+
606// |                           templates display                           |
607// +-----------------------------------------------------------------------+
608                $template->set_filename('plugin_admin_content', dirname(__FILE__) . '/template/userlist.tpl');
609    $template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');         
610  }
611  else
612  {
613                array_push($page['errors'], l10n('Err_Userlist_Settings'));
614  }
615  break;
616
617
618// *************************************************************************
619// +-----------------------------------------------------------------------+
620// |                           Users manager page                          |
621// +-----------------------------------------------------------------------+
622// *************************************************************************
623  case 'usermanager':
624
625  $conf_UAM = unserialize($conf['UserAdvManager']);
626
627  $conf_UAM_ConfirmMail = unserialize($conf['UserAdvManager_ConfirmMail']);
628       
629  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')))
630  {   
631// +-----------------------------------------------------------------------+
632// |                           initialization                              |
633// +-----------------------------------------------------------------------+
634
635                if (!defined('PHPWG_ROOT_PATH'))
636    {
637        die('Hacking attempt!');
638    }
639         
640    include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
641
642// +-----------------------------------------------------------------------+
643// | Check Access and exit when user status is not ok                      |
644// +-----------------------------------------------------------------------+
645                check_status(ACCESS_ADMINISTRATOR);
646
647// +-----------------------------------------------------------------------+
648// |                               user list                               |
649// +-----------------------------------------------------------------------+
650
651                $page['filtered_users'] = get_unvalid_user_list();
652
653// +-----------------------------------------------------------------------+
654// |                            selected users                             |
655// +-----------------------------------------------------------------------+
656                if (isset($_POST['Del_Selected']))
657                {
658                $collection = array();
659
660                        switch ($_POST['target'])
661        {
662                case 'all' :
663        {
664                foreach($page['filtered_users'] as $local_user)
665                {
666                        array_push($collection, $local_user['id']);
667                }
668                                        break;
669                                }
670        case 'selection' :
671        {
672                if (isset($_POST['selection']))
673                {
674                        $collection = $_POST['selection'];
675                }
676                break;
677        }
678                        }
679
680                        if (count($collection) == 0)
681        {
682                array_push($page['errors'], l10n('Select at least one user'));
683                }
684                }
685
686// +-----------------------------------------------------------------------+
687// |                             delete users                              |
688// +-----------------------------------------------------------------------+
689                if (isset($_POST['Del_Selected']) and count($collection) > 0)
690        {
691                if (in_array($conf['guest_id'], $collection))
692                {
693                array_push($page['errors'], l10n('Guest cannot be deleted'));
694        }
695        if (($conf['guest_id'] != $conf['default_user_id']) and
696                in_array($conf['default_user_id'], $collection))
697        {
698                array_push($page['errors'], l10n('Default user cannot be deleted'));
699        }
700        if (in_array($conf['webmaster_id'], $collection))
701        {
702                array_push($page['errors'], l10n('Webmaster cannot be deleted'));
703        }
704        if (in_array($user['id'], $collection))
705        {
706                array_push($page['errors'], l10n('You cannot delete your account'));
707        }
708
709                        if (count($page['errors']) == 0)
710        {
711                foreach ($collection as $user_id)
712        {
713                delete_user($user_id);
714        }
715                array_push(
716                $page['infos'],
717                l10n_dec(
718                '%d user deleted', '%d users deleted',
719                count($collection)
720                )
721        );
722
723        foreach ($page['filtered_users'] as $filter_key => $filter_user)
724        {
725                if (in_array($filter_user['id'], $collection))
726                {
727                        unset($page['filtered_users'][$filter_key]);
728                }
729                }
730                        }
731                }
732
733// +-----------------------------------------------------------------------+
734// |                 Resend new validation key to users                    |
735// +-----------------------------------------------------------------------+
736// +-----------------------------------------------------------------------+
737// |                            selected users                             |
738// +-----------------------------------------------------------------------+
739                if (isset($_POST['Mail_With_Key']))
740                {
741                $collection = array();
742
743                        switch ($_POST['target'])
744        {
745                case 'all' :
746        {
747                foreach($page['filtered_users'] as $local_user)
748                {
749                        array_push($collection, $local_user['id']);
750                }
751                break;
752                                }
753        case 'selection' :
754        {
755                if (isset($_POST['selection']))
756                {
757                        $collection = $_POST['selection'];
758                }
759                break;
760        }
761                        }
762
763        if (count($collection) == 0)
764        {
765                array_push($page['errors'], l10n('Select at least one user'));
766        }
767                }
768// +-----------------------------------------------------------------------+
769// |                 Resend new validation key to users                    |
770// +-----------------------------------------------------------------------+
771                if (isset($_POST['Mail_With_Key']) and count($collection) > 0)
772                {
773                        if (in_array($conf['guest_id'], $collection))
774                {
775                array_push($page['errors'], l10n('No_validation_for_Guest'));
776        }
777        if (($conf['guest_id'] != $conf['default_user_id']) and
778                in_array($conf['default_user_id'], $collection))
779        {
780                array_push($page['errors'], l10n('No_validation_for_default_user'));
781        }
782                if (in_array($conf['webmaster_id'], $collection))
783        {
784                array_push($page['errors'], l10n('No_validation_for_Webmaster'));
785        }
786        if (in_array($user['id'], $collection))
787        {
788                array_push($page['errors'], l10n('No_validation_for_your_account'));
789        }
790
791        if (count($page['errors']) == 0)
792        {
793                foreach ($collection as $user_id)
794        {       
795                $typemail = 1;
796                                  $query = "
797SELECT id, username, mail_address
798  FROM ".USERS_TABLE."
799WHERE id = '".$user_id."'
800;";
801                                        $data = pwg_db_fetch_assoc(pwg_query($query));
802                               
803                ResendMail2User($typemail,$user_id,stripslashes($data['username']),$data['mail_address'],true);
804        }
805        array_push(
806                $page['infos'],
807                l10n_dec(
808                        '%d_Mail_With_Key', '%d_Mails_With_Key',
809                count($collection)
810                )
811        );
812       
813                                $page['filtered_users'] = get_unvalid_user_list();
814                        }
815                }
816
817// +-----------------------------------------------------------------------+
818// |             Send reminder without new key to users                    |
819// +-----------------------------------------------------------------------+
820// +-----------------------------------------------------------------------+
821// |                            selected users                             |
822// +-----------------------------------------------------------------------+
823                if (isset($_POST['Mail_Without_Key']))
824                {
825                $collection = array();
826
827                        switch ($_POST['target'])
828        {
829                case 'all' :
830        {
831                foreach($page['filtered_users'] as $local_user)
832                {
833                        array_push($collection, $local_user['id']);
834                }
835                break;
836                                }
837        case 'selection' :
838        {
839                if (isset($_POST['selection']))
840                {
841                        $collection = $_POST['selection'];
842                }
843                break;
844        }
845                        }
846
847        if (count($collection) == 0)
848        {
849                array_push($page['errors'], l10n('Select at least one user'));
850        }
851                }
852// +-----------------------------------------------------------------------+
853// |             Send reminder without new key to users                    |
854// +-----------------------------------------------------------------------+
855                if (isset($_POST['Mail_Without_Key']) and count($collection) > 0)
856                {
857                        if (in_array($conf['guest_id'], $collection))
858                {
859                array_push($page['errors'], l10n('No_validation_for_Guest'));
860        }
861        if (($conf['guest_id'] != $conf['default_user_id']) and
862                in_array($conf['default_user_id'], $collection))
863        {
864                array_push($page['errors'], l10n('No_validation_for_default_user'));
865        }
866                if (in_array($conf['webmaster_id'], $collection))
867        {
868                array_push($page['errors'], l10n('No_validation_for_Webmaster'));
869        }
870        if (in_array($user['id'], $collection))
871        {
872                array_push($page['errors'], l10n('No_validation_for_your_account'));
873        }
874
875        if (count($page['errors']) == 0)
876        {
877                foreach ($collection as $user_id)
878        {
879                $typemail = 2;
880                                  $query = "
881SELECT id, username, mail_address
882  FROM ".USERS_TABLE."
883WHERE id = '".$user_id."'
884;";
885                                       
886                                        $data = pwg_db_fetch_assoc(pwg_query($query));
887                               
888                ResendMail2User($typemail,$user_id,stripslashes($data['username']),$data['mail_address'],false);                               
889        }
890        array_push(
891                $page['infos'],
892                l10n_dec(
893                        '%d_Reminder_Sent', '%d_Reminders_Sent',
894                count($collection)
895                )
896        );
897       
898                                $page['filtered_users'] = get_unvalid_user_list();
899                        }
900                }
901
902// +-----------------------------------------------------------------------+
903// |                                                                            Force validation                                                         |
904// +-----------------------------------------------------------------------+
905// +-----------------------------------------------------------------------+
906// |                            selected users                             |
907// +-----------------------------------------------------------------------+
908                if (isset($_POST['Force_Validation']))
909                {
910                $collection = array();
911
912                        switch ($_POST['target'])
913        {
914                case 'all' :
915        {
916                foreach($page['filtered_users'] as $local_user)
917                {
918                        array_push($collection, $local_user['id']);
919                }
920                break;
921                                }
922        case 'selection' :
923        {
924                if (isset($_POST['selection']))
925                {
926                        $collection = $_POST['selection'];
927                }
928                break;
929        }
930                        }
931
932        if (count($collection) == 0)
933        {
934                array_push($page['errors'], l10n('Select at least one user'));
935        }
936                }
937// +-----------------------------------------------------------------------+
938// |                                                                            Force validation                                                         |
939// +-----------------------------------------------------------------------+
940                if (isset($_POST['Force_Validation']) and count($collection) > 0)
941                {
942                        if (in_array($conf['guest_id'], $collection))
943                {
944                array_push($page['errors'], l10n('No_validation_for_Guest'));
945        }
946        if (($conf['guest_id'] != $conf['default_user_id']) and
947                in_array($conf['default_user_id'], $collection))
948        {
949                array_push($page['errors'], l10n('No_validation_for_default_user'));
950        }
951                if (in_array($conf['webmaster_id'], $collection))
952        {
953                array_push($page['errors'], l10n('No_validation_for_Webmaster'));
954        }
955        if (in_array($user['id'], $collection))
956        {
957                array_push($page['errors'], l10n('No_validation_for_your_account'));
958        }
959
960        if (count($page['errors']) == 0)
961        {
962                foreach ($collection as $user_id)
963        {
964                                  $query = "
965SELECT id, username, mail_address
966  FROM ".USERS_TABLE."
967WHERE id = '".$user_id."'
968;";
969                                       
970                                        $data = pwg_db_fetch_assoc(pwg_query($query));
971                               
972                ForceValidation($data['id']);                           
973        }
974        array_push(
975                $page['infos'],
976                l10n_dec(
977                        '%d_Validated_User', '%d_Validated_Users',
978                count($collection)
979                )
980        );
981
982                                $page['filtered_users'] = get_unvalid_user_list();
983                        }
984                }
985               
986
987// +-----------------------------------------------------------------------+
988// |                              groups list                              |
989// +-----------------------------------------------------------------------+
990
991                $groups[-1] = '------------';
992
993    $query = '
994SELECT id, name
995  FROM '.GROUPS_TABLE.'
996ORDER BY name ASC
997;';
998
999                $result = pwg_query($query);
1000         
1001    while ($row = pwg_db_fetch_assoc($result))
1002    {
1003      $groups[$row['id']] = $row['name'];
1004    }
1005
1006// +-----------------------------------------------------------------------+
1007// |                           Template Init                               |
1008// +-----------------------------------------------------------------------+
1009                /*$base_url = PHPWG_ROOT_PATH.'admin.php?page=user_list';
1010
1011    if (isset($_GET['start']) and is_numeric($_GET['start']))
1012    {
1013      $start = $_GET['start'];
1014    }
1015    else
1016    {
1017      $start = 0;
1018    }*/
1019
1020/* Hide radio-button if not allow to assign adviser */
1021                if ($conf['allow_adviser'])
1022        {
1023        $template->assign('adviser', true);
1024        }
1025
1026// +-----------------------------------------------------------------------+
1027// |                            navigation bar                             |
1028// +-----------------------------------------------------------------------+
1029
1030/*$url = PHPWG_ROOT_PATH.'admin.php'.get_query_string_diff(array('start'));
1031
1032$navbar = create_navigation_bar(
1033  $url,
1034  count($page['filtered_users']),
1035  $start,
1036  $conf['users_page']
1037  );
1038
1039$template->assign('navbar', $navbar);*/
1040
1041// +-----------------------------------------------------------------------+
1042// |                               user list                               |
1043// +-----------------------------------------------------------------------+
1044
1045                $profile_url = get_root_url().'admin.php?page=profile&amp;user_id=';
1046                $perm_url = get_root_url().'admin.php?page=user_perm&amp;user_id=';
1047
1048    $visible_user_list = array();
1049    foreach ($page['filtered_users'] as $num => $local_user)
1050    {
1051/* simulate LIMIT $start, $conf['users_page'] */
1052                        /*if ($num < $start)
1053      {
1054        continue;
1055      }
1056      if ($num >= $start + $conf['users_page'])
1057      {
1058        break;
1059      }*/
1060
1061      $visible_user_list[] = $local_user;
1062                }
1063
1064                foreach ($visible_user_list as $local_user)
1065    {
1066      $groups_string = preg_replace(
1067        '/(\d+)/e',
1068        "\$groups['$1']",
1069        implode(
1070                ', ',
1071            $local_user['groups']
1072         )
1073                        );
1074
1075      $query = '
1076SELECT user_id, reminder
1077FROM '.USER_CONFIRM_MAIL_TABLE.'
1078WHERE user_id = '.$local_user['id'].'
1079;';
1080      $result = pwg_query($query);
1081     
1082      $row = pwg_db_fetch_assoc($result);
1083   
1084      if (isset($row['reminder']) and $row['reminder'] == 'true')
1085      {
1086        $reminder = l10n('Reminder_Sent_OK');
1087      }
1088      else if ((isset($row['reminder']) and $row['reminder'] == 'false') or !isset($row['reminder']))
1089      {
1090        $reminder = l10n('Reminder_Sent_NOK');
1091      }
1092
1093
1094                if (isset($_POST['pref_submit'])
1095                and isset($_POST['selection'])
1096        and in_array($local_user['id'], $_POST['selection']))
1097                {
1098                                $checked = 'checked="checked"';
1099                }
1100                        else
1101        {
1102                $checked = '';
1103        }
1104
1105        $properties = array();
1106        if ( $local_user['level'] != 0 )
1107                        {
1108                $properties[] = l10n( sprintf('Level %d', $local_user['level']) );
1109                        }
1110        $properties[] =
1111                (isset($local_user['enabled_high']) and ($local_user['enabled_high'] == 'true'))
1112                ? l10n('is_high_enabled') : l10n('is_high_disabled');
1113
1114                        $expiration = expiration($local_user['id']);
1115     
1116                $template->append(
1117                'users',
1118        array(
1119                'ID'               => $local_user['id'],
1120                'CHECKED'          => $checked,
1121                'U_PROFILE'        => $profile_url.$local_user['id'],
1122                'U_PERM'           => $perm_url.$local_user['id'],
1123                'USERNAME'         => stripslashes($local_user['username'])
1124                                  .($local_user['id'] == $conf['guest_id']
1125                                  ? '<BR>['.l10n('is_the_guest').']' : '')
1126                                  .($local_user['id'] == $conf['default_user_id']
1127                                  ? '<BR>['.l10n('is_the_default').']' : ''),
1128                                  'STATUS' => l10n('user_status_'
1129                                  .$local_user['status']).(($local_user['adviser'] == 'true')
1130                                  ? '<BR>['.l10n('adviser').']' : ''),
1131                                        'EMAIL'            => get_email_address_as_display_text($local_user['email']),
1132                'GROUPS'           => $groups_string,
1133                'REGISTRATION'     => $local_user['registration_date'],
1134          'REMINDER'         => $reminder,   
1135                'EXPIRATION'       => $expiration,
1136                                )
1137                        );
1138                }   
1139
1140    // Check if validation of register is made by admin or visitor
1141    // If visitor, $Confirm_Local is used to mask useless buttons
1142    $Confirm_Local = "";
1143   
1144    if ($conf_UAM[1] == 'local')
1145    {
1146      $Confirm_Local = $conf_UAM[1];
1147    }
1148    else
1149    {
1150      $Confirm_Local = "";
1151    } 
1152   
1153    /* Plugin version inserted */
1154    $template->assign(
1155      array(
1156        'CONFIRM_LOCAL'=> $Confirm_Local,
1157        'UAM_VERSION'  => $version,
1158        'UAM_PATH'     => UAM_PATH,
1159      )
1160    );
1161
1162// +-----------------------------------------------------------------------+
1163// |                             errors display                            |
1164// +-----------------------------------------------------------------------+
1165                if ( isset ($errors) and count($errors) != 0)
1166                {
1167                $template->assign('errors',array());
1168                        foreach ($errors as $error)
1169                {
1170                                array_push($page['errors'], $error);
1171                }
1172                } 
1173
1174// +-----------------------------------------------------------------------+
1175// |                           templates display                           |
1176// +-----------------------------------------------------------------------+
1177                $template->set_filename('plugin_admin_content', dirname(__FILE__) . '/template/usermanager.tpl');
1178    $template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');         
1179        }
1180  else
1181  {
1182                array_push($page['errors'], l10n('Err_UserManager_Settings'));
1183  }
1184  break;
1185
1186
1187// *************************************************************************
1188// +-----------------------------------------------------------------------+
1189// |                           Ghost Tracker page                          |
1190// +-----------------------------------------------------------------------+
1191// *************************************************************************
1192  case 'ghosttracker':
1193
1194  $conf_UAM = unserialize($conf['UserAdvManager']);
1195       
1196  if (isset($conf_UAM[16]) and $conf_UAM[16]=='true')
1197  {
1198// +-----------------------------------------------------------------------+
1199// |                           initialization                              |
1200// +-----------------------------------------------------------------------+
1201
1202                if (!defined('PHPWG_ROOT_PATH'))
1203    {
1204        die('Hacking attempt!');
1205    }
1206         
1207    include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
1208
1209// +-----------------------------------------------------------------------+
1210// | Check Access and exit when user status is not ok                      |
1211// +-----------------------------------------------------------------------+
1212                check_status(ACCESS_ADMINISTRATOR);
1213
1214// +-----------------------------------------------------------------------+
1215// |                               user list                               |
1216// +-----------------------------------------------------------------------+
1217
1218                $page['filtered_users'] = get_ghost_user_list();
1219
1220// +-----------------------------------------------------------------------+
1221// |                            selected users                             |
1222// +-----------------------------------------------------------------------+
1223                if (isset($_POST['Del_Selected']))
1224                {
1225                $collection = array();
1226
1227                        switch ($_POST['target'])
1228        {
1229                case 'all' :
1230        {
1231                foreach($page['filtered_users'] as $local_user)
1232                {
1233                        array_push($collection, $local_user['id']);
1234                }
1235                                        break;
1236                                }
1237        case 'selection' :
1238        {
1239                if (isset($_POST['selection']))
1240                {
1241                        $collection = $_POST['selection'];
1242                }
1243                break;
1244        }
1245                        }
1246
1247                        if (count($collection) == 0)
1248        {
1249                array_push($page['errors'], l10n('Select at least one user'));
1250                }
1251                }
1252
1253// +-----------------------------------------------------------------------+
1254// |                             delete users                              |
1255// +-----------------------------------------------------------------------+
1256                if (isset($_POST['Del_Selected']) and count($collection) > 0)
1257        {
1258                if (in_array($conf['guest_id'], $collection))
1259                {
1260                array_push($page['errors'], l10n('Guest cannot be deleted'));
1261        }
1262        if (($conf['guest_id'] != $conf['default_user_id']) and
1263                in_array($conf['default_user_id'], $collection))
1264        {
1265                array_push($page['errors'], l10n('Default user cannot be deleted'));
1266        }
1267        if (in_array($conf['webmaster_id'], $collection))
1268        {
1269                array_push($page['errors'], l10n('Webmaster cannot be deleted'));
1270        }
1271        if (in_array($user['id'], $collection))
1272        {
1273                array_push($page['errors'], l10n('You cannot delete your account'));
1274        }
1275
1276                        if (count($page['errors']) == 0)
1277        {
1278                foreach ($collection as $user_id)
1279        {
1280                delete_user($user_id);
1281        }
1282                array_push(
1283                $page['infos'],
1284                l10n_dec(
1285                '%d user deleted', '%d users deleted',
1286                count($collection)
1287                )
1288        );
1289
1290        foreach ($page['filtered_users'] as $filter_key => $filter_user)
1291        {
1292                if (in_array($filter_user['id'], $collection))
1293                {
1294                        unset($page['filtered_users'][$filter_key]);
1295                }
1296                }
1297                        }
1298                }
1299
1300// +-----------------------------------------------------------------------+
1301// |                          Send ghost reminder                          |
1302// +-----------------------------------------------------------------------+
1303// +-----------------------------------------------------------------------+
1304// |                            selected users                             |
1305// +-----------------------------------------------------------------------+
1306                if (isset($_POST['Reminder_Email']))
1307                {
1308                $collection = array();
1309
1310                        switch ($_POST['target'])
1311        {
1312                case 'all' :
1313        {
1314                foreach($page['filtered_users'] as $local_user)
1315                {
1316                        array_push($collection, $local_user['id']);
1317                }
1318                break;
1319                                }
1320        case 'selection' :
1321        {
1322                if (isset($_POST['selection']))
1323                {
1324                        $collection = $_POST['selection'];
1325                }
1326                break;
1327        }
1328                        }
1329
1330        if (count($collection) == 0)
1331        {
1332                array_push($page['errors'], l10n('Select at least one user'));
1333        }
1334                }
1335// +-----------------------------------------------------------------------+
1336// |                         Send ghost reminder                           |
1337// +-----------------------------------------------------------------------+
1338                if (isset($_POST['Reminder_Email']) and count($collection) > 0)
1339                {
1340                        if (in_array($conf['guest_id'], $collection))
1341                {
1342                array_push($page['errors'], l10n('No_reminder_for_Guest'));
1343        }
1344        if (($conf['guest_id'] != $conf['default_user_id']) and
1345                in_array($conf['default_user_id'], $collection))
1346        {
1347                array_push($page['errors'], l10n('No_reminder_for_default_user'));
1348        }
1349                if (in_array($conf['webmaster_id'], $collection))
1350        {
1351                array_push($page['errors'], l10n('No_reminder_for_Webmaster'));
1352        }
1353        if (in_array($user['id'], $collection))
1354        {
1355                array_push($page['errors'], l10n('No_reminder_for_your_account'));
1356        }
1357
1358        if (count($page['errors']) == 0)
1359        {
1360                foreach ($collection as $user_id)
1361        {
1362                                  $query = "
1363SELECT id, username, mail_address
1364  FROM ".USERS_TABLE."
1365WHERE id = '".$user_id."'
1366;";
1367                                       
1368                                        $data = pwg_db_fetch_assoc(pwg_query($query));
1369                               
1370                ghostreminder($user_id,stripslashes($data['username']),$data['mail_address']);                         
1371        }
1372        array_push(
1373                $page['infos'],
1374                l10n_dec(
1375                        '%d_Reminder_Sent', '%d_Reminders_Sent',
1376                count($collection)
1377                )
1378        );
1379       
1380                                $page['filtered_users'] = get_ghost_user_list();
1381                        }
1382                }
1383   
1384    if (isset($_POST['GhostTracker_Init']))
1385    {
1386      /* Reset is only allowed for admins ! */
1387      if (is_admin() and !is_adviser())
1388      {
1389        $query1 = '
1390SELECT *
1391  FROM '.USER_LASTVISIT_TABLE.';';
1392
1393        $count = pwg_db_num_rows(pwg_query($query1));
1394
1395        if ($count <> 0)
1396        {
1397          $query = '
1398SELECT DISTINCT u.id,
1399                ui.status AS status
1400FROM '.USERS_TABLE.' AS u
1401  INNER JOIN '.USER_INFOS_TABLE.' AS ui
1402    ON u.id = ui.user_id
1403WHERE u.id NOT IN (SELECT user_id FROM '.USER_LASTVISIT_TABLE.')
1404  AND 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        else if ($count == 0)
1424        {
1425          $query = '
1426SELECT DISTINCT u.id,
1427                ui.status AS status
1428FROM '.USERS_TABLE.' AS u
1429  INNER JOIN '.USER_INFOS_TABLE.' AS ui
1430    ON u.id = ui.user_id
1431WHERE status != "webmaster"
1432  AND status != "guest"
1433  AND status != "admin"
1434ORDER BY u.id ASC
1435;';
1436
1437          $result = pwg_query($query);
1438         
1439          while($row = pwg_db_fetch_assoc($result))
1440          {
1441            list($dbnow) = pwg_db_fetch_row(pwg_query('SELECT NOW();'));
1442           
1443            $query = "
1444INSERT INTO ".USER_LASTVISIT_TABLE." (user_id, lastvisit, reminder)
1445VALUES ('".$row['id']."','".$dbnow."','false')
1446;";
1447            pwg_query($query);
1448          }
1449        }
1450       
1451        array_push($page['infos'], l10n('GhostTracker_Init_OK'));
1452      }
1453    }
1454
1455// +-----------------------------------------------------------------------+
1456// |                           Template Init                               |
1457// +-----------------------------------------------------------------------+
1458                /*$base_url = PHPWG_ROOT_PATH.'admin.php?page=user_list';
1459
1460    if (isset($_GET['start']) and is_numeric($_GET['start']))
1461    {
1462      $start = $_GET['start'];
1463    }
1464    else
1465    {
1466      $start = 0;
1467    }*/
1468
1469/* Hide radio-button if not allow to assign adviser */
1470                if ($conf['allow_adviser'])
1471    {
1472      $template->assign('adviser', true);
1473        }
1474
1475// +-----------------------------------------------------------------------+
1476// |                            navigation bar                             |
1477// +-----------------------------------------------------------------------+
1478
1479/*$url = PHPWG_ROOT_PATH.'admin.php'.get_query_string_diff(array('start'));
1480
1481$navbar = create_navigation_bar(
1482  $url,
1483  count($page['filtered_users']),
1484  $start,
1485  $conf['users_page']
1486  );
1487
1488$template->assign('navbar', $navbar);*/
1489
1490// +-----------------------------------------------------------------------+
1491// |                               user list                               |
1492// +-----------------------------------------------------------------------+
1493
1494    $visible_user_list = array();
1495    foreach ($page['filtered_users'] as $num => $local_user)
1496    {
1497/* simulate LIMIT $start, $conf['users_page'] */
1498                        /*if ($num < $start)
1499      {
1500        continue;
1501      }
1502      if ($num >= $start + $conf['users_page'])
1503      {
1504        break;
1505      }*/
1506
1507      $visible_user_list[] = $local_user;
1508                }
1509
1510/* Plugin version inserted */
1511      $template->assign(
1512        array(
1513          'UAM_VERSION'  => $version,
1514          'UAM_PATH'     => UAM_PATH,
1515        )
1516      );
1517
1518                foreach ($visible_user_list as $local_user)
1519    {
1520      $reminder = '';
1521   
1522      if (isset($local_user['reminder']) and $local_user['reminder'] == 'true')
1523      {
1524        $reminder = l10n('Reminder_Sent_OK');
1525      }
1526      else if (isset($local_user['reminder']) and $local_user['reminder'] == 'false')
1527      {
1528        $reminder = l10n('Reminder_Sent_NOK');
1529      }
1530   
1531      if (isset($_POST['pref_submit']) and isset($_POST['selection']) and in_array($local_user['id'], $_POST['selection']))
1532                {
1533                                $checked = 'checked="checked"';
1534                }
1535                        else
1536        {
1537                $checked = '';
1538        }
1539
1540      $template->append(
1541          'users',
1542        array(
1543                'ID'          => $local_user['id'],
1544                'CHECKED'     => $checked,
1545                'USERNAME'    => stripslashes($local_user['username']),
1546                                        'EMAIL'       => get_email_address_as_display_text($local_user['email']),
1547          'LASTVISIT'   => $local_user['lastvisit'],
1548          'REMINDER'    => $reminder,
1549                                )
1550                        );
1551                }
1552
1553// +-----------------------------------------------------------------------+
1554// |                             errors display                            |
1555// +-----------------------------------------------------------------------+
1556                if ( isset ($errors) and count($errors) != 0)
1557                {
1558                $template->assign('errors',array());
1559                        foreach ($errors as $error)
1560                {
1561                                array_push($page['errors'], $error);
1562                }
1563                } 
1564
1565// +-----------------------------------------------------------------------+
1566// |                           templates display                           |
1567// +-----------------------------------------------------------------------+
1568                $template->set_filename('plugin_admin_content', dirname(__FILE__) . '/template/ghosttracker.tpl');
1569    $template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');         
1570        }
1571  else
1572  {
1573                array_push($page['errors'], l10n('Err_GhostTracker_Settings'));
1574  }
1575
1576  break;
1577}
1578?>
Note: See TracBrowser for help on using the repository browser.