* $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);
loadInclude($inc);
} elseif ($GLOBALS['acl_allow'] === false) {
// Access denied
- loadTemplate('admin_menu_failed', false, getMaskedMessage('ADMIN_ACCESS_DENIED', $what));
+ loadTemplate('admin_menu_failed', false, '{%message,ADMIN_ACCESS_DENIED=' . $what . '%}');
} else {
- // Include file not found! :-(
- loadTemplate('admin_menu_failed', false, getMaskedMessage('ADMIN_ACTION_404', $action));
+ // Include file not found :-(
+ loadTemplate('admin_menu_failed', false, '{%message,ADMIN_ACTION_404=' . $action . '%}');
}
} else {
- // Invalid action/what pair found!
- loadTemplate('admin_menu_failed', false, getMaskedMessage('ADMIN_ACTION_INVALID', $action . '/' . $what));
+ // Invalid action/what pair found
+ loadTemplate('admin_menu_failed', false, '{%message,ADMIN_ACTION_INVALID=' . $action . '/' . $what . '%}');
}
// Free memory
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')) || (isAdminsAllowedByAcl($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_TITLE=' . $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_TITLE=' . $what_sub . '%}">';
}
$OUT .= $title_what;
// @TODO Try to rewrite this to adminAddMenuSelectionBox()
// @DEPRECATED
function adminMenuSelectionBox_DEPRECATED ($mode, $default = '', $defid = '') {
- $what = "`what` != ''";
- if ($mode == 'action') $what = "(`what`='' OR `what` IS NULL) AND `action` !='login'";
+ $what = "`what` != '' AND `what` IS NOT NULL";
+ if ($mode == 'action') $what = "(`what`='' OR `what` IS NULL) AND `action` != 'login'";
$result = SQL_QUERY_ESC("SELECT `%s` AS `menu`, `title` FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE ".$what." ORDER BY `sort` ASC",
array($mode), __FUNCTION__, __LINE__);
// 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')) {
$whereStatement
);
} else {
- // Add Line (does only work with auto_increment!
+ // Add Line (does only work with AUTO_INCREMENT!
$keys = array(); $values = array();
foreach ($tableData as $entry) {
// Split up
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 = getAdminMenu();
+ $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
// Change activation status
function adminChangeActivationStatus ($IDs, $table, $row, $idRow = 'id') {
- $count = '0'; $newStatus = 'Y';
+ $count = '0';
if ((is_array($IDs)) && (count($IDs) > 0)) {
// "Walk" all through and count them
foreach ($IDs as $id => $selected) {
if (!empty($selected)) {
// Determine new status
$result = SQL_QUERY_ESC("SELECT %s FROM `{?_MYSQL_PREFIX?}_%s` WHERE %s=%s LIMIT 1",
- array($row, $table, $idRow, $id), __FUNCTION__, __LINE__);
+ array(
+ $row,
+ $table,
+ $idRow,
+ $id
+ ), __FUNCTION__, __LINE__);
// Row found?
if (SQL_NUMROWS($result) == 1) {
list($currStatus) = SQL_FETCHROW($result);
// And switch it N<->Y
- if ($currStatus == 'Y') $newStatus = 'N'; else $newStatus = 'Y';
+ $newStatus = convertBooleanToYesNo(!($currStatus == 'Y'));
// Change this status
SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_%s` SET %s='%s' WHERE %s=%s LIMIT 1",
- array($table, $row, $newStatus, $idRow, $id), __FUNCTION__, __LINE__);
+ array(
+ $table,
+ $row,
+ $newStatus,
+ $idRow,
+ $id
+ ), __FUNCTION__, __LINE__);
// Count up affected rows
$count += SQL_AFFECTEDROWS();
} // END - foreach
// Output status
- loadTemplate('admin_settings_saved', false, sprintf(getMessage('ADMIN_STATUS_CHANGED'), $count, 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--}');
}
}
} // END - if
// Is the raw userid set?
- if (postRequestParameter($userid, $id) > 0) {
+ if (postRequestParameter($useridColumn, $id) > 0) {
// Load email template
if (!empty($subjectPart)) {
$mail = loadEmailTemplate('member_' . $mode . '_' . strtolower($subjectPart) . '_' . $table, $content);
}
// Send email out
- sendEmail(postRequestParameter($userid, $id), strtoupper('{--MEMBER_' . $subject . '_' . $table . '_SUBJECT--}'), $mail);
+ sendEmail(postRequestParameter($useridColumn, $id), strtoupper('{--MEMBER_' . $subject . '_' . $table . '_SUBJECT--}'), $mail);
} // END - if
// Generate subject
// Send admin notification out
if (!empty($subjectPart)) {
- sendAdminNotification($subject, 'admin_' . $mode . '_' . strtolower($subjectPart) . '_' . $table, $content, postRequestParameter($userid, $id));
+ sendAdminNotification($subject, 'admin_' . $mode . '_' . strtolower($subjectPart) . '_' . $table, $content, postRequestParameter($useridColumn, $id));
} else {
- sendAdminNotification($subject, 'admin_' . $mode . '_' . $table, $content, postRequestParameter($userid, $id));
+ sendAdminNotification($subject, 'admin_' . $mode . '_' . $table, $content, postRequestParameter($useridColumn, $id));
}
}
// 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);
$adminLink = '<a href="' . generateEmailLink(getAdminEmail($adminId), 'admins') . '" title="{--ADMIN_CONTACT_LINK_TITLE--}">' . $login . '</a>';
} else {
// Extension not found
- $adminLink = getMaskedMessage('ADMIN_TASK_ROW_EXTENSION_NOT_INSTALLED', 'admins');
+ $adminLink = '{%message,ADMIN_TASK_ROW_EXTENSION_NOT_INSTALLED=admins%}';
}
} else {
// Maybe deleted?
- $adminLink = '<div class="notice">' . getMaskedMessage('ADMIN_ID_404', $adminId) . '</div>';
+ $adminLink = '<div class="notice">{%message,ADMIN_ID_404=' . $adminId . '%}</div>';
}
} // END - if
// 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
// 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('{%message,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