Index: /extensions/UserAdvManager/tags/2.20.11/USR_del_account.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/USR_del_account.php	(revision 11019)
+++ /extensions/UserAdvManager/tags/2.20.11/USR_del_account.php	(revision 11019)
@@ -0,0 +1,60 @@
+<?php
+//----------------------------------------------------------- include
+define('PHPWG_ROOT_PATH','./../../');
+
+include_once( PHPWG_ROOT_PATH.'include/common.inc.php' );
+
+include_once (UAM_PATH.'include/constants.php');
+include_once (UAM_PATH.'include/functions.inc.php');
+
+$title= l10n('UAM_Deleted_Account_Redirection_Page');
+$page['body_id'] = 'theAboutPage';
+include(PHPWG_ROOT_PATH.'include/page_header.php');
+
+@include(PHPWG_ROOT_PATH.'template/'.$user['template'].
+  '/theme/'.$user['theme'].'/themeconf.inc.php');
+
+
+global $user, $lang, $conf, $errors;
+  
+
+$conf_UAM = unserialize($conf['UserAdvManager']);
+
+if (isset($conf_UAM[31]) and $conf_UAM[31] <> '')
+{
+  // Management of Extension flags ([mygallery], [myurl]) - [username] flag can't be used here
+  $patterns[] = '#\[mygallery\]#i';
+  $replacements[] = $conf['gallery_title'];
+  $patterns[] = '#\[myurl\]#i';
+  $replacements[] = $conf['gallery_url'];
+
+  if (function_exists('get_user_language_desc'))
+  {
+    $custom_text = get_user_language_desc(preg_replace($patterns, $replacements, $conf_UAM[31]));
+  }
+  else $custom_text = l10n(preg_replace($patterns, $replacements, $conf_UAM[31]));
+}
+    
+$template->assign(
+  array(
+    'GALLERY_URL'          => make_index_url(),
+    'CUSTOM_REDIR_MSG'     => $custom_text,
+  )
+);
+
+if (isset($lang['Theme: '.$user['theme']]))
+{
+  $template->assign(
+  	'THEME_ABOUT',l10n('Theme: '.$user['theme'])
+  );
+}
+
+$template->set_filenames(
+  array(
+  	'UAM_RedirPage'=>dirname(__FILE__).'/template/del_account.tpl',
+	)
+);
+
+$template->pparse('UAM_RedirPage');
+include(PHPWG_ROOT_PATH.'include/page_tail.php');
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/stuffs_module/main.inc.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/stuffs_module/main.inc.php	(revision 10682)
+++ /extensions/UserAdvManager/tags/2.20.11/stuffs_module/main.inc.php	(revision 10682)
@@ -0,0 +1,19 @@
+<?php
+
+if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
+
+$block['CONTENT'] = $datas;
+
+// Extended description
+if (function_exists('get_extended_desc'))
+{
+  $block['CONTENT'] = get_extended_desc($block['CONTENT']);
+}
+else
+{
+  $block['CONTENT'] = get_user_language_desc($block['CONTENT']);
+}
+
+$block['TEMPLATE'] = 'stuffs_personal.tpl';
+
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/stuffs_module/config.inc.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/stuffs_module/config.inc.php	(revision 10682)
+++ /extensions/UserAdvManager/tags/2.20.11/stuffs_module/config.inc.php	(revision 10682)
@@ -0,0 +1,19 @@
+<?php
+
+if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
+
+if (!isset($datas)) $datas = '';
+
+// Enregistrement de la configuration
+if (isset($_POST['submit']) and !is_adviser()) {
+  $datas = stripslashes($_POST['personal_content']);
+}
+
+// Parametrage du template
+$template->assign('cat_style', array());
+$template->assign(array('PERSONAL_CONTENT' => $datas));
+
+$template->set_filenames(array('module_options' => dirname(__FILE__) . '/config.tpl'));
+$template->assign_var_from_handle('MODULE_OPTIONS', 'module_options');
+
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/stuffs_module/config.tpl
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/stuffs_module/config.tpl	(revision 10682)
+++ /extensions/UserAdvManager/tags/2.20.11/stuffs_module/config.tpl	(revision 10682)
@@ -0,0 +1,7 @@
+<div style="text-align:center;">
+<br>
+<b>{'personal_content'|@translate}</b>
+<br>
+<textarea name="personal_content" id ="textarea" rows="10" cols="50" style="width:90%;">{$PERSONAL_CONTENT}</textarea>
+</div>
+<br>
Index: /extensions/UserAdvManager/tags/2.20.11/GT_del_account.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/GT_del_account.php	(revision 11019)
+++ /extensions/UserAdvManager/tags/2.20.11/GT_del_account.php	(revision 11019)
@@ -0,0 +1,60 @@
+<?php
+//----------------------------------------------------------- include
+define('PHPWG_ROOT_PATH','./../../');
+
+include_once( PHPWG_ROOT_PATH.'include/common.inc.php' );
+
+include_once (UAM_PATH.'include/constants.php');
+include_once (UAM_PATH.'include/functions.inc.php');
+
+$title= l10n('UAM_Deleted_Account_Redirection_Page');
+$page['body_id'] = 'theAboutPage';
+include(PHPWG_ROOT_PATH.'include/page_header.php');
+
+@include(PHPWG_ROOT_PATH.'template/'.$user['template'].
+  '/theme/'.$user['theme'].'/themeconf.inc.php');
+
+
+global $user, $lang, $conf, $errors;
+  
+
+$conf_UAM = unserialize($conf['UserAdvManager']);
+
+if (isset($conf_UAM[23]) and $conf_UAM[23] <> '')
+{
+  // Management of Extension flags ([mygallery], [myurl]) - [username] flag can't be used here
+  $patterns[] = '#\[mygallery\]#i';
+  $replacements[] = $conf['gallery_title'];
+  $patterns[] = '#\[myurl\]#i';
+  $replacements[] = $conf['gallery_url'];
+
+  if (function_exists('get_user_language_desc'))
+  {
+    $custom_text = get_user_language_desc(preg_replace($patterns, $replacements, $conf_UAM[23]));
+  }
+  else $custom_text = l10n(preg_replace($patterns, $replacements, $conf_UAM[23]));
+}
+    
+$template->assign(
+  array(
+    'GALLERY_URL'          => make_index_url(),
+    'CUSTOM_REDIR_MSG'     => $custom_text,
+  )
+);
+
+if (isset($lang['Theme: '.$user['theme']]))
+{
+  $template->assign(
+  	'THEME_ABOUT',l10n('Theme: '.$user['theme'])
+  );
+}
+
+$template->set_filenames(
+  array(
+  	'UAM_RedirPage'=>dirname(__FILE__).'/template/del_account.tpl',
+	)
+);
+
+$template->pparse('UAM_RedirPage');
+include(PHPWG_ROOT_PATH.'include/page_tail.php');
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/main.inc.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/main.inc.php	(revision 11319)
+++ /extensions/UserAdvManager/tags/2.20.11/main.inc.php	(revision 11319)
@@ -0,0 +1,64 @@
+<?php
+/*
+Plugin Name: UserAdvManager
+Version: 2.20.11
+Description: Renforcer la gestion des utilisateurs - Enforce users management
+Plugin URI: http://piwigo.org/ext/extension_view.php?eid=216
+Author: Nicco, Eric
+Author URI: http://gallery-nicco.no-ip.org, http://www.infernoweb.net
+*/
+
+/* History:  UAM_PATH.'Changelog.txt.php' */
+
+/*
+ ***** TODO List *****
+See project bugtracker: http://piwigo.org/bugs/my_view_page.php
+*/
+
+if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
+if (!defined('UAM_PATH')) define('UAM_PATH' , PHPWG_PLUGINS_PATH.basename(dirname(__FILE__)).'/');
+
+global $conf;
+
+include_once (UAM_PATH.'include/constants.php');
+include_once (UAM_PATH.'include/functions.inc.php');
+
+load_language('plugin.lang', UAM_PATH);
+$conf_UAM = unserialize($conf['UserAdvManager']);
+
+
+// Plugin administration panel
+add_event_handler('get_admin_plugin_menu_links', 'UAM_admin_menu');
+
+/* Lastvisit table feed for Ghost Tracker */
+add_event_handler('loc_begin_index', 'UAM_GhostTracker');
+
+// User creation
+add_event_handler('register_user', 'UAM_Adduser');
+
+// User deletion
+add_event_handler('delete_user', 'UAM_Deluser');
+
+// Check users registration
+add_event_handler('register_user_check', 'UAM_RegistrationCheck', EVENT_HANDLER_PRIORITY_NEUTRAL, 2);
+
+if (script_basename() == 'profile')
+{
+  add_event_handler('loc_begin_profile', 'UAM_Profile_Init');
+}
+
+// Redirection to profile page
+add_event_handler('login_success', 'UAM_LoginTasks');
+
+// Adding customized text to lost password email
+add_event_handler('render_lost_password_mail_content', 'UAM_lost_password_mail_content');
+
+// *** Important ! This is necessary to make email exclusion work in admin's users management panel ***
+add_event_handler('init', 'UAM_InitPage');
+
+// PWG_Stuffs module
+if ((isset($conf_UAM[33]) and $conf_UAM[33] == 'true'))
+{
+  add_event_handler('get_stuffs_modules', 'register_UAM_stuffs_module');
+}
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/include/constants.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/include/constants.php	(revision 4952)
+++ /extensions/UserAdvManager/tags/2.20.11/include/constants.php	(revision 4952)
@@ -0,0 +1,6 @@
+<?php
+global $prefixeTable;
+define('USER_CONFIRM_MAIL_TABLE', $prefixeTable.'user_confirm_mail');
+define('USER_LASTVISIT_TABLE', $prefixeTable.'user_lastvisit_check');
+define('UAM_OBSOLETE', 'obsolete.list');
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/include/functions.inc.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/include/functions.inc.php	(revision 11319)
+++ /extensions/UserAdvManager/tags/2.20.11/include/functions.inc.php	(revision 11319)
@@ -0,0 +1,2534 @@
+<?php
+include_once (UAM_PATH.'include/constants.php');
+load_language('plugin.lang', UAM_PATH);
+
+
+/**
+ * Triggered on get_admin_plugin_menu_links
+ * 
+ * Plugin's administration menu 
+ */
+function UAM_admin_menu($menu)
+{
+// +-----------------------------------------------------------------------+
+// |                      Getting plugin name                              |
+// +-----------------------------------------------------------------------+
+  $plugin =  PluginInfos(UAM_PATH);
+  $name = $plugin['name'];
+  
+  array_push($menu,
+    array(
+      'NAME' => $name,
+      'URL' => get_root_url().'admin.php?page=plugin-'.basename(UAM_PATH)
+    )
+  );
+
+  return $menu;
+}
+
+
+/**
+ * Triggered on loc_begin_index
+ * 
+ * Initiating GhostTracker
+ */
+function UAM_GhostTracker()
+{
+  global $conf, $user;
+
+  $conf_UAM = unserialize($conf['UserAdvManager']);
+
+  // Admins, Guests and Adult_Content users are not tracked for Ghost Tracker or Users Tracker
+  if (!is_admin() and !is_a_guest() and $user['username'] != "16" and $user['username'] != "18")
+  {
+    if ((isset($conf_UAM[15]) and $conf_UAM[15] == 'true') or (isset($conf_UAM[18]) and $conf_UAM[18] == 'true'))
+    {
+
+      $userid = get_userid($user['username']);
+     	  
+      // Looking for existing entry in last visit table
+      $query = '
+SELECT *
+FROM '.USER_LASTVISIT_TABLE.'
+WHERE user_id = '.$userid.'
+;';
+        
+      $count = pwg_db_num_rows(pwg_query($query));
+         
+      if ($count == 0)
+      {
+        // If not, data are inserted in table
+        $query = '
+INSERT INTO '.USER_LASTVISIT_TABLE.' (user_id, lastvisit, reminder)
+VALUES ('.$userid.', now(), "false")
+;';
+        pwg_query($query);
+      }
+      else if ($count > 0)
+      {
+        // If yes, data are updated in table
+        $query = '
+UPDATE '.USER_LASTVISIT_TABLE.'
+SET lastvisit = now(), reminder = "false"
+WHERE user_id = '.$userid.'
+LIMIT 1
+;';
+        pwg_query($query);
+      }
+    }
+  }
+}
+
+
+/**
+ * Triggered on register_user
+ * 
+ * Additional controls on user registration
+ */
+function UAM_Adduser($register_user)
+{
+  global $conf;
+
+  $conf_UAM = unserialize($conf['UserAdvManager']);
+
+  // Exclusion of Adult_Content users
+  if ($register_user['username'] != "16" and $register_user['username'] != "18")
+  {
+    if ((isset($conf_UAM[0]) and $conf_UAM[0] == 'true') and (isset($conf_UAM[1]) and $conf_UAM[1] == 'local'))
+    {
+      // This is to send an information email and set user to "waiting" group or status until admin validation
+      $passwd = (isset($_POST['password'])) ? $_POST['password'] : '';
+      SendMail2User(1, $register_user['id'], $register_user['username'], $passwd, $register_user['email'], false);
+      setgroup($register_user['id']);// Set to "waiting" group or status until admin validation
+    }
+    elseif ((isset($conf_UAM[0]) and $conf_UAM[0] == 'false') and (isset($conf_UAM[1]) and $conf_UAM[1] == 'local'))
+    {
+      // This is to set user to "waiting" group or status until admin validation
+      setgroup($register_user['id']);// Set to "waiting" group or status until admin validation
+    }
+    elseif ((isset($conf_UAM[0]) and $conf_UAM[0] == 'true') and (isset($conf_UAM[1]) and $conf_UAM[1] == 'false'))
+    {
+      // This is to send an information email without validation key
+      $passwd = (isset($_POST['password'])) ? $_POST['password'] : '';
+      SendMail2User(1, $register_user['id'], $register_user['username'], $passwd, $register_user['email'], false);
+    }
+    // Sending registration confirmation by email
+    elseif ((isset($conf_UAM[0]) and $conf_UAM[0] == 'true' or $conf_UAM[0] == 'false') and (isset($conf_UAM[1]) and $conf_UAM[1] == 'true'))
+    {
+      if (is_admin() and isset($conf_UAM[19]) and $conf_UAM[19] == 'true')
+      {
+        $passwd = (isset($_POST['password'])) ? $_POST['password'] : '';
+        SendMail2User(1, $register_user['id'], $register_user['username'], $passwd, $register_user['email'], true); 
+      }
+      elseif (is_admin() and isset($conf_UAM[19]) and $conf_UAM[19] == 'false')
+      {
+        $passwd = (isset($_POST['password'])) ? $_POST['password'] : '';
+        SendMail2User(1, $register_user['id'], $register_user['username'], $passwd, $register_user['email'], false);
+      }
+      elseif (!is_admin())
+      {
+        $passwd = (isset($_POST['password'])) ? $_POST['password'] : '';
+        SendMail2User(1, $register_user['id'], $register_user['username'], $passwd, $register_user['email'], true);
+      }
+    }
+  }
+}
+
+
+/**
+ * Triggered on delete_user
+ * 
+ * Database cleanup on user deletion
+ */
+function UAM_Deluser($user_id)
+{
+  // Cleanup for ConfirmMail table
+  DeleteConfirmMail($user_id);
+  // Cleanup for LastVisit table
+  DeleteLastVisit($user_id);
+  // Cleanup Redirection settings
+  DeleteRedir($user_id);
+}
+
+
+/**
+ * Triggered on register_user_check
+ * 
+ * Additional controls on user registration check
+ */
+function UAM_RegistrationCheck($errors, $user)
+{
+  global $conf;
+
+  // Exclusion of Adult_Content users
+  if ($user['username'] != "16" and $user['username'] != "18")
+  {
+    load_language('plugin.lang', UAM_PATH);
+
+    $PasswordCheck = 0;
+
+    $conf_UAM = unserialize($conf['UserAdvManager']);
+
+    // Password enforcement control
+    if (isset($conf_UAM[12]) and $conf_UAM[12] == 'true' and !empty($conf_UAM[13]))
+    {
+      if (!empty($user['password']) and !is_admin())
+      {
+        $PasswordCheck = testpassword($user['password']);
+  
+        if ($PasswordCheck < $conf_UAM[13])
+        {
+          $message = get_l10n_args('UAM_reg_err_login4_%s', $PasswordCheck);
+          $lang['reg_err_pass'] = l10n_args($message).$conf_UAM[13];
+          array_push($errors, $lang['reg_err_pass']);
+        }
+      }
+      else if (!empty($user['password']) and is_admin() and isset($conf_UAM[14]) and $conf_UAM[14] == 'true')
+      {
+        $PasswordCheck = testpassword($user['password']);
+  
+        if ($PasswordCheck < $conf_UAM[13])
+        {
+          $message = get_l10n_args('UAM_reg_err_login4_%s', $PasswordCheck);
+          $lang['reg_err_pass'] = l10n_args($message).$conf_UAM[13];
+          array_push($errors, $lang['reg_err_pass']);
+        }
+      }
+    }
+
+    // Username without forbidden keys
+    if (isset($conf_UAM[5]) and $conf_UAM[5] == 'true' and !empty($user['username']) and ValidateUsername($user['username']) and !is_admin())
+    {
+      $lang['reg_err_login1'] = l10n('UAM_reg_err_login2')."'".$conf_UAM[6]."'";
+      array_push($errors, $lang['reg_err_login1']);
+    }
+
+    // Email without forbidden domains
+    if (isset($conf_UAM[10]) and $conf_UAM[10] == 'true' and !empty($user['email']) and ValidateEmailProvider($user['email']) and !is_admin())
+    {
+      $lang['reg_err_login1'] = l10n('UAM_reg_err_login5')."'".$conf_UAM[11]."'";
+      array_push($errors, $lang['reg_err_login1']);
+    }
+    return $errors;
+  }
+}
+
+
+/**
+ * Triggered on loc_begin_profile
+ */
+function UAM_Profile_Init()
+{
+  global $conf, $user, $template;
+
+  $conf_UAM = unserialize($conf['UserAdvManager']);
+    
+  if ((isset($conf_UAM[20]) and $conf_UAM[20] == 'true'))
+  {
+    $user_idsOK = array();
+    if (!UAM_check_profile($user['id'], $user_idsOK))
+    {
+      $user_idsOK[] = $user['id'];
+
+      $query = "
+UPDATE ".CONFIG_TABLE."
+SET value = \"".implode(',', $user_idsOK)."\"
+WHERE param = 'UserAdvManager_Redir';";
+          
+      pwg_query($query);
+    }
+  }
+
+  if (isset($_POST['validate']) and !is_admin())
+  {
+    // Email without forbidden domains
+    if (isset($conf_UAM[10]) and $conf_UAM[10] == 'true' and !empty($_POST['mail_address']))
+    {
+      if (ValidateEmailProvider($_POST['mail_address']))
+      {
+        $template->append('errors', l10n('UAM_reg_err_login5')."'".$conf_UAM[11]."'");
+        unset($_POST['validate']);
+      }
+    }
+
+    $typemail = 3;
+
+    if (!empty($_POST['use_new_pwd']))
+    {
+      $typemail = 2;
+
+      // Password enforcement control
+      if (isset($conf_UAM[12]) and $conf_UAM[12] == 'true' and !empty($conf_UAM[13]))
+      {
+        $PasswordCheck = testpassword($_POST['use_new_pwd']);
+
+        if ($PasswordCheck < $conf_UAM[13])
+        {
+          $message = get_l10n_args('UAM_reg_err_login4_%s', $PasswordCheck);
+          $template->append('errors', l10n_args($message).$conf_UAM[13]);
+          unset($_POST['use_new_pwd']);
+          unset($_POST['validate']);
+        }
+      }
+    }
+
+    // Sending registration confirmation by email
+    if ((isset($conf_UAM[0]) and $conf_UAM[0] == 'true') or (isset($conf_UAM[1]) and $conf_UAM[1] == 'true') or (isset($conf_UAM[1]) and $conf_UAM[1] == 'local'))
+    {
+      $confirm_mail_need = false;
+
+      if (!empty($_POST['mail_address']))
+      {
+        $query = '
+SELECT '.$conf['user_fields']['email'].' AS email
+FROM '.USERS_TABLE.'
+WHERE '.$conf['user_fields']['id'].' = \''.$user['id'].'\'
+;';
+
+        list($current_email) = pwg_db_fetch_row(pwg_query($query));
+
+        // This is to send a new validation key
+        if ($_POST['mail_address'] != $current_email and (isset($conf_UAM[1]) and $conf_UAM[1] == 'true'))
+        
+          $confirm_mail_need = true;
+
+        // This is to set the user to "waiting" group or status until admin validation
+        if ($_POST['mail_address'] != $current_email and (isset($conf_UAM[1]) and $conf_UAM[1] == 'local'))
+        
+          setgroup($register_user['id']);// Set to "waiting" group or status until admin validation
+          $confirm_mail_need = false;
+      }
+        
+      if ((!empty($_POST['use_new_pwd']) and (isset($conf_UAM[0]) and $conf_UAM[0] == 'true') or $confirm_mail_need))
+      {
+        $query = '
+SELECT '.$conf['user_fields']['username'].'
+FROM '.USERS_TABLE.'
+WHERE '.$conf['user_fields']['id'].' = \''.$user['id'].'\'
+;';
+        
+        list($username) = pwg_db_fetch_row(pwg_query($query));
+        SendMail2User($typemail, $user['id'], $username, $_POST['use_new_pwd'], $_POST['mail_address'], $confirm_mail_need);
+      }
+    }
+  }
+}
+
+
+/**
+ * Triggered on login_success
+ * 
+ * Triggers scheduled tasks at login
+ * Redirects a visitor (except for admins, webmasters and generic statuses) to his profile.php page (Thx to LucMorizur)
+ * 
+ */
+function UAM_LoginTasks()
+{
+  global $conf, $user;
+  
+  $conf_UAM = unserialize($conf['UserAdvManager']);
+  
+  // Performing GhostTracker scheduled tasks
+  if ((isset($conf_UAM[21]) and $conf_UAM[21] == 'true'))
+  {
+    UAM_GT_ScheduledTasks();
+  }
+
+  // Performing User validation scheduled tasks
+  if ((isset($conf_UAM[30]) and $conf_UAM[30] == 'true'))
+  {
+    UAM_USR_ScheduledTasks();
+  }
+
+  if ((isset($conf_UAM[20]) and $conf_UAM[20] == 'true'))
+  {
+    // Performing redirection  
+    $query ='
+SELECT user_id, status
+FROM '.USER_INFOS_TABLE.'
+WHERE user_id = '.$user['id'].'
+;';
+    $data = pwg_db_fetch_assoc(pwg_query($query));
+
+    if ($data['status'] <> "admin" and $data['status'] <> "webmaster" and $data['status'] <> "generic")
+    {
+      $user_idsOK = array();
+      if (!UAM_check_profile($user['id'], $user_idsOK))
+        redirect(PHPWG_ROOT_PATH.'profile.php');
+    }
+  }
+}
+
+
+/**
+ * Adds a new module settable in PWG_Stuffs - Triggered on get_stuffs_modules in main.inc.php
+ * Useful to inform unvalidated user for their status
+ * 
+ */
+function register_UAM_stuffs_module($modules)
+{
+  array_push($modules, array(
+    'path' => UAM_PATH.'/stuffs_module',
+    'name' => l10n('UAM_Stuffs_Title'),
+    'description' => l10n('UAM_Stuffs_Desc'),
+    )
+  );
+  return $modules;
+}
+
+
+/**
+ * Triggered on UAM_LoginTasks()
+ * 
+ * Executes optional post-login tasks for Ghost users
+ * 
+ */
+function UAM_GT_ScheduledTasks()
+{
+  global $conf, $user, $page;
+
+  if (!defined('PHPWG_ROOT_PATH'))
+  {
+    die('Hacking attempt!');
+  }
+          
+  include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+  $conf_UAM = unserialize($conf['UserAdvManager']);
+  
+  $collection = array();
+  $reminder = false;
+  
+  $page['filtered_users'] = get_ghosts_autotasks();
+
+  foreach($page['filtered_users'] as $listed_user)
+  {
+    array_push($collection, $listed_user['id']);
+  }
+
+  // Ghost accounts auto group or status downgrade with or without information email sending and autodeletion if user already reminded
+  if ((isset($conf_UAM[21]) and $conf_UAM[21] == 'true') and ((isset($conf_UAM[25]) and $conf_UAM[25] <> -1) or (isset($conf_UAM[26]) and $conf_UAM[26] <> -1)))
+  {
+    if (count($collection) > 0)
+  	{
+      // Process if a non-admin nor webmaster user is logged
+      if (in_array($user['id'], $collection))
+    	{
+        // Check lastvisit reminder state
+        $query = '
+SELECT reminder
+FROM '.USER_LASTVISIT_TABLE.'
+WHERE user_id = '.$user['id'].';';
+
+        $result = pwg_db_fetch_assoc(pwg_query($query));
+
+        if (isset($result['reminder']) and $result['reminder'] == 'true')
+        {
+          $reminder = true;
+        }
+        else
+        {
+          $reminder = false;
+        }
+
+        // If user already reminded for ghost account
+        if ($reminder)
+        {
+          // delete account
+          delete_user($user['id']);
+
+          // Logged-in user cleanup, session destruction and redirected to custom page
+          invalidate_user_cache();
+          logout_user();
+          redirect(UAM_PATH.'GT_del_account.php');
+        }
+    	}
+      else // Process if an admin or webmaster user is logged
+      {
+        foreach ($collection as $user_id)
+        {
+          // Check lastvisit reminder state
+          $query = '
+SELECT reminder
+FROM '.USER_LASTVISIT_TABLE.'
+WHERE user_id = '.$user_id.';';
+
+          $result = pwg_db_fetch_assoc(pwg_query($query));
+
+          if (isset($result['reminder']) and $result['reminder'] == 'true')
+          {
+            $reminder = true;
+          }
+          else
+          {
+            $reminder = false;
+          }
+
+          // If never reminded before
+          if (!$reminder)
+          {
+            // Reset of lastvisit date 
+            list($dbnow) = pwg_db_fetch_row(pwg_query('SELECT NOW();'));
+
+		        $query = "
+UPDATE ".USER_LASTVISIT_TABLE."
+SET lastvisit='".$dbnow."'
+WHERE user_id = '".$user_id."'
+;";
+            pwg_query($query);
+
+          // Auto change group and / or status
+            // Delete user from all groups
+            $query = "
+DELETE FROM ".USER_GROUP_TABLE."
+WHERE user_id = '".$user_id."'
+  AND (
+    group_id = '".$conf_UAM[2]."'
+  OR 
+    group_id = '".$conf_UAM[3]."'
+  )
+;";
+            pwg_query($query);
+
+            // Change user status
+            if ($conf_UAM[26] <> -1)
+            {
+              $query = "
+UPDATE ".USER_INFOS_TABLE."
+SET status = '".$conf_UAM[26]."'
+WHERE user_id = '".$user_id."'
+;";
+              pwg_query($query);
+            }
+
+            // Change user group
+            if ($conf_UAM[25] <> -1)
+            {
+              $query = "
+INSERT INTO ".USER_GROUP_TABLE."
+  (user_id, group_id)
+VALUES
+  ('".$user_id."', '".$conf_UAM[25]."')
+;";
+              pwg_query($query);
+            }
+
+            // Auto send email notification on group / status downgrade
+            if (isset($conf_UAM[22]) and $conf_UAM[22] == 'true')
+            {
+              // Set reminder true
+              $query = "
+UPDATE ".USER_LASTVISIT_TABLE."
+SET reminder = 'true'
+WHERE user_id = '".$user_id."'
+;";
+              pwg_query($query);
+            
+              // Reset confirmed user status to unvalidated
+						  $query = '
+UPDATE '.USER_CONFIRM_MAIL_TABLE.'
+SET date_check = NULL
+WHERE user_id = "'.$user_id.'"
+;';
+						  pwg_query($query);
+
+              // Get users information for email notification
+						  $query = '
+SELECT id, username, mail_address
+FROM '.USERS_TABLE.'
+WHERE id = '.$user_id.'
+;';
+						  $data = pwg_db_fetch_assoc(pwg_query($query));
+            
+              demotion_mail($user_id, $data['username'], $data['mail_address']);
+            }
+          }
+          elseif ($reminder) // If user already reminded for ghost account
+          {
+            // delete account
+            delete_user($user_id);
+          }
+        }
+      }
+    }
+  }
+}
+
+
+/**
+ * Triggered on UAM_LoginTasks()
+ * 
+ * Executes optional post-login tasks for unvalidated users
+ * 
+ */
+function UAM_USR_ScheduledTasks()
+{
+  global $conf, $user, $page;
+
+  if (!defined('PHPWG_ROOT_PATH'))
+  {
+    die('Hacking attempt!');
+  }
+          
+  include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+  $conf_UAM = unserialize($conf['UserAdvManager']);
+  
+  $collection = array();
+  $reminder = false;
+  
+  $page['filtered_users'] = get_unvalid_user_autotasks();
+
+  foreach($page['filtered_users'] as $listed_user)
+  {
+    array_push($collection, $listed_user['id']);
+  }
+
+  // Unvalidated accounts auto email sending and autodeletion if user already reminded
+  if ((isset($conf_UAM[30]) and $conf_UAM[30] == 'true'))
+  {
+    if (count($collection) > 0)
+  	{
+      // Process if a non-admin nor webmaster user is logged
+      if (in_array($user['id'], $collection))
+    	{
+        // Check ConfirmMail reminder state
+        $query = '
+SELECT reminder
+FROM '.USER_CONFIRM_MAIL_TABLE.'
+WHERE user_id = '.$user['id'].';';
+
+        $result = pwg_db_fetch_assoc(pwg_query($query));
+
+        if (isset($result['reminder']) and $result['reminder'] == 'true')
+        {
+          $reminder = true;
+        }
+        else
+        {
+          $reminder = false;
+        }
+
+        // If never reminded before, send reminder and set reminder True
+        if (!$reminder and isset($conf_UAM[32]) and $conf_UAM[32] == 'true')
+        {
+     		  $typemail = 1;
+          
+          // Get current user informations
+          $query = "
+SELECT id, username, mail_address
+FROM ".USERS_TABLE."
+WHERE id = '".$user['id']."'
+;";
+          $data = pwg_db_fetch_assoc(pwg_query($query));
+
+          ResendMail2User($typemail,$user['id'],stripslashes($data['username']),$data['mail_address'],true);
+        }
+
+        // If already reminded before, delete user
+        if ($reminder)
+        {
+          // delete account
+          delete_user($user['id']);
+
+          // Logged-in user cleanup, session destruction and redirected to custom page
+          invalidate_user_cache();
+          logout_user();
+          redirect(UAM_PATH.'USR_del_account.php');
+        }
+    	}
+      else // Process if an admin or webmaster user is logged
+      {
+        foreach ($collection as $user_id)
+        {
+          // Check reminder state
+          $query = '
+SELECT reminder
+FROM '.USER_CONFIRM_MAIL_TABLE.'
+WHERE user_id = '.$user_id.';';
+
+          $result = pwg_db_fetch_assoc(pwg_query($query));
+
+          if (isset($result['reminder']) and $result['reminder'] == 'true')
+          {
+            $reminder = true;
+          }
+          else
+          {
+            $reminder = false;
+          }
+
+          // If never reminded before, send reminder and set reminder True
+          if (!$reminder and isset($conf_UAM[32]) and $conf_UAM[32] == 'true')
+          {
+            $typemail = 1;
+          
+            // Get current user informations
+            $query = "
+SELECT id, username, mail_address
+FROM ".USERS_TABLE."
+WHERE id = '".$user_id."'
+;";
+            $data = pwg_db_fetch_assoc(pwg_query($query));
+
+            ResendMail2User($typemail,$user_id,stripslashes($data['username']),$data['mail_address'],true);
+          }
+          elseif ($reminder) // If user already reminded for account validation
+          {
+            // delete account
+            delete_user($user_id);
+          }
+        }
+      }
+    }
+  }
+}
+
+
+/**
+ * Triggered on init
+ * 
+ * Check for forbidden email domains in admin's users management panel
+ */
+function UAM_InitPage()
+{
+  load_language('plugin.lang', UAM_PATH);
+  global $conf, $template, $page, $lang, $errors;
+
+  $conf_UAM = unserialize($conf['UserAdvManager']);
+
+// Admin user management
+  if (script_basename() == 'admin' and isset($_GET['page']) and $_GET['page'] == 'user_list')
+  {
+    if (isset($_POST['submit_add']))
+    {
+      // Email without forbidden domains
+      if (isset($conf_UAM[10]) and $conf_UAM[10] == 'true' and !empty($_POST['email']) and ValidateEmailProvider($_POST['email']))
+      {
+        $template->append('errors', l10n('UAM_reg_err_login5')."'".$conf_UAM[11]."'");
+        unset($_POST['submit_add']);
+      }
+    }
+  }
+}
+
+
+/**
+ * Triggered on render_lost_password_mail_content
+ * 
+ * Adds a customized text in lost password email content
+ * Added text is inserted before users login name and new password
+ *
+ * @param : Standard Piwigo email content
+ * 
+ * @return : Customized content added to standard content
+ * 
+ */
+function UAM_lost_password_mail_content($infos)
+{
+  global $conf;
+  
+  load_language('plugin.lang', UAM_PATH);
+  
+  $conf_UAM = unserialize($conf['UserAdvManager']);
+  
+  if (isset($conf_UAM[28]) and $conf_UAM[28] == 'true')
+  {
+    // Management of Extension flags ([mygallery], [myurl])
+    //$patterns[] = '#\[username\]#i';
+    //$replacements[] = stripslashes($row['username']);
+    $patterns[] = '#\[mygallery\]#i';
+    $replacements[] = $conf['gallery_title'];
+    $patterns[] = '#\[myurl\]#i';
+    $replacements[] = $conf['gallery_url'];
+    
+    $infos = preg_replace($patterns, $replacements, $conf_UAM[29])."\n"."\n".$infos;
+  }
+  return $infos;
+}
+
+
+/**
+ * Function called from main.inc.php to send validation email
+ *
+ * @param : Type of email, user id, username, email address, confirmation (optional)
+ * 
+ */
+function SendMail2User($typemail, $id, $username, $password, $email, $confirm)
+{
+  global $conf;
+
+  $conf_UAM = unserialize($conf['UserAdvManager']);
+  
+	include_once(PHPWG_ROOT_PATH.'include/functions_mail.inc.php');
+  
+	$infos1_perso = "";
+  $infos2_perso = "";
+
+// We have to get the user's language in database
+  $query ='
+SELECT user_id, language
+FROM '.USER_INFOS_TABLE.'
+WHERE user_id = '.$id.'
+;';
+  $data = pwg_db_fetch_assoc(pwg_query($query));
+
+// Check if user is already registered (profile changing) - If not (new registration), language is set to current gallery language
+  if (empty($data))
+  {
+// And switch gallery to this language before using personalized and multilangual contents
+    $language = pwg_get_session_var( 'lang_switch', $user['language'] );
+    switch_lang_to($language);
+  }
+  else
+  {
+// And switch gallery to this language before using personalized and multilangual contents
+    $language = $data['language']; // Usefull for debugging
+    switch_lang_to($data['language']);
+    load_language('plugin.lang', UAM_PATH);
+  }
+
+  switch($typemail)
+  {
+    case 1:
+      $subject = '['.$conf['gallery_title'].'] '.l10n_args(get_l10n_args('UAM_Add of %s', stripslashes($username)));
+      $password = $password <> '' ? $password : l10n('UAM_empty_pwd');
+      
+      if (isset($conf_UAM[8]) and $conf_UAM[8] <> '')
+      {
+        // Management of Extension flags ([username], [mygallery], [myurl])
+        $patterns[] = '#\[username\]#i';
+        $replacements[] = $username;
+        $patterns[] = '#\[mygallery\]#i';
+        $replacements[] = $conf['gallery_title'];
+        $patterns[] = '#\[myurl\]#i';
+        $replacements[] = $conf['gallery_url'];
+    
+        if (function_exists('get_user_language_desc'))
+        {
+          $infos1_perso = get_user_language_desc(preg_replace($patterns, $replacements, $conf_UAM[8]))."\n\n";
+        }
+        else $infos1_perso = l10n(preg_replace($patterns, $replacements, $conf_UAM[8]))."\n\n"; 
+      }
+      
+      break;
+      
+    case 2:
+      $subject = '['.$conf['gallery_title'].'] '.l10n_args(get_l10n_args('UAM_Update of %s', stripslashes($username)));
+      $password = $password <> '' ? $password : l10n('UAM_empty_pwd');
+
+      break;
+        
+    case 3:
+      $subject = '['.$conf['gallery_title'].'] '.l10n_args(get_l10n_args('UAM_Update of %s', stripslashes($username)));
+      $password = $password <> '' ? $password : l10n('UAM_no_update_pwd');
+
+      break;
+  }
+
+  if (isset($conf_UAM[0]) and $conf_UAM[0] == 'true')
+  {
+    if (isset($conf_UAM[34]) and $conf_UAM[34] == 'true') // Allow display of clear password in email
+    {
+      $infos1 = array(
+        get_l10n_args('UAM_infos_mail %s', stripslashes($username)),
+        get_l10n_args('UAM_User: %s', stripslashes($username)),
+        get_l10n_args('UAM_Password: %s', $password),
+        get_l10n_args('Email: %s', $email),
+        get_l10n_args('', ''),
+      );
+    }
+    else // Do not allow display of clear password in email
+    {
+      $infos1 = array(
+        get_l10n_args('UAM_infos_mail %s', stripslashes($username)),
+        get_l10n_args('UAM_User: %s', stripslashes($username)),
+        get_l10n_args('Email: %s', $email),
+        get_l10n_args('', ''),
+      );
+    }
+  }
+
+  if ( isset($conf_UAM[1]) and $conf_UAM[1] == 'true' and $confirm)
+  {
+    $infos2 = array
+    (
+      get_l10n_args('UAM_Link: %s', AddConfirmMail($id, $email)),
+      get_l10n_args('', ''),
+    );
+
+    if (isset($conf_UAM[9]) and $conf_UAM[9] <> '')
+    {
+      // Management of Extension flags ([username], [mygallery], [myurl], [Kdays])
+      $patterns[] = '#\[username\]#i';
+      $replacements[] = $username;
+      $patterns[] = '#\[mygallery\]#i';
+      $replacements[] = $conf['gallery_title'];
+      $patterns[] = '#\[myurl\]#i';
+      $replacements[] = $conf['gallery_url'];
+      
+      if (isset($conf_UAM_ConfirmMail[0]) and $conf_UAM_ConfirmMail[0] == 'true') // [Kdays] replacement only if related option is active
+      {
+        $patterns[] = '#\[Kdays\]#i';
+        $replacements[] = $conf_UAM_ConfirmMail[1];
+      }
+      
+      if (function_exists('get_user_language_desc'))
+      {
+        $infos2_perso = get_user_language_desc(preg_replace($patterns, $replacements, $conf_UAM[9]))."\n\n";
+      }
+      else $infos2_perso = l10n(preg_replace($patterns, $replacements, $conf_UAM[9]))."\n\n";
+    }
+  }
+
+// ********************************************************
+// **** Pending code since to find how to make it work ****
+// ********************************************************
+// Testing if FCK Editor is used. Then decoding htmlchars to avoid problems with pwg_mail()
+/*$areas = array();
+array_push( $areas,'UAM_MailInfo_Text','UAM_ConfirmMail_Text');
+
+if (function_exists('set_fckeditor_instance'))
+{
+  $fcke_config = unserialize($conf['FCKEditor']);
+  foreach($areas as $area)
+  {
+    if (isset($fcke_config['UAM_MailInfo_Text']) and $fcke_config['UAM_MailInfo_Text'] = true)
+    {
+      $infos1_perso = html_entity_decode($infos1_perso,ENT_QUOTES,UTF-8);
+    }
+    
+    if (isset($fcke_config['UAM_ConfirmMail_Text']) and $fcke_config['UAM_ConfirmMail_Text'] = true)
+    {
+      $infos2_perso = html_entity_decode($infos2_perso,ENT_QUOTES,UTF-8);
+    }
+  }
+}*/
+
+
+// Sending the email with subject and contents
+  pwg_mail($email, array(
+    'subject' => $subject,
+    'content' => (isset($infos1) ? $infos1_perso.l10n_args($infos1)."\n\n" : "").(isset($infos2) ? $infos2_perso.l10n_args($infos2)."\n\n" : "").get_absolute_root_url(),
+  ));
+
+// Switching back to default language
+switch_lang_back();
+}
+
+
+/**
+ * Function called from UAM_admin.php to resend validation email with or without new validation key
+ *
+ * @param : Type of email, user id, username, email address, confirmation (optional)
+ * 
+ */
+function ResendMail2User($typemail, $user_id, $username, $email, $confirm)
+{
+  global $conf;
+
+  $conf_UAM = unserialize($conf['UserAdvManager']);
+
+  $conf_UAM_ConfirmMail = unserialize($conf['UserAdvManager_ConfirmMail']);
+  
+	include_once(PHPWG_ROOT_PATH.'include/functions_mail.inc.php');
+  
+// We have to get the user's language in database
+  $query ='
+SELECT user_id, language
+FROM '.USER_INFOS_TABLE.'
+WHERE user_id = '.$user_id.'
+;';
+  $data = pwg_db_fetch_assoc(pwg_query($query));
+  $language = $data['language'];
+  
+// And switch gallery to this language before using personalized and multilangual contents
+  switch_lang_to($data['language']);
+   
+  load_language('plugin.lang', UAM_PATH);
+
+  switch($typemail)
+  {
+    case 1:
+      $subject = '['.$conf['gallery_title'].'] '.l10n_args(get_l10n_args('UAM_Reminder_with_key_of_%s', $username));
+      
+      if (isset($conf_UAM_ConfirmMail[2]) and $conf_UAM_ConfirmMail[2] <> '' and isset($conf_UAM_ConfirmMail[3]) and $conf_UAM_ConfirmMail[3] == 'true' and $confirm)
+      {
+        // Management of Extension flags ([username], [mygallery], [myurl], [Kdays])
+        $patterns[] = '#\[username\]#i';
+        $replacements[] = $username;
+        $patterns[] = '#\[mygallery\]#i';
+        $replacements[] = $conf['gallery_title'];
+        $patterns[] = '#\[myurl\]#i';
+        $replacements[] = $conf['gallery_url'];
+
+        if (isset($conf_UAM_ConfirmMail[0]) and $conf_UAM_ConfirmMail[0] == 'true') // [Kdays] replacement only if related option is active
+        {
+          $patterns[] = '#\[Kdays\]#i';
+          $replacements[] = $conf_UAM_ConfirmMail[1];
+        }
+
+        if (function_exists('get_user_language_desc'))
+        {
+          $infos1 = get_user_language_desc(preg_replace($patterns, $replacements, $conf_UAM_ConfirmMail[2]))."\n\n";
+        }
+				else $infos1 = l10n(preg_replace($patterns, $replacements, $conf_UAM_ConfirmMail[2]))."\n\n";
+
+        $infos2 = array
+        (
+          get_l10n_args('UAM_Link: %s', ResetConfirmMail($user_id)),
+          get_l10n_args('', ''),
+        );        
+			}
+
+// Set reminder true      
+      $query = "
+UPDATE ".USER_CONFIRM_MAIL_TABLE."
+SET reminder = 'true'
+WHERE user_id = '".$user_id."'
+;";
+      pwg_query($query);
+      
+		break;
+      
+    case 2:
+      $subject = '['.$conf['gallery_title'].'] '.l10n_args(get_l10n_args('UAM_Reminder_without_key_of_%s',$username));
+      
+      if (isset($conf_UAM_ConfirmMail[4]) and $conf_UAM_ConfirmMail[4] <> '' and isset($conf_UAM_ConfirmMail[3]) and $conf_UAM_ConfirmMail[3] == 'true' and !$confirm)
+      {
+        // Management of Extension flags ([username], [mygallery], [myurl], [Kdays])
+        $patterns[] = '#\[username\]#i';
+        $replacements[] = $username;
+        $patterns[] = '#\[mygallery\]#i';
+        $replacements[] = $conf['gallery_title'];
+        $patterns[] = '#\[myurl\]#i';
+        $replacements[] = $conf['gallery_url'];
+
+        if (isset($conf_UAM_ConfirmMail[0]) and $conf_UAM_ConfirmMail[0] == 'true') // [Kdays] replacement only if related option is active
+        {
+          $patterns[] = '#\[Kdays\]#i';
+          $replacements[] = $conf_UAM_ConfirmMail[1];
+        }
+        
+        if (function_exists('get_user_language_desc'))
+        {
+          $infos1 = get_user_language_desc(preg_replace($patterns, $replacements, $conf_UAM_ConfirmMail[4]))."\n\n";
+        }
+        else $infos1 = l10n(preg_replace($patterns, $replacements, $conf_UAM_ConfirmMail[4]))."\n\n";
+      }
+      
+// Set reminder true      
+      $query = "
+UPDATE ".USER_CONFIRM_MAIL_TABLE."
+SET reminder = 'true'
+WHERE user_id = '".$user_id."'
+;";
+      pwg_query($query);
+      
+    break;
+	}
+  
+  pwg_mail($email, array(
+    'subject' => $subject,
+    'content' => ($infos1."\n\n").(isset($infos2) ? l10n_args($infos2)."\n\n" : "").get_absolute_root_url(),
+  ));
+
+// Switching back to default language
+switch_lang_back();
+}
+
+
+/**
+ * Function called from UAM_admin.php to send a reminder mail for ghost users
+ *
+ * @param : User id, username, email address
+ * 
+ */
+function ghostreminder($user_id, $username, $email)
+{
+  global $conf;
+
+  $conf_UAM = unserialize($conf['UserAdvManager']);
+  
+	include_once(PHPWG_ROOT_PATH.'include/functions_mail.inc.php');
+  
+	$infos1_perso = "";
+
+// We have to get the user's language in database
+  $query ='
+SELECT user_id, language
+FROM '.USER_INFOS_TABLE.'
+WHERE user_id = '.$user_id.'
+;';
+  $data = pwg_db_fetch_assoc(pwg_query($query));
+  $language = $data['language'];
+
+// And switch gallery to this language before using personalized and multilangual contents
+  switch_lang_to($data['language']);
+   
+  load_language('plugin.lang', UAM_PATH);
+  
+  $subject = '['.$conf['gallery_title'].'] '.l10n_args(get_l10n_args('UAM_Ghost_reminder_of_%s', $username));     
+
+  if (isset($conf_UAM[17]) and $conf_UAM[17] <> '' and isset($conf_UAM[15]) and $conf_UAM[15] == 'true')
+  {
+    // Management of Extension flags ([username], [mygallery], [myurl], [days])
+    $patterns[] = '#\[username\]#i';
+    $replacements[] = $username;
+    $patterns[] = '#\[mygallery\]#i';
+    $replacements[] = $conf['gallery_title'];
+    $patterns[] = '#\[myurl\]#i';
+    $replacements[] = $conf['gallery_url'];
+    $patterns[] = '#\[days\]#i';
+    $replacements[] = $conf_UAM[16];
+
+    if (function_exists('get_user_language_desc'))
+    {
+      $infos1 = get_user_language_desc(preg_replace($patterns, $replacements, $conf_UAM[17]))."\n\n";
+    }
+    else
+    {
+      $infos1 = l10n(preg_replace($patterns, $replacements, $conf_UAM[17]))."\n\n";
+    }
+
+    resetlastvisit($user_id);
+  }
+
+  pwg_mail($email, array(
+    'subject' => $subject,
+    'content' => $infos1.get_absolute_root_url(),
+  ));
+
+// Switching back to default language
+switch_lang_back();
+}
+
+
+/**
+ * Function called from functions.inc.php to send notification email when user have been downgraded
+ *
+ * @param : user id, username, email address
+ * 
+ */
+function demotion_mail($id, $username, $email)
+{
+  global $conf;
+
+  $conf_UAM = unserialize($conf['UserAdvManager']);
+  
+	include_once(PHPWG_ROOT_PATH.'include/functions_mail.inc.php');
+  
+	$custom_txt = "";
+
+// We have to get the user's language in database
+  $query ='
+SELECT user_id, language
+FROM '.USER_INFOS_TABLE.'
+WHERE user_id = '.$id.'
+;';
+  $data = pwg_db_fetch_assoc(pwg_query($query));
+
+// Check if user is already registered (profile changing) - If not (new registration), language is set to current gallery language
+  if (empty($data))
+  {
+// And switch gallery to this language before using personalized and multilangual contents
+    $language = pwg_get_session_var( 'lang_switch', $user['language'] );
+    switch_lang_to($language);
+  }
+  else
+  {
+// And switch gallery to this language before using personalized and multilangual contents
+    $language = $data['language']; // Usefull for debugging
+    switch_lang_to($data['language']);
+    load_language('plugin.lang', UAM_PATH);
+  }
+
+  $subject = '['.$conf['gallery_title'].'] '.l10n_args(get_l10n_args('UAM_Demotion of %s', stripslashes($username)));
+      
+  if (isset($conf_UAM[24]) and $conf_UAM[24] <> '')
+  {
+    // Management of Extension flags ([username], [mygallery], [myurl])
+    $patterns[] = '#\[username\]#i';
+    $replacements[] = stripslashes($username);
+    $patterns[] = '#\[mygallery\]#i';
+    $replacements[] = $conf['gallery_title'];
+    $patterns[] = '#\[myurl\]#i';
+    $replacements[] = $conf['gallery_url'];
+
+    if (function_exists('get_user_language_desc'))
+    {
+      $custom_txt = get_user_language_desc(preg_replace($patterns, $replacements, $conf_UAM[24]))."\n\n";
+    }
+    else $custom_txt = l10n(preg_replace($patterns, $replacements, $conf_UAM[24]))."\n\n"; 
+  }
+
+  $infos1 = array(
+    get_l10n_args('UAM_User: %s', stripslashes($username)),
+    get_l10n_args('Email: %s', $email),
+    get_l10n_args('', ''),
+  );
+
+  $infos2 = array
+  (
+    get_l10n_args('UAM_Link: %s', ResetConfirmMail($id)),
+    get_l10n_args('', ''),
+  ); 
+
+  resetlastvisit($id);
+
+// Sending the email with subject and contents
+  pwg_mail($email, array(
+    'subject' => $subject,
+    'content' => ($custom_txt.l10n_args($infos1)."\n\n".l10n_args($infos2)."\n\n").get_absolute_root_url(),
+  ));
+
+// Switching back to default language
+switch_lang_back();
+}
+
+
+/**
+ * Function called from UAM_admin.php to send notification email when user registration have been manually validated by admin
+ *
+ * @param : user id
+ * 
+ */
+function validation_mail($id)
+{
+  global $conf;
+
+  $conf_UAM = unserialize($conf['UserAdvManager']);
+  
+	include_once(PHPWG_ROOT_PATH.'include/functions_mail.inc.php');
+  
+	$custom_txt = "";
+
+// We have to get the user's language in database
+  $query ='
+SELECT user_id, language
+FROM '.USER_INFOS_TABLE.'
+WHERE user_id = '.$id.'
+;';
+  $data = pwg_db_fetch_assoc(pwg_query($query));
+
+// Check if user is already registered (profile changing) - If not (new registration), language is set to current gallery language
+  if (empty($data))
+  {
+// And switch gallery to this language before using personalized and multilangual contents
+    $language = pwg_get_session_var( 'lang_switch', $user['language'] );
+    switch_lang_to($language);
+  }
+  else
+  {
+// And switch gallery to this language before using personalized and multilangual contents
+    $language = $data['language']; // Usefull for debugging
+    switch_lang_to($data['language']);
+    load_language('plugin.lang', UAM_PATH);
+  }
+
+// Retreive users email and user name from id
+  $query ='
+SELECT id, username, mail_address
+FROM '.USERS_TABLE.'
+WHERE id = '.$id.'
+;';
+  $result = pwg_db_fetch_assoc(pwg_query($query));
+
+  $subject = '['.$conf['gallery_title'].'] '.l10n_args(get_l10n_args('UAM_Validation of %s', stripslashes($result['username'])));
+      
+  if (isset($conf_UAM[27]) and $conf_UAM[27] <> '')
+  {
+    // Management of Extension flags ([username], [mygallery], [myurl])
+    $patterns[] = '#\[username\]#i';
+    $replacements[] = $result['username'];
+    $patterns[] = '#\[mygallery\]#i';
+    $replacements[] = $conf['gallery_title'];
+    $patterns[] = '#\[myurl\]#i';
+    $replacements[] = $conf['gallery_url'];
+
+    if (function_exists('get_user_language_desc'))
+    {
+      $custom_txt = get_user_language_desc(preg_replace($patterns, $replacements, $conf_UAM[27]))."\n\n";
+    }
+    else $custom_txt = l10n(preg_replace($patterns, $replacements, $conf_UAM[27]))."\n\n"; 
+  }
+
+  $infos = array(
+    get_l10n_args('UAM_User: %s', stripslashes($result['username'])),
+    get_l10n_args('Email: %s', $result['mail_address']),
+    get_l10n_args('', ''),
+  );
+
+// Sending the email with subject and contents
+  pwg_mail($result['mail_address'], array(
+    'subject' => $subject,
+    'content' => (l10n_args($infos)."\n\n".$custom_txt),
+  ));
+
+// Switching back to default language
+switch_lang_back();
+}
+
+
+/**
+ * Function called from functions AddConfirmMail and ResetConfirmMail for validation key generation
+ * 
+ * @return : validation key
+ * 
+ */
+function FindAvailableConfirmMailID()
+{
+  while (true)
+  {
+    $id = generate_key(16);
+    $query = "
+SELECT COUNT(*)
+  FROM ".USER_CONFIRM_MAIL_TABLE."
+WHERE id = '".$id."'
+;";
+    list($count) = pwg_db_fetch_row(pwg_query($query));
+
+    if ($count == 0)
+      return $id;
+  }
+}
+
+
+/**
+ * Function called from functions SendMail2User to process unvalidated users and generate validation key link
+ *
+ * @param : User id, email address
+ * 
+ * @return : Build validation key in URL
+ * 
+ */
+function AddConfirmMail($user_id, $email)
+{
+  global $conf;
+
+  $conf_UAM = unserialize($conf['UserAdvManager']);
+  $Confirm_Mail_ID = FindAvailableConfirmMailID();
+
+  list($dbnow) = pwg_db_fetch_row(pwg_query('SELECT NOW();'));
+  
+  if (isset($Confirm_Mail_ID))
+  {
+    $query = "
+SELECT status
+  FROM ".USER_INFOS_TABLE."
+WHERE user_id = '".$user_id."'
+;";
+    list($status) = pwg_db_fetch_row(pwg_query($query));
+    
+    $query = "
+INSERT INTO ".USER_CONFIRM_MAIL_TABLE."
+  (id, user_id, mail_address, status, date_check)
+VALUES
+  ('".$Confirm_Mail_ID."', '".$user_id."', '".$email."', '".$status."', null)
+;";
+    pwg_query($query);
+
+    // Delete user from all groups
+    $query = "
+DELETE FROM ".USER_GROUP_TABLE."
+WHERE user_id = '".$user_id."'
+  AND (
+    group_id = '".$conf_UAM[2]."'
+  OR 
+    group_id = '".$conf_UAM[3]."'
+  )
+;";
+    pwg_query($query);
+
+    // Set user unvalidated status
+    if (!is_admin() and $conf_UAM[7] <> -1)
+    {
+      $query = "
+UPDATE ".USER_INFOS_TABLE."
+SET status = '".$conf_UAM[7]."'
+WHERE user_id = '".$user_id."'
+;";
+      pwg_query($query);
+    }
+
+    // Set user unvalidated group
+    if (!is_admin() and $conf_UAM[2] <> -1)
+    {
+      $query = "
+INSERT INTO ".USER_GROUP_TABLE."
+  (user_id, group_id)
+VALUES
+  ('".$user_id."', '".$conf_UAM[2]."')
+;";
+      pwg_query($query);
+    }
+    
+    return get_absolute_root_url().UAM_PATH.'ConfirmMail.php?key='.$Confirm_Mail_ID.'&userid='.$user_id;
+  }
+}
+
+
+/**
+ * Function called from main.inc.php to set group to new users if manual validation is set
+ *
+ * @param : User id
+ * 
+ * 
+ */
+function setgroup($user_id)
+{
+  global $conf;
+  
+  $conf_UAM = unserialize($conf['UserAdvManager']);
+
+  $query = "
+DELETE FROM ".USER_GROUP_TABLE."
+WHERE user_id = '".$user_id."'
+  AND (
+    group_id = '".$conf_UAM[2]."'
+  OR 
+    group_id = '".$conf_UAM[3]."'
+  )
+;";
+  pwg_query($query);
+
+  if (!is_admin() and $conf_UAM[7] <> -1)
+  {
+    $query = "
+UPDATE ".USER_INFOS_TABLE."
+SET status = '".$conf_UAM[7]."'
+WHERE user_id = '".$user_id."'
+;";
+    pwg_query($query);
+  }
+
+  if (!is_admin() and $conf_UAM[2] <> -1)
+  {
+    $query = "
+INSERT INTO ".USER_GROUP_TABLE."
+  (user_id, group_id)
+VALUES
+  ('".$user_id."', '".$conf_UAM[2]."')
+;";
+    pwg_query($query);
+  }
+}
+
+
+/**
+ * Function called from UAM_admin.php to reset validation key
+ *
+ * @param : User id
+ * 
+ * @return : Build validation key in URL
+ * 
+ */
+function ResetConfirmMail($user_id)
+{
+  global $conf;
+  
+  $Confirm_Mail_ID = FindAvailableConfirmMailID();
+
+  list($dbnow) = pwg_db_fetch_row(pwg_query('SELECT NOW();'));
+  
+  if (isset($Confirm_Mail_ID))
+  { 
+    $query = "
+UPDATE ".USER_CONFIRM_MAIL_TABLE."
+SET id = '".$Confirm_Mail_ID."'
+WHERE user_id = '".$user_id."'
+;";
+    pwg_query($query);
+
+		$query = "
+UPDATE ".USER_INFOS_TABLE."
+SET registration_date = '".$dbnow."'
+WHERE user_id = '".$user_id."'
+;";
+		pwg_query($query);
+    
+    return get_absolute_root_url().UAM_PATH.'ConfirmMail.php?key='.$Confirm_Mail_ID.'&userid='.$user_id;
+  }
+}
+
+
+/**
+ * Function called from functions.inc.php to reset last visit date after sending a reminder
+ *
+ * @param : User id
+ * 
+ */
+function resetlastvisit($user_id)
+{
+  global $conf;
+
+  list($dbnow) = pwg_db_fetch_row(pwg_query('SELECT NOW();'));
+
+  $query = "
+UPDATE ".USER_LASTVISIT_TABLE."
+SET lastvisit = '".$dbnow."', reminder = 'true'
+WHERE user_id = '".$user_id."'
+;";
+  pwg_query($query);
+}
+
+
+/**
+ * Function called from main.inc.php - Triggered on user deletion
+ * 
+ */
+function DeleteConfirmMail($user_id)
+{
+  $query = "
+DELETE FROM ".USER_CONFIRM_MAIL_TABLE."
+WHERE user_id = '".$user_id."'
+;";
+  pwg_query($query);
+}
+
+/**
+ * Function called from main.inc.php - Triggered on user deletion
+ * 
+ */
+function DeleteLastVisit($user_id)
+{
+  $query = "
+DELETE FROM ".USER_LASTVISIT_TABLE."
+WHERE user_id = '".$user_id."'
+;";
+  pwg_query($query);
+}
+
+
+/**
+ * Function called from main.inc.php - Triggered on user deletion
+ *
+ * @param : User id
+ * 
+ */
+function DeleteRedir($user_id)
+{
+  $tab = array();
+
+  $query = '
+SELECT value
+FROM '.CONFIG_TABLE.'
+WHERE param = "UserAdvManager_Redir"
+;';
+
+  $tab = pwg_db_fetch_row(pwg_query($query));
+  
+  $values = explode(',', $tab[0]);
+
+  unset($values[array_search($user_id, $values)]);
+     
+  $query = "
+UPDATE ".CONFIG_TABLE."
+SET value = \"".implode(',', $values)."\"
+WHERE param = 'UserAdvManager_Redir';";
+
+  pwg_query($query);
+}
+
+
+/**
+ * Function called from ConfirmMail.php to verify validation key used by user according time limit
+ * Return true is key validation is OK else return false
+ *
+ * @param : User id
+ * 
+ * @return : Bool
+ * 
+ */
+function VerifyConfirmMail($id)
+{
+  global $conf;
+
+  include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+  
+  $conf_UAM = unserialize($conf['UserAdvManager']);
+
+  $conf_UAM_ConfirmMail = unserialize($conf['UserAdvManager_ConfirmMail']);
+
+  $query = "
+SELECT COUNT(*)
+FROM ".USER_CONFIRM_MAIL_TABLE."
+WHERE id = '".$id."'
+;";
+  list($count) = pwg_db_fetch_row(pwg_query($query));
+
+  if ($count == 1)
+  {
+    $query = "
+SELECT user_id, status, date_check
+FROM ".USER_CONFIRM_MAIL_TABLE."
+WHERE id = '".$id."'
+;";
+    $data = pwg_db_fetch_assoc(pwg_query($query));
+
+    if (!empty($data) and isset($data['user_id']))
+    {
+      $query = "
+SELECT registration_date
+FROM ".USER_INFOS_TABLE."
+WHERE user_id = '".$data['user_id']."'
+;";
+      list($registration_date) = pwg_db_fetch_row(pwg_query($query));
+
+//              Time limit process             
+// ********************************************  
+      if (!empty($registration_date))
+      {
+				// Verify Confirmmail with time limit ON
+				if (isset ($conf_UAM_ConfirmMail[1]))
+				{
+					// dates formating and compare
+					$today = date("d-m-Y"); // Get today's date
+					list($day, $month, $year) = explode('-', $today); // explode date of today						 
+ 					$daytimestamp = mktime(0, 0, 0, $month, $day, $year);// Generate UNIX timestamp
+	  		
+	  			list($regdate, $regtime) = explode(' ', $registration_date); // Explode date and time from registration date
+					list($regyear, $regmonth, $regday) = explode('-', $regdate); // Explode date from registration date
+					$regtimestamp = mktime(0, 0, 0, $regmonth, $regday, $regyear);// Generate UNIX timestamp
+			
+					$deltasecs = $daytimestamp - $regtimestamp;// Compare the 2 UNIX timestamps	
+					$deltadays = floor($deltasecs / 86400);// Convert result from seconds to days
+
+					// Condition with the value set for time limit
+					if ($deltadays <= $conf_UAM_ConfirmMail[1]) // If Nb of days is less than the limit set
+					{
+						list($dbnow) = pwg_db_fetch_row(pwg_query('SELECT NOW();'));
+
+						$query = '
+UPDATE '.USER_CONFIRM_MAIL_TABLE.'
+SET date_check="'.$dbnow.'", reminder="false"
+WHERE id = "'.$id.'"
+;';
+						pwg_query($query);
+      
+						if ($conf_UAM[2] <> -1) // Delete user from unvalidated users group
+						{
+							$query = "
+DELETE FROM ".USER_GROUP_TABLE."
+WHERE user_id = '".$data['user_id']."'
+  AND group_id = '".$conf_UAM[2]."'
+;";
+							pwg_query($query);
+						}
+	    
+						if ($conf_UAM[3] <> -1) // Add user to validated users group 
+						{
+							$query = "
+INSERT INTO ".USER_GROUP_TABLE."
+  (user_id, group_id)
+VALUES
+  ('".$data['user_id']."', '".$conf_UAM[3]."')
+;";
+							pwg_query($query);
+						}
+
+						if (($conf_UAM[4] <> -1 or isset($data['status']))) // Change user's status
+						{
+							$query = "
+UPDATE ".USER_INFOS_TABLE."
+SET status = '".(isset($data['status']) ? $data['status'] : $conf_UAM[4])."'
+WHERE user_id = '".$data['user_id']."'
+;";
+							pwg_query($query);
+						}
+						// Refresh user's category cache
+						invalidate_user_cache();
+  
+						return true;
+					}
+					elseif ($deltadays > $conf_UAM_ConfirmMail[1]) // If timelimit exeeds
+					{
+						return false;
+					}
+				}
+				// Verify Confirmmail with time limit OFF
+				else
+				{
+					list($dbnow) = pwg_db_fetch_row(pwg_query('SELECT NOW();'));
+
+					$query = '
+UPDATE '.USER_CONFIRM_MAIL_TABLE.'
+SET date_check="'.$dbnow.'"
+WHERE id = "'.$id.'"
+;';
+					pwg_query($query);
+      
+					if ($conf_UAM[2] <> -1)
+					{
+						$query = "
+DELETE FROM ".USER_GROUP_TABLE."
+WHERE user_id = '".$data['user_id']."'
+AND group_id = '".$conf_UAM[2]."'
+;";
+						pwg_query($query);
+					}
+    
+					if ($conf_UAM[3] <> -1)
+					{
+						$query = "
+DELETE FROM ".USER_GROUP_TABLE."
+WHERE user_id = '".$data['user_id']."'
+AND group_id = '".$conf_UAM[3]."'
+;";
+						pwg_query($query);
+
+						$query = "
+INSERT INTO ".USER_GROUP_TABLE."
+  (user_id, group_id)
+VALUES
+  ('".$data['user_id']."', '".$conf_UAM[3]."')
+;";
+						pwg_query($query);
+					}
+
+					if (($conf_UAM[4] <> -1 or isset($data['status'])))
+					{
+						$query = "
+UPDATE ".USER_INFOS_TABLE."
+SET status = '".(isset($data['status']) ? $data['status'] : $conf_UAM[4])."'
+WHERE user_id = '".$data['user_id']."'
+;";
+						pwg_query($query);
+					}
+					// Refresh user's category cache
+					invalidate_user_cache();
+  
+					return true;
+				}
+			}
+		}
+	}
+  else
+    return false;
+}
+
+
+/**
+ * Function called from UAM_admin.php to force users validation by admin
+ *
+ * @param : User id
+ * 
+ */
+function ForceValidation($id)
+{
+  global $conf;
+
+  $conf_UAM = unserialize($conf['UserAdvManager']);
+
+  if (isset($conf_UAM[1]) and $conf_UAM[1] == 'true')
+  {
+    list($dbnow) = pwg_db_fetch_row(pwg_query('SELECT NOW();'));
+
+		$query = "
+UPDATE ".USER_CONFIRM_MAIL_TABLE."
+SET date_check='".$dbnow."'
+WHERE user_id = '".$id."'
+;";
+    pwg_query($query);
+	     
+		if ($conf_UAM[2] <> -1)
+		{
+			$query = "
+DELETE FROM ".USER_GROUP_TABLE."
+WHERE user_id = '".$id."'
+  AND group_id = '".$conf_UAM[2]."'
+;";
+			pwg_query($query);
+		}
+  
+		if ($conf_UAM[3] <> -1)
+		{
+			$query = "
+DELETE FROM ".USER_GROUP_TABLE."
+WHERE user_id = '".$id."'
+  AND group_id = '".$conf_UAM[3]."'
+;";
+      pwg_query($query);
+	
+			$query = "
+INSERT INTO ".USER_GROUP_TABLE."
+  (user_id, group_id)
+VALUES
+  ('".$id."', '".$conf_UAM[3]."')
+;";
+			pwg_query($query);
+    }
+
+		if ($conf_UAM[4] <> -1)
+		{
+			$query = "
+UPDATE ".USER_INFOS_TABLE."
+SET status = '".$conf_UAM[4]."'
+WHERE user_id = '".$id."'
+;";
+			pwg_query($query);
+		}
+  }
+  elseif (isset($conf_UAM[1]) and $conf_UAM[1] == 'local')
+  {
+    list($dbnow) = pwg_db_fetch_row(pwg_query('SELECT NOW();'));
+
+    if ($conf_UAM[2] <> -1)
+    {
+		  $query = "
+DELETE FROM ".USER_GROUP_TABLE."
+WHERE user_id = '".$id."'
+  AND group_id = '".$conf_UAM[2]."'
+;";
+		  pwg_query($query);
+    }
+
+    if ($conf_UAM[3] <> -1)
+    {
+      $query = "
+DELETE FROM ".USER_GROUP_TABLE."
+WHERE user_id = '".$id."'
+  AND group_id = '".$conf_UAM[3]."'
+;";
+      pwg_query($query);
+	
+		  $query = "
+INSERT INTO ".USER_GROUP_TABLE."
+  (user_id, group_id)
+VALUES
+  ('".$id."', '".$conf_UAM[3]."')
+;";
+		  pwg_query($query);
+    }
+
+    if ($conf_UAM[4] <> -1)
+    {
+		  $query = "
+UPDATE ".USER_INFOS_TABLE."
+SET status = '".$conf_UAM[4]."'
+WHERE user_id = '".$id."'
+;";
+      pwg_query($query);
+    }
+  }
+}
+
+
+/**
+ * Function called from main.inc.php - Check if username matches forbidden caracters
+ *
+ * @param : User login
+ * 
+ * @return : Bool
+ * 
+ */
+function ValidateUsername($login)
+{
+  global $conf;
+
+  $conf_UAM = unserialize($conf['UserAdvManager']);
+
+  if (isset($login) and isset($conf_UAM[6]) and $conf_UAM[6] <> '')
+  {
+    $conf_CharExclusion = preg_split("/,/",$conf_UAM[6]);
+    for ($i = 0 ; $i < count($conf_CharExclusion) ; $i++)
+    {
+      $pattern = '/'.$conf_CharExclusion[$i].'/i';
+      if (preg_match($pattern, $login))
+      {
+        return true;
+      }
+    }
+  }
+  else
+  {
+    return false;
+  }
+}
+
+
+/**
+ * Function called from main.inc.php - Check if user's email is in excluded email providers list
+ * Doesn't work on call - Must be copied in main.inc.php to work
+ *
+ * @param : Email address
+ * 
+ * @return : Bool
+ * 
+ */
+function ValidateEmailProvider($email)
+{
+  global $conf;
+
+  $conf_UAM = unserialize($conf['UserAdvManager']);
+  
+	if (isset($email) and isset($conf_UAM[11]) and $conf_UAM[11] <> '')
+	{
+		$conf_MailExclusion = preg_split("/[\s,]+/",$conf_UAM[11]);
+		for ($i = 0 ; $i < count($conf_MailExclusion) ; $i++)
+		{
+			$pattern = '/'.$conf_MailExclusion[$i].'/i';
+			if (preg_match($pattern, $email))
+      {
+        		return true;
+      }
+		}
+	}
+  else
+  {
+    return false;
+  }
+}
+
+
+/**
+ * Function called from UAM_admin.php - Get unvalidated users according time limit
+ * 
+ * @return : List of users
+ * 
+ */
+function get_unvalid_user_list()
+{
+	global $conf, $page;
+          
+	// Get ConfirmMail configuration
+  $conf_UAM_ConfirmMail = unserialize($conf['UserAdvManager_ConfirmMail']);
+  // Get UAM configuration
+  $conf_UAM = unserialize($conf['UserAdvManager']);
+  
+  $users = array();
+
+	// search users depending expiration date
+  $query = '
+SELECT DISTINCT u.'.$conf['user_fields']['id'].' AS id,
+                u.'.$conf['user_fields']['username'].' AS username,
+                u.'.$conf['user_fields']['email'].' AS email,
+                ui.status,
+                ui.enabled_high,
+                ui.level,
+                ui.registration_date
+FROM '.USERS_TABLE.' AS u
+  INNER JOIN '.USER_INFOS_TABLE.' AS ui
+    ON u.'.$conf['user_fields']['id'].' = ui.user_id
+  LEFT JOIN '.USER_GROUP_TABLE.' AS ug
+    ON u.'.$conf['user_fields']['id'].' = ug.user_id
+WHERE u.'.$conf['user_fields']['id'].' >= 3
+  AND (TO_DAYS(NOW()) - TO_DAYS(ui.registration_date) >= "'.$conf_UAM_ConfirmMail[1].'"
+  OR TO_DAYS(NOW()) - TO_DAYS(ui.registration_date) < "'.$conf_UAM_ConfirmMail[1].'")';
+
+	if ($conf_UAM[2] <> '-1' and $conf_UAM[7] == '-1')
+  {
+    $query.= '
+  AND ug.group_id = '.$conf_UAM[2];
+  }
+  if ($conf_UAM[2] == '-1' and $conf_UAM[7] <> '-1')
+  {
+    $query.= '
+  AND ui.status = \''.$conf_UAM[7]."'";
+  }
+  if ($conf_UAM[2] <> '-1' and $conf_UAM[7] <> '-1')
+  {
+    $query.= '
+  AND ug.group_id = \''.$conf_UAM[2]."'";
+  }
+  $query.= '
+ORDER BY ui.registration_date ASC
+;';
+
+	$result = pwg_query($query);
+      
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+  	$user = $row;
+    $user['groups'] = array();
+
+    array_push($users, $user);
+	}
+
+	// add group lists
+  $user_ids = array();
+  foreach ($users as $i => $user)
+  {
+  	$user_ids[$i] = $user['id'];
+	}
+	
+	$user_nums = array_flip($user_ids);
+
+  if (count($user_ids) > 0)
+  {
+  	$query = '
+SELECT user_id, group_id
+  FROM '.USER_GROUP_TABLE.'
+WHERE user_id IN ('.implode(',', $user_ids).')
+;';
+        
+		$result = pwg_query($query);
+        
+    while ($row = pwg_db_fetch_assoc($result))
+    {
+    	array_push(
+      	$users[$user_nums[$row['user_id']]]['groups'],
+        $row['group_id']
+			);
+		}
+	}
+
+	return $users;
+}
+
+
+/**
+ * Function called from functions.inc.php - Get all users who haven't validate their registration in configured time
+ * to delete or remail them automatically
+ * 
+ * @return : List of users
+ * 
+ */
+function get_unvalid_user_autotasks()
+{
+	global $conf, $page;
+          
+	// Get ConfirmMail configuration
+  $conf_UAM_ConfirmMail = unserialize($conf['UserAdvManager_ConfirmMail']);
+  
+  $users = array();
+
+	// search users depending expiration date
+  $query = '
+SELECT DISTINCT u.'.$conf['user_fields']['id'].' AS id,
+                ui.registration_date
+FROM '.USERS_TABLE.' AS u
+  INNER JOIN '.USER_INFOS_TABLE.' AS ui
+    ON u.'.$conf['user_fields']['id'].' = ui.user_id
+WHERE u.'.$conf['user_fields']['id'].' >= 3
+  AND (TO_DAYS(NOW()) - TO_DAYS(ui.registration_date) >= "'.$conf_UAM_ConfirmMail[1].'")
+ORDER BY ui.registration_date ASC;';
+
+	$result = pwg_query($query);
+      
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    array_push($users, $row);
+	}
+
+	return $users;
+}
+
+
+/**
+ * Function called from UAM_admin.php - Get ghost users
+ * 
+ * @return : List of users
+ * 
+ */
+function get_ghost_user_list()
+{
+	global $conf, $page;
+
+  $conf_UAM = unserialize($conf['UserAdvManager']);
+  
+  $users = array();
+
+	// search users depending expiration date
+  $query = '
+SELECT DISTINCT u.'.$conf['user_fields']['id'].' AS id,
+                u.'.$conf['user_fields']['username'].' AS username,
+                u.'.$conf['user_fields']['email'].' AS email,
+                lv.lastvisit,
+                lv.reminder
+FROM '.USERS_TABLE.' AS u
+  INNER JOIN '.USER_LASTVISIT_TABLE.' AS lv
+    ON u.'.$conf['user_fields']['id'].' = lv.user_id
+WHERE (TO_DAYS(NOW()) - TO_DAYS(lv.lastvisit) >= "'.$conf_UAM[16].'")
+ORDER BY lv.lastvisit ASC;';
+
+	$result = pwg_query($query);
+      
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+  	$user = $row;
+    $user['groups'] = array();
+
+    array_push($users, $user);
+	}
+
+	// add group lists
+  $user_ids = array();
+  foreach ($users as $i => $user)
+  {
+  	$user_ids[$i] = $user['id'];
+	}
+
+	return $users;
+}
+
+
+/**
+ * Function called from functions.inc.php - Get all ghost users to delete or downgrade automatically on any user login
+ * 
+ * @return : List of users to delete or downgrade automatically
+ * 
+ */
+function get_ghosts_autotasks()
+{
+	global $conf, $page;
+
+  $conf_UAM = unserialize($conf['UserAdvManager']);
+  
+  $users = array();
+  
+	// search users depending expiration date and reminder sent
+  $query = '
+SELECT DISTINCT u.'.$conf['user_fields']['id'].' AS id,
+                lv.lastvisit
+FROM '.USERS_TABLE.' AS u
+  INNER JOIN '.USER_LASTVISIT_TABLE.' AS lv
+    ON u.'.$conf['user_fields']['id'].' = lv.user_id
+WHERE (TO_DAYS(NOW()) - TO_DAYS(lv.lastvisit) >= "'.$conf_UAM[16].'")
+ORDER BY lv.lastvisit ASC;';
+
+	$result = pwg_query($query);
+      
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    array_push($users, $row);
+	}
+  
+	return $users;
+}
+
+
+/**
+ * Function called from UAM_admin.php - Get all users to display the number of days since their last visit
+ * 
+ * @return : List of users
+ * 
+ */
+function get_user_list()
+{
+	global $conf, $page;
+  
+  $users = array();
+
+	// search users depending expiration date
+  $query = '
+SELECT DISTINCT u.'.$conf['user_fields']['id'].' AS id,
+                u.'.$conf['user_fields']['username'].' AS username,
+                u.'.$conf['user_fields']['email'].' AS email,
+                ug.lastvisit
+FROM '.USERS_TABLE.' AS u
+  INNER JOIN '.USER_LASTVISIT_TABLE.' AS ug
+    ON u.'.$conf['user_fields']['id'].' = ug.user_id
+WHERE u.'.$conf['user_fields']['id'].' >= 3
+ORDER BY ug.lastvisit DESC
+;';
+
+	$result = pwg_query($query);
+      
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+  	$user = $row;
+    $user['groups'] = array();
+
+    array_push($users, $user);
+	}
+
+	// add group lists
+  $user_ids = array();
+  foreach ($users as $i => $user)
+  {
+  	$user_ids[$i] = $user['id'];
+	}
+
+	return $users;
+}
+
+
+/**
+ * Function called from UAM_admin.php - to determine who is expired or not and giving a different display color
+ *
+ * @param : user id
+ * 
+ * @return : Bool
+ * 
+ */
+function expiration($id)
+{
+	global $conf, $page;
+          
+	// Get ConfirmMail configuration
+  $conf_UAM_ConfirmMail = unserialize($conf['UserAdvManager_ConfirmMail']);
+          
+	// Get UAM configuration
+  $conf_UAM = unserialize($conf['UserAdvManager']);
+	
+	$query = "
+SELECT registration_date
+  FROM ".USER_INFOS_TABLE."
+WHERE user_id = '".$id."'
+;";
+	list($registration_date) = pwg_db_fetch_row(pwg_query($query));
+
+//              Time limit process             
+// ********************************************  
+	if (!empty($registration_date))
+  {
+		// dates formating and compare
+		$today = date("d-m-Y"); // Get today's date
+		list($day, $month, $year) = explode('-', $today); // explode date of today						 
+ 		$daytimestamp = mktime(0, 0, 0, $month, $day, $year);// Generate UNIX timestamp
+	  	
+	  list($regdate, $regtime) = explode(' ', $registration_date); // Explode date and time from registration date
+		list($regyear, $regmonth, $regday) = explode('-', $regdate); // Explode date from registration date
+		$regtimestamp = mktime(0, 0, 0, $regmonth, $regday, $regyear);// Generate UNIX timestamp
+			
+		$deltasecs = $daytimestamp - $regtimestamp;// Compare the 2 UNIX timestamps	
+		$deltadays = floor($deltasecs / 86400);// Convert result from seconds to days
+
+		// Condition with the value set for time limit
+		if ($deltadays <= $conf_UAM_ConfirmMail[1]) // If Nb of days is less than the limit set
+		{
+			return false;
+		}
+		else
+		{
+			return true;
+		}
+	}
+}
+
+
+/**
+ * Returns a password's score for password complexity check
+ *
+ * @param : password filled by user
+ * 
+ * @return : Score calculation
+ * 
+ * Thanx to MathieuGut from http://m-gut.developpez.com
+ */
+function testpassword($password) // Le mot de passe passé en paramètre - $password given by user
+{
+
+  // Initialisation des variables - Variables initiation
+  $points = 0;
+  $point_lowercase = 0;
+  $point_uppercase = 0;
+  $point_numbers = 0;
+  $point_characters = 0;
+
+  // On récupère la longueur du mot de passe - Getting password lengh	
+  $length = strlen($password);
+  
+  // On fait une boucle pour lire chaque lettre - Loop to read password characters
+  for($i = 0; $i < $length; $i++)
+  {
+    // On sélectionne une à une chaque lettre - Select each letters
+    // $i étant à 0 lors du premier passage de la boucle - $i is 0 at first turn
+    $letters = $password[$i];
+
+    if ($letters>='a' && $letters<='z')
+    {
+      // On ajoute 1 point pour une minuscule - Adding 1 point to score for a lowercase
+		  $points = $points + 1;
+
+		  // On rajoute le bonus pour une minuscule - Adding bonus points for lowercase
+		  $point_lowercase = 1;
+    }
+    else if ($letters>='A' && $letters <='Z')
+    {
+      // On ajoute 2 points pour une majuscule - Adding 2 points to score for uppercase
+      $points = $points + 2;
+		
+      // On rajoute le bonus pour une majuscule - Adding bonus points for uppercase
+      $point_uppercase = 2;
+    }
+    else if ($letters>='0' && $letters<='9')
+    {
+      // On ajoute 3 points pour un chiffre - Adding 3 points to score for numbers
+      $points = $points + 3;
+		
+      // On rajoute le bonus pour un chiffre - Adding bonus points for numbers
+      $point_numbers = 3;
+    }
+    else
+    {
+      // On ajoute 5 points pour un caractère autre - Adding 5 points to score for special characters
+      $points = $points + 5;
+		
+      // On rajoute le bonus pour un caractère autre - Adding bonus points for special characters
+      $point_characters = 5;
+    }
+  }
+
+  // Calcul du coefficient points/longueur - calculating the coefficient points/length
+  $step1 = $points / $length;
+
+  // Calcul du coefficient de la diversité des types de caractères... - Calculation of the diversity of character types...
+  $step2 = $point_lowercase + $point_uppercase + $point_numbers + $point_characters;
+
+  // Multiplication du coefficient de diversité avec celui de la longueur - Multiplying the coefficient of diversity with that of the length
+  $score = $step1 * $step2;
+
+  // Multiplication du resultat par la longueur de la chaine - Multiplying the result by the length of the string
+  $finalscore = $score * $length;
+
+  return $finalscore;
+}
+
+
+/**
+ * Function called from maintain.inc.php - to check if database upgrade is needed
+ * 
+ * @param : table name
+ * 
+ * @return : boolean
+ * 
+ */
+function table_exist($table)
+{
+  $query = 'DESC '.$table.';';
+  return (bool)($res=pwg_query($query));
+}
+
+
+/**
+ * Function called from UAM_admin.php and main.inc.php to get the plugin version and name
+ *
+ * @param : plugin directory
+ * 
+ * @return : plugin's version and name
+ * 
+ */
+function PluginInfos($dir)
+{
+  $path = $dir;
+
+  $plg_data = implode( '', file($path.'main.inc.php') );
+  if ( preg_match("|Plugin Name: (.*)|", $plg_data, $val) )
+  {
+    $plugin['name'] = trim( $val[1] );
+  }
+  if (preg_match("|Version: (.*)|", $plg_data, $val))
+  {
+    $plugin['version'] = trim($val[1]);
+  }
+  if ( preg_match("|Plugin URI: (.*)|", $plg_data, $val) )
+  {
+    $plugin['uri'] = trim($val[1]);
+  }
+  if ($desc = load_language('description.txt', $path.'/', array('return' => true)))
+  {
+    $plugin['description'] = trim($desc);
+  }
+  elseif ( preg_match("|Description: (.*)|", $plg_data, $val) )
+  {
+    $plugin['description'] = trim($val[1]);
+  }
+  if ( preg_match("|Author: (.*)|", $plg_data, $val) )
+  {
+    $plugin['author'] = trim($val[1]);
+  }
+  if ( preg_match("|Author URI: (.*)|", $plg_data, $val) )
+  {
+    $plugin['author uri'] = trim($val[1]);
+  }
+  if (!empty($plugin['uri']) and strpos($plugin['uri'] , 'extension_view.php?eid='))
+  {
+    list( , $extension) = explode('extension_view.php?eid=', $plugin['uri']);
+    if (is_numeric($extension)) $plugin['extension'] = $extension;
+  }
+// IMPORTANT SECURITY !
+  $plugin = array_map('htmlspecialchars', $plugin);
+
+  return $plugin ;
+}
+
+
+/**
+ * Delete obsolete files on plugin upgrade
+ * Obsolete files are listed in file obsolete.list
+ *
+ */
+function clean_obsolete_files()
+{
+  if (file_exists(UAM_PATH.'obsolete.list')
+    and $old_files = file(UAM_PATH.'obsolete.list', FILE_IGNORE_NEW_LINES)
+    and !empty($old_files))
+  {
+    array_push($old_files, 'obsolete.list');
+    foreach($old_files as $old_file)
+    {
+      $path = UAM_PATH.$old_file;
+      if (is_file($path))
+      {
+        @unlink($path);
+      }
+    }
+  }
+}
+
+
+/**
+ * UAM_check_profile - Thx to LucMorizur
+ * checks if a user id is registered as having already
+ * visited his profile.php page.
+ * 
+ * @uid        : the user id
+ * 
+ * @user_idsOK : (returned) array of all users ids having already visited
+ *               their profile.php pages
+ * 
+ * @returns    : true or false whether the users has already visited his
+ *               profile.php page or not
+ * 
+ */
+function UAM_check_profile($uid, &$user_idsOK)
+{
+  $t = array();
+  $v = false;
+  
+  $query = "
+SELECT value
+FROM ".CONFIG_TABLE."
+WHERE param = 'UserAdvManager_Redir'
+;";
+  
+  if ($v = (($t = pwg_db_fetch_row(pwg_query($query))) !== false))
+  {
+    $user_idsOK = explode(',', $t[0]);
+    $v = (in_array($uid, $user_idsOK));
+  }
+  return $v;
+}
+
+
+/**
+ * UAM specific database dump (only for MySql !)
+ * Creates an SQL dump of UAM specific tables and configuration settings
+ * 
+ * @returns  : Boolean to manage appropriate message display
+ * 
+ */
+function uam_dump($download)
+{
+  global $conf;
+  
+  // Initial backup folder creation and file initialisation
+  if (!is_dir(UAM_PATH.'/include/backup'))
+    mkdir(UAM_PATH.'/include/backup');
+
+  $Backup_File = UAM_PATH.'/include/backup/UAM_dbbackup.sql';
+
+  $fp = fopen($Backup_File, 'w');
+
+
+  // Saving UAM specific tables
+  $ListTables = array(USER_CONFIRM_MAIL_TABLE, USER_LASTVISIT_TABLE);
+  $j=0;
+  
+  while($j < count($ListTables))
+  {
+    $sql = 'SHOW CREATE TABLE '.$ListTables[$j];
+    $res = pwg_query($sql);
+
+    if ($res)
+    {
+      $insertions = "-- -------------------------------------------------------\n";
+      $insertions .= "-- Create ".$ListTables[$j]." table\n";
+      $insertions .= "-- ------------------------------------------------------\n\n";
+
+      $insertions .= "DROP TABLE IF EXISTS ".$ListTables[$j].";\n\n";
+
+      $array = mysql_fetch_array($res);
+      $array[1] .= ";\n\n";
+      $insertions .= $array[1];
+
+      $req_table = pwg_query('SELECT * FROM '.$ListTables[$j]) or die(mysql_error());
+      $nb_fields = mysql_num_fields($req_table);
+      while ($line = mysql_fetch_array($req_table))
+      {
+        $insertions .= 'INSERT INTO '.$ListTables[$j].' VALUES (';
+        for ($i=0; $i<$nb_fields; $i++)
+        {
+          $insertions .= '\'' . mysql_real_escape_string($line[$i]) . '\', ';
+        }
+        $insertions = substr($insertions, 0, -2);
+        $insertions .= ");\n";
+      }
+      $insertions .= "\n\n";
+    }
+
+    fwrite($fp, $insertions);    
+    $j++;
+  }
+  
+  // Saving UAM configuration
+  $insertions = "-- -------------------------------------------------------\n";
+  $insertions .= "-- Insert UAM configuration in ".CONFIG_TABLE."\n";
+  $insertions .= "-- ------------------------------------------------------\n\n";
+
+  fwrite($fp, $insertions);
+
+  $pattern = "UserAdvManager%";
+  $req_table = pwg_query('SELECT * FROM '.CONFIG_TABLE.' WHERE param LIKE "'.$pattern.'";') or die(mysql_error());
+  $nb_fields = mysql_num_fields($req_table);
+
+  while ($line = mysql_fetch_array($req_table))
+  {
+    $insertions = 'INSERT INTO '.CONFIG_TABLE.' VALUES (';
+    for ($i=0; $i<$nb_fields; $i++)
+    {
+      $insertions .= '\'' . mysql_real_escape_string($line[$i]) . '\', ';
+    }
+    $insertions = substr($insertions, 0, -2);
+    $insertions .= ");\n";
+
+    fwrite($fp, $insertions);
+  }
+
+  fclose($fp);
+
+  // Download generated dump file
+  if ($download == 'true')
+  {
+    if (@filesize($Backup_File))
+    {
+      $http_headers = array(
+        'Content-Length: '.@filesize($Backup_File),
+        'Content-Type: text/x-sql',
+        'Content-Disposition: attachment; filename="UAM_dbbackup.sql";',
+        'Content-Transfer-Encoding: binary',
+        );
+
+      foreach ($http_headers as $header)
+      {
+        header($header);
+      }
+
+      @readfile($Backup_File);
+      exit();
+    }
+  }
+
+  return true;
+}
+
+
+/**
+ * Useful for debugging - 4 vars can be set
+ * Output result to log.txt file
+ *
+ */
+function UAMLog($var1, $var2, $var3, $var4)
+{
+   $fo=fopen (UAM_PATH.'log.txt','a') ;
+   fwrite($fo,"======================\n") ;
+   fwrite($fo,'le ' . date('D, d M Y H:i:s') . "\r\n");
+   fwrite($fo,$var1 ."\r\n") ;
+   fwrite($fo,$var2 ."\r\n") ;
+   fwrite($fo,$var3 ."\r\n") ;
+   fwrite($fo,$var4 ."\r\n") ;
+   fclose($fo) ;
+}
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/include/upgradedb.inc.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/include/upgradedb.inc.php	(revision 11019)
+++ /extensions/UserAdvManager/tags/2.20.11/include/upgradedb.inc.php	(revision 11019)
@@ -0,0 +1,494 @@
+<?php
+/**
+ * @author Eric@piwigo.org
+ *  
+ * Upgrade processes for old plugin version
+ * Called from maintain.inc.php on plugin activation
+ * 
+ */
+
+if(!defined('UAM_PATH'))
+{
+  define('UAM_PATH' , PHPWG_PLUGINS_PATH.basename(dirname(__FILE__)).'/');
+}
+
+include_once (UAM_PATH.'include/constants.php');
+include_once (UAM_PATH.'include/functions.inc.php');
+
+// +----------------------------------------------------------+
+// |       Upgrading database from old plugin versions        |
+// +----------------------------------------------------------+
+
+
+/* *************************************** */
+/* Update plugin version in conf table     */
+/* Used everytime a new version is updated */
+/* even if no database upgrade is needed   */
+/* *************************************** */
+function UAM_version_update()
+{  
+  // Get current plugin version
+  $plugin =  PluginInfos(UAM_PATH);
+  $version = $plugin['version'];
+
+  // Update plugin version in #_config table
+  $query = '
+UPDATE '.CONFIG_TABLE.'
+SET value="'.$version.'"
+WHERE param="UserAdvManager_Version"
+LIMIT 1
+;';
+
+  pwg_query($query);
+
+
+// Check #_plugin table consistency
+// Only useful if a previous version upgrade has not worked correctly (rare case)
+  $query = '
+SELECT version
+  FROM '.PLUGINS_TABLE.'
+WHERE id = "UserAdvManager"
+;';
+  
+  $data = pwg_db_fetch_assoc(pwg_query($query));
+  
+  if (empty($data['version']) or $data['version'] <> $version)
+  {
+    $query = '
+UPDATE '.PLUGINS_TABLE.'
+SET version="'.$version.'"
+WHERE id = "UserAdvManager"
+LIMIT 1
+;';
+
+    pwg_query($query);
+  }
+}
+
+
+/* upgrade from branch 2.10 to 2.11 */
+/* ******************************** */
+function upgrade_210_211()
+{
+	global $conf;
+	  
+  $q = '
+INSERT INTO '.CONFIG_TABLE.' (param, value, comment)
+VALUES ("nbc_UserAdvManager_ConfirmMail","false;5;Hello.
+		
+This is a reminder message because you registered on our gallery but you do not validate your registration and your validation key has expired. To still allow you to access to our gallery, your validation period has been reset. You have again 5 days to validate your registration.
+
+Note: After this period, your account will be permanently deleted.;false;Hello.
+
+This is a reminder message because you registered on our gallery but you do not validate your registration and your validation key will expire. To allow you access to our gallery, you have 2 days to confirm your registration by clicking on the link in the message you should have received when you registered.
+
+Note: After this period, your account will be permanently deleted.","Parametres nbc_UserAdvManager - ConfirmMail")
+  ;';
+  pwg_query($q);
+
+  upgrade_211_212();
+}
+
+
+/* upgrade from branch 2.11 to 2.12 */
+/* ******************************** */
+function upgrade_211_212()
+{
+	global $conf;
+
+  $conf_UAM = isset($conf['nbc_UserAdvManager']) ? explode(";" , $conf['nbc_UserAdvManager']) : array();
+
+  if ((!isset($conf_UAM[14]) and !isset($conf_UAM[15])) and !isset($conf_UAM[16]) and !isset($conf_UAM[17]))
+  {
+    $upgrade_UAM = $conf_UAM[0].';'.$conf_UAM[1].';'.$conf_UAM[2].';'.$conf_UAM[3].';'.$conf_UAM[4].';'.$conf_UAM[5].';'.$conf_UAM[6].';'.$conf_UAM[7].';'.$conf_UAM[8].';'.$conf_UAM[9].';'.$conf_UAM[10].';'.$conf_UAM[11].';'.$conf_UAM[12].';'.$conf_UAM[13].';false;100;false;false;10;Hello.
+	
+This is a reminder because a very long time passed since your last visit on our gallery. If you do not want anymore to use your access account, please let us know by replying to this email. Your account will be deleted.
+
+On receipt of this message and no new visit within 15 days, we would be obliged to automatically delete your account.
+
+Best regards,
+
+The admin of the gallery.';
+
+    conf_update_param('nbc_UserAdvManager', pwg_db_real_escape_string($upgrade_UAM));
+  }
+  
+	$q = "
+CREATE TABLE IF NOT EXISTS ".USER_LASTVISIT_TABLE." (
+  user_id SMALLINT(5) NOT NULL DEFAULT '0',
+  lastvisit DATETIME NULL DEFAULT NULL,
+  reminder ENUM('true','false') NULL,
+PRIMARY KEY (`user_id`)
+  )
+;";
+  pwg_query($q);
+
+  upgrade_212_213();
+}
+
+
+/* upgrade from branch 2.12 to 2.13 */
+/* ******************************** */
+function upgrade_212_213()
+{
+  // Create missing table
+  $query = "
+ALTER TABLE ".USER_CONFIRM_MAIL_TABLE."
+ADD reminder ENUM('true', 'false') NULL DEFAULT NULL
+;";
+  
+  pwg_query($query);
+
+  // Upgrade plugin configuration
+	global $conf;
+
+  $conf_UAM = isset($conf['nbc_UserAdvManager']) ? explode(";" , $conf['nbc_UserAdvManager']) : array();
+
+  if ((!isset($conf_UAM[20])))
+  {
+    $upgrade_UAM = $conf_UAM[0].';'.$conf_UAM[1].';'.$conf_UAM[2].';'.$conf_UAM[3].';'.$conf_UAM[4].';'.$conf_UAM[5].';'.$conf_UAM[6].';'.$conf_UAM[7].';'.$conf_UAM[8].';'.$conf_UAM[9].';'.$conf_UAM[10].';'.$conf_UAM[11].';'.$conf_UAM[12].';'.$conf_UAM[13].';'.$conf_UAM[14].';'.$conf_UAM[15].';'.$conf_UAM[16].';'.$conf_UAM[17].';'.$conf_UAM[18].';'.$conf_UAM[19].';false';
+		
+		conf_update_param('nbc_UserAdvManager', pwg_db_real_escape_string($upgrade_UAM));
+    
+    upgrade_213_214();
+  }
+}
+
+
+/* upgrade from branch 2.13 to 2.14 */
+/* ******************************** */
+function upgrade_213_214()
+{
+	global $conf;
+  
+  $conf_UAM = explode(';', $conf['nbc_UserAdvManager']);
+
+  $upgrade_UAM = array($conf_UAM[0],$conf_UAM[1],$conf_UAM[2],$conf_UAM[3],$conf_UAM[4],$conf_UAM[5],$conf_UAM[6],$conf_UAM[7],$conf_UAM[8],$conf_UAM[9],$conf_UAM[10],$conf_UAM[11],$conf_UAM[12],$conf_UAM[13],$conf_UAM[14],$conf_UAM[15],$conf_UAM[16],$conf_UAM[17],$conf_UAM[18],$conf_UAM[19],$conf_UAM[20],'false');
+
+  $query = '
+UPDATE '.CONFIG_TABLE.'
+  SET value = "'.pwg_db_real_escape_string(serialize($upgrade_UAM)).'"
+  WHERE param = "nbc_UserAdvManager"
+;';
+  pwg_query($query);
+  
+  if (unserialize($conf['nbc_UserAdvManager_ConfirmMail']) === false)
+  {
+    $data = explode(';', $conf['nbc_UserAdvManager_ConfirmMail']);
+
+    conf_update_param('nbc_UserAdvManager_ConfirmMail', pwg_db_real_escape_string(serialize($data)));
+    
+    upgrade_214_215();
+  }
+}
+
+
+/* upgrade from branch 2.14 to 2.15 */
+/* ******************************** */
+function upgrade_214_215()
+{
+  global $conf;
+
+  // Changing parameter name
+  $q = '
+UPDATE '.CONFIG_TABLE.'
+SET param = "UserAdvManager"
+WHERE param = "nbc_UserAdvManager"
+;';
+  pwg_query($q);
+  
+  $q = '
+UPDATE '.CONFIG_TABLE.'
+SET param = "UserAdvManager_ConfirmMail"
+WHERE param = "nbc_UserAdvManager_ConfirmMail"
+;';
+  pwg_query($q);
+
+  // Upgrading ConfirmMail options
+  $query = '
+SELECT value
+  FROM '.CONFIG_TABLE.'
+WHERE param = "UserAdvManager_ConfirmMail"
+;';
+
+  $result = pwg_query($query);
+  $conf_UAM_ConfirmMail = pwg_db_fetch_assoc($result);
+    
+  $conf_ConfirmMail = unserialize($conf_UAM_ConfirmMail['value']);
+  
+  $conf_ConfirmMail[5] ='Thank you to have confirmed your email address and your registration on the gallery. Have fun !';
+  $conf_ConfirmMail[6] ='Your activation key is incorrect or expired or you have already validated your account, please contact the webmaster to fix this problem.';
+  
+  $update_conf = serialize($conf_ConfirmMail);
+  
+  conf_update_param('UserAdvManager_ConfirmMail', pwg_db_real_escape_string($update_conf));
+    
+  upgrade_2153_2154();
+}
+
+
+/* upgrade from 2.15.3 to 2.15.4 */
+/* ***************************** */
+function upgrade_2153_2154()
+{
+  global $conf;
+
+  // Upgrading options
+  $query = '
+SELECT value
+  FROM '.CONFIG_TABLE.'
+WHERE param = "UserAdvManager"
+;';
+
+  $result = pwg_query($query);
+  $conf_UAM = pwg_db_fetch_assoc($result);
+    
+  $Newconf_UAM = unserialize($conf_UAM['value']);
+  
+  $Newconf_UAM[0] = $Newconf_UAM[0];
+  $Newconf_UAM[1] = $Newconf_UAM[2];
+  $Newconf_UAM[2] = $Newconf_UAM[3];
+  $Newconf_UAM[3] = $Newconf_UAM[4];
+  $Newconf_UAM[4] = $Newconf_UAM[5];
+  $Newconf_UAM[5] = $Newconf_UAM[6];
+  $Newconf_UAM[6] = $Newconf_UAM[7];
+  $Newconf_UAM[7] = $Newconf_UAM[8];
+  $Newconf_UAM[8] = $Newconf_UAM[9];
+  $Newconf_UAM[9] = $Newconf_UAM[10];
+  $Newconf_UAM[10] = $Newconf_UAM[11];
+  $Newconf_UAM[11] = $Newconf_UAM[12];
+  $Newconf_UAM[12] = $Newconf_UAM[13];
+  $Newconf_UAM[13] = $Newconf_UAM[14];
+  $Newconf_UAM[14] = $Newconf_UAM[15];
+  $Newconf_UAM[15] = $Newconf_UAM[16];
+  $Newconf_UAM[16] = $Newconf_UAM[17];
+  $Newconf_UAM[17] = $Newconf_UAM[18];
+  $Newconf_UAM[18] = $Newconf_UAM[19];
+  $Newconf_UAM[19] = $Newconf_UAM[20];
+  $Newconf_UAM[20] = $Newconf_UAM[21];
+  $Newconf_UAM[21] = 'false';
+  
+  $update_conf = serialize($Newconf_UAM);
+  
+  conf_update_param('UserAdvManager', pwg_db_real_escape_string($update_conf));
+
+  $query = '
+INSERT INTO '.CONFIG_TABLE.' (param, value, comment)
+VALUES ("UserAdvManager_Redir","0","UAM Redirections")
+  ;';
+  
+  pwg_query($query);
+}
+
+
+/* upgrade from 2.15.x to 2.16.0 */
+/* ***************************** */
+function upgrade_215_2160()
+{
+  global $conf;
+
+  // Upgrading options
+  $query = '
+SELECT value
+  FROM '.CONFIG_TABLE.'
+WHERE param = "UserAdvManager"
+;';
+
+  $result = pwg_query($query);
+  $conf_UAM = pwg_db_fetch_assoc($result);
+    
+  $Newconf_UAM = unserialize($conf_UAM['value']);
+  
+  $Newconf_UAM[22] = 'false';
+  $Newconf_UAM[23] = 'false';
+  $Newconf_UAM[24] = 'Sorry, your account has been deleted due to a too long time passed since your last visit.';
+  $Newconf_UAM[25] = 'Sorry, your account has been deprecated due to a too long time passed since your last visit. Please, use the following link to revalidate your account.';
+  $Newconf_UAM[26] = '-1';
+  $Newconf_UAM[27] = '-1';
+  $Newconf_UAM[28] = 'Thank you to have registered the gallery. Your account has been manually validated by admin. You can now visit all the gallery for free !';
+  
+  $update_conf = serialize($Newconf_UAM);
+  
+  conf_update_param('UserAdvManager', pwg_db_real_escape_string($update_conf));
+
+  // Insert a new config entry for futur plugin's version check
+  $query = '
+INSERT INTO '.CONFIG_TABLE.' (param, value, comment)
+VALUES ("UserAdvManager_Version","2.16.0","UAM version check")
+  ;';
+  
+  pwg_query($query);
+}
+
+
+/* upgrade from 2.16.x to 2.20.0 */
+/* ***************************** */
+function upgrade_216_220()
+{
+  global $conf;
+
+  // Upgrading options
+  $query = '
+SELECT value
+  FROM '.CONFIG_TABLE.'
+WHERE param = "UserAdvManager"
+;';
+
+  $result = pwg_query($query);
+  $conf_UAM = pwg_db_fetch_assoc($result);
+    
+  $Newconf_UAM = unserialize($conf_UAM['value']);
+  
+  $Newconf_UAM[29] = 'false';
+  $Newconf_UAM[30] = 'You have requested a password reset on our gallery. Please, find below your new connection settings.';
+  $Newconf_UAM[31] = 'false';
+  $Newconf_UAM[32] = 'Sorry, your account has been deleted because you have not validated your registration in requested time. Please, try registration with a valid and non blocked email account.';
+  $Newconf_UAM[33] = 'false';
+  $Newconf_UAM[34] = 'false';
+  
+  $update_conf = serialize($Newconf_UAM);
+  
+  conf_update_param('UserAdvManager', pwg_db_real_escape_string($update_conf));
+
+  // Create new UAM entry in plugins table
+  $uam_new_version = "2.20.0";
+
+  $query = '
+INSERT INTO '.PLUGINS_TABLE.' (id, state, version)
+VALUES ("UserAdvManager","active","'.$uam_new_version.'")
+;';
+  
+  pwg_query($query);
+
+  // Delete old plugin entry in plugins table 
+  $query = '
+DELETE FROM '.PLUGINS_TABLE.'
+WHERE id="NBC_UserAdvManager"
+LIMIT 1
+;';
+  
+  pwg_query($query);
+
+  // rename directory
+  if (!rename(PHPWG_PLUGINS_PATH.'NBC_UserAdvManager', PHPWG_PLUGINS_PATH.'UserAdvManager'))
+  {
+    die('Fatal error on plugin upgrade process : Unable to rename directory ! Please, rename manualy the plugin directory name from ../plugins/NBC_UserAdvManager to ../plugins/UserAdvManager.');
+  }
+}
+
+/* upgrade from 2.20.3 to 2.20.4 */
+/* ***************************** */
+function upgrade_2203_2204()
+{
+  global $conf;
+
+  // Upgrading options
+  $query = '
+SELECT value
+  FROM '.CONFIG_TABLE.'
+WHERE param = "UserAdvManager"
+;';
+
+  $result = pwg_query($query);
+  $conf_UAM = pwg_db_fetch_assoc($result);
+    
+  $Newconf_UAM = unserialize($conf_UAM['value']);
+  
+  $Newconf_UAM[35] = 'false';
+  
+  $update_conf = serialize($Newconf_UAM);
+  
+  conf_update_param('UserAdvManager', pwg_db_real_escape_string($update_conf));
+}
+
+/* upgrade from 2.20.4 to 2.20.7 */
+/* ***************************** */
+function upgrade_2204_2207()
+{
+  global $conf;
+
+  // Upgrading options
+  $query = '
+SELECT value
+  FROM '.CONFIG_TABLE.'
+WHERE param = "UserAdvManager"
+;';
+
+  $result = pwg_query($query);
+  $conf_UAM = pwg_db_fetch_assoc($result);
+    
+  $Newconf_UAM = unserialize($conf_UAM['value']);
+  
+  $Newconf_UAM[36] = 'false';
+  $Newconf_UAM[37] = '-1';
+  
+  $update_conf = serialize($Newconf_UAM);
+
+  conf_update_param('UserAdvManager', pwg_db_real_escape_string($update_conf));
+}
+
+/* upgrade from 2.20.7 to 2.20.8 */
+/* ***************************** */
+function upgrade_2207_2208()
+{
+  global $conf;
+
+  // Upgrading options
+  $query = '
+SELECT value
+  FROM '.CONFIG_TABLE.'
+WHERE param = "UserAdvManager"
+;';
+
+  $result = pwg_query($query);
+  $conf_UAM = pwg_db_fetch_assoc($result);
+    
+  $Newconf_UAM = unserialize($conf_UAM['value']);
+
+  // Refactoring all configuration options
+  $Newconf_UAM[0] = $Newconf_UAM[0];
+  $Newconf_UAM[1] = $Newconf_UAM[1];
+  $Newconf_UAM[2] = $Newconf_UAM[2];
+  $Newconf_UAM[3] = $Newconf_UAM[3];
+  $Newconf_UAM[4] = $Newconf_UAM[4];
+  $Newconf_UAM[5] = $Newconf_UAM[6]; //remove osolete anonymus comments option
+  $Newconf_UAM[6] = $Newconf_UAM[7];
+  $Newconf_UAM[7] = $Newconf_UAM[8];
+  $Newconf_UAM[8] = $Newconf_UAM[9];
+  $Newconf_UAM[9] = $Newconf_UAM[10];
+  $Newconf_UAM[10] = $Newconf_UAM[11];
+  $Newconf_UAM[11] = $Newconf_UAM[12];
+  $Newconf_UAM[12] = $Newconf_UAM[13];
+  $Newconf_UAM[13] = $Newconf_UAM[14];
+  $Newconf_UAM[14] = $Newconf_UAM[15];
+  $Newconf_UAM[15] = $Newconf_UAM[16];
+  $Newconf_UAM[16] = $Newconf_UAM[17];
+  $Newconf_UAM[17] = $Newconf_UAM[18];
+  $Newconf_UAM[18] = $Newconf_UAM[19];
+  $Newconf_UAM[19] = $Newconf_UAM[20];
+  $Newconf_UAM[20] = $Newconf_UAM[21];
+  $Newconf_UAM[21] = $Newconf_UAM[22];
+  $Newconf_UAM[22] = $Newconf_UAM[23];
+  $Newconf_UAM[23] = $Newconf_UAM[24];
+  $Newconf_UAM[24] = $Newconf_UAM[25];
+  $Newconf_UAM[25] = $Newconf_UAM[26];
+  $Newconf_UAM[26] = $Newconf_UAM[27];
+  $Newconf_UAM[27] = $Newconf_UAM[28];
+  $Newconf_UAM[28] = $Newconf_UAM[29];
+  $Newconf_UAM[29] = $Newconf_UAM[30];
+  $Newconf_UAM[30] = $Newconf_UAM[31];
+  $Newconf_UAM[31] = $Newconf_UAM[32];
+  $Newconf_UAM[32] = $Newconf_UAM[33];
+  $Newconf_UAM[33] = $Newconf_UAM[34];
+  $Newconf_UAM[34] = $Newconf_UAM[35];
+  
+  // unset obsolete conf
+  unset ($Newconf_UAM[35]);
+  unset ($Newconf_UAM[36]);
+  unset ($Newconf_UAM[37]);
+  
+  $update_conf = serialize($Newconf_UAM);
+
+  conf_update_param('UserAdvManager', pwg_db_real_escape_string($update_conf));
+}
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/include/index.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/include/index.php	(revision 3742)
+++ /extensions/UserAdvManager/tags/2.20.11/include/index.php	(revision 3742)
@@ -0,0 +1,33 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | PhpWebGallery - a PHP based picture gallery                           |
+// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
+// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
+// +-----------------------------------------------------------------------+
+// | file          : $Id: index.php 1912 2007-03-16 06:30:07Z rub $
+// | last update   : $Date: 2007-03-16 07:30:07 +0100 (ven, 16 mar 2007) $
+// | last modifier : $Author: rub $
+// | revision      : $Revision: 1912 $
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/language/de_DE/description.txt
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/language/de_DE/description.txt	(revision 4226)
+++ /extensions/UserAdvManager/tags/2.20.11/language/de_DE/description.txt	(revision 4226)
@@ -0,0 +1,1 @@
+Stärkt die Möglichkeiten der User-Management
Index: /extensions/UserAdvManager/tags/2.20.11/language/de_DE/plugin.lang.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/language/de_DE/plugin.lang.php	(revision 11319)
+++ /extensions/UserAdvManager/tags/2.20.11/language/de_DE/plugin.lang.php	(revision 11319)
@@ -0,0 +1,335 @@
+<?php
+
+global $lang,$conf;
+
+$conf_UAM = unserialize($conf['UserAdvManager']);
+
+
+/* UserManager Tab */
+$lang['UAM_Registration_Date'] = 'Anmeldedatum';
+
+
+/* Mailing */
+$lang['UAM_infos_mail %s'] = '%s, finden Sie hier Ihre Informationen um die Galerie Login:';
+$lang['UAM_User: %s'] = 'Benutzer : %s';
+$lang['UAM_Password: %s'] = 'Passwort: %s';
+$lang['UAM_Link: %s'] = 'Klicken Sie bitte auf diesen Link bestätigen Sie Ihre Anmeldung: %s';
+
+
+/* Email confirmation page */
+$lang['UAM_title_confirm_mail'] = 'Überprüfen Sie Ihre Registrierung';
+$lang['UAM_confirm_mail_page_title'] = 'Überprüfen Sie Ihre Registrierung';
+$lang['confirm_mail_ok'] = '<br><br><br>Wir danken Ihnen, Ihre E-Mail-Adresse bestätigt haben und Ihre Anmeldung auf der Galerie. Viel Spaß!<br><br><br><br>';
+
+
+/* Errors and Warnings */
+$lang['UAM_audit_ok'] = 'Audit OK';
+$lang['UAM_Err_audit_username_char'] = '<b>Dieses Konto verwendet eine oder mehrere der verbotenen Zeichen:</b> ';
+$lang['UAM_Err_audit_email_forbidden'] = '<b>Dieses Konto verwendet eine E-Mail-Anbieter sind untersagt:</b> ';
+$lang['UAM_Err_audit_advise'] = '<b>Sie müssen Korrekturen an mit neuen Regeln die Sie aktiviert haben, nachzukommen durchzuführen.<br>Verwenden Sie ein Datenbank-Management-Dienstprogramm, um Benutzer-Accounts direkt in der Tabelle richtig ###_USERS';
+$lang['UAM_reg_err_login2'] = 'Benutzername muss nicht die folgenden Zeichen übereinstimmen: ';
+$lang['UAM_reg_err_login5'] = 'Ihre E-Mail-Anbieter für die Registrierung ist verboten. Gebannten E-Mail-Anbieter sind: ';
+$lang['UAM_empty_pwd'] = '[leeren Passwort]';
+$lang['UAM_no_update_pwd'] = '[Profil aktualisiert ohne Passwort geändert]';
+$lang['UAM_No_validation_for_Guest'] = 'Der &quot;Gast&quot;-Konto ist nicht Gegenstand der Validierung';
+$lang['UAM_No_validation_for_default_user'] = 'Der Standard-Konto ist nicht Gegenstand der Validierung';
+$lang['UAM_No_validation_for_Webmaster'] = 'Der &quot;Webmaster&quot;-Konto ist nicht Gegenstand der Validierung';
+$lang['UAM_No_validation_for_your_account'] = 'Ihre personnal admin-Konto ist nicht Gegenstand der Validierung';
+
+
+/* Processing messages */
+$lang['UAM_%d_Mail_With_Key'] = '%d Nachricht mit wichtigen Erneuerung gesendet wurde';
+$lang['UAM_%d_Mails_With_Key'] = '%d Nachrichten mit den wichtigsten Erneuerung geschickt wurden';
+$lang['UAM_%d_Reminder_Sent'] = '%d Erinnerung Nachricht wurde gesendet';
+$lang['UAM_%d_Reminders_Sent'] = '%d Erinnerung Nachrichten wurden gesendet';
+$lang['UAM_%d_Validated_User'] = '%d Benutzer manuell validiert';
+$lang['UAM_%d_Validated_Users'] = '%d Benutzer manuell validiert';
+
+
+/* Action button names */
+$lang['UAM_Delete_selected'] = 'Löschen';
+$lang['UAM_Mail_without_key'] = 'Erinnerung ohne Schlüssel';
+$lang['UAM_Mail_with_key'] = 'Erinnerung mit Schlüssel';
+
+
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.12.0 and 2.12.1
+/* Global Configuration Tab */
+$lang['UAM_PasswordTest'] = 'Ergebnis Berechnung';
+/* Ghost Tracker Tab */
+$lang['UAM_Tab_GhostTracker'] = 'Geist Tracker';
+$lang['UAM_Reminder'] = 'E-Mail-Erinnerung';
+$lang['UAM_Reminder_Sent_OK'] = 'JA';
+$lang['UAM_Reminder_Sent_NOK'] = 'NEIN';
+/* Errors and Warnings */
+$lang['UAM_save_config'] ='Konfiguration gespeichert.';
+$lang['UAM_reg_err_login3'] = 'Sicherheit: Das Passwort ist obligatorisch !';
+$lang['UAM_reg_err_login4_%s'] = 'Sicherheit: Ein Steuer-System berechnet eine Partitur von der gewählten Passwörter Komplexität. Die Komplexität des Passworts zu niedrig ist (score = %s). Bitte wählen Sie ein neues Passwort zu mehr Sicherheit, indem Sie folgende Regeln:<br>
+- Verwenden Sie Buchstaben und Zahlen<br>
+- Verwenden Sie Groß-und Kleinschreibung<br>
+- Erhöhung ihrer Länge (Anzahl Zeichen)<br>
+Die minimale Passwörter der Gäste ist: ';
+$lang['UAM_No_reminder_for_Guest'] = 'Der &quot;Gast&quot;-Konto ist nicht zu empfangen Mahnungen Geist Tracker';
+$lang['UAM_No_reminder_for_default_user'] = 'Der Standard-Account ist nicht zu empfangen Mahnungen Geist Tracker';
+$lang['UAM_No_reminder_for_Webmaster'] = 'Der &quot;Webmaster&quot;-Konto ist nicht zu empfangen Mahnungen Geist Tracker';
+$lang['UAM_No_reminder_for_your_account'] = 'Sie personnal Admin-Konto ist nicht zu empfangen Mahnungen Geist Tracker';
+/* Action button names */
+$lang['UAM_audit'] = 'Audit-Einstellungen';
+$lang['UAM_submit'] = 'Einstellungen speichern';
+// --------- End: New or revised $lang ---- from version 2.12.0 and 2.12.1
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.12.2
+/* Errors and Warnings */
+$lang['UAM_GhostTracker_Init_OK'] = 'Geist Tracker neu gehstellt !';
+/* Action button names */
+$lang['UAM_GT_Reset'] = 'Geist Tracker neu stellen';
+// --------- End: New or revised $lang ---- from version 2.12.2
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.12.8
+/* Errors and Warnings */
+$lang['UAM_mail_exclusionlist_error'] = 'Warnung! Sie haben eine neue Zeile eingetragen (CR-LF) an den Anfang der E-Mail-Ausschluss-Liste (in rot siehe unten). Obwohl diese neue Linie nicht sichtbar ist, ist es noch vorhanden und kann zu Funktionsstörungen des Plugins verursachen. Bitte, re-Typ in Ihrem Ausschluss-Liste in einer Weise, die nicht durch einen Zeilenumbruch beginnen wird.';
+// --------- End: New or revised $lang ---- from version 2.12.8
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.13.0
+/* UserList Tab */
+$lang['UAM_UserList_Title'] = 'Monitoring registrierte Benutzer';
+$lang['UAM_Nb_Days'] = 'Anzahl der Tage seit<br>dem letzten Besuch';
+// --------- End: New or revised $lang ---- from version 2.13.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.13.4
+/* Global Configuration Tab */
+$lang['UAM_Title_Tab'] = 'UserAdvManager - Version : ';
+$lang['UAM_SubTitle1'] = 'Plugin-Konfiguration';
+$lang['UAM_Tab_Global'] = 'Konfiguration';
+$lang['UAM_Title1'] = 'Einstellen Einschränkungen für Registrierungen';
+$lang['UAM_Title2'] = 'Einstellen Bestätigungen und Validierungen der Registrierung';
+$lang['UAM_Title3'] = 'Einstellen der Registrierung durchgeführt und andere Optionen';
+$lang['UAM_Title4'] = 'Tipps und Beispiele für die Benutzung';
+$lang['UAM_No_Casse'] = 'Benutzernamen: Groß-und Kleinschreibung';
+$lang['UAM_Username_Char'] = ' Benutzernamen: Ausschluss von Zeichen';
+$lang['UAM_Username_Char_true'] = ' Zeichen Verboten:<br>(Verwenden Sie ein Komma, um ein Zeichen getrennt)<br><br>';
+$lang['UAM_Username_Char_false'] = ' Erlauben Sie alle (Standard)';
+$lang['UAM_Password_Enforced'] = 'Stärkung des Sicherheitsniveaus von Kennwörtern';
+$lang['UAM_AdminPassword_Enforced'] = 'Die Anwendung für Administratoren';
+$lang['UAM_PasswordTest'] = 'Passwort testen : ';
+$lang['UAM_ScoreTest'] = 'Ergebnis : ';
+$lang['UAM_MailExclusion'] = 'E-Mail-Domänen Ausgrenzung';
+$lang['UAM_MailExclusion_true'] = ' Schließen Sie die folgenden E-Mail-Domänen:<br>(Verwenden Sie ein Komma zu trennen jede Domain)';
+
+$lang['UAM_Mail_Info'] = 'Informationen E-Mail an Benutzer:';
+$lang['UAM_MailInfo_Text'] = ' Anpassen der Informationen per E-Mail:';
+$lang['UAM_Confirm_Mail'] = 'Bestätigung der Anmeldung:';
+$lang['UAM_ConfirmMail_Text'] = ' Anpassen der E-Mail-Bestätigung';
+$lang['UAM_Confirm_grpstat_notice'] = 'Achtung: Es ist ratsam, entweder die Gruppe oder die Validierung Satzung und nicht beide gleichzeitig.';
+$lang['UAM_Confirm_Group'] = 'Validation Gruppen<br>(verlassen ------- zum nicht zu beeinträchtigen Gruppe)';
+$lang['UAM_Confirm_Status'] = 'Validation Satzung<br>(verlassen ------- ein Versäumnis des Piwigo zu halten)';
+$lang['UAM_No_Confirm_Group'] = 'Gruppe für Benutzer, die nicht validiert ihrer Eintragung<br>';
+$lang['UAM_Validated_Group'] = 'Gruppe für Benutzer, die ihre Anmeldung bestätigt<br>';
+$lang['UAM_No_Confirm_Status'] = 'Status für Benutzer, die nicht validiert ihrer Eintragung<br>';
+$lang['UAM_Validated_Status'] = 'Status für Benutzer, die ihre Anmeldung bestätigt<br>';
+$lang['UAM_ValidationLimit_Info'] = 'Anmeldeschluss Validierung beschränkt';
+$lang['UAM_ConfirmMail_TimeOut_true'] = ' Aktivieren. Anzahl der Tage bis zum Ablauf: ';
+$lang['UAM_ConfirmMail_Remail'] = 'Erinnern Unvalidierte User';
+$lang['UAM_ConfirmMail_ReMail_Txt1'] = 'Anpassen der Erinnerungs-Nachricht <b><u>mit</u></b> neue Regeneration der Schlüssel Validierung.';
+$lang['UAM_ConfirmMail_ReMail_Txt2'] = 'Anpassen der Erinnerungs-Nachricht <b><u>ohne</u></b> neue Regeneration der Schlüssel Validierung.';
+
+$lang['UAM_GhostTracker'] = 'Geist Besucher-Management (Geist Tracker)';
+$lang['UAM_GhostTracker_true'] = ' Aktivieren. Maximale Zeit in Tagen zwischen zwei Besuche: ';
+$lang['UAM_GhostTracker_ReminderText'] = 'Anpassen der Geist Tracker Erinnerungs-Nachricht';
+$lang['UAM_LastVisit'] = ' Tracking registrierte Benutzer';
+
+$lang['UAM_Tab_UserManager'] = 'Tracking Validierungen';
+
+/* UserManager Tab */
+$lang['UAM_SubTitle3'] = 'Tracking Validierungen';
+$lang['UAM_UserManager_Title'] = 'Tracking Validierungen';
+/* Ghost Tracker Tab */
+$lang['UAM_SubTitle4'] = 'Geist Tracker';
+$lang['UAM_GT_Init'] = 'Initializing Ghost Tracker';
+$lang['UAM_GhostTracker_Title'] = 'Geist Besucher-Management';
+$lang['UAM_GhostTracker_Init'] = 'Wenn Sie diese Funktion zum ersten Mal oder haben Sie nach einem langen Zeitraum aus, in dem neue Besucher registriert sind, müssen Sie initialisieren, oder setzen Sie den Geist Tracker reaktiviert. Dieser Vorgang ist nur nach Aktivierung oder Reaktivierung von der Möglichkeit gemacht. Bitte klicken Sie <u>einmal</u> die Reset-Taste unten.';
+/* UserList Tab */
+$lang['UAM_SubTitle5'] = 'Tracking-Besucher';
+$lang['UAM_Tab_UserList'] = 'Tracking-Besucher';
+/* Mailing */
+$lang['UAM_Add of %s'] = 'Profil erstellt für %s';
+$lang['UAM_Update of %s'] = 'Profil aktualisieren %s';
+/* Email confirmation page */
+$lang['confirm_mail_bad'] = '<br><br><br>Ihre Aktivierungs-Schlüssel ist falsch oder abgelaufen oder Sie haben bereits validiert Ihrem Konto haben, wenden Sie sich bitte an den Webmaster, um dieses Problem zu beheben.<br><br><br><br>';
+/* Mailing */
+$lang['UAM_Ghost_reminder_of_%s'] = '%s, Dies ist eine Erinnerung per E-Mail';
+$lang['UAM_Reminder_with_key_of_%s'] = '%s, Ihre Validierungs-Zahl wurde erneuert';
+$lang['UAM_Reminder_without_key_of_%s'] = '%s, Ihre Validierung Schlüssel abläuft';
+/* Errors and Warnings */
+$lang['UAM_Err_GhostTracker_Settings'] = 'Diese Seite ist nur verfügbar, wenn &quot;Geist Tracker&quot; aktiv &quot;Einstellen der Registrierung durchgeführt und andere Optionen&quot;.';
+$lang['UAM_Err_Userlist_Settings'] = 'Diese Seite ist nur verfügbar, wenn &quot;Monitoring registrierte Benutzer&quot; ist aktiv in der &quot;Einstellung der Registrierung durchgeführt und andere Optionen&quot;';
+// --------- End: New or revised $lang ---- from version 2.13.4
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.14.0
+$lang['UAM_AdminConfMail'] = 'Bestätigung der Anmeldung für Administratoren';
+// --------- End: New or revised $lang ---- from version 2.14.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.0
+$lang['UAM_confirmmail_custom_Txt1'] = 'Text der Bestätigungs-Seite - Bestätigung akzeptiert';
+$lang['UAM_confirmmail_custom_Txt2'] = 'Text der Bestätigungs-Seite - Bestätigung abgelehnt';
+$lang['UAM_LastVisit_Date'] = 'Letzter Besuch';
+$lang['UAM_Nb_Days'] = 'Differenz in Tagen';
+$lang['UAM_Err_UserManager_Settings'] = 'Diese Seite ist nur verfügbar, wenn "Bestätigung der Anmeldung" aktiv ist und wenn eine Gruppe von nicht validierte Besuchern wird in "Einstellen Bestätigungen und Validierungen der Registrierung" konfiguriert.';
+// --------- End: New or revised $lang ---- from version 2.15.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.1
+$lang['UAM_Support_txt'] = 'Die offizielle Unterstützung für dieses Plugin ist nur auf diesem Diskussionsforum von Piwigo:<br>
+<a href="http://piwigo.org/forum/viewtopic.php?id=15015" onclick="window.open(this.href);return false;">Englisch-Forum - http://piwigo.org/forum/viewtopic.php?id=15015</a><br><br>
+Ebenfalls erhältlich, das Projekt Bugtracker: <a href="http://piwigo.org/bugs/" onclick="window.open(this.href);return false;">http://piwigo.org/bugs/</a>';
+// --------- End: New or revised $lang ---- from version 2.15.1
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.4
+$lang['UAM_Force_Validation'] = 'Handbuch Validierung';
+$lang['UAM_Confirm_Mail_true'] = ' Aktivieren - Validation von Benutzer';
+$lang['UAM_Confirm_Mail_local'] = ' Aktivieren - Validation von admin (keine Validierung Key gesendet)';
+$lang['UAM_RedirToProfile'] = 'Umleitung auf "Benutzerdaten" Seite';
+// --------- End: New or revised $lang ---- from version 2.15.4
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.16.0
+$lang['UAM_Expired_Group'] = '<b>Gruppe</b> für Benutzer-Registrierung abgelaufen<br>';
+$lang['UAM_Expired_Status'] = '<b>Status</b> für Benutzer-Registrierung abgelaufen<br>';
+$lang['UAM_GTAuto'] = 'Automatische Verwaltung von Geist Benutzern';
+$lang['UAM_GTAutoDel'] = 'Automatisches Löschen von Konten';
+$lang['UAM_GTAutoGp'] = 'Automatischer Wechsel der Gruppe / Status';
+$lang['UAM_GTAutoMail'] = 'Automatisches Versenden einer E-Mail beim Wechsel Gruppe / Status';
+$lang['UAM_Deleted_Account_Redirection_Page'] = 'Zugriff verweigert - Account zerstört!';
+$lang['UAM_title_redir_page'] = 'Zugriff verweigert sich für ein Konto zerstört!';
+$lang['UAM_Error_GTAutoMail_cannot_be_set_without_ConfirmMail'] = 'Konsistenz-Fehler in der Konfiguration gewählt:<br><br>
+"Einstellen der Registrierung durchgeführt und andere Optionen > Geist Besucher-Management (Geist Tracker) > Automatische Verwaltung von Geist Benutzern > Automatisches Versenden einer E-Mail beim Wechsel Gruppe / Status" kann nicht aktiviert werden, wenn "Einstellen Bestätigungen und Validierungen der Registrierung > Bestätigung der Anmeldung - Validation von Benutzer" ist zunächst nicht aktiviert.<br><br>
+Um die Kohärenz, die Option "Automatisches Versenden einer E-Mail beim Wechsel Gruppe / Status" wurde automatisch "deaktiviert" neu positioniert.<br><br>';
+$lang['UAM_Demotion of %s'] = 'Herabstufung von %s';
+$lang['UAM_AdminValidationMail_Text'] = 'Mitteilung der manuellen Registrierung Validierung';
+$lang['UAM_Validation of %s'] = 'Validierung von %s';
+// --------- End: New or revised $lang ---- from version 2.16.0
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.0
+/*TODO*/$lang['UAM_CustomPasswRetr'] = 'Customize lost password email content';
+/*TODO*/$lang['UAM_USRAuto'] = 'Automatic management of unvalidated users';
+/*TODO*/$lang['UAM_USRAutoDel'] = 'Custom message on deleted account';
+/*TODO*/$lang['UAM_USRAutoMail'] = 'Automated email reminder';
+$lang['UAM_Disable'] = ' Deaktivieren (Standard)';
+$lang['UAM_Enable'] = ' Aktivieren ';
+/*TODO*/$lang['UAM_Tips1'] = 'Information of non-validated registration with UAM and PWG_Stuffs';
+/*TODO*/$lang['UAM_Tips1_txt'] = '
+          <ul>
+            <li>
+            Goals: Inform the visitor that the registration is awaiting approval by displaying a personal block on the home page of the gallery, and this, as registration is not approved.
+            <br><br>
+            <b>Warnung: Im Standard-Betrieb, der "Gast" sieht nur den öffentlichen Kategorien, ohne Angaben Nachricht.</b>
+            </li><br><br>
+            <li>
+Voraussetzung:<br>
+- Eine Galerie mit allen oder einigen privaten Kategorien, sichtbar nur durch registrierte Benutzer<br>
+- Mindestens 2 der folgenden Piwigo Nutzergruppen: "Warten", ohne die Erlaubnis der privaten Gruppen und "Validiert" mit allen Berechtigungen für den privaten Kategorien<br>
+- UAM plugin<br>
+- PWG Stuffs plugin, für das Hinzufügen eines speziellen UAM Moduls<br>
+- Optional können Sie das Plugin Extended Description Multi-Sprachen<br>
+            </li><br><br>
+            <li>
+Etappen:<br><br>
+A. In plugin UAM:
+              <ol>
+                <li>Aktivieren Sie Anmeldebestätigung</li>
+                <li>Aktivieren PWG Stuffs Modul</li>
+                <li>Geben Sie den Text für weitere Erklärung, die angebracht werden, um Anmeldebestätigung mail sendet. Wenn das Plugin Extended Description aktiviert ist, können die Sprach-Tags verwendet werden</li>
+                <li>Wählen Sie das "Warten"-Gruppe unter "Für Anwender, die noch nicht validiert ihrer Eintragung"</li>
+                <li>Wählen Sie das "Validiert"-Gruppe unter "Für Anwender, die ihre Anmeldung bestätigt haben"</li>
+                <li>Speichern Sie das Plugin-Konfiguration</li>
+              </ol>
+<br>
+B. In plugin PWG Stuffs :
+              <ol>
+                <li>Gehen Sie zur Registerkarte "Hinzufügen eines neuen Moduls"</li>
+                <li>Wählen Sie "UAM-Modul"</li>
+                <li>Konfigurieren Sie das Modul unter Angabe der Titel (zB "Anmeldung bis Validierung") und seine Beschreibung, und aktivieren Sie nur "Warten" in der Liste der Gruppen erlaubt</li>
+                <li>Kompletten Inhalt des Moduls mit der Meldung Informationen, die den Benutzern angezeigt werden nicht validiert. Als UAM kann Markup-Sprachen verwendet werden, wenn das Plugin Extended Description aktiviert ist</li>
+                <li>Check "Display das Modul auf der Homepage der Website"</li>
+                <li>Überprüfen Sie die Konfiguration des Moduls</li>
+              </ol>
+            </li>
+          </ul>';
+/*TODO*/$lang['UAM_Tips2'] = 'Information of non-validated registration with UAM and Additional Pages';
+/*TODO*/$lang['UAM_Tips2_txt'] = '
+          <ul>
+            <li>
+            Goals: Inform the visitor that the registration is awaiting validation by posting an additional page replacing the standard index page gallery at each of these connections, and this, as registration is not approved.
+            <br><br>
+            Advantages over the method with PWG_Stuffs: Allow formatting information and displaying the information immediately upon registration of visitors.
+            </li><br><br>
+            <li>
+Voraussetzung:<br>
+- Eine Galerie mit allen oder einigen privaten Kategorien, sichtbar nur durch registrierte Benutzer<br>
+- Mindestens 2 der folgenden Piwigo Nutzergruppen: "Warten", ohne die Erlaubnis der privaten Gruppen und "Validiert" mit allen Berechtigungen für den privaten Kategorien<br>
+- UAM plugin<br>
+- Additional Pages plugin for adding and managing an additional page to replace the default index page of the gallery<br>
+- Optional können Sie das Plugin Extended Description Multi-Sprachen<br>
+            </li><br><br>
+            <li>
+Etappen:<br><br>
+A. In plugin UAM:
+              <ol>
+                <li>Aktivieren Sie Anmeldebestätigung</li>
+                <li>Geben Sie den Text für weitere Erklärung, die angebracht werden, um Anmeldebestätigung mail sendet. Wenn das Plugin Extended Description aktiviert ist, können die Sprach-Tags verwendet werden</li>
+                <li>Wählen Sie das "Warten"-Gruppe unter "Für Anwender, die noch nicht validiert ihrer Eintragung"</li>
+                <li>Wählen Sie das "Validiert"-Gruppe unter "Für Anwender, die ihre Anmeldung bestätigt haben"</li>
+                <li>Speichern Sie das Plugin-Konfiguration</li>
+              </ol>
+<br>
+B. In plugin Additional Pages:<br>
+                <b>NOTE : The management of access rights for groups on Additional Pages must be turned on (see plugin configuration settings).</b>
+                <br>
+              <ol>
+                <li>Add a new page with at least the following parameters:</li>
+                <ul>
+                  <li>Page name: The name you wish to give to the additional page (ie: Registration not validated)</li>
+                  <li>Set as homepage checked</li>
+                  <li>Groups allowed: Check the box corresponding to the group "Waiting" configured in UAM</li>
+                  <li>Content: The text you want to use for visitors.</li>
+                </ul>
+                <br>
+                <li>And that\'s it! Only visitors registered and whose registration has not been validated will see this additional index page.</li>
+              </ol>
+            </li>
+          </ul>';
+/*TODO*/$lang['UAM_No_Ghosts'] = 'No ghosts visitors for the moment';
+/*TODO*/$lang['UAM_No_Userlist'] = 'No visitors to list for the moment';
+/*TODO*/$lang['UAM_No_Usermanager'] = 'No unvalidated registers to list for the moment';
+$lang['UAM_Stuffs_Title'] = 'UAM-Modul';
+/*TODO*/$lang['UAM_Stuffs_Desc'] = 'Adds an information block for unvalidated users';
+$lang['UAM_Stuffs'] = 'PWG Stuffs Modul';
+// --------- End: New or revised $lang ---- from version 2.20.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.3
+$lang['UAM_DumpTxt'] = 'Sichern Sie Ihre Konfiguration';
+$lang['UAM_Dump_Download'] = 'Zum Download der Backup-Datei, überprüfen Sie bitte dieses Feld:';
+$lang['UAM_Save'] = 'Starten der Backup';
+$lang['UAM_Dump_OK'] = 'Backup-Datei erfolgreich erstellt';
+$lang['UAM_Dump_NOK'] = 'Fehler: Backup-Datei kann nicht erstellt werden !';
+// --------- End: New or revised $lang ---- from version 2.20.3
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.4
+$lang['UAM_HidePassw'] = 'Passwort im Klartext in der Informations-E-Mail';
+// --------- End: New or revised $lang ---- from version 2.20.4
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.11
+/*TODO*/$lang['UAM_Error_Using_illegal_flag'] = 'Syntax error ! The [Kdays] AutoText flag is used as the "Anmeldeschluss Validierung beschränkt" option was not activated. Please activate the option or correct the text field(s) colored in red.';
+// --------- End: New or revised $lang ---- from version 2.20.11
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/language/de_DE/help/plugin.lang.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/language/de_DE/help/plugin.lang.php	(revision 11321)
+++ /extensions/UserAdvManager/tags/2.20.11/language/de_DE/help/plugin.lang.php	(revision 11321)
@@ -0,0 +1,327 @@
+<?php
+global $lang;
+
+$lang['UAM_restricTitle'] = 'Einschränkungen für Registrierungen';
+$lang['UAM_confirmTitle'] = 'Bestätigungen und Validierungen der Registrierung';
+$lang['UAM_confirmTitle_d'] = '
+- Informationen E-Mail generation<br>
+- Registrieren und Validierung E-Mail generation<br>
+- Gruppen oder Status automatisch Beitritt<br>
+- Anmeldeschluss Validierung<br>
+- Reminder per E-Mail generation<br>
+...
+';
+$lang['UAM_miscTitle'] = 'Registrierung gefolgt und andere Optionen';
+$lang['UAM_carexcTitle'] = 'Benutzernamen: Ausschluss von Zeichen';
+$lang['UAM_carexcTitle_d'] = 'Es mag interessant sein, bestimmte Zeichen in Benutzernamen verbieten (Beispiel: verweigern Logins mit &quot;@&quot;). Diese Option erm&ouml;glicht es, Zeichen oder Zeichenfolge, Veranstaltungen auszuschlie&szlig;en.<br>
+NB: Die Option kann auch ausschließen, ganze Wörter.
+<br><br>
+<b style=&quot;color: red;&quot;>Warnung: Diese Option hat keine Auswirkungen auf den Benutzernamen erstellt vor ihrer Aktivierung.</b>';
+$lang['UAM_passwTitle'] = 'Stärkung des Sicherheitsniveaus von Kennwörtern';
+$lang['UAM_passwTitle_d'] = 'Durch die Aktivierung dieser Option ist zwingend die Beschlagnahme eines Passwortes bei der Anmeldung und das Kennwort erfordert vom Besucher ausgewählt, um ein Mindestmaß an Komplexität gerecht zu werden. Wird der Schwellenwert nicht erreicht wird, die Gäste erzielt, und die Mindestpunktzahl erreicht werden soll angezeigt werden, zusammen mit Empfehlungen an den Wert dieser Gäste zu steigern.<br><br>
+Es gibt Feldtest der Komplexität eines Passworts zu messen und sich leisten können, eine Vorstellung von der Partitur zu erhalten, um komplexe, kundenspezifische definieren.<br><br>
+Hinweis: Die Gäste eines Passwortes ist auf der Grundlage mehrerer Parameter: Länge berechnet, die Art der verwendeten Zeichen (Buchstaben, Ziffern, Großbuchstaben, Kleinbuchstaben, Sonderzeichen). Ein Wert unter 100 wird als gering, zwischen 100 und 500, die Komplexität ist durchschnittlich, mehr als 500, die Sicherheit ist sehr gut.';
+$lang['UAM_passwtestTitle'] = 'Prüfung der Komplexität eines Passworts';
+$lang['UAM_passwtestTitle_d'] = 'Geben Sie das Kennwort zu testen, und klicken Sie auf &quot;Ergebnis Berechnung&quot;, um das Ergebnis zu sehen.';
+$lang['UAM_passwadmTitle'] = 'Die Anwendung für Administratoren';
+$lang['UAM_passwadmTitle_d'] = 'Ein Administrator kann einen Benutzer-Account erstellen, mit oder ohne Anwendung der Regel der Komplexität des Computings.<br><br>
+Hinweis: Wenn der Benutzer erstellte Konto will Passwort zu ändern und Passwörter für die Benutzer Stärkung aktiv ist, wird es vorbehaltlich der Regel-Satz.';
+$lang['UAM_mailexcTitle'] = 'Ausschluss von Mail-Domänen';
+$lang['UAM_infomailTitle'] = 'Informationen E-Mail an Benutzer';
+$lang['UAM_infomailTitle_d'] = 'Diese Option ermöglicht die Automatisierung Senden einer E-Mail-Informationen an einen Benutzer bei der Anmeldung oder bei Änderungen sein Passwort oder E-Mail-Adresse in ihrem Profil.<br><br>
+Der Inhalt der Nachricht gesendet wird von einem anpassbaren Teil komponiert, um eine kleine Begrüßung und Einführung fester Bestandteil in denen die Login, Passwort und E-Mail-Adresse des Benutzers.';
+$lang['UAM_infotxtTitle'] = 'Anpassen der Informationen per E-Mail';
+$lang['UAM_confirmtxtTitle'] = 'Anpassen der E-Mail-Bestätigung';
+$lang['UAM_confirmgrpTitle'] = 'Validation Gruppen';
+$lang['UAM_confirmgrpTitle_d'] = '<b style=&quot;color: red;&quot;>WARNUNG: Validierung Gruppen setzt voraus, dass Sie mindestens einen Benutzer Gruppe angelegt haben und definiert ist &quot;by default&quot; im User-Gruppen Piwigo-Management.</b><br><br>
+Die Gruppen sind validiert f&uuml;r den Einsatz in Verbindung mit der &quot;Best&auml;tigung der Anmeldung&quot;';
+$lang['UAM_confirmstatTitle'] = 'Validation Satzung';
+$lang['UAM_confirmstatTitle_d'] = '<b style=&quot;color: red;&quot;>WARNUNG: Die Verwendung des Status Validierung erfordert, dass Sie die &quot;Gast&quot;-Nutzer mit Standard-Einstellung (als User Template) f&uuml;r neu registrierte gehalten haben. Hinweis: Sie k&ouml;nnen einem anderen Benutzer als neue Vorlage f&uuml;r registrierte gesetzt. Bitte beachten Sie die Dokumentation des Piwigo f&uuml;r weitere Details.</b><br><br>
+Die Satzung sind validiert f&uuml;r den Einsatz in Verbindung mit der &quot;Best&auml;tigung der Anmeldung&quot;';
+$lang['UAM_validationlimitTitle'] = 'Anmeldeschluss Validierung beschränkt';
+$lang['UAM_remailTitle'] = 'Erinnern Unvalidierte User';
+$lang['UAM_remailtxt1Title'] = 'Reminder per E-Mail mit den neuen Schlüssel generiert';
+$lang['UAM_remailtxt2Title'] = 'Reminder per E-Mail, ohne dass neue Schlüssel generiert';
+$lang['UAM_ghosttrackerTitle'] = 'Geist Besucher-Management';
+$lang['UAM_gttextTitle'] = 'Geist Tracker Erinnerungs-Nachricht';
+$lang['UAM_lastvisitTitle'] = 'Tracking registrierte Benutzer';
+$lang['UAM_lastvisitTitle_d'] = 'Dies aktiviert einen Tisch in der &quot;Tracking users&quot;-Reiter, die Mitglieder der Galerie aufgef&uuml;hrt sind und zum Zeitpunkt ihres letzten Besuch und verbrachte Zeit (Tage) seit ihrem letzten Besuch. Die &Uuml;berwachung ist rein informativ f&uuml;r den Administrator der Galerie.';
+$lang['UAM_tipsTitle'] = 'Tipps und Beispiele';
+$lang['UAM_tipsTitle_d'] = 'Tipps und verschiedene Anwendungsbeispiele';
+$lang['UAM_userlistTitle'] = 'Tracking Benutzer';
+$lang['UAM_usermanTitle'] = 'Tracking Validierungen';
+$lang['UAM_gtTitle'] = 'Geist Besucher-Management';
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.14.0
+$lang['UAM_adminconfmailTitle'] = 'Best&auml;tigung der Anmeldung f&uuml;r Administratoren';
+$lang['UAM_adminconfmailTitle_d'] = 'Sie k&ouml;nnen diese Validierung deaktivieren nur f&uuml;r Benutzer-Accounts durch den Administrator &uuml;ber Piwigo\'s Benutzer-Management-Schnittstelle geschaffen.<br><br>
+Bei Aktivierung dieser Option, E-Mail-Best&auml;tigung f&uuml;r die Registrierung wird f&uuml;r jeden Benutzer vom Administrator erstellt wurde gesendet werden.<br><br>
+Durch die Deaktivierung dieser Option (Standard), nur die E-Mail-Informationen gesendet werden (wenn &quot;Informations-E-Mail an Benutzer&quot; aktiviert ist).';
+// --------- End: New or revised $lang ---- from version 2.14.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.4
+$lang['UAM_restricTitle_d'] = '
+- Charaktere Ausgrenzung<br>
+- Passwort Durchsetzung<br>
+- E-Mail-Domänen Ausgrenzung<br>
+...
+';
+$lang['UAM_userlistTitle_d'] = 'Diese Seite gibt es zur Information an den Administrator. Es zeigt eine Liste von allen Nutzern auf der Galerie zeigt das Datum und die Anzahl der Tage seit dem letzten Besuch registriert. Die Liste ist in aufsteigender Reihenfolge der Anzahl der Tage sortiert.
+<br><br>
+<b><u>Erst wenn der Geist Tracker aktiv ist</u></b>, wird die Anzahl der Tage ohne einen Besuch wie der folgende Farbcode nach dem Maximum in der Geist Tracker Optionen:
+<br>
+- <b style=&quot;color: lime;&quot;>Grün</b> : Wenn der Benutzer hat die Galerie <b style=&quot;color:lime;&quot;><u>weniger als 50%</u></b> besucht der angegebene H&ouml;chstzahl in der Geist-Tracker.<br>
+- <b style=&quot;color: orange;&quot;>Orange</b> : Wenn der Benutzer hat die Galerie <b style=&quot;color:orange;&quot;><u>zwischen 50% und 99%</u></b> besucht der angegebene H&ouml;chstzahl in der Geist-Tracker.<br>
+- <b style=&quot;color: red;&quot;>Rot</b> : Wenn der Benutzer hat die Galerie <b style=&quot;color:red;&quot;><u>f&uuml;r mehr als 100%</u></b> besucht der angegebene H&ouml;chstzahl in der Geist-Tracker. <b><u>In diesem Fall muss der Benutzer sich auch in der Geist-Tracker-Tabelle.</u></b><br>
+<br>
+Beispiel:
+<br>
+Die Höchstdauer von Geist Tracker ist so konfiguriert, dass 100 Tage.
+<br>
+Ein Benutzer wird in grün angezeigt, wenn er die Galerie für weniger als 50 Tagen besucht haben, in orange, wenn sein letzter Besuch stattgefunden hat zwischen 50 und 99 Tage und rot für 100 Tage und mehr.
+<br><br>
+<b>HINWEIS</b>: Die Liste wird nicht angezeigt, die nicht validiert ihrer Registrierung (falls die M&ouml;glichkeit der Validierung der Registrierung aktiviert ist). Diese Benutzer werden dann in besonderer Weise in der &quot;Tracking Validierungen verwaltet&quot; aus.
+<br><br>
+<b>Die Sortierung der Tabelle Function</b>: Sie können die Daten mit einem Klick auf die Spaltenüberschriften angezeigt. Halten Sie SHIFT-Taste, um Art bis zu 4 gleichzeitige maximale Spalten.';
+$lang['UAM_usermanTitle_d'] = 'Wenn die Begrenzung der Frist für die Anmeldung aktiviert ist, finden Sie weiter unten die Liste der Benutzer, deren Validierung Eintragung erwartet wird, <b style=&quot;text-decoration: underline;&quot;>ob oder nicht</b> sind sie in der Zeit zu validieren.<br><br>
+Das Datum der Eintragung wird in grün angezeigt, wenn der Benutzer unter dem betreffenden Frist wird auf seine Registrierung zu bestätigen. In diesem Fall ist die Validierung Schlüssel noch gültig ist, und wir können eine E-Mail mit oder ohne eine neue Validierung Schlüssel zu schicken.<br><br>
+Wenn das Datum der Eintragung erscheint in Rot, die Validierung abgelaufen. In diesem Fall müssen Sie eine E-Mail mit der Regeneration der Validierung Schlüssel senden, wenn Sie dem Benutzer die Möglichkeit, ihre Anmeldung bestätigen möchten.<br><br>
+In allen Fällen ist es möglich, manuell die Validierung Kraft.<br><br>
+In dieser Ansicht können Sie:
+<br><br>
+- Löschen Sie manuell Konten <b>(Handbuch Drain)</b>
+<br>
+- Generieren Sie per E-Mail-Erinnerung <b>ohne</b> erzeugt einen neuen Schlüssel. Warnung: Senden Sie eine E-Mail-Erinnerung für die angestrebten Besucher. Diese Funktion kann nicht zurückgesetzt dem Zeitpunkt der Eintragung des angestrebten Besucher und das Zeitlimit ist weiterhin gültig.
+<br>
+- Generieren Sie per E-Mail-Erinnerung <b>mit</b> erzeugt einen neuen Schlüssel. Warnung: Senden Sie eine E-Mail-Erinnerung für die angestrebten Besucher. Diese Funktion setzt auch den Zeitpunkt der Eintragung des angestrebten Besucher, die die Frist für die Validierung erweitern entspricht.
+<br>
+- Senden einer Registrierung erwartet Validierung von Hand, auch wenn das Ablaufdatum überschritten ist <b>(zwingen Validierung)</b>.
+<br><br>
+<b>Die Sortierung der Tabelle Function</b> : Sie können die Daten mit einem Klick auf die Spaltenüberschriften angezeigt. Halten Sie SHIFT-Taste, um Art bis zu 4 gleichzeitige maximale Spalten.';
+$lang['UAM_gtTitle_d'] = 'Als Ghost Tracker aktiviert ist und initialisiert wurde, finden Sie weiter unten die Liste der registrierten Besucher, die sich seit x Tagen zur&uuml;ckgegeben haben. &quot;x&quot; ist die Anzahl der Tage konfiguriert in der General-Setup. Dar&uuml;ber hinaus finden Sie eine Spalte angibt, ob eine E-Mail-Erinnerung hat, um die angestrebten Besucher gesendet wurde. So k&ouml;nnen Sie auf einen Blick sehen und zu behandeln Besucher, die nicht wegen der Erinnerung genommen haben.<br><br>In dieser Ansicht können Sie:
+<br><br>
+- Löschen Sie manuell Konten <b>(Handbuch Drain)</b>
+<br>
+- Generieren Sie per E-Mail-Erinnerung <b>mit dem Zurücksetzen der letzte Besuch date</b>. Dies erlaubt es, einen Platzhalter, um die angestrebten Besucher geben. Wenn der Besucher bereits eine Mahnung erhalten haben, durch nichts daran gehindert, eine neue Mail, die wieder zurückgesetzt werden, in der Tat übel, dem letzten Tag besuchen.
+<br><br>
+<b>Die Sortierung der Tabelle Function</b> : Sie können die Daten mit einem Klick auf die Spaltenüberschriften angezeigt. Halten Sie SHIFT-Taste, um Art bis zu 4 gleichzeitige maximale Spalten.';
+$lang['UAM_confirmmailTitle'] = 'Die Bestätigung der Anmeldung';
+/*TODO*/$lang['UAM_confirmmailTitle_d'] = 'This option allows a user to either confirm registration by clicking on a link received in an email sent upon registration or the administrator to manually activate the registration.<br><br>
+In first case, the e-mail is composed of a customizable part to introduce a little welcome note and a fixed part containing the activation link that is generated from a random key that can possibly regenerate through the &quot;Tracking validations&quot; tab.<br><br>
+<br><br>
+In second case, <b><u>there is no validation key send by email!</u></b>. Visitors have to wait until an administrator validate them himself in &quot;Validation tracking&quot; tab. It\s recommanded to activate the Piwigo\'s option &quot;Email admins when a new user registers&quot; (see in Piwigo\'s configuration options) and to use the &quot;Information email to user&quot; to warn new registers to wait on their account activation.
+<br>
+<b style=&quot;color: red;&quot;>NB: Options &quot;Deadline for registration validation limited&quot; and &quot;Remind unvalidated users  &quot; have to be set to off when admin\'s manual validation is enabled.</b>
+<br><br>
+Diese Option ist in der Regel mit der automatischen Zuordnung der Gruppe und / oder Satzung verwendet. Zum Beispiel, ein Benutzer, der nicht validiert ihre Eintragung in eine bestimmte Gruppe von Nutzern eingestellt werden (mit oder ohne Einschr&auml;nkungen auf der Galerie), w&auml;hrend ein Benutzer, der seine Registrierung best&auml;tigt wird in einem &quot;normalen&quot; Gruppe eingestellt werden.';
+$lang['UAM_RedirTitle'] = 'Umleitung auf &quot;Benutzerdaten&quot; Seite';
+// --------- End: New or revised $lang ---- from version 2.15.4
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.6
+$lang['UAM_RedirTitle_d'] = 'Diese Option automatisch umleiten ein registrierter Benutzer zum sein Benutzerdaten Seite nur bei seinem ersten Anschluss an die Galerie.<br><br>
+Bitte beachten Sie: Dieses Feature funktioniert nicht für alle registrierten Nutzer. Diejenigen mit &quot;admin&quot;, &quot;Webmaster&quot; oder &quot;Generic&quot; Status sind ausgeschlossen.';
+// --------- End: New or revised $lang ---- from version 2.15.6
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.16.0
+$lang['UAM_confirmmail_custom1'] = 'Text der Best&auml;tigungs-Seite - Best&auml;tigung akzeptiert';
+$lang['UAM_confirmmail_custom2'] = 'Text der Best&auml;tigungs-Seite - Best&auml;tigung abgelehnt';
+$lang['UAM_miscTitle_d'] = '
+- Automatische oder manuelle Verwaltung von Geist Benutzern<br>
+- Gefolgt registrierte Benutzer<br>
+- Nickname obligatorisch für Gäste Kommentare<br>
+...
+';
+$lang['UAM_ghosttrackerTitle_d'] = 'Auch bekannt als &quot;Geist Tracker&quot;, wenn diese Funktion aktiviert ist, k&ouml;nnen Sie verwalten Ihre Besucher je nach der H&auml;ufigkeit ihrer Besuche. 2 Betriebsarten stehen zur Verfügung:
+- Manuelle Verwaltung: Wenn die Zeit zwischen 2 Besuche erreicht ist, erscheint dem Besucher in der &quot;Ghost Tracker&quot; Table, an dem Sie in der Lage für die Besucher per E-Mail erinnern oder löschen ihn wird.<br><br>
+- Automatisiertes Management: Wenn der Zeitraum zwischen 2 aufeinander folgenden Aufenthalte erreicht ist, wird der Besucher automatisch gelöscht oder verschoben in eine Gruppe warten und / oder Status. In diesem zweiten Fall kann eine Information E-Mail an ihn gesendet werden.<br><br>
+<b style=&quot;color: red;&quot;>Wenn Sie diese Funktion zum ersten Mal oder haben Sie nach einem langen Zeitraum aus, in dem neue Besucher registriert sind, müssen Sie initialisieren, oder setzen Sie den Geist Tracker reaktiviert.</b>';
+$lang['UAM_mailexcTitle_d'] = 'Standardmäßig akzeptiert Piwigo alle E-Mail-Adressen im Format xxx@yyy.zz. Durch die Aktivierung dieser Option können Sie auf bestimmte Domains im Format ausschließen: @[Domänenname].[Domain Extension].<br><br>
+Beispiele:<br>
+@hotmail.com -> Ausnahme-Adressen *@hotmail.com<br>
+@hotmail -> ohne alle Adressen *@hotmail *';
+$lang['UAM_GTAutoTitle'] = 'Automatische Verwaltung von Geist Benutzern';
+$lang['UAM_GTAutoTitle_d'] = 'Diese Option ermöglicht es, Regeln für die automatisierte Verwaltung von Geistern Benutzer anwenden.
+<br><br>Grundprinzip: Ein Benutzer, der die maximale Zeit zwischen den Besuchen <b><u>und</u></b> hat bereits per E-Mail gilt als abgelaufen gemeldet erreicht. Dann können Sie automatisierte Verarbeitung Regeln wie das automatische Löschen von abgelaufenen Konten oder Herabstufung durch Beschränkung des Zugangs zur Galerie (schaltet automatisch auf eine eingeschränkte Gruppe und / oder Status).
+<br><br>Die Ansteuerung dieser Automatisierung wird erreicht, wenn eine Verbindung Nutzer (alle Benutzer!) Auf der Galerie.';
+$lang['UAM_GTAutoDelTitle'] = 'Benutzerdefinierte Meldung auf gelöschtes Konto';
+$lang['UAM_GTAutoGpTitle'] = 'Automatischer Wechsel der Gruppe / Status';
+/*TODO*/$lang['UAM_GTAutoGpTitle_d'] = 'The automatic change of group or status equivalent to a demotion of the accounts involved and working on the same principle as the group or the status of validation (see &quot;Setting confirmations and validations of registration&quot;). Therefore be to define a group and / or status demoting access to the gallery. If this has already been defined with the use of registration confirmation function, you can use the same group / status.<br><br>
+<b style=&quot;color: red;&quot;>Important note :</b> If a ghost user still has not heard from after the time limit and despite the automatic notification by email (if enabled), he\'s automatically deleted from the database.';
+$lang['UAM_GTAutoMailTitle'] = 'Automatisches Versenden einer E-Mail beim Wechsel Gruppe / Status';
+/*TODO*/$lang['UAM_GTAutoMailTitle_d'] = 'When an account is expired (group / status change demoting the visitor), an email information can be sent to clarify the reasons for this change and the means to recover the initial access to the gallery.
+<br>To do this, a link to revalidation of registration is attached to the email (automatic generation of a new validation key).<b style=&quot;color: red;&quot;>If the user has already been notified, his account is automatically destroyed.</b> 
+<br><br>Enter the custom text that also explain the reasons for the demotion, to accompany the validation link. The custom text is not mandatory but strongly recommended. In fact, your visitors will not appreciate receiving an email containing only a single link without further explanation. ;-)
+<br><br>Um mehrere Sprachen zu benutzen, können Sie die Extended description Plugin-Tags verwenden, wenn er aktiv ist.
+<br><br><b style=&quot;color: red;&quot;>Warning: The use of this function is intimately associated with the confirmation of registration by the user (confirmation by mail) and can not be activated without this option.</b>';
+$lang['UAM_AdminValidationMail'] = 'Mitteilung der manuellen Registrierung Validierung';
+// --------- End: New or revised $lang ---- from version 2.16.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.0
+/*TODO*/$lang['UAM_CustomPasswRetrTitle'] = 'Customize lost password email content';
+/*TODO*/$lang['UAM_validationlimitTitle_d'] = 'Diese Option ermöglicht es, die Gültigkeit der Schlüssel Validierung E-Mail-Grenze geschickt, um neue Registranten. Besucher, wer x Tage Zeit haben, um sich identifizieren, zu registrieren. Nach Ablauf dieser Frist die Validierung Link läuft.
+<br><br>
+Diese Option ist in Verbindung mit der &quot;Best&auml;tigung der Anmeldung verwendet&quot;
+<br><br>
+If this option and the option &quot;Erinnern Unvalidierte User&quot; are activated, new options will appear below in this section to enable the automation of unvalidated users management.';
+/*TODO*/$lang['UAM_remailTitle_d'] = 'Mit dieser Option k&ouml;nnen Sie eine Erinnerung per E-Mail an registrierte Benutzer zu senden, aber noch nicht best&auml;tigt ihre Eintragung in die Zeit. Es funktioniert also in Verbindung mit der &quot;Best&auml;tigung der Anmeldung&quot;
+<br><br>
+2 Arten von E-Mails gesendet werden können: Mit oder ohne Regeneration der Validierung Schlüssel. Gegebenenfalls kann der Inhalt von E-Mails angepasst werden.
+<br><br>
+Wenden Sie sich an die &quot;Tracking Validierungen&quot; aus.
+<br><br>
+If this option and the option &quot;Anmeldeschluss Validierung beschränkt&quot; are activated, new options will appear below in this section to enable the automation of unvalidated users management.';
+/*TODO*/$lang['UAM_USRAutoTitle'] = 'Automatic management of unvalidated users';
+/*TODO*/$lang['UAM_USRAutoTitle_d'] = 'Automatic handling of unvalidated visitors is triggered each time you connect to the gallery and works as follows:
+<br><br>
+- Automatic deletion of accounts not validated in the allotted time without sending automatic email reminder -> &quot;Deadline for registration validation limited&quot; <b><u>enabled</u></b> and &quot;Remind unvalidated users&quot; <b><u>disabled</u></b>.
+<br><br>
+- Automatically sending a reminder message with a new generation of validation key and automatic deletion of accounts not validated in the time after sending the reminder -> &quot;Deadline for registration validation limited&quot; <b><u>enabled</u></b> et &quot;Remind unvalidated users&quot; <b><u>enabled</u></b>.';
+/*TODO*/$lang['UAM_USRAutoDelTitle'] = 'Custom message on deleted account';
+/*TODO*/$lang['UAM_USRAutoMailTitle'] = 'Automated email reminder';
+/*TODO*/$lang['UAM_USRAutoMailTitle_d'] = 'When activated, this function will automatically send personalized content in &quot;Reminder email with new key generated&quot; to visitors who match criteria.';
+$lang['UAM_StuffsTitle'] = 'PWG Stuffs Modul';
+/*TODO*/$lang['UAM_StuffsTitle_d'] = 'This enables an additional UAM block in PWG Stuffs plugin (if installed) to inform your visitors who did not validate their registration about their condition.
+<br><br>
+Please refer to the <b>Tipps und Beispiele</b> at the bottom of this page for details.';
+// --------- End: New or revised $lang ---- from version 2.20.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.3
+$lang['UAM_DumpTitle'] = 'Sichern Sie Ihre Konfiguration';
+$lang['UAM_DumpTitle_d'] = 'Dies ermöglicht Ihnen die gesamte Konfiguration des Plugins in eine Datei zu speichern damit Sie sie wiederherstellen können wenn etwas schief geht (falsche Manipulation oder vor einem Update, zum Beispiel). Standardmäßig wird die Datei in diesem Ordner gespeichert ../plugins/UserAdvManager/include/backup/ und heißt &quot;UAM_dbbackup.sql&quot;.
+<br><br>
+<b style=&quot;color: red;&quot;>Achtung: Die Datei wird überschrieben jedem Backup Aktion!</b>
+<br><br>
+Es kann manchmal nützlich sein, um die Backup-Datei auf Ihrem Computer abrufen. Zum Beispiel: Um zu einer anderen Datenbank auslagern wiederherzustellen oder zu halten mehrere Dateien speichern. Dazu markieren Sie das Kontrollkästchen, um die Datei herunterzuladen.
+<br><br>
+Die Erholung von dieser Schnittstelle wird nicht unterstützt. Verwenden Sie Tools wie phpMyAdmin.';
+// --------- End: New or revised $lang ---- from version 2.20.3
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.4
+$lang['UAM_HidePasswTitle'] = 'Passwort im Klartext in der Informations-E-Mail';
+/*TODO*/$lang['UAM_HidePasswTitle_d'] = 'Choose here if you want to display the password chosen by the visitor in the information email. If you enable the option, the password will then appear in clear text. If you disable the password will not appear at all.';
+// --------- End: New or revised $lang ---- from version 2.20.4
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.11
+/*TODO*/$lang['UAM_gttextTitle_d'] = 'Geben Sie den gewünschten Text in die E-Mail-Erinnerung angezeigt, die Benutzer rechtzeitig, um wieder zur Galerie zu besuchen (Anm.: Der Text Fertigpen mit der Installation des Plugins ist als Beispiel vorgesehen).
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options. Use <b style=&quot;color: red;&quot;>[days]</b> to insert the maximum numbers of days between two visits.
+<br><br>
+Um mehrere Sprachen zu benutzen, können Sie die Extended description Plugin-Tags verwenden, wenn er aktiv ist.';
+/*TODO*/$lang['UAM_confirmtxtTitle_d'] = 'Geben Sie den einleitenden Text, den Sie in der E-Mail-Bestätigung der Anmeldung erscheinen.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.<br>
+- <b style=&quot;color: red;&quot;>[Kdays]</b> to insert the number of days limit to validate a registration (&quot;Anmeldeschluss Validierung beschränkt;&quot; have to be enabled).
+<br><br>
+Um mehrere Sprachen zu benutzen, können Sie die Extended description Plugin-Tags verwenden, wenn er aktiv ist.';
+/*TODO*/$lang['UAM_remailtxt1Title_d'] = 'Geben Sie den einleitenden Text, den Sie in der E-Mail-Erinnerung angezeigt wird, zusätzlich zu der Prüfschlüssel regeneriert.
+<br><br>
+Wenn leer, wird die E-Mail-Erinnerung nur den Bestätigungslink. Es wird daher dringend empfohlen, ein wenig erläuternden Text zu nehmen. (NB: Der Text Fertigpen mit der Installation des Plugins ist als Beispiel vorgesehen).
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.<br>
+- <b style=&quot;color: red;&quot;>[Kdays]</b> to insert the number of days limit to validate a registration (&quot;Anmeldeschluss Validierung beschränkt;&quot; have to be enabled).
+<br><br>
+Um mehrere Sprachen zu benutzen, können Sie die Extended description Plugin-Tags verwenden, wenn er aktiv ist.';
+/*TODO*/$lang['UAM_remailtxt2Title_d'] = 'Geben Sie den einleitenden Text, den Sie in der Erinnerung, ohne eine Bestätigung per E-Mail-Taste erscheinen regeneriert.
+<br><br>
+Wenn links leer ist, wird die E-Mail-Erinnerung leer sein. Es wird daher dringend empfohlen, ein wenig erläuternden Text zu nehmen. (NB: Der Text Fertigpen mit der Installation des Plugins ist als Beispiel vorgesehen).
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.<br>
+- <b style=&quot;color: red;&quot;>[Kdays]</b> to insert the number of days limit to validate a registration (&quot;Anmeldeschluss Validierung beschränkt;&quot; have to be enabled).
+<br><br>
+Um mehrere Sprachen zu benutzen, können Sie die Extended description Plugin-Tags verwenden, wenn er aktiv ist.';
+/*TODO*/$lang['UAM_infotxtTitle_d'] = 'Geben Sie den einleitenden Text, den Sie in der Informations-E-Mail angezeigt.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.
+<br><br>
+Um mehrere Sprachen zu benutzen, können Sie die Extended description Plugin-Tags verwenden, wenn er aktiv ist.';
+/*TODO*/$lang['UAM_AdminValidationMail_d'] = 'Wenn ein Administrator oder Webmaster der Galerie manuell gültige Registrierung anhängig ist, ist eine Benachrichtigungs-Email automatisch an den Benutzer gesendet. Geben Sie hier den Text ein, in dieser E-Mail angezeigt.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.
+<br><br>
+Um mehrere Sprachen zu benutzen, können Sie die Extended description Plugin-Tags verwenden, wenn er aktiv ist.';
+/*TODO*/$lang['UAM_confirmmail_custom1_d'] = 'Wenn die Option &quot;Bestätigung der Anmeldung&quot; aktiv ist, können Sie in diesem zu <b><u>Akzeptanz Text anpassen</u></b> auf der Anmeldebestätigung Seite angezeigt, wenn Benutzer auf den Bestätigungs-Link, die empfangen wurde per E-Mail.
+<br><br>
+Nach der Installation des Plugin ist ein Standard-Text als Beispiel vorangehen.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.
+<br><br>
+Dieses Feld ist kompatibel mit den FCK-Editor und, um mehrere Sprachen zu benutzen, können Sie die Extended description Plugin-Tags verwenden, wenn er aktiv ist.';
+/*TODO*/$lang['UAM_confirmmail_custom2_d'] = 'Wenn die Option &quot;Bestätigung der Anmeldung&quot; aktiv ist, können Sie in diesem zu <b><u>rejectance Text anpassen</u></b> auf der Anmeldebestätigung Seite angezeigt, wenn Benutzer auf den Bestätigungs-Link, die empfangen wurde per E-Mail.
+<br><br>
+Nach der Installation des Plugin ist ein Standard-Text als Beispiel vorangehen.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.
+<br><br>
+Dieses Feld ist kompatibel mit den FCK-Editor und, um mehrere Sprachen zu benutzen, können Sie die Extended description Plugin-Tags verwenden, wenn er aktiv ist.';
+/*TODO*/$lang['UAM_GTAutoDelTitle_d'] = 'Dies ist nur gültig, wenn der Benutzer, dessen Konto ist abgelaufen selbst löst die Streichung Mechanismus (selten, aber möglich). Er ist dann der Galerie getrennt und umgeleitet auf eine Seite mit der Löschung seines Accounts und gegebenenfalls die Gründe für die Streichung dieses Absatzes.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.<br>
+<b style=&quot;color: red;&quot;>[username]</b> is not available here because concerned user has been deleted.
+<br><br>
+Custom Text für die Weiterleitungsseite können in dieses Feld eingegeben werden dass ist kompatibel mit den FCK-Editor und, um mehrere Sprachen zu benutzen, können Sie die Extended description Plugin-Tags verwenden, wenn er aktiv ist.';
+/*TODO*/$lang['UAM_GTAutoMailTitle_d'] = 'When an account is expired (group / status change demoting the visitor), an email information can be sent to clarify the reasons for this change and the means to recover the initial access to the gallery.
+<br>To do this, a link to revalidation of registration is attached to the email (automatic generation of a new validation key).<b style=&quot;color: red;&quot;>If the user has already been notified, his account is automatically destroyed.</b> 
+<br><br>
+Enter the custom text that also explain the reasons for the demotion, to accompany the validation link. The custom text is not mandatory but strongly recommended. In fact, your visitors will not appreciate receiving an email containing only a single link without further explanation. ;-)
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.
+<br><br>
+Um mehrere Sprachen zu benutzen, können Sie die Extended description Plugin-Tags verwenden, wenn er aktiv ist.
+<br><br>
+<b style=&quot;color: red;&quot;>Warning: The use of this function is intimately associated with the confirmation of registration by the user (confirmation by mail) and can not be activated without this option.</b>';
+/*TODO*/$lang['UAM_CustomPasswRetrTitle_d'] = 'By default, when a user has lost his password and selects the option of recovery, he receives an email containing only his username and his new password.
+<br><br>
+Here, you can add text of your choice to be inserted <b><u>before</u></b> the standard information.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.
+<br><br>
+To use multiple languages, you can use the Extended description plugin\'s tags if it is active.';
+/*TODO*/$lang['UAM_USRAutoDelTitle_d'] = 'This is only valid when the user whose account has expired itself triggers the deletion mechanism (rare but possible). he\'s then disconnected of the gallery and redirected to a page showing the deletion of his account and, possibly, the reasons for this deletion.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.<br>
+<b style=&quot;color: red;&quot;>[username]</b> is not available here because concerned user has been deleted.
+<br><br>
+Custom text for the redirect page can be entered in this field that is compatible with the FCK Editor and, for multi-languages, you can use the tags [lang] of the plugin Extended description if it\'s active.';
+// --------- End: New or revised $lang ---- from version 2.20.11
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/language/de_DE/help/index.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/language/de_DE/help/index.php	(revision 4969)
+++ /extensions/UserAdvManager/tags/2.20.11/language/de_DE/help/index.php	(revision 4969)
@@ -0,0 +1,33 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | PhpWebGallery - a PHP based picture gallery                           |
+// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
+// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
+// +-----------------------------------------------------------------------+
+// | file          : $Id: index.php 1912 2007-03-16 06:30:07Z rub $
+// | last update   : $Date: 2007-03-16 07:30:07 +0100 (ven, 16 mar 2007) $
+// | last modifier : $Author: rub $
+// | revision      : $Revision: 1912 $
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/language/de_DE/index.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/language/de_DE/index.php	(revision 4226)
+++ /extensions/UserAdvManager/tags/2.20.11/language/de_DE/index.php	(revision 4226)
@@ -0,0 +1,33 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | PhpWebGallery - a PHP based picture gallery                           |
+// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
+// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
+// +-----------------------------------------------------------------------+
+// | file          : $Id: index.php 1912 2007-03-16 06:30:07Z rub $
+// | last update   : $Date: 2007-03-16 07:30:07 +0100 (ven, 16 mar 2007) $
+// | last modifier : $Author: rub $
+// | revision      : $Revision: 1912 $
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/language/en_UK/description.txt
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/language/en_UK/description.txt	(revision 4226)
+++ /extensions/UserAdvManager/tags/2.20.11/language/en_UK/description.txt	(revision 4226)
@@ -0,0 +1,1 @@
+Strengthens the possibilities of user management
Index: /extensions/UserAdvManager/tags/2.20.11/language/en_UK/plugin.lang.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/language/en_UK/plugin.lang.php	(revision 11319)
+++ /extensions/UserAdvManager/tags/2.20.11/language/en_UK/plugin.lang.php	(revision 11319)
@@ -0,0 +1,337 @@
+<?php
+
+global $lang,$conf;
+
+$conf_UAM = unserialize($conf['UserAdvManager']);
+
+
+/* UserManager Tab */
+$lang['UAM_Registration_Date'] = 'Registration date';
+
+
+/* Mailing */
+$lang['UAM_infos_mail %s'] = '%s, please find here your information to log in the gallery :';
+$lang['UAM_User: %s'] = 'User : %s';
+$lang['UAM_Password: %s'] = 'Password: %s';
+$lang['UAM_Link: %s'] = 'Please, click on this link to confirm your registration : %s';
+
+
+/* Email confirmation page */
+$lang['UAM_title_confirm_mail'] = 'Validate your registration';
+$lang['UAM_confirm_mail_page_title'] = 'Validate your registration';
+
+
+/* Errors and Warnings */
+$lang['UAM_audit_ok'] = 'Audit OK';
+$lang['UAM_Err_audit_username_char'] = '<b>This account uses one or more forbidden characters :</b> ';
+$lang['UAM_Err_audit_email_forbidden'] = '<b>This account uses a forbidden email provider :</b> ';
+$lang['UAM_Err_audit_advise'] = '<b>you have to perform corrections to comply with new rules that you have activated.<br>Use a database management utility to correct user accounts directly in the table ###_USERS';
+$lang['UAM_reg_err_login2'] = 'Username does not have to match the following characters: ';
+$lang['UAM_reg_err_login5'] = 'Your email provider is banned for registration. Banned email providers are: ';
+$lang['UAM_empty_pwd'] = '[empty password]';
+$lang['UAM_no_update_pwd'] = '[profile updated without password changed]';
+$lang['UAM_No_validation_for_Guest'] = 'The "Guest" account is not subject to validation';
+$lang['UAM_No_validation_for_default_user'] = 'The default account is not subject to validation';
+$lang['UAM_No_validation_for_Webmaster'] = 'The "Webmaster" account is not subject to validation';
+$lang['UAM_No_validation_for_your_account'] = 'Your personnal admin account is not subject to validation';
+
+
+/* Processing messages */
+$lang['UAM_%d_Mail_With_Key'] = '%d message with key renewal was sent';
+$lang['UAM_%d_Mails_With_Key'] = '%d messages with key renewal were sent';
+$lang['UAM_%d_Reminder_Sent'] = '%d reminder message was sent';
+$lang['UAM_%d_Reminders_Sent'] = '%d reminder messages were sent';
+$lang['UAM_%d_Validated_User'] = '%d User validated manually';
+$lang['UAM_%d_Validated_Users'] = '%d Users validated manually';
+
+
+/* Action button names */
+$lang['UAM_Delete_selected'] = 'Delete';
+$lang['UAM_Mail_without_key'] = 'Reminder without key';
+$lang['UAM_Mail_with_key'] = 'Reminder with key';
+
+
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.12.0 and 2.12.1
+/* Global Configuration Tab */
+$lang['UAM_PasswordTest'] = 'Score calculation';
+/* Ghost Tracker Tab */
+$lang['UAM_Tab_GhostTracker'] = 'Ghost Tracker';
+$lang['UAM_Reminder'] = 'Email reminder';
+$lang['UAM_Reminder_Sent_OK'] = 'YES';
+$lang['UAM_Reminder_Sent_NOK'] = 'NO';
+/* Errors and Warnings */
+$lang['UAM_save_config'] ='Configuration saved.';
+$lang['UAM_reg_err_login3'] = 'Security : Password is mandatory !';
+$lang['UAM_reg_err_login4_%s'] = 'Security : A control system calculates a score on the chosen passwords complexity. The complexity of your password is too low (score = %s). Please, choose a new password more secure by following these rules:<br>
+- Use letters and numbers<br>
+- Use lowercase and uppercase<br>
+- Increase its length (number of characters)<br>
+The minimum passwords score required by the administrator is: ';
+$lang['UAM_No_reminder_for_Guest'] = 'The "Guest" account is not subject to receive reminders from GhostTracker';
+$lang['UAM_No_reminder_for_default_user'] = 'The default account is not subject to receive reminders from GhostTracker';
+$lang['UAM_No_reminder_for_Webmaster'] = 'The "Webmaster" account is not subject to receive reminders from GhostTracker';
+$lang['UAM_No_reminder_for_your_account'] = 'You personnal admin account is not subject to receive reminders from GhostTracker';
+/* Action button names */
+$lang['UAM_audit'] = 'Audit settings';
+$lang['UAM_submit'] = 'Save settings';
+// --------- End: New or revised $lang ---- from version 2.12.0 and 2.12.1
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.12.2
+/* Errors and Warnings */
+$lang['UAM_GhostTracker_Init_OK'] = 'Ghost Tracker reset done !';
+/* Action button names */
+$lang['UAM_GT_Reset'] = 'Reset Ghost Tracker';
+// --------- End: New or revised $lang ---- from version 2.12.2
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.12.8
+/* Errors and Warnings */
+$lang['UAM_mail_exclusionlist_error'] = 'Warning! You have entered a new line (CR-LF) at the begining of email exclusion list (shown in red below). Although this new line is not visible, it is still present and may cause malfunction of the plugin. Please re-type in your exclusion list in a manner that does not begin with a newline.';
+// --------- End: New or revised $lang ---- from version 2.12.8
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.13.0
+/* UserList Tab */
+$lang['UAM_UserList_Title'] = 'Monitoring registered users';
+// --------- End: New or revised $lang ---- from version 2.13.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.13.4
+/* Global Configuration Tab */
+$lang['UAM_Title_Tab'] = 'UserAdvManager - Version : ';
+$lang['UAM_SubTitle1'] = 'Plugin configuration';
+$lang['UAM_Tab_Global'] = 'Configuration';
+$lang['UAM_Title1'] = 'Setting restrictions for registrations';
+$lang['UAM_Title2'] = 'Setting confirmations and validations of registration';
+$lang['UAM_Title3'] = 'Setting the followed registrations and other options';
+$lang['UAM_Title4'] = 'Tips and examples of use';
+$lang['UAM_No_Casse'] = 'Usernames: Case sensitivity';
+$lang['UAM_Username_Char'] = 'Usernames: Exclusion of characters';
+$lang['UAM_Username_Char_true'] = ' Banning characters:<br>(Use a comma to separate each character)<br><br>';
+$lang['UAM_Username_Char_false'] = ' Permit all (default)';
+$lang['UAM_Password_Enforced'] = 'Strengthening the security level of passwords';
+$lang['UAM_Password_Enforced_true'] = ' Enable. Minimum Score: ';
+$lang['UAM_AdminPassword_Enforced'] = 'Applying to administrators';
+$lang['UAM_PasswordTest'] = 'Password test: ';
+$lang['UAM_ScoreTest'] = 'Result: ';
+$lang['UAM_MailExclusion'] = 'Email domains exclusion';
+$lang['UAM_MailExclusion_true'] = ' Exclude the following domains:<br>(Use a comma to separate each domain)';
+
+$lang['UAM_Mail_Info'] = 'Information email to user:';
+$lang['UAM_MailInfo_Text'] = ' Customizing the information email:';
+$lang['UAM_Confirm_Mail'] = 'Confirmation of registration:';
+$lang['UAM_ConfirmMail_Text'] = ' Customizing the confirmation email:';
+$lang['UAM_Confirm_grpstat_notice'] = 'Caution: It is advisable to use either the group or the validation statutes and not both simultaneously.';
+$lang['UAM_Confirm_Group'] = 'Validation Groups<br>(leave ------- to not affect group)';
+$lang['UAM_Confirm_Status'] = 'Validation Statutes<br>(leave ------- to keep the Piwigo\'s default)';
+$lang['UAM_No_Confirm_Group'] = 'Group for users who have not validated their registration<br>';
+$lang['UAM_Validated_Group'] = 'Group for users who have validated their registration<br>';
+$lang['UAM_No_Confirm_Status'] = 'Status for users who have not validated their registration<br>';
+$lang['UAM_Validated_Status'] = 'Status for users who have validated their registration<br>';
+$lang['UAM_ValidationLimit_Info'] = 'Deadline for registration validation limited';
+$lang['UAM_ConfirmMail_TimeOut_true'] = ' Enable. Number of days until expiration: ';
+$lang['UAM_ConfirmMail_Remail'] = 'Remind unvalidated users';
+$lang['UAM_ConfirmMail_ReMail_Txt1'] = 'Customizing the reminder message <b><u>with</u></b> new regeneration of key validation.';
+$lang['UAM_ConfirmMail_ReMail_Txt2'] = 'Customizing the reminder message <b><u>without</u></b> regeneration of key validation.';
+
+$lang['UAM_GhostTracker'] = 'Ghost visitors management (Ghost Tracker)';
+$lang['UAM_GhostTracker_true'] = ' Enable. Maximum period in days between two visits: ';
+$lang['UAM_GhostTracker_ReminderText'] = 'Customizing Ghost Tracker\'s reminder message';
+$lang['UAM_LastVisit'] = ' Tracking registered users';
+
+$lang['UAM_Tab_UserManager'] = 'Tracking validations';
+
+/* UserManager Tab */
+$lang['UAM_SubTitle3'] = 'Tracking validations';
+$lang['UAM_UserManager_Title'] = 'Tracking validations';
+/* Ghost Tracker Tab */
+$lang['UAM_SubTitle4'] = 'Ghost Tracker';
+$lang['UAM_GT_Init'] = 'Initializing Ghost Tracker';
+$lang['UAM_GhostTracker_Title'] = 'Ghost visitors management';
+$lang['UAM_GhostTracker_Init'] = 'If you enable this feature for the first time or you have reactivated after a long period off during which new visitors are registered, you must initialize or reset the Ghost Tracker. This action is done only after activation or reactivation of the option. Please click <u>once</u> the reset button below.';
+/* UserList Tab */
+$lang['UAM_SubTitle5'] = 'Tracking users';
+$lang['UAM_Tab_UserList'] = 'Tracking users';
+/* Mailing */
+$lang['UAM_Add of %s'] = 'Profile created for %s';
+$lang['UAM_Update of %s'] = 'Profile %s updated';
+
+/* Mailing */
+$lang['UAM_Ghost_reminder_of_%s'] = '%s, this is a reminder email';
+$lang['UAM_Reminder_with_key_of_%s'] = '%s, your validation key has been renewed';
+$lang['UAM_Reminder_without_key_of_%s'] = '%s, your validation key will expire';
+/* Errors and Warnings */
+$lang['UAM_Err_GhostTracker_Settings'] = 'This page is available only if "Ghost Tracker" is active in "Setting the registrations followed and other options".';
+$lang['UAM_Err_Userlist_Settings'] = 'This page is available only if "Monitoring registered users" is active in the "Setting the registrations followed and other options".';
+// --------- End: New or revised $lang ---- from version 2.13.4
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.14.0
+$lang['UAM_AdminConfMail'] = 'Confirmation of registration for admins';
+// --------- End: New or revised $lang ---- from version 2.14.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.0
+$lang['UAM_confirmmail_custom_Txt1'] = 'Text of the confirmation page - Confirmation accepted';
+$lang['UAM_confirmmail_custom_Txt2'] = 'Text of the confirmation page - Confirmation rejected';
+$lang['UAM_LastVisit_Date'] = 'Last visit';
+$lang['UAM_Nb_Days'] = 'Difference in days';
+$lang['UAM_Err_UserManager_Settings'] = 'This page is available only if "Confirmation of registration" is active and if a group of visitors not validated is configured in "Setting confirmations and validations of registration".';
+// --------- End: New or revised $lang ---- from version 2.15.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.1
+$lang['UAM_Support_txt'] = 'The official support on this plugin is only on these Piwigo forum topic:<br>
+<a href="http://piwigo.org/forum/viewtopic.php?id=15015" onclick="window.open(this.href);return false;">English forum - http://piwigo.org/forum/viewtopic.php?id=15015</a><br><br>
+Also available, the project\'s bugtracker: <a href="http://piwigo.org/bugs/" onclick="window.open(this.href);return false;">http://piwigo.org/bugs/</a>';
+// --------- End: New or revised $lang ---- from version 2.15.1
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.4
+$lang['UAM_Force_Validation'] = 'Manual validation';
+$lang['UAM_Confirm_Mail_true'] = ' Enable - Validation by user';
+$lang['UAM_Confirm_Mail_local'] = ' Enable - Validation by admin (no validation key sent)';
+$lang['UAM_RedirToProfile'] = 'Redirect to "Customization" page';
+// --------- End: New or revised $lang ---- from version 2.15.4
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.16.0
+$lang['UAM_Expired_Group'] = '<b>Group</b> for user\'s registration has expired<br>';
+$lang['UAM_Expired_Status'] = '<b>Status</b> for user\'s registration has expired<br>';
+$lang['UAM_GTAuto'] = 'Automatic management of ghosts users';
+$lang['UAM_GTAutoDel'] = 'Automatic deletion of accounts';
+$lang['UAM_GTAutoGp'] = 'Automatic change of group / status';
+$lang['UAM_GTAutoMail'] = 'Automatically sending an email when changing group / status';
+$lang['UAM_Deleted_Account_Redirection_Page'] = 'Access denied - Account destroyed!';
+$lang['UAM_title_redir_page'] = 'Access denied for having an account destroyed!';
+$lang['UAM_Error_GTAutoMail_cannot_be_set_without_ConfirmMail'] = 'Consistency error in the configuration chosen:
+<br><br>
+"Setting the followed registrations and other options > Ghost visitors management (Ghost Tracker) > Automatic management of ghosts users > Automatically sending an email when changing group / status" can not be activated if "Setting confirmations and validations of registration > Confirmation of registration - Validation by user" is not enabled at first.
+<br><br>
+To ensure consistency, the option "Automatically sending an email when changing group / status" was automatically repositioned "disabled".
+<br><br>';
+$lang['UAM_Demotion of %s'] = 'Demotion of %s';
+$lang['UAM_AdminValidationMail_Text'] = 'Notification of manual registration validation';
+$lang['UAM_Validation of %s'] = 'Validation of %s';
+// --------- End: New or revised $lang ---- from version 2.16.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.0
+$lang['UAM_CustomPasswRetr'] = 'Customize lost password email content';
+$lang['UAM_USRAuto'] = 'Automatic management of unvalidated users';
+$lang['UAM_USRAutoDel'] = 'Custom message on deleted account';
+$lang['UAM_USRAutoMail'] = 'Automated email reminder';
+$lang['UAM_Disable'] = ' Disable (default)';
+$lang['UAM_Enable'] = ' Enable ';
+$lang['UAM_Tips1'] = 'Information of non-validated registration with UAM and PWG_Stuffs';
+$lang['UAM_Tips1_txt'] = '
+          <ul>
+            <li>
+            Goals: Inform the visitor that the registration is awaiting approval by displaying a personal block on the home page of the gallery, and this, as registration is not approved.
+            <br><br>
+            <b>Recall: In standard operation, the "Guest" only sees the public categories, without information message.</b>
+            </li><br><br>
+            <li>
+Prerequisite:<br>
+- A gallery with all or some private categories, visible only by registered users<br>
+- At least 2 following Piwigo\'s users groups: "Waiting," without permission on private categories, and "Validated" with all the permissions on the private categories<br>
+- UAM plugin<br>
+- PWG Stuffs plugin, for adding a special UAM module<br>
+- Optionally, the plugin Extended Description to support multi-languages<br>
+            </li><br><br>
+            <li>
+Stages:<br><br>
+A. In plugin UAM:
+              <ol>
+                <li>Enable registration confirmation</li>
+                <li>Enable PWG Stuffs module option</li>
+                <li>Enter text for additional explanation which will be attached to mail registration confirmation. If the plugin Extended Description is activated, the language tags can be used</li>
+                <li>Select the "Waiting" group under "For users who have not validated their registration"</li>
+                <li>Select the "Validated" group under "For users who have validated their registration"</li>
+                <li>Save the plugin configuration</li>
+              </ol>
+<br>
+B. In plugin PWG Stuffs :
+              <ol>
+                <li>Go to tab "Add a new module"</li>
+                <li>Choose "UAM Module"</li>
+                <li>Configure the module, indicating the title (eg "Registration pending validation") and its description, and only check "Waiting" in the list of groups allowed</li>
+                <li>Complete content of the module with the message information to be displayed to users not validated. As UAM, languages markup may be used if the plugin is enabled Extended Description</li>
+                <li>Check "Display the module on the homepage of the site"</li>
+                <li>Validate the configuration of the module</li>
+              </ol>
+            </li>
+          </ul>';
+$lang['UAM_Tips2'] = 'Information of non-validated registration with UAM and Additional Pages';
+$lang['UAM_Tips2_txt'] = '
+          <ul>
+            <li>
+            Goals: Inform the visitor that the registration is awaiting validation by posting an additional page replacing the standard index page gallery at each of these connections, and this, as registration is not approved.
+            <br><br>
+            Advantages over the method with PWG_Stuffs: Allow formatting information and displaying the information immediately upon registration of visitors.
+            </li><br><br>
+            <li>
+Prerequisite:<br>
+- A gallery with all or some private categories, visible only by registered users<br>
+- At least 2 following Piwigo\'s users groups: "Waiting," without permission on private categories, and "Validated" with all the permissions on the private categories<br>
+- UAM plugin<br>
+- Additional Pages plugin for adding and managing an additional page to replace the default index page of the gallery<br>
+- Optionally, the plugin Extended Description to support multi-languages<br>
+            </li><br><br>
+            <li>
+Stages:<br><br>
+A. In plugin UAM:
+              <ol>
+                <li>Enable registration confirmation</li>
+                <li>Enter text for additional explanation which will be attached to mail registration confirmation. If the plugin Extended Description is activated, the language tags can be used</li>
+                <li>Select the "Waiting" group under "For users who have not validated their registration"</li>
+                <li>Select the "Validated" group under "For users who have validated their registration"</li>
+                <li>Save the plugin configuration</li>
+              </ol>
+<br>
+B. In plugin Additional Pages:<br>
+                <b>NOTE : The management of access rights for groups on Additional Pages must be turned on (see plugin configuration settings).</b>
+                <br>
+              <ol>
+                <li>Add a new page with at least the following parameters:</li>
+                <ul>
+                  <li>Page name: The name you wish to give to the additional page (ie: Registration not validated)</li>
+                  <li>Set as homepage checked</li>
+                  <li>Groups allowed: Check the box corresponding to the group "Waiting" configured in UAM</li>
+                  <li>Content: The text you want to use for visitors.</li>
+                </ul>
+                <br>
+                <li>And that\'s it! Only visitors registered and whose registration has not been validated will see this additional index page.</li>
+              </ol>
+            </li>
+          </ul>';
+$lang['UAM_No_Ghosts'] = 'No ghosts visitors for the moment';
+$lang['UAM_No_Userlist'] = 'No visitors to list for the moment';
+$lang['UAM_No_Usermanager'] = 'No unvalidated registers to list for the moment';
+$lang['UAM_Stuffs_Title'] = 'UAM block';
+$lang['UAM_Stuffs_Desc'] = 'Adds an information block for unvalidated users';
+$lang['UAM_Stuffs'] = 'PWG Stuffs block';
+// --------- End: New or revised $lang ---- from version 2.20.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.3
+$lang['UAM_DumpTxt'] = 'Backup your configuration';
+$lang['UAM_Dump_Download'] = 'To download the backup file, please check this box:';
+$lang['UAM_Save'] = 'Run backup';
+$lang['UAM_Dump_OK'] = 'Backup file created successfully';
+$lang['UAM_Dump_NOK'] = 'Error: Unable to create backup file !';
+// --------- End: New or revised $lang ---- from version 2.20.3
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.4
+$lang['UAM_HidePassw'] = 'Password in clear text in the information email';
+// --------- End: New or revised $lang ---- from version 2.20.4
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.11
+$lang['UAM_Error_Using_illegal_flag'] = 'Syntax error ! The [Kdays] AutoText flag is used as the "Deadline for registration validation limited" option was not activated. Please activate the option or correct the text field(s) colored in red.';
+// --------- End: New or revised $lang ---- from version 2.20.11
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/language/en_UK/help/plugin.lang.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/language/en_UK/help/plugin.lang.php	(revision 11321)
+++ /extensions/UserAdvManager/tags/2.20.11/language/en_UK/help/plugin.lang.php	(revision 11321)
@@ -0,0 +1,328 @@
+<?php
+global $lang;
+
+$lang['UAM_restricTitle'] = 'Restrictions for registrations';
+$lang['UAM_confirmTitle'] = 'Confirmations and validations of registration';
+$lang['UAM_confirmTitle_d'] = '
+- Information email generation<br>
+- Register validation email generation<br>
+- Groups or status auto joining<br>
+- Deadline for registration validation<br>
+- Reminder email generation<br>
+...
+';
+$lang['UAM_miscTitle'] = 'Registration followed and other options';
+$lang['UAM_carexcTitle'] = 'Usernames: Exclusion of characters';
+$lang['UAM_carexcTitle_d'] = 'It may be interesting to prohibit certain characters in usernames (example: refuse login names containing &quot;@&quot;). This option allows to exclude characters or sequence of characters, events.<br>
+NB: The option can also exclude whole words.
+<br><br>
+<b style=&quot;color: red;&quot;>Warning: This option has no effect on the user names created prior to its activation.</b>';
+$lang['UAM_passwTitle'] = 'Strengthening the security level of passwords';
+$lang['UAM_passwTitle_d'] = 'Enabling this option makes mandatory the seizure of a password upon registration, and requires the password chosen by the visitor to meet a minimum level of complexity. If the threshold is not reached, the score achieved and the minimum score to be achieved are displayed, along with recommendations to increase the value of this score.<br><br>
+There is field test to measure the complexity of a password, and can afford to get an idea of the score to define complex custom.<br><br>
+Note: The score of a password is calculated based on several parameters: length, type of characters used (letters, digits, uppercase, lowercase, special characters). A score below 100 is considered low, from 100 to 500, the complexity is average; beyond 500, the security is excellent.';
+$lang['UAM_passwtestTitle'] = 'Testing the complexity of a password';
+$lang['UAM_passwtestTitle_d'] = 'Enter the password to test and then click on &quot;Score calculation&quot; to see the result.';
+$lang['UAM_passwadmTitle'] = 'Applying to administrators';
+$lang['UAM_passwadmTitle_d'] = 'An administrator can create a user account with or without application of the rule of computing complexity.<br><br>
+Note: If the user account created wants to change password and strengthening passwords for users is active, it will be subject to the rule set.';
+$lang['UAM_mailexcTitle'] = 'Exclusion of mail domains';
+$lang['UAM_infomailTitle'] = 'Information email to user';
+$lang['UAM_infomailTitle_d'] = 'This option allows to automate sending an information email to a user when registering or when changes his password or email address in their profile.<br><br>
+The content of the message sent is composed of a customizable part to introduce a little welcome note and a fixed part indicating the login name, password and email address of the user.';
+$lang['UAM_infotxtTitle'] = 'Customizing the information email';
+$lang['UAM_confirmtxtTitle'] = 'Customizing the confirmation email';
+$lang['UAM_confirmgrpTitle'] = 'Validation Groups';
+$lang['UAM_confirmgrpTitle_d'] = '<b style=&quot;color: red;&quot;>WARNING : Using validation groups requires that you have created at least one users group and is defined &quot;by default&quot; in Piwigo\'s user groups management.</b><br><br>
+The groups are validated for use in conjunction with the &quot;Confirmation of registration&quot;';
+$lang['UAM_confirmstatTitle'] = 'Validation Statutes';
+$lang['UAM_confirmstatTitle_d'] = '<b style=&quot;color: red;&quot;>WARNING : The use of status validation requires that you have kept the &quot;Guest&quot; user with default setting (as user template) for new registered. Note you can set any other user as a template for new registered. Please refer to the Piwigo\'s documentation for more details.</b><br><br>
+The Statutes are validated for use in conjunction with the &quot;Confirmation of registration&quot;';
+$lang['UAM_validationlimitTitle'] = 'Deadline for registration validation limited';
+$lang['UAM_remailTitle'] = 'Remind unvalidated users';
+$lang['UAM_remailtxt1Title'] = 'Reminder email with new key generated';
+$lang['UAM_remailtxt2Title'] = 'Reminder email without new key generated';
+$lang['UAM_ghosttrackerTitle'] = 'Ghost visitors management';
+$lang['UAM_gttextTitle'] = 'Ghost Tracker\'s reminder message';
+$lang['UAM_lastvisitTitle'] = 'Tracking registered users';
+$lang['UAM_lastvisitTitle_d'] = 'This activates a table in the &quot;Tracking users&quot; tab which are registered users listed on the gallery and the date of their last visit and time spent (in days) since their last visit. Monitoring is purely informative for the administrator of the gallery.';
+$lang['UAM_tipsTitle'] = 'Tips and Examples';
+$lang['UAM_tipsTitle_d'] = 'Tips and various examples of use';
+$lang['UAM_userlistTitle'] = 'Tracking users';
+$lang['UAM_usermanTitle'] = 'Tracking validations';
+$lang['UAM_gtTitle'] = 'Ghost visitors management';
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.14.0
+$lang['UAM_adminconfmailTitle'] = 'Confirmation of registration for admins';
+$lang['UAM_adminconfmailTitle_d'] = 'You can disable this validation only for user accounts created by the administrator via Piwigo\'s users management interface.<br><br>
+By activating this option, email validation for registration will be sent to each user created by admin.<br><br>
+By disabling this option (default), only the email information is sent (if &quot;Information email to user&quot; is enabled).';
+// --------- End: New or revised $lang ---- from version 2.14.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.0
+$lang['UAM_confirmmail_custom1'] = 'Text of the confirmation page - Confirmation accepted';
+$lang['UAM_confirmmail_custom2'] = 'Text of the confirmation page - Confirmation rejected';
+// --------- End: New or revised $lang ---- from version 2.15.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.4
+$lang['UAM_restricTitle_d'] = '
+- Characters exclusion<br>
+- Password enforcement<br>
+- Email domains exclusion<br>
+...
+';
+$lang['UAM_userlistTitle_d'] = 'This page is for information to the administrator. It displays a list of all users registered on the gallery showing the date and number of days since their last visit. The list is sorted in ascending order of number of days.
+<br><br>
+<b><u>Only when the Ghost Tracker is active</u></b>, the number of days without a visit appears as the following color code, according to the maximum set in the Ghost Tracker options:
+<br>
+- <b style=&quot;color: lime;&quot;>Green</b> : When the user has visited the gallery <b style=&quot;color: lime;&quot;><u>less than 50%</u></b> of the maximum indicated in the Ghost Tracker.<br>
+- <b style=&quot;color: orange;&quot;>Orange</b> : When the user has visited the gallery <b style=&quot;color: orange;&quot;><u> between 50% and 99% </u></b> of the maximum indicated in the Ghost Tracker.<br>
+- <b style=&quot;color: red;&quot;>Red</b> : When the user has visited the gallery <b style=&quot;color: red;&quot;><u>for more than 100%</u></b> of the maximum indicated in the Ghost Tracker. <b><u>In this case, the user must also appear in the Ghost Tracker table.</u></b><br>
+<br>
+Example :
+<br>
+The maximum period of Ghost Tracker is configured to 100 days.
+<br>
+A user will appear in green if he visited the gallery for less than 50 days, in orange if his last visit took place between 50 and 99 days and red for 100 days and above.
+<br><br>
+<b>NOTE</b>: The list does not display who have not validated their registration (if the option of validating the registration is activated). These users are then managed in a special way in the &quot;Tracking validations&quot; tab.
+<br><br>
+<b>Table Sorting Function</b>: You can sort the data displayed by clicking on the column headers. Hold the SHIFT key to sort up to 4 simultaneous columns.';
+$lang['UAM_usermanTitle_d'] = 'When limiting the deadline for registration is enabled, you will find below the list of users whose validation registration is expected, <b style=&quot;text-decoration: underline;&quot;>whether or not</b> they are in time to validate.<br><br>
+The registration date is displayed in green when the user concerned is below the time limit to validate his registration. In this case, the validation key is still valid and we can send an email with or without a new validation key.<br><br>
+When the registration date appears in red, the validation period has expired. In this case, you must send an email with regeneration of validation key if you want to enable the user to validate their registration.<br><br>
+In all cases, it is possible to manually force the validation.<br><br>
+In this view, you can:
+<br><br>
+- Manually delete accounts <b>(manual drain)</b>
+<br>
+- Generate email reminder <b>without</b> generating a new key. Warning: Send an email reminder to targeted visitors. This function does not reset the date of registration of targeted visitors and the timeout is still valid.
+<br>
+- Generate email reminder <b>with</b> generating a new key. Warning : Send an email reminder to targeted visitors. This function also resets the date of registration of targeted visitors which equates to extend the deadline for validation.
+<br>
+- Submit a registration awaiting validation manually even if the expiry date has passed <b>(forcing validation)</b>.
+<br><br>
+<b>Table Sorting Function</b>: You can sort the data displayed by clicking on the column headers. Hold the SHIFT key to sort up to 4 simultaneous columns.';
+$lang['UAM_gtTitle_d'] = 'When Ghost Tracker is enabled and initialized, you will find below the list of registered visitors who have not returned since x days. &quot;x&quot; is the number of days configured in the General Setup tab. In addition, you will find a column indicating whether an email reminder has been sent to targeted visitors. So, you can see at a glance and treat visitors who have not taken account of the reminder.<br><br>In this view, you can:
+<br><br>
+- Manually delete accounts <b>(manual drain)</b>
+<br>
+- Generate email reminder <b>with resetting the last visit date</b>. This allows to give a wildcard to targeted visitors. If the visitor has already received a reminder, nothing prevents to resent a new mail which will reset again, in fact, the last visit date.
+<br><br>
+<b>Table Sorting Function</b>: You can sort the data displayed by clicking on the column headers. Hold the SHIFT key to sort up to 4 simultaneous columns.';
+$lang['UAM_confirmmailTitle'] = 'Confirmation of registration';
+$lang['UAM_confirmmailTitle_d'] = 'This option allows a user to either confirm registration by clicking on a link received in an email sent upon registration or the administrator to manually activate the registration.<br><br>
+In first case, the e-mail is composed of a customizable part to introduce a little welcome note and a fixed part containing the activation link that is generated from a random key that can possibly regenerate through the &quot;Tracking validations&quot; tab.<br><br>
+Dans le premier cas, le message envoyé comprend une partie fixe, avec le lien d\'activation généré à partir d\'une clef aléatoire (cette clé peut éventuellement être régénérée via l\'onglet &quot;Suivi des validations&quot;), et une partie personnalisable par un texte d\'accueil.
+<br><br>
+In second case, <b><u>there is no validation key send by email!</u></b>. Visitors have to wait until an administrator validate them himself in &quot;Validation tracking&quot; tab. It\s recommanded to activate the Piwigo\'s option &quot;Email admins when a new user registers&quot; (see in Piwigo\'s configuration options) and to use the &quot;Information email to user&quot; to warn new registers to wait on their account activation.
+<br>
+<b style=&quot;color: red;&quot;>NB: Options &quot;Deadline for registration validation limited&quot; and &quot;Remind unvalidated users  &quot; have to be set to off when admin\'s manual validation is enabled.</b>
+<br><br>
+This option is generally used with the automatic assignment of group and/or statutes. For example, a user who has not validated their registration will be set in a specific group of users (with or without restrictions on the gallery) while a user who validated his registration shall be set in a &quot;normal&quot; group.';
+$lang['UAM_RedirTitle'] = 'Redirect to &quot;Customization&quot; page';
+// --------- End: New or revised $lang ---- from version 2.15.4
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.6
+$lang['UAM_RedirTitle_d'] = 'This option automatically redirect a registered user to his customization page only at his first connection to the gallery.<br><br>
+Please note: This feature does not apply to all registered users. Those with &quot;admin&quot;, &quot;webmaster&quot; or &quot;generic&quot; status are excluded.';
+// --------- End: New or revised $lang ---- from version 2.15.6
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.16.0
+$lang['UAM_ghosttrackerTitle_d'] = 'Also called &quot;Ghost Tracker&quot;, when this function is activated, you can manage your visitors depending on the frequency of their visits. 2 operating modes are available:<br><br>
+- Manual management : When the time between 2 visits is reached,, the visitor appears in the &quot;Ghost Tracker&quot; table where you will be able to remind visitors via email or delete him.<br><br>
+- Automated management : When the period between 2 successive visits is reached, the visitor is automatically deleted or moved into a wait group and/or status. In this second case, an information email can be sent to him.<br><br>
+<b style=&quot;color: red;&quot;>Important note : If you enable this feature for the first time or you have reactivated after a long period off during which new visitors are registered, you must initialize or reset the Ghost Tracker (see corresponding instructions on &quot;Ghost Tracker&quot; tab).</b>';
+$lang['UAM_miscTitle_d'] = '
+- Automatic or manual management of ghosts users<br>
+- Followed registered users<br>
+- Nickname mandatory for guests comments<br>
+...
+';
+$lang['UAM_mailexcTitle_d'] = 'By default, Piwigo accepts all email addresses in the format xxx@yyy.zz. Enabling this option allows you to exclude certain domains in the format: @ [domain_name].[domain_extension].<br><br>
+Examples :<br>
+@hotmail.com -> excluding addresses *@hotmail.com<br>
+@hotmail -> excluding all addresses *@hotmail*';
+$lang['UAM_GTAutoTitle'] = 'Automatic management of ghosts users';
+$lang['UAM_GTAutoTitle_d'] = 'This option allows to apply rules for automated management of ghosts users.
+<br><br>Basic Principle: A user who reaches the maximum time between visits <b><u>and</u></b> has already been notified by email is considered as expired. Then you can apply automated processing rules such as automatic deletion of expired accounts or demotion by restricting access to the gallery (switch automatically to a restricted group and/or status).
+<br><br>The triggering of these automation is achieved when connecting users (any user!) to the gallery.';
+$lang['UAM_GTAutoDelTitle'] = 'Custom message on deleted account';
+$lang['UAM_GTAutoGpTitle'] = 'Automatic change of group / status';
+$lang['UAM_GTAutoGpTitle_d'] = 'The automatic change of group or status equivalent to a demotion of the accounts involved and working on the same principle as the group or the status of validation (see &quot;Setting confirmations and validations of registration&quot;). Therefore be to define a group and / or status demoting access to the gallery. If this has already been defined with the use of registration confirmation function, you can use the same group / status.<br><br>
+<b style=&quot;color: red;&quot;>Important note :</b> If a ghost user still has not heard from after the time limit and despite the automatic notification by email (if enabled), he\'s automatically deleted from the database.';
+$lang['UAM_GTAutoMailTitle'] = 'Automatically sending an email when changing group / status';
+$lang['UAM_AdminValidationMail'] = 'Notification of manual registration validation';
+// --------- End: New or revised $lang ---- from version 2.16.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.0
+$lang['UAM_CustomPasswRetrTitle'] = 'Customize lost password email content';
+$lang['UAM_validationlimitTitle_d'] = 'This option allows to limit the validity of key validation email sent to new registrants. Visitors who register will have x days of time to validate their registration. After this period the validation link will expire.
+<br><br>
+This option is used in conjunction with the &quot;Confirmation of registration&quot;
+<br><br>
+If this option and the option &quot;Remind unvalidated users&quot; are activated, new options will appear below in this section to enable the automation of unvalidated users management.';
+$lang['UAM_remailTitle_d'] = 'This option allows you to send a reminder email to users registered but have not validated their registration on time. It therefore works in conjunction with the &quot;Confirmation of registration&quot;
+<br><br>
+2 types of emails can be sent: With or without regeneration of the validation key. As appropriate, the content of emails can be customized.
+<br><br>
+Refer to the &quot;Tracking validations&quot; tab.
+<br><br>
+If this option and the option &quot;Deadline for registration validation limited&quot; are activated, new options will appear below in this section to enable the automation of unvalidated users management.';
+$lang['UAM_USRAutoTitle'] = 'Automatic management of unvalidated users';
+$lang['UAM_USRAutoTitle_d'] = 'Automatic handling of unvalidated visitors is triggered each time you connect to the gallery and works as follows:
+<br><br>
+- Automatic deletion of accounts not validated in the allotted time without sending automatic email reminder -> &quot;Deadline for registration validation limited&quot; <b><u>enabled</u></b> and &quot;Remind unvalidated users&quot; <b><u>disabled</u></b>.
+<br><br>
+- Automatically sending a reminder message with a new generation of validation key and automatic deletion of accounts not validated in the time after sending the reminder -> &quot;Deadline for registration validation limited&quot; <b><u>enabled</u></b> et &quot;Remind unvalidated users&quot; <b><u>enabled</u></b>.';
+$lang['UAM_USRAutoDelTitle'] = 'Custom message on deleted account';
+$lang['UAM_USRAutoMailTitle'] = 'Automated email reminder';
+$lang['UAM_USRAutoMailTitle_d'] = 'When activated, this function will automatically send personalized content in &quot;Reminder email with new key generated&quot; to visitors who match criteria.';
+$lang['UAM_StuffsTitle'] = 'PWG Stuffs block';
+$lang['UAM_StuffsTitle_d'] = 'This enables an additional UAM block in PWG Stuffs plugin (if installed) to inform your visitors who did not validate their registration about their condition.
+<br><br>
+Please refer to the <b>Tips and Examples of Use</b> at the bottom of this page for details.';
+// --------- End: New or revised $lang ---- from version 2.20.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.3
+$lang['UAM_DumpTitle'] = 'Backup your configuration';
+$lang['UAM_DumpTitle_d'] = 'This allows you to save the entire configuration of the plugin in a file so you can restore it if something goes wrong (wrong manipulation or before an update, for example). By default, the file is stored in this folder ../plugins/UserAdvManager/include/backup/ and is called &quot;UAM_dbbackup.sql&quot;.
+<br><br>
+<b style=&quot;color: red;&quot;>Warning: The file is overwritten each backup action!</b>
+<br><br>
+It can sometimes be useful to retrieve the backup file on your computer. For example: To restore to another database, to outsource or to keep multiple save files. To do this, just check the box to download the file.
+<br><br>
+The recovery from this interface is not supported. Use tools like phpMyAdmin.';
+// --------- End: New or revised $lang ---- from version 2.20.3
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.4
+$lang['UAM_HidePasswTitle'] = 'Password in clear text in the information email';
+$lang['UAM_HidePasswTitle_d'] = 'Choose here if you want to display the password chosen by the visitor in the information email. If you enable the option, the password will then appear in clear text. If you disable the password will not appear at all.';
+// --------- End: New or revised $lang ---- from version 2.20.4
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.11
+$lang['UAM_gttextTitle_d'] = 'Enter the text you want to appear in the email reminder to prompt the user to return to visit your gallery (NB: The text pre-filled with the installation of the plugin is provided as an example).
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.<br>
+- <b style=&quot;color: red;&quot;>[days]</b> to insert the maximum numbers of days between two visits.
+<br><br>
+To use multiple languages, you can use the Extended description plugin\'s tags if it is active.';
+$lang['UAM_confirmtxtTitle_d'] = 'Enter the introductory text that you want to appear in the email confirmation of registration.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.<br>
+- <b style=&quot;color: red;&quot;>[Kdays]</b> to insert the number of days limit to validate a registration (&quot;Deadline for registration validation limited;&quot; have to be enabled).
+<br><br>
+To use multiple languages, you can use the Extended description plugin\'s tags if it is active.';
+$lang['UAM_remailtxt1Title_d'] = 'Enter the introductory text that you want to appear in the reminder email, in addition to the validation key regenerated.
+<br><br>
+If left blank, the mail reminder will include only the validation link. It is therefore strongly advised to take a little explanatory text. (NB: The text pre-filled with the installation of the plugin is provided as an example).
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.<br>
+- <b style=&quot;color: red;&quot;>[Kdays]</b> to insert the number of days limit to validate a registration (&quot;Deadline for registration validation limited;&quot; have to be enabled).
+<br><br>
+To use multiple languages, you can use the Extended description plugin\'s tags if it is active.';
+$lang['UAM_remailtxt2Title_d'] = 'Enter the introductory text that you want to appear in the reminder email without a validation key regenerated.
+<br><br>
+If left blank, the mail reminder will be empty. It is therefore strongly advised to take a little explanatory text. (NB: The text pre-filled with the installation of the plugin is provided as an example).
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.<br>
+- <b style=&quot;color: red;&quot;>[Kdays]</b> to insert the number of days limit to validate a registration (&quot;Deadline for registration validation limited; have to be enabled).
+<br><br>
+To use multiple languages, you can use the Extended description plugin\'s tags if it is active.';
+$lang['UAM_infotxtTitle_d'] = 'Enter the introductory text that you want to appear in the information email.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.
+<br><br>
+To use multiple languages, you can use the Extended description plugin\'s tags if it is active.';
+$lang['UAM_AdminValidationMail_d'] = 'When an administrator or Webmaster of the gallery manually valid registration pending, a notification email is automatically sent to the user. Enter here the text that appears in this email.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.
+<br><br>
+To use multiple languages, you can use the Extended description plugin\'s tags if it is active.';
+$lang['UAM_confirmmail_custom1_d'] = 'When the option &quot;Confirmation of registration&quot; is active, this field allows you to customize the <b><u>acceptance text</u></b> on the registration confirmation page displayed when user clicks the confirmation link that was received by email.
+<br><br>
+After installing the plugin, a standard text is set as an example.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the related user name.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.
+<br><br>
+This field is compatible with the FCK Editor and, for multi-languages, you can use the tags [lang] of the plugin Extended description if it\'s active.';
+$lang['UAM_confirmmail_custom2_d'] = 'When the option &quot;Confirmation of registration&quot; is active, this field allows you to customize the <b><u>rejectance text</u></b> on the registration confirmation page displayed when user clicks the confirmation link that was received by email.
+<br><br>
+After installing the plugin, a standard text is set as an example.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the related user name.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.
+<br><br>
+This field is compatible with the FCK Editor and, for multi-languages, you can use the tags [lang] of the plugin Extended description if it\'s active.';
+$lang['UAM_GTAutoDelTitle_d'] = 'This is only valid when the user whose account has expired itself triggers the deletion mechanism (rare but possible). he\'s then disconnected of the gallery and redirected to a page showing the deletion of his account and, possibly, the reasons for this deletion.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.<br>
+<b style=&quot;color: red;&quot;>[username]</b> is not available here because concerned user has been deleted.
+<br><br>
+Custom text for the redirect page can be entered in this field that is compatible with the FCK Editor and, for multi-languages, you can use the tags [lang] of the plugin Extended description if it\'s active.';
+$lang['UAM_GTAutoMailTitle_d'] = 'When an account is expired (group / status change demoting the visitor), an email information can be sent to clarify the reasons for this change and the means to recover the initial access to the gallery.
+<br>To do this, a link to revalidation of registration is attached to the email (automatic generation of a new validation key).<b style=&quot;color: red;&quot;>If the user has already been notified, his account is automatically destroyed.</b> 
+<br><br>
+Enter the custom text that also explain the reasons for the demotion, to accompany the validation link. The custom text is not mandatory but strongly recommended. In fact, your visitors will not appreciate receiving an email containing only a single link without further explanation. ;-)
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.
+<br><br>
+To use multiple languages, you can use the Extended description plugin\'s tags if it is active.
+<br><br>
+<b style=&quot;color: red;&quot;>Warning: The use of this function is intimately associated with the confirmation of registration by the user (confirmation by mail) and can not be activated without this option.</b>';
+$lang['UAM_CustomPasswRetrTitle_d'] = 'By default, when a user has lost his password and selects the option of recovery, he receives an email containing only his username and his new password.
+<br><br>
+Here, you can add text of your choice to be inserted <b><u>before</u></b> the standard information.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.
+<br><br>
+To use multiple languages, you can use the Extended description plugin\'s tags if it is active.';
+$lang['UAM_USRAutoDelTitle_d'] = 'This is only valid when the user whose account has expired itself triggers the deletion mechanism (rare but possible). he\'s then disconnected of the gallery and redirected to a page showing the deletion of his account and, possibly, the reasons for this deletion.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.<br>
+<b style=&quot;color: red;&quot;>[username]</b> is not available here because concerned user has been deleted.
+<br><br>
+Custom text for the redirect page can be entered in this field that is compatible with the FCK Editor and, for multi-languages, you can use the tags [lang] of the plugin Extended description if it\'s active.';
+// --------- End: New or revised $lang ---- from version 2.20.11
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/language/en_UK/help/index.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/language/en_UK/help/index.php	(revision 4957)
+++ /extensions/UserAdvManager/tags/2.20.11/language/en_UK/help/index.php	(revision 4957)
@@ -0,0 +1,33 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | PhpWebGallery - a PHP based picture gallery                           |
+// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
+// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
+// +-----------------------------------------------------------------------+
+// | file          : $Id: index.php 1912 2007-03-16 06:30:07Z rub $
+// | last update   : $Date: 2007-03-16 07:30:07 +0100 (ven, 16 mar 2007) $
+// | last modifier : $Author: rub $
+// | revision      : $Revision: 1912 $
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/language/en_UK/index.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/language/en_UK/index.php	(revision 3742)
+++ /extensions/UserAdvManager/tags/2.20.11/language/en_UK/index.php	(revision 3742)
@@ -0,0 +1,33 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | PhpWebGallery - a PHP based picture gallery                           |
+// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
+// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
+// +-----------------------------------------------------------------------+
+// | file          : $Id: index.php 1912 2007-03-16 06:30:07Z rub $
+// | last update   : $Date: 2007-03-16 07:30:07 +0100 (ven, 16 mar 2007) $
+// | last modifier : $Author: rub $
+// | revision      : $Revision: 1912 $
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/language/lv_LV/description.txt
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/language/lv_LV/description.txt	(revision 8069)
+++ /extensions/UserAdvManager/tags/2.20.11/language/lv_LV/description.txt	(revision 8069)
@@ -0,0 +1,1 @@
+Pastiprina lietotāju pārvaldības iespējas
Index: /extensions/UserAdvManager/tags/2.20.11/language/lv_LV/plugin.lang.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/language/lv_LV/plugin.lang.php	(revision 11319)
+++ /extensions/UserAdvManager/tags/2.20.11/language/lv_LV/plugin.lang.php	(revision 11319)
@@ -0,0 +1,372 @@
+<?php
+
+global $lang,$conf;
+
+$conf_UAM = unserialize($conf['UserAdvManager']);
+
+
+/* UserManager Tab */
+$lang['UAM_Registration_Date'] = 'Reģistrācijas datums';
+
+
+/* Mailing */
+$lang['UAM_infos_mail %s'] = '%s, lūdzu meklējiet šeit savu informāciju, lai ielogotos galerijā :';
+$lang['UAM_User: %s'] = 'Lietotājs: %s';
+$lang['UAM_Password: %s'] = 'Parole: %s';
+$lang['UAM_Link: %s'] = 'Lūdzu, uzklikšķiniet uz šīs saites, lai apstiprinātu savu reģistrāciju : %s';
+
+
+/* Email confirmation page */
+$lang['UAM_title_confirm_mail'] = 'Apstipriniet savu reģistrāciju';
+$lang['UAM_confirm_mail_page_title'] = 'Apstipriniet savu reģistrāciju';
+
+
+/* Errors and Warnings */
+$lang['UAM_audit_ok'] = 'Pārbaude OK';
+$lang['UAM_Err_audit_username_char'] = '<b>Šinī kontā izmantotas neatļautas rakstzīmes :</b> ';
+$lang['UAM_Err_audit_email_forbidden'] = '<b>Šinī kontā izmanots neatļauts e-pasta pakalpojuma sniedzējs :</b> ';
+$lang['UAM_Err_audit_advise'] = '<b>Jums ir jāveic korekcijas, lai panāktu atbilstību jaunajiem nosacījumiem, ko esat aktivizējuši.<br> Izmantojiet datu bāzes pārvaldības rīku, lai koriģētu lietotāja kontus tieši tabulā ###_USERS';
+$lang['UAM_reg_err_login2'] = 'Lietotājvārdam nav jāsakrīt ar sekojošām rakstzīmēm: ';
+$lang['UAM_reg_err_login5'] = 'Jūsu e-pasta pakalpojumu sniedzējam aizliegta reģistrācija. Aizniegtie e-pasta pakalpojumu sniedzēji ir: ';
+$lang['UAM_empty_pwd'] = '[tukša parole]';
+$lang['UAM_no_update_pwd'] = '[profile atjaunināts neizmainot paroli]';
+$lang['UAM_No_validation_for_Guest'] = 'Viesa konts "Guest" nav pārbaudes objekts';
+$lang['UAM_No_validation_for_default_user'] = 'Konts pēc noklusēšanas nav pārbaudes objekts';
+$lang['UAM_No_validation_for_Webmaster'] = 'Konts "Webmaster" nav pārbaudes objekts';
+$lang['UAM_No_validation_for_your_account'] = 'Jūsu personīgais admin konts nav pārbaudes objekts';
+
+
+/* Processing messages */
+$lang['UAM_%d_Mail_With_Key'] = '%d ziņojums ar atslēgas jauninājumu tika nosūtīts';
+$lang['UAM_%d_Mails_With_Key'] = '%d ziņojumi ar atslēgas jauninājumu tika nosūtīti';
+$lang['UAM_%d_Reminder_Sent'] = '%d atgādinājuma ziņojums tika nosūtīts';
+$lang['UAM_%d_Reminders_Sent'] = '%d atgādinājuma ziņojumi tika nosūtīti';
+$lang['UAM_%d_Validated_User'] = '%d Lietotājs apstiprināts manuāli';
+$lang['UAM_%d_Validated_Users'] = '%d Lietotāji apstiprināti manuāli';
+
+
+/* Action button names */
+$lang['UAM_Delete_selected'] = 'Dzēst';
+$lang['UAM_Mail_without_key'] = 'Atgādinājums bez atslēgas';
+$lang['UAM_Mail_with_key'] = 'Atgādinājums ar atslēgu';
+
+
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.12.0 and 2.12.1
+/* Global Configuration Tab */
+$lang['UAM_PasswordTest'] = 'Rezultāta aprēķins';
+/* Ghost Tracker Tab */
+$lang['UAM_Tab_GhostTracker'] = 'Ghost Tracker (neredzamais izsekotājs)';
+$lang['UAM_Reminder'] = 'Atgādinājuma e-pasts';
+$lang['UAM_Reminder_Sent_OK'] = 'JĀ';
+$lang['UAM_Reminder_Sent_NOK'] = 'NĒ';
+/* Errors and Warnings */
+$lang['UAM_save_config'] ='Konfigurācija saglabāta.';
+$lang['UAM_reg_err_login3'] = 'Drošība : Parole ir obligāta !';
+$lang['UAM_reg_err_login4_%s'] = 'Drošība : Kontrolsistēma aprēķina izvēlētās paroles sarežģītības pakāpi. Jūsu paroles sarežģītība ir par zemu (rezultāts = %s). Lūdzu, izveidojiet jaunu, drošāku paroli, sekojot šiem nosacījumiem:<br>
+- Lietojiet burtus un ciparus<br>
+- Lietojiet apakšējo un augšējo reģistru<br>
+- Palieliniet tās garumu (rakstzīmju skaits)<br>
+Minimālais, administratora pieprasītais paroles sarežģītības līmenis ir: ';
+$lang['UAM_No_reminder_for_Guest'] = 'Konts "Guest" nav atgādinājumu no GhostTracker saņēmējsubjekts';
+$lang['UAM_No_reminder_for_default_user'] = 'Konts pēc noklusējumu nav atgādinājumu no GhostTracker saņēmējsubjekts';
+$lang['UAM_No_reminder_for_Webmaster'] = 'Konts "Webmaster" nav atgādinājumu no GhostTracker saņēmējsubjekts ';
+$lang['UAM_No_reminder_for_your_account'] = 'Jūsu personīgais admin konts nav atgādinājumu no GhostTracker saņēmējsubjekts';
+/* Action button names */
+$lang['UAM_audit'] = 'Pārbaudes iestatījumi';
+$lang['UAM_submit'] = 'Saglabāt iestatījumus';
+// --------- End: New or revised $lang ---- from version 2.12.0 and 2.12.1
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.12.2
+/* Errors and Warnings */
+$lang['UAM_GhostTracker_Init_OK'] = 'Ghost Tracker atiestatīšana (reset) paveikta !';
+/* Action button names */
+$lang['UAM_GT_Reset'] = 'Atiestatīt Ghost Tracker';
+// --------- End: New or revised $lang ---- from version 2.12.2
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.12.8
+/* Errors and Warnings */
+$lang['UAM_mail_exclusionlist_error'] = 'Brīdinājums! Jūs esat ievadījis jaunu rindu (CR-LF) e-pasta izņēmumu saraksta sākumā (parādīts ar sarkanu zemāk). Lai gan šī jaunā rinda nav redzama, tā joprojām eksistē un var būt par iemeslu spraudņa kļūmīgai darbībai. Lūdzu pārrakstiet jūsu izņēmumu sarakstu, lai tas nesāktos ar jaunu tukšu rindu.';
+// --------- End: New or revised $lang ---- from version 2.12.8
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.13.0
+/* UserList Tab */
+$lang['UAM_UserList_Title'] = 'Re;gistrēto lietotāju Monitorings';
+// --------- End: New or revised $lang ---- from version 2.13.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.13.4
+/* Global Configuration Tab */
+$lang['UAM_Title_Tab'] = 'UserAdvManager - Versija : ';
+$lang['UAM_SubTitle1'] = 'Spraudņa konfigurācija';
+$lang['UAM_Tab_Global'] = 'Konfigurācija';
+$lang['UAM_Title1'] = 'Reģistrācijas ierobežojumu iestatīšana';
+$lang['UAM_Title2'] = 'Reģistrācijas apstiprinājumu un pārbaudes iestatīšana';
+$lang['UAM_Title3'] = 'Pēcreģistrācijas un citu opciju iestatīšana';
+$lang['UAM_Title4'] = 'Lietošanas piemēri un ieteikumi';
+$lang['UAM_No_Casse'] = 'Lietotājvārdi: Reģistrjutība';
+$lang['UAM_Username_Char'] = 'Lietotājvārdi: Rakstzīmju izslēgšana';
+$lang['UAM_Username_Char_true'] = ' Aizliegtās rakstzīmes:<br>(Lietot komatu, atdalot rakstzīmes)<br><br>';
+$lang['UAM_Username_Char_false'] = ' Atļaut visas (pēc noklusēšanas)';
+$lang['UAM_Password_Enforced'] = 'Paroļu drošības līmeņa stiprināšana';
+$lang['UAM_Password_Enforced_true'] = ' Iespējot. Minimālais līmenis: ';
+$lang['UAM_AdminPassword_Enforced'] = 'Attiecas uz administratoriem';
+$lang['UAM_PasswordTest'] = 'Paroles tests: ';
+$lang['UAM_ScoreTest'] = 'Rezultāts: ';
+$lang['UAM_MailExclusion'] = 'E-pasta domēnu izslēgšana';
+$lang['UAM_MailExclusion_true'] = ' Izslēgt sekojošus domēnus:<br>(Lietojiet komatu, lai atdalītu domēnus)';
+
+$lang['UAM_Mail_Info'] = 'Informācijas sūtīšana lietotājiem ar e-pastu:';
+$lang['UAM_MailInfo_Text'] = ' Insormācijas e-pasta pielāgošana:';
+$lang['UAM_Confirm_Mail'] = 'Reģistrācijas apstiprināšana:';
+$lang['UAM_ConfirmMail_Text'] = ' Apstiprinājuma e-pasta pielāgošana:';
+$lang['UAM_Confirm_grpstat_notice'] = 'Brīdinājums: Ieteicams lietot vai nu grupu vai pārbaudes statūtus, bet ne abus vienlaicīgi.';
+$lang['UAM_Confirm_Group'] = 'Pārbaudes Grupas <br>(atmest ------- lai neietekmētu grupu)';
+$lang['UAM_Confirm_Status'] = 'Pārbaudes statūti<br>(atmest ------- lai saglabātu Piwigo noklusējumu)';
+$lang['UAM_No_Confirm_Group'] = 'Grupa priekš reģistrāciju neapstiprinājušajiem lietotājiem<br>';
+$lang['UAM_Validated_Group'] = 'Grupa priekš reģistrāciju apstiprinājušajiem lietotājiem <br>';
+$lang['UAM_No_Confirm_Status'] = ' Reģistrāciju neapstiprinājušo lietotāju statuss<br>';
+$lang['UAM_Validated_Status'] = ' Reģistrāciju apstiprinājušo lietotāju statuss<br>';
+$lang['UAM_ValidationLimit_Info'] = 'Reģistrācijas apstiprināšanas limita robežlīnija';
+$lang['UAM_ConfirmMail_TimeOut_true'] = ' Iespējot. Dienu skaits līdz termiņa beigām: ';
+$lang['UAM_ConfirmMail_Remail'] = 'Atcerēties neakceptētos lietotājus';
+$lang['UAM_ConfirmMail_ReMail_Txt1'] = 'Pielāgot atgādinājuma ziņu<b><u>ņemot vērā</u></b> jaunās reģenerācijas atslēgas pārbaudi.';
+$lang['UAM_ConfirmMail_ReMail_Txt2'] = 'Pielāgot atgādinājuma ziņu <b><u>bez</u></b> reģenerācijas atslēgas pārbaudes.';
+
+$lang['UAM_GhostTracker'] = 'Ghost (slēpto) apmeklētāju pārvaldība (Ghost Tracker)';
+$lang['UAM_GhostTracker_true'] = ' Iespējot. Maksimālais periods dienās starp divām vizītēm: ';
+$lang['UAM_GhostTracker_ReminderText'] = 'Ghost Tracker atgadinājuma ziņojuma pielāgošana';
+$lang['UAM_LastVisit'] = ' Reģistrēto lietotāju izsekošana';
+
+$lang['UAM_Tab_UserManager'] = 'Apstiprinājumu izsekošana';
+
+/* UserManager Tab */
+$lang['UAM_SubTitle3'] = 'Apstiprinājumu izsekošana';
+$lang['UAM_UserManager_Title'] = 'Apstiprinājumu izsekošana';
+/* Ghost Tracker Tab */
+$lang['UAM_SubTitle4'] = 'Ghost Tracker';
+$lang['UAM_GT_Init'] = 'Ghost Tracker inicializācija';
+$lang['UAM_GhostTracker_Title'] = 'Ghost (slēpto) apmeklētāju pārvaldība';
+$lang['UAM_GhostTracker_Init'] = 'Ja grasāties lietot šo iespēju pirmo reizi vai reaktivējat to pēc ilgāka laika, kurā reģistrējušies jauni lietotāji, jums jāinicializē vai jāresetē Ghost Tracker. Šī darbība ir veicama tikai pēc opcijas aktivēšanas vai reaktivēšanas. Lūdzu klikšķiniet <u>vienreiz</u> uz reset pogas zemāk.';
+/* UserList Tab */
+$lang['UAM_SubTitle5'] = 'Lietotāju izsekošana';
+$lang['UAM_Tab_UserList'] = 'Lietotāju izsekošana';
+/* Mailing */
+$lang['UAM_Add of %s'] = 'Profils izveidos priekš %s';
+$lang['UAM_Update of %s'] = 'Profils %s atjaunināts';
+
+/* Mailing */
+$lang['UAM_Ghost_reminder_of_%s'] = '%s, šis ir atgādinājuma e-pasts';
+$lang['UAM_Reminder_with_key_of_%s'] = '%s, jūsu apstiprināšanas atslēga ir atjaunota';
+$lang['UAM_Reminder_without_key_of_%s'] = '%s, jūsu apstiprināšanas atslēgas darbība beigsies';
+/* Errors and Warnings */
+$lang['UAM_Err_GhostTracker_Settings'] = 'Šī lapa pieejama tikai, ja "Ghost Tracker" ir aktīvs iekš "Setting the registrations followed and other options".';
+$lang['UAM_Err_Userlist_Settings'] = 'Šī lapa ir pieejama tikai, ja "Monitoring registered users" ir aktīvs iekš "Setting the registrations followed and other options".';
+// --------- End: New or revised $lang ---- from version 2.13.4
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.14.0
+$lang['UAM_AdminConfMail'] = 'Reģistrācijas apstiprināšana administratoriem';
+$lang['UAM_Tips1_txt'] = '
+<ul>
+<li>
+             Mērķi:<br>
+             - Pēc viņa ienākšanas galerijā: Informēt apmeklētāju, ka viņam jāpiereģistrējas, lai tiktu pie privātiem fotoattēliem<br>
+             - Pie reģistrācijas: Ģenerēt tiešsaistes e-pasta apstiprinājumu, informēt jauno lietotāju par to, ka viņš vēl nav apstiprināts un iekļaut viņu gaidīšanas grupā "Waiting"<br>
+             - Pie apstiprināšanas: Automātiski pārslēgt no gaidīšanas grupas "Waiting" uz apstiprināto grupu "Validated", kas dod pieeju privātām kategorijām<br><br>
+<b>Atgādinājums: Pie standartoperācijām "Guest" (viesis) redz tikai publiskās kategorijas bez informatīvā materiāla.</b>
+</li><br><br>
+<li>
+Priekšnoteikumi:<br>
+- Galerija ar visām vai dažām privātajām ketegorijām redzama tikai reģistrētiem lietotājiem<br>
+- Vismaz 2 sekojošas Piwigo lietotāju grupas:gaidīšanas grupa  "Waiting," bez tiesībām darboties ar privātām kategorijām un apstiprināto grupa "Validated" ar visām tiesībām darbam ar privātām kategorijām<br>
+- UAM spraudnis<br>
+- PWG Stuffs spraudnis, moduļa "Personal Block" pievienošanai<br>
+- Pēc izvēles (neobligāts), spraudnis Extended Description (paplašināts apraksts), lai nodrošinātu daudzvalodu atbalstu<br>
+</li><br><br>
+<li>
+Posmi:<br><br>
+A. UAM spraudnī:
+<ol>
+<li>Iespējo reģistrācijas apstiprināšanu</li>
+<li>Ievada papildinformāciju-skaidrojumu, kas tiks pievienots e-pasta reģistrācijas apstiprinājumam. Gadījumā, ja ir aktivēts spraudnis Extended Description (papildus apraksts), var tikt lietotas valodu iezīmes (tagi)</li>
+<li>Izvēlas gaidīšanas grupu "Waiting" sadaļā "Lietotājiem, kas nav apstiprinājuši savu reģistrāciju"</li>
+<li>Izvēlas apstiprināto grupu "Validated" sadaļā "Lietotājiem, kas apstiprinājuši savu reģistrāciju"</li>
+<li>Saglabā spraudņa konfigurāciju</li>
+</ol>
+<br>
+B. PWG Stuffs spraudnī :
+<ol>
+<li>Pievieno jauna tipa moduli "Personal block: Rāda bloķētos darbiniekus (piem. redakcionāli)"</li>
+<li>Konfigurē moduli, norādot nosaukumu (piem."Registration pending validation") un tā aprakstu, pārbaudot grupu "Waiting"  atļauto grupu sarakstā</li>
+<li>Pabeidz moduļa saturu ar informatīvu ziņojumu neapstiprinātajiem lietotājiem.Kā UAM valodas iezīmes var tikt lietotas, ja spraudnī ir iespējota papildus apraksta Extended Description funkcija</li>
+<li>Atzīmē "Rādīt moduli vietnes mājas lapā"</li>
+<li>Pārbauda moduļa konfigurāciju</li>
+</ol>
+</li>
+</ul>';
+// --------- End: New or revised $lang ---- from version 2.14.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.0
+$lang['UAM_confirmmail_custom_Txt1'] = 'Apstiprinājuma lapas teksts – Apstiprinājums akceptēts';
+$lang['UAM_confirmmail_custom_Txt2'] = 'Apstiprinājuma lapas teksts – Apstiprinājums noraidīts';
+$lang['UAM_LastVisit_Date'] = 'Pēdējais apciemojums';
+$lang['UAM_Nb_Days'] = 'Atšķirība dienās';
+$lang['UAM_Err_UserManager_Settings'] = 'Šī lapa piejam tikai, ja "Reģistrācijas apstiprināšana" ir aktīva un neapstiprināto apmeklētāju grupa ir nokonfigurēta sadaļā "Setting confirmations and validations of registration" (reģistrācijas pārbaudes un apstiprinājuma iestatījumi).';
+// --------- End: New or revised $lang ---- from version 2.15.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.1
+$lang['UAM_Support_txt'] = 'Oficiāls šī spraudņa atbalsts ir pieejams tikai Piwigo forumā:<br>
+<a href="http://piwigo.org/forum/viewtopic.php?id=15015" onclick="window.open(this.href);return false;">Forums angļu valodā - http://piwigo.org/forum/viewtopic.php?id=15015</a><br><br>
+Vēl pieejasms projekta bugtracker: <a href="http://piwigo.org/bugs/" onclick="window.open(this.href);return false;">http://piwigo.org/bugs/</a>';
+// --------- End: New or revised $lang ---- from version 2.15.1
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.4
+$lang['UAM_Force_Validation'] = 'Manuālā apstiprināšana';
+$lang['UAM_Confirm_Mail_true'] = ' Iespējot – Apstiprinājis lietotājs';
+$lang['UAM_Confirm_Mail_local'] = ' Iespējot – Apstiprinājis administrators (netika nosūtīta apstiprināšanas atslēga)';
+$lang['UAM_RedirToProfile'] = 'Novirzīt uz "Customization" (pielāgošanas) lapu';
+// --------- End: New or revised $lang ---- from version 2.15.4
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.16.0
+/* TODO */$lang['UAM_Expired_Group'] = '<b>Group</b> for user\'s registration has expired<br>';
+/* TODO */$lang['UAM_Expired_Status'] = '<b>Status</b> for user\'s registration has expired<br>';
+/* TODO */$lang['UAM_GTAuto'] = 'Automatic management of ghosts users';
+/* TODO */$lang['UAM_GTAutoDel'] = 'Automatic deletion of accounts';
+/* TODO */$lang['UAM_GTAutoGp'] = 'Automatic change of group / status';
+/* TODO */$lang['UAM_GTAutoMail'] = 'Automatically sending an email when changing group / status';
+/* TODO */$lang['UAM_Deleted_Account_Redirection_Page'] = 'Access denied - Account destroyed!';
+/* TODO */$lang['UAM_title_redir_page'] = 'Access denied for having an account destroyed!';
+/* TODO */$lang['UAM_Error_GTAutoMail_cannot_be_set_without_ConfirmMail'] = 'Consistency error in the configuration chosen:<br><br>
+"Setting the followed registrations and other options > Ghost visitors management (Ghost Tracker) > Automatic management of ghosts users > Automatically sending an email when changing group / status" can not be activated if "Setting confirmations and validations of registration > Confirmation of registration - Validation by user" is not enabled at first.<br><br>
+To ensure consistency, the option "Automatically sending an email when changing group / status" was automatically repositioned "disabled".<br><br>';
+/* TODO */$lang['UAM_Demotion of %s'] = 'Demotion of %s';
+/* TODO */$lang['UAM_AdminValidationMail_Text'] = 'Notification of manual registration validation';
+/* TODO */$lang['UAM_Validation of %s'] = 'Validation of %s';
+// --------- End: New or revised $lang ---- from version 2.16.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.0
+/* TODO */$lang['UAM_CustomPasswRetr'] = 'Customize lost password email content';
+/* TODO */$lang['UAM_USRAuto'] = 'Automatic management of unvalidated users';
+/* TODO */$lang['UAM_USRAutoDel'] = 'Custom message on deleted account';
+/* TODO */$lang['UAM_USRAutoMail'] = 'Automated email reminder';
+$lang['UAM_Disable'] = ' Atspējot (pēc noklusējuma)';
+$lang['UAM_Enable'] = ' Iespējot ';
+/*TODO*/$lang['UAM_Tips1'] = 'Information of non-validated registration with UAM and PWG_Stuffs';
+/*TODO*/$lang['UAM_Tips1_txt'] = '
+          <ul>
+            <li>
+            Goals: Inform the visitor that the registration is awaiting approval by displaying a personal block on the home page of the gallery, and this, as registration is not approved.
+            <br><br>
+            <b>Recall: In standard operation, the "Guest" only sees the public categories, without information message.</b>
+            </li><br><br>
+            <li>
+Prerequisite:<br>
+- A gallery with all or some private categories, visible only by registered users<br>
+- At least 2 following Piwigo\'s users groups: "Waiting," without permission on private categories, and "Validated" with all the permissions on the private categories<br>
+- UAM plugin<br>
+- PWG Stuffs plugin, for adding a special UAM module<br>
+- Optionally, the plugin Extended Description to support multi-languages<br>
+            </li><br><br>
+            <li>
+Stages:<br><br>
+A. In plugin UAM:
+              <ol>
+                <li>Enable registration confirmation</li>
+                <li>Enable PWG Stuffs module option</li>
+                <li>Enter text for additional explanation which will be attached to mail registration confirmation. If the plugin Extended Description is activated, the language tags can be used</li>
+                <li>Select the "Waiting" group under "For users who have not validated their registration"</li>
+                <li>Select the "Validated" group under "For users who have validated their registration"</li>
+                <li>Save the plugin configuration</li>
+              </ol>
+<br>
+B. In plugin PWG Stuffs :
+              <ol>
+                <li>Go to tab "Add a new module"</li>
+                <li>Choose "UAM Module"</li>
+                <li>Configure the module, indicating the title (eg "Registration pending validation") and its description, and only check "Waiting" in the list of groups allowed</li>
+                <li>Complete content of the module with the message information to be displayed to users not validated. As UAM, languages markup may be used if the plugin is enabled Extended Description</li>
+                <li>Check "Display the module on the homepage of the site"</li>
+                <li>Validate the configuration of the module</li>
+              </ol>
+            </li>
+          </ul>';
+/*TODO*/$lang['UAM_Tips2'] = 'Information of non-validated registration with UAM and Additional Pages';
+/*TODO*/$lang['UAM_Tips2_txt'] = '
+          <ul>
+            <li>
+            Goals: Inform the visitor that the registration is awaiting validation by posting an additional page replacing the standard index page gallery at each of these connections, and this, as registration is not approved.
+            <br><br>
+            Advantages over the method with PWG_Stuffs: Allow formatting information and displaying the information immediately upon registration of visitors.
+            </li><br><br>
+            <li>
+Priekšnoteikumi:<br>
+- Galerija ar visām vai dažām privātajām ketegorijām redzama tikai reģistrētiem lietotājiem<br>
+- Vismaz 2 sekojošas Piwigo lietotāju grupas:gaidīšanas grupa  "Waiting," bez tiesībām darboties ar privātām kategorijām un apstiprināto grupa "Validated" ar visām tiesībām darbam ar privātām kategorijām<br>
+- UAM spraudnis<br>
+- Additional Pages plugin for adding and managing an additional page to replace the default index page of the gallery<br>
+- Pēc izvēles (neobligāts), spraudnis Extended Description (paplašināts apraksts), lai nodrošinātu daudzvalodu atbalstu<br>
+            </li><br><br>
+            <li>
+Posmi:<br><br>
+A. UAM spraudnī:
+<ol>
+<li>Iespējo reģistrācijas apstiprināšanu</li>
+<li>Ievada papildinformāciju-skaidrojumu, kas tiks pievienots e-pasta reģistrācijas apstiprinājumam. Gadījumā, ja ir aktivēts spraudnis Extended Description (papildus apraksts), var tikt lietotas valodu iezīmes (tagi)</li>
+<li>Izvēlas gaidīšanas grupu "Waiting" sadaļā "Lietotājiem, kas nav apstiprinājuši savu reģistrāciju"</li>
+<li>Izvēlas apstiprināto grupu "Validated" sadaļā "Lietotājiem, kas apstiprinājuši savu reģistrāciju"</li>
+<li>Saglabā spraudņa konfigurāciju</li>
+</ol>
+<br>
+B. Additional Pages spraudnī :<br>
+                <b>NOTE : The management of access rights for groups on Additional Pages must be turned on (see plugin configuration settings).</b>
+                <br>
+              <ol>
+                <li>Add a new page with at least the following parameters:</li>
+                <ul>
+                  <li>Page name: The name you wish to give to the additional page (ie: Registration not validated)</li>
+                  <li>Set as homepage checked</li>
+                  <li>Groups allowed: Check the box corresponding to the group "Waiting" configured in UAM</li>
+                  <li>Content: The text you want to use for visitors.</li>
+                </ul>
+                <br>
+                <li>And that\'s it! Only visitors registered and whose registration has not been validated will see this additional index page.</li>
+              </ol>
+            </li>
+          </ul>';
+/*TODO*/$lang['UAM_No_Ghosts'] = 'No ghosts visitors for the moment';
+/*TODO*/$lang['UAM_No_Userlist'] = 'No visitors to list for the moment';
+/*TODO*/$lang['UAM_No_Usermanager'] = 'No unvalidated registers to list for the moment';
+/*TODO*/$lang['UAM_Stuffs_Title'] = 'UAM block';
+/*TODO*/$lang['UAM_Stuffs_Desc'] = 'Adds an information block for unvalidated users';
+/*TODO*/$lang['UAM_Stuffs'] = 'PWG Stuffs block';
+// --------- End: New or revised $lang ---- from version 2.20.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.3
+/*TODO*/$lang['UAM_DumpTxt'] = 'Backup your configuration';
+/*TODO*/$lang['UAM_Dump_Download'] = 'To download the backup file, please check this box:';
+/*TODO*/$lang['UAM_Save'] = 'Run backup';
+/*TODO*/$lang['UAM_Dump_OK'] = 'Backup file created successfully';
+/*TODO*/$lang['UAM_Dump_NOK'] = 'Error: Unable to create backup file !';
+// --------- End: New or revised $lang ---- from version 2.20.3
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.4
+/*TODO*/$lang['UAM_HidePassw'] = 'Clear password in information email';
+// --------- End: New or revised $lang ---- from version 2.20.4
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.11
+/*TODO*/$lang['UAM_Error_Using_illegal_flag'] = 'Syntax error ! The [Kdays] AutoText flag is used as the "Reģistrācijas apstiprināšanas limita robežlīnija" option was not activated. Please activate the option or correct the text field(s) colored in red.';
+// --------- End: New or revised $lang ---- from version 2.20.11
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/language/lv_LV/help/plugin.lang.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/language/lv_LV/help/plugin.lang.php	(revision 11321)
+++ /extensions/UserAdvManager/tags/2.20.11/language/lv_LV/help/plugin.lang.php	(revision 11321)
@@ -0,0 +1,350 @@
+<?php
+global $lang;
+
+$lang['UAM_restricTitle'] = 'Reģistrācijas ierobežojumi';
+$lang['UAM_confirmTitle'] = 'Reģistrācijas pārbaude un apstiprināšana';
+$lang['UAM_confirmTitle_d'] = '
+- Informācijas e-pasta ģenerēšana<br>
+- Reģistrācijas pārbaudes e-pasta ģenerēšana<br>
+- Autopievienošanās grupas vai statusa ģenerēšana<br>
+- Reģistrācijas robežlīnijas pārbaude<br>
+- Atgādinājuma e-pasta ģenerēšana<br>
+...
+';
+$lang['UAM_miscTitle'] = 'Pēcreģistrācijas un citas iespējas (options)';
+$lang['UAM_casenTitle'] = 'Lietotājvārdi: Reģistrjutīgs';
+$lang['UAM_carexcTitle'] = 'Lietotājvārdi: Rakstzīmju izņēmumi';
+$lang['UAM_carexcTitle_d'] = 'Varētu būt saistoši aizliegt izmantot lietotājvārdos kādas noteiktas rakstzīmes (piemēram: noraidīt loginus saturošus &quot;@&quot;). Šī iespēja ļauj izslēgt rakstzīmes vai rakstzīmju secību, notikumus.<br>
+NB: Šī iespēja ļauj izslēgt arī veselus vārdus.
+<br><br>
+<b style=&quot;color: red;&quot;>Uzmanību: Šī opcija neatstāj iespaidu uz lietotājvārdiem, kas izveidoti pirms to aktivēšanas.</b>';
+$lang['UAM_passwTitle'] = 'Paroļu drošības līmeņa paaugstināšana';
+$lang['UAM_passwTitle_d'] = 'Šīs opcijas iespējošana padara par obligātu paroles ietveršanu reģistrējoties, un pieprasa, lai apmeklētāju izvēlētā parole atbilstu minimālajam komplicētības prasībām. Ja šis līmenis nav sasniegts, tiem parādīts sasniegtais komplicētības rādītājs, minimāli pieļaujamais slieksnis, kā arī ieteikumi, kas jādara, lai sasniegtu labāku rezultātu.<br><br>
+Pastāv paroles lauka tests, kas mēra paroles komplicētības pakāpi, un var sniegt padomu, kā uzlabot un padarīt šo rezultātu labāku.<br><br>
+Note: Komplicētības rādītājs tiek aprēķināts izmantojot vairākus parametrus:
+garumu, izmantoto rakstzīmju tipu (burti, cipari, lielie burti, mazie burti, speciālās rakstzīmes). Rezultāts zem100 tiek atzīts par nepietiekami zemu (low), no 100 līdz 500, kā vidēji sarežģīts; virs 500, drošības līmenis ir lielisks.';
+$lang['UAM_passwtestTitle'] = 'Paroles komplicētības testēšana';
+$lang['UAM_passwtestTitle_d'] = 'Ievadiet testēšanao paredzēto paroli un klikšķiniet uz&quot;Score calculation&quot; lai redzētu rezultātu.';
+$lang['UAM_passwadmTitle'] = 'Attiecas uz administratoriem';
+$lang['UAM_passwadmTitle_d'] = 'Administrators var izveidot lietotāja kontu ar vai bez paroles komplicētības pārbaudes aplikāciju.<br><br>
+Note: Ja lietotājs, kura konts jau izveidots, grib nomainīt savu paroli un ir aktīva paroles stingrības uzlabišanas aplikācija, būs jāievēro visi stingrības uzlabošanas noteikumi.';
+$lang['UAM_mailexcTitle'] = 'E-Pasta domēnu izslēgšana';
+$lang['UAM_infomailTitle'] = 'Lietotājiem e-nosūtāmā informācija';
+$lang['UAM_infomailTitle_d'] = 'Šī opcija ļauj automātiski ar e-pastu nosūtīt lietotājam informatīvu ziņu par reģistrāciju vai profila paroles vai e-pasta adreses maiņu.<br><br>
+Nosūtāmā ziņa kompozicionāli sastāv no pielāgojamās daļas, maza ievada un fiksētās daļas, kas ietver info par lietotāja loginu, paroli un e-pasta adresi.';
+$lang['UAM_infotxtTitle'] = 'Informatīvā e-pastra pielāgošana';
+$lang['UAM_confirmtxtTitle'] = 'Apstiprinājuma e-pasta pielāgošana';
+$lang['UAM_confirmgrpTitle'] = 'Pārbaudāmās Grupas';
+$lang['UAM_confirmgrpTitle_d'] = '<b style=&quot;color:
+red;&quot;>UZMANĪBU : Pārbaudāmo grupu lietošana pieprasa, ka esat izveidojis vismaz vienu lietotājgrupu un, ka tā ir definēta &quot; pēc noklusējuma &quot; Piwigo grupu lietotāju pārvaldītājā.</b><br><br>
+Grupas ir validētas (apstiprināti) lietošanai sasaistē ar (apstiprinājums un reģistrācija) &quot;Confirmation of registration&quot;';
+$lang['UAM_confirmstatTitle'] = 'Validācijas statūti';
+$lang['UAM_confirmstatTitle_d'] = '<b style=&quot;color:
+red;&quot;>UZMANĪBU : Statusa pārbaudes lietošana prasa, lai lietotājam &quot;Guest&quot; jaunai reģistrācijai būtu iestatījumi pēc noklusējuma (kā lietotāja paraugā). Nēmiet vērā, ka ir iespējams par paraugu jaunai reģistrācijai izmantot jebkuru citu lietotāju. Papildus informācijai, lūdzu izmantojiet Piwigo dokumentāciju.</b><br><br>
+Statūti ir validēti lietošanai sasaistē ar (apstiprinājums un reģistrācija)  &quot;Confirmation of registration&quot;';
+$lang['UAM_validationlimitTitle'] = 'Reģistrācijas validācijas termiņa ierobežošana';
+$lang['UAM_remailTitle'] = 'Atgādināt nevalidētos lietotājus';
+$lang['UAM_remailtxt1Title'] = 'Atgādinājuma e-vēstule ar jauni uzģenerēto atslēgu';
+$lang['UAM_remailtxt2Title'] = 'Atgādinājuma e-vēstule bez jauni uzģenerētās atslēgas';
+$lang['UAM_ghosttrackerTitle'] = 'Ghost (slēpto) apmeklētāju pārvaldība';
+$lang['UAM_ghosttrackerTitle_d'] = 'Arī saukts par &quot;Ghost Tracker&quot; (spoku izsekotāju), kad šī funkcija aktivēta, iespējams sekot lietotājiem atkarībā no to apmeklējuma biežuma. Kad tiek sasniegts laiks starp diviem apmeklējumiem, iekš &quot;Ghost Tracker&quot; tabulas parādās ampmeklētājs ar jautājuma zīmi, kur ar e-pasta palīdzību var nosūtīt atgādinājumu.<br><br>
+<b style=&quot;color: red;&quot;>Ja iespējojat šo iespēju pirmo reizi vai reaktivējat pēc lielāka laika perioda, kurā reģistrējušies jauni lietotāji, ir jāinicializē vai jāveic Ghost Tracker reset operācija.</b>';
+$lang['UAM_gttextTitle'] = 'Ghost Tracker atgādinājuma ziņojums';
+$lang['UAM_lastvisitTitle'] = 'Reģistrēto lietotāju izsekošana (Tracking)';
+$lang['UAM_lastvisitTitle_d'] = 'Šis aktivē tabulu &quot;Tracking users&quot; iezīmē (tabā), kurā reģistrēti galeriju apmeklējušie lietotāji, viņu pēdējā apmeklējuma datums, kā arī galerijā pavadītais laiks (dienās) kopš pēdējā apmeklējuma. Monitoringam ir tīri informatīvs raksturs galerijas administratora vajadzībām.';
+$lang['UAM_tipsTitle'] = 'Padomi un Piemēri';
+$lang['UAM_tipsTitle_d'] = 'Padomi un dažādi izmantošanas piemēri';
+$lang['UAM_userlistTitle'] = 'Lietotāju izsekošana';
+$lang['UAM_usermanTitle'] = 'Validāciju izsekošana';
+$lang['UAM_gtTitle'] = 'Ghost (slēpto) apmeklētāju vadība';
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.14.0
+$lang['UAM_adminconfmailTitle'] = 'Reģistrācijas apliecinājums adminiem';
+$lang['UAM_adminconfmailTitle_d'] = 'Jūs varat atspējot šo apstiprināšanu tikai tiem lietotāju kontiem, ko izveidojis administrators, lietojot Piwigo lietotāju vadības saskarni.<br><br>
+Aktivizējot šo iespēju, katram administratora izveidotajam lietotājam tiks nosūtīta elektroniskā pasta vēstuve ar reģistrācijas apstiprinājumu.<br><br>
+Atspējojot šo iespēju (pēc noklusējuma), tiek nosūtīta tikai e-pasta informācija (ja &quot;Information email to user&quot;(Informācijas e-pasts lietotājam) ir iespējots).';
+// --------- End: New or revised $lang ---- from version 2.14.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.0
+$lang['UAM_confirmmail_custom1'] = 'Apstiprinājuma lapas teksts – Apstiprinājums akceptēts';
+$lang['UAM_confirmmail_custom2'] = 'Apstiprinājuma lapas teksts – Apstiprinājums noraidīts';
+// --------- End: New or revised $lang ---- from version 2.15.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.2
+$lang['UAM_casenTitle_d'] = 'Pēc noklusējuma Piwigo ir reģistrjutīgs:
+Lielie un mazie burti, veidojot vārdus pie reģistrācijas, tiek uztverti kā atsevišķas rakstzīmes. Tādējādi, &quot;Foo&quot;,
+&quot;foo&quot; un &quot;FOO&quot; var būt 3 atšķirīgi lietotāji.<br><br>
+Šīs opcijas iespējošana ļauj izanalizēt visas iespējas &quot;foo&quot; kā viena lietotāja gadījumā. Ja &quot;foo&quot; jau eksistē, jauna lietotāja &quot;Foo&quot; izveidošana tiks noraidīta.<br><br>
+<b style=&quot;color: red;&quot;>Uzmanību: Šī opcija neattiecas uz lietotājvārdiem, kas izveidoti pirms šīs opcijas aktivēšanas.</b>';
+// --------- End: New or revised $lang ---- from version 2.15.2
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.4
+$lang['UAM_restricTitle_d'] = '
+- Rakstzīmes izslēgšana<br>
+- Paroles izpilde<br>
+- E-pasta domēnu izslēgšana<br>
+...
+';
+$lang['UAM_userlistTitle_d'] = 'Šī lapa domāta administratoru informēšanai. Tajā ir visu galerijā reģistrēto lietotāju saraksts ar to reģistrācijas datumu un apmeklējumu skaitu dienās līdz pēdējai vizītei. Saraksts sakārtots pēc dienu skaita dilstošā secībā.
+<br><br>
+<b><u>Tikai tad, kad Ghost Tracker ir aktīvs</u></b>, dienu skaits bez apmeklējuma parādās kā sekojošs krāsu kods, pamatojoties uz Ghost Tracker opcijas maksimālajiem iestatījumiem:
+<br>
+- <b style=&quot;color: lime;&quot;>Zaļa</b> : Kad lietotājs apmeklējis galeriju <b style=&quot;color: lime;&quot;><u>mazāk par 50%</u></b> no Ghost Tracker norādītā maksimuma.<br>
+- <b style=&quot;color: orange;&quot;>Oranža</b> : Kad lietotājs apmeklējis galeriju <b style=&quot;color: orange;&quot;><u> starp 50% un 99% </u></b> no Ghost Tracker norādītā maksimuma. <br>
+- <b style=&quot;color: red;&quot;>Sarkana</b> : Kad lietotājs apmeklējis galeriju <b style=&quot;color: red;&quot;><u>vairāk kā 100%</u></b> no Ghost Tracker norādītā maksimuma. <b><u>Šajā gadījumā lietotājam jāparādas arī Ghost Tracker tabulā.</u></b><br>
+<br>
+Piemērs :
+<br>
+Maksimālais Ghost Tracker konfigurācijas periods ir 100 dienas.
+<br>
+Lietotājs būs zaļā krāsā, ja būs apmeklējis galeriju mazāk par 50 dienām, oranžā, ja apmeklējums būs starp 50 un 99 dienām, bet sarkanā, ja 100 un vairāk dienu.
+<br><br>
+<b>NOTE</b>: Saraksts neatspoguļo tos, kuri nav validējuši savu reģistrāciju (ja aktīva reģistrācijas validācijas opcija). Šie lietotāji, tad tiek pārvaldīti īpašā veidā caur &quot;Tracking validations&quot; iezīmi.
+<br><br>
+<b>Table Sorting Function</b>: Iespējams kārtot attēlojamos datus noklikšķinot uz tabulas galvenēm. Pieturot SHIFT var kārtot pēc maksimums 4 kolonām vienlaicīgi.';
+$lang['UAM_usermanTitle_d'] = 'Kad iespējota reģistrācijas ierobežošana pēc laika, zemāk atradīsit to lietotāju sarakstu, no kuriem tiek gaidīta reģistrācijas validācija, <b style=&quot;text-decoration:
+underline;&quot;>ir vai nav</b> laikā, lai validētos.<br><br>
+Lietotāja reģistrēšanās datums ir zaļā krāsā, ja lietotājs tiek uzskatīts par esošu reģistrācijas validācijas laika periodā. Šinī gadījumā validācijas atslēga vēl ir derīga un mēs varam nosūtīt jums e-pastu ar vai bez jaunās validācijas atslēgas.<br><br>
+Ja reģistrācijas datums parādās sarkanā krāsā, validācijas periods ir beidzies. Šinī gadījumā, ja gribat iespējot, lai lietotājs validē savu reģistrāciju, jums jāsūta e-pasts ar validācijas atslēgas reģenerāciju.<br><br>
+Visos gadījumos manuāli veikt validāciju.<br><br>
+Šajā logā jūs varat:
+<br><br>
+- Manuāli dzēst kontus <b>(manuālā drenēšana)</b>
+<br>
+- Ģenerēt e-atgādinātāja pastu  <b>bez</b> jaunas atslēgas ģenerēšanas. Brīdinājums:
+Sūta e-atgādinājumus mērķapmeklētājiem. Šī funkcija neizdzēš mērķlietotāju reģistrācijas datumu un taimauts joprojām ir spēkā.
+<br>
+- Ģenerēt E-atgādinātāja pastu <b>ar</b> jaunas atslēgas ģenerēšanu. Brīdinājums :
+Sūta e-atgādinājumus mērķapmeklētājiem. Šī funkcija atiestata mērķapmeklētāju reģistrācijas datumu, kas pielīdzināms validācijas termiņa pagarināšanai.
+<br>
+- Iesniegt reģistrācijas apstiprināšanu manuāli, pat ja derīguma termiņš ir beidzies <b>(piespiedu validācija)</b>.
+<br><br>
+<b>Table Sorting Function</b>: tabulas šķirošanas funkcija ļauj kārtot tabulu noklikšķinot uz tabulas galvenēm. Pieturot SHIFT var kārtot pēc maksimums 4 kolonām vienlaicīgi.';
+$lang['UAM_gtTitle_d'] = 'Ja Ghost Tracker ir iespējots un inicializēts, zemāk būs pieejams reģistrēto lietotāju saraksts, kuri nav atgriezušies pēc x dienām. &quot;x&quot; ir General Setup iezīmē konfigurētais dienu skaits. Bez tam, ir kolonna, kas norāda, vai mērķapmeklētājiem ir nosūtīts e-pasta atgādinājums. Tādējādi, uzmetot aci, būs redzami tie lietotāji, kuri nav ņēmuši vērā atgādinājumus.<br><br>Šajā logā jūs varat:
+<br><br>
+- Manuāli dzēst kontus <b>(manual drain)</b>
+<br>
+- Ģenerēt e-atgādinātāja pastu <b> atiestatot beidzamā apmeklējuma datumu</b>.
+Tas dot wildcard mērķapmeklētājiem. Ja apmeklētājs jau ir saņēmis atgādinājumu, nekas netraucē atsūtīt viņam jaunu e-pastu, kas no jauna atiestatīs beidzamā apmeklējuma datumu.
+<br><br>
+<b>Table Sorting Function</b>: tabulas šķirošanas funkcija ļauj kārtot tabulu noklikšķinot uz tabulas galvenēm. Pieturot SHIFT var kārtot pēc maksimums 4 kolonām vienlaicīgi.';
+$lang['UAM_confirmmailTitle'] = 'Reģistrācijas apstiprināšana';
+$lang['UAM_confirmmailTitle_d'] = 'Šī opcija dod iespēju lietotājam apstiprināt savu reģistrāciju ar pie reģistrācijas e-pastā saņemtās saites palīdzību vai to var izdarīt administrators manuāli.<br><br>
+Pirmajā gadījumā, e-vēstule tiek veidota no pielāgojamas ievadošās daļas un fiksētās daļas, kas satur aktivēšanas saiti, kas uzģenerēta no gadījuma atslēgas, ko iespējams reģenerēt izmantojot &quot;Tracking validations&quot; iezīmi.<br><br>
+Otrajā gadījumā, <b><u>validācijas atslēga ar e-pastu netiek sūtīta!</u></b>.
+Apmeklētājiem jāgaida līdz administrators personīgi veic viņu reģistrācijas validāciju caur &quot;Validation tracking&quot; iezīmi. Ieteicams aktivēt Piwigo optciju &quot;Email admins when a new user registers&quot; (skatīt Piwigo konfigurācijas iespējas) un izmantot &quot;Information
+email to user&quot; , lai brīdinātu jaunos reģistrantus par nepieciešamību sagaidīt kontu aktivāciju.
+<br>
+<b style=&quot;color: red;&quot;>NB: Opcijas &quot;Deadline for registration validation limited&quot; un &quot;Remind unvalidated users &quot; jāiestāda atslēgtā (off) stāvoklī, kad iespējota administratora manuālās validācijas funkcija.</b>
+<br><br>
+Šo iespēju parasti izmanto kopā ar grupas un/vai statūtu automātisku nozīmēšanu. Piemēram, lietotāji, kas nav validējuši savu reģistrāciju, tiks ielikti īpašā lietotāju grupā (ar vai bez ierobežojumie uz piekļuvi galerijai), kamēr lietotājs, kas ir apstiprinājis savu reģistrāciju tiks ielikts grupā &quot;normal&quot;.';
+$lang['UAM_RedirTitle'] = 'Novirzīt uz &quot;Customization&quot; lapu';
+// --------- End: New or revised $lang ---- from version 2.15.4
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.6
+$lang['UAM_RedirTitle_d'] = 'Šī opcija automātiski novirza reģistrēto lietotāju uz tā pielāgošanas lapu tikai pie pirmās viņa konekcijas galerijai. <br><br>
+Lūdzu ņemiet vērā: Šī iespēja neaatiecas uz visiem reģistrētajiem lietotājiem. Lietotāji ar &quot;admin&quot;, &quot;webmaster&quot; or &quot;generic&quot; statusu nav iekļauti.';
+// --------- End: New or revised $lang ---- from version 2.15.6
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.16.0
+$lang['UAM_ghosttrackerTitle_d'] = 'Arī saukts par &quot;Ghost
+Tracker&quot;, kad šī funkcija aktivēta, jūs varat pārvaldīt savus apmeklētājus atkarībā no viņu apmeklējumu biežuma. Iespējami 2 darbības režīmi:<br><br>
+- Manuālā pārvaldība : Kad tiek sasniegts laiks starp 2 apmeklējumiem, apmeklētājs parādās &quot;Ghost Tracker&quot; tabulā, kur jums ir iespēja aizsūtīt atgādinājuma e-pastu lietotājam vai to izdzēst.<br><br>
+- Automātiskā pārvaldība : Kad tiek sasniegts laiks starp 2 apmeklējumiem, apmeklētājs tiek automātiski izdzēsts vai pārvietots gaidītāju grupā. Šajā otrajā gadījumā lietotājam var tikt nosūtīts informējošs e-pasts.<br><br>
+<b style=&quot;color: red;&quot;>Svarīga piezīme : Ja izmantojat šo variantu pirmo reizi vai pēc ilgāka laika, kurā klāt nākuši jauni lietotāji, to reaktivējat, jums jāinicializē vai jāveic Ghost Tracker reset funkcija (skatīt attiecīgās instrukcijas &quot;Ghost Tracker&quot; lapā).</b>';
+$lang['UAM_miscTitle_d'] = '
+- Ghosts lietotāju automātiskā un manuālā pārvaldība<br>
+- Pēc reģistrētie lietotāji<br>
+- Viesu komentāriem nepieciešams segvārds (nickname)<br>
+...
+';
+$lang['UAM_mailexcTitle_d'] = 'Pēc noklusējuma Piwigo atbalsta visas e-pasta adreses formātā xxx@yyy.zz. Šīs opcijas iespējošana ļauj izslēgt no adresēm noteiktus domēnus formātā: @
+[domain_name].[domain_extension].<br><br>
+Piemēri :<br>
+@hotmail.com -> izņemot adreses *@hotmail.com<br>
+@hotmail -> izņemot visas adreses *@hotmail*';
+$lang['UAM_GTAutoTitle'] = ' Ghosts lietotāju automātiskā pārvaldība';
+$lang['UAM_GTAutoTitle_d'] = 'Šī opcija dod iespēju pielietot (slēptajiem) ghosts lietotājiem automātiskās pārvaldības nosacījumus.
+<br><br>Pamatprincips: Lietotājs, kas sasniedzis maksimālo laiku starp apmeklējumiem <b><u>and</u></b> un ir jau par to ar e-pastu brīdināts, tiek uzskatīts kā vairs neesošs. Tad jūs varat pielietot automātiskās apstrādes nosacījumus, kā notecējušo kontu automātisko dzēšanu vai to pazemināšanu, ierobežojot piekļuvi galerijai (automātiski pārvirzot ierobežojumu grupā vai piešķirot šādu statusu).
+<br><br>Šis automātiskais process tiek iedarbināts lietotājiem (jebkuram lietotājam!) pieslēdzoties galerijai.';
+$lang['UAM_GTAutoDelTitle'] = 'Pielāgots ziņojums par dzēstu kontu';
+$lang['UAM_GTAutoGpTitle'] = 'Grupas/stausa automātiskā nomaiņa';
+$lang['UAM_GTAutoGpTitle_d'] = 'Automātiska konta grupas vai statusa maiņa ir ekvivalenta kontu, kas ir iesaistīti un darbojas uz vieniem un tiem pašiem principiem kā validācijas grupas, funkcionalitātes pazemināšanai (skatīt &quot;Setting confirmations and validations of registration&quot;).
+Tādējādi jānosaka mainīto (pazemināto) grupu un/vai statusa piekļuves tiesības galerijai. Ja tas jau izdarītslietojot reģistrācijas apstiprināšanas funkciju, varat lietot to pašu grupu vai statusu.<br><br>
+<b style=&quot;color: red;&quot;>Important note :</b> Ja no slēptā ghost lietotāja pēc termiņa limita, neskatoties uz informēšanu ar e-pastu (ja iespējots), nav nekādas ziņas, viņš automātiski tie dzēsts no datu bāzes';
+$lang['UAM_GTAutoMailTitle'] = 'Automātiska e-pasta nosūtīšana, informējot par grupas vai statusa maiņu.';
+$lang['UAM_AdminValidationMail'] = 'Paziņojums par manuālās reģistrācijas apstiprināšanu';
+// --------- End: New or revised $lang ---- from version 2.16.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.0
+/* TODO */$lang['UAM_CustomPasswRetrTitle'] = 'Customize lost password email content';
+/* TODO */$lang['UAM_validationlimitTitle_d'] = 'Šī opcija ļauj ierobežot jaunajiem reģistrantiem nosūtīto atslēgas validācijas e-pastu validitāti. Lietotājiem, kuri reģistrējas ir x dienas laika, lai apstiprinātu savu reģistrāciju. Pēc šī laika beigsies validācijas saite derīgums.
+<br><br>
+Šī opcija tiek lietota sasaistē ar &quot;Confirmation of registration&quot;
+<br><br>
+If this option and the option &quot;Atgādināt nevalidētos lietotājus&quot; are activated, new options will appear below in this section to enable the automation of unvalidated users management.';
+/* TODO */$lang['UAM_remailTitle_d'] = 'Šī iespēja ļauj nosūtīt atgādinājuma e-pastus reģistrētajiem, bet laikā neveikušajiem validāciju, lietotājiem. Tādēļ ši opcija strādā sasaistē ar (apstiprinājumu un reģistrāciju) &quot;Confirmation of registration&quot;
+<br><br>
+Var tikt nosūtītas 2 tipu e-vēstules: Ar vai bez validācijas atslēgas reģistrāciju. Ja nepieciešams, e-vēstules saturu var pielāgot.<br><br>
+Attiecas uz &quot;Validāciju izsekošanas&quot; iezīmi(tab).
+<br><br>
+If this option and the option &quot;Reģistrācijas validācijas termiņa ierobežošana&quot; are activated, new options will appear below in this section to enable the automation of unvalidated users management.';
+/*TODO*/$lang['UAM_USRAutoTitle'] = 'Automatic management of unvalidated users';
+/*TODO*/$lang['UAM_USRAutoTitle_d'] = 'Automatic handling of unvalidated visitors is triggered each time you connect to the gallery and works as follows:
+<br><br>
+- Automatic deletion of accounts not validated in the allotted time without sending automatic email reminder -> &quot;Deadline for registration validation limited&quot; <b><u>enabled</u></b> and &quot;Remind unvalidated users&quot; <b><u>disabled</u></b>.
+<br><br>
+- Automatically sending a reminder message with a new generation of validation key and automatic deletion of accounts not validated in the time after sending the reminder -> &quot;Deadline for registration validation limited&quot; <b><u>enabled</u></b> et &quot;Remind unvalidated users&quot; <b><u>enabled</u></b>.';
+/*TODO*/$lang['UAM_USRAutoDelTitle'] = 'Custom message on deleted account';
+/*TODO*/$lang['UAM_USRAutoMailTitle'] = 'Automated email reminder';
+/*TODO*/$lang['UAM_USRAutoMailTitle_d'] = 'When activated, this function will automatically send personalized content in &quot;Reminder email with new key generated&quot; to visitors who match criteria.';
+/*TODO*/$lang['UAM_StuffsTitle'] = 'PWG Stuffs block';
+/*TODO*/$lang['UAM_StuffsTitle_d'] = 'This enables an additional UAM block in PWG Stuffs plugin (if installed) to inform your visitors who did not validate their registration about their condition.
+<br><br>
+Please refer to the <b>Tips and Examples of Use</b> at the bottom of this page for details.';
+// --------- End: New or revised $lang ---- from version 2.20.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.3
+/*TODO*/$lang['UAM_DumpTitle'] = 'Backup your configuration';
+/*TODO*/$lang['UAM_DumpTitle_d'] = 'This allows you to save the entire configuration of the plugin in a file so you can restore it if something goes wrong (wrong manipulation or before an update, for example). By default, the file is stored in this folder ../plugins/UserAdvManager/include/backup/ and is called &quot;UAM_dbbackup.sql&quot;.
+<br><br>
+<b style=&quot;color: red;&quot;>Warning: The file is overwritten each backup action!</b>
+<br><br>
+It can sometimes be useful to retrieve the backup file on your computer. For example: To restore to another database, to outsource or to keep multiple save files. To do this, just check the box to download the file.
+<br><br>
+The recovery from this interface is not supported. Use tools like phpMyAdmin.';
+// --------- End: New or revised $lang ---- from version 2.20.3
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.4
+/*TODO*/$lang['UAM_HidePasswTitle'] = 'Password in clear text in the information email';
+/*TODO*/$lang['UAM_HidePasswTitle_d'] = 'Choose here if you want to display the password chosen by the visitor in the information email. If you enable the option, the password will then appear in clear text. If you disable the password will not appear at all.';
+// --------- End: New or revised $lang ---- from version 2.20.4
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.11
+/* TODO */$lang['UAM_gttextTitle_d'] = 'Ievadiet tekstu , ko jūs gribat atspoguļot e-pasta atgādinājumā, lai atgādinātu lietotājam apmeklēt jūsu galeriju. (NB: Spraudni instalējot, aizpildītais teksts ir piedāvāts kā paraugs).
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.<br>
+- <b style=&quot;color: red;&quot;>[days]</b> to insert the maximum numbers of days between two visits.
+<br><br>
+Lai izmantotu vairākas valodas, jūs varat lietot Paplašinātā apraksta spraudņa tagus (gadījumā, ja tas ir aktīvs).';
+/* TODO */$lang['UAM_confirmtxtTitle_d'] = 'Ievadiet teksta, ko jūs gribat atspoguļot informācijas e-vēstulē, ievaddaļu.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.<br>
+- <b style=&quot;color: red;&quot;>[Kdays]</b> to insert the number of days limit to validate a registration (&quot;Reģistrācijas apstiprināšanas limita robežlīnija;&quot; have to be enabled).
+<br><br>
+Lai izmantotu vairākas valodas, jūs varat lietot Paplašinātā apraksta spraudņa tagus (gadījumā, ja tas ir aktīvs).';
+/* TODO */$lang['UAM_remailtxt1Title_d'] = 'Ievadiet teksta, ko jūs gribat atspoguļot informācijas e-vēstulē, ievaddaļu, kā pielikumu reģenerētajai validācijas atslēgai.
+<br><br>
+Ja ir atstāts tukšs lauks, e-pasta atgādinātājs ietver sevī tikai validācijas saiti.
+Tādēļ ir ieteicams ietvert mazu skaidrojošu tekstu. (NB: Spraudni instalējot, aizpildītais teksts ir piedāvāts kā paraugs).
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.<br>
+- <b style=&quot;color: red;&quot;>[Kdays]</b> to insert the number of days limit to validate a registration (&quot;Reģistrācijas apstiprināšanas limita robežlīnija;&quot; have to be enabled).
+<br><br>
+Lai izmantotu vairākas valodas, jūs varat lietot Paplašinātā apraksta spraudņa tagus (gadījumā, ja tas ir aktīvs).';
+/* TODO */$lang['UAM_remailtxt2Title_d'] = 'Ievadiet teksta, ko jūs gribat atspoguļot informācijas e-vēstulē, ievaddaļu bez validācijas atslēgas.
+<br><br>
+Ja ir atstāts tukšs lauks, e-pasta atgādinātājvēstule būs tukša. Tādēļ ir ieteicams ietvert mazu skaidrojošu tekstu.(NB: Spraudni instalējot, aizpildītais teksts ir piedāvāts kā paraugs).
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.<br>
+- <b style=&quot;color: red;&quot;>[Kdays]</b> to insert the number of days limit to validate a registration (&quot;Reģistrācijas apstiprināšanas limita robežlīnija;&quot; have to be enabled).
+<br><br>
+Lai izmantotu vairākas valodas, jūs varat lietot Paplašinātā apraksta spraudņa tagus (gadījumā, ja tas ir aktīvs).';
+/* TODO */$lang['UAM_infotxtTitle_d'] = 'Ievadiet teksta, ko jūs gribat atspoguļot informācijas e-vēstulē, ievaddaļu.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.
+<br><br>
+Lai izmantotu vairākas valodas, jūs varat lietot Paplašinātā apraksta spraudņa tagus (gadījumā, ja tas ir aktīvs).';
+/* TODO */$lang['UAM_AdminValidationMail_d'] = 'Gadījumā, kad administrators vai galerijas Webmāsters manuāli aiztur reģistrācijas procesu, lietotājam automātiski tiek nosūtīts e-pasta paziņojums. Ievadiet šeit tekstu, ko gribat, lai tas parādītos šajā e-pasta ziņojumā.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.
+<br><br>
+Ja ir aktivēts paplašinātā apraksta Extended description spraudnis, varat izmantot tā iezīmes (valodu tagus), lai lietotu vairākas pieejamās valodas.';
+/* TODO */$lang['UAM_confirmmail_custom1_d'] = 'Tad, kas opcija &quot;Confirmation of registration&quot; ir aktīva, šis lauks ļauj jums pielāgot apstiprinājuma tekstu <b><u>acceptance text</u></b> reģistrācijas apstiprināšanas lapā, kas parādās, kad lietotājs uzklikšķina uz apstiprināšanas saites, ko viņš saņēmis ar e-pastu.
+<br><br>
+Pēc spraudņa uzinstalēšanas, kā piemērs tiek piedāvāts standarta teksta variants.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.
+<br><br>
+Šis lauks ir savietojams ar FCK Redaktoru un, multi-valodu režīmā, varat lietot Paplašināta apraksta (Extended description), gadījumā, ja tas ir aktīvs) [lang] iezīmes- tagus.';
+/* TODO */$lang['UAM_confirmmail_custom2_d'] = 'Tad, kad opcija &quot;Confirmation of registration&quot; ir aktīva, šis lauks ļauj jums pielāgot noraidījuma tekstu <b><u>rejectance text</u></b> > reģistrācijas apstiprināšanas lapā, kas parādās, kad lietotājs uzklikšķina uz apstiprināšanas saites, ko viņš saņēmis ar e-pastu.
+<br><br>
+Pēc spraudņa uzinstalēšanas, kā piemērs tiek piedāvāts standarta teksta variants.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.
+<br><br>
+Šis lauks ir savietojams ar FCK Redaktoru un, multi-valodu režīmā, varat lietot Paplašināta apraksta (Extended description), gadījumā, ja tas ir aktīvs) [lang] iezīmes- tagus.';
+/* TODO */$lang['UAM_GTAutoDelTitle_d'] = 'Šis variants ir iespējams tikai tad, ja lietotājs, kura konta derīguma termiņš ir beidzies, pats ieslēdz dzēšanas mehānismu (rets, bet iespējams gadījums). Tad viņš tiek atslēgts no galerijas un novirzīts uz lapu, kas atspoguļo viņa konta dzēšanas faktu un iespējamo šīs dzēšanas iemeslu.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.<br>
+<b style=&quot;color: red;&quot;>[username]</b> is not available here because concerned user has been deleted.
+<br><br>
+Pāradresācijas lapai paredzēto pielāgoto tekstu var ievadīt šajā laukā, savietojams ar FCK Redaktora standartu, lai izmantotu multi-valodu režīmu, lietojiet spraudņa paplašinātais apraksts Extended description iezīmes [lang], tikai gadījumā, ja spraudnis aktīvs.';
+/* TODO */$lang['UAM_GTAutoMailTitle_d'] = 'Kad konta derīguma termiņš izbeidzas (grupas/statusa maiņa, apmeklētāja funkcionāla pazemināšana), var tikt izsūtīts informatīvs e-pasta ziņojums, kas izskaidro notikušā iemeslus, kā arī paskaidro iespējas, kā no jauna atjaunot piekļuvi galerijai.
+<br>Lai to paveiktu, e-pastam ir pievienota reģistrācijas revalidācijas saite (jaunas validācijas automātiska uzģenerēšana).<b
+style=&quot;color: red;&quot;>Ja lietotājs jau ir bijis brīdināts, viņa konts automātiski tiek iznīcināts.</b>
+<br><br>
+Lai papildinātu validācijas apstiprināšanas saiti, var pievienot konta funkcionalitātes pazemināšanas paskaidrojošu tekstu. Šis paskaidrojuma teksts nav obligāts, bet stingri iesakāms. Patiesībā, jūsu apmeklētāji nebūs sevišķi apmierināti, saņemot tikai aktivācijas saiti bez nekādiem paskaidrojumiem. ;-)
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.
+<br><br>
+ Ja ir aktivēts paplašinātā apraksta Extended description spraudnis, varat izmantot tā iezīmes (valodu tagus), lai lietotu vairākas pieejamās valodas.
+<br><br>
+<b style=&quot;color: red;&quot;>Brīdinājums: Šīs funkcijas izmantošana ir cieši saistīta ar lietotāja reģistrācijas apstiprināšanu (apstiprināšana ar e-pastu) un nevar tikt aktivēta bez šīs opcijas.</b>';
+/* TODO */$lang['UAM_CustomPasswRetrTitle_d'] = 'By default, when a user has lost his password and selects the option of recovery, he receives an email containing only his username and his new password.
+<br><br>
+Here, you can add text of your choice to be inserted <b><u>before</u></b> the standard information.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.
+<br><br>
+To use multiple languages, you can use the Extended description plugin\'s tags if it is active.';
+/*TODO*/$lang['UAM_USRAutoDelTitle_d'] = 'This is only valid when the user whose account has expired itself triggers the deletion mechanism (rare but possible). he\'s then disconnected of the gallery and redirected to a page showing the deletion of his account and, possibly, the reasons for this deletion.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.<br>
+<b style=&quot;color: red;&quot;>[username]</b> is not available here because concerned user has been deleted.
+<br><br>
+Custom text for the redirect page can be entered in this field that is compatible with the FCK Editor and, for multi-languages, you can use the tags [lang] of the plugin Extended description if it\'s active.';
+// --------- End: New or revised $lang ---- from version 2.20.11
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/language/lv_LV/help/index.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/language/lv_LV/help/index.php	(revision 8094)
+++ /extensions/UserAdvManager/tags/2.20.11/language/lv_LV/help/index.php	(revision 8094)
@@ -0,0 +1,33 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | PhpWebGallery - a PHP based picture gallery                           |
+// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
+// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
+// +-----------------------------------------------------------------------+
+// | file          : $Id: index.php 1912 2007-03-16 06:30:07Z rub $
+// | last update   : $Date: 2007-03-16 07:30:07 +0100 (ven, 16 mar 2007) $
+// | last modifier : $Author: rub $
+// | revision      : $Revision: 1912 $
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/language/lv_LV/index.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/language/lv_LV/index.php	(revision 8069)
+++ /extensions/UserAdvManager/tags/2.20.11/language/lv_LV/index.php	(revision 8069)
@@ -0,0 +1,33 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | PhpWebGallery - a PHP based picture gallery                           |
+// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
+// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
+// +-----------------------------------------------------------------------+
+// | file          : $Id$
+// | last update   : $Date$
+// | last modifier : $Author$
+// | revision      : $Revision$
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/language/it_IT/description.txt
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/language/it_IT/description.txt	(revision 4520)
+++ /extensions/UserAdvManager/tags/2.20.11/language/it_IT/description.txt	(revision 4520)
@@ -0,0 +1,1 @@
+Aumenta le possibilità di gestione degli utenti
Index: /extensions/UserAdvManager/tags/2.20.11/language/it_IT/plugin.lang.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/language/it_IT/plugin.lang.php	(revision 11319)
+++ /extensions/UserAdvManager/tags/2.20.11/language/it_IT/plugin.lang.php	(revision 11319)
@@ -0,0 +1,336 @@
+<?php
+
+global $lang,$conf;
+
+$conf_UAM = unserialize($conf['UserAdvManager']);
+
+
+/* UserManager Tab */
+$lang['UAM_Registration_Date'] = 'Data d\'iscrizione';
+
+
+/* Mailing */
+$lang['UAM_infos_mail %s'] = '%s, di seguito i vostri dati per accedere alla galleria :';
+$lang['UAM_User: %s'] = 'Utente : %s';
+$lang['UAM_Password: %s'] = 'Password : %s';
+$lang['UAM_Link: %s'] = 'Cliccare su questo link per confermare la vostra iscrizzione : %s';
+
+
+/* Email confirmation page */
+$lang['UAM_title_confirm_mail'] = 'Conferma della vostra iscrizzione';
+$lang['UAM_confirm_mail_page_title'] = 'Conferma l\'iscrizzione';
+
+
+/* Errors and Warnings */
+$lang['UAM_audit_ok'] = 'Audit OK';
+$lang['UAM_Err_audit_username_char'] = '<b>Questo conto utente utilizza uno o più caratteri vietati :</b> ';
+$lang['UAM_Err_audit_email_forbidden'] = '<b>Questo conto utente usa un dominio d\'Email proibito :</b> ';
+$lang['UAM_Err_audit_advise'] = '<b>Dovete eseguire delle correzioni per rispettare le nuove impostazzioni che avete attivato.<br> Utilizzare un programma per la gestione della base dati per correggere i conti utente direttamente nella tabella ###_USERS';
+$lang['UAM_reg_err_login2'] = 'Il nome utente non deve contenere i caratteri seguenti : ';
+$lang['UAM_reg_err_login5'] = 'Il tuo provider di posta usa dominio d\'email proibito. I domini preibiti sono i seguenti : ';
+$lang['UAM_empty_pwd'] = '[password vuota]';
+$lang['UAM_no_update_pwd'] = '[profilo aggiornato senza modifica della password]';
+$lang['UAM_No_validation_for_Guest'] = 'Il conto "Guest" non è soggetto a convalida';
+$lang['UAM_No_validation_for_default_user'] = 'Il conto di default non è soggetto a convalida';
+$lang['UAM_No_validation_for_Webmaster'] = 'Il conto del "Webmaster" non è soggetto a convalida';
+$lang['UAM_No_validation_for_your_account'] = 'Il vostro conto amminstratore non è soggetto a convalida';
+
+
+/* Processing messages */
+$lang['UAM_%d_Mail_With_Key'] = '%d messaggio con il rinnovo della chiave è stato inviato';
+$lang['UAM_%d_Mails_With_Key'] = '%d messaggi con il rinnovo della chiave sono stati inviati';
+$lang['UAM_%d_Reminder_Sent'] = '%d email di rilancio è stata inviata';
+$lang['UAM_%d_Reminders_Sent'] = '%d email di rilancio sono state inviate';
+$lang['UAM_%d_Validated_User'] = '%d utente convalidato manualmente';
+$lang['UAM_%d_Validated_Users'] = '%d utenti convalidati manualmente';
+
+
+/* Action button names */
+$lang['UAM_Delete_selected'] = 'Cancellare';
+$lang['UAM_Mail_without_key'] = 'Email di rilancio senza chiave';
+$lang['UAM_Mail_with_key'] = 'Email di rilancio con chiave';
+
+
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.12.0 and 2.12.1
+/* Global Configuration Tab */
+$lang['UAM_PasswordTest'] = 'Calcolo del punteggio';
+/* Ghost Tracker Tab */
+$lang['UAM_Tab_GhostTracker'] = 'GhostTracker';
+$lang['UAM_Reminder'] = 'Email di rilancio';
+$lang['UAM_Reminder_Sent_OK'] = 'SÌ';
+$lang['UAM_Reminder_Sent_NOK'] = 'NO';
+/* Errors and Warnings */
+$lang['UAM_save_config'] ='Configurazione salvata';
+$lang['UAM_reg_err_login3'] = 'Sicurezza : La password è obbligatoria!';
+$lang['UAM_reg_err_login4_%s'] = 'Sicurezza : un sistema di controllo calcola un punteggio basandosi sulla complessità della password scelta. La complessità della password è troppo bassa (punteggio = %s). Si prega di scegliere una nuova password più sicura seguendo queste regole : <br>
+- Utilizzare delle lettere e dei numeri<br>
+- Usare delle maiuscole e delle minuscole<br>
+- Aumentare la lunghezza (numero di caratteri)<br>
+Il punteggio minimo richiesto dall\'amministratore per la password è di : ';
+$lang['UAM_No_reminder_for_Guest'] = 'Il conto utente "Guest" non è soggetto a ricevere dei promemoria dal GhostTracker';
+$lang['UAM_No_reminder_for_default_user'] = 'Il conto utente di default non è soggetto a ricevere dei promemoria dal GhostTracker';
+$lang['UAM_No_reminder_for_Webmaster'] = 'Il conto utente "Webmaster" non è soggetto a ricevere dei promemoria dal GhostTracker';
+$lang['UAM_No_reminder_for_your_account'] = 'Il vostro conto amministratore non è soggetto a ricevere dei promemoria dal GhostTracker';
+/* Action button names */
+$lang['UAM_audit'] = 'Audit delle impostazioni';
+$lang['UAM_submit'] = 'Salvare le impostazioni';
+// --------- End: New or revised $lang ---- from version 2.12.0 and 2.12.1
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.12.2
+/* Errors and Warnings */
+$lang['UAM_GhostTracker_Init_OK'] = 'Inizzializzazione GhostTracker eseguita!';
+/* Action button names */
+$lang['UAM_GT_Reset'] = 'Reset del GhostTracker';
+// --------- End: New or revised $lang ---- from version 2.12.2
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.12.8
+/* Errors and Warnings */
+$lang['UAM_mail_exclusionlist_error'] = 'Attenzione! Avete inserito una nuova riga all\'inizio dell\'elenco d\'esclusione email (indicato in rosso qui sotto). Anche se questa nuova riga non è visibile, la sua presenza potrebbe causare delle disfunzioni del plugin. Si prega di cancellare la riga vuota';
+// --------- End: New or revised $lang ---- from version 2.12.8
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.13.0
+/* UserList Tab */
+$lang['UAM_UserList_Title'] = 'Monitoraggio degli utenti registrati';
+$lang['UAM_Tab_UserList'] = 'Monitoraggio degli utenti';
+// --------- End: New or revised $lang ---- from version 2.13.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.13.4
+/* Global Configuration Tab */
+$lang['UAM_Title_Tab'] = 'UserAdvManager - Versione : ';
+$lang['UAM_SubTitle1'] = 'Configurazione del plugin';
+$lang['UAM_Tab_Global'] = 'Configurazione';
+$lang['UAM_Title1'] = 'Impostare le restrizioni per le registrazioni';
+$lang['UAM_Title2'] = 'Impostare le conferme e validazioni per l\'iscrizione';
+$lang['UAM_Title3'] = 'Impostare le registrazioni seguite e altre opzioni';
+$lang['UAM_Title4'] = 'Suggerimenti ed esempi d\'utilizzo';
+$lang['UAM_No_Casse'] = 'Nome utente : Sensibile alle maiusc/minusc';
+$lang['UAM_Username_Char'] = 'Nome utente : Esclusione di certi caratteri';
+$lang['UAM_Username_Char_true'] = ' Vietare i caratteri : <br>(usare una virgola per separare ogni carattere)<br><br>';
+$lang['UAM_Username_Char_false'] = ' Autorizzare tutti (di default)';
+$lang['UAM_Password_Enforced'] = 'Rafforzare il livello di sicurezza delle password';
+$lang['UAM_Password_Enforced_true'] = ' Attivare. Punteggio minimo : ';
+$lang['UAM_AdminPassword_Enforced'] = 'Applicare agli amministratori';
+$lang['UAM_PasswordTest'] = 'Password di prova : ';
+$lang['UAM_ScoreTest'] = 'Risultato : ';
+$lang['UAM_MailExclusion'] = 'Esclusione dei domini d\'email';
+$lang['UAM_MailExclusion_true'] = ' Escludi i seguenti domini : <br>(utilizzare una virgola per separare ogni dominio)';
+
+$lang['UAM_Mail_Info'] = 'Email d\'informazione per l\'utente :';
+$lang['UAM_MailInfo_Text'] = ' Personalizzare il testo dell\'email :';
+$lang['UAM_Confirm_Mail'] = 'Conferma dell\'iscrizione :';
+$lang['UAM_ConfirmMail_Text'] = ' Personalizzare il testo dell\'email di conferma :';
+$lang['UAM_Confirm_Group'] = 'Gruppi di convalida<br>(------- per non assegnare nessun gruppo)';
+$lang['UAM_Confirm_Status'] = 'Convalida Statuti<br>(invia ------- per mantenere il valore di default di Piwigo)';
+$lang['UAM_Confirm_grpstat_notice'] = 'ATTENZIONE : Si consiglia di utilizzare o il gruppo o lo statuto di convalida ma non entrambi simultaneamente';
+$lang['UAM_No_Confirm_Group'] = 'Gruppo per gli utenti che non hanno convalidato la loro iscrizione<br>';
+$lang['UAM_Validated_Group'] = 'Gruppo per gli utenti che hanno convalidato la loro iscrizione<br>';
+$lang['UAM_No_Confirm_Status'] = 'Stato per gli utenti che non hanno convalidato la loro iscrizione<br>';
+$lang['UAM_Validated_Status'] = 'Stato per gli utenti che hanno convalidato la loro iscrizione<br>';
+$lang['UAM_ValidationLimit_Info'] = 'Termine per la validazione dell\'iscrizione limitato';
+$lang['UAM_ConfirmMail_TimeOut_true'] = ' Attivare. Numero di giorni per la scadenza : ';
+$lang['UAM_ConfirmMail_Remail'] = 'Email di rilancio ai visitatori non convalidati';
+$lang['UAM_ConfirmMail_ReMail_Txt1'] = 'Personalizzare l\'email di rilancio <b><u>con</u></b> rigenerazione di una nuova chiave di convalida';
+$lang['UAM_ConfirmMail_ReMail_Txt2'] = 'Personalizzare l\'email di rilancio <b><u>senza</u></b> rigenerazione di una nuova chiave di convalida';
+
+$lang['UAM_GhostTracker'] = 'Gestione dei visitatori fantasmi (GhostTracker)';
+$lang['UAM_GhostTracker_true'] = ' Attivare. Durata massima di giorni tra due visite : ';
+$lang['UAM_GhostTracker_ReminderText'] = 'Testo di rilancio personalizzato';
+$lang['UAM_LastVisit'] = ' Tracciamento utenti registrati';
+
+$lang['UAM_Tab_UserManager'] = 'Tracciamento convalide';
+
+/* UserManager Tab */
+$lang['UAM_SubTitle3'] = 'Tracciamento convalide';
+$lang['UAM_UserManager_Title'] = 'Tracciamento convalide';
+/* Ghost Tracker Tab */
+$lang['UAM_SubTitle4'] = 'GhostTracker';
+$lang['UAM_GT_Init'] = 'Inizializzazione del GhostTracker';
+$lang['UAM_GhostTracker_Title'] = 'Gestione degli visitatori fantasmi';
+$lang['UAM_GhostTracker_Init'] = 'Se si attiva questa funzione per la prima volta o se viene riattivata dopo un lungo periodo durante il quale dei nuovi visitatori si sono registrati, è necessario inizializzare o azzerare il Tracker Ghost. Questa azione è da effettuarsi solo dopo l\'attivazione o la riattivazione dell\'opzione; Cliccare dunque <u>una sola volta</u> sull\'pulsante di reset sottostante';
+/* UserList Tab */
+$lang['UAM_SubTitle5'] = 'Informazioni sugli utenti';
+/* Mailing */
+$lang['UAM_Add of %s'] = 'Profilo creato per %s';
+$lang['UAM_Update of %s'] = 'Profilo %s aggiornato';
+/* Mailing */
+$lang['UAM_Ghost_reminder_of_%s'] = '%s, questa è un\'email di rilancio';
+$lang['UAM_Reminder_with_key_of_%s'] = '%s, la vostra chiave di convalida è scaduta';
+$lang['UAM_Reminder_without_key_of_%s'] = '%s, la chiave di convalida sta per scadere';
+/* Errors and Warnings */
+$lang['UAM_Err_GhostTracker_Settings'] = 'Questa pagina è disponibile solo se "GhostTracker" è attivo in "Impostare le registrazioni seguite e altre opzioni"';
+$lang['UAM_Err_Userlist_Settings'] = 'Questa pagina è disponibile solo se "Monitoraggio degli utenti registrati" è attivo nella sezione "Impostare le registrazioni seguite e altre opzioni"';
+// --------- End: New or revised $lang ---- from version 2.13.4
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.14.0
+$lang['UAM_AdminConfMail'] = 'Conferma dell\'iscrizione per gli amministratori';
+// --------- End: New or revised $lang ---- from version 2.14.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.0
+$lang['UAM_confirmmail_custom_Txt1'] = 'Testo della pagina di conferma - Conferma accettata';
+$lang['UAM_confirmmail_custom_Txt2'] = 'Testo della pagina di conferma - Conferma respinta';
+$lang['UAM_LastVisit_Date'] = 'Ultima visita';
+$lang['UAM_Nb_Days'] = 'Differenza in giorni';
+$lang['UAM_Err_UserManager_Settings'] = 'Questa pagina è disponibile solo se "Conferma dell\'iscrizione" è attiva e se un gruppo di visitatori non convalidato è configurato in "Impostare le conferme e validazioni all\'iscrizione"';
+// --------- End: New or revised $lang ---- from version 2.15.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.1
+$lang['UAM_Support_txt'] = 'Il supporto ufficiale per questo plugin viene effettuato esclusivamente sul forum EN di Piwigo :<br>
+<a href="http://piwigo.org/forum/viewtopic.php?id=15015" onclick="window.open(this.href);return false;">Forum inglese - http://piwigo.org/forum/viewtopic.php?id=15015</a>
+<br><br>
+Disponibile anche, il bugtracker del progetto : <a href="http://piwigo.org/bugs/" onclick="window.open(this.href);return false;">http://piwigo.org/bugs/</a>';
+// --------- End: New or revised $lang ---- from version 2.15.1
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.4
+$lang['UAM_Force_Validation'] = 'Validazione manuale';
+$lang['UAM_Confirm_Mail_true'] = ' Attivare - Validazione dal utente';
+$lang['UAM_Confirm_Mail_local'] = ' Attivare - Validazione dal amministratore (nessuna chiave di validazione inviata)';
+$lang['UAM_RedirToProfile'] = 'Ridirezione verso la pagina di personalizzazione';
+// --------- End: New or revised $lang ---- from version 2.15.4
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.16.0
+$lang['UAM_Expired_Group'] = '<b>Gruppo</b> per gli utenti per i quali la registrazione sara scaduta<br>';
+$lang['UAM_Expired_Status'] = '<b>Statuto</b> per gli utenti per i quali la registrazione sara scaduta<br>';
+$lang['UAM_GTAuto'] = 'Gestione automatica degli utenti fantasmi';
+$lang['UAM_GTAutoDel'] = 'Cancellazione automatica dei conti';
+$lang['UAM_GTAutoGp'] = 'Cambiamento automatico del gruppo / statuto';
+$lang['UAM_GTAutoMail'] = 'Emailing di rilancio automatico per cambiamento gruppo / statuto';
+$lang['UAM_Deleted_Account_Redirection_Page'] = 'Accesso negato - Account cancellato!';
+$lang['UAM_title_redir_page'] = 'Accesso negato per causa di account cancellato!';
+$lang['UAM_Error_GTAutoMail_cannot_be_set_without_ConfirmMail'] = 'Errore di coerenza nella configurazione prescelta :
+<br><br>
+"Parametraggio monitoraggio degli iscritti e altre opzioni > Gestione degli utenti fantasmi (Ghost Tracker) > Gestione automatica degli utenti fantasmi > Email automatica su cambiamento di gruppo / statuto" non può essere attivato se "Parametraggio delle conferme e validazione d\'iscrizione > Conferma d\'iscrizione - Conferma dal utente" non è stata perattivata
+<br><br>
+Per garantire la coerenza, l\'opzione "Email automatica su cambiamento del gruppo / statuto" è stata automaticamente riposizionata a "disattivato"
+<br><br>';
+$lang['UAM_Demotion of %s'] = 'Retrocessione di %s';
+$lang['UAM_AdminValidationMail_Text'] = 'Notifica della validazione d\'iscrizione manuale';
+$lang['UAM_Validation of %s'] = 'Validazione di %s';
+// --------- End: New or revised $lang ---- from version 2.16.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.0
+$lang['UAM_CustomPasswRetr'] = 'Personalizzare il contenuto della email per password persa';
+/*TODO*/$lang['UAM_USRAuto'] = 'Automatic management of unvalidated users';
+/*TODO*/$lang['UAM_USRAutoDel'] = 'Custom message on deleted account';
+/*TODO*/$lang['UAM_USRAutoMail'] = 'Automated email reminder';
+$lang['UAM_Disable'] = ' Disattivare (di default)';
+$lang['UAM_Enable'] = ' Attivare ';
+/*TODO*/$lang['UAM_Tips1'] = 'Information of non-validated registration with UAM and PWG_Stuffs';
+/*TODO*/$lang['UAM_Tips1_txt'] = '
+          <ul>
+            <li>
+            Goals: Inform the visitor that the registration is awaiting approval by displaying a personal block on the home page of the gallery, and this, as registration is not approved.<br><br>
+            <b>Nota : Nel funzionamento standard, l\'utente "Guest" vede solo le categorie pubbliche, senza messaggio d\'informazione.</b>
+            </li><br><br>
+            <li>
+Prerequisiti :<br>
+- Una galleria con tutte o alcune categorie private, visibili solo agli utenti registrati<br>
+- Almeno i 2 gruppi d\'utenti Piwigo seguenti : "Attesa", senza alcuna autorizzazione sulle categorie private, e "Convalidati" con tutte le autorizzazioni per le categorie private<br>
+- Il plugin NBC_UAM<br>
+- Il plugin PWG Stuffs, per l\'aggiunta di un modulo speciale UAM<br>
+- In opzione, il plugin Extended Description per il supporto multi-lingue<br>
+            </li><br><br>
+            <li>
+Tappe :<br><br>
+A. Nel plugin NBC_UAM :
+              <ol>
+                <li>Attivare la conferma dell\'iscrizione</li>
+                <li>Attivare modulo PWG Stuffs</li>
+                <li>Inserire un testo personalizzato che sarà inviato con l\'Email di conferma dell\'iscrizione. Se il plugin Extended Description è installato ed attivato, i tag di lingua possono essere utilizzati</li>
+                <li>Selezionare il gruppo "Attesa" sotto la voce "Per gli utenti che non hanno convalidato la loro iscrizione"</li>
+                <li>Selezionare il gruppo "Convalidati" sotto la voce "Per gli utenti che hanno convalidato la loro iscrizione"</li>
+                <li>Salvare le impostazzioni</li>
+              </ol>
+<br>
+B. Nel plugin PWG Stuffs :
+              <ol>
+                <li>Vai alla scheda "Aggiungere un nuovo modulo"</li>
+                <li>Scegliere "UAM Module"</li>
+                <li>Configurare il modulo, indicandone il titolo (ad esempio, "in attesa di convalida dell\'iscrizione"), la descrizione, ed in fine selezionando solo il gruppo "Attesa" nell\'elenco dei gruppi ammessi</li>
+                <li>Completare il contenuto del modulo con il testo da visualizzare per gli utenti non convalidati. Come NBC_UAM, i tag di lingua possono essere utilizzati se il plugin Extended Description è installato ed attivato</li>
+                <li>Selezzionare "Visualizzare il modulo nella homepage del sito"</li>
+                <li>Salvare le impostazzioni</li>
+              </ol>
+            </li>
+          </ul>';
+/*TODO*/$lang['UAM_Tips2'] = 'Information of non-validated registration with UAM and Additional Pages';
+/*TODO*/$lang['UAM_Tips2_txt'] = '
+          <ul>
+            <li>
+            Goals: Inform the visitor that the registration is awaiting validation by posting an additional page replacing the standard index page gallery at each of these connections, and this, as registration is not approved.
+            <br><br>
+            Advantages over the method with PWG_Stuffs: Allow formatting information and displaying the information immediately upon registration of visitors.
+            </li><br><br>
+            <li>
+Prerequisiti :<br>
+- Una galleria con tutte o alcune categorie private, visibili solo agli utenti registrati<br>
+- Almeno i 2 gruppi d\'utenti Piwigo seguenti : "Attesa", senza alcuna autorizzazione sulle categorie private, e "Convalidati" con tutte le autorizzazioni per le categorie private<br>
+- Il plugin NBC_UAM<br>
+- Additional Pages plugin for adding and managing an additional page to replace the default index page of the gallery<br>
+- In opzione, il plugin Extended Description per il supporto multi-lingue<br>
+            </li><br><br>
+            <li>
+Tappe :<br><br>
+A. Nel plugin NBC_UAM :
+              <ol>
+                <li>Attivare la conferma dell\'iscrizione</li>
+                <li>Inserire un testo personalizzato che sarà inviato con l\'Email di conferma dell\'iscrizione. Se il plugin Extended Description è installato ed attivato, i tag di lingua possono essere utilizzati</li>
+                <li>Selezionare il gruppo "Attesa" sotto la voce "Per gli utenti che non hanno convalidato la loro iscrizione"</li>
+                <li>Selezionare il gruppo "Convalidati" sotto la voce "Per gli utenti che hanno convalidato la loro iscrizione"</li>
+                <li>Salvare le impostazzioni</li>
+              </ol>
+<br>
+B. Nel plugin Additional Pages :<br>
+                <b>NOTE : The management of access rights for groups on Additional Pages must be turned on (see plugin configuration settings).</b>
+                <br>
+              <ol>
+                <li>Add a new page with at least the following parameters :</li>
+                <ul>
+                  <li>Page name : The name you wish to give to the additional page (ie: Registration not validated)</li>
+                  <li>Set as homepage checked</li>
+                  <li>Groups allowed: Check the box corresponding to the group "Waiting" configured in UAM</li>
+                  <li>Content: The text you want to use for visitors.</li>
+                </ul>
+                <br>
+                <li>And that\'s it! Only visitors registered and whose registration has not been validated will see this additional index page.</li>
+              </ol>
+            </li>
+          </ul>';
+/*TODO*/$lang['UAM_No_Ghosts'] = 'No ghosts visitors for the moment';
+/*TODO*/$lang['UAM_No_Userlist'] = 'No visitors to list for the moment';
+/*TODO*/$lang['UAM_No_Usermanager'] = 'No unvalidated registers to list for the moment';
+$lang['UAM_Stuffs_Title'] = 'Modulo UAM';
+/*TODO*/$lang['UAM_Stuffs_Desc'] = 'Adds an information block for unvalidated users';
+$lang['UAM_Stuffs'] = 'modulo PWG Stuffs';
+// --------- End: New or revised $lang ---- from version 2.20.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.3
+/*TODO*/$lang['UAM_DumpTxt'] = 'Backup your configuration';
+/*TODO*/$lang['UAM_Dump_Download'] = 'To download the backup file, please check this box:';
+/*TODO*/$lang['UAM_Save'] = 'Run backup';
+/*TODO*/$lang['UAM_Dump_OK'] = 'Backup file created successfully';
+/*TODO*/$lang['UAM_Dump_NOK'] = 'Error: Unable to create backup file !';
+// --------- End: New or revised $lang ---- from version 2.20.3
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.4
+$lang['UAM_HidePassw'] = 'Password in chiaro nelle email d\'informazione';
+// --------- End: New or revised $lang ---- from version 2.20.4
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.11
+/*TODO*/$lang['UAM_Error_Using_illegal_flag'] = 'Syntax error ! The [Kdays] AutoText flag is used as the "Termine per la validazione dell\'iscrizione limitato" option was not activated. Please activate the option or correct the text field(s) colored in red.';
+// --------- End: New or revised $lang ---- from version 2.20.11
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/language/it_IT/help/plugin.lang.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/language/it_IT/help/plugin.lang.php	(revision 11321)
+++ /extensions/UserAdvManager/tags/2.20.11/language/it_IT/help/plugin.lang.php	(revision 11321)
@@ -0,0 +1,320 @@
+<?php
+global $lang;
+
+$lang['UAM_restricTitle'] = 'Restrizioni per le iscrizzioni';
+$lang['UAM_confirmTitle'] = 'Confirmazzione e validazione delle iscrizzioni';
+$lang['UAM_confirmTitle_d'] = '
+- Generazzione di un\'Email d\'informazione<br>
+- Generazzione di un\'Email di conferma d\'iscrizzione<br>
+- Inserimento in automatico dei gruppi / statuti<br>
+- Limitazzione del termine di convalida dell\'iscrizzione<br>
+- Generazzione di un\'Email di rilancio per gli utenti non convalidati<br>
+...
+';
+$lang['UAM_miscTitle'] = 'Monitoraggio degli utenti registrati e altre opzioni';
+$lang['UAM_carexcTitle'] = 'Pseudo: Esclusione di caratteri';
+$lang['UAM_carexcTitle_d'] = 'Può essere interessante vietare certi caratteri per i pseudo (ad esempio: negare login contenente &quot;@&quot;). Questa opzione permette di escludere i caratteri o sequenza di caratteri, eventi.<br>
+NB: L\'opzione può anche escludere parole intere.
+<br><br>
+<b style=&quot;color: red;&quot;>Attenzione: questa opzione non ha alcun effetto sui pseudo creati prima della sua attivazione.</b>';
+$lang['UAM_passwTitle'] = 'Rafforzare il livello di sicurezza delle password';
+$lang['UAM_passwTitle_d'] = 'L\'attivazione di questa opzione rende obbligatorio l\'inserimento di una password al momento della registrazione, e richiede la password scelta dal visitatore di incontrare un livello minimo di complessità. Se la soglia non viene raggiunta, il punteggio conseguito e il punteggio minimo da raggiungere sono visualizzate, insieme con raccomandazioni per aumentare il valore di questa partitura.<br><br>
+Non vi è prova in campo per misurare la complessità di una password, e può permettersi di avere un\'idea del punteggio per definire personalizzati complessi.<br><br>
+Nota: Il punteggio di una password è calcolato sulla base di diversi parametri: la lunghezza, il tipo di caratteri utilizzati (lettere, numeri, lettere maiuscole, minuscole, caratteri speciali). Un punteggio inferiore a 100 è considerata bassa, da 100 a 500, la complessità è nella media, oltre 500, la sicurezza è eccellente.';
+$lang['UAM_passwtestTitle'] = 'Prova la complessità di una password';
+$lang['UAM_passwtestTitle_d'] = 'Inserisci la password per testare e quindi fare clic su &quot;calcolo del punteggio&quot;, per vedere il risultato.';
+$lang['UAM_passwadmTitle'] = 'Applicando agli amministratori';
+$lang['UAM_passwadmTitle_d'] = 'Un amministratore può creare un\'pseudo con o senza l\'applicazione della regola della complessità di calcolo.<br><br>
+Nota: Se l\'account utente creato vuole cambiare la password e il rafforzamento password per gli utenti è attivo, sarà soggetta alla regola.';
+$lang['UAM_mailexcTitle'] = 'L\'esclusione Email domini';
+$lang['UAM_infomailTitle'] = 'E-mail informazioni per l\'utente';
+$lang['UAM_infomailTitle_d'] = 'Questa opzione consente di automatizzare l\'invio di una e-mail le informazioni a un utente al momento della registrazione o quando cambia la sua password o indirizzo e-mail nel loro profilo.<br><br>
+Il contenuto del messaggio inviato è composto da una parte personalizzabile di introdurre una piccola nota di benvenuto e una parte fissa che indica il login, password e indirizzo di posta elettronica dell\'utente.';
+$lang['UAM_infotxtTitle'] = 'Personalizzazione e-mail informazioni';
+/* TODO */$lang['UAM_confirmtxtTitle'] = 'Customizing the confirmation email';
+/* TODO */$lang['UAM_confirmgrpTitle'] = 'Validation Groups';
+/* TODO */$lang['UAM_confirmgrpTitle_d'] = '<b style=&quot;color: red;&quot;>WARNING : Using validation groups requires that you have created at least one users group and is defined &quot;by default&quot; in Piwigo\'s user groups management.</b><br><br>
+The groups are validated for use in conjunction with the &quot;Confirmation of registration&quot;';
+/* TODO */$lang['UAM_confirmstatTitle'] = 'Validation Statutes';
+/* TODO */$lang['UAM_confirmstatTitle_d'] = '<b style=&quot;color: red;&quot;>WARNING : The use of status validation requires that you have kept the &quot;Guest&quot; user with default setting (as user template) for new registered. Note you can set any other user as a template for new registered. Please refer to the Piwigo\'s documentation for more details.</b><br><br>
+The groups are validated for use in conjunction with the &quot;Confirmation of registration&quot;';
+/* TODO */$lang['UAM_validationlimitTitle'] = 'Deadline for registration validation limited';
+/* TODO */$lang['UAM_remailTitle'] = 'Remind unvalidated users';
+/* TODO */$lang['UAM_remailtxt1Title'] = 'Reminder email with new key generated';
+/* TODO */$lang['UAM_remailtxt2Title'] = 'Reminder email without new key generated';
+/* TODO */$lang['UAM_ghosttrackerTitle'] = 'Ghost visitors management';
+/* TODO */$lang['UAM_gttextTitle'] = 'Ghost Tracker\'s reminder message';
+/* TODO */$lang['UAM_lastvisitTitle'] = 'Tracking registered users';
+/* TODO */$lang['UAM_lastvisitTitle_d'] = 'This activates a table in the &quot;Tracking users&quot; tab which are registered users listed on the gallery and the date of their last visit and time spent (in days) since their last visit. Monitoring is purely informative for the administrator of the gallery.';
+/* TODO */$lang['UAM_tipsTitle'] = 'Tips and Examples';
+/* TODO */$lang['UAM_tipsTitle_d'] = 'Tips and various examples of use';
+/* TODO */$lang['UAM_userlistTitle'] = 'Tracking users';
+/* TODO */$lang['UAM_usermanTitle'] = 'Tracking validations';
+/* TODO */$lang['UAM_gtTitle'] = 'Ghost visitors management';
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.14.0
+$lang['UAM_adminconfmailTitle'] = 'Conferma della registrazione per gli amministratori';
+$lang['UAM_adminconfmailTitle_d'] = '&Egrave; possibile disattivare la convalida solo per gli account utente creato dall\'amministratore Piwigo tramite l\'interfaccia di gestione di utenti.<br><br>
+Attivando questa opzione, la convalida e-mail di registrazione verr&agrave; inviato ad ogni utente creato da admin.<br><br>
+Disabilitando questa opzione ((predefinito)), solo le informazioni e-mail viene inviata (se &quot;E-mail informazioni per l\'utente&quot; &egrave; abilitato).';
+// --------- End: New or revised $lang ---- from version 2.14.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.4
+$lang['UAM_restricTitle_d'] = '
+- Caratteri vietati nei nomi degli utenti<br>
+- Rafforzare il livello di sicurezza delle password<br>
+- Esclusione dei domini d\'Email<br>
+...
+';
+/* TODO */$lang['UAM_userlistTitle_d'] = 'This page is for information to the administrator. It displays a list of all users registered on the gallery showing the date and number of days since their last visit. The list is sorted in ascending order of number of days.
+<br><br>
+<b><u>Only when the Ghost Tracker is active</u></b>, the number of days without a visit appears as the following color code, according to the maximum set in the Ghost Tracker options:
+<br>
+- <b style=&quot;color: lime;&quot;>Green</b> : When the user has visited the gallery <b style=&quot;color: lime;&quot;><u>less than 50%</u></b> of the maximum indicated in the Ghost Tracker.<br>
+- <b style=&quot;color: orange;&quot;>Orange</b> : When the user has visited the gallery <b style=&quot;color: orange;&quot;><u> between 50% and 99% </u></b> of the maximum indicated in the Ghost Tracker.<br>
+- <b style=&quot;color: red;&quot;>Red</b> : When the user has visited the gallery <b style=&quot;color: red;&quot;><u>for more than 100%</u></b> of the maximum indicated in the Ghost Tracker. <b><u>In this case, the user must also appear in the Ghost Tracker table.</u></b><br>
+<br>
+Example :
+<br>
+The maximum period of Ghost Tracker is configured to 100 days.
+<br>
+A user will appear in green if he visited the gallery for less than 50 days, in orange if his last visit took place between 50 and 99 days and red for 100 days and above.
+<br><br>
+<b>NOTE</b>: The list does not display who have not validated their registration (if the option of validating the registration is activated). These users are then managed in a special way in the &quot;Tracking validations&quot; tab.
+<br><br>
+<b>Table Sorting Function</b>: You can sort the data displayed by clicking on the column headers. Hold the SHIFT key to sort up to 4 simultaneous columns.';
+/* TODO */$lang['UAM_usermanTitle_d'] = 'When limiting the deadline for registration is enabled, you will find below the list of users whose validation registration is expected, <b style=&quot;text-decoration: underline;&quot;>whether or not</b> they are in time to validate.<br><br>
+The registration date is displayed in green when the user concerned is below the time limit to validate his registration. In this case, the validation key is still valid and we can send an email with or without a new validation key.<br><br>
+When the registration date appears in red, the validation period has expired. In this case, you must send an email with regeneration of validation key if you want to enable the user to validate their registration.<br><br>
+In all cases, it is possible to manually force the validation.<br><br>
+In this view, you can:
+<br><br>
+- Manually delete accounts <b>(manual drain)</b>
+<br>
+- Generate email reminder <b>without</b> generating a new key. Warning: Send an email reminder to targeted visitors. This function does not reset the date of registration of targeted visitors and the timeout is still valid.
+<br>
+- Generate email reminder <b>with</b> generating a new key. Warning : Send an email reminder to targeted visitors. This function also resets the date of registration of targeted visitors which equates to extend the deadline for validation.
+<br>
+- Submit a registration awaiting validation manually even if the expiry date has passed <b>(forcing validation)</b>.
+<br><br>
+<b>Table Sorting Function</b>: You can sort the data displayed by clicking on the column headers. Hold the SHIFT key to sort up to 4 simultaneous columns.';
+/* TODO */$lang['UAM_gtTitle_d'] = 'When Ghost Tracker is enabled and initialized, you will find below the list of registered visitors who have not returned since x days. &quot;x&quot; is the number of days configured in the General Setup tab. In addition, you will find a column indicating whether an email reminder has been sent to targeted visitors. So, you can see at a glance and treat visitors who have not taken account of the reminder.<br><br>In this view, you can:
+<br><br>
+- Manually delete accounts <b>(manual drain)</b>
+<br>
+- Generate email reminder <b>with resetting the last visit date</b>. This allows to give a wildcard to targeted visitors. If the visitor has already received a reminder, nothing prevents to resent a new mail which will reset again, in fact, the last visit date.
+<br><br>
+<b>Table Sorting Function</b>: You can sort the data displayed by clicking on the column headers. Hold the SHIFT key to sort up to 4 simultaneous columns.';
+$lang['UAM_confirmmailTitle'] = 'Conferma della registrazione';
+/*TODO*/$lang['UAM_confirmmailTitle_d'] = 'This option allows a user to either confirm registration by clicking on a link received in an email sent upon registration or the administrator to manually activate the registration.<br><br>
+In first case, the e-mail is composed of a customizable part to introduce a little welcome note and a fixed part containing the activation link that is generated from a random key that can possibly regenerate through the &quot;Tracking validations&quot; tab.<br><br>
+Dans le premier cas, le message envoyé comprend une partie fixe, avec le lien d\'activation généré à partir d\'une clef aléatoire (cette clé peut éventuellement être régénérée via l\'onglet &quot;Suivi des validations&quot;), et une partie personnalisable par un texte d\'accueil.
+<br><br>
+Questa opzione &egrave; generalmente utilizzato con l\'assegnazione automatica di gruppo e / o statuto. Ad esempio, un utente che non ha convalidato la loro registrazione sar&agrave; ambientato in un gruppo specifico di utenti (con o senza le restrizioni alla galleria), mentre un utente che ha convalidato la sua registrazione &egrave; fissato in un &quot;normale&quot; del gruppo.';
+/*TODO*/$lang['UAM_RedirTitle'] = 'Redirect to &quot;Customization&quot; page';
+// --------- End: New or revised $lang ---- from version 2.15.4
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.6
+/*TODO*/$lang['UAM_RedirTitle_d'] = 'This option automatically redirect a registered user to his customization page only at his first connection to the gallery.<br><br>
+Please note: This feature does not apply to all registered users. Those with &quot;admin&quot;, &quot;webmaster&quot; or &quot;generic&quot; status are excluded.';
+// --------- End: New or revised $lang ---- from version 2.15.6
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.16.0
+$lang['UAM_confirmmail_custom1'] = 'Testo della pagina di conferma - Conferma accettati';
+$lang['UAM_confirmmail_custom2'] = 'Testo della pagina di conferma - Conferma respinto';
+/* TODO */$lang['UAM_miscTitle_d'] = '
+- Automatic or manual management of ghosts users<br>
+- Followed registered users<br>
+- Nickname mandatory for guests comments<br>
+...
+';
+/* TODO */$lang['UAM_ghosttrackerTitle_d'] = 'Also called &quot;Ghost Tracker&quot;, when this function is activated, you can manage your visitors depending on the frequency of their visits. 2 operating modes are available:<br><br>
+- Manual management : When the time between 2 visits is reached,, the visitor appears in the &quot;Ghost Tracker&quot; table where you will be able to remind visitors via email or delete him.<br><br>
+- Automated management : When the period between 2 successive visits is reached, the visitor is automatically deleted or moved into a wait group and/or status. In this second case, an information email can be sent to him.<br><br>
+<b style=&quot;color: red;&quot;>Important note : If you enable this feature for the first time or you have reactivated after a long period off during which new visitors are registered, you must initialize or reset the Ghost Tracker (see corresponding instructions on &quot;Ghost Tracker&quot; tab).</b>';
+$lang['UAM_mailexcTitle_d'] = 'Per impostazione predefinita, PhpWebGallery accetta tutti gli indirizzi di posta elettronica nel xxx@yyy.zz formato. L\'attivazione di questa opzione consente di escludere determinati domini nel formato: @[nome_dominio].[Domain_extension].<br><br>
+Esempi :<br>
+@hotmail.com -> esclusi gli indirizzi *@hotmail.com<br>
+@hotmail -> escludendo tutti gli indirizzi *@hotmail*';
+/* TODO */$lang['UAM_GTAutoTitle'] = 'Automatic management of ghosts users';
+/* TODO */$lang['UAM_GTAutoTitle_d'] = 'This option allows to apply rules for automated management of ghosts users.
+<br><br>Basic Principle: A user who reaches the maximum time between visits <b><u>and</u></b> has already been notified by email is considered as expired. Then you can apply automated processing rules such as automatic deletion of expired accounts or demotion by restricting access to the gallery (switch automatically to a restricted group and/or status).
+<br><br>The triggering of these automation is achieved when connecting users (any user!) to the gallery.';
+/* TODO */$lang['UAM_GTAutoDelTitle'] = 'Custom message on deleted account';
+/* TODO */$lang['UAM_GTAutoGpTitle'] = 'Automatic change of group / status';
+/* TODO */$lang['UAM_GTAutoGpTitle_d'] = 'The automatic change of group or status equivalent to a demotion of the accounts involved and working on the same principle as the group or the status of validation (see &quot;Setting confirmations and validations of registration&quot;). Therefore be to define a group and / or status demoting access to the gallery. If this has already been defined with the use of registration confirmation function, you can use the same group / status.<br><br>
+<b style=&quot;color: red;&quot;>Important note :</b> If a ghost user still has not heard from after the time limit and despite the automatic notification by email (if enabled), he\'s automatically deleted from the database.';
+/* TODO */$lang['UAM_GTAutoMailTitle'] = 'Automatically sending an email when changing group / status';
+/* TODO */$lang['UAM_AdminValidationMail'] = 'Notification of manual registration validation';
+// --------- End: New or revised $lang ---- from version 2.16.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.0
+/* TODO */$lang['UAM_CustomPasswRetrTitle'] = 'Customize lost password email content';
+/* TODO */$lang['UAM_validationlimitTitle_d'] = 'This option allows to limit the validity of key validation email sent to new registrants. Visitors who register will have x days of time to validate their registration. After this period the validation link will expire.
+<br><br>
+This option is used in conjunction with the &quot;Confirmation of registration&quot;
+<br><br>
+If this option and the option &quot;Remind unvalidated users&quot; are activated, new options will appear below in this section to enable the automation of unvalidated users management.';
+/* TODO */$lang['UAM_remailTitle_d'] = 'This option allows you to send a reminder email to users registered but have not validated their registration on time. It therefore works in conjunction with the &quot;Confirmation of registration&quot;
+<br><br>
+2 types of emails can be sent: With or without regeneration of the validation key. As appropriate, the content of emails can be customized.
+<br><br>
+Refer to the &quot;Tracking validations&quot; tab.
+<br><br>
+If this option and the option &quot;Deadline for registration validation limited&quot; are activated, new options will appear below in this section to enable the automation of unvalidated users management.';
+/*TODO*/$lang['UAM_USRAutoTitle'] = 'Automatic management of unvalidated users';
+/*TODO*/$lang['UAM_USRAutoTitle_d'] = 'Automatic handling of unvalidated visitors is triggered each time you connect to the gallery and works as follows:
+<br><br>
+- Automatic deletion of accounts not validated in the allotted time without sending automatic email reminder -> &quot;Deadline for registration validation limited&quot; <b><u>enabled</u></b> and &quot;Remind unvalidated users&quot; <b><u>disabled</u></b>.
+<br><br>
+- Automatically sending a reminder message with a new generation of validation key and automatic deletion of accounts not validated in the time after sending the reminder -> &quot;Deadline for registration validation limited&quot; <b><u>enabled</u></b> et &quot;Remind unvalidated users&quot; <b><u>enabled</u></b>.';
+/*TODO*/$lang['UAM_USRAutoDelTitle'] = 'Custom message on deleted account';
+/*TODO*/$lang['UAM_USRAutoMailTitle'] = 'Automated email reminder';
+/*TODO*/$lang['UAM_USRAutoMailTitle_d'] = 'When activated, this function will automatically send personalized content in &quot;Reminder email with new key generated&quot; to visitors who match criteria.';
+$lang['UAM_StuffsTitle'] = 'modulo PWG Stuffs';
+/*TODO*/$lang['UAM_StuffsTitle_d'] = 'This enables an additional UAM block in PWG Stuffs plugin (if installed) to inform your visitors who did not validate their registration about their condition.
+<br><br>
+Please refer to the <b>Tips and Examples of Use</b> at the bottom of this page for details.';
+// --------- End: New or revised $lang ---- from version 2.20.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.3
+/*TODO*/$lang['UAM_DumpTitle'] = 'Backup your configuration';
+/*TODO*/$lang['UAM_DumpTitle_d'] = 'This allows you to save the entire configuration of the plugin in a file so you can restore it if something goes wrong (wrong manipulation or before an update, for example). By default, the file is stored in this folder ../plugins/UserAdvManager/include/backup/ and is called &quot;UAM_dbbackup.sql&quot;.
+<br><br>
+<b style=&quot;color: red;&quot;>Warning: The file is overwritten each backup action!</b>
+<br><br>
+It can sometimes be useful to retrieve the backup file on your computer. For example: To restore to another database, to outsource or to keep multiple save files. To do this, just check the box to download the file.
+<br><br>
+The recovery from this interface is not supported. Use tools like phpMyAdmin.';
+// --------- End: New or revised $lang ---- from version 2.20.3
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.4
+$lang['UAM_HidePasswTitle'] = 'Password in chiaro nelle informazioni e-mail';
+/*TODO*/$lang['UAM_HidePasswTitle_d'] = 'Choose here if you want to display the password chosen by the visitor in the information email. If you enable the option, the password will then appear in clear text. If you disable the password will not appear at all.';
+// --------- End: New or revised $lang ---- from version 2.20.4
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.11
+/*TODO*/$lang['UAM_gttextTitle_d'] = 'Enter the text you want to appear in the email reminder to prompt the user to return to visit your gallery (NB: The text pre-filled with the installation of the plugin is provided as an example).
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.<br>
+- <b style=&quot;color: red;&quot;>[days]</b> to insert the maximum numbers of days between two visits.
+<br><br>
+Per utilizzare più lingue, è possibile utilizzare i tag del plugin Extended Description, se esso è attivo.';
+$lang['UAM_confirmtxtTitle_d'] = 'Enter the introductory text that you want to appear in the email confirmation of registration.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.<br>
+- <b style=&quot;color: red;&quot;>[Kdays]</b> to insert the number of days limit to validate a registration (&quot;Termine per la validazione dell\'iscrizione limitato;&quot; have to be enabled).
+<br><br>
+Per utilizzare più lingue, è possibile utilizzare i tag del plugin Extended Description, se esso è attivo.';
+/* TODO */$lang['UAM_remailtxt1Title_d'] = 'Enter the introductory text that you want to appear in the reminder email, in addition to the validation key regenerated.
+<br><br>
+If left blank, the mail reminder will include only the validation link. It is therefore strongly advised to take a little explanatory text. (NB: The text pre-filled with the installation of the plugin is provided as an example).
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.<br>
+- <b style=&quot;color: red;&quot;>[Kdays]</b> to insert the number of days limit to validate a registration (&quot;Termine per la validazione dell\'iscrizione limitato;&quot; have to be enabled).
+<br><br>
+Per utilizzare più lingue, è possibile utilizzare i tag del plugin Extended Description, se esso è attivo.';
+/* TODO */$lang['UAM_remailtxt2Title_d'] = 'Enter the introductory text that you want to appear in the reminder email without a validation key regenerated.
+<br><br>
+If left blank, the mail reminder will be empty. It is therefore strongly advised to take a little explanatory text. (NB: The text pre-filled with the installation of the plugin is provided as an example).
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.<br>
+- <b style=&quot;color: red;&quot;>[Kdays]</b> to insert the number of days limit to validate a registration (&quot;Termine per la validazione dell\'iscrizione limitato;&quot; have to be enabled).
+<br><br>
+Per utilizzare più lingue, è possibile utilizzare i tag del plugin Extended Description, se esso è attivo.';
+/*TODO*/$lang['UAM_infotxtTitle_d'] = 'Inserisci il testo introduttivo che si desidera visualizzare nella e-mail informazioni.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.
+<br><br>
+Per utilizzare più lingue, è possibile utilizzare i tag del plugin Extended Description, se esso è attivo.';
+/* TODO */$lang['UAM_AdminValidationMail_d'] = 'When an administrator or Webmaster of the gallery manually valid registration pending, a notification email is automatically sent to the user. Enter here the text that appears in this email.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.
+<br><br>
+Per utilizzare più lingue, è possibile utilizzare i tag del plugin Extended Description, se esso è attivo.';
+/*TODO*/$lang['UAM_confirmmail_custom1_d'] = 'When the option &quot;Confirmation of registration&quot; is active, this field allows you to customize the <b><u>acceptance text</u></b> on the registration confirmation page displayed when user clicks the confirmation link that was received by email.
+<br><br>
+After installing the plugin, a standard text is set as an example.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.
+<br><br>
+This field is compatible with the FCK Editor and, for multi-languages, you can use the tags [lang] of the plugin Extended description if it\'s active.';
+/*TODO*/$lang['UAM_confirmmail_custom2_d'] = 'When the option &quot;Confirmation of registration&quot; is active, this field allows you to customize the <b><u>rejectance text</u></b> on the registration confirmation page displayed when user clicks the confirmation link that was received by email.
+<br><br>
+After installing the plugin, a standard text is set as an example.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.
+<br><br>
+This field is compatible with the FCK Editor and, for multi-languages, you can use the tags [lang] of the plugin Extended description if it\'s active.';
+/* TODO */$lang['UAM_GTAutoDelTitle_d'] = 'This is only valid when the user whose account has expired itself triggers the deletion mechanism (rare but possible). he\'s then disconnected of the gallery and redirected to a page showing the deletion of his account and, possibly, the reasons for this deletion.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.<br>
+<b style=&quot;color: red;&quot;>[username]</b> is not available here because concerned user has been deleted.
+<br><br>
+Custom text for the redirect page can be entered in this field that is compatible with the FCK Editor and, for multi-languages, you can use the tags [lang] of the plugin Extended description if it\'s active.';
+/* TODO */$lang['UAM_GTAutoMailTitle_d'] = 'When an account is expired (group / status change demoting the visitor), an email information can be sent to clarify the reasons for this change and the means to recover the initial access to the gallery.
+<br>To do this, a link to revalidation of registration is attached to the email (automatic generation of a new validation key).<b style=&quot;color: red;&quot;>If the user has already been notified, his account is automatically destroyed.</b> 
+<br><br>
+Enter the custom text that also explain the reasons for the demotion, to accompany the validation link. The custom text is not mandatory but strongly recommended. In fact, your visitors will not appreciate receiving an email containing only a single link without further explanation. ;-)
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.
+<br><br>
+To use multiple languages, you can use the Extended description plugin\'s tags if it is active.
+<br><br>
+<b style=&quot;color: red;&quot;>Warning: The use of this function is intimately associated with the confirmation of registration by the user (confirmation by mail) and can not be activated without this option.</b>';
+/* TODO */$lang['UAM_CustomPasswRetrTitle_d'] = 'By default, when a user has lost his password and selects the option of recovery, he receives an email containing only his username and his new password.
+<br><br>
+Here, you can add text of your choice to be inserted <b><u>before</u></b> the standard information.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.
+<br><br>
+To use multiple languages, you can use the Extended description plugin\'s tags if it is active.';
+/*TODO*/$lang['UAM_USRAutoDelTitle_d'] = 'This is only valid when the user whose account has expired itself triggers the deletion mechanism (rare but possible). he\'s then disconnected of the gallery and redirected to a page showing the deletion of his account and, possibly, the reasons for this deletion.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.<br>
+<b style=&quot;color: red;&quot;>[username]</b> is not available here because concerned user has been deleted.
+<br><br>
+Custom text for the redirect page can be entered in this field that is compatible with the FCK Editor and, for multi-languages, you can use the tags [lang] of the plugin Extended description if it\'s active.';
+// --------- End: New or revised $lang ---- from version 2.20.11
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/language/it_IT/help/index.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/language/it_IT/help/index.php	(revision 4969)
+++ /extensions/UserAdvManager/tags/2.20.11/language/it_IT/help/index.php	(revision 4969)
@@ -0,0 +1,33 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | PhpWebGallery - a PHP based picture gallery                           |
+// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
+// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
+// +-----------------------------------------------------------------------+
+// | file          : $Id: index.php 1912 2007-03-16 06:30:07Z rub $
+// | last update   : $Date: 2007-03-16 07:30:07 +0100 (ven, 16 mar 2007) $
+// | last modifier : $Author: rub $
+// | revision      : $Revision: 1912 $
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/language/it_IT/index.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/language/it_IT/index.php	(revision 4226)
+++ /extensions/UserAdvManager/tags/2.20.11/language/it_IT/index.php	(revision 4226)
@@ -0,0 +1,33 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | PhpWebGallery - a PHP based picture gallery                           |
+// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
+// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
+// +-----------------------------------------------------------------------+
+// | file          : $Id: index.php 1912 2007-03-16 06:30:07Z rub $
+// | last update   : $Date: 2007-03-16 07:30:07 +0100 (ven, 16 mar 2007) $
+// | last modifier : $Author: rub $
+// | revision      : $Revision: 1912 $
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/language/index.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/language/index.php	(revision 3742)
+++ /extensions/UserAdvManager/tags/2.20.11/language/index.php	(revision 3742)
@@ -0,0 +1,33 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | PhpWebGallery - a PHP based picture gallery                           |
+// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
+// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
+// +-----------------------------------------------------------------------+
+// | file          : $Id: index.php 1912 2007-03-16 06:30:07Z rub $
+// | last update   : $Date: 2007-03-16 07:30:07 +0100 (ven, 16 mar 2007) $
+// | last modifier : $Author: rub $
+// | revision      : $Revision: 1912 $
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/language/es_ES/description.txt
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/language/es_ES/description.txt	(revision 4226)
+++ /extensions/UserAdvManager/tags/2.20.11/language/es_ES/description.txt	(revision 4226)
@@ -0,0 +1,1 @@
+Refuerza las posibilidades de gestión de usuarios
Index: /extensions/UserAdvManager/tags/2.20.11/language/es_ES/plugin.lang.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/language/es_ES/plugin.lang.php	(revision 11319)
+++ /extensions/UserAdvManager/tags/2.20.11/language/es_ES/plugin.lang.php	(revision 11319)
@@ -0,0 +1,375 @@
+<?php
+
+global $lang,$conf;
+
+$conf_UAM = unserialize($conf['UserAdvManager']);
+
+
+/* UserManager Tab */
+$lang['UAM_Registration_Date'] = 'Fecha de registro';
+
+
+/* Mailing */
+$lang['UAM_infos_mail %s'] = '%s, Aquí encontrará su información para entrar en la galería:';
+$lang['UAM_User: %s'] = 'Usuario : %s';
+$lang['UAM_Password: %s'] = 'Contraseña: %s';
+$lang['UAM_Link: %s'] = 'Por favor, haga clic en este enlace para confirmar su registro: %s';
+
+
+/* Email confirmation page */
+$lang['UAM_title_confirm_mail'] = 'Validar su inscripción';
+$lang['UAM_confirm_mail_page_title'] = 'Validar su inscripción';
+$lang['confirm_mail_ok'] = '<br><br><br>Gracias por haber confirmado su dirección de correo electrónico y su registro en la galería. ¡Que disfrute!<br><br><br><br>';
+
+
+/* Errors and Warnings */
+$lang['UAM_audit_ok'] = 'Auditoría OK';
+$lang['UAM_Err_audit_username_char'] = '<b>Esta cuenta utiliza uno o más caracteres prohibidos:</b> ';
+$lang['UAM_Err_audit_email_forbidden'] = '<b>Esta cuenta utiliza un proveedor de correo electrónico  prohibido:</b> ';
+$lang['UAM_Err_audit_advise'] = '<b>Usted tiene que realizar correcciones para cumplir con las nuevas normas que ha activado.<br>Use una herramienta de gestión de base de datos para corregir las cuentas de usuario directamente en la tabla ###_USERS';
+$lang['UAM_reg_err_login2'] = 'El nombre de usuario no puede coincidir con los siguientes caracteres: ';
+$lang['UAM_reg_err_login5'] = 'Su proveedor de correo electrónico está prohibido para el registro. Proveedores de correo electrónico en veda son: ';
+$lang['UAM_empty_pwd'] = '[contraseña vacía]';
+$lang['UAM_no_update_pwd'] = '[Perfil actualizado sin cambiar contraseña]';
+$lang['UAM_No_validation_for_Guest'] = 'La cuenta "Invitado"  no está sujeta a la validación';
+$lang['UAM_No_validation_for_default_user'] = 'La cuenta predeterminada no está sujeta a la validación';
+$lang['UAM_No_validation_for_Webmaster'] = 'La cuenta "webmaster" no está sujeta a la validación';
+$lang['UAM_No_validation_for_your_account'] = 'Tu cuenta de administrador personnal no está sujeta a la validación';
+
+
+/* Processing messages */
+$lang['UAM_%d_Mail_With_Key'] = '%d mensaje con la clave de renovación fue enviado';
+$lang['UAM_%d_Mails_With_Key'] = '%d Mensajes con la clave de renovación fueron enviados';
+$lang['UAM_%d_Reminder_Sent'] = '%d mensaje recordatorio fue enviado';
+$lang['UAM_%d_Reminders_Sent'] = '%d mensajes recordatorios fueron enviados ';
+$lang['UAM_%d_Validated_User'] = '%d usuario validado manualmente';
+$lang['UAM_%d_Validated_Users'] = '%d usuarios validados manualmente';
+
+
+/* Action button names */
+$lang['UAM_Delete_selected'] = 'Suprimir';
+$lang['UAM_Mail_without_key'] = 'Aviso sin clave';
+$lang['UAM_Mail_with_key'] = 'Aviso con clave';
+
+
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.12.0 and 2.12.1
+/* Global Configuration Tab */
+$lang['UAM_PasswordTest'] = 'Cálculo de la puntuación';
+/* Ghost Tracker Tab */
+$lang['UAM_Tab_GhostTracker'] = 'Ghost Tracker';
+$lang['UAM_Reminder'] = 'Recordatorio por email';
+$lang['UAM_Reminder_Sent_OK'] = 'SI';
+$lang['UAM_Reminder_Sent_NOK'] = 'NO';
+/* Errors and Warnings */
+$lang['UAM_save_config'] ='Configuración guardada.';
+$lang['UAM_reg_err_login3'] = '¡Seguridad: Contraseña obligatoria!';
+$lang['UAM_reg_err_login4_%s'] = 'Seguridad: Un sistema de control calcula la puntuación de la complejidad de la contraseñas. La complejidad de la contraseña es demasiado baja (puntuación = %s). Por favor, elija una nueva contraseña más segura siguiendo estas reglas:<br>
+- Usar letras y números<br>
+- Utilice minúsculas y mayúsculas<br>
+- Aumentar su longitud (número de caracteres)<br>
+La puntuación mínima de las contraseñas   exigida por el administrador es la siguiente: ';
+$lang['UAM_No_reminder_for_Guest'] = 'La cuenta "Invitado" no está sujeta a recibir recordatorios de Ghost Tracker';
+$lang['UAM_No_reminder_for_default_user'] = 'La cuenta predeterminada no está sujeto a recibir recordatorios de Ghost Tracker';
+$lang['UAM_No_reminder_for_Webmaster'] = 'La cuenta "webmaster" no está sujeta a recibir recordatorios de Ghost Tracker';
+$lang['UAM_No_reminder_for_your_account'] = 'Su cuenta de administrador personnal no está sujeta a recibir recordatorios de Ghost Tracker';
+/* Action button names */
+$lang['UAM_audit'] = 'Auditar la configuración';
+$lang['UAM_submit'] = 'Guardar configuración';
+// --------- End: New or revised $lang ---- from version 2.12.0 and 2.12.1
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.12.2
+/* Errors and Warnings */
+$lang['UAM_GhostTracker_Init_OK'] = '¡Ghost Tracker inicializado!';
+/* Action button names */
+$lang['UAM_GT_Reset'] = 'Inicializar Ghost Tracker';
+// --------- End: New or revised $lang ---- from version 2.12.2
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.12.8
+/* Errors and Warnings */
+$lang['UAM_mail_exclusionlist_error'] = '¡Advertencia! Ha introducido una nueva línea (CR-LF) al principio de la lista de exclusión de correo electrónico (en rojo abajo). Aunque esta nueva línea no es visible, todavía está presente y puede causar un mal funcionamiento del plugin. Por favor, vuelva a escribir en su lista de exclusión de una manera que no comienza con una nueva línea.';
+// --------- End: New or revised $lang ---- from version 2.12.8
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.13.0
+/* UserList Tab */
+$lang['UAM_UserList_Title'] = 'Seguimiento de los usuarios registrados';
+// --------- End: New or revised $lang ---- from version 2.13.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.13.4
+/* Global Configuration Tab */
+$lang['UAM_Title_Tab'] = 'UserAdvManager - Versión: ';
+$lang['UAM_SubTitle1'] = 'Configuración del plugin';
+$lang['UAM_Tab_Global'] = 'Configuración';
+$lang['UAM_Title1'] = 'Configuración de las restricciones de registro';
+$lang['UAM_Title2'] = 'Configuración de las confirmaciones y validaciones de registro';
+$lang['UAM_Title3'] = 'Configuración de los registros seguidos y otras opciones';
+$lang['UAM_Title4'] = 'Consejos y ejemplos de uso';
+$lang['UAM_No_Casse'] = 'Nombres de usuarios: mayúsculas y minúsculas';
+$lang['UAM_Username_Char'] = 'Nombres de usuarios: Excluyendo los caracteres';
+$lang['UAM_Username_Char_true'] = ' Prohibición de caracteres:<br>(Utilice una coma para separar cada caracteres)<br><br>';
+$lang['UAM_Username_Char_false'] = ' Permiso de todos (por defecto)';
+$lang['UAM_Password_Enforced'] = 'Fortalecimiento del nivel de seguridad de las contraseñas';
+$lang['UAM_Password_Enforced_true'] = ' Activar. Puntuación mínima:';
+$lang['UAM_AdminPassword_Enforced'] = 'Aplicar a los administradores';
+$lang['UAM_PasswordTest'] = 'Test de Contraseña: ';
+$lang['UAM_ScoreTest'] = 'Resultado: ';
+$lang['UAM_MailExclusion'] = 'Exclusión de dominios de correo electrónico';
+$lang['UAM_MailExclusion_true'] = ' Excluir los siguientes dominios: <br>(Utilice una coma para separar cada dominio)';
+
+$lang['UAM_Mail_Info'] = 'Información por correo electrónico para el usuario:';
+$lang['UAM_MailInfo_Text'] = ' Personalización del correo electrónico de información:';
+$lang['UAM_Confirm_Mail'] = 'Confirmación de registro:';
+$lang['UAM_ConfirmMail_Text'] = ' Personalización del correo electrónico de confirmación:';
+$lang['UAM_Confirm_grpstat_notice'] = 'Precaución: Es recomendable utilizar el grupo o los estatutos de validación y no ambos simultáneamente.';
+$lang['UAM_Confirm_Group'] = 'Grupos de validación<br>(Dejar ------- para no afectar grupo)';
+$lang['UAM_Confirm_Status'] = 'Estatutos de validación<br>(Dejar ------- para mantener el valor predeterminado de Piwigo)';
+$lang['UAM_No_Confirm_Group'] = 'Grupo para los usuarios que no han validado su registro<br>';
+$lang['UAM_Validated_Group'] = 'Grupo para los usuarios que han validado su registro<br>';
+$lang['UAM_No_Confirm_Status'] = 'Situación de los usuarios que no han validado su registro<br>';
+$lang['UAM_Validated_Status'] = 'Situación de los usuarios que han validado su registro<br>';
+$lang['UAM_ValidationLimit_Info'] = 'Plazo para la validación de registro limitado';
+$lang['UAM_ConfirmMail_TimeOut_true'] = ' Activar. Número de días hasta el vencimiento: ';
+$lang['UAM_ConfirmMail_Remail'] = 'Recuerde a los usuarios no validados';
+$lang['UAM_ConfirmMail_Remail_true'] = ' Activar';
+$lang['UAM_ConfirmMail_ReMail_Txt1'] = 'Personalización del mensaje recordatorio <b><u>con</u></b> la regeneración de validación de claves.';
+$lang['UAM_ConfirmMail_ReMail_Txt2'] = 'Personalización del mensaje recordatorio <b><u>sin</u></b> la regeneración de la validación de claves.';
+
+$lang['UAM_GhostTracker'] = 'Gestión de Espíritu visitantes (Tracker Ghost)';
+$lang['UAM_GhostTracker_true'] = ' Activar. Período máximo de días entre dos visitas: ';
+$lang['UAM_GhostTracker_ReminderText'] = 'Personalización del mensaje recordatorio de Ghost Tracker';
+$lang['UAM_LastVisit'] = ' Seguimiento de usuarios registrados';
+
+$lang['UAM_Tab_UserManager'] = 'Seguimiento de las validaciones';
+
+/* UserManager Tab */
+$lang['UAM_SubTitle3'] = 'Seguimiento de las validaciones';
+$lang['UAM_UserManager_Title'] = 'Seguimiento de las validaciones';
+/* Ghost Tracker Tab */
+$lang['UAM_SubTitle4'] = 'Ghost Tracker';
+$lang['UAM_GT_Init'] = 'Inicialización de Ghost Tracker';
+$lang['UAM_GhostTracker_Title'] = 'Gestión de los espíritu visitantes';
+$lang['UAM_GhostTracker_Init'] = 'Si habilita esta función por primera vez o ha reactivado después de un largo período durante el cual los visitantes se han registrado de nuevo, usted debe inicializar o restablecer el Rastreador de Ghost. Esta acción se realiza sólo después de la activación o reactivación de la opción. Por favor, haga clic <u>una vez</u>en el botón de reset de abajo.';
+/* UserList Tab */
+$lang['UAM_SubTitle5'] = 'Seguimiento de los usuarios';
+$lang['UAM_Tab_UserList'] = 'Seguimiento de los usuarios';
+/* Mailing */
+$lang['UAM_Add of %s'] = 'Perfil creado para %s';
+$lang['UAM_Update of %s'] = '%s Perfil actualizado';
+/* Email confirmation page */
+$lang['confirm_mail_bad'] = '<br><br><br>Su clave de activación es incorrecta o está vencida o ya ha validado su cuenta, por favor, póngase en contacto con el webmaster para solucionar este problema.<br><br><br><br>';
+/* Mailing */
+$lang['UAM_Ghost_reminder_of_%s'] = '%s, este es un recordatorio por correo electrónico';
+$lang['UAM_Reminder_with_key_of_%s'] = '%s, su clave de validación se ha renovado';
+$lang['UAM_Reminder_without_key_of_%s'] = '%s, su clave de validación expirará';
+/* Errors and Warnings */
+$lang['UAM_Err_GhostTracker_Settings'] = 'Esta página está disponible sólo si "Ghost Tracker" está activo en "Configuración de los registros seguido y otras opciones".';
+$lang['UAM_Err_Userlist_Settings'] = 'Esta página está disponible sólo si "Seguimiento de los usuarios registrados" está activo en la "Configuración de los registros seguidos y otras opciones".';
+// --------- End: New or revised $lang ---- from version 2.13.4
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.14.0
+$lang['UAM_AdminConfMail'] = 'Confirmación de registro por los administradores';
+$lang['UAM_Tips1_txt'] = '
+          <ul>
+            <li>
+            Objectivos:<br>
+            - A su llegada a la galería: Avisar al visitante de que tiene que registrarse para acceder a fotos privadas<br>
+            - En el registro: Generar una validación de correo electrónico con enlace directo, informar al nuevo usuario de su falta de validación y integrarlo al grupo "Espera"<br>
+            - En la validación: cambiar automáticamente de grupo "Espera" al grupo "Validado", que proporciona acceso a categorías particulares<br><br>
+            <b>Recuerde: En funcionamiento normal, el "Invitado" sólo ve las categorías de público, sin mensaje de información.</b>
+            </li><br><br>
+            <li>
+Requisito previo:<br>
+- Una galería con todas o algunas categorías privadas, visible sólo por los usuarios registrados<br>
+- Al menos los 2 grupos de usuarios siguientes de Piwigo : "Espera," sin permiso en las categorías de privados, y "Validado" con todos los permisos en las categorías de privados<br>
+- UAM plugin<br>
+- PWG Stuffs plugin, para agregar un tipo de módulo "Personal Block"<br>
+- Opcionalmente, la Extended Description plugin para soportar múltiples idiomas<br>
+            </li><br><br>
+            <li>
+Etapas:<br><br>
+A. En el plugin UAM:
+              <ol>
+                <li>Activar la confirmación de registro</li>
+                <li>Introduzca el texto para la explicación adicional, que se adjunta al correo de confirmación de registro. Si se activa el plugin Extended Description, las etiquetas de idioma se pueden utilizar</li>
+                <li>Seleccione la opción "Espera" del grupo en "Para los usuarios que no han validado su registro"</li>
+                <li>Seleccione la opción "Validado" en grupo "Para los usuarios que han validado su registro"</li>
+                <li>Guardar la configuración del plug-in</li>
+              </ol>
+<br>
+B. En plugin PWG Stuffs :
+              <ol>
+                <li>Añadir un tipo de módulo nuevo "bloque Personal: Muestra una plantilla de bloque (por ejemplo, un editorial)"</li>
+                <li>Configurar el módulo, lo que indica el título (por ejemplo, "en espera de la validación de Registro") y su descripción, y solamente "Espera" en la lista de grupos permitido</li>
+                <li>El contenido completo del módulo con la información del mensaje que se mostrará a los usuarios no validados. Como UAM, las balisas de  lenguajes pueden ser utilizadas si el plugin Extended Description está activado</li>
+                <li>Active la casilla "Mostrar el módulo en la página principal del sitio"</li>
+                <li>Validar la configuración del módulo</li>
+              </ol>
+            </li>
+          </ul>';
+// --------- End: New or revised $lang ---- from version 2.14.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.0
+$lang['UAM_confirmmail_custom_Txt1'] = 'Texto de la página de confirmación - Confirmación aceptada';
+$lang['UAM_confirmmail_custom_Txt2'] = 'Texto de la página de confirmación - Confirmación rechazada';
+$lang['UAM_LastVisit_Date'] = 'Su última visita';
+$lang['UAM_Nb_Days'] = 'Diferencia en días';
+$lang['UAM_Err_UserManager_Settings'] = 'Esta página está disponible sólo si "Confirmación de registro" está activo y si un grupo de visitantes no ha sido validada está configurado en "Configuración de las confirmaciones y validaciones de registro".';
+// --------- End: New or revised $lang ---- from version 2.15.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.1
+$lang['UAM_Support_txt'] = 'El apoyo oficial sobre este plugin se encuentra solo en el foro de Piwigo:<br>
+<a href="http://piwigo.org/forum/viewtopic.php?id=15015" onclick="window.open(this.href);return false;">Foro Inglés - http://piwigo.org/forum/viewtopic.php?id=15015</a><br><br>
+También está disponible, el bugtracker del proyecto: <a href="http://piwigo.org/bugs/" onclick="window.open(this.href);return false;">http://piwigo.org/bugs/</a>';
+// --------- End: New or revised $lang ---- from version 2.15.1
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.4
+$lang['UAM_Force_Validation'] = 'Validación manual';
+$lang['UAM_Confirm_Mail_true'] = ' Activar - La validación por el usuario';
+$lang['UAM_Confirm_Mail_local'] = ' Activar - La validación por el administrador (sin clave de validación enviado)';
+$lang['UAM_RedirToProfile'] = 'Redirigir a la página de "personalización"';
+// --------- End: New or revised $lang ---- from version 2.15.4
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.16.0
+$lang['UAM_Expired_Group'] = '<b>Grupo</b> para el registro de usuario ha caducado<br>';
+$lang['UAM_Expired_Status'] = '<b>Estado </b> para el registro de usuario ha caducado<br>';
+$lang['UAM_GTAuto'] = 'Gestión automática de los Espíritus usuarios';
+$lang['UAM_GTAutoDel'] = 'Borrado automático de las cuentas';
+$lang['UAM_GTAutoGp'] = 'Cambio automático de grupo / estado';
+$lang['UAM_GTAutoMail'] = 'Automáticamente el envío de un correo electrónico cuando se cambia de grupo / estado';
+$lang['UAM_Deleted_Account_Redirection_Page'] = 'Acceso denegado - Cuenta destruido!';
+$lang['UAM_title_redir_page'] = 'Acceso denegado por haber destruido una cuenta!';
+$lang['UAM_Error_GTAutoMail_cannot_be_set_without_ConfirmMail'] = 'Error de coherencia en la configuración elegida:<br><br>
+"Configuración de los registros seguidos y otras opciones > Gestión de Espíritu visitantes (Tracker Ghost) > Gestión automática de los Espíritus usuarios > Automáticamente el envío de un correo electrónico cuando se cambia de grupo / estado" no se puede activar si "Configuración de las confirmaciones y validaciones de registro > Confirmación de registro - La validación por el usuario" no está habilitada en un principio.<br><br>
+Para garantizar la coherencia, la opción "Automáticamente el envío de un correo electrónico cuando se cambia de grupo / estado" fue colocado de nuevo de forma automática "Desactivar".<br><br>';
+$lang['UAM_Demotion of %s'] = 'Degradación de %s';
+$lang['UAM_AdminValidationMail_Text'] = 'Notificación de la validación manual de registro';
+$lang['UAM_Validation of %s'] = 'Validación de %s';
+// --------- End: New or revised $lang ---- from version 2.16.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.0
+/*TODO*/$lang['UAM_CustomPasswRetr'] = 'Customize lost password email content';
+/*TODO*/$lang['UAM_USRAuto'] = 'Automatic management of unvalidated users';
+/*TODO*/$lang['UAM_USRAutoDel'] = 'Custom message on deleted account';
+/*TODO*/$lang['UAM_USRAutoMail'] = 'Automated email reminder';
+$lang['UAM_Disable'] = ' Desactivar (por defecto)';
+$lang['UAM_Enable'] = ' Activar ';
+/*TODO*/$lang['UAM_Tips1'] = 'Information of non-validated registration with UAM and PWG_Stuffs';
+/*TODO*/$lang['UAM_Tips1_txt'] = '
+          <ul>
+            <li>
+            Goals: Inform the visitor that the registration is awaiting approval by displaying a personal block on the home page of the gallery, and this, as registration is not approved.
+            <br><br>
+            <b>Recuerde: En funcionamiento normal, el "Invitado" sólo ve las categorías de público, sin mensaje de información.</b>
+            </li><br><br>
+            <li>
+Requisito previo:<br>
+- Una galería con todas o algunas categorías privadas, visible sólo por los usuarios registrados<br>
+- Al menos los 2 grupos de usuarios siguientes de Piwigo : "Espera," sin permiso en las categorías de privados, y "Validado" con todos los permisos en las categorías de privados<br>
+- UAM plugin<br>
+- PWG Stuffs plugin, para agregar un módulo especial UAM<br>
+- Opcionalmente, la Extended Description plugin para soportar múltiples idiomas<br>
+            </li><br><br>
+            <li>
+Etapas:<br><br>
+A. En el plugin UAM:
+              <ol>
+                <li>Activar la confirmación de registro</li>
+                <li>Activar PWG Stuffs módulo</li>
+                <li>Introduzca el texto para la explicación adicional, que se adjunta al correo de confirmación de registro. Si se activa el plugin Extended Description, las etiquetas de idioma se pueden utilizar</li>
+                <li>Seleccione la opción "Espera" del grupo en "Para los usuarios que no han validado su registro"</li>
+                <li>Seleccione la opción "Validado" en grupo "Para los usuarios que han validado su registro"</li>
+                <li>Guardar la configuración del plug-in</li>
+              </ol>
+<br>
+B. En plugin PWG Stuffs :
+              <ol>
+                <li>Vaya a la pestaña "Agregar un nuevo módulo"</li>
+                <li>Seleccione la opción "Módulo de la UAM"</li>
+                <li>Configurar el módulo, lo que indica el título (por ejemplo, "en espera de la validación de Registro") y su descripción, y solamente "Espera" en la lista de grupos permitido</li>
+                <li>El contenido completo del módulo con la información del mensaje que se mostrará a los usuarios no validados. Como UAM, las balisas de  lenguajes pueden ser utilizadas si el plugin Extended Description está activado</li>
+                <li>Active la casilla "Mostrar el módulo en la página principal del sitio"</li>
+                <li>Validar la configuración del módulo</li>
+              </ol>
+            </li>
+          </ul>';
+/*TODO*/$lang['UAM_Tips2'] = 'Information of non-validated registration with UAM and Additional Pages';
+/*TODO*/$lang['UAM_Tips2_txt'] = '
+          <ul>
+            <li>
+            Goals: Inform the visitor that the registration is awaiting validation by posting an additional page replacing the standard index page gallery at each of these connections, and this, as registration is not approved.
+            <br><br>
+            Advantages over the method with PWG_Stuffs: Allow formatting information and displaying the information immediately upon registration of visitors.
+            </li><br><br>
+            <li>
+Requisito previo:<br>
+- Una galería con todas o algunas categorías privadas, visible sólo por los usuarios registrados<br>
+- Al menos los 2 grupos de usuarios siguientes de Piwigo : "Espera," sin permiso en las categorías de privados, y "Validado" con todos los permisos en las categorías de privados<br>
+- UAM plugin<br>
+- Additional Pages plugin for adding and managing an additional page to replace the default index page of the gallery<br>
+- Opcionalmente, la Extended Description plugin para soportar múltiples idiomas<br>
+            </li><br><br>
+            <li>
+Etapas:<br><br>
+A. En el plugin UAM:
+              <ol>
+                <li>Activar la confirmación de registro</li>
+                <li>Introduzca el texto para la explicación adicional, que se adjunta al correo de confirmación de registro. Si se activa el plugin Extended Description, las etiquetas de idioma se pueden utilizar</li>
+                <li>Seleccione la opción "Espera" del grupo en "Para los usuarios que no han validado su registro"</li>
+                <li>Seleccione la opción "Validado" en grupo "Para los usuarios que han validado su registro"</li>
+                <li>Guardar la configuración del plug-in</li>
+              </ol>
+<br>
+B. En plugin Additional Pages:<br>
+                <b>NOTE : The management of access rights for groups on Additional Pages must be turned on (see plugin configuration settings).</b>
+                <br>
+              <ol>
+                <li>Add a new page with at least the following parameters:</li>
+                <ul>
+                  <li>Page name: The name you wish to give to the additional page (ie: Registration not validated)</li>
+                  <li>Set as homepage checked</li>
+                  <li>Groups allowed: Check the box corresponding to the group "Waiting" configured in UAM</li>
+                  <li>Content: The text you want to use for visitors.</li>
+                </ul>
+                <br>
+                <li>And that\'s it! Only visitors registered and whose registration has not been validated will see this additional index page.</li>
+              </ol>
+            </li>
+          </ul>';
+/*TODO*/$lang['UAM_No_Ghosts'] = 'No ghosts visitors for the moment';
+/*TODO*/$lang['UAM_No_Userlist'] = 'No visitors to list for the moment';
+/*TODO*/$lang['UAM_No_Usermanager'] = 'No unvalidated registers to list for the moment';
+$lang['UAM_Stuffs_Title'] = 'Módulo de la UAM';
+/*TODO*/$lang['UAM_Stuffs_Desc'] = 'Adds an information block for unvalidated users';
+$lang['UAM_Stuffs'] = 'PWG Stuffs módulo';
+// --------- End: New or revised $lang ---- from version 2.20.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.3
+/*TODO*/$lang['UAM_DumpTxt'] = 'Backup your configuration';
+/*TODO*/$lang['UAM_Dump_Download'] = 'To download the backup file, please check this box:';
+/*TODO*/$lang['UAM_Save'] = 'Run backup';
+/*TODO*/$lang['UAM_Dump_OK'] = 'Backup file created successfully';
+/*TODO*/$lang['UAM_Dump_NOK'] = 'Error: Unable to create backup file !';
+// --------- End: New or revised $lang ---- from version 2.20.3
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.4
+$lang['UAM_HidePassw'] = 'Contraseña en texto claro en la información del correo electrónico';
+// --------- End: New or revised $lang ---- from version 2.20.4
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.11
+/*TODO*/$lang['UAM_Error_Using_illegal_flag'] = 'Syntax error ! The [Kdays] AutoText flag is used as the "Plazo para la validación de registro limitado" option was not activated. Please activate the option or correct the text field(s) colored in red.';
+// --------- End: New or revised $lang ---- from version 2.20.11
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/language/es_ES/help/plugin.lang.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/language/es_ES/help/plugin.lang.php	(revision 11321)
+++ /extensions/UserAdvManager/tags/2.20.11/language/es_ES/help/plugin.lang.php	(revision 11321)
@@ -0,0 +1,323 @@
+<?php
+global $lang;
+
+$lang['UAM_restricTitle'] = 'Restricciones para el registro';
+$lang['UAM_confirmTitle'] = 'Confirmaciones y validaciones de registro';
+$lang['UAM_confirmTitle_d'] = '
+- Información por correo electrónico para el usuario<br>
+- Confirmación de registro<br>
+- Grupos o estatutos de validación<br>
+- Plazo para la validación de registro<br>
+- Recuerde a los usuarios no validados<br>
+...
+';
+$lang['UAM_miscTitle'] = 'Registros seguido y otras opciones';
+$lang['UAM_carexcTitle'] = 'Nombres de usuario: Excluyendo los caracteres';
+$lang['UAM_carexcTitle_d'] = 'Puede ser interesante para prohibir ciertos caracteres en nombres de usuario (por ejemplo, se niegan los inicios de sesi&oacute;n que contiene &quot;@&quot;). Esta opci&oacute;n permite excluir caracteres o secuencia de caracteres, los acontecimientos.<br>
+Nota: La opción también puede excluir palabras completas.
+<br><br>
+<b style=&quot;color: red;&quot;>Advertencia: Esta opción no tiene efecto sobre los nombres de usuario creados antes de su activación.</b>';
+$lang['UAM_passwTitle'] = 'Fortalecimiento del nivel de seguridad de las contraseñas';
+$lang['UAM_passwTitle_d'] = 'Al habilitar esta opción hace obligatoria la creación de una contraseña en el registro, y requiere la contraseña elegida por el usuario para cumplir un nivel mínimo de complejidad. Si el umbral no se alcanza, la puntuación obtenida y la puntuación mínima que deben alcanzarse se muestran, junto con recomendaciones para aumentar el valor de esta puntuación.<br><br>
+Un campo de prueba permite medir la complejidad de la contraseña, y puede hacerse una idea de la puntuación necesaria para alcanzar una contraseña valida .<br><br>
+Nota: La puntuación de una contraseña se calcula en función de varios parámetros: longitud, tipo de caracteres utilizados (letras, números, mayúsculas, minúsculas, caracteres especiales). Una puntuación por debajo de 100 se considera bajo, de 100 a 500, la complejidad es mediana, más allá de 500, la seguridad es excelente.';
+$lang['UAM_passwtestTitle'] = 'Prueba de la complejidad de la contraseña';
+$lang['UAM_passwtestTitle_d'] = 'Introduzca la contrase&ntilde;a para pruebar y luego haga clic en &quot;c&aacute;lcular complejidad&quot; para ver el resultado.';
+$lang['UAM_passwadmTitle'] = 'Aplicando a los administradores';
+$lang['UAM_passwadmTitle_d'] = 'Un administrador puede crear una cuenta de usuario, con o sin aplicación de la regla de la complejidad informática.<br><br>
+Nota: Si el  usuario de la cuenta  creada quiere cambiar la contraseña, y el fortalecimiento de las contraseñas de los usuarios está activo, la misma estará sujeta a la norma establecida.';
+$lang['UAM_mailexcTitle'] = 'Exclusión de dominios de correo electrónico';
+$lang['UAM_infomailTitle'] = 'Información por correo electrónico para el usuario';
+$lang['UAM_infomailTitle_d'] = 'Esta opción permite automatizar el envío de un correo electrónico y la información a un usuario cuando se registra o cuando cambie su contraseña o dirección de correo electrónico en su perfil.<br><br>
+El contenido del mensaje enviado se compone de una parte personalizable para introducir una nota de bienvenida, y una parte fija que indica el inicio de sesión, contraseña y dirección de correo electrónico del usuario.';
+$lang['UAM_infotxtTitle'] = 'Personalización del correo electrónico de información';
+$lang['UAM_confirmtxtTitle'] = 'Personalización del mensaje recordatorio';
+$lang['UAM_confirmgrpTitle'] = 'Grupos de validación';
+$lang['UAM_confirmgrpTitle_d'] = '<b style=&quot;color: red;&quot;>ADVERTENCIA: El uso de grupos de validación requiere que se haya creado al menos un grupo de usuarios y se define &quot;por defecto&quot; en la gestión de Piwigo de grupos de usuarios.</b><br><br>
+Los grupos est&aacute;n validados para su uso en relaci&oacute;n con la &quot;confirmaci&oacute;n de registro&quot;';
+$lang['UAM_confirmstatTitle'] = 'Estatutos de validación';
+$lang['UAM_confirmstatTitle_d'] = '<b style=&quot;color: red;&quot;>ADVERTENCIA: El uso de la validaci&oacute;n de estado requiere que se haya mantenido el &quot;Invitado&quot; del usuario con la configuraci&oacute;n predeterminada (como usuario de plantilla) para los nuevos registrados. Nota Puede establecer cualquier otro usuario como una plantilla para nuevos registrados. Por favor, consulte la documentaci&oacute;n de Piwigo para obtener m&aacute;s detalles.</b><br><br>
+Los estatutos son validados para su uso en relaci&oacute;n con la &quot;confirmaci&oacute;n de registro&quot;';
+$lang['UAM_validationlimitTitle'] = 'Plazo para la validación de registro limitado';
+$lang['UAM_remailTitle'] = 'Recordarle a los usuarios no validados';
+$lang['UAM_remailtxt1Title'] = 'Recordatorio por correo electrónico con la llave generada';
+$lang['UAM_remailtxt2Title'] = 'Recordatorio por correo electrónico sin la llave generada';
+$lang['UAM_ghosttrackerTitle'] = 'Gestión de usuarios fantasmas';
+$lang['UAM_gttextTitle'] = 'Mensaje recordatorio de Ghost Tracker';
+$lang['UAM_lastvisitTitle'] = 'Seguimiento de usuarios registrados';
+$lang['UAM_lastvisitTitle_d'] = 'Esto activa una tabla de &quot;Seguimiento de los usuarios&quot; ficha de matriculaci&oacute;n de los usuarios que aparecen en la galer&iacute;a y la fecha de su &uacute;ltima visita y el tiempo (en d&iacute;as) desde su &uacute;ltima visita. El seguimiento es meramente informativo para el administrador de la galer&iacute;a.';
+$lang['UAM_tipsTitle'] = 'Consejos y ejemplos';
+$lang['UAM_tipsTitle_d'] = 'Consejos y diversos ejemplos de uso de';
+$lang['UAM_userlistTitle'] = 'Seguimiento de los usuarios';
+$lang['UAM_usermanTitle'] = 'Seguimiento de las Validaciones';
+$lang['UAM_gtTitle'] = 'Gestión de los usuarios fantasmas';
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.14.0
+$lang['UAM_adminconfmailTitle'] = 'Confirmaci&oacute;n de registro por los administradores';
+$lang['UAM_adminconfmailTitle_d'] = 'Puede desactivar esta validaci&oacute;n s&oacute;lo para las cuentas de usuario creadas por el administrador de Piwigo a trav&eacute;s de la interfaz de gesti&oacute;n de los usuarios.<br><br>
+Al activar esta opci&oacute;n, la validaci&oacute;n del email de registro ser&aacute; enviado a cada usuario creado por el administrador.<br><br>
+Al deshabilitar esta opci&oacute;n (por defecto), s&oacute;lo el coreo de informaci&oacute;n  se env&iacute;a (si &quot;Informaci&oacute;n por correo electr&oacute;nico para el usuario&quot; est&aacute; activado).';
+// --------- End: New or revised $lang ---- from version 2.14.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.4
+$lang['UAM_restricTitle_d'] = '
+- Excluyendo los caracteres<br>
+- Ejecución Contraseña<br>
+- Exclusión de dominios de correo electrónico<br>
+...
+';
+$lang['UAM_userlistTitle_d'] = 'Esta p&aacute;gina es para informaci&oacute;n al administrador. Se muestra una lista de todos los usuarios registrados en la galer&iacute;a que indique la fecha y el n&uacute;mero de d&iacute;as transcurridos desde su &uacute;ltima visita. La lista est&aacute; ordenada por orden ascendente del n&uacute;mero de d&iacute;as.
+<br><br>
+<b><u>S&oacute;lo cuando el Ghost Tracker est&aacute; activo</u></b>, el n&uacute;mero de d&iacute;as sin visita aparece con el c&oacute;digo de color siguientes, seg&uacute;n el plazo m&aacute;ximo establecido en las opciones de Ghost Tracker:
+<br>
+- <b style=&quot;color: lime;&quot;>Verde</b> : Cuando el usuario ha visitado la galer&iacute;a de <b style=&quot;color: lime;&quot;><u>menos del 50%</u></b> del plazo m&aacute;ximo indicado en el Ghost Tracker.<br>
+- <b style=&quot;color: orange;&quot;>Naranja</b> : Cuando el usuario ha visitado la galer&iacute;a de <b style=&quot;color: orange;&quot;><u>entre 50% y 99%</u></b> del plazo m&aacute;ximo indicado en el Ghost Tracker.<br>
+- <b style=&quot;color: red;&quot;>Rojo</b> : Cuando el usuario ha visitado la galer&iacute;a de <b style=&quot;color: red;&quot;><u>por más de 100%</u></b> del plazo m&aacute;ximo indicado en el Ghost Tracker. <b><u>En este caso, el usuario tambi&eacute;n debe aparecer en el cuadro Ghost Tracker.</u></b><br>
+<br>
+Ejemplo :
+<br>
+El per&iacute;odo m&aacute;ximo de Ghost Tracker est&aacute; configurado para 100 d&iacute;as.
+<br>
+Un usuario aparecer&aacute; en verde si visit&oacute; la galer&iacute;a hace menos de 50 d&iacute;as, en naranja si su &uacute;ltima visita tuvo lugar entre el 50 y 99 d&iacute;as y el rojo durante 100 d&iacute;as o m&aacute;s.
+<br><br>
+<b>NOTA</b>: La lista no muestra que no han validado su registro (si la opci&oacute;n de validar el registro est&aacute; activado). Estos usuarios estan administrados despu&eacute;s de una manera particular en la pestaña &quot;Seguimiento de las Validaciones&quot;.
+<br><br>
+<b>Funciones Clasificación de la tabla</b>: Puede ordenar los datos mostrados, haga clic en los encabezados de columna. Sostenga la tecla SHIFT para ordenar hasta 4 columnas máxima simultánea.';
+$lang['UAM_usermanTitle_d'] = 'Cuando el limite de plazo de inscripción está habilitado, podrá encontrar más adelante la lista de usuarios cuya validación de registro esta en espera, <b style=&quot;text-decoration: underline;&quot;>si o no</b> que están en el tiempo para validar.<br><br>
+La fecha de registro se muestra en verde cuando el usuario en cuestión está por debajo del límite de tiempo para validar su inscripción. En este caso, la clave de validación es todavía válida y que puede enviar un correo electrónico con o sin una clave de validación nueva.<br><br>
+Cuando la fecha de registro aparece en rojo, el período de validación ha caducado. En este caso, debe enviar un correo electrónico con la regeneración de la clave de validación si desea que el usuario pueda validar su inscripción.<br><br>
+En todos los casos, es posible forzar manualmente la validación.<br><br>
+En esta vista, puede:
+<br><br>
+- Eliminar manualmente las cuentas de <b>(drenaje manual)</b>
+<br>
+- Generar recordatorio por correo electrónico <b>sin</b> generar una nueva clave. Advertencia: Enviar un recordatorio por correo electrónico dirigido a los visitantes. Esta función no restaura la fecha de registro de visitantes apuntado y el tiempo de espera sigue siendo válido.
+<br>- Generar recordatorio por correo electrónico <b>con</b> generar una nueva clave. Advertencia: Enviar un recordatorio por correo electrónico dirigido a los visitantes. Esta función también restablece la fecha de registro de visitantes y específicos, que equivale a prorrogar el plazo para la validación.
+<br>
+- Presentar una solicitud de registro en espera de validación manual, aunque la fecha de caducidad ha pasado <b>(forzando la validación)</b>.
+<br><br>
+<b>Funciones Clasificación de la tabla</b>: Puede ordenar los datos mostrados, haga clic en los encabezados de columna. Sostenga la tecla SHIFT para ordenar hasta 4 columnas máxima simultánea.';
+$lang['UAM_gtTitle_d'] = 'Cuando el Tracker Ghost est&aacute; habilitado y se inicializa, se encuentra por debajo de la lista de visitantes registrados que no han regresado desde los x d&iacute;as. &quot;x&quot; es el n&uacute;mero de d&iacute;as configurado en la pesta&ntilde;a Configuraci&oacute;n general. Adem&aacute;s, usted encontrar&aacute; una columna que indica si un recordatorio por correo electr&oacute;nico ha sido enviado a los visitantes espec&iacute;ficos. As&iacute;, se puede ver a simple vista y tratar a los visitantes que no han tenido en cuenta el recordatorio.<br><br>
+En esta vista, puede:
+<br><br>
+- Elimine manualmente las cuentas de <b>(drenaje manual)</b>
+<br>
+- Generar recordatorio por correo electrónico <b>con el cambio de la fecha de última visita</b>. Esto permite dar un comodín a los visitantes específicos. Si el visitante ya ha recibido un recordatorio, nada impide a enviar un nuevo correo que se restablecerá la fecha de la última visita.
+<br><br>
+<b>Funciones Clasificación de la tabla</b>: Puede ordenar los datos mostrados, haga clic en los encabezados de columna. Sostenga la tecla SHIFT para ordenar hasta 4 columnas máxima simultánea.';
+$lang['UAM_confirmmailTitle'] = 'Confirmación de registro';
+/*TODO*/$lang['UAM_confirmmailTitle_d'] = 'This option allows a user to either confirm registration by clicking on a link received in an email sent upon registration or the administrator to manually activate the registration.<br><br>
+In first case, the e-mail is composed of a customizable part to introduce a little welcome note and a fixed part containing the activation link that is generated from a random key that can possibly regenerate through the &quot;Tracking validations&quot; tab.<br><br>
+Dans le premier cas, le message envoyé comprend une partie fixe, avec le lien d\'activation généré à partir d\'une clef aléatoire (cette clé peut éventuellement être régénérée via l\'onglet &quot;Suivi des validations&quot;), et une partie personnalisable par un texte d\'accueil.
+<br><br>
+In second case, <b><u>there is no validation key send by email!</u></b>. Visitors have to wait until an administrator validate them himself in &quot;Validation tracking&quot; tab. It\s recommanded to activate the Piwigo\'s option &quot;Email admins when a new user registers&quot; (see in Piwigo\'s configuration options) and to use the &quot;Information email to user&quot; to warn new registers to wait on their account activation.
+<br>
+<b style=&quot;color: red;&quot;>NB: Options &quot;Deadline for registration validation limited&quot; and &quot;Remind unvalidated users  &quot; have to be set to off when admin\'s manual validation is enabled.</b>
+<br><br>
+Esta opci&oacute;n se utiliza generalmente con la asignaci&oacute;n autom&aacute;tica de grupo y / o estatutos. Por ejemplo, un usuario que no ha validado su registro se encuentra en un grupo espec&iacute;fico de usuarios (con o sin restricciones a la galer&iacute;a) mientras que un usuario que haya validado su registro se encuentra en un &quot;normal&quot; del grupo.';
+$lang['UAM_RedirTitle'] = 'Redirigir a la página de &quot;personalizaci&oacute;n&quot;';
+// --------- End: New or revised $lang ---- from version 2.15.4
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.6
+$lang['UAM_RedirTitle_d'] = 'Esta opción se redireccionan automáticamente un usuario registrado para su página de personalización sólo en su primera conexión a la galería.<br><br>
+Atención: Esta característica no se aplica a todos los usuarios registrados. Las personas con estados &quot;admin&quot;, &quot;webmaster&quot; o &quot;generic&quot; están excluidos.';
+// --------- End: New or revised $lang ---- from version 2.15.6
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.16.0
+$lang['UAM_confirmmail_custom1'] = 'Texto de la página de confirmación - Confirmación aceptada';
+$lang['UAM_confirmmail_custom2'] = 'Texto de la página de confirmación - Confirmación rechazada';
+/*TODO*/$lang['UAM_ghosttrackerTitle_d'] = 'Also called &quot;Ghost Tracker&quot;, when this function is activated, you can manage your visitors depending on the frequency of their visits. 2 operating modes are available:<br><br>
+- Manual management : When the time between 2 visits is reached,, the visitor appears in the &quot;Ghost Tracker&quot; table where you will be able to remind visitors via email or delete him.<br><br>
+- Automated management : When the period between 2 successive visits is reached, the visitor is automatically deleted or moved into a wait group and/or status. In this second case, an information email can be sent to him.<br><br>
+<b style=&quot;color: red;&quot;>Important note : If you enable this feature for the first time or you have reactivated after a long period off during which new visitors are registered, you must initialize or reset the Ghost Tracker (see corresponding instructions on &quot;Ghost Tracker&quot; tab).</b>';
+$lang['UAM_miscTitle_d'] = '
+- Automatic or manual management of ghosts users<br>
+- Followed registered users<br>
+- Nickname mandatory for guests comments<br>
+...
+';
+$lang['UAM_mailexcTitle_d'] = 'De forma predeterminada, Piwigo acepta todas las direcciones de correo electrónico en el  formato xxx@yyy.zz. Al habilitar esta opción le permite excluir ciertos dominios en el formato: @[nombreDeDominio].[Domain_extension].<br><br>
+Ejemplos :<br>
+@hotmail.com -> con exclusión de direcciones *@hotmail.com<br>
+@hotmail -> con exclusión de todas las direcciones de *@hotmail*';
+$lang['UAM_GTAutoTitle'] = 'Gestión automática de los Espíritus usuarios';
+/*TODO*/$lang['UAM_GTAutoTitle_d'] = 'This option allows to apply rules for automated management of ghosts users.
+<br><br>Basic Principle: A user who reaches the maximum time between visits <b><u>and</u></b> has already been notified by email is considered as expired. Then you can apply automated processing rules such as automatic deletion of expired accounts or demotion by restricting access to the gallery (switch automatically to a restricted group and/or status).
+<br><br>The triggering of these automation is achieved when connecting users (any user!) to the gallery.';
+$lang['UAM_GTAutoDelTitle'] = 'Mensaje personalizado en cuenta eliminada';
+$lang['UAM_GTAutoGpTitle'] = 'Cambio automático de grupo / estado';
+/*TODO*/$lang['UAM_GTAutoGpTitle_d'] = 'The automatic change of group or status equivalent to a demotion of the accounts involved and working on the same principle as the group or the status of validation (see &quot;Setting confirmations and validations of registration&quot;). Therefore be to define a group and / or status demoting access to the gallery. If this has already been defined with the use of registration confirmation function, you can use the same group / status.<br><br>
+<b style=&quot;color: red;&quot;>Important note :</b> If a ghost user still has not heard from after the time limit and despite the automatic notification by email (if enabled), he\'s automatically deleted from the database.';
+$lang['UAM_GTAutoMailTitle'] = 'Automáticamente el envío de un correo electrónico cuando se cambia de grupo / estado';
+$lang['UAM_AdminValidationMail'] = 'Notificación de la validación manual de registro';
+// --------- End: New or revised $lang ---- from version 2.16.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.0
+/*TODO*/$lang['UAM_CustomPasswRetrTitle'] = 'Customize lost password email content';
+/*TODO*/$lang['UAM_validationlimitTitle_d'] = 'Esta opción permite limitar la validez de la validación de claves de correo electrónico enviado a los solicitantes de registro nuevo. Los visitantes que se registren tendrán x días de tiempo para validar su inscripción. Después de este período el enlace de validación expira.
+<br><br>
+Esta opci&oacute;n se utiliza en conjunci&oacute;n con la &quot;confirmaci&oacute;n de registro&quot;
+<br><br>
+If this option and the option &quot;Recordarle a los usuarios no validados&quot; are activated, new options will appear below in this section to enable the automation of unvalidated users management.';
+/*TODO*/$lang['UAM_remailTitle_d'] = 'Esta opci&oacute;n le permite enviar un recordatorio por correo electr&oacute;nico a los usuarios registrados, que no han validado su inscripci&oacute;n a tiempo. Por lo tanto, trabaja en conjunto con la &quot;confirmaci&oacute;n de registro&quot;
+<br><br>
+2 tipos de mensajes de correo electrónico se pueden enviar: Con o sin regeneración de la clave de validación. Según proceda, el contenido de los mensajes de correo electrónico se pueden personalizar.
+<br><br>
+Consulte la ficha &quot;Seguimiento de las Validaciones&quot;.
+<br><br>
+If this option and the option &quot;Plazo para la validación de registro limitado&quot; are activated, new options will appear below in this section to enable the automation of unvalidated users management.';
+/*TODO*/$lang['UAM_USRAutoTitle'] = 'Automatic management of unvalidated users';
+/*TODO*/$lang['UAM_USRAutoTitle_d'] = 'Automatic handling of unvalidated visitors is triggered each time you connect to the gallery and works as follows:
+<br><br>
+- Automatic deletion of accounts not validated in the allotted time without sending automatic email reminder -> &quot;Deadline for registration validation limited&quot; <b><u>enabled</u></b> and &quot;Remind unvalidated users&quot; <b><u>disabled</u></b>.
+<br><br>
+- Automatically sending a reminder message with a new generation of validation key and automatic deletion of accounts not validated in the time after sending the reminder -> &quot;Deadline for registration validation limited&quot; <b><u>enabled</u></b> et &quot;Remind unvalidated users&quot; <b><u>enabled</u></b>.';
+/*TODO*/$lang['UAM_USRAutoDelTitle'] = 'Custom message on deleted account';
+/*TODO*/$lang['UAM_USRAutoMailTitle'] = 'Automated email reminder';
+/*TODO*/$lang['UAM_USRAutoMailTitle_d'] = 'When activated, this function will automatically send personalized content in &quot;Reminder email with new key generated&quot; to visitors who match criteria.';
+$lang['UAM_StuffsTitle'] = 'PWG Stuffs módulo';
+/*TODO*/$lang['UAM_StuffsTitle_d'] = 'This enables an additional UAM block in PWG Stuffs plugin (if installed) to inform your visitors who did not validate their registration about their condition.
+<br><br>
+Please refer to the <b>Consejos y ejemplos</b> at the bottom of this page for details.';
+// --------- End: New or revised $lang ---- from version 2.20.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.3
+/*TODO*/$lang['UAM_DumpTitle'] = 'Backup your configuration';
+/*TODO*/$lang['UAM_DumpTitle_d'] = 'This allows you to save the entire configuration of the plugin in a file so you can restore it if something goes wrong (wrong manipulation or before an update, for example). By default, the file is stored in this folder ../plugins/UserAdvManager/include/backup/ and is called &quot;UAM_dbbackup.sql&quot;.
+<br><br>
+<b style=&quot;color: red;&quot;>Warning: The file is overwritten each backup action!</b>
+<br><br>
+It can sometimes be useful to retrieve the backup file on your computer. For example: To restore to another database, to outsource or to keep multiple save files. To do this, just check the box to download the file.
+<br><br>
+The recovery from this interface is not supported. Use tools like phpMyAdmin.';
+// --------- End: New or revised $lang ---- from version 2.20.3
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.4
+$lang['UAM_HidePasswTitle'] = 'Contraseña en texto claro en la información del correo electrónico';
+/*TODO*/$lang['UAM_HidePasswTitle_d'] = 'Choose here if you want to display the password chosen by the visitor in the information email. If you enable the option, the password will then appear in clear text. If you disable the password will not appear at all.';
+// --------- End: New or revised $lang ---- from version 2.20.4
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.11
+/*TODO*/$lang['UAM_gttextTitle_d'] = 'Introduzca el texto que desea que aparezca en el recordatorio por correo electrónico para pedir al usuario volver a visitar su galería (Nota: El texto pre-llenado con la instalación del plugin se presenta como un ejemplo).
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options. Use <b style=&quot;color: red;&quot;>[days]</b> to insert the maximum numbers of days between two visits.
+<br><br>
+Para utilizar varios idiomas, puede utilizar las etiquetas para el plugin Extended description si está activo.';
+/*TODO*/$lang['UAM_confirmtxtTitle_d'] = 'Introduzca el texto de introducción que desea que aparezca en el correo electrónico de confirmación de registro.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.<br>
+- <b style=&quot;color: red;&quot;>[Kdays]</b> to insert the number of days limit to validate a registration (&quot;Plazo para la validación de registro limitado;&quot; have to be enabled).
+<br><br>
+Para utilizar varios idiomas, puede utilizar las etiquetas para el plugin Extended description si está activo.';
+/*TODO*/$lang['UAM_remailtxt1Title_d'] = 'Introduzca el texto de introducción que desea que aparezca en el recordatorio por correo electrónico, además de la clave de validación regenerada.
+<br><br>
+Si se deja en blanco, el aviso de correo electrónico sólo incluirá el enlace de validación. Por tanto, es muy recomendable tomar un pequeño texto explicativo. (Nota: El texto pre-llenado con la instalación del plugin se proporciona como un ejemplo).
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.<br>
+- <b style=&quot;color: red;&quot;>[Kdays]</b> to insert the number of days limit to validate a registration (&quot;Plazo para la validación de registro limitado;&quot; have to be enabled).
+<br><br>
+Para utilizar varios idiomas, puede utilizar las etiquetas para el plugin Extended description si está activo.';
+/*TODO*/$lang['UAM_remailtxt2Title_d'] = 'Introduzca el texto de introducción que desea que aparezca en el recordatorio por correo electrónico sin una clave de validación regenerada.
+<br><br>
+Si se deja en blanco, el aviso de correo electrónico estará vacío. Por lo tanto, es muy recomendable poner un pequeño texto explicativo. (Nota: El texto pre-llenado con la instalación del plugin se proporciona como un ejemplo).
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.<br>
+- <b style=&quot;color: red;&quot;>[Kdays]</b> to insert the number of days limit to validate a registration (&quot;Plazo para la validación de registro limitado;&quot; have to be enabled).
+<br><br>
+Para utilizar varios idiomas, puede utilizar las etiquetas para el plugin Extended description si está activo.';
+/*TODO*/$lang['UAM_infotxtTitle_d'] = 'Introduzca el texto de introducción que desea ver en el correo electrónico de la información.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.
+<br><br>
+Para utilizar varios idiomas, puede utilizar las etiquetas para el plugin Extended description si está activo.';
+/*TODO*/$lang['UAM_AdminValidationMail_d'] = 'When an administrator or Webmaster of the gallery manually valid registration pending, a notification email is automatically sent to the user. Enter here the text that appears in this email.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.
+<br><br>
+To use multiple languages, you can use the Extended description plugin\'s tags if it is active.';
+/*TODO*/$lang['UAM_confirmmail_custom1_d'] = 'When the option &quot;Confirmation of registration&quot; is active, this field allows you to customize the <b><u>acceptance text</u></b> on the registration confirmation page displayed when user clicks the confirmation link that was received by email.
+<br><br>
+After installing the plugin, a standard text is set as an example.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.
+<br><br>
+This field is compatible with the FCK Editor and, for multi-languages, you can use the tags [lang] of the plugin Extended description if it\'s active.';
+/*TODO*/$lang['UAM_confirmmail_custom2_d'] = 'When the option &quot;Confirmation of registration&quot; is active, this field allows you to customize the <b><u>rejectance text</u></b> on the registration confirmation page displayed when user clicks the confirmation link that was received by email.
+<br><br>
+After installing the plugin, a standard text is set as an example.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.
+<br><br>
+This field is compatible with the FCK Editor and, for multi-languages, you can use the tags [lang] of the plugin Extended description if it\'s active.';
+/*TODO*/$lang['UAM_GTAutoDelTitle_d'] = 'This is only valid when the user whose account has expired itself triggers the deletion mechanism (rare but possible). he\'s then disconnected of the gallery and redirected to a page showing the deletion of his account and, possibly, the reasons for this deletion.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.<br>
+<b style=&quot;color: red;&quot;>[username]</b> is not available here because concerned user has been deleted.
+<br><br>
+Custom text for the redirect page can be entered in this field that is compatible with the FCK Editor and, for multi-languages, you can use the tags [lang] of the plugin Extended description if it\'s active.';
+/*TODO*/$lang['UAM_GTAutoMailTitle_d'] = 'When an account is expired (group / status change demoting the visitor), an email information can be sent to clarify the reasons for this change and the means to recover the initial access to the gallery.
+<br>To do this, a link to revalidation of registration is attached to the email (automatic generation of a new validation key).<b style=&quot;color: red;&quot;>If the user has already been notified, his account is automatically destroyed.</b> 
+<br><br>
+Enter the custom text that also explain the reasons for the demotion, to accompany the validation link. The custom text is not mandatory but strongly recommended. In fact, your visitors will not appreciate receiving an email containing only a single link without further explanation. ;-)
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[username]</b> to automatically insert the name of the destination user of the email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.
+<br><br>
+To use multiple languages, you can use the Extended description plugin\'s tags if it is active.
+<br><br>
+<b style=&quot;color: red;&quot;>Warning: The use of this function is intimately associated with the confirmation of registration by the user (confirmation by mail) and can not be activated without this option.</b>';
+/*TODO*/$lang['UAM_CustomPasswRetrTitle_d'] = 'By default, when a user has lost his password and selects the option of recovery, he receives an email containing only his username and his new password.
+<br><br>
+Here, you can add text of your choice to be inserted <b><u>before</u></b> the standard information.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.
+<br><br>
+To use multiple languages, you can use the Extended description plugin\'s tags if it is active.';
+/*TODO*/$lang['UAM_USRAutoDelTitle_d'] = 'This is only valid when the user whose account has expired itself triggers the deletion mechanism (rare but possible). he\'s then disconnected of the gallery and redirected to a page showing the deletion of his account and, possibly, the reasons for this deletion.
+<br><br>
+Further customize the content with special inserted tags:<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> to insert the title of your gallery.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> to insert your gallery URL if set in Piwigo\'s configuration options.<br>
+<b style=&quot;color: red;&quot;>[username]</b> is not available here because concerned user has been deleted.
+<br><br>
+Custom text for the redirect page can be entered in this field that is compatible with the FCK Editor and, for multi-languages, you can use the tags [lang] of the plugin Extended description if it\'s active.';
+// --------- End: New or revised $lang ---- from version 2.20.11
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/language/es_ES/help/index.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/language/es_ES/help/index.php	(revision 4969)
+++ /extensions/UserAdvManager/tags/2.20.11/language/es_ES/help/index.php	(revision 4969)
@@ -0,0 +1,33 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | PhpWebGallery - a PHP based picture gallery                           |
+// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
+// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
+// +-----------------------------------------------------------------------+
+// | file          : $Id: index.php 1912 2007-03-16 06:30:07Z rub $
+// | last update   : $Date: 2007-03-16 07:30:07 +0100 (ven, 16 mar 2007) $
+// | last modifier : $Author: rub $
+// | revision      : $Revision: 1912 $
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/language/es_ES/index.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/language/es_ES/index.php	(revision 4226)
+++ /extensions/UserAdvManager/tags/2.20.11/language/es_ES/index.php	(revision 4226)
@@ -0,0 +1,33 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | PhpWebGallery - a PHP based picture gallery                           |
+// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
+// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
+// +-----------------------------------------------------------------------+
+// | file          : $Id: index.php 1912 2007-03-16 06:30:07Z rub $
+// | last update   : $Date: 2007-03-16 07:30:07 +0100 (ven, 16 mar 2007) $
+// | last modifier : $Author: rub $
+// | revision      : $Revision: 1912 $
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/language/fr_FR/description.txt
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/language/fr_FR/description.txt	(revision 4226)
+++ /extensions/UserAdvManager/tags/2.20.11/language/fr_FR/description.txt	(revision 4226)
@@ -0,0 +1,1 @@
+Permet de renforcer les possibilités de gestion des utilisateurs
Index: /extensions/UserAdvManager/tags/2.20.11/language/fr_FR/plugin.lang.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/language/fr_FR/plugin.lang.php	(revision 11319)
+++ /extensions/UserAdvManager/tags/2.20.11/language/fr_FR/plugin.lang.php	(revision 11319)
@@ -0,0 +1,335 @@
+<?php
+
+global $lang,$conf;
+
+$conf_UAM = unserialize($conf['UserAdvManager']);
+
+
+/* UserManager Tab */
+$lang['UAM_Registration_Date'] = 'Date d\'enregistrement';
+
+
+/* Mailing */
+$lang['UAM_infos_mail %s'] = '%s, voici vos informations pour vous identifier sur la galerie :';
+$lang['UAM_User: %s'] = 'Utilisateur : %s';
+$lang['UAM_Password: %s'] = 'Mot de passe: %s';
+$lang['UAM_Link: %s'] = 'Cliquez sur le lien suivant pour confirmer votre inscription : %s';
+
+
+/* Email confirmation page */
+$lang['UAM_title_confirm_mail'] = 'Confirmation de votre inscription';
+$lang['UAM_confirm_mail_page_title'] = 'Confirmation d\'inscription';
+
+
+/* Errors and Warnings */
+$lang['UAM_audit_ok'] = 'Audit OK';
+$lang['UAM_Err_audit_username_char'] = '<b>Ce compte contient un ou des caractères interdits :</b> ';
+$lang['UAM_Err_audit_email_forbidden'] = '<b>Ce compte contient des domaines de messagerie interdit :</b> ';
+$lang['UAM_Err_audit_advise'] = '<b>Vous avez des corrections a faire pour respecter les nouvelles règles que vous avez activées.<br>Utilisez un utilitaire de gestion de base de données pour corriger les comptes utilisateurs directement dans la table ###_USERS si nécessaire.</b><br><br>';
+$lang['UAM_reg_err_login2'] = 'le nom utilisateur ne doit pas contenir les caractère suivants : ';
+$lang['UAM_reg_err_login5'] = 'L\'adresse email est issue d\'un prestataire interdit. Les prestataires d\'adresses email interdits à l\'inscription sont : ';
+$lang['UAM_empty_pwd'] = '[mot de passe vide]';
+$lang['UAM_no_update_pwd'] = '[mise à jour du profil sans changement du mot de passe]';
+$lang['UAM_No_validation_for_Guest'] = 'Le compte Guest n\'est pas soumis à validation';
+$lang['UAM_No_validation_for_default_user'] = 'Le compte par défaut n\'est pas soumis à validation';
+$lang['UAM_No_validation_for_Webmaster'] = 'Le compte du Webmaster n\'est pas soumis à validation';
+$lang['UAM_No_validation_for_your_account'] = 'Votre compte d\'admin n\'est pas soumis à validation';
+
+
+/* Processing messages */
+$lang['UAM_%d_Mail_With_Key'] = '%d message avec renouvellement de clé a été envoyé';
+$lang['UAM_%d_Mails_With_Key'] = '%d messages avec renouvellement de clé ont été envoyés';
+$lang['UAM_%d_Reminder_Sent'] = '%d message de rappel a été envoyé';
+$lang['UAM_%d_Reminders_Sent'] = '%d messages de rappel ont été envoyés';
+$lang['UAM_%d_Validated_User'] = '%d Utilisateur validé manuellement';
+$lang['UAM_%d_Validated_Users'] = '%d Utilisateurs validés manuellement';
+
+
+/* Action button names */
+$lang['UAM_Delete_selected'] = 'Supprimer';
+$lang['UAM_Mail_without_key'] = 'Rappel sans clé';
+$lang['UAM_Mail_with_key'] = 'Rappel avec clé';
+
+
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.12.0 and 2.12.1
+/* Global Configuration Tab */
+$lang['UAM_PasswordTest'] = 'Calcul du score';
+/* Ghost Tracker Tab */
+$lang['UAM_Tab_GhostTracker'] = 'Ghost Tracker';
+$lang['UAM_Reminder'] = 'Email de rappel';
+$lang['UAM_Reminder_Sent_OK'] = 'OUI';
+$lang['UAM_Reminder_Sent_NOK'] = 'NON';
+/* Errors and Warnings */
+$lang['UAM_save_config'] ='Configuration enregistrée.';
+$lang['UAM_reg_err_login3'] = 'Sécurité : Le mot de passe est obligatoire !';
+$lang['UAM_reg_err_login4_%s'] = 'Sécurité : Un système de contrôle calcule un score de complexité sur les mots de passe choisis. La complexité de votre mot de passe est trop faible (score = %s). Veuillez choisir un nouveau mot de passe plus sûre en respectant les règles suivantes :<br>
+- Utiliser des lettres et des chiffres<br>
+- Utiliser des minuscules et des majuscules<br>
+- Augmenter sa longueur (nombre de caractères)<br>
+Le score minimal des mots de passe imposé par l\'administrateur est de : ';
+$lang['UAM_No_reminder_for_Guest'] = 'Le compte Guest n\'est pas soumis à recevoir des rappels du GhostTracker';
+$lang['UAM_No_reminder_for_default_user'] = 'Le compte par défaut n\'est pas soumis à recevoir des rappels du GhostTracker';
+$lang['UAM_No_reminder_for_Webmaster'] = 'Le compte du Webmaster n\'est pas soumis à recevoir des rappels du GhostTracker';
+$lang['UAM_No_reminder_for_your_account'] = 'Votre compte d\'admin n\'est pas soumis à recevoir des rappels du GhostTracker';
+/* Action button names */
+$lang['UAM_audit'] = 'Auditer les paramètres';
+$lang['UAM_submit'] = 'Sauvegarder les paramètres';
+// --------- End: New or revised $lang ---- from version 2.12.0 and 2.12.1
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.12.2
+/* Errors and Warnings */
+$lang['UAM_GhostTracker_Init_OK'] = 'Initialisation Ghost Tracker effectuée !';
+/* Action button names */
+$lang['UAM_GT_Reset'] = 'Initialisation Ghost Tracker';
+// --------- End: New or revised $lang ---- from version 2.12.2
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.12.8
+/* Errors and Warnings */
+$lang['UAM_mail_exclusionlist_error'] = 'Attention ! Vous avez saisi un retour à la ligne en début de liste d\'exclusion des domaines de messagerie (affichée en rouge ci-dessous). Bien que ce retour à la ligne ne soit pas visible, il est tout de même présent et est susceptible de provoquer des dysfonctionnements du plugin. Veuillez resaisir votre liste d\'exclusion en veillant à ne pas commencer par un retour à la ligne.';
+// --------- End: New or revised $lang ---- from version 2.12.8
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.13.0
+/* UserList Tab */
+$lang['UAM_UserList_Title'] = 'Suivi des utilisateurs inscrits';
+$lang['UAM_Tab_UserList'] = 'Suivi des utilisateurs';
+// --------- End: New or revised $lang ---- from version 2.13.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.13.4
+/* Global Configuration Tab */
+$lang['UAM_Title_Tab'] = 'UserAdvManager - Version: ';
+$lang['UAM_SubTitle1'] = 'Configuration du plugin';
+$lang['UAM_Tab_Global'] = 'Configuration';
+$lang['UAM_Title1'] = 'Paramétrage des restrictions d\'inscriptions';
+$lang['UAM_Title2'] = 'Paramétrage des confirmations et validations d\'inscriptions';
+$lang['UAM_Title3'] = 'Paramétrage des suivis des inscrits et autres options';
+$lang['UAM_Title4'] = 'Astuces et exemples d\'utilisation';
+$lang['UAM_No_Casse'] = 'Noms d\'utilisateurs : Sensibilité à la casse';
+$lang['UAM_Username_Char'] = 'Noms d\'utilisateurs : Exclusion de certains caractères';
+$lang['UAM_Username_Char_true'] = ' Interdire les caractères:<br>(utiliser une virgule pour séparer chaque caractère du suivant)<br><br>';
+$lang['UAM_Username_Char_false'] = ' Tout autoriser (valeur par défaut)';
+$lang['UAM_Password_Enforced'] = 'Renforcement de la sécurité des mots de passe';
+$lang['UAM_Password_Enforced_true'] = ' Activer. Score minimum: ';
+$lang['UAM_AdminPassword_Enforced'] = 'Application aux administrateurs';
+$lang['UAM_PasswordTest'] = 'Mot de passe test: ';
+$lang['UAM_ScoreTest'] = 'Résultat: ';
+$lang['UAM_MailExclusion'] = 'Exclusion des domaines de messagerie';
+$lang['UAM_MailExclusion_true'] = ' Exclure les domaines suivants:<br>(utiliser une virgule pour séparer chaque domaine du suivant)';
+
+$lang['UAM_Mail_Info'] = 'Email d\'information à l\'utilisateur:';
+$lang['UAM_MailInfo_Text'] = ' Texte d\'accueil personnalisé:';
+$lang['UAM_Confirm_Mail'] = 'Confirmation d\'inscription:';
+$lang['UAM_ConfirmMail_Text'] = ' Texte d\'accueil personnalisé:';
+$lang['UAM_Confirm_Group'] = 'Groupes de validation<br>(------- pour ne pas affecter de groupe)';
+$lang['UAM_Confirm_Status'] = 'Statuts de validation<br>(------- pour conserver la valeur par défaut de Piwigo)';
+$lang['UAM_Confirm_grpstat_notice'] = 'Attention : Il est conseillé d\'utiliser soit les groupes, soit les statuts de validation et pas les deux simultanément.';
+$lang['UAM_No_Confirm_Group'] = 'Pour les utilisateurs n\'ayant pas validé leur inscription<br>';
+$lang['UAM_Validated_Group'] = 'Pour les utilisateurs ayant validé leur inscription<br>';
+$lang['UAM_No_Confirm_Status'] = 'Pour les utilisateurs n\'ayant pas validé leur inscription<br>';
+$lang['UAM_Validated_Status'] = 'Pour les utilisateurs ayant validé leur inscription.<br>';
+$lang['UAM_ValidationLimit_Info'] = 'Limitation du délai de validation d\'inscription';
+$lang['UAM_ConfirmMail_TimeOut_true'] = ' Activer. Nombre de jours de délai: ';
+$lang['UAM_ConfirmMail_Remail'] = 'Mail de rappel aux inscrits non validés';
+$lang['UAM_ConfirmMail_ReMail_Txt1'] = 'Texte du message de rappel <b><u>avec</u></b> génération d\'une nouvelle clé de validation.';
+$lang['UAM_ConfirmMail_ReMail_Txt2'] = 'Texte du message de rappel <b><u>sans</u></b> génération d\'une nouvelle clé de validation.';
+
+$lang['UAM_GhostTracker'] = 'Gestion des visiteurs fantômes (Ghost Tracker)';
+$lang['UAM_GhostTracker_true'] = ' Activer. Nombre de jours maximum entre deux visites: ';
+$lang['UAM_GhostTracker_ReminderText'] = 'Texte de rappel personnalisé';
+$lang['UAM_LastVisit'] = ' Suivi des utilisateurs inscrits';
+
+$lang['UAM_Tab_UserManager'] = 'Suivi des validations';
+
+/* UserManager Tab */
+$lang['UAM_SubTitle3'] = 'Suivi des validations';
+$lang['UAM_UserManager_Title'] = 'Suivi des validations';
+/* Ghost Tracker Tab */
+$lang['UAM_SubTitle4'] = 'Ghost Tracker';
+$lang['UAM_GT_Init'] = 'Initialisation du Ghost Tracker';
+$lang['UAM_GhostTracker_Title'] = 'Gestion des visiteurs fantômes';
+$lang['UAM_GhostTracker_Init'] = 'A première activation de cette fonction, ou à sa réactivation après une longue période pendant laquelle de nouveaux visiteurs se sont inscrits, il convient d\'initialiser ou de réinitialiser le Ghost Tracker. Cette action n\'est à faire qu\'une seule fois après activation ou réactivation de l\'option; à cet effet, cliquez <u>une seule fois</u> sur le bouton d\'initialisation ci-dessous.</b>';
+/* UserList Tab */
+$lang['UAM_SubTitle5'] = 'Informations sur les utilisateurs';
+/* Mailing */
+$lang['UAM_Add of %s'] = 'Profil créé pour %s';
+$lang['UAM_Update of %s'] = 'Mise à jour du profil de %s';
+/* Mailing */
+$lang['UAM_Ghost_reminder_of_%s'] = '%s, ceci est un email de rappel.';
+$lang['UAM_Reminder_with_key_of_%s'] = '%s, votre clef de validation a expiré';
+$lang['UAM_Reminder_without_key_of_%s'] = '%s, votre clef de validation va expirer';
+/* Errors and Warnings */
+$lang['UAM_Err_GhostTracker_Settings'] = 'Cette page n\'est accessible que si "Gestion des visiteurs fantômes" est actif dans "Paramétrage des suivis des inscrits et autres options".';
+$lang['UAM_Err_Userlist_Settings'] = 'Cette page n\'est accessible que si le "Suivi des utilisateurs inscrits" est actif dans "Paramétrage des suivis des inscrits et autres options".';
+// --------- End: New or revised $lang ---- from version 2.13.4
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.14.0
+$lang['UAM_AdminConfMail'] = 'Validation d\'inscription pour les admins';
+// --------- End: New or revised $lang ---- from version 2.14.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.0
+$lang['UAM_confirmmail_custom_Txt1'] = 'Texte de la page de confirmation - Confirmation acceptée';
+$lang['UAM_confirmmail_custom_Txt2'] = 'Texte de la page de confirmation - Confirmation rejetée';
+$lang['UAM_LastVisit_Date'] = 'Dernière visite le';
+$lang['UAM_Nb_Days'] = 'Ecart en jours';
+$lang['UAM_Err_UserManager_Settings'] = 'Cette page n\'est accessible que si "Confirmation d\'inscription" est actif et si un groupe de visiteurs non validés est configuré dans le "Paramétrage des confirmations et validations d\'inscriptions".';
+// --------- End: New or revised $lang ---- from version 2.15.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.1
+$lang['UAM_Support_txt'] = 'Le support officiel sur ce plugin se fait exclusivement sur ce fil du forum FR de Piwigo:<br>
+<a href="http://fr.piwigo.org/forum/viewtopic.php?id=12775" onclick="window.open(this.href);return false;">Forum français - http://fr.piwigo.org/forum/viewtopic.php?id=12775</a>
+<br><br>
+Egalement disponible, le bugtracker du projet: <a href="http://piwigo.org/bugs/" onclick="window.open(this.href);return false;">http://piwigo.org/bugs/</a>';
+// --------- End: New or revised $lang ---- from version 2.15.1
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.4
+$lang['UAM_Force_Validation'] = 'Validation manuelle';
+$lang['UAM_Confirm_Mail_true'] = ' Activer - Validation par le visiteur';
+$lang['UAM_Confirm_Mail_local'] = ' Activer - Validation par l\'administrateur (pas d\'envoi de clé de validation)';
+$lang['UAM_RedirToProfile'] = 'Redirection vers la page "Personnalisation"';
+// --------- End: New or revised $lang ---- from version 2.15.4
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.16.0
+$lang['UAM_Expired_Group'] = '<b>Groupe</b> pour les utilisateurs dont l\'inscription aura expirée<br>';
+$lang['UAM_Expired_Status'] = '<b>Statut</b> pour les utilisateurs dont l\'inscription aura expirée<br>';
+$lang['UAM_GTAuto'] = 'Gestion automatique des utilisateurs fantomes';
+$lang['UAM_GTAutoDel'] = 'Suppressions automatiques des comptes';
+$lang['UAM_GTAutoGp'] = 'Changement automatique de groupe / statut';
+$lang['UAM_GTAutoMail'] = 'Email automatique sur changement de groupe / statut';
+$lang['UAM_Deleted_Account_Redirection_Page'] = 'Accès refusé - Compte détruit !';
+$lang['UAM_title_redir_page'] = 'Accès refusé pour cause de compte détruit !';
+$lang['UAM_Error_GTAutoMail_cannot_be_set_without_ConfirmMail'] = 'Erreur de cohérence dans la configuration choisie :
+<br><br>
+"Paramétrage des suivis des inscrits et autres options > Gestion des visiteurs fantômes (Ghost Tracker) > Gestion automatique des utilisateurs fantomes > Email automatique sur changement de groupe / statut" ne peut pas être activé si "Paramétrage des confirmations et validations d\'inscriptions > Confirmation d\'inscription - Validation par le visiteur" n\'est pas activé au préalable.
+<br><br>
+Pour garantir la cohérence, l\'option "Email automatique sur changement de groupe / statut" a été automatiquement repositionnée en "désactivé".
+<br><br>';
+$lang['UAM_Demotion of %s'] = 'Rétrogradation de %s';
+$lang['UAM_AdminValidationMail_Text'] = 'Notification de validation d\'inscription manuelle';
+$lang['UAM_Validation of %s'] = 'Validation de %s';
+// --------- End: New or revised $lang ---- from version 2.16.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.0
+$lang['UAM_CustomPasswRetr'] = 'Personnaliser le contenu du mail sur mot de passe perdu';
+$lang['UAM_USRAuto'] = 'Gestion automatique des visiteurs non validés';
+$lang['UAM_USRAutoDel'] = 'Message à la suppressions automatiques des comptes';
+$lang['UAM_USRAutoMail'] = 'Message de rappel automatique';
+$lang['UAM_Disable'] = ' Désactiver (valeur par défaut)';
+$lang['UAM_Enable'] = ' Activer ';
+$lang['UAM_Tips1'] = 'Information de non validation d\'inscription avec UAM et PWG_Stuffs';
+$lang['UAM_Tips1_txt'] = '
+          <ul>
+            <li>
+            Objectifs : Informer le visiteur que son inscription est en attente de validation en affichant un bloc personnel sur la page d\'accueil de la galerie; et ce, tant que l\'inscription n\'est pas validée.<br><br>
+            <b>Rappel: En fonctionnement standard, le "Guest" ne voit que les catégories publiques, sans message d\'information.</b>
+            </li><br><br>
+            <li>
+Pré-requis:<br>
+- Une galerie avec tout ou partie des catégories privées, visibles par les seuls utilisateurs inscrits<br>
+- Au moins les 2 groupes d\'utilisateurs Piwigo suivants : "Attente", sans aucune permission sur les catégories privées, et "Validés", avec toutes les permissions sur les catégories privées<br>
+- Le plugin UAM<br>
+- Le plugin PWG Stuffs, pour l\'ajout d\'un module spécial UAM<br>
+- En option, le plugin Extended Description, pour le support multi-langues<br>
+            </li><br><br>
+            <li>
+Réalisation:<br><br>
+A. Dans le plugin UAM:<br>
+              <ol>
+                <li>Activer la confirmation d\'inscription</li>
+                <li>Activer l\'option "Module PWG Stuffs"</li>
+                <li>Saisir un "texte d\'accueil personnalisé" qui sera joint au mail de confirmation d\'inscription. Si le plugin Extended Description est activé, les balises de langues peuvent être utilisées</li>
+                <li>Sélectionner le groupe "Attente" à la rubrique "Pour les utilisateurs n\'ayant pas validé leur inscription"</li>
+                <li>Sélectionner le groupe "Validés" à la rubrique "Pour les utilisateurs ayant validé leur inscription"</li>
+                <li>Enregistrer la configuration du plugin</li>
+              </ol>
+<br>
+B. Dans le plugin PWG Stuffs:<br>
+              <ol>
+                <li>Aller dans l\'onglet "Ajouter un nouveau bloc"</li>
+                <li> Sélectionner "Module UAM"</li>
+                <li>Configurer le module, en indiquant son titre (ex : "Inscription en attente de validation") et sa description, et cocher uniquement "Attente" dans la liste des groupes autorisés</li>
+                <li>Compléter le contenu du module avec le texte du message d\'information qui sera affiché aux utilisateurs non validés. Comme dans UAM, les balises de langues peuvent être utilisées si le plugin Extended Description est activé</li>
+                <li>Cocher "Afficher le module sur la page d\'accueil du site"</li>
+                <li>Valider la configuration du module</li>
+              </ol>
+            </li>
+          </ul>';
+$lang['UAM_Tips2'] = 'Information de non validation d\'inscription avec UAM et Additional Pages';
+$lang['UAM_Tips2_txt'] = '
+          <ul>
+            <li>
+            Objectifs : Informer le visiteur que son inscription est en attente de validation en affichant une page additionnelle remplaçant la page d\'index standard de la galerie à chacune de ces connexions; et ce, tant que l\'inscription n\'est pas validée.
+            <br><br>
+            Avantages par rapport à la méthode avec PWG_Stuffs : Permettre une information mise en forme et moins austère et afficher immédiatement l\'information dès l\'inscription des visiteurs.
+            </li><br><br>
+            <li>
+Pré-requis:<br>
+- Une galerie avec tout ou partie des catégories privées, visibles par les seuls utilisateurs inscrits<br>
+- Au moins les 2 groupes d\'utilisateurs Piwigo suivants : "Attente", sans aucune permission sur les catégories privées, et "Validés", avec toutes les permissions sur les catégories privées<br>
+- Le plugin UAM<br>
+- Le plugin Additional Pages, pour l\'ajout et la gestion d\'une page additionnelle remplaçant la page d\'index par défaut de la galerie<br>
+- En option, le plugin Extended Description, pour le support multi-langues<br>
+            </li><br><br>
+            <li>
+Réalisation:<br><br>
+A. Dans le plugin UAM:<br>
+              <ol>
+                <li>Activer la confirmation d\'inscription</li>
+                <li>Saisir un "texte d\'accueil personnalisé" qui sera joint au mail de confirmation d\'inscription. Si le plugin Extended Description est activé, les balises de langues peuvent être utilisées</li>
+                <li>Sélectionner le groupe "Attente" à la rubrique "Pour les utilisateurs n\'ayant pas validé leur inscription"</li>
+                <li>Sélectionner le groupe "Validés" à la rubrique "Pour les utilisateurs ayant validé leur inscription"</li>
+                <li>Enregistrer la configuration du plugin</li>
+              </ol>
+<br>
+B. Dans le plugin Additional Pages:<br>
+                <b>NOTE : La gestion des droits d\'accès aux pages additionelles pour les groupes doit être activée (voir configuration du plugin Additional Pages).</b>
+                <br>
+              <ol>
+                <li>Ajouter une nouvelle page avec au minimum les paramètres suivants :</li>
+                <ul>
+                  <li>Nom de la page : Le nom que vous souhaiter donner à la page additionnelle (ex : Inscription non validée)</li>
+                  <li>Définir comme page d\'accueil coché</li>
+                  <li>Groupes autorisés : Cocher la case correspondante au groupe "Attente" configuré dans UAM</li>
+                  <li>Contenu : Le texte que vous souhaitez faire apparaitre aux visiteurs.</li>
+                </ul>
+                <br>
+                <li>Et c\'est tout ! Seuls les visiteurs inscrits et dont l\'inscription n\'a pas été validée verront cette page d\'index additionnelle.</li>
+              </ol>
+            </li>
+          </ul>';
+$lang['UAM_No_Ghosts'] = 'Pas de visiteurs fantômes pour l\'instant';
+$lang['UAM_No_Userlist'] = 'Pas de suivi de visiteurs pour l\'instant';
+$lang['UAM_No_Usermanager'] = 'Pas de validations d\'inscription pour l\'instant';
+$lang['UAM_Stuffs_Title'] = 'Module UAM';
+$lang['UAM_Stuffs_Desc'] = 'Ajoute un module d\'information des utilisateurs non validés';
+$lang['UAM_Stuffs'] = 'Module PWG Stuffs';
+// --------- End: New or revised $lang ---- from version 2.20.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.3
+$lang['UAM_DumpTxt'] = 'Sauvegarde de votre configuration';
+$lang['UAM_Dump_Download'] = 'Pour télécharger le fichier de sauvegarde, cochez cette case:';
+$lang['UAM_Save'] = 'Exécuter la sauvegarde';
+$lang['UAM_Dump_OK'] = 'Fichier de sauvegarde créé avec succès';
+$lang['UAM_Dump_NOK'] = 'Erreur : Impossible de créer le fichier de sauvegarde !';
+// --------- End: New or revised $lang ---- from version 2.20.3
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.4
+$lang['UAM_HidePassw'] = 'Mot de passe en clair dans le mail d\'information';
+// --------- End: New or revised $lang ---- from version 2.20.4
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.11
+$lang['UAM_Error_Using_illegal_flag'] = 'Erreur de syntaxe ! Le drapeau d\'insertion automatique [Kdays] est utilisé alors que l\'option "Limitation du délai de validation d\'inscription" n\'a pas été activée. Veuillez activer l\'option ou corriger le(s) champ(s) marqué(s) en rouge.';
+// --------- End: New or revised $lang ---- from version 2.20.11
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/language/fr_FR/help/plugin.lang.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/language/fr_FR/help/plugin.lang.php	(revision 11321)
+++ /extensions/UserAdvManager/tags/2.20.11/language/fr_FR/help/plugin.lang.php	(revision 11321)
@@ -0,0 +1,324 @@
+<?php
+global $lang;
+
+$lang['UAM_restricTitle'] = 'Restriction des inscriptions';
+$lang['UAM_confirmTitle'] = 'Confirmation et validation des inscriptions';
+$lang['UAM_confirmTitle_d'] = '
+- Génération d\'email d\'information<br>
+- Génération d\'email de confirmation d\'inscription<br>
+- Affectation automatique de groupe ou statut<br>
+- Limitation du délai de validation<br>
+- Génération d\'email de rappel<br>
+...
+';
+$lang['UAM_miscTitle'] = 'Suivi des inscrits et fonctions diverses';
+$lang['UAM_carexcTitle'] = 'Noms d\'utilisateurs : Exclusion de certains caractères';
+$lang['UAM_carexcTitle_d'] = 'Il peut être intéressant d\'interdire certains caractères dans les noms d\'utilisateurs (exemple : refuser les logins contenant un &quot;@&quot;). Cette option permet d\'exclure les caractères, ou suite de caractères, indésirables.<br>NB: l\'option permet également d\'exclure des mots complets.
+<br><br>
+<b style=&quot;color: red;&quot;>Attention : Cette option est sans effet sur les noms d\'utilisateurs créés préalablement à son activation.</b>';
+$lang['UAM_passwTitle'] = 'Renforcement de la sécurité des mots de passe';
+$lang['UAM_passwTitle_d'] = 'L\'activation de cette option rend obligatoire la saisie d\'un mot de passe  à l\'inscription, et oblige le mot de passe choisi par le visiteur à répondre à un niveau minimum de complexité. Si ce seuil n\'est pas atteint, le score réalisé et le score minimum à atteindre sont affichés, ainsi que des recommandations pour augmenter la valeur de ce score.<br><br>
+Un champ de test permet de mesurer la complexité d\'un mot de passe, et peut permettre de se faire une idée du score à définir pour une complexité personnalisée.<br><br>
+NB: Le score d\'un mot de passe est calculé en fonction de plusieurs paramètres : longueur, types de caractères utilisés (lettres, chiffres, majuscules, minuscules, caractères spéciaux). Un score inférieur à 100 est considéré comme faible; de 100 à 500, la complexité est dans la moyenne; au-delà de 500, la sécurité est excellente.';
+$lang['UAM_passwtestTitle'] = 'Tester la complexité d\'un mot de passe';
+$lang['UAM_passwtestTitle_d'] = 'Saisir le mot de passe à tester puis cliquer sur le bouton &quot;Calcul du score&quot; pour afficher le résultat.';
+$lang['UAM_passwadmTitle'] = 'Renforcement des mots de passe pour les admins';
+$lang['UAM_passwadmTitle_d'] = 'Un administrateur peut créer un compte d\'utilisateur avec ou sans application de la règle de calcul de complexité.<br><br>
+A noter : Si l\'utilisateur du compte ainsi créé désire changer de mot de passe et que le renforcement des mots de passe pour les utilisateurs est actif, il sera soumis à la règle configurée.';
+$lang['UAM_mailexcTitle'] = 'Exclusion des domaines de messagerie';
+$lang['UAM_infomailTitle'] = 'Email d\'information';
+$lang['UAM_infomailTitle_d'] = 'Cette option permet d\'automatiser l\'envoi d\'un email d\'information à un utilisateur lorsqu\'il s\'inscrit ou modifie son mot de passe ou son adresse de messagerie dans son profil.<br><br>
+Le message envoyé comprend une partie fixe (login, mot de passe et adresse email de l\'utilisateur) et une partie personnalisable par un texte d\'accueil.';
+$lang['UAM_infotxtTitle'] = 'Personnalisation de l\'email d\'information';
+$lang['UAM_confirmtxtTitle'] = 'Personnalisation de l\'email de confirmation';
+$lang['UAM_confirmgrpTitle'] = 'Groupes de validation';
+$lang['UAM_confirmgrpTitle_d'] = '<b style=&quot;color: red;&quot;>ATTENTION : L\'utilisation des groupes de validation nécessite que vous ayez créé au moins un groupe d\'utilisateurs et qu\'il soit défini &quot;par défaut&quot; dans la gestion des groupes d\'utilisateurs de Piwigo.</b><br><br>
+Les groupes de validation sont à utiliser conjointement avec l\'option &quot;Confirmation d\'inscription&quot;';
+$lang['UAM_confirmstatTitle'] = 'Statuts de validation';
+$lang['UAM_confirmstatTitle_d'] = '<b style=&quot;color: red;&quot;>ATTENTION : L\'utilisation des statuts de validation nécessite que vous ayez conservé l\'utilisateur &quot;Guest&quot; pour le paramétrage par défaut (modèle) pour les nouveaux inscrits. A noter : Vous pouvez définir n\'importe quel autre utilisateur comme modèle pour les nouveaux inscrits. Reportez-vous à la documentation de Piwigo pour plus de détails.</b><br><br>
+Les statuts de validation sont à utiliser conjointement avec l\'option &quot;Confirmation d\'inscription&quot;';
+$lang['UAM_validationlimitTitle'] = 'Limitation du délai de validation d\'inscription';
+$lang['UAM_remailTitle'] = 'Mail de rappel aux inscrits non validés';
+$lang['UAM_remailtxt1Title'] = 'Message de rappel avec regénération de clé';
+$lang['UAM_remailtxt2Title'] = 'Message de rappel sans regénération de clé';
+$lang['UAM_ghosttrackerTitle'] = 'Gestion des visiteurs fantômes (aussi appelée Ghost Tracker)';
+$lang['UAM_gttextTitle'] = 'Message de rappel Ghost Tracker';
+$lang['UAM_lastvisitTitle'] = 'Suivi des utilisateurs inscrits';
+$lang['UAM_lastvisitTitle_d'] = 'Cette option active, dans l\'onglet &quot;Suivi des utilisateurs&quot;, un tableau recensant les utilisateurs inscrits, la date de leur dernière visite et le nombre de jours écoulés depuis leur dernière visite. Il s\'agit d\'un suivi purement informatif pour l\'administrateur de la galerie.';
+$lang['UAM_tipsTitle'] = 'Astuces et exemples';
+$lang['UAM_tipsTitle_d'] = 'Astuces et exemples divers d\'utilisation';
+$lang['UAM_userlistTitle'] = 'Suivi des utilisateurs inscrits';
+$lang['UAM_usermanTitle'] = 'Suivi des validations';
+$lang['UAM_gtTitle'] = 'Gestion des visiteurs fantômes';
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.14.0
+$lang['UAM_adminconfmailTitle'] = 'Validation d\'inscription pour les admins';
+$lang['UAM_adminconfmailTitle_d'] = 'On peut ici désactiver la validation des inscriptions uniquement pour les comptes d\'utilisateurs créés par l\'administrateur via l\'interface de gestion des utilisateurs de Piwigo.<br><br>
+En activant cette option, l\'email de validation d\'inscription sera envoyé à chaque utilisateur créé par l\'admin.<br><br>
+En désactivant cette option (mode par défaut), seul l\'email d\'information est envoyé (si la fonction &quot;Email d\'information &agrave; l\'utilisateur&quot; est activée).';
+// --------- End: New or revised $lang ---- from version 2.14.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.0
+$lang['UAM_confirmmail_custom1'] = 'Texte de la page de confirmation - Confirmation acceptée';
+$lang['UAM_confirmmail_custom2'] = 'Texte de la page de confirmation - Confirmation rejetée';
+// --------- End: New or revised $lang ---- from version 2.15.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.4
+$lang['UAM_restricTitle_d'] = '
+- Exclusion de caractères dans les noms d\'utilisateurs<br>
+- Renforcement des mots de passe<br>
+- Exclusion des domaines de messagerie<br>
+...
+';
+$lang['UAM_userlistTitle_d'] = 'Cette page est à titre d\'information pour l\'administrateur. Elle affiche la liste de tous les utilisateurs inscrits sur la galerie en faisant apparaitre la date et le nombre de jours depuis leur dernière visite. La liste est triée dans l\'ordre croissant du nombre de jours.
+<br><br>
+<b><u>Uniquement lorsque le Ghost Tracker est actif</u></b>, le nombre de jours sans visite s\'affiche selon le code couleur suivant, en fonction du délai maximum paramétré dans les options du Ghost Tracker :
+<br>
+- <b style=&quot;color: lime;&quot;>En vert</b> : Lorsque l\'utilisateur a visité la galerie <b style=&quot;color: lime;&quot;><u>depuis moins de 50%</u></b> du délai maximum renseigné dans le Ghost Tracker.<br>
+- <b style=&quot;color: orange;&quot;>En orange</b> : Lorsque l\'utilisateur a visité la galerie <b style=&quot;color: orange;&quot;><u>entre 50% et 99%</u></b> du délai maximum renseigné dans le Ghost Tracker.<br>
+- <b style=&quot;color: red;&quot;>En rouge</b> : Lorsque l\'utilisateur a visité la galerie <b style=&quot;color: red;&quot;><u>depuis 100% et plus</u></b> du délai maximum renseigné dans le Ghost Tracker. <b><u>Dans ce cas, l\'utilisateur doit également apparaitre dans le tableau du Ghost Tracker.</u></b><br>
+<br>
+Exemple:
+<br>
+Le délai maximum du Ghost Tracker est configuré à 100 jours.
+<br>
+Un utilisateur apparaitra en vert s\'il a visité la galerie depuis moins de 50 jours, en orange si sa dernière visite s\'est déroulée entre 50 et 99 jours et en rouge à 100 jours et au-delà.
+<br><br>
+<b>A NOTER</b>: La liste n\'affiche pas les inscrits qui n\'auraient pas validé leur inscription (si l\'option de validation de l\'inscription est activée). Ces utilisateurs sont alors gérés de manière particulière dans l\'onglet &quot;Suivi des validations&quot;.
+<br><br>
+<b>Fonction de tri du tableau</b>: Vous pouvez trier les données affichées en cliquant sur les entêtes de colonnes. L\'utilisation de la touche MAJ ou SHIFT permet de trier sur 1 à 4 colonnes simultanées maximum.';
+$lang['UAM_usermanTitle_d'] = 'Lorsque la limitation du délai d\'inscription est activée, vous trouverez ci-dessous la liste des utilisateurs en attente de validation d\'inscription <b style=&quot;text-decoration: underline;&quot;>qu\'ils soient ou pas</b> dans les délais pour la valider.<br><br>La date d\'enregistrement s\'affiche en vert lorsque l\'utilisateur concerné est en dessous du temps limite pour valider son inscription. Dans ce cas, la clé de validation est toujours valide et on pourra envoyer un email avec ou sans régénération de clé.<br><br>Lorsque la date d\'enregistrement s\'affiche en rouge, le délai de validation est expiré. Dans ce cas, on enverra obligatoirement un email avec régénération de clé si on veut permettre à cet utilisateur de pouvoir valider son inscription.<br><br>Dans tous les cas, il est possible de forcer manuellement la validation.<br><br>Dans cette vue, vous pouvez :
+<br><br>
+- Supprimer manuellement les comptes <b>(purge manuelle)</b>
+<br>
+- Générer l\'email de rappel <b>sans génération</b> d\'une nouvelle clef. Rappel : Cette fonction ne réinitialise pas la date d\'inscription du visiteur ciblé et le délai d\'expiration est toujours d\'actualité.
+<br>
+- Générer l\'email de rappel <b>avec génération</b> d\'une nouvelle clef. Rappel : Cette fonction réinitialise également la date d\'inscription du visiteur ciblé ce qui équivaut à prolonger le délai de validation.
+<br>
+- Valider manuellement une inscription en attente de validation même si la date d\'expiration est révolue <b>(forçage de la validation)</b>.
+<br><br>
+<b>Fonction de tri du tableau</b>: Vous pouvez trier les données affichées en cliquant sur les entêtes de colonnes. L\'utilisation de la touche MAJ ou SHIFT permet de trier sur 1 à 4 colonnes simultanées maximum.';
+$lang['UAM_gtTitle_d'] = 'Lorsque la gestion des visiteurs fantômes est activée et initialisée, vous trouverez ci-dessous la liste des visiteurs inscrits sur votre galerie et qui ne sont pas revenus depuis x jours. &quot;x&quot; étant le nombre de jours paramétrés dans l\'onglet de configuration générale. De plus, vous trouverez une colonne précisant si un mail de rappel a déjà été envoyé aux visiteurs ciblés, vous permettant de visualiser d\'un coup d\'oeil et traiter les visiteurs qui n\'auraient pas tenu compte du rappel.<br><br>Dans cette vue, vous pouvez :
+<br><br>
+- Supprimer manuellement les comptes <b>(purge manuelle)</b>
+<br>
+- Générer l\'email de rappel <b>avec réinitialisation de la date de dernière visite</b>. Ce qui permet de donner un &quot;joker&quot; au visiteur ciblé. Si le visiteur a déjà bénéficié d\'un mail de rappel, rien n\'empêche de renvoyer un nouveau mail qui réinitialisera, de fait, la date de dernière visite.
+<br><br>
+<b>Fonction de tri du tableau</b>: Vous pouvez trier les données affichées en cliquant sur les entêtes de colonnes. L\'utilisation de la touche MAJ ou SHIFT permet de trier sur 1 à 4 colonnes simultanées maximum.';
+$lang['UAM_confirmmailTitle'] = 'Confirmation d\'inscription';
+$lang['UAM_confirmmailTitle_d'] = 'Cette option permet soit à un utilisateur de valider son inscription en cliquant sur un lien reçu dans un email envoyé dès son enregistrement sur la galerie, soit à l\'administrateur d\'activer manuellement les inscriptions.<br><br>
+Dans le premier cas, le message envoyé comprend une partie fixe, avec le lien d\'activation généré à partir d\'une clef aléatoire (cette clé peut éventuellement être régénérée via l\'onglet &quot;Suivi des validations&quot;), et une partie personnalisable par un texte d\'accueil.
+<br><br>
+Dans le second cas, <b><u>il n\'y a pas d\'envoi de clé de validation par email</u></b>. Les visiteurs doivent patienter que l\'administrateur valide lui même leur inscription via l\'onglet &quot;Suivi des validations&quot;. Il est conseillé d\'activer la notification des administrateurs lors des inscriptions (voir la configuration des options de Piwigo) et d\'utiliser la fonction &quot;Email d\'information à l\'utilisateur&quot; pour avertir les nouveaux inscrits de la nécessité de patienter avant activation de leur compte.
+<br>
+<b style=&quot;color: red;&quot;>NB: Les options &quot;Limitation du délai de validation d\'inscription&quot; et &quot;Mail de rappel aux inscrits non validés&quot; doivent être désactivées lorsque la validation manuelle est active.</b>
+<br><br>
+Cette option est généralement utilisée avec  l\'attribution automatique de groupe et/ou de statut. Selon qu\'il a validé ou non son inscription, il est en effet possible d\'affecter à l\'utilisateur un groupe différent, avec plus ou moins de restrictions d\'accès à la galerie.';
+$lang['UAM_RedirTitle'] = 'Redirection vers la page &quot;Personnalisation&quot;';
+$lang['UAM_RedirTitle_d'] = 'Cette option permet de rediriger automatiquement un utilisateur inscrit vers sa page de personnalisation uniquement lors de sa première connexion à la galerie.<br><br>
+A savoir: Cette fonction s\'applique également à tous les utilisateurs déjà inscrits, y compris ceux disposant du status &quot;admin&quot;, &quot;webmaster&quot; ou &quot;generique&quot;.';
+// --------- End: New or revised $lang ---- from version 2.15.4
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.15.6
+$lang['UAM_RedirTitle_d'] = 'Cette option permet de rediriger automatiquement un utilisateur inscrit vers sa page de personnalisation uniquement lors de sa première connexion à la galerie.<br><br>
+A savoir: Cette fonction ne s\'applique pas à tous les utilisateurs déjà inscrits. Ceux disposant du status &quot;admin&quot;, &quot;webmaster&quot; ou &quot;generique&quot; sont exclus de la règle.';
+// --------- End: New or revised $lang ---- from version 2.15.6
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.16.0
+$lang['UAM_ghosttrackerTitle_d'] = 'L\'activation de cette fonction permet la gestion des visiteurs inscrits en fonction de la fréquence de leurs visites. 2 modes de fonctionnements sont possibles:<br><br>
+- Gestion manuelle : Lorsque le délai entre 2 visites successives est atteint, le visiteur apparaît dans le tableau de l\'onglet &quot;Ghost Tracker&quot; d\'où il est possible de le relancer manuellement par email ou le supprimer.<br><br>
+- Gestion automatisée : Lorsque le délai entre 2 visites successives est atteint, le visiteur est automatiquement soit supprimé, soit basculé dans un groupe et/ou statut d\'attente. Dans ce deuxième cas, un email d\'information peut lui être envoyé.<br><br><br>
+<b style=&quot;color: red;&quot;>IMPORTANT : A première activation de cette fonction, ou à sa réactivation après une longue période pendant laquelle de nouveaux visiteurs se sont inscrits, il convient d\'initialiser le Ghost Tracker (voir les instructions correspondantes sur l\'onglet &quot;Ghost Tracker&quot;).</b>';
+$lang['UAM_miscTitle_d'] = '
+- Gestion automatique ou manuelle des visiteurs fantômes<br>
+- Suivi des visiteurs inscrits<br>
+- Pseudo obligatoire sur commentaire pour les visiteurs<br>
+...
+';
+$lang['UAM_mailexcTitle_d'] = 'Par défaut, Piwigo accepte toutes les adresses de messagerie au format xxx@yyy.zz. L\'activation de cette option permet d\'exclure certains domaines selon le format : @[nom_du_domaine].[extension_du_domaine].<br><br>
+Exemples :<br>
+@hotmail.com -> exclusion des adresses *@hotmail.com<br>
+@hotmail -> exclusion de toutes les adresses *@hotmail*';
+$lang['UAM_GTAutoTitle'] = 'Gestion automatique des utilisateurs fantomes';
+$lang['UAM_GTAutoTitle_d'] = 'Cette option permet d\'appliquer des règles de gestion automatisée des visiteurs fantômes.
+<br><br>Principe de base : Un utilisateur ayant atteind la limite maximale entre deux visites <b><u>et</u></b> ayant déjà été notifié par email est considéré comme expiré. On peut alors appliquer des règles de traitement automatisées telles que la suppression automatique des comptes expirés ou leur rétrogradation en restreignant l\'accès à la galerie (bascule automatique dans un groupe et/ou un statut à accès restreint).
+<br><br>Le déclenchement de ces automatismes se réalise lors de la connexion des utilisateurs (n\'importe quel utilisateur !)à la galerie.';
+$lang['UAM_GTAutoDelTitle'] = 'Message personnalisé de suppression de compte';
+$lang['UAM_GTAutoGpTitle'] = 'Changement automatique de groupe / statut';
+$lang['UAM_GTAutoGpTitle_d'] = 'Le changement automatique de groupe ou de statut équivaut à une rétrogradation des comptes concernés et fonctionne sur le même principe que le groupe ou le statut de validation (voir &quot;Paramétrage des confirmations et validations d\'inscriptions&quot;). Il conviendra donc de définir un groupe et/ou un statut rétrogradant l\'accès à la galerie. Si cela a déjà été défini avec l\'utilisation de la fonction Confirmation d\'inscription, on peut utiliser ces mêmes groupe / statut.<br><br>
+<b style=&quot;color: red;&quot;>Point important :</b> Si un utilisateur fantôme n\'a toujours pas donné signe de vie après le délai imparti et malgré la notification automatique par mail (si activée), il est automatiquement supprimé de la base de données.';
+$lang['UAM_GTAutoMailTitle'] = 'Email automatique sur changement de groupe / statut';
+$lang['UAM_AdminValidationMail'] = 'Notification de validation d\'inscription manuelle';
+// --------- End: New or revised $lang ---- from version 2.16.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.0
+$lang['UAM_CustomPasswRetrTitle'] = 'Personnaliser le contenu du mail sur mot de passe perdu';
+$lang['UAM_validationlimitTitle_d'] = 'Cette option permet de limiter le nombre de jours pendant lequel un nouvel utilisateur peut valider son inscription. Une fois ce délai expiré, le lien de validation sera invalide, et ne pourra plus être employé.
+<br><br>
+Cette option n\'est utilisable qu\'une fois l\'option &quot;Confirmation d\'inscription&quot; activée.
+<br><br>
+Si cette option et l\'option &quot;Mail de rappel aux inscrits non validés&quot; sont activées, de nouvelles options apparaitront plus bas dans cette section pour permettre l\'automatisation de la gestion des visiteurs non validés.';
+$lang['UAM_remailTitle_d'] = 'Cette option permet d\'envoyer un email de rappel aux utilisateurs n\'ayant pas validé leur inscription dans les temps. Elle n\'a d\'effet qu\'une fois l\'option &quot;Confirmation d\'inscription&quot; activée.
+<br><br>
+2 types d\'email peuvent être envoyés : Avec ou sans régénération de la clef de validation. En fonction du cas, le contenu  des emails peut être personnalisé.
+<br><br>
+Reportez-vous à l\'onglet &quot;Suivi des validations&quot;.
+<br><br>
+Si cette option et l\'option &quot;Limitation du délai de validation d\'inscription&quot; sont activées, de nouvelles options apparaitront plus bas dans cette section pour permettre l\'automatisation de la gestion des visiteurs non validés.';
+$lang['UAM_USRAutoTitle'] = 'Gestion automatique des visiteurs non validés';
+$lang['UAM_USRAutoTitle_d'] = 'La gestion automatique des visiteurs non validés est déclenchée à chaque connexion à la galerie et fonctionne ainsi :
+<br><br>
+- Suppression automatique des comptes non validés dans le temps imparti sans envoi automatique de mail de relance -> &quot;Limitation du délai de validation d\'inscription&quot; <b><u>est actif</u></b> et &quot;Mail de rappel aux inscrits non validés&quot; <b><u>est inactif</u></b>.
+<br><br>
+- Envoi automatique d\'un message de rappel avec génération d\'une nouvelle clé de validation puis suppression automatique des comptes non validés dans le temps imparti après l\'envoi de la relance -> &quot;Limitation du délai de validation d\'inscription&quot; <b><u>est actif</u></b> et &quot;Mail de rappel aux inscrits non validés&quot; <b><u>est actif</u></b>.';
+$lang['UAM_USRAutoDelTitle'] = 'Message à la suppressions automatiques des comptes';
+$lang['UAM_USRAutoMailTitle'] = 'Message de rappel automatique';
+$lang['UAM_USRAutoMailTitle_d'] = 'Lorsque activée, cette fonction enverra automatiquement le contenu personnalisé dans &quot;Message de rappel avec regénération de clé&quot; aux visiteurs répondant au critère.';
+$lang['UAM_StuffsTitle'] = 'Module PWG Stuffs';
+$lang['UAM_StuffsTitle_d'] = 'Ceci permet d\'activer un module supplémentaire UAM dans le plugin PWG Stuffs (si installé) afin d\'informer sur leur état vos visiteurs n\'ayant pas validé leur inscription.
+<br><br>
+Veuillez vous reporter à la section <b>Astuces et exemples d\'utilisation</b> en bas de cette page pour les détails.';
+// --------- End: New or revised $lang ---- from version 2.20.0
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.3
+$lang['UAM_DumpTitle'] = 'Sauvegarde de votre configuration';
+$lang['UAM_DumpTitle_d'] = 'Ceci vous permet de sauvegarder la configuration complète du plugin dans un fichier afin de pouvoir la restaurer en cas de problème (fausse manipulation ou avant une mise à jour, par exemple). Par défaut, le fichier est stocké dans le dossier ../plugins/UserAdvManager/include/backup/ et se nomme &quot;UAM_dbbackup.sql&quot;.
+<br><br>
+<b style=&quot;color: red;&quot;>Attention : Le fichier est écrasé à chaque action de sauvegarde !</b>
+<br><br>
+Il peut être parfois utile de récupérer le fichier de sauvegarde sur votre ordinateur. Par exemple : Pour une restauration sur une autre base de données, pour externaliser la sauvegarder ou pour conserver plusieurs fichiers. Pour cela, il suffit de cocher la case correspondante au téléchargement du fichier.
+<br><br>
+La restauration à partir de cette interface n\'est pas prise en charge. Utilisez des outils comme PhpMyAdmin.';
+// --------- End: New or revised $lang ---- from version 2.20.3
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.4
+$lang['UAM_HidePasswTitle'] = 'Mot de passe en clair dans le mail d\'information';
+$lang['UAM_HidePasswTitle_d'] = 'Choisissez ici si vous souhaitez faire afficher le mot de passe choisi par le visiteur dans le mail d\'information. Si vous activez l\'option, le mot de passe apparaitra alors en clair. Si vous la désactivez, le mot de passe n\'apparaitra pas du tout.';
+// --------- End: New or revised $lang ---- from version 2.20.4
+
+
+// --------- Starting below: New or revised $lang ---- from version 2.20.11
+$lang['UAM_gttextTitle_d'] = 'Saisissez ici le texte qui apparaîtra dans l\'email de rappel pour inciter l\'utilisateur à revenir visiter votre galerie (NB: Le texte pré-renseigné à l\'installation du plugin est donné à titre d\'exemple).
+<br><br>
+Personnalisez encore plus le contenu avec les balises d\'insertion spéciales :<br>
+- <b style=&quot;color: red;&quot;>[username]</b> pour insérer automatiquement le nom de l\'utilisateur destinataire de l\'email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> pour insérer le titre de votre galerie.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> pour insérer l\'URL de votre galerie si renseigné dans les options de configuration de Piwigo.<br>
+- <b style=&quot;color: red;&quot;>[days]</b> pour insérer automatiquement le nombre de jour maximum entre deux visites.
+<br><br>
+Pour une utilisation multi-langues, vous pouvez utiliser les balises [lang] du plugin Extended Description si celui-ci est actif.';
+$lang['UAM_confirmtxtTitle_d'] = 'Saisissez ici le texte d\'introduction qui apparaîtra dans l\'email de confirmation d\'inscription.
+<br><br>
+Personnalisez encore plus le contenu avec les balises d\'insertion spéciales :<br>
+- <b style=&quot;color: red;&quot;>[username]</b> pour insérer automatiquement le nom de l\'utilisateur destinataire de l\'email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> pour insérer le titre de votre galerie.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> pour insérer l\'URL de votre galerie si renseigné dans les options de configuration de Piwigo.<br>
+- <b style=&quot;color: red;&quot;>[Kdays]</b> pour insérer le nombre de jour de validité de la clé d\'inscription (l\'option &quot;Limitation du délai de validation d\'inscription&quot; doit être activée).
+<br><br>
+Pour une utilisation multi-langues, vous pouvez utiliser les balises [lang] du plugin Extended Description si celui-ci est actif.';
+$lang['UAM_remailtxt1Title_d'] = 'Saisissez ici le texte d\'introduction qui apparaîtra dans l\'email de rappel, accompagné d\'une nouvelle clef de validation.
+<br><br>
+Il est vivement conseillé de saisir un texte explicatif; à défaut, le mail de rappel ne comportera que le lien de validation. (NB : Le texte pré-renseigné à l\'installation du plugin n\'est donné qu\'à titre d\'exemple).
+<br><br>
+Personnalisez encore plus le contenu avec les balises d\'insertion spéciales :<br>
+- <b style=&quot;color: red;&quot;>[username]</b> pour insérer automatiquement le nom de l\'utilisateur destinataire de l\'email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> pour insérer le titre de votre galerie.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> pour insérer l\'URL de votre galerie si renseigné dans les options de configuration de Piwigo.<br>
+- <b style=&quot;color: red;&quot;>[Kdays]</b> pour insérer le nombre de jour de validité de la clé d\'inscription (l\'option &quot;Limitation du délai de validation d\'inscription&quot; doit être activée).
+<br><br>
+Pour une utilisation multi-langues, vous pouvez utiliser les balises [lang] du plugin Extended Description si celui-ci est actif.';
+$lang['UAM_remailtxt2Title_d'] = 'Saisissez ici le texte d\'introduction qui apparaîtra dans l\'email de rappel, sans nouvelle clef de validation.
+<br><br>
+Il est vivement conseillé de saisir un texte explicatif, afin que l\'email ne soit pas vide. (NB : Le texte pré-renseigné à l\'installation du plugin n\'est donné qu\'à titre d\'exemple).
+<br><br>
+Personnalisez encore plus le contenu avec les balises d\'insertion spéciales :<br>
+- <b style=&quot;color: red;&quot;>[username]</b> pour insérer automatiquement le nom de l\'utilisateur destinataire de l\'email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> pour insérer le titre de votre galerie.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> pour insérer l\'URL de votre galerie si renseigné dans les options de configuration de Piwigo.<br>
+- <b style=&quot;color: red;&quot;>[Kdays]</b> pour insérer le nombre de jour de validité de la clé d\'inscription (l\'option &quot;Limitation du délai de validation d\'inscription&quot; doit être activée).
+<br><br>
+Pour une utilisation multi-langues, vous pouvez utiliser les balises [lang] du plugin Extended Description si celui-ci est actif.';
+$lang['UAM_infotxtTitle_d'] = 'Saisissez ici le texte d\'introduction personnalisé qui apparaîtra dans l\'email d\'information.
+<br><br>
+Personnalisez encore plus le contenu avec les balises d\'insertion spéciales :<br>
+- <b style=&quot;color: red;&quot;>[username]</b> pour insérer automatiquement le nom de l\'utilisateur destinataire de l\'email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> pour insérer le titre de votre galerie.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> pour insérer l\'URL de votre galerie si renseigné dans les options de configuration de Piwigo.
+<br><br>
+Pour une utilisation multi-langues, vous pouvez utiliser les balises [lang] du plugin Extended Description si celui-ci est actif.';
+$lang['UAM_AdminValidationMail_d'] = 'Lorsqu\'un administrateur ou un webmestre de la galerie valide manuellement une inscription en attente, un email de notification est automatiquement envoyé à l\'utilisateur concerné. Saisissez ici le texte qui apparaîtra dans cet email.
+<br><br>
+Personnalisez encore plus le contenu avec les balises d\'insertion spéciales :<br>
+- <b style=&quot;color: red;&quot;>[username]</b> pour insérer automatiquement le nom de l\'utilisateur destinataire de l\'email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> pour insérer le titre de votre galerie.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> pour insérer l\'URL de votre galerie si renseigné dans les options de configuration de Piwigo.
+<br><br>
+Pour une utilisation multi-langues, vous pouvez utiliser les balises [lang] du plugin Extended Description si celui-ci est actif.';
+$lang['UAM_confirmmail_custom1_d'] = 'Lorsque l\'option &quot;Confirmation d\'inscription&quot; est active, ce champ permet de personnaliser <b><u>le texte d\'acceptation</u></b> de la confirmation d\'inscription sur la page affichée lorsqu\'un utilisateur clique sur le lien de confirmation qu\'il a reçu par email.
+<br><br>
+A l\'installation du plugin, un texte standard est donnée en exemple.
+<br><br>
+Personnalisez encore plus le contenu avec les balises d\'insertion spéciales :<br>
+- <b style=&quot;color: red;&quot;>[username]</b> pour insérer automatiquement le nom de l\'utilisateur.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> pour insérer le titre de votre galerie.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> pour insérer l\'URL de votre galerie si renseigné dans les options de configuration de Piwigo.
+<br><br>
+Ce champ est compatible avec l\'extension FCK Editor et, pour une utilisation multi-langues, vous pouvez utiliser les balises [lang] du plugin Extended Description si celui-ci est actif.';
+$lang['UAM_confirmmail_custom2_d'] = 'Lorsque l\'option &quot;Confirmation d\'inscription&quot; est active, ce champ permet de personnaliser <b><u>le texte de rejet</u></b> de la confirmation d\'inscription sur la page affichée lorsqu\'un utilisateur clique sur le lien de confirmation qu\'il a reçu par email.
+<br><br>
+A l\'installation du plugin, un texte standard est donnée en exemple.
+<br><br>
+Personnalisez encore plus le contenu avec les balises d\'insertion spéciales :<br>
+- <b style=&quot;color: red;&quot;>[username]</b> pour insérer automatiquement le nom de l\'utilisateur.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> pour insérer le titre de votre galerie.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> pour insérer l\'URL de votre galerie si renseigné dans les options de configuration de Piwigo.
+<br><br>
+Ce champ est compatible avec l\'extension FCK Editor et, pour une utilisation multi-langues, vous pouvez utiliser les balises [lang] du plugin Extended Description si celui-ci est actif.';
+$lang['UAM_GTAutoDelTitle_d'] = 'Ceci n\'est valable que lorsque l\'utilisateur dont le compte a expiré déclenche lui même le mécanisme de suppression (cas rare mais possible). Il est alors déconnecté de force de la galerie et redirigé vers une page indiquant la suppression de son compte et, éventuellement, les raisons de cette suppression.
+<br><br>
+Personnalisez encore plus le contenu avec les balises d\'insertion spéciales :<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> pour insérer le titre de votre galerie.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> pour insérer l\'URL de votre galerie si renseigné dans les options de configuration de Piwigo.<br>
+<b style=&quot;color: red;&quot;>[username]</b> n\'est pas disponible ici puisque l\'utilisateur en question a été supprimé.
+<br><br>
+Un texte personnalisé pour cette page de redirection peut être saisi dans le champ ci-dessous qui est compatible avec l\'extension FCK Editor. Pour une utilisation multi-langues, vous pouvez utiliser les balises [lang] du plugin Extended Description si celui-ci est actif.';
+$lang['UAM_GTAutoMailTitle_d'] = 'Lorsqu\'un compte est expiré (changement de groupe / statut rétrogradant le visiteur), un email d\'information peut être envoyé pour préciser les raisons de ce changement et le moyen de recouvrer l\'accès initial à la galerie.
+<br>Pour ce faire, un lien de revalidation de l\'inscription est joint à l\'email (génération automatique d\'une nouvelle clé de validation).<b style=&quot;color: red;&quot;>Si l\'utilisateur a déjà été notifié, son compte est automatiquement détruit.</b> 
+<br><br>
+Saisissez aussi le texte personnalisé qui expliquera les raisons de la rétrogradation et qui accompagnera le lien de validation. Le texte personnalisé n\'est pas obligatoire mais vivement conseillé. En effet, vos visiteurs inscrits n\'apprécieront que moyennement de recevoir un email ne contenant qu\'un simple lien sans plus d\'explications. ;-)
+<br><br>
+Personnalisez encore plus le contenu avec les balises d\'insertion spéciales :<br>
+- <b style=&quot;color: red;&quot;>[username]</b> pour insérer automatiquement le nom de l\'utilisateur destinataire de l\'email.<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> pour insérer le titre de votre galerie.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> pour insérer l\'URL de votre galerie si renseigné dans les options de configuration de Piwigo.
+<br><br>
+Pour une utilisation multi-langues, vous pouvez utiliser les balises [lang] du plugin Extended Description si celui-ci est actif.
+<br><br>
+<b style=&quot;color: red;&quot;>Attention : L\'emploi de cette fonction est intimement lié à l\'option de confirmation d\'inscription par l\'utilisateur (confirmation par mail) et ne peut pas être activée sans cette option.</b>';
+$lang['UAM_CustomPasswRetrTitle_d'] = 'Par défaut, lorsqu\'un utilisateur a perdu son mot de passe et qu\'il sélectionne l\'option de récupération, il reçoit un email ne contenant que son nom d\'utilisateur et son nouveau mot de passe.
+<br><br>
+Vous pouvez ici ajouter un texte de votre choix qui sera inséré <b><u>avant</u></b> ces informations standards.
+<br><br>
+Personnalisez encore plus le contenu avec les balises d\'insertion spéciales :<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> pour insérer le titre de votre galerie.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> pour insérer l\'URL de votre galerie si renseigné dans les options de configuration de Piwigo.
+<br><br>
+Pour une utilisation multi-langues, vous pouvez utiliser les balises [lang] du plugin Extended Description si celui-ci est actif.';
+$lang['UAM_USRAutoDelTitle_d'] = 'Ceci n\'est valable que lorsque l\'utilisateur dont le compte est à supprimer déclenche lui même le mécanisme de suppression (cas rare mais possible). Il est alors déconnecté de force de la galerie et redirigé vers une page indiquant la suppression de son compte et, éventuellement, les raisons de cette suppression.
+<br><br>
+Un texte pour cette page de redirection est donné à titre d\'exemple, ci-dessous, et peut être personnalisé. Ce champ est compatible avec le plugin FCK Editor. Pour une utilisation multi-langues, vous pouvez utiliser les balises [lang] du plugin Extended Description si celui-ci est actif.
+<br><br>
+Personnalisez encore plus le contenu avec les balises d\'insertion spéciales :<br>
+- <b style=&quot;color: red;&quot;>[mygallery]</b> pour insérer le titre de votre galerie.<br>
+- <b style=&quot;color: red;&quot;>[myurl]</b> pour insérer l\'URL de votre galerie si renseigné dans les options de configuration de Piwigo.<br>
+La balise <b style=&quot;color: red;&quot;>[username]</b> n\'est pas disponible ici puisque l\'utilisateur en question a été supprimé.';
+// --------- End: New or revised $lang ---- from version 2.20.11
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/language/fr_FR/help/index.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/language/fr_FR/help/index.php	(revision 4927)
+++ /extensions/UserAdvManager/tags/2.20.11/language/fr_FR/help/index.php	(revision 4927)
@@ -0,0 +1,33 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | PhpWebGallery - a PHP based picture gallery                           |
+// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
+// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
+// +-----------------------------------------------------------------------+
+// | file          : $Id: index.php 1912 2007-03-16 06:30:07Z rub $
+// | last update   : $Date: 2007-03-16 07:30:07 +0100 (ven, 16 mar 2007) $
+// | last modifier : $Author: rub $
+// | revision      : $Revision: 1912 $
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/language/fr_FR/index.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/language/fr_FR/index.php	(revision 3742)
+++ /extensions/UserAdvManager/tags/2.20.11/language/fr_FR/index.php	(revision 3742)
@@ -0,0 +1,33 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | PhpWebGallery - a PHP based picture gallery                           |
+// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
+// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
+// +-----------------------------------------------------------------------+
+// | file          : $Id: index.php 1912 2007-03-16 06:30:07Z rub $
+// | last update   : $Date: 2007-03-16 07:30:07 +0100 (ven, 16 mar 2007) $
+// | last modifier : $Author: rub $
+// | revision      : $Revision: 1912 $
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/ConfirmMail.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/ConfirmMail.php	(revision 9254)
+++ /extensions/UserAdvManager/tags/2.20.11/ConfirmMail.php	(revision 9254)
@@ -0,0 +1,141 @@
+<?php
+//----------------------------------------------------------- include
+define('PHPWG_ROOT_PATH','./../../');
+
+include_once( PHPWG_ROOT_PATH.'include/common.inc.php' );
+include_once( PHPWG_ROOT_PATH.'include/functions_mail.inc.php' );
+
+include_once (UAM_PATH.'include/constants.php');
+include_once (UAM_PATH.'include/functions.inc.php');
+
+$title= l10n('UAM_confirm_mail_page_title');
+$page['body_id'] = 'theAboutPage';
+include(PHPWG_ROOT_PATH.'include/page_header.php');
+
+@include(PHPWG_ROOT_PATH.'template/'.$user['template'].
+  '/theme/'.$user['theme'].'/themeconf.inc.php');
+
+
+if (isset($_GET['key']) and isset($_GET['userid']))
+{
+
+  global $user, $lang, $conf, $errors;
+  
+  $key = $_GET['key'];
+  $userid = $_GET['userid'];
+  $redirect = false;
+  
+  $conf_UAM_ConfirmMail = unserialize($conf['UserAdvManager_ConfirmMail']);
+  $conf_UAM = unserialize($conf['UserAdvManager']);
+
+  $query = '
+SELECT '.USERS_TABLE.'.username
+FROM '.USERS_TABLE.'
+WHERE ('.USERS_TABLE.'.id ='.$userid.')
+;';
+  $result = pwg_db_fetch_assoc(pwg_query($query));
+
+  if (VerifyConfirmMail($key))
+  {
+    $status = true;
+    
+    log_user($userid, false);
+
+/* We have to get the user's language in database */
+    $query = '
+SELECT '.USER_INFOS_TABLE.'.language
+FROM '.USER_INFOS_TABLE.','.USER_CONFIRM_MAIL_TABLE.'
+WHERE (('.USER_INFOS_TABLE.'.user_id ='.$userid.') AND ('.USER_INFOS_TABLE.'.user_id = '.USER_CONFIRM_MAIL_TABLE.'.user_id))
+;';
+    $data = pwg_db_fetch_assoc(pwg_query($query));
+
+/* Check if user is already registered (profile changing) - If not (new registration), language is set to current gallery language */
+    if (empty($data))
+    {
+/* And switch gallery to this language before using personalized and multilangual contents */
+      $language = pwg_get_session_var('lang_switch', $user['language']);
+      switch_lang_to($language);
+    }
+    else
+    {
+/* And switch gallery to this language before using personalized and multilangual contents */
+      switch_lang_to($data['language']);
+      load_language('plugin.lang', UAM_PATH);
+    }
+
+    if (isset($conf_UAM_ConfirmMail[5]) and $conf_UAM_ConfirmMail[5] <> '')
+    {
+      // Management of Extension flags ([username], [mygallery], [myurl])
+      $patterns[] = '#\[username\]#i';
+      $replacements[] = $result['username'];
+      $patterns[] = '#\[mygallery\]#i';
+      $replacements[] = $conf['gallery_title'];
+      $patterns[] = '#\[myurl\]#i';
+      $replacements[] = $conf['gallery_url'];
+   
+      if (function_exists('get_user_language_desc'))
+      {
+        $custom_text = get_user_language_desc(preg_replace($patterns, $replacements, $conf_UAM_ConfirmMail[5]));
+      }
+      else $custom_text = l10n(preg_replace($patterns, $replacements, $conf_UAM_ConfirmMail[5]));
+    }
+    
+    $redirect = true;
+    
+    $template->assign(
+			array(
+        'REDIRECT'             => $redirect,
+        'STATUS'               => $status,
+				'CONFIRM_MAIL_MESSAGE' => $custom_text,
+			)
+		);
+  }  
+  else
+  {
+    $status = false;
+    $redirect = false;
+    
+    if (isset($conf_UAM_ConfirmMail[6]) and $conf_UAM_ConfirmMail[6] <> '')
+    {
+      // Management of Extension flags ([username], [mygallery], [myurl])
+      $patterns[] = '#\[username\]#i';
+      $replacements[] = $result['username'];
+      $patterns[] = '#\[mygallery\]#i';
+      $replacements[] = $conf['gallery_title'];
+      $patterns[] = '#\[myurl\]#i';
+      $replacements[] = $conf['gallery_url'];
+   
+      if (function_exists('get_user_language_desc'))
+      {
+        $custom_text = get_user_language_desc(preg_replace($patterns, $replacements, $conf_UAM_ConfirmMail[6]));
+      }
+      else $custom_text = l10n(preg_replace($patterns, $replacements, $conf_UAM_ConfirmMail[6]));
+    }
+    
+    $template->assign(
+			array(
+        'REDIRECT'             => $redirect,
+        'GALLERY_URL'          => make_index_url(),
+        'STATUS'               => $status,
+				'CONFIRM_MAIL_MESSAGE' => $custom_text,
+			)
+		);
+  }
+}
+
+if (isset($lang['Theme: '.$user['theme']]))
+{
+  $template->assign(
+  	'THEME_ABOUT',l10n('Theme: '.$user['theme'])
+  );
+}
+
+$template->set_filenames(
+  array(
+  	'confirm_mail'=>dirname(__FILE__).'/template/ConfirmMail.tpl',
+	)
+);
+
+$template->pparse('confirm_mail');
+include(PHPWG_ROOT_PATH.'include/page_tail.php');
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/obsolete.list
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/obsolete.list	(revision 9290)
+++ /extensions/UserAdvManager/tags/2.20.11/obsolete.list	(revision 9290)
@@ -0,0 +1,1 @@
+del_account.php
Index: /extensions/UserAdvManager/tags/2.20.11/admin/UAM_admin.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/admin/UAM_admin.php	(revision 11319)
+++ /extensions/UserAdvManager/tags/2.20.11/admin/UAM_admin.php	(revision 11319)
@@ -0,0 +1,1534 @@
+<?php
+
+global $user, $lang, $conf, $errors;
+
+if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+check_status(ACCESS_ADMINISTRATOR);
+
+if (!defined('UAM_PATH')) define('UAM_PATH' , PHPWG_PLUGINS_PATH.basename(dirname(__FILE__)).'/');
+
+//ini_set('error_reporting', E_ALL);
+//ini_set('display_errors', true);
+
+include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
+include_once (PHPWG_ROOT_PATH.'/include/constants.php');
+
+load_language('plugin.lang', UAM_PATH);
+load_language('help/plugin.lang', UAM_PATH);
+
+
+// +-----------------------------------------------------------------------+
+// |                   Variables initialization                            |
+// +-----------------------------------------------------------------------+
+$my_base_url = get_admin_plugin_menu_link(__FILE__);
+
+$page['global'] = array();
+$error = array();
+$pattern = '/;/';
+$replacement = '.';
+
+$UAM_Password_Test_Score = 0;
+$UAM_Exclusionlist_Error = false;
+$UAM_Illegal_Flag_Error1 = false;
+$UAM_Illegal_Flag_Error2 = false;
+$UAM_Illegal_Flag_Error3 = false;
+
+$dump_download = '';
+
+// +-----------------------------------------------------------------------+
+// |                            Tabssheet                                  |
+// +-----------------------------------------------------------------------+
+if (!isset($_GET['tab']))
+	$page['tab'] = 'global';
+else
+  $page['tab'] = $_GET['tab'];
+
+$tabsheet = new tabsheet();
+$tabsheet->add('global',
+               l10n('UAM_Tab_Global'),
+               $my_base_url.'&amp;tab=global');
+  $tabsheet->add('userlist',
+                 l10n('UAM_Tab_UserList'),
+                 $my_base_url.'&amp;tab=userlist');
+$tabsheet->add('usermanager',
+               l10n('UAM_Tab_UserManager'),
+               $my_base_url.'&amp;tab=usermanager');
+$tabsheet->add('ghosttracker',
+               l10n('UAM_Tab_GhostTracker'),
+               $my_base_url.'&amp;tab=ghosttracker');
+$tabsheet->select($page['tab']);
+$tabsheet->assign();
+
+
+// +-----------------------------------------------------------------------+
+// |                      Getting plugin version                           |
+// +-----------------------------------------------------------------------+
+$plugin =  PluginInfos(UAM_PATH);
+$version = $plugin['version'];
+
+
+// +----------------------------------------------------------+
+// |            FCK Editor for email text fields              |
+// +----------------------------------------------------------+
+$toolbar = 'Basic';
+$width = '750px';
+$height = '300px';
+$areas = array();
+array_push( $areas,'UAM_ConfirmMail_Custom_Txt1','UAM_ConfirmMail_Custom_Txt2','UAM_GTAutoDelText','UAM_USRAutoDelText');
+
+if (function_exists('set_fckeditor_instance'))
+{
+  $fcke_config = unserialize($conf['FCKEditor']);
+  foreach($areas as $area)
+  {
+    if (!isset($fcke_config[$area]))
+    {
+      $fcke_config[$area] = false;
+    }
+  }
+  $conf['FCKEditor'] = serialize($fcke_config);
+
+  set_fckeditor_instance($areas, $toolbar, $width, $height);
+}
+
+
+// +-----------------------------------------------------------------------+
+// |                            Tabssheet select                           |
+// +-----------------------------------------------------------------------+
+
+switch ($page['tab'])
+{
+// *************************************************************************
+// +-----------------------------------------------------------------------+
+// |                           Global Config                               |
+// +-----------------------------------------------------------------------+
+// *************************************************************************
+  case 'global':
+
+	if (isset($_POST['submit']) and isset($_POST['UAM_Mail_Info']) and isset($_POST['UAM_Username_Char']) and isset($_POST['UAM_Confirm_Mail']) and isset($_POST['UAM_Password_Enforced']) and isset($_POST['UAM_AdminPassword_Enforced']) and isset($_POST['UAM_GhostUser_Tracker']) and isset($_POST['UAM_Admin_ConfMail']) and isset($_POST['UAM_RedirToProfile']) and isset($_POST['UAM_GTAuto']) and isset($_POST['UAM_GTAutoMail']) and isset($_POST['UAM_CustomPasswRetr']) and isset($_POST['UAM_USRAuto']) and isset($_POST['UAM_USRAutoMail']) and isset($_POST['UAM_Stuffs']) and isset($_POST['UAM_HidePassw']))
+  {
+
+    //General configuration settings
+		$_POST['UAM_MailInfo_Text'] = str_replace('\"', '"', str_replace("\'", "'", str_replace("\\\\", "\\", $_POST['UAM_MailInfo_Text'])));
+
+		$_POST['UAM_ConfirmMail_Text'] = str_replace('\"', '"', str_replace("\'", "'", str_replace("\\\\", "\\", $_POST['UAM_ConfirmMail_Text'])));
+
+    $_POST['UAM_GhostTracker_ReminderText'] = str_replace('\"', '"', str_replace("\'", "'", str_replace("\\\\", "\\", $_POST['UAM_GhostTracker_ReminderText'])));
+    
+    $_POST['UAM_GTAutoDelText'] = str_replace('\"', '"', str_replace("\'", "'", str_replace("\\\\", "\\", $_POST['UAM_GTAutoDelText'])));
+
+    $_POST['UAM_GTAutoMailText'] = str_replace('\"', '"', str_replace("\'", "'", str_replace("\\\\", "\\", $_POST['UAM_GTAutoMailText'])));
+
+    $_POST['UAM_AdminValidationMail_Text'] = str_replace('\"', '"', str_replace("\'", "'", str_replace("\\\\", "\\", $_POST['UAM_AdminValidationMail_Text'])));
+
+    $_POST['UAM_CustomPasswRetr_Text'] = str_replace('\"', '"', str_replace("\'", "'", str_replace("\\\\", "\\", $_POST['UAM_CustomPasswRetr_Text'])));
+
+    $_POST['UAM_USRAutoDelText'] = str_replace('\"', '"', str_replace("\'", "'", str_replace("\\\\", "\\", $_POST['UAM_GTAutoDelText'])));
+
+    // Check if CR-LF exist at begining and end of mail exclusion list - If yes, removes them
+    if (preg_match('/^[\s]+/', $_POST['UAM_MailExclusion_List']))
+    {
+      array_push($page['errors'], l10n('UAM_mail_exclusionlist_error'));
+      $UAM_Exclusionlist_Error = true;
+    }
+
+    // Consistency check between ConfirmMail and AutoMail - We cannot use GTAutoMail if ConfirmMail is disabled
+    $conf_UAM = unserialize($conf['UserAdvManager']);
+    $conf_UAM_ConfirmMail = unserialize($conf['UserAdvManager_ConfirmMail']);
+    
+    if (((isset($conf_UAM['1']) and ($conf_UAM['1'] == 'false' or $conf_UAM['1'] == 'local')) or ($_POST['UAM_Confirm_Mail'] == 'false' or $_POST['UAM_Confirm_Mail'] == 'local')) and $_POST['UAM_GTAutoMail'] == 'true')
+    {
+      $newvalue = 'false';
+      $_POST['UAM_GTAutoMail'] = $newvalue;
+      array_push($page['errors'], l10n('UAM_Error_GTAutoMail_cannot_be_set_without_ConfirmMail'));
+    }
+
+    // Check if [Kdays] flag is used in a legal way (ConfirmMail Time out have to be set)
+    if (isset($conf_UAM_ConfirmMail[0]) and $conf_UAM_ConfirmMail[0] == 'false' and preg_match('#\[Kdays\]#i',$_POST['UAM_ConfirmMail_Text']) != 0)
+    {
+      $UAM_Illegal_Flag_Error1 = true;
+      array_push($page['errors'], l10n('UAM_Error_Using_illegal_Kdays'));
+    }
+
+		$newconf_UAM = array(
+      $_POST['UAM_Mail_Info'],
+      $_POST['UAM_Confirm_Mail'],
+      (isset($_POST['UAM_No_Confirm_Group'])?$_POST['UAM_No_Confirm_Group']:''),
+      (isset($_POST['UAM_Validated_Group'])?$_POST['UAM_Validated_Group']:''),
+      (isset($_POST['UAM_Validated_Status'])?$_POST['UAM_Validated_Status']:''),
+      $_POST['UAM_Username_Char'],
+      $_POST['UAM_Username_List'],
+      (isset($_POST['UAM_No_Confirm_Status'])?$_POST['UAM_No_Confirm_Status']:''),
+      $_POST['UAM_MailInfo_Text'],
+      $_POST['UAM_ConfirmMail_Text'],
+      $_POST['UAM_MailExclusion'],
+      $_POST['UAM_MailExclusion_List'],
+      $_POST['UAM_Password_Enforced'],
+      $_POST['UAM_Password_Score'],
+      $_POST['UAM_AdminPassword_Enforced'],
+      $_POST['UAM_GhostUser_Tracker'],
+      $_POST['UAM_GhostTracker_DayLimit'],
+      $_POST['UAM_GhostTracker_ReminderText'],
+      $_POST['UAM_Add_LastVisit_Column'],
+      $_POST['UAM_Admin_ConfMail'],
+      $_POST['UAM_RedirToProfile'],
+      $_POST['UAM_GTAuto'],
+      $_POST['UAM_GTAutoMail'],
+      $_POST['UAM_GTAutoDelText'],
+      $_POST['UAM_GTAutoMailText'],
+      (isset($_POST['UAM_Downgrade_Group'])?$_POST['UAM_Downgrade_Group']:''),
+      (isset($_POST['UAM_Downgrade_Status'])?$_POST['UAM_Downgrade_Status']:''),
+      $_POST['UAM_AdminValidationMail_Text'],
+      $_POST['UAM_CustomPasswRetr'],
+      $_POST['UAM_CustomPasswRetr_Text'],
+      $_POST['UAM_USRAuto'],
+      $_POST['UAM_USRAutoDelText'],
+      $_POST['UAM_USRAutoMail'],
+      $_POST['UAM_Stuffs'],
+      $_POST['UAM_HidePassw'],
+      );
+
+    $conf['UserAdvManager'] = serialize($newconf_UAM);
+
+    conf_update_param('UserAdvManager', pwg_db_real_escape_string($conf['UserAdvManager']));
+
+    //Email confirmation settings
+    $_POST['UAM_ConfirmMail_ReMail_Txt1'] = str_replace('\"', '"', str_replace("\'", "'", str_replace("\\\\", "\\", $_POST['UAM_ConfirmMail_ReMail_Txt1'])));
+
+    $_POST['UAM_ConfirmMail_ReMail_Txt2'] = str_replace('\"', '"', str_replace("\'", "'", str_replace("\\\\", "\\", $_POST['UAM_ConfirmMail_ReMail_Txt2'])));
+    
+    $_POST['UAM_ConfirmMail_Custom_Txt1'] = str_replace('\"', '"', str_replace("\'", "'", str_replace("\\\\", "\\", $_POST['UAM_ConfirmMail_Custom_Txt1'])));
+    
+    $_POST['UAM_ConfirmMail_Custom_Txt2'] = str_replace('\"', '"', str_replace("\'", "'", str_replace("\\\\", "\\", $_POST['UAM_ConfirmMail_Custom_Txt2'])));
+
+    // Check if [Kdays] flag is used in a legal way (ConfirmMail Time out have to be set)
+    if (isset($conf_UAM_ConfirmMail[0]) and $conf_UAM_ConfirmMail[0] == 'false' and preg_match('#\[Kdays\]#i',$_POST['UAM_ConfirmMail_ReMail_Txt1']) == 1)
+    {
+      $UAM_Illegal_Flag_Error2 = true;
+      array_push($page['errors'], l10n('UAM_Error_Using_illegal_flag'));
+    }
+    elseif (isset($conf_UAM_ConfirmMail[0]) and $conf_UAM_ConfirmMail[0] == 'false' and preg_match('#\[Kdays\]#i',$_POST['UAM_ConfirmMail_ReMail_Txt2']) == 1)
+    {
+      $UAM_Illegal_Flag_Error3 = true;
+      array_push($page['errors'], l10n('UAM_Error_Using_illegal_flag'));
+    }
+    
+	  $newconf_UAM_ConfirmMail = array (
+      $_POST['UAM_ConfirmMail_TimeOut'],
+      $_POST['UAM_ConfirmMail_Delay'],
+      $_POST['UAM_ConfirmMail_ReMail_Txt1'],
+      $_POST['UAM_ConfirmMail_Remail'],
+      $_POST['UAM_ConfirmMail_ReMail_Txt2'],
+      $_POST['UAM_ConfirmMail_Custom_Txt1'],
+      $_POST['UAM_ConfirmMail_Custom_Txt2']);
+
+    $conf['UserAdvManager_ConfirmMail'] = serialize($newconf_UAM_ConfirmMail);
+
+    conf_update_param('UserAdvManager_ConfirmMail', pwg_db_real_escape_string($conf['UserAdvManager_ConfirmMail']));
+
+		array_push($page['infos'], l10n('UAM_save_config'));
+  }
+
+  // Saving UAM tables and configuration settings
+  if (isset($_POST['save']))
+  {
+    $dump_download = (isset($_POST['dump_download'])) ? 'true' : 'false';
+    
+    if(uam_dump($dump_download) and $dump_download == 'false')
+    {
+      array_push($page['infos'], l10n('UAM_Dump_OK'));
+    }
+    else
+    {
+      array_push($page['errors'], l10n('UAM_Dump_NOK'));
+    }
+  }
+
+  //Testing password enforcement
+  if (isset($_POST['PasswordTest']) and isset($_POST['UAM_Password_Test']) and !empty($_POST['UAM_Password_Test']))
+  {
+    $UAM_Password_Test_Score = testpassword($_POST['UAM_Password_Test']);
+  }
+  else if (isset($_POST['PasswordTest']) and empty($_POST['UAM_Password_Test']))
+  {
+    array_push($page['errors'], l10n('UAM_reg_err_login3'));
+  }
+
+  $conf_UAM = unserialize($conf['UserAdvManager']);
+
+  //Group setting for unvalidated, validated users and downgrade group
+  $groups[-1] = '---------';
+  $No_Valid = -1;
+  $Valid = -1;
+  $Downgrade = -1;
+	
+  //Check groups list in database 
+  $query = '
+SELECT id, name
+FROM '.GROUPS_TABLE.'
+ORDER BY name ASC
+;';
+	
+  $result = pwg_query($query);
+	
+  while ($row = pwg_db_fetch_assoc($result))
+  {
+    $groups[$row['id']] = $row['name'];
+    //configuration value for unvalidated users
+    if (isset($conf_UAM[2]) and $conf_UAM[2] == $row['id'])
+    {
+	  	$No_Valid = $row['id'];
+		}
+    //configuration value for validated users
+    if (isset($conf_UAM[3]) and $conf_UAM[3] == $row['id'])
+		{
+	  	$Valid = $row['id'];
+		}
+    //configuration value for downgrade users
+    if (isset($conf_UAM[25]) and $conf_UAM[25] == $row['id'])
+		{
+	  	$Downgrade = $row['id'];
+		}
+  }
+	
+  //Template initialization for unvalidated users group
+  $template->assign(
+    'No_Confirm_Group',
+   	array(
+	  	'group_options'=> $groups,
+	  	'group_selected' => $No_Valid
+			)
+ 		);
+  //Template initialization for validated users group
+  $template->assign(
+    'Validated_Group',
+		array(
+      'group_options'=> $groups,
+      'group_selected' => $Valid
+			)
+  	);
+  //Template initialization for downgrade group
+  $template->assign(
+    'Downgrade_Group',
+		array(
+      'group_options'=> $groups,
+      'group_selected' => $Downgrade
+			)
+  	);
+	
+  //Status setting for unvalidated, validated users and downgrade status
+  $status_options[-1] = '------------';
+  $No_Valid_Status = -1;
+  $Valid_Status = -1;
+  $Downgrade_Status = -1;
+	
+  //Get unvalidate status values
+  foreach (get_enums(USER_INFOS_TABLE, 'status') as $status)
+  {
+	  $status_options[$status] = l10n('user_status_'.$status);
+	  if (isset($conf_UAM[7]) and $conf_UAM[7] == $status)
+	  {
+	    $No_Valid_Status = $status;
+	  }
+	  
+      //Template initialization for unvalidated users status
+      $template->assign(
+        'No_Confirm_Status',
+        array(
+					'Status_options' => $status_options,
+		  		'Status_selected' => $No_Valid_Status
+					)
+	  		);
+  }
+  
+  //Get validate status values
+  foreach (get_enums(USER_INFOS_TABLE, 'status') as $status)
+  {
+	  $status_options[$status] = l10n('user_status_'.$status);
+	  if (isset($conf_UAM[4]) and $conf_UAM[4] == $status)
+		{
+		  $Valid_Status = $status;
+		}
+		
+      //Template initialization for validated users status
+      $template->assign(
+	    'Confirm_Status',
+	    array(
+		    'Status_options' => $status_options,
+		    'Status_selected' => $Valid_Status
+		    )
+	    );
+	}
+
+  //Get downgrade status values
+  foreach (get_enums(USER_INFOS_TABLE, 'status') as $status)
+  {
+	  $status_options[$status] = l10n('user_status_'.$status);
+	  if (isset($conf_UAM[26]) and $conf_UAM[26] == $status)
+		{
+		  $Downgrade_Status = $status;
+		}
+		
+      //Template initialization for validated users status
+      $template->assign(
+	    'Downgrade_Status',
+	    array(
+		    'Status_options' => $status_options,
+		    'Status_selected' => $Downgrade_Status
+		    )
+	    );
+	}
+
+  //Save last opened paragraph in configuration tab
+  $nb_para=(isset($_POST["nb_para"])) ? $_POST["nb_para"]:"";
+  $nb_para2=(isset($_POST["nb_para2"])) ? $_POST["nb_para2"]:"";
+
+  $conf_UAM_ConfirmMail = unserialize($conf['UserAdvManager_ConfirmMail']);
+
+  // Template initialization for forms and data
+
+  $themeconf=$template->get_template_vars('themeconf');
+  $UAM_theme=$themeconf['id'];
+
+  $template->assign(
+    array(
+    'nb_para'                        => $nb_para,
+    'nb_para2'                       => $nb_para2,
+    'UAM_VERSION'                    => $version,
+    'UAM_PATH'                       => UAM_PATH,
+    'UAM_DUMP_DOWNLOAD'              => $dump_download,
+    'UAM_THEME'                      => $UAM_theme,
+		'UAM_MAIL_INFO_TRUE'             => $conf_UAM[0]=='true' ?  'checked="checked"' : '' ,
+		'UAM_MAIL_INFO_FALSE'            => $conf_UAM[0]=='false' ?  'checked="checked"' : '' ,
+		'UAM_MAILINFO_TEXT'              => $conf_UAM[8],
+		'UAM_USERNAME_CHAR_TRUE'         => $conf_UAM[5]=='true' ?  'checked="checked"' : '' ,
+		'UAM_USERNAME_CHAR_FALSE'        => $conf_UAM[5]=='false' ?  'checked="checked"' : '' ,
+		'UAM_USERNAME_CHAR_LIST'         => $conf_UAM[6],
+		'UAM_CONFIRM_MAIL_TRUE'          => $conf_UAM[1]=='true' ?  'checked="checked"' : '' ,
+		'UAM_CONFIRM_MAIL_FALSE'         => $conf_UAM[1]=='false' ?  'checked="checked"' : '' ,
+    'UAM_CONFIRM_MAIL_LOCAL'         => $conf_UAM[1]=='local' ?  'checked="checked"' : '' ,
+		'UAM_CONFIRMMAIL_TEXT'           => $conf_UAM[9],
+		'UAM_No_Confirm_Group'           => $conf_UAM[2],
+		'UAM_Validated_Group'            => $conf_UAM[3],
+		'UAM_No_Confirm_Status'          => $conf_UAM[7],
+		'UAM_Validated_Status'           => $conf_UAM[4],
+		'UAM_MAILEXCLUSION_TRUE'         => $conf_UAM[10]=='true' ?  'checked="checked"' : '' ,
+		'UAM_MAILEXCLUSION_FALSE'        => $conf_UAM[10]=='false' ?  'checked="checked"' : '' ,
+		'UAM_MAILEXCLUSION_LIST'         => $conf_UAM[11],
+		'UAM_PASSWORDENF_TRUE'           => $conf_UAM[12]=='true' ?  'checked="checked"' : '' ,
+		'UAM_PASSWORDENF_FALSE'          => $conf_UAM[12]=='false' ?  'checked="checked"' : '' ,
+		'UAM_PASSWORD_SCORE'             => $conf_UAM[13],
+    'UAM_ADMINPASSWENF_TRUE'         => $conf_UAM[14]=='true' ?  'checked="checked"' : '' ,
+		'UAM_ADMINPASSWENF_FALSE'        => $conf_UAM[14]=='false' ?  'checked="checked"' : '' ,
+    'UAM_GHOSTRACKER_TRUE'           => $conf_UAM[15]=='true' ?  'checked="checked"' : '' ,
+		'UAM_GHOSTRACKER_FALSE'          => $conf_UAM[15]=='false' ?  'checked="checked"' : '' ,
+    'UAM_GHOSTRACKER_DAYLIMIT'       => $conf_UAM[16],
+    'UAM_GHOSTRACKER_REMINDERTEXT'   => $conf_UAM[17],
+    'UAM_ADDLASTVISIT_TRUE'          => $conf_UAM[18]=='true' ?  'checked="checked"' : '' ,
+    'UAM_ADDLASTVISIT_FALSE'         => $conf_UAM[18]=='false' ?  'checked="checked"' : '' ,
+    'UAM_ADMINCONFMAIL_TRUE'         => $conf_UAM[19]=='true' ?  'checked="checked"' : '' ,
+    'UAM_ADMINCONFMAIL_FALSE'        => $conf_UAM[19]=='false' ?  'checked="checked"' : '' ,
+    'UAM_REDIRTOPROFILE_TRUE'        => $conf_UAM[20]=='true' ?  'checked="checked"' : '' ,
+    'UAM_REDIRTOPROFILE_FALSE'       => $conf_UAM[20]=='false' ?  'checked="checked"' : '' ,
+    'UAM_GTAUTO_TRUE'                => $conf_UAM[21]=='true' ?  'checked="checked"' : '' ,
+    'UAM_GTAUTO_FALSE'               => $conf_UAM[21]=='false' ?  'checked="checked"' : '' ,
+    'UAM_GTAUTOMAIL_TRUE'            => $conf_UAM[22]=='true' ?  'checked="checked"' : '' ,
+    'UAM_GTAUTOMAIL_FALSE'           => $conf_UAM[22]=='false' ?  'checked="checked"' : '' ,
+    'UAM_GTAUTODEL_TEXT'             => $conf_UAM[23],
+    'UAM_GTAUTOMAILTEXT'             => $conf_UAM[24],
+		'UAM_Downgrade_Group'            => $conf_UAM[25],
+		'UAM_Downgrade_Status'           => $conf_UAM[26],
+    'UAM_ADMINVALIDATIONMAIL_TEXT'   => $conf_UAM[27],
+    'UAM_CUSTOMPASSWRETR_TRUE'       => $conf_UAM[28]=='true' ?  'checked="checked"' : '' ,
+    'UAM_CUSTOMPASSWRETR_FALSE'      => $conf_UAM[28]=='false' ?  'checked="checked"' : '' ,
+    'UAM_CUSTOMPASSWRETR_TEXT'       => $conf_UAM[29],
+    'UAM_USRAUTO_TRUE'               => $conf_UAM[30]=='true' ?  'checked="checked"' : '' ,
+    'UAM_USRAUTO_FALSE'              => $conf_UAM[30]=='false' ?  'checked="checked"' : '' ,
+    'UAM_USRAUTODEL_TEXT'            => $conf_UAM[31],
+    'UAM_USRAUTOMAIL_TRUE'           => $conf_UAM[32]=='true' ?  'checked="checked"' : '' ,
+    'UAM_USRAUTOMAIL_FALSE'          => $conf_UAM[32]=='false' ?  'checked="checked"' : '' ,
+    'UAM_STUFFS_TRUE'                => $conf_UAM[33]=='true' ?  'checked="checked"' : '' ,
+    'UAM_STUFFS_FALSE'               => $conf_UAM[33]=='false' ?  'checked="checked"' : '' ,
+    'UAM_HIDEPASSW_TRUE'             => $conf_UAM[34]=='true' ?  'checked="checked"' : '' ,
+    'UAM_HIDEPASSW_FALSE'            => $conf_UAM[34]=='false' ?  'checked="checked"' : '' ,
+		'UAM_PASSWORD_TEST_SCORE'        => $UAM_Password_Test_Score,
+    'UAM_ERROR_REPORTS1'             => $UAM_Exclusionlist_Error,
+    'UAM_ERROR_REPORTS2'             => $UAM_Illegal_Flag_Error1,
+    'UAM_ERROR_REPORTS3'             => $UAM_Illegal_Flag_Error2,
+    'UAM_ERROR_REPORTS4'             => $UAM_Illegal_Flag_Error3,
+		'UAM_CONFIRMMAIL_TIMEOUT_TRUE'	 => $conf_UAM_ConfirmMail[0]=='true' ?  'checked="checked"' : '' ,
+		'UAM_CONFIRMMAIL_TIMEOUT_FALSE'  => $conf_UAM_ConfirmMail[0]=='false' ?  'checked="checked"' : '' ,
+		'UAM_CONFIRMMAIL_DELAY'					 => $conf_UAM_ConfirmMail[1],
+    'UAM_CONFIRMMAIL_REMAIL_TRUE'		 => $conf_UAM_ConfirmMail[3]=='true' ? 'checked="checked"' : '',
+    'UAM_CONFIRMMAIL_REMAIL_FALSE'	 => $conf_UAM_ConfirmMail[3]=='false' ? 'checked="checked"' : '',
+    'UAM_CONFIRMMAIL_REMAIL_TXT1'		 => $conf_UAM_ConfirmMail[2],
+    'UAM_CONFIRMMAIL_REMAIL_TXT2'		 => $conf_UAM_ConfirmMail[4],
+    'UAM_CONFIRMMAIL_CUSTOM_TXT1'		 => $conf_UAM_ConfirmMail[5],
+    'UAM_CONFIRMMAIL_CUSTOM_TXT2'		 => $conf_UAM_ConfirmMail[6],
+    )
+  );
+
+  if (isset($_POST['audit']))
+	{
+		$msg_error1 = '';
+		
+    //Username without forbidden keys
+    if ( isset($conf_UAM[5]) and $conf_UAM[5] == 'true' )
+	  {
+			$query = "
+SELECT ".$conf['user_fields']['username'].", ".$conf['user_fields']['email']."
+  FROM ".USERS_TABLE."
+;";
+			  
+			$result = pwg_query($query);
+			
+			while($row = pwg_db_fetch_assoc($result))
+			{
+				if (!ValidateUsername(stripslashes($row['username'])))
+					$msg_error1 .= (($msg_error1 <> '') ? '<br>' : '') . l10n('UAM_Err_audit_username_char').stripslashes($row['username']);
+			}
+		}
+
+		$msg_error2 = '';
+		
+    //Email without forbidden domain
+    if ( isset($conf_UAM[10]) and $conf_UAM[10] == 'true' )
+	  {
+			$query = "
+SELECT ".$conf['user_fields']['username'].", ".$conf['user_fields']['email']."
+  FROM ".USERS_TABLE."
+;";
+			  
+		  $result = pwg_query($query);
+			
+		  while($row = pwg_db_fetch_assoc($result))
+		  {
+			  $conf_MailExclusion = preg_split("/[\s,]+/",$conf_UAM[11]);
+			  for ($i = 0 ; $i < count($conf_MailExclusion) ; $i++)
+			  {
+					$pattern = '/'.$conf_MailExclusion[$i].'/';
+				  if (preg_match($pattern, $row['mail_address']))
+				  {
+						$msg_error2 .=  (($msg_error2 <> '') ? '<br>' : '') . l10n('UAM_Err_audit_email_forbidden').stripslashes($row['username']).' ('.$row['mail_address'].')';
+					}
+				}
+			}
+		}
+		
+    if ($msg_error1 <> '')
+			$errors[] = $msg_error1.'<br><br>';
+		
+		if ($msg_error2 <> '')
+			$errors[] = $msg_error2.'<br><br>';
+		
+		if ($msg_error1 <> '' or $msg_error2 <> '')
+	  	array_push($page['errors'], l10n('UAM_Err_audit_advise'));
+		else
+    	array_push($page['infos'], l10n('UAM_audit_ok'));
+	}
+
+
+// +-----------------------------------------------------------------------+
+// |                             errors display                            |
+// +-----------------------------------------------------------------------+
+  if (isset ($errors) and count($errors) != 0)
+  {
+	  $template->assign('errors',array());
+	  foreach ($errors as $error)
+	  {
+		  array_push($page['errors'], $error);
+		}
+	}  
+
+// +-----------------------------------------------------------------------+
+// |                           templates display                           |
+// +-----------------------------------------------------------------------+
+  $template->set_filename('plugin_admin_content', dirname(__FILE__) . '/template/global.tpl');
+  $template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');
+
+  break;
+
+
+// *************************************************************************
+// +-----------------------------------------------------------------------+
+// |                           Users list page                             |
+// +-----------------------------------------------------------------------+
+// *************************************************************************
+  case 'userlist':
+  
+  $conf_UAM = unserialize($conf['UserAdvManager']);
+  
+  if (isset($conf_UAM[18]) and $conf_UAM[18]=='true')
+  {
+// +-----------------------------------------------------------------------+
+// |                           initialization                              |
+// +-----------------------------------------------------------------------+
+
+		if (!defined('PHPWG_ROOT_PATH'))
+    {
+    	die('Hacking attempt!');
+    }
+          
+    include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+		check_status(ACCESS_ADMINISTRATOR);
+
+
+// +-----------------------------------------------------------------------+
+// |                               user list                               |
+// +-----------------------------------------------------------------------+
+
+		$page['filtered_users'] = get_user_list();
+
+// +-----------------------------------------------------------------------+
+// |                               user list                               |
+// +-----------------------------------------------------------------------+
+
+    $visible_user_list = array();
+    foreach ($page['filtered_users'] as $num => $local_user)
+    {
+      $visible_user_list[] = $local_user;
+		}
+
+		foreach ($visible_user_list as $local_user)
+    {
+      // dates formating and compare
+      $today = date("d-m-Y"); // Get today's date
+      list($day, $month, $year) = explode('-', $today); // explode date of today						 
+      $daytimestamp = mktime(0, 0, 0, $month, $day, $year);// Generate UNIX timestamp
+	  	
+      list($regdate, $regtime) = explode(' ', $local_user['lastvisit']); // Explode date and time from registration date
+      list($regyear, $regmonth, $regday) = explode('-', $regdate); // Explode date from registration date
+      $regtimestamp = mktime(0, 0, 0, $regmonth, $regday, $regyear);// Generate UNIX timestamp
+			
+      $deltasecs = $daytimestamp - $regtimestamp;// Compare the 2 UNIX timestamps	
+      $deltadays = floor($deltasecs / 86400);// Convert result from seconds to days
+      
+      if (isset($conf_UAM[15]) and $conf_UAM[15]=='true' and $conf_UAM[16] <> '')
+      {
+        if ($deltadays <= ($conf_UAM[16]/2))
+        {
+          $display = 'green';
+        }
+        
+        if (($deltadays > ($conf_UAM[16]/2)) and ($deltadays < $conf_UAM[16]))
+        {
+          $display = 'orange';
+        }
+        
+        if ($deltadays >= $conf_UAM[16])
+        {
+          $display = 'red';
+        }
+      }
+      else $display = '';
+
+   		$template->append(
+     		'users',
+       	array(
+       		'ID'          => $local_user['id'],
+         	'USERNAME'    => stripslashes($local_user['username']),
+					'EMAIL'       => get_email_address_as_display_text($local_user['email']),
+          'LASTVISIT'   => $local_user['lastvisit'],
+          'DAYS'        => $deltadays,
+          'DISPLAY'     => $display,
+				)
+			);
+		}
+    //Plugin version inserted
+    $template->assign(
+      array(
+        'UAM_VERSION'  => $version,
+        'UAM_PATH'     => UAM_PATH,
+      )
+    );    
+// +-----------------------------------------------------------------------+
+// |                             errors display                            |
+// +-----------------------------------------------------------------------+
+		if ( isset ($errors) and count($errors) != 0)
+		{
+	  	$template->assign('errors',array());
+			foreach ($errors as $error)
+	  	{
+				array_push($page['errors'], $error);
+	  	}
+ 		}  
+
+// +-----------------------------------------------------------------------+
+// |                           templates display                           |
+// +-----------------------------------------------------------------------+
+		$template->set_filename('plugin_admin_content', dirname(__FILE__) . '/template/userlist.tpl');
+    $template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');		
+  }
+  else
+  {
+		array_push($page['errors'], l10n('UAM_Err_Userlist_Settings'));
+  }
+  break;
+
+
+// *************************************************************************
+// +-----------------------------------------------------------------------+
+// |                           Users manager page                          |
+// +-----------------------------------------------------------------------+
+// *************************************************************************
+  case 'usermanager':
+
+  $conf_UAM = unserialize($conf['UserAdvManager']);
+
+  $conf_UAM_ConfirmMail = unserialize($conf['UserAdvManager_ConfirmMail']);
+	
+  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[7]) and $conf_UAM[7] <> '-1')))
+  {
+// +-----------------------------------------------------------------------+
+// |                           initialization                              |
+// +-----------------------------------------------------------------------+
+
+		if (!defined('PHPWG_ROOT_PATH'))
+    {
+    	die('Hacking attempt!');
+    }
+
+    include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+		check_status(ACCESS_ADMINISTRATOR);
+
+// +-----------------------------------------------------------------------+
+// |                               user list                               |
+// +-----------------------------------------------------------------------+
+
+		$page['filtered_users'] = get_unvalid_user_list();
+
+// +-----------------------------------------------------------------------+
+// |                            selected users                             |
+// +-----------------------------------------------------------------------+
+		if (isset($_POST['Del_Selected']))
+		{
+  		$collection = array();
+
+			switch ($_POST['target'])
+    	{
+    		case 'all' :
+      	{
+      		foreach($page['filtered_users'] as $local_user)
+        	{
+        		array_push($collection, $local_user['id']);
+        	}
+					break;
+				}
+      	case 'selection' :
+      	{
+      		if (isset($_POST['selection']))
+        	{
+        		$collection = $_POST['selection'];
+        	}
+        	break;
+      	}
+			}
+
+			if (count($collection) == 0)
+    	{
+    		array_push($page['errors'], l10n('Select at least one user'));
+   		}
+		}
+
+// +-----------------------------------------------------------------------+
+// |                             delete users                              |
+// +-----------------------------------------------------------------------+
+		if (isset($_POST['Del_Selected']) and count($collection) > 0)
+  	{
+  		if (in_array($conf['guest_id'], $collection))
+   		{
+    		array_push($page['errors'], l10n('Guest cannot be deleted'));
+    	}
+    	if (($conf['guest_id'] != $conf['default_user_id']) and
+    		in_array($conf['default_user_id'], $collection))
+    	{
+    		array_push($page['errors'], l10n('Default user cannot be deleted'));
+    	}
+    	if (in_array($conf['webmaster_id'], $collection))
+    	{
+    		array_push($page['errors'], l10n('Webmaster cannot be deleted'));
+    	}
+    	if (in_array($user['id'], $collection))
+    	{
+    		array_push($page['errors'], l10n('You cannot delete your account'));
+    	}
+
+			if (count($page['errors']) == 0)
+    	{
+    		foreach ($collection as $user_id)
+      	{
+      		delete_user($user_id);
+      	}
+     		array_push(
+      		$page['infos'],
+        	l10n_dec(
+        	'%d user deleted', '%d users deleted',
+        	count($collection)
+        	)
+      	);
+
+      	foreach ($page['filtered_users'] as $filter_key => $filter_user)
+      	{
+      		if (in_array($filter_user['id'], $collection))
+        	{
+        		unset($page['filtered_users'][$filter_key]);
+        	}
+     		}
+			}
+		}
+
+// +-----------------------------------------------------------------------+
+// |                 Resend new validation key to users                    |
+// +-----------------------------------------------------------------------+
+// +-----------------------------------------------------------------------+
+// |                            selected users                             |
+// +-----------------------------------------------------------------------+
+		if (isset($_POST['Mail_With_Key']))
+		{
+  		$collection = array();
+
+			switch ($_POST['target'])
+    	{
+    		case 'all' :
+      	{
+      		foreach($page['filtered_users'] as $local_user)
+        	{
+        		array_push($collection, $local_user['id']);
+        	}
+        	break;
+				}
+      	case 'selection' :
+      	{
+      		if (isset($_POST['selection']))
+        	{
+        		$collection = $_POST['selection'];
+        	}
+        	break;
+      	}
+			}
+
+    	if (count($collection) == 0)
+    	{
+    		array_push($page['errors'], l10n('Select at least one user'));
+    	}
+		}
+// +-----------------------------------------------------------------------+
+// |                 Resend new validation key to users                    |
+// +-----------------------------------------------------------------------+
+		if (isset($_POST['Mail_With_Key']) and count($collection) > 0)
+		{
+			if (in_array($conf['guest_id'], $collection))
+   		{
+    		array_push($page['errors'], l10n('UAM_No_validation_for_Guest'));
+    	}
+    	if (($conf['guest_id'] != $conf['default_user_id']) and
+    		in_array($conf['default_user_id'], $collection))
+    	{
+    		array_push($page['errors'], l10n('UAM_No_validation_for_default_user'));
+    	}
+   		if (in_array($conf['webmaster_id'], $collection))
+    	{
+    		array_push($page['errors'], l10n('UAM_No_validation_for_Webmaster'));
+    	}
+    	if (in_array($user['id'], $collection))
+    	{
+    		array_push($page['errors'], l10n('UAM_No_validation_for_your_account'));
+    	}
+
+    	if (count($page['errors']) == 0)
+    	{
+    		foreach ($collection as $user_id)
+      	{     	
+      		$typemail = 1;
+				  $query = "
+SELECT id, username, mail_address
+  FROM ".USERS_TABLE."
+WHERE id = '".$user_id."'
+;";
+					$data = pwg_db_fetch_assoc(pwg_query($query));
+				
+      		ResendMail2User($typemail,$user_id,stripslashes($data['username']),$data['mail_address'],true);
+      	}
+      	array_push(
+      		$page['infos'],
+        	l10n_dec(
+        		'UAM_%d_Mail_With_Key', 'UAM_%d_Mails_With_Key',
+        	count($collection)
+        	)
+      	);
+      	
+				$page['filtered_users'] = get_unvalid_user_list();
+			}
+		}
+
+// +-----------------------------------------------------------------------+
+// |             Send reminder without new key to users                    |
+// +-----------------------------------------------------------------------+
+// +-----------------------------------------------------------------------+
+// |                            selected users                             |
+// +-----------------------------------------------------------------------+
+		if (isset($_POST['Mail_Without_Key']))
+		{
+  		$collection = array();
+
+			switch ($_POST['target'])
+    	{
+    		case 'all' :
+      	{
+      		foreach($page['filtered_users'] as $local_user)
+        	{
+        		array_push($collection, $local_user['id']);
+        	}
+        	break;
+				}
+      	case 'selection' :
+      	{
+      		if (isset($_POST['selection']))
+        	{
+        		$collection = $_POST['selection'];
+        	}
+        	break;
+      	}
+			}
+
+    	if (count($collection) == 0)
+    	{
+    		array_push($page['errors'], l10n('Select at least one user'));
+    	}
+		}
+// +-----------------------------------------------------------------------+
+// |             Send reminder without new key to users                    |
+// +-----------------------------------------------------------------------+
+		if (isset($_POST['Mail_Without_Key']) and count($collection) > 0)
+		{
+			if (in_array($conf['guest_id'], $collection))
+   		{
+    		array_push($page['errors'], l10n('UAM_No_validation_for_Guest'));
+    	}
+    	if (($conf['guest_id'] != $conf['default_user_id']) and
+    		in_array($conf['default_user_id'], $collection))
+    	{
+    		array_push($page['errors'], l10n('UAM_No_validation_for_default_user'));
+    	}
+   		if (in_array($conf['webmaster_id'], $collection))
+    	{
+    		array_push($page['errors'], l10n('UAM_No_validation_for_Webmaster'));
+    	}
+    	if (in_array($user['id'], $collection))
+    	{
+    		array_push($page['errors'], l10n('UAM_No_validation_for_your_account'));
+    	}
+
+    	if (count($page['errors']) == 0)
+    	{
+    		foreach ($collection as $user_id)
+      	{
+      		$typemail = 2;
+				  $query = "
+SELECT id, username, mail_address
+  FROM ".USERS_TABLE."
+WHERE id = '".$user_id."'
+;";
+					
+					$data = pwg_db_fetch_assoc(pwg_query($query));
+				
+      		ResendMail2User($typemail,$user_id,stripslashes($data['username']),$data['mail_address'],false);				
+      	}
+      	array_push(
+      		$page['infos'],
+        	l10n_dec(
+        		'UAM_%d_Reminder_Sent', 'UAM_%d_Reminders_Sent',
+       		count($collection)
+        	)
+      	);
+        
+				$page['filtered_users'] = get_unvalid_user_list();
+			}
+		}
+
+// +-----------------------------------------------------------------------+
+// |             								Force validation					                 |
+// +-----------------------------------------------------------------------+
+// +-----------------------------------------------------------------------+
+// |                            selected users                             |
+// +-----------------------------------------------------------------------+
+		if (isset($_POST['Force_Validation']))
+		{
+  		$collection = array();
+
+			switch ($_POST['target'])
+    	{
+    		case 'all' :
+      	{
+      		foreach($page['filtered_users'] as $local_user)
+        	{
+        		array_push($collection, $local_user['id']);
+        	}
+        	break;
+				}
+      	case 'selection' :
+      	{
+      		if (isset($_POST['selection']))
+        	{
+        		$collection = $_POST['selection'];
+        	}
+        	break;
+      	}
+			}
+
+    	if (count($collection) == 0)
+    	{
+    		array_push($page['errors'], l10n('Select at least one user'));
+    	}
+		}
+// +-----------------------------------------------------------------------+
+// |             								Force validation					                 |
+// +-----------------------------------------------------------------------+
+		if (isset($_POST['Force_Validation']) and count($collection) > 0)
+		{
+			if (in_array($conf['guest_id'], $collection))
+   		{
+    		array_push($page['errors'], l10n('UAM_No_validation_for_Guest'));
+    	}
+    	if (($conf['guest_id'] != $conf['default_user_id']) and
+    		in_array($conf['default_user_id'], $collection))
+    	{
+    		array_push($page['errors'], l10n('UAM_No_validation_for_default_user'));
+    	}
+   		if (in_array($conf['webmaster_id'], $collection))
+    	{
+    		array_push($page['errors'], l10n('UAM_No_validation_for_Webmaster'));
+    	}
+    	if (in_array($user['id'], $collection))
+    	{
+    		array_push($page['errors'], l10n('UAM_No_validation_for_your_account'));
+    	}
+
+    	if (count($page['errors']) == 0)
+    	{
+    		foreach ($collection as $user_id)
+      	{
+          ForceValidation($user_id);
+          validation_mail($user_id);
+      	}
+      	array_push(
+      		$page['infos'],
+        	l10n_dec(
+        		'UAM_%d_Validated_User', 'UAM_%d_Validated_Users',
+       		count($collection)
+        	)
+      	);
+
+				$page['filtered_users'] = get_unvalid_user_list();
+			}
+		}
+		
+
+// +-----------------------------------------------------------------------+
+// |                              groups list                              |
+// +-----------------------------------------------------------------------+
+
+		$groups[-1] = '------------';
+
+    $query = '
+SELECT id, name
+  FROM '.GROUPS_TABLE.'
+ORDER BY name ASC
+;';
+
+		$result = pwg_query($query);
+          
+    while ($row = pwg_db_fetch_assoc($result))
+    {
+      $groups[$row['id']] = $row['name'];
+    }
+
+// +-----------------------------------------------------------------------+
+// |                               user list                               |
+// +-----------------------------------------------------------------------+
+
+		$profile_url = get_root_url().'admin.php?page=profile&amp;user_id=';
+		$perm_url = get_root_url().'admin.php?page=user_perm&amp;user_id=';
+
+    $visible_user_list = array();
+    foreach ($page['filtered_users'] as $num => $local_user)
+    {
+      $visible_user_list[] = $local_user;
+		}
+
+		foreach ($visible_user_list as $local_user)
+    {
+      $groups_string = preg_replace(
+      	'/(\d+)/e',
+        "\$groups['$1']",
+        implode(
+        	', ',
+            $local_user['groups']
+         )
+			);
+
+      $query = '
+SELECT user_id, reminder
+FROM '.USER_CONFIRM_MAIL_TABLE.'
+WHERE user_id = '.$local_user['id'].'
+;';
+      $result = pwg_query($query);
+      
+      $row = pwg_db_fetch_assoc($result);
+    
+      if (isset($row['reminder']) and $row['reminder'] == 'true')
+      {
+        $reminder = l10n('UAM_Reminder_Sent_OK');
+      }
+      else if ((isset($row['reminder']) and $row['reminder'] == 'false') or !isset($row['reminder']))
+      {
+        $reminder = l10n('UAM_Reminder_Sent_NOK');
+      }
+
+
+	  	if (isset($_POST['pref_submit'])
+    		and isset($_POST['selection'])
+      	and in_array($local_user['id'], $_POST['selection']))
+	  	{
+				$checked = 'checked="checked"';
+	  	}
+			else
+    	{
+    		$checked = '';
+    	}
+
+    	$properties = array();
+    	if ( $local_user['level'] != 0 )
+			{
+    		$properties[] = l10n( sprintf('Level %d', $local_user['level']) );
+			}
+    	$properties[] =
+    		(isset($local_user['enabled_high']) and ($local_user['enabled_high'] == 'true'))
+      		? l10n('is_high_enabled') : l10n('is_high_disabled');
+
+			$expiration = expiration($local_user['id']);
+      
+   		$template->append(
+     		'users',
+       	array(
+       		'ID'               => $local_user['id'],
+         	'CHECKED'          => $checked,
+         	'U_PROFILE'        => $profile_url.$local_user['id'],
+         	'U_PERM'           => $perm_url.$local_user['id'],
+         	'USERNAME'         => stripslashes($local_user['username'])
+                                  .($local_user['id'] == $conf['guest_id']
+                                  ? '<BR>['.l10n('is_the_guest').']' : '')
+                                  .($local_user['id'] == $conf['default_user_id']
+                                  ? '<BR>['.l10n('is_the_default').']' : ''),
+                                  'STATUS' => l10n('user_status_'
+                                  .$local_user['status']),
+					'EMAIL'            => get_email_address_as_display_text($local_user['email']),
+         	'GROUPS'           => $groups_string,
+         	'REGISTRATION'     => $local_user['registration_date'],
+          'REMINDER'         => $reminder,    
+         	'EXPIRATION'       => $expiration,
+				)
+			);
+		}   
+
+    // Check if validation of register is made by admin or visitor 
+    // If visitor, $Confirm_Local is used to mask useless buttons
+    $Confirm_Local = "";
+    
+    if ($conf_UAM[1] == 'local')
+    {
+      $Confirm_Local = $conf_UAM[1];
+    }
+    else
+    {
+      $Confirm_Local = "";
+    } 
+    
+    //Plugin version inserted
+    $template->assign(
+      array(
+        'CONFIRM_LOCAL'=> $Confirm_Local,
+        'UAM_VERSION'  => $version,
+        'UAM_PATH'     => UAM_PATH,
+      )
+    );
+
+// +-----------------------------------------------------------------------+
+// |                             errors display                            |
+// +-----------------------------------------------------------------------+
+		if ( isset ($errors) and count($errors) != 0)
+		{
+	  	$template->assign('errors',array());
+			foreach ($errors as $error)
+	  	{
+				array_push($page['errors'], $error);
+	  	}
+		}  
+
+// +-----------------------------------------------------------------------+
+// |                           templates display                           |
+// +-----------------------------------------------------------------------+
+		$template->set_filename('plugin_admin_content', dirname(__FILE__) . '/template/usermanager.tpl');
+    $template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');		
+	}
+  else
+  {
+		array_push($page['errors'], l10n('UAM_Err_UserManager_Settings'));
+  }
+  break;
+
+
+// *************************************************************************
+// +-----------------------------------------------------------------------+
+// |                           Ghost Tracker page                          |
+// +-----------------------------------------------------------------------+
+// *************************************************************************
+  case 'ghosttracker':
+
+  $conf_UAM = unserialize($conf['UserAdvManager']);
+	
+  if (isset($conf_UAM[16]) and $conf_UAM[15]=='true')
+  {
+// +-----------------------------------------------------------------------+
+// |                           initialization                              |
+// +-----------------------------------------------------------------------+
+
+		if (!defined('PHPWG_ROOT_PATH'))
+    {
+    	die('Hacking attempt!');
+    }
+          
+    include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+// +-----------------------------------------------------------------------+
+// | Check Access and exit when user status is not ok                      |
+// +-----------------------------------------------------------------------+
+		check_status(ACCESS_ADMINISTRATOR);
+
+// +-----------------------------------------------------------------------+
+// |                               user list                               |
+// +-----------------------------------------------------------------------+
+
+		$page['filtered_users'] = get_ghost_user_list();
+
+// +-----------------------------------------------------------------------+
+// |                            selected users                             |
+// +-----------------------------------------------------------------------+
+		if (isset($_POST['Del_Selected']))
+		{
+  		$collection = array();
+
+			switch ($_POST['target'])
+    	{
+    		case 'all' :
+      	{
+      		foreach($page['filtered_users'] as $local_user)
+        	{
+        		array_push($collection, $local_user['id']);
+        	}
+					break;
+				}
+      	case 'selection' :
+      	{
+      		if (isset($_POST['selection']))
+        	{
+        		$collection = $_POST['selection'];
+        	}
+        	break;
+      	}
+			}
+
+			if (count($collection) == 0)
+    	{
+    		array_push($page['errors'], l10n('Select at least one user'));
+   		}
+		}
+
+// +-----------------------------------------------------------------------+
+// |                             delete users                              |
+// +-----------------------------------------------------------------------+
+		if (isset($_POST['Del_Selected']) and count($collection) > 0)
+  	{
+  		if (in_array($conf['guest_id'], $collection))
+   		{
+    		array_push($page['errors'], l10n('Guest cannot be deleted'));
+    	}
+    	if (($conf['guest_id'] != $conf['default_user_id']) and
+    		in_array($conf['default_user_id'], $collection))
+    	{
+    		array_push($page['errors'], l10n('Default user cannot be deleted'));
+    	}
+    	if (in_array($conf['webmaster_id'], $collection))
+    	{
+    		array_push($page['errors'], l10n('Webmaster cannot be deleted'));
+    	}
+    	if (in_array($user['id'], $collection))
+    	{
+    		array_push($page['errors'], l10n('You cannot delete your account'));
+    	}
+
+			if (count($page['errors']) == 0)
+    	{
+    		foreach ($collection as $user_id)
+      	{
+      		delete_user($user_id);
+      	}
+     		array_push(
+      		$page['infos'],
+        	l10n_dec(
+        	'%d user deleted', '%d users deleted',
+        	count($collection)
+        	)
+      	);
+
+      	foreach ($page['filtered_users'] as $filter_key => $filter_user)
+      	{
+      		if (in_array($filter_user['id'], $collection))
+        	{
+        		unset($page['filtered_users'][$filter_key]);
+        	}
+     		}
+			}
+		}
+
+// +-----------------------------------------------------------------------+
+// |                          Send ghost reminder                          |
+// +-----------------------------------------------------------------------+
+// +-----------------------------------------------------------------------+
+// |                            selected users                             |
+// +-----------------------------------------------------------------------+
+		if (isset($_POST['Reminder_Email']))
+		{
+  		$collection = array();
+
+			switch ($_POST['target'])
+    	{
+    		case 'all' :
+      	{
+      		foreach($page['filtered_users'] as $local_user)
+        	{
+        		array_push($collection, $local_user['id']);
+        	}
+        	break;
+				}
+      	case 'selection' :
+      	{
+      		if (isset($_POST['selection']))
+        	{
+        		$collection = $_POST['selection'];
+        	}
+        	break;
+      	}
+			}
+
+    	if (count($collection) == 0)
+    	{
+    		array_push($page['errors'], l10n('Select at least one user'));
+    	}
+		}
+// +-----------------------------------------------------------------------+
+// |                         Send ghost reminder                           |
+// +-----------------------------------------------------------------------+
+		if (isset($_POST['Reminder_Email']) and count($collection) > 0)
+		{
+			if (in_array($conf['guest_id'], $collection))
+   		{
+    		array_push($page['errors'], l10n('UAM_No_reminder_for_Guest'));
+    	}
+    	if (($conf['guest_id'] != $conf['default_user_id']) and
+    		in_array($conf['default_user_id'], $collection))
+    	{
+    		array_push($page['errors'], l10n('UAM_No_reminder_for_default_user'));
+    	}
+   		if (in_array($conf['webmaster_id'], $collection))
+    	{
+    		array_push($page['errors'], l10n('UAM_No_reminder_for_Webmaster'));
+    	}
+    	if (in_array($user['id'], $collection))
+    	{
+    		array_push($page['errors'], l10n('UAM_No_reminder_for_your_account'));
+    	}
+
+    	if (count($page['errors']) == 0)
+    	{
+    		foreach ($collection as $user_id)
+      	{
+				  $query = "
+SELECT id, username, mail_address
+  FROM ".USERS_TABLE."
+WHERE id = '".$user_id."'
+;";
+					
+					$data = pwg_db_fetch_assoc(pwg_query($query));
+				
+      		ghostreminder($user_id,stripslashes($data['username']),$data['mail_address']);				
+      	}
+      	array_push(
+      		$page['infos'],
+        	l10n_dec(
+        		'UAM_%d_Reminder_Sent', 'UAM_%d_Reminders_Sent',
+       		count($collection)
+        	)
+      	);
+      	
+				$page['filtered_users'] = get_ghost_user_list();
+			}
+		}
+    
+    if (isset($_POST['GhostTracker_Init']) and is_admin()) //Reset is only allowed for admins !
+    {
+      $query1 = '
+SELECT *
+  FROM '.USER_LASTVISIT_TABLE.';';
+
+      $count = pwg_db_num_rows(pwg_query($query1));
+
+      if ($count <> 0)
+      {
+        $query = '
+SELECT DISTINCT u.id,
+                ui.status AS status
+FROM '.USERS_TABLE.' AS u
+  INNER JOIN '.USER_INFOS_TABLE.' AS ui
+    ON u.id = ui.user_id
+WHERE u.id NOT IN (SELECT user_id FROM '.USER_LASTVISIT_TABLE.')
+  AND status != "webmaster"
+  AND status != "guest"
+  AND status != "admin"
+ORDER BY u.id ASC
+;';
+
+        $result = pwg_query($query);
+          
+        while ($row = pwg_db_fetch_assoc($result))
+        {
+          list($dbnow) = pwg_db_fetch_row(pwg_query('SELECT NOW();'));
+            
+          $query = "
+INSERT INTO ".USER_LASTVISIT_TABLE." (user_id, lastvisit, reminder)
+VALUES ('".$row['id']."','".$dbnow."','false')
+;";
+          pwg_query($query);
+        }
+      }
+      else if ($count == 0)
+      {
+        $query = '
+SELECT DISTINCT u.id,
+                ui.status AS status
+FROM '.USERS_TABLE.' AS u
+  INNER JOIN '.USER_INFOS_TABLE.' AS ui
+    ON u.id = ui.user_id
+WHERE status != "webmaster"
+  AND status != "guest"
+  AND status != "admin"
+ORDER BY u.id ASC
+;';
+
+        $result = pwg_query($query);
+          
+        while($row = pwg_db_fetch_assoc($result))
+        {
+          list($dbnow) = pwg_db_fetch_row(pwg_query('SELECT NOW();'));
+            
+          $query = "
+INSERT INTO ".USER_LASTVISIT_TABLE." (user_id, lastvisit, reminder)
+VALUES ('".$row['id']."','".$dbnow."','false')
+;";
+          pwg_query($query);
+        }
+      }
+        
+      array_push($page['infos'], l10n('UAM_GhostTracker_Init_OK'));
+    }
+
+// +-----------------------------------------------------------------------+
+// |                               user list                               |
+// +-----------------------------------------------------------------------+
+
+    $visible_user_list = array();
+    foreach ($page['filtered_users'] as $num => $local_user)
+    {
+      $visible_user_list[] = $local_user;
+		}
+    
+		foreach ($visible_user_list as $local_user)
+    {
+      $reminder = '';
+    
+      if (isset($local_user['reminder']) and $local_user['reminder'] == 'true')
+      {
+        $reminder = l10n('UAM_Reminder_Sent_OK');
+      }
+      else if (isset($local_user['reminder']) and $local_user['reminder'] == 'false')
+      {
+        $reminder = l10n('UAM_Reminder_Sent_NOK');
+      }
+    
+      if (isset($_POST['pref_submit']) and isset($_POST['selection']) and in_array($local_user['id'], $_POST['selection']))
+	  	{
+				$checked = 'checked="checked"';
+	  	}
+			else
+    	{
+    		$checked = '';
+    	}
+
+      $template->append(
+     	  'users',
+       	array(
+       		'ID'          => $local_user['id'],
+         	'CHECKED'     => $checked,
+         	'USERNAME'    => stripslashes($local_user['username']),
+					'EMAIL'       => get_email_address_as_display_text($local_user['email']),
+          'LASTVISIT'   => $local_user['lastvisit'],
+          'REMINDER'    => $reminder,
+				)
+			);
+		}
+
+    //Plugin version inserted
+    $template->assign(
+      array(
+        'UAM_VERSION'  => $version,
+        'UAM_PATH'     => UAM_PATH,
+      )
+    );
+
+// +-----------------------------------------------------------------------+
+// |                             errors display                            |
+// +-----------------------------------------------------------------------+
+		if ( isset ($errors) and count($errors) != 0)
+		{
+	  	$template->assign('errors',array());
+			foreach ($errors as $error)
+	  	{
+				array_push($page['errors'], $error);
+	  	}
+		}  
+
+// +-----------------------------------------------------------------------+
+// |                           templates display                           |
+// +-----------------------------------------------------------------------+
+		$template->set_filename('plugin_admin_content', dirname(__FILE__) . '/template/ghosttracker.tpl');
+    $template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');		
+	}
+  else
+  {
+		array_push($page['errors'], l10n('UAM_Err_GhostTracker_Settings'));
+  }
+
+  break;
+}
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/admin/template/navigation_bar.tpl
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/admin/template/navigation_bar.tpl	(revision 5593)
+++ /extensions/UserAdvManager/tags/2.20.11/admin/template/navigation_bar.tpl	(revision 5593)
@@ -0,0 +1,28 @@
+<div class="navigationBar">
+  {if isset($navbar.URL_FIRST)}
+  <a href="{$navbar.URL_FIRST}" rel="first">{'First'|@translate}</a> |
+  <a href="{$navbar.URL_PREV}" rel="prev">{'Previous'|@translate}</a> |
+  {else}
+  {'First'|@translate} |
+  {'Previous'|@translate} |
+  {/if}
+
+  {assign var='prev_page' value=0}
+  {foreach from=$navbar.pages key=page item=url}
+    {if $page > $prev_page+1}...{/if}
+    {if $page == $navbar.CURRENT_PAGE}
+    <span class="pageNumberSelected">{$page}</span>
+    {else}
+    <a href="{$url}">{$page}</a>
+    {/if}
+    {assign var='prev_page' value=$page}
+  {/foreach}
+
+  {if isset($navbar.URL_NEXT)}
+  | <a href="{$navbar.URL_NEXT}" rel="next">{'Next'|@translate}</a>
+  | <a href="{$navbar.URL_LAST}" rel="last">{'Last'|@translate}</a>
+  {else}
+  | {'Next'|@translate}
+  | {'Last'|@translate}
+  {/if}
+</div>
Index: /extensions/UserAdvManager/tags/2.20.11/admin/template/themes/default/theme.css
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/admin/template/themes/default/theme.css	(revision 10360)
+++ /extensions/UserAdvManager/tags/2.20.11/admin/template/themes/default/theme.css	(revision 10360)
@@ -0,0 +1,40 @@
+﻿/* Bloc expand-collapse instructions */
+.instructionBlock
+{
+  border: 1px solid #666;
+  margin: 5px;
+  overflow: hidden;
+}
+
+.instructionBlockHeaderCollapsed, .instructionBlockHeaderExpanded
+{
+  background-color: #111;
+  background-position: 15px center;
+  background-repeat: no-repeat;
+  color: #ff3363;
+  cursor: pointer;
+  font-size: 110%;
+  overflow: hidden;
+  padding: 8px 41px;
+  text-align: left;
+}
+
+.instructionBlockHeaderCollapsed span, .instructionBlockHeaderExpanded span
+{
+  border-bottom: none;
+}
+
+.instructionBlockHeaderCollapsed
+{
+  background-image: url(expand.gif);
+}
+
+.instructionBlockHeaderExpanded
+{
+  background-image: url(collapse.gif);
+}
+
+.instructionBlockContent
+{
+  padding: 0 15px 15px;
+}
Index: /extensions/UserAdvManager/tags/2.20.11/admin/template/themes/clear/theme.css
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/admin/template/themes/clear/theme.css	(revision 10360)
+++ /extensions/UserAdvManager/tags/2.20.11/admin/template/themes/clear/theme.css	(revision 10360)
@@ -0,0 +1,40 @@
+/* Bloc expand-collapse instructions */
+.instructionBlock
+{
+  border: 1px solid #999;
+  margin: 5px;
+  overflow: hidden;
+}
+
+.instructionBlockHeaderCollapsed, .instructionBlockHeaderExpanded
+{
+  background-color: #eee;
+  background-position: 15px center;
+  background-repeat: no-repeat;
+  color: #999;
+  cursor: pointer;
+  font-size: 110%;
+  overflow: hidden;
+  padding: 8px 41px;
+  text-align: left;
+}
+
+.instructionBlockHeaderCollapsed span, .instructionBlockHeaderExpanded span
+{
+  border-bottom: none;
+}
+
+.instructionBlockHeaderCollapsed
+{
+  background-image: url(expand.gif);
+}
+
+.instructionBlockHeaderExpanded
+{
+  background-image: url(collapse.gif);
+}
+
+.instructionBlockContent
+{
+  padding: 0 15px 15px;
+}
Index: /extensions/UserAdvManager/tags/2.20.11/admin/template/themes/roma/theme.css
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/admin/template/themes/roma/theme.css	(revision 10360)
+++ /extensions/UserAdvManager/tags/2.20.11/admin/template/themes/roma/theme.css	(revision 10360)
@@ -0,0 +1,40 @@
+﻿/* Bloc expand-collapse instructions */
+.instructionBlock
+{
+  border: 1px solid #666;
+  margin: 5px;
+  overflow: hidden;
+}
+
+.instructionBlockHeaderCollapsed, .instructionBlockHeaderExpanded
+{
+  background-color: #111;
+  background-position: 15px center;
+  background-repeat: no-repeat;
+  color: #ff3363;
+  cursor: pointer;
+  font-size: 110%;
+  overflow: hidden;
+  padding: 8px 41px;
+  text-align: left;
+}
+
+.instructionBlockHeaderCollapsed span, .instructionBlockHeaderExpanded span
+{
+  border-bottom: none;
+}
+
+.instructionBlockHeaderCollapsed
+{
+  background-image: url(expand.gif);
+}
+
+.instructionBlockHeaderExpanded
+{
+  background-image: url(collapse.gif);
+}
+
+.instructionBlockContent
+{
+  padding: 0 15px 15px;
+}
Index: /extensions/UserAdvManager/tags/2.20.11/admin/template/usermanager.tpl
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/admin/template/usermanager.tpl	(revision 10145)
+++ /extensions/UserAdvManager/tags/2.20.11/admin/template/usermanager.tpl	(revision 10145)
@@ -0,0 +1,112 @@
+{combine_script id='jquery' path='themes/default/js/jquery.min.js'}
+{combine_script id='jquery.cluetip' require='jquery' path='themes/default/js/plugins/jquery.cluetip.js'}
+{combine_script id='jquery.tablesorter' require='jquery' path=$UAM_PATH|@cat:'admin/template/js/jquery.tablesorter.min.js'}
+{combine_script id='jquery.tablesorter.pager' require='jquery' path=$UAM_PATH|@cat:'admin/template/js/jquery.tablesorter.pager.js'}
+
+{combine_css path= $UAM_PATH|@cat:'admin/template/uam.css'}
+
+<script type="text/javascript">
+jQuery().ready(function()
+{ldelim}
+  jQuery('.cluetip').cluetip(
+  {ldelim}
+    width: 600,
+    splitTitle: '|'
+  {rdelim});
+{rdelim});
+
+$(document).ready(function() 
+    {ldelim}
+      $("#sorting")
+      .tablesorter({ldelim}sortList:[[6,1]], headers: {ldelim} 0: {ldelim} sorter: false {rdelim}{rdelim}{rdelim})
+      .tablesorterPager({ldelim}container: $("#pager"), positionFixed: false, size: 20, totalPages: 0{rdelim});
+    {rdelim} 
+);
+</script>
+
+<div class="titrePage">
+  <h2>{'UAM_Title_Tab'|@translate} {$UAM_VERSION}<br>{'UAM_SubTitle3'|@translate}</h2>
+</div>
+
+<form method="post" action="" class="general">
+  <fieldset>
+  	<legend class="cluetip" title="{'UAM_usermanTitle'|translate}|{'UAM_usermanTitle_d'|translate}">{'UAM_UserManager_Title'|@translate}</legend>
+    {if count($users) > 0}
+      <table id="sorting" class="table2" width="97%" summary="">
+  		  <thead>
+    			<tr class="throw">
+      			<th>&nbsp;</td>
+      			<th>{'Username'|@translate}&nbsp;&nbsp;</th>
+            <th>{'Profile'|@translate}&nbsp;&nbsp;</th>
+      			<th>{'User status'|@translate}&nbsp;&nbsp;</th>
+      			<th>{'Email address'|@translate}&nbsp;&nbsp;</th>
+      			<th>{'Groups'|@translate}&nbsp;&nbsp;</th>
+      			<th>{'UAM_Registration_Date'|@translate}&nbsp;&nbsp;</th>
+          {if $CONFIRM_LOCAL == ""}
+            <th>{'UAM_Reminder'|@translate}&nbsp;&nbsp;</th>
+          {/if}
+    			</tr>
+  			</thead>
+        <tbody>
+        {foreach from=$users item=user name=users_loop}
+          <tr class="{if $smarty.foreach.users_loop.index is odd}row1{else}row2{/if}">
+            <td><input type="checkbox" name="selection[]" value="{$user.ID}" {$user.CHECKED} id="selection-{$user.ID}" ></td>
+            <td><label for="selection-{$user.ID}">{$user.USERNAME}</label></td>
+            <td style="text-align:center;"><a href="./admin.php?page=profile&amp;user_id={$user.ID}" title="{'Profile'|@translate}" onclick="window.open(this.href); return false;"><img src="{$UAM_PATH}admin/template/icon/edit_s.png"></a></td>
+            <td>{$user.STATUS}</td>
+            <td>{$user.EMAIL}</td>
+            <td>{$user.GROUPS}</td>
+            <td {if $user.EXPIRATION == True}style="color:red;text-align:center;"{else}style="color:lime;text-align:center;"{/if}>{$user.REGISTRATION}</td>
+          {if $CONFIRM_LOCAL == ""}
+            <td style="text-align:center;">{$user.REMINDER}</td>
+          {/if}
+            {foreach from=$user.plugin_columns item=data}
+              <td>{$data}</td>
+            {/foreach}    			
+          </tr>
+        {/foreach}
+      </tbody>
+      </table>
+{if !empty($users)}
+<div id="pager" class="pager">
+	<form>
+		<img src="{$UAM_PATH}admin/template/icon/first.png" class="first">
+		<img src="{$UAM_PATH}admin/template/icon/prev.png" class="prev">
+		<input type="text" class="pagedisplay">
+		<img src="{$UAM_PATH}admin/template/icon/next.png" class="next">
+		<img src="{$UAM_PATH}admin/template/icon/last.png" class="last">
+		<select class="pagesize">
+			<option  value="10">10</option>
+			<option selected="selected" value="20">20</option>
+			<option value="30">30</option>
+			<option value="40">40</option>
+		</select>
+	</form>
+</div>
+{/if}
+    	<br>
+
+<p>
+  {'target'|@translate}
+  <label><input type="radio" name="target" value="all" > {'all'|@translate}</label>
+  <label><input type="radio" name="target" value="selection" checked="checked" > {'selection'|@translate}</label>
+</p>
+
+<p>
+{if $CONFIRM_LOCAL == "local"}
+  <input class="submit" type="submit" value="{'UAM_Delete_selected'|@translate}" name="Del_Selected">
+  <input class="submit" type="submit" value="{'UAM_Force_Validation'|@translate}" name="Force_Validation">
+{else}
+  <input class="submit" type="submit" value="{'UAM_Delete_selected'|@translate}" name="Del_Selected">
+  <input class="submit" type="submit" value="{'UAM_Mail_without_key'|@translate}" name="Mail_Without_Key">
+  <input class="submit" type="submit" value="{'UAM_Mail_with_key'|@translate}" name="Mail_With_Key">
+  <input class="submit" type="submit" value="{'UAM_Force_Validation'|@translate}" name="Force_Validation">
+{/if}
+</p>
+  </fieldset>
+		{else}
+		<div>
+			{'UAM_No_Usermanager'|@translate}
+		</div>
+		{/if}
+</form>
Index: /extensions/UserAdvManager/tags/2.20.11/admin/template/icon/index.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/admin/template/icon/index.php	(revision 5610)
+++ /extensions/UserAdvManager/tags/2.20.11/admin/template/icon/index.php	(revision 5610)
@@ -0,0 +1,33 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | PhpWebGallery - a PHP based picture gallery                           |
+// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
+// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
+// +-----------------------------------------------------------------------+
+// | file          : $Id: index.php 1912 2007-03-16 06:30:07Z rub $
+// | last update   : $Date: 2007-03-16 07:30:07 +0100 (ven, 16 mar 2007) $
+// | last modifier : $Author: rub $
+// | revision      : $Revision: 1912 $
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/admin/template/userlist.tpl
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/admin/template/userlist.tpl	(revision 10145)
+++ /extensions/UserAdvManager/tags/2.20.11/admin/template/userlist.tpl	(revision 10145)
@@ -0,0 +1,103 @@
+{combine_script id='jquery' path='themes/default/js/jquery.min.js'}
+{combine_script id='jquery.cluetip' require='jquery' path='themes/default/js/plugins/jquery.cluetip.js'}
+{combine_script id='jquery.tablesorter' require='jquery' path=$UAM_PATH|@cat:'admin/template/js/jquery.tablesorter.min.js'}
+{combine_script id='jquery.tablesorter.pager' require='jquery' path=$UAM_PATH|@cat:'admin/template/js/jquery.tablesorter.pager.js'}
+
+{combine_css path= $UAM_PATH|@cat:'admin/template/uam.css'}
+
+<script type="text/javascript">
+jQuery().ready(function()
+{ldelim}
+  jQuery('.cluetip').cluetip(
+  {ldelim}
+    width: 600,
+    splitTitle: '|'
+  {rdelim});
+{rdelim});
+
+$(document).ready(function() 
+    {ldelim}
+      $("#sorting")
+      .tablesorter(
+      {ldelim}
+          sortList:[[3,1]],
+          // pass the headers argument and assing a object 
+          headers:
+          {ldelim} 
+              // assign the fourth column (we start counting zero) 
+              4:
+              {ldelim} 
+                  // disable it by setting the property sorter to false 
+                  sorter: false 
+              {rdelim}
+          {rdelim} 
+      {rdelim})
+      .tablesorterPager({ldelim}container: $("#pager"), positionFixed: false, size: 20, totalPages: 0{rdelim});
+    {rdelim} 
+);
+</script>
+
+<div class="titrePage">
+  <h2>{'UAM_Title_Tab'|@translate} {$UAM_VERSION}<br>{'UAM_SubTitle5'|@translate}</h2>
+</div>
+
+<form method="post" action="" class="general">
+  <fieldset>
+  	<legend class="cluetip" title="{'UAM_userlistTitle'|translate}|{'UAM_userlistTitle_d'|translate}">{'UAM_UserList_Title'|@translate}</legend>
+    {if count($users) > 0}
+      <table id="sorting" class="table2" width="97%" summary="">
+  			<thead>
+    			<tr class="throw">
+      			<th>{'Username'|@translate}</th>
+            <th>{'Profile'|@translate}</th>
+      			<th>{'Email address'|@translate}</th>
+            <th>{'UAM_LastVisit_Date'|@translate}</th>
+            <th>{'UAM_Nb_Days'|@translate}</th>
+    			</tr>
+  			</thead>
+        <tbody>
+        {foreach from=$users item=user name=users_loop}
+          <tr class="{if $smarty.foreach.users_loop.index is odd}row1{else}row2{/if}">
+            <td><label for="selection-{$user.ID}">{$user.USERNAME}</label></td>
+            <td style="text-align:center;"><a href="./admin.php?page=profile&amp;user_id={$user.ID}" title="{'Profile'|@translate}" onclick="window.open(this.href); return false;"><img src="{$UAM_PATH}admin/template/icon/edit_s.png"></a></td>
+            <td>{$user.EMAIL}</td>
+            <td style="text-align:center;">{$user.LASTVISIT}</td>
+{if $user.DISPLAY == 'green'}
+            <td style="color:lime;text-align:center;">{$user.DAYS}</td>
+{elseif $user.DISPLAY == 'orange'}
+            <td style="color:orange;text-align:center;">{$user.DAYS}</td>
+{elseif $user.DISPLAY == 'red'}
+            <td style="color:red;text-align:center;">{$user.DAYS}</td>
+{else}
+            <td style="text-align:center;">{$user.DAYS}</td>
+{/if}
+            {foreach from=$user.plugin_columns item=data}
+              <td>{$data}</td>
+            {/foreach}    			
+          </tr>
+        {/foreach}
+        </tbody>
+      </table>
+<div id="pager" class="pager">
+	<form>
+		<img src="{$UAM_PATH}admin/template/icon/first.png" class="first">
+		<img src="{$UAM_PATH}admin/template/icon/prev.png" class="prev">
+		<input type="text" class="pagedisplay">
+		<img src="{$UAM_PATH}admin/template/icon/next.png" class="next">
+		<img src="{$UAM_PATH}admin/template/icon/last.png" class="last">
+		<select class="pagesize">
+			<option  value="10">10</option>
+			<option selected="selected" value="20">20</option>
+			<option value="30">30</option>
+			<option value="40">40</option>
+		</select>
+	</form>
+</div>
+    	<br>
+  </fieldset>
+		{else}
+		<div>
+			{'UAM_No_Userlist'|@translate}
+		</div>
+		{/if}
+</form>
Index: /extensions/UserAdvManager/tags/2.20.11/admin/template/uam.css
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/admin/template/uam.css	(revision 10360)
+++ /extensions/UserAdvManager/tags/2.20.11/admin/template/uam.css	(revision 10360)
@@ -0,0 +1,92 @@
+/* UAM instructions */
+#uam_leftmargin
+{
+  margin-left: 2em
+}
+
+#uam_notice
+{
+  text-align:center;
+  text-decoration: underline;
+  font-weight:bold;
+}
+
+div.uam_hide
+{
+  display: none;
+}
+
+textarea.uam_textfields
+{
+  width: 70%;
+}
+
+/* jQuery cluetip instructions */
+label.cluetip
+{
+  font-weight:bold;
+}
+
+/* Bloc expand-collapse instructions */
+.instructionBlock
+{
+  border: 1px solid #666;
+  margin: 5px;
+  overflow: hidden;
+}
+
+.instructionBlockHeaderCollapsed, .instructionBlockHeaderExpanded
+{
+  background-color: #111;
+  background-position: 15px center;
+  background-repeat: no-repeat;
+  color: #ff3363;
+  cursor: pointer;
+  font-size: 110%;
+  overflow: hidden;
+  padding: 8px 41px;
+  text-align: left;
+}
+
+.instructionBlockHeaderCollapsed span, .instructionBlockHeaderExpanded span
+{
+  border-bottom: none;
+}
+
+.instructionBlockContent
+{
+  padding: 0 15px 15px;
+}
+
+/* jQuery tablesorter instructions */
+tr.throw
+{
+cursor:pointer;
+text-align:center;
+}
+
+th.header
+{
+background-image:url("./icon/bg.png");
+background-position:right center;
+background-repeat:no-repeat;
+cursor:pointer;
+}
+
+th.headerSortDown
+{
+background-image:url("./icon/desc.png");
+}
+
+th.headerSortUp
+{
+background-image:url("./icon/asc.png");
+}
+
+.pager{
+  text-align:center;
+}
+
+#pager img {
+  margin-bottom: -3px;
+}
Index: /extensions/UserAdvManager/tags/2.20.11/admin/template/js/jquery.tablesorter.js
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/admin/template/js/jquery.tablesorter.js	(revision 9091)
+++ /extensions/UserAdvManager/tags/2.20.11/admin/template/js/jquery.tablesorter.js	(revision 9091)
@@ -0,0 +1,1031 @@
+/*
+ * 
+ * TableSorter 2.0 - Client-side table sorting with ease!
+ * Version 2.0.5b
+ * @requires jQuery v1.2.3
+ * 
+ * Copyright (c) 2007 Christian Bach
+ * Examples and docs at: http://tablesorter.com
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ * 
+ */
+/**
+ * 
+ * @description Create a sortable table with multi-column sorting capabilitys
+ * 
+ * @example $('table').tablesorter();
+ * @desc Create a simple tablesorter interface.
+ * 
+ * @example $('table').tablesorter({ sortList:[[0,0],[1,0]] });
+ * @desc Create a tablesorter interface and sort on the first and secound column column headers.
+ * 
+ * @example $('table').tablesorter({ headers: { 0: { sorter: false}, 1: {sorter: false} } });
+ *          
+ * @desc Create a tablesorter interface and disableing the first and second  column headers.
+ *      
+ * 
+ * @example $('table').tablesorter({ headers: { 0: {sorter:"integer"}, 1: {sorter:"currency"} } });
+ * 
+ * @desc Create a tablesorter interface and set a column parser for the first
+ *       and second column.
+ * 
+ * 
+ * @param Object
+ *            settings An object literal containing key/value pairs to provide
+ *            optional settings.
+ * 
+ * 
+ * @option String cssHeader (optional) A string of the class name to be appended
+ *         to sortable tr elements in the thead of the table. Default value:
+ *         "header"
+ * 
+ * @option String cssAsc (optional) A string of the class name to be appended to
+ *         sortable tr elements in the thead on a ascending sort. Default value:
+ *         "headerSortUp"
+ * 
+ * @option String cssDesc (optional) A string of the class name to be appended
+ *         to sortable tr elements in the thead on a descending sort. Default
+ *         value: "headerSortDown"
+ * 
+ * @option String sortInitialOrder (optional) A string of the inital sorting
+ *         order can be asc or desc. Default value: "asc"
+ * 
+ * @option String sortMultisortKey (optional) A string of the multi-column sort
+ *         key. Default value: "shiftKey"
+ * 
+ * @option String textExtraction (optional) A string of the text-extraction
+ *         method to use. For complex html structures inside td cell set this
+ *         option to "complex", on large tables the complex option can be slow.
+ *         Default value: "simple"
+ * 
+ * @option Object headers (optional) An array containing the forces sorting
+ *         rules. This option let's you specify a default sorting rule. Default
+ *         value: null
+ * 
+ * @option Array sortList (optional) An array containing the forces sorting
+ *         rules. This option let's you specify a default sorting rule. Default
+ *         value: null
+ * 
+ * @option Array sortForce (optional) An array containing forced sorting rules.
+ *         This option let's you specify a default sorting rule, which is
+ *         prepended to user-selected rules. Default value: null
+ * 
+ * @option Boolean sortLocaleCompare (optional) Boolean flag indicating whatever
+ *         to use String.localeCampare method or not. Default set to true.
+ * 
+ * 
+ * @option Array sortAppend (optional) An array containing forced sorting rules.
+ *         This option let's you specify a default sorting rule, which is
+ *         appended to user-selected rules. Default value: null
+ * 
+ * @option Boolean widthFixed (optional) Boolean flag indicating if tablesorter
+ *         should apply fixed widths to the table columns. This is usefull when
+ *         using the pager companion plugin. This options requires the dimension
+ *         jquery plugin. Default value: false
+ * 
+ * @option Boolean cancelSelection (optional) Boolean flag indicating if
+ *         tablesorter should cancel selection of the table headers text.
+ *         Default value: true
+ * 
+ * @option Boolean debug (optional) Boolean flag indicating if tablesorter
+ *         should display debuging information usefull for development.
+ * 
+ * @type jQuery
+ * 
+ * @name tablesorter
+ * 
+ * @cat Plugins/Tablesorter
+ * 
+ * @author Christian Bach/christian.bach@polyester.se
+ */
+
+(function ($) {
+    $.extend({
+        tablesorter: new
+        function () {
+
+            var parsers = [],
+                widgets = [];
+
+            this.defaults = {
+                cssHeader: "header",
+                cssAsc: "headerSortUp",
+                cssDesc: "headerSortDown",
+                cssChildRow: "expand-child",
+                sortInitialOrder: "asc",
+                sortMultiSortKey: "shiftKey",
+                sortForce: null,
+                sortAppend: null,
+                sortLocaleCompare: true,
+                textExtraction: "simple",
+                parsers: {}, widgets: [],
+                widgetZebra: {
+                    css: ["even", "odd"]
+                }, headers: {}, widthFixed: false,
+                cancelSelection: true,
+                sortList: [],
+                headerList: [],
+                dateFormat: "us",
+                decimal: '/\.|\,/g',
+                onRenderHeader: null,
+                selectorHeaders: 'thead th',
+                debug: false
+            };
+
+            /* debuging utils */
+
+            function benchmark(s, d) {
+                log(s + "," + (new Date().getTime() - d.getTime()) + "ms");
+            }
+
+            this.benchmark = benchmark;
+
+            function log(s) {
+                if (typeof console != "undefined" && typeof console.debug != "undefined") {
+                    console.log(s);
+                } else {
+                    alert(s);
+                }
+            }
+
+            /* parsers utils */
+
+            function buildParserCache(table, $headers) {
+
+                if (table.config.debug) {
+                    var parsersDebug = "";
+                }
+
+                if (table.tBodies.length == 0) return; // In the case of empty tables
+                var rows = table.tBodies[0].rows;
+
+                if (rows[0]) {
+
+                    var list = [],
+                        cells = rows[0].cells,
+                        l = cells.length;
+
+                    for (var i = 0; i < l; i++) {
+
+                        var p = false;
+
+                        if ($.metadata && ($($headers[i]).metadata() && $($headers[i]).metadata().sorter)) {
+
+                            p = getParserById($($headers[i]).metadata().sorter);
+
+                        } else if ((table.config.headers[i] && table.config.headers[i].sorter)) {
+
+                            p = getParserById(table.config.headers[i].sorter);
+                        }
+                        if (!p) {
+
+                            p = detectParserForColumn(table, rows, -1, i);
+                        }
+
+                        if (table.config.debug) {
+                            parsersDebug += "column:" + i + " parser:" + p.id + "\n";
+                        }
+
+                        list.push(p);
+                    }
+                }
+
+                if (table.config.debug) {
+                    log(parsersDebug);
+                }
+
+                return list;
+            };
+
+            function detectParserForColumn(table, rows, rowIndex, cellIndex) {
+                var l = parsers.length,
+                    node = false,
+                    nodeValue = false,
+                    keepLooking = true;
+                while (nodeValue == '' && keepLooking) {
+                    rowIndex++;
+                    if (rows[rowIndex]) {
+                        node = getNodeFromRowAndCellIndex(rows, rowIndex, cellIndex);
+                        nodeValue = trimAndGetNodeText(table.config, node);
+                        if (table.config.debug) {
+                            log('Checking if value was empty on row:' + rowIndex);
+                        }
+                    } else {
+                        keepLooking = false;
+                    }
+                }
+                for (var i = 1; i < l; i++) {
+                    if (parsers[i].is(nodeValue, table, node)) {
+                        return parsers[i];
+                    }
+                }
+                // 0 is always the generic parser (text)
+                return parsers[0];
+            }
+
+            function getNodeFromRowAndCellIndex(rows, rowIndex, cellIndex) {
+                return rows[rowIndex].cells[cellIndex];
+            }
+
+            function trimAndGetNodeText(config, node) {
+                return $.trim(getElementText(config, node));
+            }
+
+            function getParserById(name) {
+                var l = parsers.length;
+                for (var i = 0; i < l; i++) {
+                    if (parsers[i].id.toLowerCase() == name.toLowerCase()) {
+                        return parsers[i];
+                    }
+                }
+                return false;
+            }
+
+            /* utils */
+
+            function buildCache(table) {
+
+                if (table.config.debug) {
+                    var cacheTime = new Date();
+                }
+
+                var totalRows = (table.tBodies[0] && table.tBodies[0].rows.length) || 0,
+                    totalCells = (table.tBodies[0].rows[0] && table.tBodies[0].rows[0].cells.length) || 0,
+                    parsers = table.config.parsers,
+                    cache = {
+                        row: [],
+                        normalized: []
+                    };
+
+                for (var i = 0; i < totalRows; ++i) {
+
+                    /** Add the table data to main data array */
+                    var c = $(table.tBodies[0].rows[i]),
+                        cols = [];
+
+                    // if this is a child row, add it to the last row's children and
+                    // continue to the next row
+                    if (c.hasClass(table.config.cssChildRow)) {
+                        cache.row[cache.row.length - 1] = cache.row[cache.row.length - 1].add(c);
+                        // go to the next for loop
+                        continue;
+                    }
+
+                    cache.row.push(c);
+
+                    for (var j = 0; j < totalCells; ++j) {
+                        cols.push(parsers[j].format(getElementText(table.config, c[0].cells[j]), table, c[0].cells[j]));
+                    }
+
+                    cols.push(cache.normalized.length); // add position for rowCache
+                    cache.normalized.push(cols);
+                    cols = null;
+                };
+
+                if (table.config.debug) {
+                    benchmark("Building cache for " + totalRows + " rows:", cacheTime);
+                }
+
+                return cache;
+            };
+
+            function getElementText(config, node) {
+
+                var text = "";
+
+                if (!node) return "";
+
+                if (!config.supportsTextContent) config.supportsTextContent = node.textContent || false;
+
+                if (config.textExtraction == "simple") {
+                    if (config.supportsTextContent) {
+                        text = node.textContent;
+                    } else {
+                        if (node.childNodes[0] && node.childNodes[0].hasChildNodes()) {
+                            text = node.childNodes[0].innerHTML;
+                        } else {
+                            text = node.innerHTML;
+                        }
+                    }
+                } else {
+                    if (typeof(config.textExtraction) == "function") {
+                        text = config.textExtraction(node);
+                    } else {
+                        text = $(node).text();
+                    }
+                }
+                return text;
+            }
+
+            function appendToTable(table, cache) {
+
+                if (table.config.debug) {
+                    var appendTime = new Date()
+                }
+
+                var c = cache,
+                    r = c.row,
+                    n = c.normalized,
+                    totalRows = n.length,
+                    checkCell = (n[0].length - 1),
+                    tableBody = $(table.tBodies[0]),
+                    rows = [];
+
+
+                for (var i = 0; i < totalRows; i++) {
+                    var pos = n[i][checkCell];
+
+                    rows.push(r[pos]);
+
+                    if (!table.config.appender) {
+
+                        //var o = ;
+                        var l = r[pos].length;
+                        for (var j = 0; j < l; j++) {
+                            tableBody[0].appendChild(r[pos][j]);
+                        }
+
+                        // 
+                    }
+                }
+
+
+
+                if (table.config.appender) {
+
+                    table.config.appender(table, rows);
+                }
+
+                rows = null;
+
+                if (table.config.debug) {
+                    benchmark("Rebuilt table:", appendTime);
+                }
+
+                // apply table widgets
+                applyWidget(table);
+
+                // trigger sortend
+                setTimeout(function () {
+                    $(table).trigger("sortEnd");
+                }, 0);
+
+            };
+
+            function buildHeaders(table) {
+
+                if (table.config.debug) {
+                    var time = new Date();
+                }
+
+                var meta = ($.metadata) ? true : false;
+                
+                var header_index = computeTableHeaderCellIndexes(table);
+
+                $tableHeaders = $(table.config.selectorHeaders, table).each(function (index) {
+
+                    this.column = header_index[this.parentNode.rowIndex + "-" + this.cellIndex];
+                    // this.column = index;
+                    this.order = formatSortingOrder(table.config.sortInitialOrder);
+                    
+					
+					this.count = this.order;
+
+                    if (checkHeaderMetadata(this) || checkHeaderOptions(table, index)) this.sortDisabled = true;
+					if (checkHeaderOptionsSortingLocked(table, index)) this.order = this.lockedOrder = checkHeaderOptionsSortingLocked(table, index);
+
+                    if (!this.sortDisabled) {
+                        var $th = $(this).addClass(table.config.cssHeader);
+                        if (table.config.onRenderHeader) table.config.onRenderHeader.apply($th);
+                    }
+
+                    // add cell to headerList
+                    table.config.headerList[index] = this;
+                });
+
+                if (table.config.debug) {
+                    benchmark("Built headers:", time);
+                    log($tableHeaders);
+                }
+
+                return $tableHeaders;
+
+            };
+
+            // from:
+            // http://www.javascripttoolbox.com/lib/table/examples.php
+            // http://www.javascripttoolbox.com/temp/table_cellindex.html
+
+
+            function computeTableHeaderCellIndexes(t) {
+                var matrix = [];
+                var lookup = {};
+                var thead = t.getElementsByTagName('THEAD')[0];
+                var trs = thead.getElementsByTagName('TR');
+
+                for (var i = 0; i < trs.length; i++) {
+                    var cells = trs[i].cells;
+                    for (var j = 0; j < cells.length; j++) {
+                        var c = cells[j];
+
+                        var rowIndex = c.parentNode.rowIndex;
+                        var cellId = rowIndex + "-" + c.cellIndex;
+                        var rowSpan = c.rowSpan || 1;
+                        var colSpan = c.colSpan || 1
+                        var firstAvailCol;
+                        if (typeof(matrix[rowIndex]) == "undefined") {
+                            matrix[rowIndex] = [];
+                        }
+                        // Find first available column in the first row
+                        for (var k = 0; k < matrix[rowIndex].length + 1; k++) {
+                            if (typeof(matrix[rowIndex][k]) == "undefined") {
+                                firstAvailCol = k;
+                                break;
+                            }
+                        }
+                        lookup[cellId] = firstAvailCol;
+                        for (var k = rowIndex; k < rowIndex + rowSpan; k++) {
+                            if (typeof(matrix[k]) == "undefined") {
+                                matrix[k] = [];
+                            }
+                            var matrixrow = matrix[k];
+                            for (var l = firstAvailCol; l < firstAvailCol + colSpan; l++) {
+                                matrixrow[l] = "x";
+                            }
+                        }
+                    }
+                }
+                return lookup;
+            }
+
+            function checkCellColSpan(table, rows, row) {
+                var arr = [],
+                    r = table.tHead.rows,
+                    c = r[row].cells;
+
+                for (var i = 0; i < c.length; i++) {
+                    var cell = c[i];
+
+                    if (cell.colSpan > 1) {
+                        arr = arr.concat(checkCellColSpan(table, headerArr, row++));
+                    } else {
+                        if (table.tHead.length == 1 || (cell.rowSpan > 1 || !r[row + 1])) {
+                            arr.push(cell);
+                        }
+                        // headerArr[row] = (i+row);
+                    }
+                }
+                return arr;
+            };
+
+            function checkHeaderMetadata(cell) {
+                if (($.metadata) && ($(cell).metadata().sorter === false)) {
+                    return true;
+                };
+                return false;
+            }
+
+            function checkHeaderOptions(table, i) {
+                if ((table.config.headers[i]) && (table.config.headers[i].sorter === false)) {
+                    return true;
+                };
+                return false;
+            }
+			
+			 function checkHeaderOptionsSortingLocked(table, i) {
+                if ((table.config.headers[i]) && (table.config.headers[i].lockedOrder)) return table.config.headers[i].lockedOrder;
+                return false;
+            }
+			
+            function applyWidget(table) {
+                var c = table.config.widgets;
+                var l = c.length;
+                for (var i = 0; i < l; i++) {
+
+                    getWidgetById(c[i]).format(table);
+                }
+
+            }
+
+            function getWidgetById(name) {
+                var l = widgets.length;
+                for (var i = 0; i < l; i++) {
+                    if (widgets[i].id.toLowerCase() == name.toLowerCase()) {
+                        return widgets[i];
+                    }
+                }
+            };
+
+            function formatSortingOrder(v) {
+                if (typeof(v) != "Number") {
+                    return (v.toLowerCase() == "desc") ? 1 : 0;
+                } else {
+                    return (v == 1) ? 1 : 0;
+                }
+            }
+
+            function isValueInArray(v, a) {
+                var l = a.length;
+                for (var i = 0; i < l; i++) {
+                    if (a[i][0] == v) {
+                        return true;
+                    }
+                }
+                return false;
+            }
+
+            function setHeadersCss(table, $headers, list, css) {
+                // remove all header information
+                $headers.removeClass(css[0]).removeClass(css[1]);
+
+                var h = [];
+                $headers.each(function (offset) {
+                    if (!this.sortDisabled) {
+                        h[this.column] = $(this);
+                    }
+                });
+
+                var l = list.length;
+                for (var i = 0; i < l; i++) {
+                    h[list[i][0]].addClass(css[list[i][1]]);
+                }
+            }
+
+            function fixColumnWidth(table, $headers) {
+                var c = table.config;
+                if (c.widthFixed) {
+                    var colgroup = $('<colgroup>');
+                    $("tr:first td", table.tBodies[0]).each(function () {
+                        colgroup.append($('<col>').css('width', $(this).width()));
+                    });
+                    $(table).prepend(colgroup);
+                };
+            }
+
+            function updateHeaderSortCount(table, sortList) {
+                var c = table.config,
+                    l = sortList.length;
+                for (var i = 0; i < l; i++) {
+                    var s = sortList[i],
+                        o = c.headerList[s[0]];
+                    o.count = s[1];
+                    o.count++;
+                }
+            }
+
+            /* sorting methods */
+
+            function multisort(table, sortList, cache) {
+
+                if (table.config.debug) {
+                    var sortTime = new Date();
+                }
+
+                var dynamicExp = "var sortWrapper = function(a,b) {",
+                    l = sortList.length;
+
+                // TODO: inline functions.
+                for (var i = 0; i < l; i++) {
+
+                    var c = sortList[i][0];
+                    var order = sortList[i][1];
+                    // var s = (getCachedSortType(table.config.parsers,c) == "text") ?
+                    // ((order == 0) ? "sortText" : "sortTextDesc") : ((order == 0) ?
+                    // "sortNumeric" : "sortNumericDesc");
+                    // var s = (table.config.parsers[c].type == "text") ? ((order == 0)
+                    // ? makeSortText(c) : makeSortTextDesc(c)) : ((order == 0) ?
+                    // makeSortNumeric(c) : makeSortNumericDesc(c));
+                    var s = (table.config.parsers[c].type == "text") ? ((order == 0) ? makeSortFunction("text", "asc", c) : makeSortFunction("text", "desc", c)) : ((order == 0) ? makeSortFunction("numeric", "asc", c) : makeSortFunction("numeric", "desc", c));
+                    var e = "e" + i;
+
+                    dynamicExp += "var " + e + " = " + s; // + "(a[" + c + "],b[" + c
+                    // + "]); ";
+                    dynamicExp += "if(" + e + ") { return " + e + "; } ";
+                    dynamicExp += "else { ";
+
+                }
+
+                // if value is the same keep orignal order
+                var orgOrderCol = cache.normalized[0].length - 1;
+                dynamicExp += "return a[" + orgOrderCol + "]-b[" + orgOrderCol + "];";
+
+                for (var i = 0; i < l; i++) {
+                    dynamicExp += "}; ";
+                }
+
+                dynamicExp += "return 0; ";
+                dynamicExp += "}; ";
+
+                if (table.config.debug) {
+                    benchmark("Evaling expression:" + dynamicExp, new Date());
+                }
+
+                eval(dynamicExp);
+
+                cache.normalized.sort(sortWrapper);
+
+                if (table.config.debug) {
+                    benchmark("Sorting on " + sortList.toString() + " and dir " + order + " time:", sortTime);
+                }
+
+                return cache;
+            };
+
+            function makeSortFunction(type, direction, index) {
+                var a = "a[" + index + "]",
+                    b = "b[" + index + "]";
+                if (type == 'text' && direction == 'asc') {
+                    return "(" + a + " == " + b + " ? 0 : (" + a + " === null ? Number.POSITIVE_INFINITY : (" + b + " === null ? Number.NEGATIVE_INFINITY : (" + a + " < " + b + ") ? -1 : 1 )));";
+                } else if (type == 'text' && direction == 'desc') {
+                    return "(" + a + " == " + b + " ? 0 : (" + a + " === null ? Number.POSITIVE_INFINITY : (" + b + " === null ? Number.NEGATIVE_INFINITY : (" + b + " < " + a + ") ? -1 : 1 )));";
+                } else if (type == 'numeric' && direction == 'asc') {
+                    return "(" + a + " === null && " + b + " === null) ? 0 :(" + a + " === null ? Number.POSITIVE_INFINITY : (" + b + " === null ? Number.NEGATIVE_INFINITY : " + a + " - " + b + "));";
+                } else if (type == 'numeric' && direction == 'desc') {
+                    return "(" + a + " === null && " + b + " === null) ? 0 :(" + a + " === null ? Number.POSITIVE_INFINITY : (" + b + " === null ? Number.NEGATIVE_INFINITY : " + b + " - " + a + "));";
+                }
+            };
+
+            function makeSortText(i) {
+                return "((a[" + i + "] < b[" + i + "]) ? -1 : ((a[" + i + "] > b[" + i + "]) ? 1 : 0));";
+            };
+
+            function makeSortTextDesc(i) {
+                return "((b[" + i + "] < a[" + i + "]) ? -1 : ((b[" + i + "] > a[" + i + "]) ? 1 : 0));";
+            };
+
+            function makeSortNumeric(i) {
+                return "a[" + i + "]-b[" + i + "];";
+            };
+
+            function makeSortNumericDesc(i) {
+                return "b[" + i + "]-a[" + i + "];";
+            };
+
+            function sortText(a, b) {
+                if (table.config.sortLocaleCompare) return a.localeCompare(b);
+                return ((a < b) ? -1 : ((a > b) ? 1 : 0));
+            };
+
+            function sortTextDesc(a, b) {
+                if (table.config.sortLocaleCompare) return b.localeCompare(a);
+                return ((b < a) ? -1 : ((b > a) ? 1 : 0));
+            };
+
+            function sortNumeric(a, b) {
+                return a - b;
+            };
+
+            function sortNumericDesc(a, b) {
+                return b - a;
+            };
+
+            function getCachedSortType(parsers, i) {
+                return parsers[i].type;
+            }; /* public methods */
+            this.construct = function (settings) {
+                return this.each(function () {
+                    // if no thead or tbody quit.
+                    if (!this.tHead || !this.tBodies) return;
+                    // declare
+                    var $this, $document, $headers, cache, config, shiftDown = 0,
+                        sortOrder;
+                    // new blank config object
+                    this.config = {};
+                    // merge and extend.
+                    config = $.extend(this.config, $.tablesorter.defaults, settings);
+                    // store common expression for speed
+                    $this = $(this);
+                    // save the settings where they read
+                    $.data(this, "tablesorter", config);
+                    // build headers
+                    $headers = buildHeaders(this);
+                    // try to auto detect column type, and store in tables config
+                    this.config.parsers = buildParserCache(this, $headers);
+                    // build the cache for the tbody cells
+                    cache = buildCache(this);
+                    // get the css class names, could be done else where.
+                    var sortCSS = [config.cssDesc, config.cssAsc];
+                    // fixate columns if the users supplies the fixedWidth option
+                    fixColumnWidth(this);
+                    // apply event handling to headers
+                    // this is to big, perhaps break it out?
+                    $headers.click(
+
+                    function (e) {
+                        var totalRows = ($this[0].tBodies[0] && $this[0].tBodies[0].rows.length) || 0;
+                        if (!this.sortDisabled && totalRows > 0) {
+                            // Only call sortStart if sorting is
+                            // enabled.
+                            $this.trigger("sortStart");
+                            // store exp, for speed
+                            var $cell = $(this);
+                            // get current column index
+                            var i = this.column;
+                            // get current column sort order
+                            this.order = this.count++ % 2;
+							// always sort on the locked order.
+							if(this.lockedOrder) this.order = this.lockedOrder;
+							
+							// user only whants to sort on one
+                            // column
+                            if (!e[config.sortMultiSortKey]) {
+                                // flush the sort list
+                                config.sortList = [];
+                                if (config.sortForce != null) {
+                                    var a = config.sortForce;
+                                    for (var j = 0; j < a.length; j++) {
+                                        if (a[j][0] != i) {
+                                            config.sortList.push(a[j]);
+                                        }
+                                    }
+                                }
+                                // add column to sort list
+                                config.sortList.push([i, this.order]);
+                                // multi column sorting
+                            } else {
+                                // the user has clicked on an all
+                                // ready sortet column.
+                                if (isValueInArray(i, config.sortList)) {
+                                    // revers the sorting direction
+                                    // for all tables.
+                                    for (var j = 0; j < config.sortList.length; j++) {
+                                        var s = config.sortList[j],
+                                            o = config.headerList[s[0]];
+                                        if (s[0] == i) {
+                                            o.count = s[1];
+                                            o.count++;
+                                            s[1] = o.count % 2;
+                                        }
+                                    }
+                                } else {
+                                    // add column to sort list array
+                                    config.sortList.push([i, this.order]);
+                                }
+                            };
+                            setTimeout(function () {
+                                // set css for headers
+                                setHeadersCss($this[0], $headers, config.sortList, sortCSS);
+                                appendToTable(
+	                                $this[0], multisort(
+	                                $this[0], config.sortList, cache)
+								);
+                            }, 1);
+                            // stop normal event by returning false
+                            return false;
+                        }
+                        // cancel selection
+                    }).mousedown(function () {
+                        if (config.cancelSelection) {
+                            this.onselectstart = function () {
+                                return false
+                            };
+                            return false;
+                        }
+                    });
+                    // apply easy methods that trigger binded events
+                    $this.bind("update", function () {
+                        var me = this;
+                        setTimeout(function () {
+                            // rebuild parsers.
+                            me.config.parsers = buildParserCache(
+                            me, $headers);
+                            // rebuild the cache map
+                            cache = buildCache(me);
+                        }, 1);
+                    }).bind("updateCell", function (e, cell) {
+                        var config = this.config;
+                        // get position from the dom.
+                        var pos = [(cell.parentNode.rowIndex - 1), cell.cellIndex];
+                        // update cache
+                        cache.normalized[pos[0]][pos[1]] = config.parsers[pos[1]].format(
+                        getElementText(config, cell), cell);
+                    }).bind("sorton", function (e, list) {
+                        $(this).trigger("sortStart");
+                        config.sortList = list;
+                        // update and store the sortlist
+                        var sortList = config.sortList;
+                        // update header count index
+                        updateHeaderSortCount(this, sortList);
+                        // set css for headers
+                        setHeadersCss(this, $headers, sortList, sortCSS);
+                        // sort the table and append it to the dom
+                        appendToTable(this, multisort(this, sortList, cache));
+                    }).bind("appendCache", function () {
+                        appendToTable(this, cache);
+                    }).bind("applyWidgetId", function (e, id) {
+                        getWidgetById(id).format(this);
+                    }).bind("applyWidgets", function () {
+                        // apply widgets
+                        applyWidget(this);
+                    });
+                    if ($.metadata && ($(this).metadata() && $(this).metadata().sortlist)) {
+                        config.sortList = $(this).metadata().sortlist;
+                    }
+                    // if user has supplied a sort list to constructor.
+                    if (config.sortList.length > 0) {
+                        $this.trigger("sorton", [config.sortList]);
+                    }
+                    // apply widgets
+                    applyWidget(this);
+                });
+            };
+            this.addParser = function (parser) {
+                var l = parsers.length,
+                    a = true;
+                for (var i = 0; i < l; i++) {
+                    if (parsers[i].id.toLowerCase() == parser.id.toLowerCase()) {
+                        a = false;
+                    }
+                }
+                if (a) {
+                    parsers.push(parser);
+                };
+            };
+            this.addWidget = function (widget) {
+                widgets.push(widget);
+            };
+            this.formatFloat = function (s) {
+                var i = parseFloat(s);
+                return (isNaN(i)) ? 0 : i;
+            };
+            this.formatInt = function (s) {
+                var i = parseInt(s);
+                return (isNaN(i)) ? 0 : i;
+            };
+            this.isDigit = function (s, config) {
+                // replace all an wanted chars and match.
+                return /^[-+]?\d*$/.test($.trim(s.replace(/[,.']/g, '')));
+            };
+            this.clearTableBody = function (table) {
+                if ($.browser.msie) {
+                    function empty() {
+                        while (this.firstChild)
+                        this.removeChild(this.firstChild);
+                    }
+                    empty.apply(table.tBodies[0]);
+                } else {
+                    table.tBodies[0].innerHTML = "";
+                }
+            };
+        }
+    });
+
+    // extend plugin scope
+    $.fn.extend({
+        tablesorter: $.tablesorter.construct
+    });
+
+    // make shortcut
+    var ts = $.tablesorter;
+
+    // add default parsers
+    ts.addParser({
+        id: "text",
+        is: function (s) {
+            return true;
+        }, format: function (s) {
+            return $.trim(s.toLocaleLowerCase());
+        }, type: "text"
+    });
+
+    ts.addParser({
+        id: "digit",
+        is: function (s, table) {
+            var c = table.config;
+            return $.tablesorter.isDigit(s, c);
+        }, format: function (s) {
+            return $.tablesorter.formatFloat(s);
+        }, type: "numeric"
+    });
+
+    ts.addParser({
+        id: "currency",
+        is: function (s) {
+            return /^[£$€?.]/.test(s);
+        }, format: function (s) {
+            return $.tablesorter.formatFloat(s.replace(new RegExp(/[£$€]/g), ""));
+        }, type: "numeric"
+    });
+
+    ts.addParser({
+        id: "ipAddress",
+        is: function (s) {
+            return /^\d{2,3}[\.]\d{2,3}[\.]\d{2,3}[\.]\d{2,3}$/.test(s);
+        }, format: function (s) {
+            var a = s.split("."),
+                r = "",
+                l = a.length;
+            for (var i = 0; i < l; i++) {
+                var item = a[i];
+                if (item.length == 2) {
+                    r += "0" + item;
+                } else {
+                    r += item;
+                }
+            }
+            return $.tablesorter.formatFloat(r);
+        }, type: "numeric"
+    });
+
+    ts.addParser({
+        id: "url",
+        is: function (s) {
+            return /^(https?|ftp|file):\/\/$/.test(s);
+        }, format: function (s) {
+            return jQuery.trim(s.replace(new RegExp(/(https?|ftp|file):\/\//), ''));
+        }, type: "text"
+    });
+
+    ts.addParser({
+        id: "isoDate",
+        is: function (s) {
+            return /^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(s);
+        }, format: function (s) {
+            return $.tablesorter.formatFloat((s != "") ? new Date(s.replace(
+            new RegExp(/-/g), "/")).getTime() : "0");
+        }, type: "numeric"
+    });
+
+    ts.addParser({
+        id: "percent",
+        is: function (s) {
+            return /\%$/.test($.trim(s));
+        }, format: function (s) {
+            return $.tablesorter.formatFloat(s.replace(new RegExp(/%/g), ""));
+        }, type: "numeric"
+    });
+
+    ts.addParser({
+        id: "usLongDate",
+        is: function (s) {
+            return s.match(new RegExp(/^[A-Za-z]{3,10}\.? [0-9]{1,2}, ([0-9]{4}|'?[0-9]{2}) (([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(AM|PM)))$/));
+        }, format: function (s) {
+            return $.tablesorter.formatFloat(new Date(s).getTime());
+        }, type: "numeric"
+    });
+
+    ts.addParser({
+        id: "shortDate",
+        is: function (s) {
+            return /\d{1,2}[\/\-]\d{1,2}[\/\-]\d{2,4}/.test(s);
+        }, format: function (s, table) {
+            var c = table.config;
+            s = s.replace(/\-/g, "/");
+            if (c.dateFormat == "us") {
+                // reformat the string in ISO format
+                s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/, "$3/$1/$2");
+            } else if (c.dateFormat == "uk") {
+                // reformat the string in ISO format
+                s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/, "$3/$2/$1");
+            } else if (c.dateFormat == "dd/mm/yy" || c.dateFormat == "dd-mm-yy") {
+                s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{2})/, "$1/$2/$3");
+            }
+            return $.tablesorter.formatFloat(new Date(s).getTime());
+        }, type: "numeric"
+    });
+    ts.addParser({
+        id: "time",
+        is: function (s) {
+            return /^(([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(am|pm)))$/.test(s);
+        }, format: function (s) {
+            return $.tablesorter.formatFloat(new Date("2000/01/01 " + s).getTime());
+        }, type: "numeric"
+    });
+    ts.addParser({
+        id: "metadata",
+        is: function (s) {
+            return false;
+        }, format: function (s, table, cell) {
+            var c = table.config,
+                p = (!c.parserMetadataName) ? 'sortValue' : c.parserMetadataName;
+            return $(cell).metadata()[p];
+        }, type: "numeric"
+    });
+    // add default widgets
+    ts.addWidget({
+        id: "zebra",
+        format: function (table) {
+            if (table.config.debug) {
+                var time = new Date();
+            }
+            var $tr, row = -1,
+                odd;
+            // loop through the visible rows
+            $("tr:visible", table.tBodies[0]).each(function (i) {
+                $tr = $(this);
+                // style children rows the same way the parent
+                // row was styled
+                if (!$tr.hasClass(table.config.cssChildRow)) row++;
+                odd = (row % 2 == 0);
+                $tr.removeClass(
+                table.config.widgetZebra.css[odd ? 0 : 1]).addClass(
+                table.config.widgetZebra.css[odd ? 1 : 0])
+            });
+            if (table.config.debug) {
+                $.tablesorter.benchmark("Applying Zebra widget", time);
+            }
+        }
+    });
+})(jQuery);
Index: /extensions/UserAdvManager/tags/2.20.11/admin/template/js/jquery.tablesorter.min.js
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/admin/template/js/jquery.tablesorter.min.js	(revision 9091)
+++ /extensions/UserAdvManager/tags/2.20.11/admin/template/js/jquery.tablesorter.min.js	(revision 9091)
@@ -0,0 +1,4 @@
+
+(function($){$.extend({tablesorter:new
+function(){var parsers=[],widgets=[];this.defaults={cssHeader:"header",cssAsc:"headerSortUp",cssDesc:"headerSortDown",cssChildRow:"expand-child",sortInitialOrder:"asc",sortMultiSortKey:"shiftKey",sortForce:null,sortAppend:null,sortLocaleCompare:true,textExtraction:"simple",parsers:{},widgets:[],widgetZebra:{css:["even","odd"]},headers:{},widthFixed:false,cancelSelection:true,sortList:[],headerList:[],dateFormat:"us",decimal:'/\.|\,/g',onRenderHeader:null,selectorHeaders:'thead th',debug:false};function benchmark(s,d){log(s+","+(new Date().getTime()-d.getTime())+"ms");}this.benchmark=benchmark;function log(s){if(typeof console!="undefined"&&typeof console.debug!="undefined"){console.log(s);}else{alert(s);}}function buildParserCache(table,$headers){if(table.config.debug){var parsersDebug="";}if(table.tBodies.length==0)return;var rows=table.tBodies[0].rows;if(rows[0]){var list=[],cells=rows[0].cells,l=cells.length;for(var i=0;i<l;i++){var p=false;if($.metadata&&($($headers[i]).metadata()&&$($headers[i]).metadata().sorter)){p=getParserById($($headers[i]).metadata().sorter);}else if((table.config.headers[i]&&table.config.headers[i].sorter)){p=getParserById(table.config.headers[i].sorter);}if(!p){p=detectParserForColumn(table,rows,-1,i);}if(table.config.debug){parsersDebug+="column:"+i+" parser:"+p.id+"\n";}list.push(p);}}if(table.config.debug){log(parsersDebug);}return list;};function detectParserForColumn(table,rows,rowIndex,cellIndex){var l=parsers.length,node=false,nodeValue=false,keepLooking=true;while(nodeValue==''&&keepLooking){rowIndex++;if(rows[rowIndex]){node=getNodeFromRowAndCellIndex(rows,rowIndex,cellIndex);nodeValue=trimAndGetNodeText(table.config,node);if(table.config.debug){log('Checking if value was empty on row:'+rowIndex);}}else{keepLooking=false;}}for(var i=1;i<l;i++){if(parsers[i].is(nodeValue,table,node)){return parsers[i];}}return parsers[0];}function getNodeFromRowAndCellIndex(rows,rowIndex,cellIndex){return rows[rowIndex].cells[cellIndex];}function trimAndGetNodeText(config,node){return $.trim(getElementText(config,node));}function getParserById(name){var l=parsers.length;for(var i=0;i<l;i++){if(parsers[i].id.toLowerCase()==name.toLowerCase()){return parsers[i];}}return false;}function buildCache(table){if(table.config.debug){var cacheTime=new Date();}var totalRows=(table.tBodies[0]&&table.tBodies[0].rows.length)||0,totalCells=(table.tBodies[0].rows[0]&&table.tBodies[0].rows[0].cells.length)||0,parsers=table.config.parsers,cache={row:[],normalized:[]};for(var i=0;i<totalRows;++i){var c=$(table.tBodies[0].rows[i]),cols=[];if(c.hasClass(table.config.cssChildRow)){cache.row[cache.row.length-1]=cache.row[cache.row.length-1].add(c);continue;}cache.row.push(c);for(var j=0;j<totalCells;++j){cols.push(parsers[j].format(getElementText(table.config,c[0].cells[j]),table,c[0].cells[j]));}cols.push(cache.normalized.length);cache.normalized.push(cols);cols=null;};if(table.config.debug){benchmark("Building cache for "+totalRows+" rows:",cacheTime);}return cache;};function getElementText(config,node){var text="";if(!node)return"";if(!config.supportsTextContent)config.supportsTextContent=node.textContent||false;if(config.textExtraction=="simple"){if(config.supportsTextContent){text=node.textContent;}else{if(node.childNodes[0]&&node.childNodes[0].hasChildNodes()){text=node.childNodes[0].innerHTML;}else{text=node.innerHTML;}}}else{if(typeof(config.textExtraction)=="function"){text=config.textExtraction(node);}else{text=$(node).text();}}return text;}function appendToTable(table,cache){if(table.config.debug){var appendTime=new Date()}var c=cache,r=c.row,n=c.normalized,totalRows=n.length,checkCell=(n[0].length-1),tableBody=$(table.tBodies[0]),rows=[];for(var i=0;i<totalRows;i++){var pos=n[i][checkCell];rows.push(r[pos]);if(!table.config.appender){var l=r[pos].length;for(var j=0;j<l;j++){tableBody[0].appendChild(r[pos][j]);}}}if(table.config.appender){table.config.appender(table,rows);}rows=null;if(table.config.debug){benchmark("Rebuilt table:",appendTime);}applyWidget(table);setTimeout(function(){$(table).trigger("sortEnd");},0);};function buildHeaders(table){if(table.config.debug){var time=new Date();}var meta=($.metadata)?true:false;var header_index=computeTableHeaderCellIndexes(table);$tableHeaders=$(table.config.selectorHeaders,table).each(function(index){this.column=header_index[this.parentNode.rowIndex+"-"+this.cellIndex];this.order=formatSortingOrder(table.config.sortInitialOrder);this.count=this.order;if(checkHeaderMetadata(this)||checkHeaderOptions(table,index))this.sortDisabled=true;if(checkHeaderOptionsSortingLocked(table,index))this.order=this.lockedOrder=checkHeaderOptionsSortingLocked(table,index);if(!this.sortDisabled){var $th=$(this).addClass(table.config.cssHeader);if(table.config.onRenderHeader)table.config.onRenderHeader.apply($th);}table.config.headerList[index]=this;});if(table.config.debug){benchmark("Built headers:",time);log($tableHeaders);}return $tableHeaders;};function computeTableHeaderCellIndexes(t){var matrix=[];var lookup={};var thead=t.getElementsByTagName('THEAD')[0];var trs=thead.getElementsByTagName('TR');for(var i=0;i<trs.length;i++){var cells=trs[i].cells;for(var j=0;j<cells.length;j++){var c=cells[j];var rowIndex=c.parentNode.rowIndex;var cellId=rowIndex+"-"+c.cellIndex;var rowSpan=c.rowSpan||1;var colSpan=c.colSpan||1
+var firstAvailCol;if(typeof(matrix[rowIndex])=="undefined"){matrix[rowIndex]=[];}for(var k=0;k<matrix[rowIndex].length+1;k++){if(typeof(matrix[rowIndex][k])=="undefined"){firstAvailCol=k;break;}}lookup[cellId]=firstAvailCol;for(var k=rowIndex;k<rowIndex+rowSpan;k++){if(typeof(matrix[k])=="undefined"){matrix[k]=[];}var matrixrow=matrix[k];for(var l=firstAvailCol;l<firstAvailCol+colSpan;l++){matrixrow[l]="x";}}}}return lookup;}function checkCellColSpan(table,rows,row){var arr=[],r=table.tHead.rows,c=r[row].cells;for(var i=0;i<c.length;i++){var cell=c[i];if(cell.colSpan>1){arr=arr.concat(checkCellColSpan(table,headerArr,row++));}else{if(table.tHead.length==1||(cell.rowSpan>1||!r[row+1])){arr.push(cell);}}}return arr;};function checkHeaderMetadata(cell){if(($.metadata)&&($(cell).metadata().sorter===false)){return true;};return false;}function checkHeaderOptions(table,i){if((table.config.headers[i])&&(table.config.headers[i].sorter===false)){return true;};return false;}function checkHeaderOptionsSortingLocked(table,i){if((table.config.headers[i])&&(table.config.headers[i].lockedOrder))return table.config.headers[i].lockedOrder;return false;}function applyWidget(table){var c=table.config.widgets;var l=c.length;for(var i=0;i<l;i++){getWidgetById(c[i]).format(table);}}function getWidgetById(name){var l=widgets.length;for(var i=0;i<l;i++){if(widgets[i].id.toLowerCase()==name.toLowerCase()){return widgets[i];}}};function formatSortingOrder(v){if(typeof(v)!="Number"){return(v.toLowerCase()=="desc")?1:0;}else{return(v==1)?1:0;}}function isValueInArray(v,a){var l=a.length;for(var i=0;i<l;i++){if(a[i][0]==v){return true;}}return false;}function setHeadersCss(table,$headers,list,css){$headers.removeClass(css[0]).removeClass(css[1]);var h=[];$headers.each(function(offset){if(!this.sortDisabled){h[this.column]=$(this);}});var l=list.length;for(var i=0;i<l;i++){h[list[i][0]].addClass(css[list[i][1]]);}}function fixColumnWidth(table,$headers){var c=table.config;if(c.widthFixed){var colgroup=$('<colgroup>');$("tr:first td",table.tBodies[0]).each(function(){colgroup.append($('<col>').css('width',$(this).width()));});$(table).prepend(colgroup);};}function updateHeaderSortCount(table,sortList){var c=table.config,l=sortList.length;for(var i=0;i<l;i++){var s=sortList[i],o=c.headerList[s[0]];o.count=s[1];o.count++;}}function multisort(table,sortList,cache){if(table.config.debug){var sortTime=new Date();}var dynamicExp="var sortWrapper = function(a,b) {",l=sortList.length;for(var i=0;i<l;i++){var c=sortList[i][0];var order=sortList[i][1];var s=(table.config.parsers[c].type=="text")?((order==0)?makeSortFunction("text","asc",c):makeSortFunction("text","desc",c)):((order==0)?makeSortFunction("numeric","asc",c):makeSortFunction("numeric","desc",c));var e="e"+i;dynamicExp+="var "+e+" = "+s;dynamicExp+="if("+e+") { return "+e+"; } ";dynamicExp+="else { ";}var orgOrderCol=cache.normalized[0].length-1;dynamicExp+="return a["+orgOrderCol+"]-b["+orgOrderCol+"];";for(var i=0;i<l;i++){dynamicExp+="}; ";}dynamicExp+="return 0; ";dynamicExp+="}; ";if(table.config.debug){benchmark("Evaling expression:"+dynamicExp,new Date());}eval(dynamicExp);cache.normalized.sort(sortWrapper);if(table.config.debug){benchmark("Sorting on "+sortList.toString()+" and dir "+order+" time:",sortTime);}return cache;};function makeSortFunction(type,direction,index){var a="a["+index+"]",b="b["+index+"]";if(type=='text'&&direction=='asc'){return"("+a+" == "+b+" ? 0 : ("+a+" === null ? Number.POSITIVE_INFINITY : ("+b+" === null ? Number.NEGATIVE_INFINITY : ("+a+" < "+b+") ? -1 : 1 )));";}else if(type=='text'&&direction=='desc'){return"("+a+" == "+b+" ? 0 : ("+a+" === null ? Number.POSITIVE_INFINITY : ("+b+" === null ? Number.NEGATIVE_INFINITY : ("+b+" < "+a+") ? -1 : 1 )));";}else if(type=='numeric'&&direction=='asc'){return"("+a+" === null && "+b+" === null) ? 0 :("+a+" === null ? Number.POSITIVE_INFINITY : ("+b+" === null ? Number.NEGATIVE_INFINITY : "+a+" - "+b+"));";}else if(type=='numeric'&&direction=='desc'){return"("+a+" === null && "+b+" === null) ? 0 :("+a+" === null ? Number.POSITIVE_INFINITY : ("+b+" === null ? Number.NEGATIVE_INFINITY : "+b+" - "+a+"));";}};function makeSortText(i){return"((a["+i+"] < b["+i+"]) ? -1 : ((a["+i+"] > b["+i+"]) ? 1 : 0));";};function makeSortTextDesc(i){return"((b["+i+"] < a["+i+"]) ? -1 : ((b["+i+"] > a["+i+"]) ? 1 : 0));";};function makeSortNumeric(i){return"a["+i+"]-b["+i+"];";};function makeSortNumericDesc(i){return"b["+i+"]-a["+i+"];";};function sortText(a,b){if(table.config.sortLocaleCompare)return a.localeCompare(b);return((a<b)?-1:((a>b)?1:0));};function sortTextDesc(a,b){if(table.config.sortLocaleCompare)return b.localeCompare(a);return((b<a)?-1:((b>a)?1:0));};function sortNumeric(a,b){return a-b;};function sortNumericDesc(a,b){return b-a;};function getCachedSortType(parsers,i){return parsers[i].type;};this.construct=function(settings){return this.each(function(){if(!this.tHead||!this.tBodies)return;var $this,$document,$headers,cache,config,shiftDown=0,sortOrder;this.config={};config=$.extend(this.config,$.tablesorter.defaults,settings);$this=$(this);$.data(this,"tablesorter",config);$headers=buildHeaders(this);this.config.parsers=buildParserCache(this,$headers);cache=buildCache(this);var sortCSS=[config.cssDesc,config.cssAsc];fixColumnWidth(this);$headers.click(function(e){var totalRows=($this[0].tBodies[0]&&$this[0].tBodies[0].rows.length)||0;if(!this.sortDisabled&&totalRows>0){$this.trigger("sortStart");var $cell=$(this);var i=this.column;this.order=this.count++%2;if(this.lockedOrder)this.order=this.lockedOrder;if(!e[config.sortMultiSortKey]){config.sortList=[];if(config.sortForce!=null){var a=config.sortForce;for(var j=0;j<a.length;j++){if(a[j][0]!=i){config.sortList.push(a[j]);}}}config.sortList.push([i,this.order]);}else{if(isValueInArray(i,config.sortList)){for(var j=0;j<config.sortList.length;j++){var s=config.sortList[j],o=config.headerList[s[0]];if(s[0]==i){o.count=s[1];o.count++;s[1]=o.count%2;}}}else{config.sortList.push([i,this.order]);}};setTimeout(function(){setHeadersCss($this[0],$headers,config.sortList,sortCSS);appendToTable($this[0],multisort($this[0],config.sortList,cache));},1);return false;}}).mousedown(function(){if(config.cancelSelection){this.onselectstart=function(){return false};return false;}});$this.bind("update",function(){var me=this;setTimeout(function(){me.config.parsers=buildParserCache(me,$headers);cache=buildCache(me);},1);}).bind("updateCell",function(e,cell){var config=this.config;var pos=[(cell.parentNode.rowIndex-1),cell.cellIndex];cache.normalized[pos[0]][pos[1]]=config.parsers[pos[1]].format(getElementText(config,cell),cell);}).bind("sorton",function(e,list){$(this).trigger("sortStart");config.sortList=list;var sortList=config.sortList;updateHeaderSortCount(this,sortList);setHeadersCss(this,$headers,sortList,sortCSS);appendToTable(this,multisort(this,sortList,cache));}).bind("appendCache",function(){appendToTable(this,cache);}).bind("applyWidgetId",function(e,id){getWidgetById(id).format(this);}).bind("applyWidgets",function(){applyWidget(this);});if($.metadata&&($(this).metadata()&&$(this).metadata().sortlist)){config.sortList=$(this).metadata().sortlist;}if(config.sortList.length>0){$this.trigger("sorton",[config.sortList]);}applyWidget(this);});};this.addParser=function(parser){var l=parsers.length,a=true;for(var i=0;i<l;i++){if(parsers[i].id.toLowerCase()==parser.id.toLowerCase()){a=false;}}if(a){parsers.push(parser);};};this.addWidget=function(widget){widgets.push(widget);};this.formatFloat=function(s){var i=parseFloat(s);return(isNaN(i))?0:i;};this.formatInt=function(s){var i=parseInt(s);return(isNaN(i))?0:i;};this.isDigit=function(s,config){return/^[-+]?\d*$/.test($.trim(s.replace(/[,.']/g,'')));};this.clearTableBody=function(table){if($.browser.msie){function empty(){while(this.firstChild)this.removeChild(this.firstChild);}empty.apply(table.tBodies[0]);}else{table.tBodies[0].innerHTML="";}};}});$.fn.extend({tablesorter:$.tablesorter.construct});var ts=$.tablesorter;ts.addParser({id:"text",is:function(s){return true;},format:function(s){return $.trim(s.toLocaleLowerCase());},type:"text"});ts.addParser({id:"digit",is:function(s,table){var c=table.config;return $.tablesorter.isDigit(s,c);},format:function(s){return $.tablesorter.formatFloat(s);},type:"numeric"});ts.addParser({id:"currency",is:function(s){return/^[£$€?.]/.test(s);},format:function(s){return $.tablesorter.formatFloat(s.replace(new RegExp(/[£$€]/g),""));},type:"numeric"});ts.addParser({id:"ipAddress",is:function(s){return/^\d{2,3}[\.]\d{2,3}[\.]\d{2,3}[\.]\d{2,3}$/.test(s);},format:function(s){var a=s.split("."),r="",l=a.length;for(var i=0;i<l;i++){var item=a[i];if(item.length==2){r+="0"+item;}else{r+=item;}}return $.tablesorter.formatFloat(r);},type:"numeric"});ts.addParser({id:"url",is:function(s){return/^(https?|ftp|file):\/\/$/.test(s);},format:function(s){return jQuery.trim(s.replace(new RegExp(/(https?|ftp|file):\/\//),''));},type:"text"});ts.addParser({id:"isoDate",is:function(s){return/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(s);},format:function(s){return $.tablesorter.formatFloat((s!="")?new Date(s.replace(new RegExp(/-/g),"/")).getTime():"0");},type:"numeric"});ts.addParser({id:"percent",is:function(s){return/\%$/.test($.trim(s));},format:function(s){return $.tablesorter.formatFloat(s.replace(new RegExp(/%/g),""));},type:"numeric"});ts.addParser({id:"usLongDate",is:function(s){return s.match(new RegExp(/^[A-Za-z]{3,10}\.? [0-9]{1,2}, ([0-9]{4}|'?[0-9]{2}) (([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(AM|PM)))$/));},format:function(s){return $.tablesorter.formatFloat(new Date(s).getTime());},type:"numeric"});ts.addParser({id:"shortDate",is:function(s){return/\d{1,2}[\/\-]\d{1,2}[\/\-]\d{2,4}/.test(s);},format:function(s,table){var c=table.config;s=s.replace(/\-/g,"/");if(c.dateFormat=="us"){s=s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/,"$3/$1/$2");}else if(c.dateFormat=="uk"){s=s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/,"$3/$2/$1");}else if(c.dateFormat=="dd/mm/yy"||c.dateFormat=="dd-mm-yy"){s=s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{2})/,"$1/$2/$3");}return $.tablesorter.formatFloat(new Date(s).getTime());},type:"numeric"});ts.addParser({id:"time",is:function(s){return/^(([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(am|pm)))$/.test(s);},format:function(s){return $.tablesorter.formatFloat(new Date("2000/01/01 "+s).getTime());},type:"numeric"});ts.addParser({id:"metadata",is:function(s){return false;},format:function(s,table,cell){var c=table.config,p=(!c.parserMetadataName)?'sortValue':c.parserMetadataName;return $(cell).metadata()[p];},type:"numeric"});ts.addWidget({id:"zebra",format:function(table){if(table.config.debug){var time=new Date();}var $tr,row=-1,odd;$("tr:visible",table.tBodies[0]).each(function(i){$tr=$(this);if(!$tr.hasClass(table.config.cssChildRow))row++;odd=(row%2==0);$tr.removeClass(table.config.widgetZebra.css[odd?0:1]).addClass(table.config.widgetZebra.css[odd?1:0])});if(table.config.debug){$.tablesorter.benchmark("Applying Zebra widget",time);}}});})(jQuery);
Index: /extensions/UserAdvManager/tags/2.20.11/admin/template/js/jquery-latest.js
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/admin/template/js/jquery-latest.js	(revision 9091)
+++ /extensions/UserAdvManager/tags/2.20.11/admin/template/js/jquery-latest.js	(revision 9091)
@@ -0,0 +1,154 @@
+/*!
+ * jQuery JavaScript Library v1.4.2
+ * http://jquery.com/
+ *
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2010, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Sat Feb 13 22:33:48 2010 -0500
+ */
+(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
+e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
+j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
+"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
+true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
+Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
+(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
+a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
+"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
+function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
+c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
+L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
+"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
+a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
+d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
+a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
+!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
+true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML="   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
+var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
+parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
+false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
+s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
+applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
+else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
+a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
+w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
+cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
+i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
+" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
+this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
+e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
+c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
+a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
+function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
+k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
+C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
+null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
+e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
+f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
+if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
+d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
+"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
+a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
+isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
+{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
+if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
+e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
+"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
+d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
+!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
+toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
+u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
+function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
+if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
+t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
+g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
+for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
+1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
+CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
+relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
+l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
+h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
+CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
+g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
+text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
+setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
+h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
+m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
+"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
+h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
+!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
+h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
+q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
+if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
+(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
+function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
+gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
+c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
+{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
+"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
+d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
+a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
+1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
+a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
+c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
+wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
+prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
+this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
+return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
+""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
+this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
+u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
+1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
+return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
+""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
+c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
+c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
+function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
+Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
+"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
+a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
+a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
+"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
+serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
+function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
+global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
+e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
+"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
+false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
+false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
+c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
+d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
+g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
+1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
+"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
+if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
+this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
+"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
+animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
+j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
+this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
+"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
+c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
+this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
+this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
+e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
+c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
+function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
+this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
+k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
+f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
+a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
+c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
+d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
+f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
+"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
+e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
Index: /extensions/UserAdvManager/tags/2.20.11/admin/template/js/jquery.metadata.js
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/admin/template/js/jquery.metadata.js	(revision 6378)
+++ /extensions/UserAdvManager/tags/2.20.11/admin/template/js/jquery.metadata.js	(revision 6378)
@@ -0,0 +1,122 @@
+/*
+ * Metadata - jQuery plugin for parsing metadata from elements
+ *
+ * Copyright (c) 2006 John Resig, Yehuda Katz, J�örn Zaefferer, Paul McLanahan
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ *   http://www.opensource.org/licenses/mit-license.php
+ *   http://www.gnu.org/licenses/gpl.html
+ *
+ * Revision: $Id$
+ *
+ */
+
+/**
+ * Sets the type of metadata to use. Metadata is encoded in JSON, and each property
+ * in the JSON will become a property of the element itself.
+ *
+ * There are three supported types of metadata storage:
+ *
+ *   attr:  Inside an attribute. The name parameter indicates *which* attribute.
+ *          
+ *   class: Inside the class attribute, wrapped in curly braces: { }
+ *   
+ *   elem:  Inside a child element (e.g. a script tag). The
+ *          name parameter indicates *which* element.
+ *          
+ * The metadata for an element is loaded the first time the element is accessed via jQuery.
+ *
+ * As a result, you can define the metadata type, use $(expr) to load the metadata into the elements
+ * matched by expr, then redefine the metadata type and run another $(expr) for other elements.
+ * 
+ * @name $.metadata.setType
+ *
+ * @example <p id="one" class="some_class {item_id: 1, item_label: 'Label'}">This is a p</p>
+ * @before $.metadata.setType("class")
+ * @after $("#one").metadata().item_id == 1; $("#one").metadata().item_label == "Label"
+ * @desc Reads metadata from the class attribute
+ * 
+ * @example <p id="one" class="some_class" data="{item_id: 1, item_label: 'Label'}">This is a p</p>
+ * @before $.metadata.setType("attr", "data")
+ * @after $("#one").metadata().item_id == 1; $("#one").metadata().item_label == "Label"
+ * @desc Reads metadata from a "data" attribute
+ * 
+ * @example <p id="one" class="some_class"><script>{item_id: 1, item_label: 'Label'}</script>This is a p</p>
+ * @before $.metadata.setType("elem", "script")
+ * @after $("#one").metadata().item_id == 1; $("#one").metadata().item_label == "Label"
+ * @desc Reads metadata from a nested script element
+ * 
+ * @param String type The encoding type
+ * @param String name The name of the attribute to be used to get metadata (optional)
+ * @cat Plugins/Metadata
+ * @descr Sets the type of encoding to be used when loading metadata for the first time
+ * @type undefined
+ * @see metadata()
+ */
+
+(function($) {
+
+$.extend({
+	metadata : {
+		defaults : {
+			type: 'class',
+			name: 'metadata',
+			cre: /({.*})/,
+			single: 'metadata'
+		},
+		setType: function( type, name ){
+			this.defaults.type = type;
+			this.defaults.name = name;
+		},
+		get: function( elem, opts ){
+			var settings = $.extend({},this.defaults,opts);
+			// check for empty string in single property
+			if ( !settings.single.length ) settings.single = 'metadata';
+			
+			var data = $.data(elem, settings.single);
+			// returned cached data if it already exists
+			if ( data ) return data;
+			
+			data = "{}";
+			
+			if ( settings.type == "class" ) {
+				var m = settings.cre.exec( elem.className );
+				if ( m )
+					data = m[1];
+			} else if ( settings.type == "elem" ) {
+				if( !elem.getElementsByTagName )
+					return undefined;
+				var e = elem.getElementsByTagName(settings.name);
+				if ( e.length )
+					data = $.trim(e[0].innerHTML);
+			} else if ( elem.getAttribute != undefined ) {
+				var attr = elem.getAttribute( settings.name );
+				if ( attr )
+					data = attr;
+			}
+			
+			if ( data.indexOf( '{' ) <0 )
+			data = "{" + data + "}";
+			
+			data = eval("(" + data + ")");
+			
+			$.data( elem, settings.single, data );
+			return data;
+		}
+	}
+});
+
+/**
+ * Returns the metadata object for the first member of the jQuery object.
+ *
+ * @name metadata
+ * @descr Returns element's metadata object
+ * @param Object opts An object contianing settings to override the defaults
+ * @type jQuery
+ * @cat Plugins/Metadata
+ */
+$.fn.metadata = function( opts ){
+	return $.metadata.get( this[0], opts );
+};
+
+})(jQuery);
Index: /extensions/UserAdvManager/tags/2.20.11/admin/template/js/jquery.tablesorter.pager.js
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/admin/template/js/jquery.tablesorter.pager.js	(revision 6399)
+++ /extensions/UserAdvManager/tags/2.20.11/admin/template/js/jquery.tablesorter.pager.js	(revision 6399)
@@ -0,0 +1,184 @@
+(function($) {
+	$.extend({
+		tablesorterPager: new function() {
+			
+			function updatePageDisplay(c) {
+				var s = $(c.cssPageDisplay,c.container).val((c.page+1) + c.seperator + c.totalPages);	
+			}
+			
+			function setPageSize(table,size) {
+				var c = table.config;
+				c.size = size;
+				c.totalPages = Math.ceil(c.totalRows / c.size);
+				c.pagerPositionSet = false;
+				moveToPage(table);
+				fixPosition(table);
+			}
+			
+			function fixPosition(table) {
+				var c = table.config;
+				if(!c.pagerPositionSet && c.positionFixed) {
+					var c = table.config, o = $(table);
+					if(o.offset) {
+						c.container.css({
+							top: o.offset().top + o.height() + 'px',
+							position: 'absolute'
+						});
+					}
+					c.pagerPositionSet = true;
+				}
+			}
+			
+			function moveToFirstPage(table) {
+				var c = table.config;
+				c.page = 0;
+				moveToPage(table);
+			}
+			
+			function moveToLastPage(table) {
+				var c = table.config;
+				c.page = (c.totalPages-1);
+				moveToPage(table);
+			}
+			
+			function moveToNextPage(table) {
+				var c = table.config;
+				c.page++;
+				if(c.page >= (c.totalPages-1)) {
+					c.page = (c.totalPages-1);
+				}
+				moveToPage(table);
+			}
+			
+			function moveToPrevPage(table) {
+				var c = table.config;
+				c.page--;
+				if(c.page <= 0) {
+					c.page = 0;
+				}
+				moveToPage(table);
+			}
+						
+			
+			function moveToPage(table) {
+				var c = table.config;
+				if(c.page < 0 || c.page > (c.totalPages-1)) {
+					c.page = 0;
+				}
+				
+				renderTable(table,c.rowsCopy);
+			}
+			
+			function renderTable(table,rows) {
+				
+				var c = table.config;
+				var l = rows.length;
+				var s = (c.page * c.size);
+				var e = (s + c.size);
+				if(e > rows.length ) {
+					e = rows.length;
+				}
+				
+				
+				var tableBody = $(table.tBodies[0]);
+				
+				// clear the table body
+				
+				$.tablesorter.clearTableBody(table);
+				
+				for(var i = s; i < e; i++) {
+					
+					//tableBody.append(rows[i]);
+					
+					var o = rows[i];
+					var l = o.length;
+					for(var j=0; j < l; j++) {
+						
+						tableBody[0].appendChild(o[j]);
+
+					}
+				}
+				
+				fixPosition(table,tableBody);
+				
+				$(table).trigger("applyWidgets");
+				
+				if( c.page >= c.totalPages ) {
+        			moveToLastPage(table);
+				}
+				
+				updatePageDisplay(c);
+			}
+			
+			this.appender = function(table,rows) {
+				
+				var c = table.config;
+				
+				c.rowsCopy = rows;
+				c.totalRows = rows.length;
+				c.totalPages = Math.ceil(c.totalRows / c.size);
+				
+				renderTable(table,rows);
+			};
+			
+			this.defaults = {
+				size: 10,
+				offset: 0,
+				page: 0,
+				totalRows: 0,
+				totalPages: 0,
+				container: null,
+				cssNext: '.next',
+				cssPrev: '.prev',
+				cssFirst: '.first',
+				cssLast: '.last',
+				cssPageDisplay: '.pagedisplay',
+				cssPageSize: '.pagesize',
+				seperator: "/",
+				positionFixed: true,
+				appender: this.appender
+			};
+			
+			this.construct = function(settings) {
+				
+				return this.each(function() {	
+					
+					config = $.extend(this.config, $.tablesorterPager.defaults, settings);
+					
+					var table = this, pager = config.container;
+				
+					$(this).trigger("appendCache");
+					
+					config.size = parseInt($(".pagesize",pager).val());
+					
+					$(config.cssFirst,pager).click(function() {
+						moveToFirstPage(table);
+						return false;
+					});
+					$(config.cssNext,pager).click(function() {
+						moveToNextPage(table);
+						return false;
+					});
+					$(config.cssPrev,pager).click(function() {
+						moveToPrevPage(table);
+						return false;
+					});
+					$(config.cssLast,pager).click(function() {
+						moveToLastPage(table);
+						return false;
+					});
+					$(config.cssPageSize,pager).change(function() {
+						setPageSize(table,parseInt($(this).val()));
+						return false;
+					});
+				});
+			};
+			
+		}
+	});
+	// extend plugin scope
+	$.fn.extend({
+        tablesorterPager: $.tablesorterPager.construct
+	});
+	
+})(jQuery);				
Index: /extensions/UserAdvManager/tags/2.20.11/admin/template/index.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/admin/template/index.php	(revision 5593)
+++ /extensions/UserAdvManager/tags/2.20.11/admin/template/index.php	(revision 5593)
@@ -0,0 +1,33 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | PhpWebGallery - a PHP based picture gallery                           |
+// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
+// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
+// +-----------------------------------------------------------------------+
+// | file          : $Id: index.php 1912 2007-03-16 06:30:07Z rub $
+// | last update   : $Date: 2007-03-16 07:30:07 +0100 (ven, 16 mar 2007) $
+// | last modifier : $Author: rub $
+// | revision      : $Revision: 1912 $
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/admin/template/ghosttracker.tpl
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/admin/template/ghosttracker.tpl	(revision 10145)
+++ /extensions/UserAdvManager/tags/2.20.11/admin/template/ghosttracker.tpl	(revision 10145)
@@ -0,0 +1,108 @@
+{combine_script id='jquery' path='themes/default/js/jquery.min.js'}
+{combine_script id='jquery.cluetip' require='jquery' path='themes/default/js/plugins/jquery.cluetip.js'}
+{combine_script id='jquery.tablesorter' require='jquery' path=$UAM_PATH|@cat:'admin/template/js/jquery.tablesorter.min.js'}
+{combine_script id='jquery.tablesorter.pager' require='jquery' path=$UAM_PATH|@cat:'admin/template/js/jquery.tablesorter.pager.js'}
+
+{combine_css path= $UAM_PATH|@cat:'admin/template/uam.css'}
+
+<script type="text/javascript">
+jQuery().ready(function()
+{ldelim}
+  jQuery('.cluetip').cluetip(
+  {ldelim}
+    width: 600,
+    splitTitle: '|'
+  {rdelim});
+{rdelim});
+
+$(document).ready(function() 
+    {ldelim}
+      $("#sorting")
+      .tablesorter({ldelim}sortList:[[4,1]], headers: {ldelim} 0: {ldelim} sorter: false {rdelim}{rdelim}{rdelim})
+      .tablesorterPager({ldelim}container: $("#pager"), positionFixed: false, size: 20, totalPages: 0{rdelim});
+    {rdelim});
+</script>
+
+<div class="titrePage">
+  <h2>{'UAM_Title_Tab'|@translate} {$UAM_VERSION}<br>{'UAM_SubTitle4'|@translate}</h2>
+</div>
+
+<form method="post" action="" class="general">
+  <fieldset>
+  	<legend>{'UAM_GT_Init'|@translate}</legend>
+    <ul>
+		  <li>
+        <label>{'UAM_GhostTracker_Init'|@translate}</label><br><br>
+      </li>
+    </ul>
+    <p><input class="submit" type="submit" value="{'UAM_GT_Reset'|@translate}" name="GhostTracker_Init" ></p>
+  </fieldset>
+  
+  <fieldset>
+    <legend class="cluetip" title="{'UAM_gtTitle'|translate}|{'UAM_gtTitle_d'|translate}">{'UAM_GhostTracker_Title'|@translate}</legend>
+    {if count($users) > 0}
+      <table id="sorting" class="table2" width="97%" summary="">
+        <thead>
+          <tr class="throw">
+            <th>&nbsp;</th>
+            <th>{'Username'|@translate}</th>
+            <th>{'Profile'|@translate}</th>
+            <th>{'Email address'|@translate}</th>
+            <th>{'UAM_LastVisit_Date'|@translate}</th>
+            <th>{'UAM_Reminder'|@translate}</th>
+          </tr>
+        </thead>
+        <tbody>
+          {foreach from=$users item=user name=users_loop}
+            <tr class="{if $smarty.foreach.users_loop.index is odd}row1{else}row2{/if}">
+              <td><input type="checkbox" name="selection[]" value="{$user.ID}" {$user.CHECKED} id="selection-{$user.ID}" ></td>
+              <td><label for="selection-{$user.ID}">{$user.USERNAME}</label></td>
+              <td style="text-align:center;"><a href="./admin.php?page=profile&amp;user_id={$user.ID}" title="{'Profile'|@translate}" onclick="window.open(this.href); return false;"><img src="{$UAM_PATH}admin/template/icon/edit_s.png"></a></td>
+              <td>{$user.EMAIL}</td>
+{if $user.REMINDER == l10n('UAM_Reminder_Sent_NOK')}
+              <td style="color:orange;text-align:center;">{$user.LASTVISIT}</td>
+              <td style="color:orange;text-align:center;">{$user.REMINDER}</td>
+{else $user.REMINDER == l10n('UAM_Reminder_Sent_OK')}
+              <td style="color:red;text-align:center;">{$user.LASTVISIT}</td>
+              <td style="color:red;text-align:center;">{$user.REMINDER}</td>
+{/if}
+              {foreach from=$user.plugin_columns item=data}
+                <td>{$data}</td>
+              {/foreach}    			
+            </tr>
+          {/foreach}
+        </tbody>
+      </table>
+<div id="pager" class="pager">
+	<form>
+		<img src="{$UAM_PATH}admin/template/icon/first.png" class="first">
+		<img src="{$UAM_PATH}admin/template/icon/prev.png" class="prev">
+		<input type="text" class="pagedisplay">
+		<img src="{$UAM_PATH}admin/template/icon/next.png" class="next">
+		<img src="{$UAM_PATH}admin/template/icon/last.png" class="last">
+		<select class="pagesize">
+			<option  value="10">10</option>
+			<option selected="selected" value="20">20</option>
+			<option value="30">30</option>
+			<option value="40">40</option>
+		</select>
+	</form>
+</div>
+        <br>
+<p>
+  {'target'|@translate}
+  <label><input type="radio" name="target" value="all" > {'all'|@translate}</label>
+  <label><input type="radio" name="target" value="selection" checked="checked" > {'selection'|@translate}</label>
+</p>
+
+<p>
+  <input class="submit" type="submit" value="{'UAM_Delete_selected'|@translate}" name="Del_Selected" >
+  <input class="submit" type="submit" value="{'UAM_Reminder'|@translate}" name="Reminder_Email" >
+</p>
+  </fieldset>
+		{else}
+		<div>
+			{'UAM_No_Ghosts'|@translate}
+		</div>
+		{/if}
+</form>
Index: /extensions/UserAdvManager/tags/2.20.11/admin/template/global.tpl
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/admin/template/global.tpl	(revision 11319)
+++ /extensions/UserAdvManager/tags/2.20.11/admin/template/global.tpl	(revision 11319)
@@ -0,0 +1,783 @@
+{combine_script id='jquery' path='themes/default/js/jquery.min.js'}
+{combine_script id='jquery.cluetip' require='jquery' path='themes/default/js/plugins/jquery.cluetip.js'}
+
+{combine_css path= $UAM_PATH|@cat:'admin/template/uam.css'}
+{if $UAM_THEME=='clear'}{combine_css path= $UAM_PATH|@cat:'admin/template/themes/clear/theme.css'}{/if}
+{if $UAM_THEME=='roma'}{combine_css path= $UAM_PATH|@cat:'admin/template/themes/roma/theme.css'}{/if}
+{if $UAM_THEME=='default'}{combine_css path= $UAM_PATH|@cat:'admin/template/themes/default/theme.css'}{/if}
+
+
+<script type="text/javascript">
+jQuery().ready(function()
+{ldelim}
+  jQuery('.cluetip').cluetip(
+  {ldelim}
+    width: 550,
+    splitTitle: '|'
+  {rdelim});
+{rdelim});
+
+function blockToggleDisplay(headerId, contentId)
+{ldelim}
+  var revHeader = document.getElementById(headerId);
+  var revContent = document.getElementById(contentId);
+
+  if (revContent.style.display == 'none')
+  {ldelim}
+    revContent.style.display = 'block';
+    revHeader.className = 'instructionBlockHeaderExpanded';
+  {rdelim}
+  else
+  {ldelim}
+    revContent.style.display = 'none';
+    revHeader.className = 'instructionBlockHeaderCollapsed';
+  {rdelim}
+{rdelim}
+
+function uam_blockToggleDisplay( headerId, contentId )
+{ldelim}
+  if (typeof(headerId)=='string')
+  {ldelim}
+   if (headerId.length > 1)
+       blockToggleDisplay(headerId, contentId) ;
+      document.getElementById("nb_para").value =headerId ;
+      document.getElementById("nb_para2").value =contentId;
+  {rdelim}
+{rdelim}
+</script>
+
+<div class="titrePage">
+  <h2>{'UAM_Title_Tab'|@translate} {$UAM_VERSION}<br>{'UAM_SubTitle1'|@translate}</h2>
+</div>
+
+<form method="post" action="" class="general">
+
+  <p>
+    <input class="submit" type="submit" value="{'UAM_submit'|@translate}" name="submit" {$TAG_INPUT_ENABLED}>
+      &nbsp;
+    <input class="submit" type="submit" value="{'UAM_audit'|@translate}" name="audit">
+  </p>
+
+  <input name="nb_para" id="nb_para" type="text" value="{$nb_para}" style="display:none"> 
+  <input name="nb_para2" id="nb_para2" type="text" value="{$nb_para2}" style="display:none"> 
+
+  <div id="instructionConfig1" class="instructionBlock" >
+
+    <div id="config1_header" class="instructionBlockHeaderCollapsed" onclick="uam_blockToggleDisplay('config1_header', 'Config1')">
+      <span class="cluetip" title="{'UAM_restricTitle'|translate}|{'UAM_restricTitle_d'|translate}">
+        {'UAM_Title1'|@translate}
+      </span>
+    </div>
+
+    <div id="Config1" class="instructionBlockContent" style="display:none">
+      <fieldset>
+        <ul>
+          <li>
+            <label class="cluetip" title="{'UAM_carexcTitle'|translate}|{'UAM_carexcTitle_d'|translate}">
+              {'UAM_Username_Char'|@translate}
+            </label>
+          <br><br>
+            <input type="radio" value="false" {$UAM_USERNAME_CHAR_FALSE} name="UAM_Username_Char">
+              {'UAM_Username_Char_false'|@translate}<br>
+            <input type="radio" value="true" {$UAM_USERNAME_CHAR_TRUE} name="UAM_Username_Char">
+              {'UAM_Username_Char_true'|@translate}
+            <div id="uam_leftmargin">
+              <input type="text" name="UAM_Username_List" value="{$UAM_USERNAME_CHAR_LIST}" size="20" style="text-align: center;">
+            </div>
+          <br><br>
+          </li>
+      
+          <li>
+            <label class="cluetip" title="{'UAM_passwTitle'|translate}|{'UAM_passwTitle_d'|translate}">
+              {'UAM_Password_Enforced'|@translate}
+            </label>
+          <br><br>
+            <input type="radio" value="false" {$UAM_PASSWORDENF_FALSE} name="UAM_Password_Enforced">
+              {'UAM_Disable'|@translate}<br>
+            <input type="radio" value="true" {$UAM_PASSWORDENF_TRUE} name="UAM_Password_Enforced">
+              {'UAM_Password_Enforced_true'|@translate}&nbsp;
+            <input type="text" name="UAM_Password_Score" value="{$UAM_PASSWORD_SCORE}" size="5" style="text-align: center;">
+          <br><br>
+            {'UAM_PasswordTest'|@translate}
+              <input class="cluetip" title="{'UAM_passwtestTitle'|translate}|{'UAM_passwtestTitle_d'|translate}" type="text" name="UAM_Password_Test" value="{$UAM_PASSWORD_TEST}" size="50" style="text-align: left;">
+              &nbsp;&nbsp;&nbsp;
+              <input class="submit" type="submit" value="{'UAM_PasswordTest'|@translate}" name="PasswordTest">
+              &nbsp;&nbsp;&nbsp;{'UAM_ScoreTest'|@translate}{$UAM_PASSWORD_TEST_SCORE}
+            <br><br>
+          </li>
+
+          <ul>
+            <li>
+              <label class="cluetip" title="{'UAM_passwadmTitle'|translate}|{'UAM_passwadmTitle_d'|translate}">
+                {'UAM_AdminPassword_Enforced'|@translate}
+              </label>
+            <br><br>
+              <input type="radio" value="false" {$UAM_ADMINPASSWENF_FALSE} name="UAM_AdminPassword_Enforced">
+                {'UAM_Disable'|@translate}
+            <br>        
+              <input type="radio" value="true" {$UAM_ADMINPASSWENF_TRUE} name="UAM_AdminPassword_Enforced">
+                {'UAM_Enable'|@translate}
+            <br><br>
+            </li>
+          </ul>
+      
+          <li>
+            <label class="cluetip" title="{'UAM_mailexcTitle'|translate}|{'UAM_mailexcTitle_d'|translate}">
+              {'UAM_MailExclusion'|@translate}
+            </label>
+          <br><br>
+            <input type="radio" value="false" {$UAM_MAILEXCLUSION_FALSE} name="UAM_MailExclusion">
+              {'UAM_Disable'|@translate}
+          <br>
+            <input type="radio" value="true" {$UAM_MAILEXCLUSION_TRUE} name="UAM_MailExclusion">
+              {'UAM_MailExclusion_true'|@translate}
+          <br><br>
+          </li>
+
+          {if $UAM_ERROR_REPORTS1}     
+            <div id="uam_leftmargin">
+              <textarea class="uam_textfields" name="UAM_MailExclusion_List" id="UAM_MailExclusion_List" rows="3" style="color: red" {$TAG_INPUT_ENABLED}>{$UAM_MAILEXCLUSION_LIST}</textarea>
+            </div>
+            <br><br>
+          {else}
+            <div id="uam_leftmargin">
+              <textarea class="uam_textfields" name="UAM_MailExclusion_List" id="UAM_MailExclusion_List" rows="3" {$TAG_INPUT_ENABLED}>{$UAM_MAILEXCLUSION_LIST}</textarea>
+            </div>
+            <br><br>
+          {/if}
+        </ul>
+      </fieldset>
+    </div>
+  </div>
+
+
+
+
+  <div id="instructionConfig2" class="instructionBlock" >
+
+    <div id="config2_header" class="instructionBlockHeaderCollapsed" onclick="uam_blockToggleDisplay('config2_header', 'Config2')">
+      <span class="cluetip" title="{'UAM_confirmTitle'|translate}|{'UAM_confirmTitle_d'|translate}">
+        {'UAM_Title2'|@translate}
+      </span>
+    </div>
+  
+    <div id="Config2" class="instructionBlockContent" style="display:none">
+      <fieldset>
+        <ul>
+          <li>
+            <label class="cluetip" title="{'UAM_infomailTitle'|translate}|{'UAM_infomailTitle_d'|translate}">
+              {'UAM_Mail_Info'|@translate}
+            </label>
+          <br><br>
+            <input type="radio" value="false" {$UAM_MAIL_INFO_FALSE} name="UAM_Mail_Info">
+              {'UAM_Disable'|@translate}
+          <br>
+            <input type="radio" value="true" {$UAM_MAIL_INFO_TRUE} name="UAM_Mail_Info">
+              {'UAM_Enable'|@translate}
+          <br><br>
+          </li>
+
+        {if $UAM_MAIL_INFO_FALSE}
+          <div class="uam_hide">
+        {/if}
+
+          <fieldset>
+            <ul>
+              <li>
+                <label class="cluetip" title="{'UAM_HidePasswTitle'|translate}|{'UAM_HidePasswTitle_d'|translate}">
+                  {'UAM_HidePassw'|@translate}
+                </label>
+              <br><br>
+                <input type="radio" value="false" {$UAM_HIDEPASSW_FALSE} name="UAM_HidePassw">
+                  {'UAM_Disable'|@translate}
+              <br>
+                <input type="radio" value="true" {$UAM_HIDEPASSW_TRUE} name="UAM_HidePassw">
+                  {'UAM_Enable'|@translate}
+              <br><br>
+              </li>
+          
+              <li>
+                <label class="cluetip" title="{'UAM_infotxtTitle'|translate}|{'UAM_infotxtTitle_d'|translate}">
+                  {'UAM_MailInfo_Text'|@translate}
+                </label>
+              <br><br>
+                <textarea class="uam_textfields" name="UAM_MailInfo_Text" id="UAM_MailInfo_Text" rows="10" {$TAG_INPUT_ENABLED}>{$UAM_MAILINFO_TEXT}</textarea>
+              <br><br>
+              </li>
+<!--
+            {* if 'FCK_PATH'|@defined *}
+              <div style="text-align:right;">
+                <a href="#" onClick="toogleEditor('UAM_MailInfo_Text'); return false;">FCK Editor On/Off</a>
+              </div>
+            {* /if *}
+-->
+            </ul>
+          </fieldset>
+
+        {if $UAM_MAIL_INFO_FALSE}
+          </div>
+        {/if}
+
+        	<li>
+            <label class="cluetip" title="{'UAM_confirmmailTitle'|translate}|{'UAM_confirmmailTitle_d'|translate}">
+              {'UAM_Confirm_Mail'|@translate}
+            </label>
+          <br><br>
+            <input type="radio" value="false" {$UAM_CONFIRM_MAIL_FALSE} name="UAM_Confirm_Mail">
+              {'UAM_Disable'|@translate}
+          <br>
+            <input type="radio" value="true" {$UAM_CONFIRM_MAIL_TRUE} name="UAM_Confirm_Mail">
+              {'UAM_Confirm_Mail_true'|@translate}
+          <br>
+            <input type="radio" value="local" {$UAM_CONFIRM_MAIL_LOCAL} name="UAM_Confirm_Mail">
+              {'UAM_Confirm_Mail_local'|@translate}
+          <br><br>
+          </li>
+          
+        {if $UAM_CONFIRM_MAIL_FALSE}
+          <div class="uam_hide">
+        {/if}
+
+          <fieldset>
+          <ul>
+         	  <li>
+              <label class="cluetip" title="{'UAM_StuffsTitle'|translate}|{'UAM_StuffsTitle_d'|translate}">
+                {'UAM_Stuffs'|@translate}
+              </label>
+            <br><br>
+              <input type="radio" value="false" {$UAM_STUFFS_FALSE} name="UAM_Stuffs">
+                {'UAM_Disable'|@translate}
+            <br>
+              <input type="radio" value="true" {$UAM_STUFFS_TRUE} name="UAM_Stuffs">
+                {'UAM_Enable'|@translate}
+            <br><br>
+            </li>
+
+            <li>
+              <label class="cluetip" title="{'UAM_AdminValidationMail'|translate}|{'UAM_AdminValidationMail_d'|translate}">
+                {'UAM_AdminValidationMail_Text'|@translate}
+              </label>
+            <br><br>
+              <textarea class="uam_textfields" name="UAM_AdminValidationMail_Text" id="UAM_AdminValidationMail_Text" rows="10" {$TAG_INPUT_ENABLED}>{$UAM_ADMINVALIDATIONMAIL_TEXT}</textarea>
+            <br><br>
+            </li>
+          </ul>
+
+          <ul>
+         	  <li>
+              <label class="cluetip" title="{'UAM_adminconfmailTitle'|translate}|{'UAM_adminconfmailTitle_d'|translate}">
+                {'UAM_AdminConfMail'|@translate}
+              </label>
+            <br><br>
+              <input type="radio" value="false" {$UAM_ADMINCONFMAIL_FALSE} name="UAM_Admin_ConfMail">
+                {'UAM_Disable'|@translate}
+            <br>
+              <input type="radio" value="true" {$UAM_ADMINCONFMAIL_TRUE} name="UAM_Admin_ConfMail">
+                {'UAM_Enable'|@translate}
+            <br><br>
+            </li>
+            
+            <li>
+              <label class="cluetip" title="{'UAM_confirmtxtTitle'|translate}|{'UAM_confirmtxtTitle_d'|translate}">
+                {'UAM_ConfirmMail_Text'|@translate}
+              </label>
+            <br><br>
+            {if $UAM_ERROR_REPORTS2}
+                <textarea class="uam_textfields" name="UAM_ConfirmMail_Text" id="UAM_ConfirmMail_Text" rows="10" style="color: red" {$TAG_INPUT_ENABLED}>{$UAM_CONFIRMMAIL_TEXT}</textarea>
+            {else}
+                <textarea class="uam_textfields" name="UAM_ConfirmMail_Text" id="UAM_ConfirmMail_Text" rows="10" {$TAG_INPUT_ENABLED}>{$UAM_CONFIRMMAIL_TEXT}</textarea>
+            {/if}
+            <br><br>
+            </li>
+<!--
+            {* if 'FCK_PATH'|@defined *}
+              <div style="text-align:right;">
+                <a href="#" onClick="toogleEditor('UAM_ConfirmMail_Text'); return false;">FCK Editor On/Off</a>
+              </div>
+            {* /if *}
+-->
+
+            <li>
+              <label class="cluetip" title="{'UAM_confirmmail_custom1'|translate}|{'UAM_confirmmail_custom1_d'|translate}">
+                {'UAM_confirmmail_custom_Txt1'|@translate}
+              </label>
+            <br><br>
+                <textarea class="uam_textfields" name="UAM_ConfirmMail_Custom_Txt1" id="UAM_ConfirmMail_Custom_Txt1" rows="10" {$TAG_INPUT_ENABLED}>{$UAM_CONFIRMMAIL_CUSTOM_TXT1}</textarea>
+            <br><br>
+            </li>
+            {if 'FCK_PATH'|@defined}
+              <div style="text-align:right;">
+                <a href="#" onClick="toogleEditor('UAM_ConfirmMail_Custom_Txt1'); return false;">FCK Editor On/Off</a>
+              </div>
+            {/if}
+
+            <li>
+              <label class="cluetip" title="{'UAM_confirmmail_custom2'|translate}|{'UAM_confirmmail_custom2_d'|translate}">
+                {'UAM_confirmmail_custom_Txt2'|@translate}
+              </label>
+            <br><br>
+                <textarea class="uam_textfields" name="UAM_ConfirmMail_Custom_Txt2" id="UAM_ConfirmMail_Custom_Txt2" rows="10" {$TAG_INPUT_ENABLED}>{$UAM_CONFIRMMAIL_CUSTOM_TXT2}</textarea>
+            <br><br>
+            </li>
+            {if 'FCK_PATH'|@defined}
+              <div style="text-align:right;">
+                <a href="#" onClick="toogleEditor('UAM_ConfirmMail_Custom_Txt2'); return false;">FCK Editor On/Off</a>
+              </div>
+            {/if}
+          </ul>
+          </fieldset>
+
+          <fieldset>
+          <ul>
+            <div id="uam_notice">{'UAM_Confirm_grpstat_notice'|@translate}</div>
+              <br>
+              <li>
+                <label class="cluetip" title="{'UAM_confirmgrpTitle'|translate}|{'UAM_confirmgrpTitle_d'|translate}">
+                  {'UAM_Confirm_Group'|@translate}
+                </label>
+              <br><br>
+              </li>
+
+              <ul>
+                <li>
+                  <label>
+                    {'UAM_No_Confirm_Group'|@translate}
+                  </label>
+                <br>
+                  <div id="uam_leftmargin">
+                    {html_options name="UAM_No_Confirm_Group" options=$No_Confirm_Group.group_options selected=$No_Confirm_Group.group_selected}
+                  </div>
+                <br><br>
+                </li>
+
+                <li>
+                  <label>
+                    {'UAM_Validated_Group'|@translate}
+                  </label>
+                <br>
+                  <div id="uam_leftmargin">
+                    {html_options name="UAM_Validated_Group" options=$Validated_Group.group_options selected=$Validated_Group.group_selected}
+                  </div>
+                <br><br>
+                </li>
+              </ul>
+
+              <li>
+                <label class="cluetip" title="{'UAM_confirmstatTitle'|translate}|{'UAM_confirmstatTitle_d'|translate}">
+                  {'UAM_Confirm_Status'|@translate}
+                </label>
+              <br><br>
+              </li>
+
+              <ul>
+                <li>
+                  <label>
+                    {'UAM_No_Confirm_Status'|@translate}
+                  </label>
+                <br>
+                  <div id="uam_leftmargin">
+                    {html_options name="UAM_No_Confirm_Status" options=$No_Confirm_Status.Status_options selected=$No_Confirm_Status.Status_selected}
+                  </div>
+                <br><br>
+                </li>
+
+                <li>
+                  <label>
+                    {'UAM_Validated_Status'|@translate}
+                  </label>
+                <br>
+                  <div id="uam_leftmargin">
+                    {html_options name="UAM_Validated_Status" options=$Confirm_Status.Status_options selected=$Confirm_Status.Status_selected}
+                  </div>
+                <br><br>
+                </li>
+              </ul>
+            </ul>
+            </fieldset>
+
+            <fieldset>
+            <ul>
+              <li>
+                <label class="cluetip" title="{'UAM_validationlimitTitle'|translate}|{'UAM_validationlimitTitle_d'|translate}">
+                  {'UAM_ValidationLimit_Info'|@translate}
+                </label>
+              <br><br>
+                <input type="radio" value="false" {$UAM_CONFIRMMAIL_TIMEOUT_FALSE} name="UAM_ConfirmMail_TimeOut">
+                  {'UAM_Disable'|@translate}
+              <br>
+                <input type="radio" value="true" {$UAM_CONFIRMMAIL_TIMEOUT_TRUE} name="UAM_ConfirmMail_TimeOut">
+                  {'UAM_ConfirmMail_TimeOut_true'|@translate}
+                <input type="text" name="UAM_ConfirmMail_Delay" value="{$UAM_CONFIRMMAIL_DELAY}" size="5" style="text-align: center;">
+              <br><br>
+              </li>
+
+              <li>
+                <label class="cluetip" title="{'UAM_remailTitle'|translate}|{'UAM_remailTitle_d'|translate}">
+                  {'UAM_ConfirmMail_Remail'|@translate}
+                </label>
+              <br><br>
+                <input type="radio" value="false" {$UAM_CONFIRMMAIL_REMAIL_FALSE} name="UAM_ConfirmMail_Remail">
+                  {'UAM_Disable'|@translate}
+              <br>
+                <input type="radio" value="true" {$UAM_CONFIRMMAIL_REMAIL_TRUE} name="UAM_ConfirmMail_Remail">
+                  {'UAM_Enable'|@translate}
+              <br><br>
+              </li>
+
+              <ul>
+                <li>
+                  <label class="cluetip" title="{'UAM_remailtxt1Title'|translate}|{'UAM_remailtxt1Title_d'|translate}">
+                    {'UAM_ConfirmMail_ReMail_Txt1'|@translate}
+                  </label>
+                <br><br>
+                {if $UAM_ERROR_REPORTS3}
+                    <textarea class="uam_textfields" name="UAM_ConfirmMail_ReMail_Txt1" id="UAM_ConfirmMail_ReMail_Txt1" rows="10" style="color: red" {$TAG_INPUT_ENABLED}>{$UAM_CONFIRMMAIL_REMAIL_TXT1}</textarea>
+                {else}
+                    <textarea class="uam_textfields" name="UAM_ConfirmMail_ReMail_Txt1" id="UAM_ConfirmMail_ReMail_Txt1" rows="10" {$TAG_INPUT_ENABLED}>{$UAM_CONFIRMMAIL_REMAIL_TXT1}</textarea>
+                {/if}
+                <br><br>
+                </li>
+<!--
+                {* if 'FCK_PATH'|@defined *}
+                  <div style="text-align:right;">
+                    <a href="#" onClick="toogleEditor('UAM_ConfirmMail_ReMail_Txt1'); return false;">FCK Editor On/Off</a>
+                  </div>
+                {* /if *}
+-->
+
+                <li>
+                  <label class="cluetip" title="{'UAM_remailtxt2Title'|translate}|{'UAM_remailtxt2Title_d'|translate}">
+                    {'UAM_ConfirmMail_ReMail_Txt2'|@translate}
+                  </label>
+                <br><br>
+                {if $UAM_ERROR_REPORTS4}
+                    <textarea class="uam_textfields" name="UAM_ConfirmMail_ReMail_Txt2" id="UAM_ConfirmMail_ReMail_Txt2" rows="10" style="color: red" {$TAG_INPUT_ENABLED}>{$UAM_CONFIRMMAIL_REMAIL_TXT2}</textarea>
+                {else}
+                    <textarea class="uam_textfields" name="UAM_ConfirmMail_ReMail_Txt2" id="UAM_ConfirmMail_ReMail_Txt2" rows="10" {$TAG_INPUT_ENABLED}>{$UAM_CONFIRMMAIL_REMAIL_TXT2}</textarea>
+                {/if}
+                <br>
+                </li>
+<!--
+                {* if 'FCK_PATH'|@defined *}
+                  <div style="text-align:right;">
+                    <a href="#" onClick="toogleEditor('UAM_ConfirmMail_ReMail_Txt2'); return false;">FCK Editor On/Off</a>
+                  </div>
+                {* /if *}
+-->
+              </ul>
+            </ul>
+            </fieldset>
+
+          {if $UAM_CONFIRMMAIL_TIMEOUT_FALSE and $UAM_CONFIRMMAIL_REMAIL_FALSE}
+            <div class="uam_hide">
+          {/if}
+
+          <fieldset>
+          <ul>
+            <li>
+              <label class="cluetip" title="{'UAM_USRAutoTitle'|translate}|{'UAM_USRAutoTitle_d'|translate}">
+                {'UAM_USRAuto'|@translate}
+              </label>
+            <br><br>
+              <input type="radio" value="false" {$UAM_USRAUTO_FALSE} name="UAM_USRAuto">
+                {'UAM_Disable'|@translate}
+            <br>
+              <input type="radio" value="true" {$UAM_USRAUTO_TRUE} name="UAM_USRAuto">
+                {'UAM_Enable'|@translate}
+            <br><br>
+            </li>
+
+            <ul>
+              <li>
+                <label class="cluetip" title="{'UAM_USRAutoDelTitle'|translate}|{'UAM_USRAutoDelTitle_d'|translate}">
+                  {'UAM_USRAutoDel'|@translate}
+                </label>
+              <br><br>
+                <textarea class="uam_textfields" name="UAM_USRAutoDelText" id="UAM_USRAutoDelText" rows="10" {$TAG_INPUT_ENABLED}>{$UAM_USRAUTODEL_TEXT}</textarea>
+              <br><br>
+              {if 'FCK_PATH'|@defined}
+                <div style="text-align:right;">
+                  <a href="#" onClick="toogleEditor('UAM_USRAutoDelText'); return false;">FCK Editor On/Off</a>
+                </div>
+              {/if}
+              </li>
+
+              <li>
+                <label class="cluetip" title="{'UAM_USRAutoMailTitle'|translate}|{'UAM_USRAutoMailTitle_d'|translate}">
+                  {'UAM_USRAutoMail'|@translate}
+                </label>
+              <br><br>
+                <input type="radio" value="false" {$UAM_USRAUTOMAIL_FALSE} name="UAM_USRAutoMail">
+                  {'UAM_Disable'|@translate}
+              <br>
+                <input type="radio" value="true" {$UAM_USRAUTOMAIL_TRUE} name="UAM_USRAutoMail">
+                  {'UAM_Enable'|@translate}
+              <br><br><br>
+              </li>
+            </ul>
+          </ul>
+          </fieldset>
+
+          {if $UAM_CONFIRMMAIL_TIMEOUT_FALSE and $UAM_CONFIRMMAIL_REMAIL_FALSE}
+            </div>
+          {/if}
+
+        {if $UAM_CONFIRM_MAIL_FALSE}
+          </div>
+        {/if}
+
+        </ul>
+      </fieldset>
+    </div>
+  </div>
+
+
+  <div id="instructionConfig3" class="instructionBlock" >
+
+    <div id="config3_header" class="instructionBlockHeaderCollapsed" onclick="uam_blockToggleDisplay('config3_header', 'Config3')">
+      <span class="cluetip" title="{'UAM_miscTitle'|translate}|{'UAM_miscTitle_d'|translate}">{'UAM_Title3'|@translate}</span>
+    </div>
+  
+    <div id="Config3" class="instructionBlockContent" style="display:none">
+      <fieldset>
+        <ul>
+          <li>
+            <label class="cluetip" title="{'UAM_ghosttrackerTitle'|translate}|{'UAM_ghosttrackerTitle_d'|translate}">
+              {'UAM_GhostTracker'|@translate}
+            </label>
+          <br><br>
+            <input type="radio" value="false" {$UAM_GHOSTRACKER_FALSE} name="UAM_GhostUser_Tracker">
+              {'UAM_Disable'|@translate}
+          <br>
+            <input type="radio" value="true" {$UAM_GHOSTRACKER_TRUE} name="UAM_GhostUser_Tracker">
+              {'UAM_GhostTracker_true'|@translate}
+            <input type="text" name="UAM_GhostTracker_DayLimit" value="{$UAM_GHOSTRACKER_DAYLIMIT}" size="5" style="text-align: center;">
+          <br><br>
+          </li>
+
+          <fieldset>          
+          <ul>
+            <li>
+              <label class="cluetip" title="{'UAM_gttextTitle'|translate}|{'UAM_gttextTitle_d'|translate}">
+                {'UAM_GhostTracker_ReminderText'|@translate}
+              </label>
+            <br><br>
+              <textarea class="uam_textfields" name="UAM_GhostTracker_ReminderText" id="UAM_GhostTracker_ReminderText" rows="10" {$TAG_INPUT_ENABLED}>{$UAM_GHOSTRACKER_REMINDERTEXT}</textarea>
+            <br><br>
+            </li>
+<!--
+            {* if 'FCK_PATH'|@defined *}
+              <div style="text-align:right;">
+                <a href="#" onClick="toogleEditor('UAM_GhostTracker_ReminderText'); return false;">FCK Editor On/Off</a>
+              </div>
+            {* /if *}
+-->
+
+            <li>
+              <label class="cluetip" title="{'UAM_GTAutoTitle'|translate}|{'UAM_GTAutoTitle_d'|translate}">
+                {'UAM_GTAuto'|@translate}
+              </label>
+            <br><br>
+              <input type="radio" value="false" {$UAM_GTAUTO_FALSE} name="UAM_GTAuto">
+                {'UAM_Disable'|@translate}
+            <br>
+              <input type="radio" value="true" {$UAM_GTAUTO_TRUE} name="UAM_GTAuto">
+                {'UAM_Enable'|@translate}
+            <br><br>
+            </li>
+            
+            {if $UAM_GTAUTO_FALSE}
+              <div class="uam_hide">
+            {/if}
+                <ul>
+                  <li>
+                    <label class="cluetip" title="{'UAM_GTAutoDelTitle'|translate}|{'UAM_GTAutoDelTitle_d'|translate}">
+                      {'UAM_GTAutoDel'|@translate}
+                    </label>
+                  <br><br>
+                      <textarea class="uam_textfields" name="UAM_GTAutoDelText" id="UAM_GTAutoDelText" rows="10" {$TAG_INPUT_ENABLED}>{$UAM_GTAUTODEL_TEXT}</textarea>
+                  <br><br>
+                      
+                  {if 'FCK_PATH'|@defined}
+                    <div style="text-align:right;">
+                      <a href="#" onClick="toogleEditor('UAM_GTAutoDelText'); return false;">FCK Editor On/Off</a>
+                    </div>
+                  {/if}
+                  </li>
+
+                  <li>
+                    <label class="cluetip" title="{'UAM_GTAutoGpTitle'|translate}|{'UAM_GTAutoGpTitle_d'|translate}">
+                      {'UAM_GTAutoGp'|@translate}
+                    </label>
+                  <br><br>
+                    <ul>
+                      <li>
+                        <label>
+                          {'UAM_Expired_Group'|@translate}
+                        </label>
+                        <br>
+                          <div id="uam_leftmargin">
+                            {html_options name="UAM_Downgrade_Group" options=$Downgrade_Group.group_options selected=$Downgrade_Group.group_selected}
+                          </div>
+                      <br><br>
+                      </li>
+
+                      <li>
+                        <label>
+                          {'UAM_Expired_Status'|@translate}
+                        </label>
+                      <br>
+                        <div id="uam_leftmargin">
+                          {html_options name="UAM_Downgrade_Status" options=$Downgrade_Status.Status_options selected=$Downgrade_Status.Status_selected}
+                        </div>
+                      <br><br>
+                      </li>
+                    </ul>
+
+                    <ul>
+                      <li>
+                        <label class="cluetip" title="{'UAM_GTAutoMailTitle'|translate}|{'UAM_GTAutoMailTitle_d'|translate}">
+                          {'UAM_GTAutoMail'|@translate}
+                        </label>
+                      <br><br>
+                        <input type="radio" value="false" {$UAM_GTAUTOMAIL_FALSE} name="UAM_GTAutoMail">
+                          {'UAM_Disable'|@translate}
+                      <br>
+                        <input type="radio" value="true" {$UAM_GTAUTOMAIL_TRUE} name="UAM_GTAutoMail">
+                          {'UAM_Enable'|@translate}
+                      <br><br><br>
+                        <textarea class="uam_textfields" name="UAM_GTAutoMailText" id="UAM_GTAutoMailText" rows="10" {$TAG_INPUT_ENABLED}>{$UAM_GTAUTOMAILTEXT}</textarea>
+                      <br><br>
+                      </li>
+                    </ul>
+                  </li>
+                </ul>
+            {if $UAM_GTAUTO_FALSE}
+              </div>
+            {/if}
+          </ul>
+          </fieldset>
+        </ul>
+      </fieldset>
+
+      <fieldset>
+        <fieldset>
+          <ul>
+            <li>
+              <label class="cluetip" title="{'UAM_lastvisitTitle'|translate}|{'UAM_lastvisitTitle_d'|translate}">
+                {'UAM_LastVisit'|@translate}
+              </label>
+            <br><br>
+              <input type="radio" value="false" {$UAM_ADDLASTVISIT_FALSE} name="UAM_Add_LastVisit_Column">
+                {'UAM_Disable'|@translate}
+            <br>
+              <input type="radio" value="true" {$UAM_ADDLASTVISIT_TRUE} name="UAM_Add_LastVisit_Column">
+                {'UAM_Enable'|@translate}
+            <br><br>
+            </li>
+
+            <li>
+              <label class="cluetip" title="{'UAM_RedirTitle'|translate}|{'UAM_RedirTitle_d'|translate}">
+                {'UAM_RedirToProfile'|@translate}
+              </label>
+            <br><br>
+              <input type="radio" value="false" {$UAM_REDIRTOPROFILE_FALSE} name="UAM_RedirToProfile">
+                {'UAM_Disable'|@translate}
+            <br>
+              <input type="radio" value="true" {$UAM_REDIRTOPROFILE_TRUE} name="UAM_RedirToProfile">
+                {'UAM_Enable'|@translate}
+            <br><br>
+            </li>
+          </ul>
+        </fieldset>
+
+        <fieldset>
+          <ul>
+            <li>
+              <label class="cluetip" title="{'UAM_CustomPasswRetrTitle'|translate}|{'UAM_CustomPasswRetrTitle_d'|translate}">
+                {'UAM_CustomPasswRetr'|@translate}
+              </label>
+            <br><br>
+              <input type="radio" value="false" {$UAM_CUSTOMPASSWRETR_FALSE} name="UAM_CustomPasswRetr">
+                {'UAM_Disable'|@translate}
+            <br>
+              <input type="radio" value="true" {$UAM_CUSTOMPASSWRETR_TRUE} name="UAM_CustomPasswRetr">
+                {'UAM_Enable'|@translate}
+            <br><br><br>
+              <textarea class="uam_textfields" name="UAM_CustomPasswRetr_Text" id="UAM_CustomPasswRetr_Text" rows="10" {$TAG_INPUT_ENABLED}>{$UAM_CUSTOMPASSWRETR_TEXT}</textarea>
+            <br><br>
+            </li>
+          </ul>
+        </fieldset>
+      </fieldset>
+    </div>
+  </div>
+
+  <p>
+    <input class="submit" type="submit" value="{'UAM_submit'|@translate}" name="submit" {$TAG_INPUT_ENABLED} >&nbsp;<input class="submit" type="submit" value="{'UAM_audit'|@translate}" name="audit">
+  </p>
+</form>
+
+
+<div id="instructionTips" class="instructionBlock" >
+  <div id="Backup_header" class="instructionBlockHeaderCollapsed" onclick="uam_blockToggleDisplay('Backup_header', 'Backup')">
+    <span class="cluetip" title="{'UAM_DumpTitle'|translate}|{'UAM_DumpTitle_d'|translate}">{'UAM_DumpTxt'|@translate}</span>
+  </div>
+  
+  <div id="Backup" class="instructionBlockContent" style="display:none">
+<fieldset>
+<form method="post" action="" class="general">
+  <p>
+    {'UAM_Dump_Download'|@translate}&nbsp;
+      <input type="checkbox" name="dump_download" value="true" {$UAM_DUMP_DOWNLOAD}>
+  <br><br>
+      <input class="submit" type="submit" value="{'UAM_Save'|@translate}" name="save" {$TAG_INPUT_ENABLED}>
+  </p>
+</form>
+</fieldset>
+  </div>
+
+</div>
+
+
+<div id="instructionTips" class="instructionBlock" >
+  <div id="Tips_header" class="instructionBlockHeaderCollapsed" onclick="uam_blockToggleDisplay('Tips_header', 'Tips')">
+    <span class="cluetip" title="{'UAM_tipsTitle'|translate}|{'UAM_tipsTitle_d'|translate}">{'UAM_Title4'|@translate}</span>
+  </div>
+  
+  <div id="Tips" class="instructionBlockContent" style="display:none">
+    <fieldset>
+      <div id="Tips1_header" class="instructionBlockHeaderCollapsed" onclick="uam_blockToggleDisplay('Tips1_header', 'Tips1')">
+        <span>{'UAM_Tips1'|@translate}</span>
+      </div>
+      <div id="Tips1" class="instructionBlockContent" style="display:none">
+        <fieldset>
+          {'UAM_Tips1_txt'|@translate}
+        </fieldset>
+      </div>
+    </fieldset>
+
+    <fieldset>
+      <div id="Tips2_header" class="instructionBlockHeaderCollapsed" onclick="uam_blockToggleDisplay('Tips2_header', 'Tips2')">
+        <span>{'UAM_Tips2'|@translate}</span>
+      </div>
+      <div id="Tips2" class="instructionBlockContent" style="display:none">
+        <fieldset>
+          {'UAM_Tips2_txt'|@translate}
+        </fieldset>
+      </div>
+    </fieldset>
+  </div>
+
+</div>
+
+
+<fieldset>
+  {'UAM_Support_txt'|@translate}
+</fieldset>
+
+<script type="text/javascript">
+  var n1=document.getElementById("nb_para").value;
+  var n2=document.getElementById("nb_para2").value;
+   uam_blockToggleDisplay(n1,n2);
+</script>
Index: /extensions/UserAdvManager/tags/2.20.11/admin/index.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/admin/index.php	(revision 3742)
+++ /extensions/UserAdvManager/tags/2.20.11/admin/index.php	(revision 3742)
@@ -0,0 +1,33 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | PhpWebGallery - a PHP based picture gallery                           |
+// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
+// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
+// +-----------------------------------------------------------------------+
+// | file          : $Id: index.php 1912 2007-03-16 06:30:07Z rub $
+// | last update   : $Date: 2007-03-16 07:30:07 +0100 (ven, 16 mar 2007) $
+// | last modifier : $Author: rub $
+// | revision      : $Revision: 1912 $
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/changelog.txt.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/changelog.txt.php	(revision 11319)
+++ /extensions/UserAdvManager/tags/2.20.11/changelog.txt.php	(revision 11319)
@@ -0,0 +1,263 @@
+<?php
+/*
+Plugin Name: UserAdvManager
+** Change log **
+***************************************
+***** Plugin history (branch 2.10)*****
+***************************************
+
+-- 2.10.0-beta : Initial beta release for Piwigo compatibility
+-- 2.10.1-beta : Small correction on generated path
+-- 2.10.2-beta : Bug resolved on register validation page
+
+-- 2.10.3 : Final and fully functional release
+						Bug resolved on plugin activation
+
+-- 2.10.4 : Bug fixed on profiles update
+
+-- 2.10.5 : Improved code on profiles update
+
+-- 2.10.6 : Old language packs (iso) deleted (forget from PWG 1.7.x version)
+
+-- 2.10.7 : Bug fixed on user's validation email sending
+
+-- 2.10.8 : ConfirmMail page looks better (Sylvia theme only)
+						Improved code for checking author on guest comments
+
+-- 2.10.9 : Bug fixed - Missing english translation
+						Bug fixed - Notice on forbidden characters function use
+						Bug fixed - Audit on forbidden characters in username didn't work
+						Adding of email provider exclusion (like *@hotmail.com) - Warning ! -> Known bug : This feature doesn't work on user profile page. So, already registered users can change their email address to a forbiden one.
+
+-- 2.10.9a : Email provider exclusion is no longer case sensitive
+
+-- 2.10.9b : Bug fixed - Home icon wasn't linked to gallery url in ConfirmMail page. If GALLERY_URL is not set, Home icon gets the pwg root path.
+
+-- 2.10.9c : Bug fixed - If Email provider exclusion is set off, new registered user will have a PHP notice on "Undefined variable: ncsemail"
+
+-- 2.10.9d : Code simplification - need no more ""template"" sub-directory in plugin directory for enhance "back link" icon in ConfirMail.tpl
+
+-- 2.10.9e : Compatibility improvement with PHP 5.3 - Some old functions will be deprecated like :
+							ereg replaced by preg_match
+							eregi replace by preg_match with "i" moderator
+							split replace by preg_split
+				
+-- 2.10.9f : Compatibility bug fixed when used with DynamicRecentPeriod plugin
+
+
+***** Plugin history (branch 2.11)***** 
+
+-- 2.11.0 : New tabsheet menu to manage ConfirMail functions (setting a timeout without validation, Cleanup expired user's accounts, Force confirmation, Renew validation key, list unvalidated users,...)
+						Beautify plugin's main admin panel
+						
+-- 2.11.1 : Bug fixed with install and upgrade functions
+						Language files correction
+
+-- 2.11.2 : Bug fixed on bad query for unvalidated users display in unvalidated users list
+						Bug fixed : Sql syntax error on plugin activation
+
+-- 2.11.3 : On Patricia's request (french forum and bug 1173), the unvalidated users management tab shows users according with the settings of unvalidated group and / or unvalidated status.
+						Feature 1172 added : Email providers exclusion list can be set with CR/LF between each entry. The comma seperator (,) is still mandatory.
+						Bug 1175 fixed : Bad translation tag in french language file.
+						Improvement of unvalidated users management tab (feature 1174)- Expired users are displayed in red color text.
+
+-- 2.11.4 : Bug 1177 fixed : Width of excluded email providers list reset to ancient value (80 col)
+						Bug 1179 fixed : Adding a notice in plugin inline documentation for use of validation groups and status. A default group must be set in Piwigo's groups settings and the "Guest" (or another user) must be set as default for status values.
+						Bug 1182 fixed : Language tag missing in confirmation email generation 
+
+-- 2.11.5 : Bug 1195 fixed : Registration displays the good title
+
+
+***************************************
+***** Plugin history (branch 2.12)*****
+***************************************
+
+-- 2.12.0 : Bug 1206 fixed : All plugin functionnalities work in user's profile page
+            Plugin's core code and admin panel refactoring
+            Password control and enforcement : A complexity score is computed on user registration. If this score is less than the goal set by admin, the password choosen is rejected.
+            Feature 1194 "Ghost Tracker" added : New plugin tab displays users who don't comes back to the gallery since x days. Ability to send email reminders and to delete reminded but "dead" users. It's the reason why this feature is called "Ghost Tracker".
+
+-- 2.12.1 : Rollback on admin panel improvement (it was a bad idea)
+
+-- 2.12.2 : Bug 1221 fixed - Adding of a new funtion to populate the lastvisit table on Ghost Tracker activation
+            Bug 1224 fixed - Error in database after plugin activation
+            Bug 1225 fixed - "Reminder" status don't change from "false" to "true" after the sent of a reminder email
+            Some code beautify (SQL requests and HTML 4 strict for tpl)
+
+-- 2.12.3 : Bug 1226 fixed - "duplicate key error" when lastvisit table is not empty and on using Ghost Tracker init function
+
+-- 2.12.4 : Adding a password field control for SendMail2User - Neighborhood plugin compatibility improvement 
+            Bug 1229 fixed - Email was no longer mandatory when plugin was active, even if Piwigo's email madatory option was set. 
+
+-- 2.12.5 : Bug 1233 fixed -  "duplicate key error" when a user wants to register with an existing username. In fact, all standard Piwigo's register controls didn't work when plugin was activated. That fixes this too.
+            Adding DE, ES and IT languages. All translations are not finalized and could be improved.
+            Adding of description.txt file in language directories.
+
+-- 2.12.6 : Bug 1236 fixed -  Admins was unable to add a new user in the user_list page.
+            Beginning of IT translations
+            
+-- 2.12.7 : Bug 1238 fixed - Simple custom email text wasn't send when Extended Description plugin wasn't set
+            Bug 1245 fixed - Semicolons (;) are no longer allowed in text areas (mail info text, ConfirmMail text, reminder text,...). They'll be replaced by dots (.).
+            Bug 1248 fixed - Php notice on user registration with a forbidden email domain
+            Bug 1250 fixed - Email provider didn't work after the third exclusion in list
+            Escaping all special characters typed in login name and recover them
+
+
+***************************************
+***** Plugin history (branch 2.13)*****
+***************************************
+ 
+-- 2.13.0 : Bug 1246 fixed - Extended Description tags are working again ! Caution : The language used and saved in database is the one configured by default in the visitor's browser and not the language given by Language Switch.
+            Evolution 1239 - New option to add a new tab that shows the number of days since their last visit for each registered user.
+            Bug 1257 fixed - If email exclusion list begins with a CR-LF, an informative warning message is displayed (I was unable to delete automatically this CR-LF).
+            Bug 1259 fixed - PHP notice on user addition by admin in user_list page.
+            Bug 1260 fixed - Username case sensitivity is now fully functionnal in all users entries (user registration and admin panel)
+            Evolution 1273 - Adding of reminder field in advanced user management tab. This allows to see if a reminder have already been send.
+            Evolution 1292 - Adding of navigation bar in tabs where users are listed (when more than 1 page is needed to display users).
+            Code refactory and improvements.
+            Translations improvements.
+
+-- 2.13.1 : Bug 1302 fixed - Re-coded double email check on registration.
+            Bug 1304 fixed - Adding of plugin version in plugin admin panel title.
+
+-- 2.13.2 : Bug 1308 fixed - Reminder emails have the good translated subject.
+
+-- 2.13.3 : Bug 1309 fixed - Forbidden characters in login name work fine again.
+            Bug 1340 fixed - Explanation improvement for option "Nickname is mandatory for comments" 
+            Bug 1342 fixed - Calculation between last visit and today is ok and displays the good color in user list.
+            Italian language improvement (thx to Rio)
+
+-- 2.13.4 : Add of obsolete files management
+            Bug 1303 and 1387 fixed - Due to a bug in Piwigo's 2.0.8 switch_lang() function, the email contents using Extended Description tags wasn't taking user's language in account. A first fix is now set for the current 2.0.8 Piwigo's version and another one is ready to work for the next Piwigo's release.
+            Bug 1444 fixed
+            Bug 1445 fixed - The plugin's administration panel have been all reviewed and improved with text simplification and display enhancement.
+            Bug 1463 fixed
+            
+            *** Feature temporarily postponed in a later version due to problems with ";" in text fields *** Add compatibility with FCK Editor plugin for email text fields
+
+
+***************************************
+***** Plugin history (branch 2.14)*****
+***************************************
+
+-- 2.14.0 : Bug 1308 refixed - Piwigo 2.0.9 fixes the bug on switch_lang() function so the initial UAM fix is no longer needed 
+            Evolution 1392 - No more confirmation email for admins profile changing 
+            Evolution 1465 - Plugin's configuration data are now serialized in database
+            Bug 1466 fixed - The plugin version is correctly displayed on Ghost Tracker tab
+            Bug 1468 fixed - Java error (thx to cljosse)
+            Evolution 1485 - The admin's can choose if the validation of registration have to be sent to users created by them
+            Improving obsolete files cleaning
+            Evolution 1488 - When an admin creates an account an information email is always sent to created user
+            Code simplification - All variables are changed from "UserAdvManager" to "UAM"
+
+-- 2.14.1 : Bug 1497 fixed - Using users tracker without Ghost Tracker is now OK
+
+
+***************************************
+***** Plugin history (branch 2.15)*****
+***************************************
+
+-- 2.15.0 : Plugin compatibility for Piwigo 2.1
+            Bug 1467 fixed - FCK Editor's functionnalities are available on registration's confirmation return page customization fields
+            Bug 1474 fixed - Messages on registration's confirmation return page (ConfirmMail.tpl) are customizable 
+            Bug 1508 fixed - Plugin's name is now UserAdvManager (deletion of "nbc_" in code and PEM)
+            Bug 1551 fixed - Database upgrade improvement
+
+-- 2.15.1 : Bug 1571 fixed - Missing translation tag
+            Bug 1572 fixed - Fix unable to read resource: "ConfirmMail.tpl"
+            Bug 1574 fixed - Beautifying ConfirmMail page
+            Bug 1576 fixed - Compatibility with other database systems than MySql like PostgreSql or Sqlite. Using Piwigo's pwg_db_### integrated functions.
+            Bug 1586 fixed - Links to official forum topic support and bugtacker were added in plugin's admin page
+
+-- 2.15.2 : Bug 1551 re-fixed - There was some problems remaining with old version upgrades
+            Some translations revisited
+            Bug 1655 fixed - Navigation bar is usefull again
+            
+-- 2.15.3 : Quick update to fix a database upgrade issue
+
+-- 2.15.4 : Bug 1310 fixed - UAM tables are now sortable
+            Bug 1656 fixed - New register validation mode: Manual validation by admin
+            Bug 1687 fixed - Login case sensitivity is no more used in this plugin because already set in Piwigo's core
+            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.
+            Bug 1789 fixed - Escaping double quotes in text fields
+            Bug 1790 fixed - Validation tracking tab is set when correct options are set
+            Bug 1795 fixed - Fixes rules using email information and/or email of validation
+
+-- 2.15.5 : Bug 1693 fixed - Multi-languages are available for ConfirmMail customization (using Extended Description plugin)
+            Bug 1727 fixed - The redirection does not appli to admins, webmaster and generic users.
+            Bug 1807 fixed - Textareas are resized according the screen resolution
+            Bug 1808 fixed - The Tracking users table is ordered by default on "LastVisit" field (last in at top) 
+            Bug 1809 fixed - Addition of a direct link to user's profile in all UAM tables. The link gives a new window
+            Bug 1810 partially fixed - Auto login is not performed after visitors have validated their registration but the "home" button changes his link to redirect to identification page when the redirection option is set. Note: The redirection to profile.php doesn't work because I was unable to use the log_user() function on ConfirmMail page. This feature is still under investigation to perform the best way.
+
+-- 2.15.6 : Bug 1819 fixed - Wrong help text on redirection function
+            Bug 1821 fixed - Cleanup of old deprecated functions slags (Case sensitivity on logins)
+            Bug 1834 fixed - Improving plugin installation and uninstallation process
+
+-- 2.15.7 : Bug 1869 fixed - Compatibility with Adult_Content installation process
+
+-- 2.15.8 : Bug 1935 fixed - Fatal error on ConfirmMail page when Extended Description plugin is not used
+            Bug 1936 fixed - Bad home link in ConfirmMail page when gallery URL is not set
+            small CSS improvement (thx to Gotcha)
+
+-- 2.15.9 : Bug 2010 fixed - No confirmation email when information email is not set
+
+-- 2.15.10 : Bug 2050 fixed - Compatibility with Captcha
+
+
+***************************************
+***** Plugin history (branch 2.16)*****
+***************************************
+-- 2.16.0 : Bug 1585 fixed - UAM version is set in database to improve future upgrades
+            Bug 2011 fixed - Text fields are no longer locked if related option button is not set and saved. Now this fields and unused options are hidden
+            Bug 2046 fixed - Using Piwigo's $conf['insensitive_case_logon'] = true option works again with UAM
+            Bug 2053 fixed - Manual validation by admins wasn't working correctly
+            Bug 2054 fixed - Add of customized email notification to validated users when admins validate them manually 
+            Bug 1430, 1840, 2056 fixed - Automated tasks are available to delete or downgrade ghost users with or without email notification
+            Add of Latvian (lv_LV) translation (Thx to Aivars Baldone)
+
+**************************************************************
+***** Plugin history (branch 2.20 - Piwigo 2.2 compliant)*****
+**************************************************************
+-- 2.20.0 : Compliance with Piwigo 2.2
+            Bug 1479 fixed - New feature : Add of a dedicated UAM block in PWG Stuffs plugin to inform unvalidated users on their status 
+            Bug 1666 fixed - New feature : Customizing "lost password" email
+            Bug 2045 fixed - New feature : Special tags insertion in text fields. The tags actually available are [username] (insert current user username),[mygallery] (insert current gallery title), [myurl] (insert gallery url if set in Piwigo's configuration options).
+            Bug 2055 fixed - New automated task for unvalidated registers (auto email reminder sent and auto deletion if already reminded).
+            Bug 2072 fixed - Remove sort on "difference in days" in user tracking tab
+            Bug 2140 fixed - English sentence corrections
+            Bug 2186 fixed - JQuery accordion menu when no users are listed in UAM tables
+            Bug 2188 fixed - Avoid translation flags conflicts
+            Bug 2192 fixed - GT Automated tasks improvement and refactory
+            Bug 2203 fixed - [username] special flag is not supported in lost password email customization
+
+-- 2.20.1 : Bug 2254 fixed - Plugin installation crashes when installing from scratch
+            Bug 2255 fixed - Error in jQuery path
+
+-- 2.20.2 : Bug 2256 fixed - Error on upgrade from version 2.20.0 to 2.20.1
+
+-- 2.20.3 : Bug 2257 fixed - Improve admin panel display with clear theme
+            Bug 2258 fixed - New feature to backup UAM configuration and personnal settings
+
+-- 2.20.4 : Bug 2265 fixed - Add new option to display or not user's password in information email
+
+-- 2.20.5 : Bug 2287 fixed - The UAM block for PWG_Stuffs is correctly displayed (stuffs_module directory was missing)
+
+-- 2.20.6 : Improve database update process
+            Bug 2289 fixed - "Password in clear text in the information email" was working in a reverse logic
+
+-- 2.20.7 : Use pwg_db_real_escape_string() instead of addslashes()
+            Database upgrade process simplied (using version_compare() and code refactoring)
+            Bug 2253 fixed - New feature to allow comments on pictures only for specific users (who belong to a group) when "comments for all" is disabled
+
+-- 2.20.8 : Remove all options related to comments because they are processed in new "Comments Access Manager" plugin.
+
+-- 2.20.9 : Bug fixed on installation from scratch (unable to save config)
+
+-- 2.20.10 : Bug 2324 fixed - New feature : Add [days] autotext flag to insert maximum numbers of days between two visits set in plugin's GhostTracker in GhostTracker reminder email.
+
+-- 2.20.11 : Bug 2336 fixed - New feature : Add [Kdays] autotext flag to insert the number of days until expiration.
+*/
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/template/confmail.css
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/template/confmail.css	(revision 5633)
+++ /extensions/UserAdvManager/tags/2.20.11/template/confmail.css	(revision 5633)
@@ -0,0 +1,31 @@
+H2.confmail
+{
+  text-align: center;
+  font-size: large;
+  color: orange;
+}
+
+/**
+ * Informations box
+ */
+.errors, .infos{
+  margin: 5px;
+  padding: 50px 50px 10px 10px;
+  font-weight:bold;
+  background-repeat: no-repeat;
+  background-position: 5px 5px;
+  padding:15px 60px 0pt 60px;
+  min-height: 54px;
+}
+
+.errors {
+  color: #f22;
+  background-color: #ffd5dc;
+  background-image: url(icon/errors.png);
+}
+
+.infos {
+  color: #0a0;
+  background-color:#c2f5c2;
+  background-image: url(icon/infos.png);
+}
Index: /extensions/UserAdvManager/tags/2.20.11/template/icon/index.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/template/icon/index.php	(revision 5633)
+++ /extensions/UserAdvManager/tags/2.20.11/template/icon/index.php	(revision 5633)
@@ -0,0 +1,33 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | PhpWebGallery - a PHP based picture gallery                           |
+// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
+// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
+// +-----------------------------------------------------------------------+
+// | file          : $Id: index.php 1912 2007-03-16 06:30:07Z rub $
+// | last update   : $Date: 2007-03-16 07:30:07 +0100 (ven, 16 mar 2007) $
+// | last modifier : $Author: rub $
+// | revision      : $Revision: 1912 $
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/template/index.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/template/index.php	(revision 5633)
+++ /extensions/UserAdvManager/tags/2.20.11/template/index.php	(revision 5633)
@@ -0,0 +1,33 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | PhpWebGallery - a PHP based picture gallery                           |
+// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
+// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
+// +-----------------------------------------------------------------------+
+// | file          : $Id: index.php 1912 2007-03-16 06:30:07Z rub $
+// | last update   : $Date: 2007-03-16 07:30:07 +0100 (ven, 16 mar 2007) $
+// | last modifier : $Author: rub $
+// | revision      : $Revision: 1912 $
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/template/ConfirmMail.tpl
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/template/ConfirmMail.tpl	(revision 9178)
+++ /extensions/UserAdvManager/tags/2.20.11/template/ConfirmMail.tpl	(revision 9178)
@@ -0,0 +1,27 @@
+{html_head}<link rel="stylesheet" type="text/css" href="template/confmail.css">{/html_head}
+
+<div id="content" class="content">
+  <div class="titrePage">
+    <ul class="categoryActions">
+      <li>
+    {if $REDIRECT}
+        <a href="{$ROOT_URL}identification.php" title="{'return to homepage'|@translate}">
+          <img src="{$ROOT_URL}{$themeconf.icon_dir}/home.png" class="button" alt="{'home'|@translate}">
+        </a>
+    {else}
+        <a href="{$GALLERY_URL}" title="{'return to homepage'|@translate}">
+          <img src="{$ROOT_URL}{$themeconf.icon_dir}/home.png" class="button" alt="{'home'|@translate}">
+        </a>
+    {/if}
+      </li>
+    </ul>
+    <h2 class="confmail">{'UAM_title_confirm_mail'|@translate}</h2>
+  </div>
+  <ul>
+  {if $STATUS == true}
+    <div class="infos">{$CONFIRM_MAIL_MESSAGE}</div>
+  {elseif $STATUS == false}
+    <div class="errors">{$CONFIRM_MAIL_MESSAGE}</div>
+  {/if}
+  </ul>
+</div>
Index: /extensions/UserAdvManager/tags/2.20.11/template/del_account.tpl
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/template/del_account.tpl	(revision 9178)
+++ /extensions/UserAdvManager/tags/2.20.11/template/del_account.tpl	(revision 9178)
@@ -0,0 +1,17 @@
+{html_head}<link rel="stylesheet" type="text/css" href="template/confmail.css">{/html_head}
+
+<div id="content" class="content">
+  <div class="titrePage">
+    <ul class="categoryActions">
+      <li>
+        <a href="{$GALLERY_URL}" title="{'return to homepage'|@translate}">
+          <img src="{$ROOT_URL}{$themeconf.icon_dir}/home.png" class="button" alt="{'home'|@translate}">
+        </a>
+      </li>
+    </ul>
+    <h2 class="confmail">{'UAM_title_redir_page'|@translate}</h2>
+  </div>
+  <ul>
+    <div class="errors">{$CUSTOM_REDIR_MSG}</div>
+  </ul>
+</div>
Index: /extensions/UserAdvManager/tags/2.20.11/index.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/index.php	(revision 3742)
+++ /extensions/UserAdvManager/tags/2.20.11/index.php	(revision 3742)
@@ -0,0 +1,33 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | PhpWebGallery - a PHP based picture gallery                           |
+// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
+// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
+// +-----------------------------------------------------------------------+
+// | file          : $Id: index.php 1912 2007-03-16 06:30:07Z rub $
+// | last update   : $Date: 2007-03-16 07:30:07 +0100 (ven, 16 mar 2007) $
+// | last modifier : $Author: rub $
+// | revision      : $Revision: 1912 $
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify  |
+// | it under the terms of the GNU General Public License as published by  |
+// | the Free Software Foundation                                          |
+// |                                                                       |
+// | This program is distributed in the hope that it will be useful, but   |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
+// | General Public License for more details.                              |
+// |                                                                       |
+// | You should have received a copy of the GNU General Public License     |
+// | along with this program; if not, write to the Free Software           |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA.                                                                  |
+// +-----------------------------------------------------------------------+
+
+// Recursive call
+$url = '../';
+header( 'Request-URI: '.$url );
+header( 'Content-Location: '.$url );
+header( 'Location: '.$url );
+exit();
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/admin.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/admin.php	(revision 9854)
+++ /extensions/UserAdvManager/tags/2.20.11/admin.php	(revision 9854)
@@ -0,0 +1,3 @@
+<?php
+  include(UAM_PATH.'admin/UAM_admin.php');
+?>
Index: /extensions/UserAdvManager/tags/2.20.11/maintain.inc.php
===================================================================
--- /extensions/UserAdvManager/tags/2.20.11/maintain.inc.php	(revision 11096)
+++ /extensions/UserAdvManager/tags/2.20.11/maintain.inc.php	(revision 11096)
@@ -0,0 +1,327 @@
+<?php
+
+if(!defined('UAM_PATH'))
+{
+  define('UAM_PATH' , PHPWG_PLUGINS_PATH.basename(dirname(__FILE__)).'/');
+}
+
+include_once (UAM_PATH.'include/constants.php');
+include_once (UAM_PATH.'include/functions.inc.php');
+
+
+function plugin_install()
+{
+	global $conf;
+	
+  $default1 = array('false','false',-1,-1,-1,'false','',-1,'','','false','','false',100,'false','false',10,'Hello [username].
+	
+This is a reminder because a very long time passed since your last visit on our gallery [mygallery]. If you do not want anymore to use your access account, please let us know by replying to this email. Your account will be deleted.
+
+On receipt of this message and no new visit within 15 days, we would be obliged to automatically delete your account.
+
+Best regards,
+
+The admin of the gallery.','false','false','false','false','false','Sorry [username], your account has been deleted due to a too long time passed since your last visit at [mygallery].','Sorry [username], your account has been deprecated due to a too long time passed since your last visit at [mygallery]. Please, use the following link to revalidate your account.',-1,-1,'Thank you for registering at [mygallery]. Your account has been manually validated by _admin_. You may now log in at _link_to_site_ and make any appropriate changes to your profile. Welcome to _name_of_site_!','false','You have requested a password reset on our gallery. Please, find below your new connection settings.','false','Sorry, your account has been deleted because you have not validated your registration in requested time. Please, try registration with a valid and non blocked email account.','false','false','false');
+
+	$query = '
+SELECT param
+  FROM '.CONFIG_TABLE.'
+WHERE param = "UserAdvManager"
+;';
+  $count = pwg_db_num_rows(pwg_query($query));
+  
+  if ($count == 0)
+  {
+    $q = '
+INSERT INTO '.CONFIG_TABLE.' (param, value, comment)
+VALUES ("UserAdvManager","'.pwg_db_real_escape_string(serialize($default1)).'","UAM parameters")
+  ;';
+    pwg_query($q);
+  }
+
+
+  $default2 = array('false',5,'Hello [username].
+		
+This is a reminder message because you registered on our gallery [mygallery] but you do not validate your registration and your validation key has expired. To still allow you to access to our gallery, your validation period has been reset. You have again 5 days to validate your registration.
+
+Note: After this period, your account will be permanently deleted.','false','Hello [username].
+
+This is a reminder message because you registered on our gallery [mygallery] but you do not validate your registration and your validation key will expire. To allow you access to our gallery, you have 2 days to confirm your registration by clicking on the link in the message you should have received when you registered.
+
+Note: After this period, your account will be permanently deleted.','You have confirmed that you are human and may now use [mygallery]! Welcome [username]!','Your activation key is incorrect or expired or you have already validated your account, please contact the webmaster to fix this problem.');
+
+	$query = '
+SELECT param
+  FROM '.CONFIG_TABLE.'
+WHERE param = "UserAdvManager_ConfirmMail"
+;';
+  $count = pwg_db_num_rows(pwg_query($query));
+  
+  if ($count == 0)
+  {
+    $q = '
+INSERT INTO '.CONFIG_TABLE.' (param, value, comment)
+VALUES ("UserAdvManager_ConfirmMail","'.pwg_db_real_escape_string(serialize($default2)).'","UAM ConfirmMail parameters")
+  ;';
+    pwg_query($q);
+  }
+
+	$query = '
+SELECT param
+  FROM '.CONFIG_TABLE.'
+WHERE param = "UserAdvManager_Redir"
+;';
+  $count = pwg_db_num_rows(pwg_query($query));
+  
+  if ($count == 0)
+  {
+    $q = '
+INSERT INTO '.CONFIG_TABLE.' (param, value, comment)
+VALUES ("UserAdvManager_Redir","0","UAM Redirections")
+  ;';
+    pwg_query($q);
+  }
+
+// Set current plugin version in config table
+  $plugin =  PluginInfos(UAM_PATH);
+  $version = $plugin['version'];
+
+	$query = '
+SELECT param
+  FROM '.CONFIG_TABLE.'
+WHERE param = "UserAdvManager_Version"
+;';
+  $count = pwg_db_num_rows(pwg_query($query));
+  
+  if ($count == 0)
+  {
+    $q = '
+INSERT INTO '.CONFIG_TABLE.' (param, value, comment)
+VALUES ("UserAdvManager_Version","'.$version.'","UAM version check")
+  ;';
+    pwg_query($q);
+  }
+
+
+	$q = "
+CREATE TABLE IF NOT EXISTS ".USER_CONFIRM_MAIL_TABLE." (
+  id varchar(50) NOT NULL default '',
+  user_id smallint(5) NOT NULL default '0',
+  mail_address varchar(255) default NULL,
+  status enum('webmaster','admin','normal','generic','guest') default NULL,
+  date_check datetime default NULL,
+  reminder ENUM('true','false') NULL,
+PRIMARY KEY  (id)
+  )
+ENGINE=MyISAM;";
+  pwg_query($q);
+
+	$q = "
+CREATE TABLE IF NOT EXISTS ".USER_LASTVISIT_TABLE." (
+  user_id SMALLINT(5) NOT NULL DEFAULT '0',
+  lastvisit DATETIME NULL DEFAULT NULL,
+  reminder ENUM('true','false') NULL,
+PRIMARY KEY (`user_id`)
+  )
+ENGINE=MyISAM;";
+  pwg_query($q);
+}
+
+
+function plugin_activate()
+{
+  global $conf;
+
+/* Cleaning obsolete files */
+/* *********************** */
+  clean_obsolete_files();
+  
+  include_once (UAM_PATH.'include/upgradedb.inc.php');
+
+/* Check if old version is < 2.15 */
+/* ****************************** */
+	$query = '
+SELECT param
+  FROM '.CONFIG_TABLE.'
+WHERE param = "nbc_UserAdvManager"
+;';
+  $count1 = pwg_db_num_rows(pwg_query($query));
+  
+  $query = '
+SELECT *
+  FROM '.CONFIG_TABLE.'
+WHERE param = "nbc_UserAdvManager_ConfirmMail"
+;';
+  $count2 = pwg_db_num_rows(pwg_query($query)); 
+
+/* If old params exist an upgrade is needed */
+/* **************************************** */
+  if ($count1 == 1)
+  {
+/* Check for upgrade from 2.10 to 2.11 */
+/* *********************************** */
+    if ($count1 == 1 and $count2 == 0)
+    {
+    /* upgrade from branch 2.10 to 2.11 */
+    /* ******************************** */
+      upgrade_210_211();
+    }
+
+
+/* Check for upgrade from 2.11 to 2.12 */
+/* *********************************** */
+    if (!table_exist(USER_LASTVISIT_TABLE))
+    {
+    /* upgrade from branch 2.11 to 2.12 */
+    /* ******************************** */
+  		upgrade_211_212();
+    }
+
+
+/* Check for upgrade from 2.12 to 2.13 */
+/* *********************************** */
+    $fields = mysql_list_fields($conf['db_base'],USER_CONFIRM_MAIL_TABLE);
+    $nb_fields = mysql_num_fields($fields); 
+
+    if ($nb_fields < 6)
+    {
+    /* upgrade from branch 2.12 to 2.13 */
+    /* ******************************** */
+      upgrade_212_213();
+    }
+
+
+/* Serializing conf parameters - Available since 2.14.0 */
+/* **************************************************** */
+    if (unserialize($conf['nbc_UserAdvManager']) === false)
+    {
+    /* upgrade from branch 2.13 to 2.14 */
+    /* ******************************** */
+      upgrade_213_214();
+    }
+    
+    /* upgrade from branch 2.14 to 2.15 */
+    /* ******************************** */
+      upgrade_214_215();
+  }
+
+/* Old version is > 2.15 */
+/* ********************* */
+	$query = '
+SELECT param
+  FROM '.CONFIG_TABLE.'
+WHERE param = "UserAdvManager_Redir"
+;';
+  $count = pwg_db_num_rows(pwg_query($query));
+  
+  if ($count == 0)
+  {
+    upgrade_2153_2154();
+  }
+
+/* Check for upgrade from 2.15 to 2.16 */
+/* *********************************** */
+	$query = '
+SELECT param
+  FROM '.CONFIG_TABLE.'
+WHERE param = "UserAdvManager_Version"
+;';
+  $count = pwg_db_num_rows(pwg_query($query));
+  
+  if ($count == 0)
+  {
+    /* upgrade from branch 2.15 to 2.16 */
+    /* ******************************** */
+    upgrade_215_2160();
+  }
+
+/* Check database upgrade since version 2.16.0 */
+  if (isset($conf['UserAdvManager_Version']))
+  {
+    if (version_compare($conf['UserAdvManager_Version'], '2.20.0') < 0)
+    {
+    /* upgrade from branch 2.16 to 2.20 */
+    /* ******************************** */
+      upgrade_216_220();
+    }
+    
+    if (version_compare($conf['UserAdvManager_Version'], '2.20.4') < 0)
+    {
+    /* upgrade from version 2.20.3 to 2.20.4 */
+    /* ************************************* */
+      upgrade_2203_2204();
+    }
+    
+    if (version_compare($conf['UserAdvManager_Version'], '2.20.7') < 0)
+    {
+    /* upgrade from version 2.20.4 to 2.20.7 */
+    /* ************************************* */
+      upgrade_2204_2207();
+    }
+
+    if (version_compare($conf['UserAdvManager_Version'], '2.20.8') < 0)
+    {
+    /* upgrade from version 2.20.7 to 2.20.8 */
+    /* ************************************* */
+      upgrade_2207_2208();
+    }
+  }
+
+  // Update plugin version number in #_config table and check consistency of #_plugins table
+  UAM_version_update();
+
+  load_conf_from_db('param like \'UserAdvManager\\_%\'');
+}
+
+
+function plugin_uninstall()
+{
+  global $conf;
+
+  if (isset($conf['UserAdvManager']))
+  {
+    $q = '
+DELETE FROM '.CONFIG_TABLE.'
+WHERE param="UserAdvManager"
+;';
+
+    pwg_query($q);
+  }
+
+  if (isset($conf['UserAdvManager_ConfirmMail']))
+  {
+    $q = '
+DELETE FROM '.CONFIG_TABLE.'
+WHERE param="UserAdvManager_ConfirmMail"
+;';
+
+    pwg_query($q);
+  }
+
+  if (isset($conf['UserAdvManager_Redir']))
+  {
+    $q = '
+DELETE FROM '.CONFIG_TABLE.'
+WHERE param="UserAdvManager_Redir"
+;';
+
+    pwg_query($q);
+  }
+
+  if (isset($conf['UserAdvManager_Version']))
+  {
+    $q = '
+DELETE FROM '.CONFIG_TABLE.'
+WHERE param="UserAdvManager_Version"
+;';
+
+    pwg_query($q);
+  }
+
+  $q = 'DROP TABLE '.USER_CONFIRM_MAIL_TABLE.';';
+  pwg_query( $q );
+
+  $q = 'DROP TABLE '.USER_LASTVISIT_TABLE.';';
+  pwg_query( $q );
+}
+?>
