* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009, 2010 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2011 by Mailer Developer Team *
* For more information visit: http://www.mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// This function will be executed when the admin is not logged in and has submitted his login data
function ifAdminLoginDataIsValid ($adminLogin, $adminPassword) {
- // First of all, no admin login is found
+ // First of all, no admin login is found, so the admin hash is null
$ret = '404';
+ $adminHash = null;
// Get admin id from login
$adminId = getAdminId($adminLogin);
// Get action value
$action = getActionFromModuleWhat(getModule(), $what);
- // Define admin login name and id number
- $content['login'] = getAdminLogin(getSession('admin_id'));
- $content['id'] = getCurrentAdminId();
-
- // Preload templates
+ // Load welcome template
if (isExtensionActive('admins')) {
- $content['welcome'] = loadTemplate('admin_welcome_admins', true, $content);
+ // @TODO This and the next getCurrentAdminId() call might be moved into the templates?
+ $content['welcome'] = loadTemplate('admin_welcome_admins', true, getCurrentAdminId());
} else {
- $content['welcome'] = loadTemplate('admin_welcome', true, $content);
+ $content['welcome'] = loadTemplate('admin_welcome', true, getCurrentAdminId());
}
// Load header, footer, render menu
// Access denied
loadTemplate('admin_menu_failed', false, getMaskedMessage('ADMIN_ACCESS_DENIED', $what));
} else {
- // Include file not found! :-(
+ // Include file not found :-(
loadTemplate('admin_menu_failed', false, getMaskedMessage('ADMIN_ACTION_404', $action));
}
} else {
- // Invalid action/what pair found!
+ // Invalid action/what pair found
loadTemplate('admin_menu_failed', false, getMaskedMessage('ADMIN_ACTION_INVALID', $action . '/' . $what));
}
loadTemplate('admin_main_footer', false, $content);
}
+// Checks wether current admin is allowed to access given action/what combination
+// (only one is allowed to be null!)
+function isAdminAllowedAccessMenu ($action, $what = null) {
+ // Do we have cache?
+ if (!isset($GLOBALS[__FUNCTION__][$action][$what])) {
+ // ACL is always 'allow' when no ext-admins is installed
+ // @TODO This can be rewritten into a filter
+ $GLOBALS[__FUNCTION__][$action][$what] = ((!isExtensionInstalledAndNewer('admins', '0.2.0')) || (adminsCheckAdminAcl($action, $what)));
+ } // END - if
+
+ // Return the cached value
+ return $GLOBALS[__FUNCTION__][$action][$what];
+}
+
// Adds an admin menu
-function addAdminMenu ($action, $what, $return=false) {
+function addAdminMenu ($action, $what, $return = false) {
// Init variables
$SUB = false;
$OUT = '';
$OUT .= '<ul class="admin_menu_main">';
// @TODO Rewrite this to $content = SQL_FETCHARRAY()
while (list($menu, $title, $descr) = SQL_FETCHROW($result_main)) {
- if (isExtensionInstalledAndNewer('admins', '0.2.0')) {
- $ACL = adminsCheckAdminAcl($menu, '');
- } else {
- // @TODO ACL is 'allow'... hmmm
- $ACL = true;
- }
-
// Filename
$inc = sprintf("inc/modules/admin/action-%s.php", $menu);
// Is the file readable?
$readable = isIncludeReadable($inc);
- if ($ACL === true) {
+ // Is the current admin allowed to access this 'action' menu?
+ if (isAdminAllowedAccessMenu($menu)) {
if ($SUB === false) {
// Insert compiled menu title and description
$GLOBALS['menu']['title'][$menu] = $title;
$GLOBALS['menu']['description'][$menu] = $descr;
- }
+ } // END - if
$OUT .= '<li class="admin_menu">
<div class="nobr"><strong>·</strong> ';
$OUT .= '[<a href="{%url=modules.php?module=admin&action=' . $menu . '%}">';
}
} else {
- $OUT .= '<em style="cursor:help" class="notice" title="{%message,MENU_ACTION_404=' . $menu . '}">';
+ $OUT .= '<em style="cursor:help" class="notice" title="{%message,ADMIN_MENU_ACTION_404=' . $menu . '%}">';
}
$OUT .= $title;
// Do we have entries?
if ((ifAdminMenuHasEntries($menu)) && (!SQL_HASZERONUMS($result_what))) {
$GLOBALS['menu']['description'] = array();
- $GLOBALS['menu']['title'] = array(); $SUB = true;
+ $GLOBALS['menu']['title'] = array();
+ $SUB = true;
$OUT .= '<li class="admin_menu_sub"><ul class="admin_menu_sub">';
// @TODO Rewrite this to $content = SQL_FETCHARRAY()
while (list($what_sub, $title_what, $desc_what) = SQL_FETCHROW($result_what)) {
- // Check for access level
- if (isExtensionInstalledAndNewer('admins', '0.2.0')) {
- $ACL = adminsCheckAdminAcl('', $what_sub);
- } else {
- // @TODO ACL is 'allow'... hmmm
- $ACL = true;
- }
-
// Filename
$inc = sprintf("inc/modules/admin/what-%s.php", $what_sub);
// Is the file readable?
$readable = isIncludeReadable($inc);
- // Access allowed?
- if ($ACL === true) {
+ // Is the current admin allowed to access this 'what' menu?
+ if (isAdminAllowedAccessMenu(null, $what_sub)) {
// Insert compiled title and description
$GLOBALS['menu']['title'][$what_sub] = $title_what;
$GLOBALS['menu']['description'][$what_sub] = $desc_what;
$OUT .= '[<a href="{%url=modules.php?module=admin&what=' . $what_sub . '%}">';
}
} else {
- $OUT .= '<em style="cursor:help" class="notice" title="{%message,MENU_WHAT_404=' . $what_sub . '%}">';
+ $OUT .= '<em style="cursor:help" class="notice" title="{%message,ADMIN_MENU_WHAT_404=' . $what_sub . '%}">';
}
$OUT .= $title_what;
// Process only formular field but not submit buttons ;)
if ($id != 'ok') {
// Do not save the ok value
- convertSelectionsToTimestamp($postData, $tableData, $id, $skip);
+ convertSelectionsToEpocheTime($postData, $tableData, $id, $skip);
// Shall we process this id? It muss not be empty, of course
if (($skip === false) && (!empty($id)) && ((!isset($GLOBALS['skip_config'][$id]))) || ($tableName != '_config')) {
rebuildCache('config', 'config');
// Settings saved, so display message?
- if ($displayMessage === true) loadTemplate('admin_settings_saved', false, '{--SETTINGS_SAVED--}');
+ if ($displayMessage === true) displayMessage('{--SETTINGS_SAVED--}');
// Return affected rows
return $affected;
$nick = getNickname($userid);
// Is it not empty, use it as title else the userid
- if (!empty($nick)) $title = $nick . '(' . $userid . ')'; else $title = $userid;
+ if (!empty($nick)) {
+ $title = $nick . '(' . $userid . ')';
+ } else {
+ $title = $userid;
+ }
}
// Return link
// Check "logical-area-mode"
function adminGetMenuMode () {
// Set the default menu mode as the mode for all admins
- $mode = getConfig('admin_menu');
+ $mode = 'global';
+
+ // If sql_patches is up-to-date enough, use the configuration
+ if (isExtensionInstalledAndNewer('sql_patches', '0.3.2')) {
+ $mode = getAdminMenu();
+ } // END - if
+
+ // Backup it
$adminMode = $mode;
// Get admin id
}
// Check what the admin wants and set it when it's not the default mode
- if ($adminMode != 'global') $mode = $adminMode;
+ if ($adminMode != 'global') {
+ $mode = $adminMode;
+ } // END - if
// Return admin-menu's mode
return $mode;
// Change activation status
function adminChangeActivationStatus ($IDs, $table, $row, $idRow = 'id') {
- $cnt = '0'; $newStatus = 'Y';
+ $count = '0'; $newStatus = 'Y';
if ((is_array($IDs)) && (count($IDs) > 0)) {
// "Walk" all through and count them
foreach ($IDs as $id => $selected) {
array($table, $row, $newStatus, $idRow, $id), __FUNCTION__, __LINE__);
// Count up affected rows
- $cnt += SQL_AFFECTEDROWS();
+ $count += SQL_AFFECTEDROWS();
} // END - if
// Free the result
} // END - foreach
// Output status
- loadTemplate('admin_settings_saved', false, sprintf(getMessage('ADMIN_STATUS_CHANGED'), $cnt, count($IDs)));
+ displayMessage(sprintf(getMessage('ADMIN_STATUS_CHANGED'), $count, count($IDs)));
} else {
// Nothing selected!
- loadTemplate('admin_settings_saved', false, '{--ADMIN_NOTHING_SELECTED_CHANGE--}');
+ displayMessage('{--ADMIN_NOTHING_SELECTED_CHANGE--}');
}
}
// Was this fine?
if (SQL_AFFECTEDROWS() == count($IDs)) {
// All deleted
- loadTemplate('admin_settings_saved', false, '{--ADMIN_ALL_ENTRIES_REMOVED--}');
+ displayMessage('{--ADMIN_ALL_ENTRIES_REMOVED--}');
} else {
// Some are still there :(
- loadTemplate('admin_settings_saved', false, sprintf(getMessage('ADMIN_SOME_ENTRIES_NOT_DELETED'), SQL_AFFECTEDROWS(), count($IDs)));
+ displayMessage(sprintf(getMessage('ADMIN_SOME_ENTRIES_NOT_DELETED'), SQL_AFFECTEDROWS(), count($IDs)));
}
} else {
// List for deletion confirmation
// Was this fine?
if ($affected == count($IDs)) {
// All deleted
- loadTemplate('admin_settings_saved', false, '{--ADMIN_ALL_ENTRIES_EDITED--}');
+ displayMessage('{--ADMIN_ALL_ENTRIES_EDITED--}');
} else {
// Some are still there :(
- loadTemplate('admin_settings_saved', false, sprintf(getMessage('ADMIN_SOME_ENTRIES_NOT_EDITED'), $affected, count($IDs)));
+ displayMessage(sprintf(getMessage('ADMIN_SOME_ENTRIES_NOT_EDITED'), $affected, count($IDs)));
}
} else {
// List for editing
// Is there an account?
if (SQL_HASZERONUMS($result)) {
- // No account found!
+ // No account found
return '{--ADMIN_NO_LOGIN_WITH_EMAIL--}';
} // END - if
SQL_FREERESULT($result);
// Generate hash for reset link
- $content['hash'] = generateHash(getUrl() . ':' . $content['id'] . ':' . $content['login'] . ':' . $content['password'], substr($content['password'], 10));
+ $content['hash'] = generateHash(getUrl() . getEncryptSeperator() . $content['id'] . getEncryptSeperator() . $content['login'] . getEncryptSeperator() . $content['password'], substr($content['password'], getSaltLength()));
// Remove some data
unset($content['id']);
unset($content['password']);
// Prepare email
- $mailText = loadEmailTemplate('form_reset_password', $content);
+ $mailText = loadEmailTemplate('admin_reset_password', $content);
// Send it out
- sendEmail($email, '{--ADMIN_RESET_PASS_LINK_SUBJECT--}', $mailText);
+ sendEmail($email, '{--ADMIN_RESET_PASSWORD_LINK_SUBJECT--}', $mailText);
// Prepare output
- return '{--ADMIN_RESET_LINK_SENT--}';
+ return '{--ADMIN_RESET_PASSWORD_LINK_SENT--}';
}
// Validate hash and login for password reset
$content = SQL_FETCHARRAY($result);
// Generate hash again
- $hashFromData = generateHash(getUrl() . ':' . $content['id'] . ':' . $login . ':' . $content['password'], substr($content['password'], 10));
+ $hashFromData = generateHash(getUrl() . getEncryptSeperator() . $content['id'] . getEncryptSeperator() . $login . getEncryptSeperator() . $content['password'], substr($content['password'], getSaltLength()));
// Does both match?
$valid = ($hash == $hashFromData);
// Is he allowed?
if ($expertSettings == 'Y') {
// Okay, does he want to see them?
- if (getAminsExpertWarning() == 'Y') {
+ if (isAdminsExpertWarningEnabled()) {
// Ask for them
if (isFormSent()) {
// Is the element set, then we need to change the admin
if (isPostRequestParameterSet('expert_settings')) {
// Get it and prepare final post data array
- $postData['login'][getCurrentAdminId()] = getAdminLogin(getCurrentAdminId());
+ $postData['login'][getCurrentAdminId()] = getCurrentAdminLogin();
$postData['expert_warning'][getCurrentAdminId()] = 'N';
// Change it in the admin
// Output message for other status than ask/agreed
if (($return != 'ask') && ($return != 'agreed')) {
// Output message
- loadTemplate('admin_settings_saved', false, '{--ADMIN_EXPERT_SETTINGS_STATUS_' . strtoupper($return) . '--}');
+ displayMessage('{--ADMIN_EXPERT_SETTINGS_STATUS_' . strtoupper($return) . '--}');
} // END - if
// Return status
default: // Unexpected action
logDebugMessage(__FILE__, __LINE__, sprintf("Unsupported action %s detected.", postRequestParameter('ok')));
- loadTemplate('admin_settings_saved', false, getMaskedMessage('ADMIN_UNKNOWN_OKAY', postRequestParameter('ok')));
+ displayMessage(getMaskedMessage('ADMIN_UNKNOWN_OKAY', postRequestParameter('ok')));
break;
} // END - switch
} // END - foreach
// Load template
- loadTemplate('admin_settings_saved', false, '{--SETTINGS_SAVED--}');
+ displayMessage('{--SETTINGS_SAVED--}');
}
// Handle weightning
-function doAdminProcessMenuWeightning ($type) {
+function doAdminProcessMenuWeightning ($type, $AND) {
// Are there all required (generalized) GET parameter?
if ((isGetRequestParameterSet('act')) && (isGetRequestParameterSet('tid')) && (isGetRequestParameterSet('fid'))) {
// Init variables