mirror of
https://github.com/e107inc/e107.git
synced 2025-07-28 18:30:53 +02:00
Viewer for downloads log
This commit is contained in:
@@ -11,9 +11,9 @@
|
|||||||
| GNU General Public License (http://gnu.org).
|
| GNU General Public License (http://gnu.org).
|
||||||
|
|
|
|
||||||
| $Source: /cvs_backup/e107_0.8/e107_admin/admin_log.php,v $
|
| $Source: /cvs_backup/e107_0.8/e107_admin/admin_log.php,v $
|
||||||
| $Revision: 1.11 $
|
| $Revision: 1.12 $
|
||||||
| $Date: 2008-01-10 02:55:03 $
|
| $Date: 2008-01-11 21:53:33 $
|
||||||
| $Author: e107coders $
|
| $Author: e107steved $
|
||||||
|
|
|
|
||||||
| Preferences:
|
| Preferences:
|
||||||
| 'sys_log_perpage' - number of events per page
|
| 'sys_log_perpage' - number of events per page
|
||||||
@@ -36,6 +36,7 @@ if (!getperms("S"))
|
|||||||
|
|
||||||
// Main language file should automatically be loaded
|
// Main language file should automatically be loaded
|
||||||
|
|
||||||
|
|
||||||
unset($qs);
|
unset($qs);
|
||||||
|
|
||||||
require_once(e_ADMIN."auth.php");
|
require_once(e_ADMIN."auth.php");
|
||||||
@@ -193,9 +194,9 @@ if (($action == "confdel") || ($action == "auditdel"))
|
|||||||
|
|
||||||
|
|
||||||
// Arrays of options for the various logs
|
// Arrays of options for the various logs
|
||||||
$log_db_table = array('adminlog' => 'admin_log', 'auditlog' => 'audit_log', 'rolllog' => 'dblog');
|
$log_db_table = array('adminlog' => 'admin_log', 'auditlog' => 'audit_log', 'rolllog' => 'dblog', 'downlog' => 'download_requests');
|
||||||
$back_day_count = array('adminlog' => 30, 'auditlog' => 30, 'rolllog' => max(intval($pref['roll_log_days']),1));
|
$back_day_count = array('adminlog' => 30, 'auditlog' => 30, 'rolllog' => max(intval($pref['roll_log_days']),1), 'downlog' => 60);
|
||||||
$page_title = array('adminlog' => RL_LAN_030, 'auditlog' => RL_LAN_062, 'rolllog' => RL_LAN_002);
|
$page_title = array('adminlog' => RL_LAN_030, 'auditlog' => RL_LAN_062, 'rolllog' => RL_LAN_002, 'downlog' => RL_LAN_067);
|
||||||
$col_count = array('adminlog' => 8, 'auditlog' => 8, 'rolllog' => 9);
|
$col_count = array('adminlog' => 8, 'auditlog' => 8, 'rolllog' => 9);
|
||||||
|
|
||||||
|
|
||||||
@@ -211,6 +212,7 @@ $pri_filter_cond = "xx";
|
|||||||
$pri_filter_val = "";
|
$pri_filter_val = "";
|
||||||
$sort_field = "dblog_id";
|
$sort_field = "dblog_id";
|
||||||
$sort_order = "DESC";
|
$sort_order = "DESC";
|
||||||
|
$downloadid_filter = '';
|
||||||
|
|
||||||
|
|
||||||
// Maintain the log view filter across pages
|
// Maintain the log view filter across pages
|
||||||
@@ -227,7 +229,8 @@ if (isset($_POST['updatefilters']))
|
|||||||
$pri_filter_val = $_POST['roll_pri_val'];
|
$pri_filter_val = $_POST['roll_pri_val'];
|
||||||
$caller_filter = $_POST['roll_caller_filter'];
|
$caller_filter = $_POST['roll_caller_filter'];
|
||||||
$ipaddress_filter = $_POST['roll_ipaddress_filter'];
|
$ipaddress_filter = $_POST['roll_ipaddress_filter'];
|
||||||
$cookie_string = implode("|",array($start_time,$start_enabled,$end_time,$end_enabled,$user_filter,$event_filter,$pri_filter_cond,$pri_filter_val,$caller_filter,$ipaddress_filter));
|
$downloadid_filter = $_POST['roll_downloadid_filter'];
|
||||||
|
$cookie_string = implode("|",array($start_time,$start_enabled,$end_time,$end_enabled,$user_filter,$event_filter,$pri_filter_cond,$pri_filter_val,$caller_filter,$ipaddress_filter,$downloadid_filter));
|
||||||
// echo $cookie_string."<br />";
|
// echo $cookie_string."<br />";
|
||||||
// Create session cookie to store values
|
// Create session cookie to store values
|
||||||
cookie($rl_cookiename,$cookie_string,0); // Use session cookie
|
cookie($rl_cookiename,$cookie_string,0); // Use session cookie
|
||||||
@@ -236,7 +239,7 @@ else
|
|||||||
{
|
{
|
||||||
// Now try and get the filters from the cookie
|
// Now try and get the filters from the cookie
|
||||||
if (isset($_COOKIE[$rl_cookiename]))
|
if (isset($_COOKIE[$rl_cookiename]))
|
||||||
list($start_time,$start_enabled,$end_time,$end_enabled,$user_filter,$event_filter,$pri_filter_cond,$pri_filter_val, $caller_filter,$ipaddress_filter) = explode("|",$_COOKIE[$rl_cookiename]);
|
list($start_time,$start_enabled,$end_time,$end_enabled,$user_filter,$event_filter,$pri_filter_cond,$pri_filter_val, $caller_filter,$ipaddress_filter,$downloadid_filter) = explode("|",$_COOKIE[$rl_cookiename]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -465,7 +468,7 @@ $audit_checkboxes = array(
|
|||||||
// LOG VIEW MENU
|
// LOG VIEW MENU
|
||||||
//====================================================================
|
//====================================================================
|
||||||
|
|
||||||
if (($action == "rolllog") || ($action == "adminlog") || ($action == "auditlog"))
|
if (($action == "rolllog") || ($action == "adminlog") || ($action == "auditlog") || ($action == "downlog"))
|
||||||
{
|
{
|
||||||
$from = intval(varset($qs[1], 0)); // First entry to display
|
$from = intval(varset($qs[1], 0)); // First entry to display
|
||||||
$amount = max(varset($pref['sys_log_perpage'], 20),5); // Number of entries per page
|
$amount = max(varset($pref['sys_log_perpage'], 20),5); // Number of entries per page
|
||||||
@@ -473,20 +476,42 @@ $amount = max(varset($pref['sys_log_perpage'], 20),5); // Number of entries per
|
|||||||
// Array decides which filters are active for each log. There are 4 columns total. All but 'datetimes' occupy 2. Must specify multiple of 4 columns - add 'blank' if necessary
|
// Array decides which filters are active for each log. There are 4 columns total. All but 'datetimes' occupy 2. Must specify multiple of 4 columns - add 'blank' if necessary
|
||||||
$active_filters = array('adminlog' => array('datetimes'=>0,'ipfilter'=>0,'userfilter'=>0,'eventfilter'=>0,'priority'=>0),
|
$active_filters = array('adminlog' => array('datetimes'=>0,'ipfilter'=>0,'userfilter'=>0,'eventfilter'=>0,'priority'=>0),
|
||||||
'auditlog' => array('datetimes'=>0,'ipfilter'=>0,'userfilter'=>0,'eventfilter'=>0,'blank'=>2),
|
'auditlog' => array('datetimes'=>0,'ipfilter'=>0,'userfilter'=>0,'eventfilter'=>0,'blank'=>2),
|
||||||
'rolllog' => array('datetimes'=>0,'ipfilter'=>0,'userfilter'=>0,'eventfilter'=>0,'priority'=>0,'callerfilter'=>0,'blank'=>2));
|
'rolllog' => array('datetimes'=>0,'ipfilter'=>0,'userfilter'=>0,'eventfilter'=>0,'priority'=>0,'callerfilter'=>0,'blank'=>2),
|
||||||
|
'downlog' => array('datetimes'=>0,'ipfilter'=>0,'userfilter'=>0,'downloadidfilter'=>0,'blank'=>2)
|
||||||
|
);
|
||||||
|
|
||||||
// Arrays determine column widths, headings, displayed fields for each log
|
// Arrays determine column widths, headings, displayed fields for each log
|
||||||
$col_widths = array('adminlog' => array(18,4,14,7,15,8,14,20), // Date - Pri - IP - UID - User - Code - Event - Info
|
$col_widths = array('adminlog' => array(18,4,14,7,15,8,14,20), // Date - Pri - IP - UID - User - Code - Event - Info
|
||||||
'auditlog' => array(18,14,7,15,8,14,24),
|
'auditlog' => array(18,14,7,15,8,14,24),
|
||||||
'rolllog' => array(15,4,12,6,12,7,13,13,18)); // Date - Pri - IP - UID - User - Code - Caller - Event - Info
|
'rolllog' => array(15,4,12,6,12,7,13,13,18), // Date - Pri - IP - UID - User - Code - Caller - Event - Info
|
||||||
|
'downlog' => array(18,14,7,15,8,38)
|
||||||
|
);
|
||||||
$col_titles = array('adminlog' => array(RL_LAN_019,RL_LAN_032,RL_LAN_020,RL_LAN_021,RL_LAN_022,RL_LAN_023,RL_LAN_025,RL_LAN_033),
|
$col_titles = array('adminlog' => array(RL_LAN_019,RL_LAN_032,RL_LAN_020,RL_LAN_021,RL_LAN_022,RL_LAN_023,RL_LAN_025,RL_LAN_033),
|
||||||
'auditlog' => array(RL_LAN_019,RL_LAN_020,RL_LAN_021,RL_LAN_022,RL_LAN_023,RL_LAN_025,RL_LAN_033),
|
'auditlog' => array(RL_LAN_019,RL_LAN_020,RL_LAN_021,RL_LAN_022,RL_LAN_023,RL_LAN_025,RL_LAN_033),
|
||||||
'rolllog' => array(RL_LAN_019,RL_LAN_032,RL_LAN_020,RL_LAN_021,RL_LAN_022,RL_LAN_023,RL_LAN_024,RL_LAN_025,RL_LAN_033));
|
'rolllog' => array(RL_LAN_019,RL_LAN_032,RL_LAN_020,RL_LAN_021,RL_LAN_022,RL_LAN_023,RL_LAN_024,RL_LAN_025,RL_LAN_033),
|
||||||
|
'downlog' => array(RL_LAN_019,RL_LAN_020,RL_LAN_021,RL_LAN_022,RL_LAN_068,RL_LAN_069)
|
||||||
|
);
|
||||||
$col_fields = array('adminlog' => array('cf_datestring','dblog_type','dblog_ip','dblog_user_id','user_name','dblog_eventcode','dblog_title','dblog_remarks'),
|
$col_fields = array('adminlog' => array('cf_datestring','dblog_type','dblog_ip','dblog_user_id','user_name','dblog_eventcode','dblog_title','dblog_remarks'),
|
||||||
'auditlog' => array('cf_datestring','dblog_ip','dblog_user_id','dblog_user_name','dblog_eventcode','dblog_title','dblog_remarks'),
|
'auditlog' => array('cf_datestring','dblog_ip','dblog_user_id','dblog_user_name','dblog_eventcode','dblog_title','dblog_remarks'),
|
||||||
'rolllog' => array('cf_datestring','dblog_type','dblog_ip','dblog_user_id','dblog_user_name','dblog_eventcode','dblog_caller','dblog_title','dblog_remarks'));
|
'rolllog' => array('cf_datestring','dblog_type','dblog_ip','dblog_user_id','dblog_user_name','dblog_eventcode','dblog_caller','dblog_title','dblog_remarks'),
|
||||||
|
'downlog' => array('cf_datestring','dblog_ip','dblog_user_id','user_name','download_request_download_id','download_name')
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
// Only need to define entries in this array if the base DB query is non-standard (i.e. different field names and/or joins)
|
||||||
|
$base_query = array('downlog' => "SELECT
|
||||||
|
dbl.download_request_id as dblog_id,
|
||||||
|
dbl.download_request_userid as dblog_user_id,
|
||||||
|
dbl.download_request_ip as dblog_ip,
|
||||||
|
dbl.download_request_download_id,
|
||||||
|
dbl.download_request_datestamp as dblog_datestamp,
|
||||||
|
d.download_name,
|
||||||
|
u.user_name
|
||||||
|
FROM #download_requests AS dbl
|
||||||
|
LEFT JOIN #user AS u ON dbl.download_request_userid=u.user_id
|
||||||
|
LEFT JOIN #download AS d ON dbl.download_request_download_id=d.download_id
|
||||||
|
"
|
||||||
|
);
|
||||||
|
|
||||||
// Check things
|
// Check things
|
||||||
if ($start_time >= $end_time)
|
if ($start_time >= $end_time)
|
||||||
@@ -497,33 +522,39 @@ $col_fields = array('adminlog' => array('cf_datestring','dblog_type','dblog_ip',
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// The filters have to use the 'actual' db field names. So the following table sets the defaults and the exceptions which vary across the range of tables supported
|
||||||
|
$map_filters = array(
|
||||||
|
'default' => array('datetimes' => 'dblog_datestamp', 'ipfilter' => 'dblog_ip', 'userfilter' => 'dblog_user_id'),
|
||||||
|
'downlog' => array('datetimes' => 'download_request_datestamp', 'ipfilter' => 'download_request_ip', 'userfilter' => 'download_request_userid')
|
||||||
|
);
|
||||||
|
|
||||||
// Now work out the query - only use those filters which are displayed
|
// Now work out the query - only use those filters which are displayed
|
||||||
$qry = '';
|
$qry = '';
|
||||||
$and_array = array();
|
$and_array = array();
|
||||||
foreach ($active_filters[$action] as $fname=>$fpars)
|
foreach ($active_filters[$action] as $fname=>$fpars)
|
||||||
{
|
{
|
||||||
|
$filter_field = varset($map_filters[$action][$fname],$map_filters[$default][$fname]);
|
||||||
switch ($fname)
|
switch ($fname)
|
||||||
{
|
{
|
||||||
case 'datetimes' :
|
case 'datetimes' :
|
||||||
if ($start_enabled && ($start_time > 0)) $and_array[] = "`dblog_datestamp` >= ".intval($start_time);
|
if ($start_enabled && ($start_time > 0)) $and_array[] = "`{$filter_field}` >= ".intval($start_time);
|
||||||
if ($end_enabled && ($end_time > 0)) $and_array[] = "`dblog_datestamp` <= ".intval($end_time);
|
if ($end_enabled && ($end_time > 0)) $and_array[] = "`{$filter_field}` <= ".intval($end_time);
|
||||||
break;
|
break;
|
||||||
case 'ipfilter' :
|
case 'ipfilter' :
|
||||||
if ($ipaddress_filter != "")
|
if ($ipaddress_filter != "")
|
||||||
{
|
{
|
||||||
if (substr($ipaddress_filter,-1) == '*')
|
if (substr($ipaddress_filter,-1) == '*')
|
||||||
{ // Wildcard to handle - mySQL uses %
|
{ // Wildcard to handle - mySQL uses %
|
||||||
$and_array[] = "`dblog_ip` LIKE '".substr($ipaddress_filter,0,-1)."%' ";
|
$and_array[] = "`{$filter_field}` LIKE '".substr($ipaddress_filter,0,-1)."%' ";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$and_array[] = "`dblog_ip`= '".$ipaddress_filter."' ";
|
$and_array[] = "`{$filter_field}`= '".$ipaddress_filter."' ";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'userfilter' :
|
case 'userfilter' :
|
||||||
if ($user_filter != '') $and_array[] = "`dblog_user_id` = ".intval($user_filter);
|
if ($user_filter != '') $and_array[] = "`{$filter_field}` = ".intval($user_filter);
|
||||||
break;
|
break;
|
||||||
case 'eventfilter' :
|
case 'eventfilter' :
|
||||||
if ($event_filter != '')
|
if ($event_filter != '')
|
||||||
@@ -568,6 +599,9 @@ $col_fields = array('adminlog' => array('cf_datestring','dblog_type','dblog_ip',
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 'downloadidfilter' :
|
||||||
|
if ($downloadid_filter != '') $and_array[] = "`download_request_download_id` = ".intval($downloadid_filter);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -576,8 +610,15 @@ $col_fields = array('adminlog' => array('cf_datestring','dblog_type','dblog_ip',
|
|||||||
$num_entry = $sql->db_Count($log_db_table[$action], "(*)", $qry);
|
$num_entry = $sql->db_Count($log_db_table[$action], "(*)", $qry);
|
||||||
|
|
||||||
if ($from > $num_entry) $from = 0; // We may be on a later page
|
if ($from > $num_entry) $from = 0; // We may be on a later page
|
||||||
|
|
||||||
$qry = "SELECT dbl.*,u.user_name FROM #".$log_db_table[$action]." AS dbl LEFT JOIN #user AS u ON dbl.dblog_user_id=u.user_id".$qry." ORDER BY {$sort_field} ".$sort_order." LIMIT {$from}, {$amount} ";
|
if (isset($base_query[$action]))
|
||||||
|
{
|
||||||
|
$qry = $base_query[$action].$qry." ORDER BY {$sort_field} ".$sort_order." LIMIT {$from}, {$amount} ";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$qry = "SELECT dbl.*,u.user_name FROM #".$log_db_table[$action]." AS dbl LEFT JOIN #user AS u ON dbl.dblog_user_id=u.user_id".$qry." ORDER BY {$sort_field} ".$sort_order." LIMIT {$from}, {$amount} ";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Start by putting up the filter boxes
|
// Start by putting up the filter boxes
|
||||||
@@ -638,6 +679,11 @@ $col_fields = array('adminlog' => array('cf_datestring','dblog_type','dblog_ip',
|
|||||||
<td class='forumheader3'><input class='tbox' type='text' name='roll_caller_filter' size='40' value='".$caller_filter."' maxlength='40' /></td>";
|
<td class='forumheader3'><input class='tbox' type='text' name='roll_caller_filter' size='40' value='".$caller_filter."' maxlength='40' /></td>";
|
||||||
$filter_cols += 2;
|
$filter_cols += 2;
|
||||||
break;
|
break;
|
||||||
|
case 'downloadidfilter' :
|
||||||
|
$text .= "<td class='forumheader3'>".RL_LAN_090."</td>
|
||||||
|
<td class='forumheader3'><input class='tbox' type='text' name='roll_downloadid_filter' size='20' value='".$downloadid_filter."' maxlength='10' /></td>";
|
||||||
|
$filter_cols += 2;
|
||||||
|
break;
|
||||||
case 'blank' : // Any number of blank cells
|
case 'blank' : // Any number of blank cells
|
||||||
$text .= Str_repeat("<td class='forumheader3'> </td>",$fpars);
|
$text .= Str_repeat("<td class='forumheader3'> </td>",$fpars);
|
||||||
$filter_cols += $fpars;
|
$filter_cols += $fpars;
|
||||||
@@ -718,6 +764,9 @@ function log_process($matches)
|
|||||||
case 'dblog_user_name' :
|
case 'dblog_user_name' :
|
||||||
$val = $row['dblog_user_id'] ? $row['dblog_user_name'] : LAN_ANONYMOUS;
|
$val = $row['dblog_user_id'] ? $row['dblog_user_name'] : LAN_ANONYMOUS;
|
||||||
break;
|
break;
|
||||||
|
case 'user_name' :
|
||||||
|
$val = $row['dblog_user_id'] ? $row['user_name'] : LAN_ANONYMOUS;
|
||||||
|
break;
|
||||||
case 'dblog_caller' :
|
case 'dblog_caller' :
|
||||||
$val = $row['dblog_caller'];
|
$val = $row['dblog_caller'];
|
||||||
if ((strpos($val,'|') !== FALSE) && (strpos($val,'@') !== FALSE))
|
if ((strpos($val,'|') !== FALSE) && (strpos($val,'@') !== FALSE))
|
||||||
@@ -777,6 +826,9 @@ function admin_log_adminmenu()
|
|||||||
$var['rolllog']['text'] = RL_LAN_002;
|
$var['rolllog']['text'] = RL_LAN_002;
|
||||||
$var['rolllog']['link'] = "admin_log.php?rolllog";
|
$var['rolllog']['link'] = "admin_log.php?rolllog";
|
||||||
|
|
||||||
|
$var['downlog']['text'] = RL_LAN_067;
|
||||||
|
$var['downlog']['link'] = "admin_log.php?downlog";
|
||||||
|
|
||||||
$var['config']['text'] = RL_LAN_027;
|
$var['config']['text'] = RL_LAN_027;
|
||||||
$var['config']['link'] ="admin_log.php?config";
|
$var['config']['link'] ="admin_log.php?config";
|
||||||
|
|
||||||
|
@@ -11,8 +11,8 @@
|
|||||||
| GNU General Public License (http://gnu.org).
|
| GNU General Public License (http://gnu.org).
|
||||||
|
|
|
|
||||||
| $Source: /cvs_backup/e107_0.8/e107_languages/English/admin/help/admin_log.php,v $
|
| $Source: /cvs_backup/e107_0.8/e107_languages/English/admin/help/admin_log.php,v $
|
||||||
| $Revision: 1.1 $
|
| $Revision: 1.2 $
|
||||||
| $Date: 2007-12-15 17:59:49 $
|
| $Date: 2008-01-11 21:53:39 $
|
||||||
| $Author: e107steved $
|
| $Author: e107steved $
|
||||||
+----------------------------------------------------------------------------+
|
+----------------------------------------------------------------------------+
|
||||||
*/
|
*/
|
||||||
@@ -57,6 +57,10 @@ case 'rolllog' :
|
|||||||
$text = "The rolling log displays various abnormal events which are not otherwise logged. It may also be used for code debugging and monitoring.<br /><br />";
|
$text = "The rolling log displays various abnormal events which are not otherwise logged. It may also be used for code debugging and monitoring.<br /><br />";
|
||||||
$text .= common_filters();
|
$text .= common_filters();
|
||||||
break;
|
break;
|
||||||
|
case 'downlog' :
|
||||||
|
$text = "This page displays user downloads.<br /><br />";
|
||||||
|
$text .= common_filters();
|
||||||
|
break;
|
||||||
case 'adminlog' :
|
case 'adminlog' :
|
||||||
default :
|
default :
|
||||||
$text = "This page displays administrator activity.<br /><br />
|
$text = "This page displays administrator activity.<br /><br />
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
// e107 Language File.
|
// e107 Language File.
|
||||||
// $Id: lan_admin_log.php,v 1.3 2007-12-29 22:07:49 e107steved Exp $
|
// $Id: lan_admin_log.php,v 1.4 2008-01-11 21:53:39 e107steved Exp $
|
||||||
|
|
||||||
define('RL_LAN_001', 'System Logs');
|
define('RL_LAN_001', 'System Logs');
|
||||||
define('RL_LAN_002', "Rolling Log");
|
define('RL_LAN_002', "Rolling Log");
|
||||||
@@ -58,6 +58,9 @@ define('RL_LAN_063', 'User audit settings updated');
|
|||||||
define('RL_LAN_064', 'Applicable to all logs');
|
define('RL_LAN_064', 'Applicable to all logs');
|
||||||
define('RL_LAN_065', "Confirm delete user audit log events older than ");
|
define('RL_LAN_065', "Confirm delete user audit log events older than ");
|
||||||
define('RL_LAN_066', "Delete user audit trail log events older than ");
|
define('RL_LAN_066', "Delete user audit trail log events older than ");
|
||||||
|
define('RL_LAN_067', 'Download History');
|
||||||
|
define('RL_LAN_068', 'D/L ID');
|
||||||
|
define('RL_LAN_069', 'Download Name');
|
||||||
|
|
||||||
|
|
||||||
// Messages for checkbox options in audit log - correspond to audit log event codes (20 consecutive values reserved)
|
// Messages for checkbox options in audit log - correspond to audit log event codes (20 consecutive values reserved)
|
||||||
@@ -69,5 +72,9 @@ define('RL_LAN_076', 'Change password');
|
|||||||
define('RL_LAN_077', 'Change email address');
|
define('RL_LAN_077', 'Change email address');
|
||||||
define('RL_LAN_078', 'Password Reset');
|
define('RL_LAN_078', 'Password Reset');
|
||||||
define('RL_LAN_079', 'Change other user settings');
|
define('RL_LAN_079', 'Change other user settings');
|
||||||
|
define('RL_LAN_080', 'Admin quick add user');
|
||||||
|
// Intentional gap
|
||||||
|
define('RL_LAN_090', 'Download ID');
|
||||||
|
|
||||||
|
|
||||||
?>
|
?>
|
Reference in New Issue
Block a user