X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Fmodules%2Fadmin%2Fadmin-inc.php;h=2f2d9bb0fc3bb9b1f4de3e7aea4385ae4aab0017;hp=288510d631cd95a701c338fb6a2a3765ebc7ea51;hb=0e269568bd666186509e98594e83bac199ac26da;hpb=d22205247313f4b67db5c9aa3aac07cd9d073bce diff --git a/inc/modules/admin/admin-inc.php b/inc/modules/admin/admin-inc.php index 288510d631..2f2d9bb0fc 100644 --- a/inc/modules/admin/admin-inc.php +++ b/inc/modules/admin/admin-inc.php @@ -10,9 +10,14 @@ * -------------------------------------------------------------------- * * Kurzbeschreibung : Fuer die Administration benoetigte Funktionen * * -------------------------------------------------------------------- * - * * + * $Revision:: $ * + * $Date:: $ * + * $Tag:: 0.2.1-FINAL $ * + * $Author:: $ * + * Needs to be in all Files and every File needs "svn propset * + * svn:keywords Date Revision" (autoprobset!) at least!!!!!! * * -------------------------------------------------------------------- * - * Copyright (c) 2003 - 2008 by Roland Haeder * + * Copyright (c) 2003 - 2009 by Roland Haeder * * For more information visit: http://www.mxchange.org * * * * This program is free software; you can redistribute it and/or modify * @@ -33,25 +38,30 @@ // Some security stuff... if (!defined('__SECURITY')) { - $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php"; - require($INC); -} + die(); +} // END - if // Register an administrator account -function REGISTER_ADMIN ($user, $md5, $email=WEBMASTER) { +function addAdminAccount ($user, $md5, $email) { // Login does already exist - $ret = "already"; + $ret = 'already'; - // Lookup the user - $result = SQL_QUERY_ESC("SELECT id FROM `{!_MYSQL_PREFIX!}_admins` WHERE login='%s' LIMIT 1", + // Lookup the admin + $result = SQL_QUERY_ESC("SELECT `id` FROM `{?_MYSQL_PREFIX?}_admins` WHERE `login`='%s' LIMIT 1", array($user), __FUNCTION__, __LINE__); // Is the entry there? - if (SQL_NUMROWS($result) == 0) { + if (SQL_NUMROWS($result) == '0') { // Ok, let's create the admin login - SQL_QUERY_ESC("INSERT INTO `{!_MYSQL_PREFIX!}_admins` (login, password, email) VALUES ('%s', '%s', '%s')", - array($user, $md5, $email), __FUNCTION__, __LINE__); - $ret = "done"; + SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_admins` (`login`, `password`, `email`) VALUES ('%s', '%s', '%s')", + array( + $user, + $md5, + $email + ), __FUNCTION__, __LINE__); + + // All done + $ret = 'done'; } // END - if // Free memory @@ -60,42 +70,43 @@ function REGISTER_ADMIN ($user, $md5, $email=WEBMASTER) { // Return result return $ret; } + // Only be executed on login procedure! -function CHECK_ADMIN_LOGIN ($admin_login, $password) { +function ifAdminLoginDataIsValid ($admin, $password) { // By default no admin is found - $ret = "404"; + $ret = '404'; // Get admin id - $aid = GET_ADMIN_ID($admin_login); + $adminId = getAdminId($admin); // Init array with admin id by default - $data = array('aid' => $aid); + $data = array('admin_id' => $adminId); // Is the cache valid? - if (isset($GLOBALS['cache_array']['admins']['password'][$aid])) { + if (isAdminHashSet($admin)) { // Get password from cache - $data['password'] = $GLOBALS['cache_array']['admins']['password'][$aid]; - $ret = "pass"; - incrementConfigEntry('cache_hits'); + $data['password'] = getAdminHash($admin); + $ret = 'pass'; + incrementStatsEntry('cache_hits'); // Include more admins data? - if (GET_EXT_VERSION("admins") >= "0.7.0") { + if ((isExtensionInstalledAndNewer('admins', '0.7.2')) && (isset($GLOBALS['cache_array']['admin']['login_failures'][$adminId]))) { // Load them here - $data['login_failures'] = $GLOBALS['cache_array']['admins']['login_failures'][$aid]; - $data['last_failure'] = $GLOBALS['cache_array']['admins']['last_failure'][$aid]; + $data['login_failures'] = $GLOBALS['cache_array']['admin']['login_failures'][$adminId]; + $data['last_failure'] = $GLOBALS['cache_array']['admin']['last_failure'][$adminId]; } // END - if - } elseif (!EXT_IS_ACTIVE("cache")) { + } elseif (!isExtensionActive('cache')) { // Add extra data via filter now - $ADD = RUN_FILTER('sql_admin_extra_data'); + $add = runFilterChain('sql_admin_extra_data'); // Get password from DB - $result = SQL_QUERY_ESC("SELECT password".$ADD." FROM `{!_MYSQL_PREFIX!}_admins` WHERE id=%s LIMIT 1", - array($aid), __FUNCTION__, __LINE__); + $result = SQL_QUERY_ESC("SELECT `password`" . $add . " FROM `{?_MYSQL_PREFIX?}_admins` WHERE `id`=%s LIMIT 1", + array($adminId), __FUNCTION__, __LINE__); // Entry found? if (SQL_NUMROWS($result) == 1) { // Login password found - $ret = "pass"; + $ret = 'pass'; // Fetch data $data = SQL_FETCHARRAY($result); @@ -105,14 +116,14 @@ function CHECK_ADMIN_LOGIN ($admin_login, $password) { SQL_FREERESULT($result); } - //* DEBUG: */ echo "*".$data['password']."/".md5($password)."/".$ret."
"; + //* DEBUG: */ outputHtml("*".$data['password'].'/'.md5($password).'/'.$ret."
"); if ((isset($data['password'])) && (strlen($data['password']) == 32) && ($data['password'] == md5($password))) { // Generate new hash $data['password'] = generateHash($password); // Is the sql_patches not installed, than we cannot have a valid hashed password here! - if (($ret == "pass") && ((EXT_VERSION_IS_OLDER("sql_patches", "0.3.6")) || (GET_EXT_VERSION("sql_patches") == ""))) $ret = "done"; - } elseif ((EXT_VERSION_IS_OLDER("sql_patches", "0.3.6")) || (GET_EXT_VERSION("sql_patches") == "")) { + if (($ret == 'pass') && ((isExtensionInstalledAndOlder('sql_patches', '0.3.6')) || (!isExtensionInstalled('sql_patches')))) $ret = 'done'; + } elseif ((isExtensionInstalledAndOlder('sql_patches', '0.3.6')) || (!isExtensionInstalled('sql_patches'))) { // Old hashing way return $ret; } elseif (!isset($data['password'])) { @@ -121,413 +132,418 @@ function CHECK_ADMIN_LOGIN ($admin_login, $password) { } // Generate salt of password - define('__SALT', substr($data['password'], 0, -40)); - $salt = __SALT; + $salt = substr($data['password'], 0, -40); // Check if password is same - //* DEBUG: */ echo "*".$ret.",".$data['password'].",".$password.",".$salt."*
\n"; - if (($ret == "pass") && ($data['password'] == generateHash($password, $salt)) && ((!empty($salt))) || ($data['password'] == $password)) { + //* DEBUG: */ outputHtml("*".$ret.','.$data['password'].','.$password.','.$salt."*
"); + if (($ret == 'pass') && ($data['password'] == generateHash($password, $salt)) && ((!empty($salt))) || ($data['password'] == $password)) { // Re-hash the plain passord with new random salt $data['password'] = generateHash($password); // Do we have 0.7.0 of admins or later? // Remmeber login failures if available - if (GET_EXT_VERSION("admins") >= "0.7.2") { + if ((isExtensionInstalledAndNewer('admins', '0.7.2')) && (isset($data['login_failures']))) { // Store it in session - set_session('mxchange_admin_failures', $data['login_failures']); - set_session('mxchange_admin_last_fail', $data['last_failure']); + setSession('mxchange_admin_failures', $data['login_failures']); + setSession('mxchange_admin_last_fail', $data['last_failure']); // Update password and reset login failures - SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_admins` SET password='%s',login_failures=0,last_failure='0000-00-00 00:00:00' WHERE id=%s LIMIT 1", - array($data['password'], $aid), __FUNCTION__, __LINE__); + SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_admins` SET `password`='%s',`login_failures`=0,`last_failure`='0000-00-00 00:00:00' WHERE `id`=%s LIMIT 1", + array($data['password'], $adminId), __FUNCTION__, __LINE__); } else { // Update password - SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_admins` SET password='%s' WHERE id=%s LIMIT 1", - array($data['password'], $aid), __FUNCTION__, __LINE__); + SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_admins` SET `password`='%s' WHERE `id`=%s LIMIT 1", + array($data['password'], $adminId), __FUNCTION__, __LINE__); } // Rebuild cache - REBUILD_CACHE("admins", "admin"); + rebuildCacheFile('admin', 'admin'); // Login has failed by default... ;-) - $ret = "failed"; + $ret = 'failed1'; // Password matches so login here - if (LOGIN_ADMIN($admin_login, $data['password'])) { + if (doAdminLogin($admin, $data['password'])) { // All done now - $ret = "done"; + $ret = 'done'; } // END - if - } elseif ((empty($salt)) && ($ret == "pass")) { + } elseif ((empty($salt)) && ($ret == 'pass')) { // Something bad went wrong - $ret = "failed"; - } elseif ($ret == "done") { + $ret = 'failed_salt'; + } elseif ($ret == 'done') { // Try to login here if we have the old hashing way (sql_patches not installed?) - if (!LOGIN_ADMIN($admin_login, $data['password'])) { + if (!doAdminLogin($admin, $data['password'])) { // Something went wrong - $ret = "failed"; + $ret = 'failed2'; } // END - if } // Count login failure if admins extension version is 0.7.0+ - if (($ret == "pass") && (GET_EXT_VERSION("admins") >= "0.7.0")) { + if (($ret == 'pass') && (getExtensionVersion('admins') >= '0.7.0')) { // Update counter - SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_admins` SET login_failures=login_failures+1,last_failure=NOW() WHERE id=%s LIMIT 1", - array($aid), __FUNCTION__, __LINE__); + SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_admins` SET login_failures`=`login_failures`+1,`last_failure`=NOW() WHERE `id`=%s LIMIT 1", + array($adminId), __FUNCTION__, __LINE__); // Rebuild cache - REBUILD_CACHE("admins", "admin"); + rebuildCacheFile('admin', 'admin'); } // END - if // Return the result - //* DEBUG: */ die("RETURN=".$ret); + //* DEBUG: */ die('RETURN=' . $ret); return $ret; } // Try to login the admin by setting some session/cookie variables -function LOGIN_ADMIN ($adminLogin, $passHash) { +function doAdminLogin ($adminLogin, $passHash) { // Reset failure counter on matching admins version - if ((GET_EXT_VERSION("admins") >= "0.7.0") && ((EXT_VERSION_IS_OLDER("sql_patches", "0.3.6")) || (GET_EXT_VERSION("sql_patches") == ""))) { + if ((isExtensionInstalledAndNewer('admins', '0.7.0')) && ((isExtensionOlder('sql_patches', '0.3.6')) || (!isExtensionInstalled('sql_patches')))) { // Reset counter on out-dated sql_patches version - SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_admins` SET login_failures=0,last_failure='0000-00-00 00:00:00' WHERE login='%s' LIMIT 1", + SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_admins` SET `login_failures`=0, `last_failure`='0000-00-00 00:00:00' WHERE `login`='%s' LIMIT 1", array($adminLogin), __FUNCTION__, __LINE__); // Rebuild cache - REBUILD_CACHE("admins", "admin"); + rebuildCacheFile('admin', 'admin'); } // END - if // Now set all session variables and return the result - return ( - ( - set_session('admin_md5', generatePassString($passHash)) - ) && ( - set_session('admin_login', $adminLogin) - ) && ( - set_session('admin_last', time()) - ) && ( - set_session('admin_to', bigintval(REQUEST_POST('timeout'))) - ) - ); + return (( + setSession('admin_md5', generatePassString($passHash)) + ) && ( + setSession('admin_login', $adminLogin) + ) && ( + setSession('admin_last', time()) + )); } // Only be executed on cookie checking -function CHECK_ADMIN_COOKIES ($admin_login, $password) { +function ifAdminCookiesAreValid ($admin, $password) { // By default no admin cookies are found - $ret = "404"; $pass = ""; + $ret = '404'; + $pass = ''; // Get hash - $pass = GET_ADMIN_HASH(GET_ADMIN_ID($admin_login)); - if ($pass != "-1") $ret = "pass"; + $pass = getAdminHash($admin); + if ($pass != '-1') $ret = 'pass'; - //* DEBUG: */ print __FUNCTION__."(".__LINE__."):".generatePassString($pass)."(".strlen($pass).")/".$password."(".strlen($password).")
\n"; + //* DEBUG: */ outputHtml(__FUNCTION__."(".__LINE__."):".generatePassString($pass).'('.strlen($pass).")/".$password.'('.strlen($password).")
"); // Check if password matches - if (($ret == "pass") && ((generatePassString($pass) == $password) || ($pass == $password) || ((strlen($pass) == 32) && (md5($password) == $pass)))) { + if (($ret == 'pass') && ((generatePassString($pass) == $password) || ($pass == $password) || ((strlen($pass) == 32) && (md5($password) == $pass))) && (isAdmin())) { // Passwords matches! - $ret = "done"; - } + $ret = 'done'; + } // END - if // Return result return $ret; } -// -function ADMIN_DO_ACTION ($wht) { - global $DATA; - //* DEBUG: */ echo __LINE__."*".$wht."/".$GLOBALS['module']."/".$GLOBALS['action']."/".$GLOBALS['what']."*
\n"; +// Do an admin action +function doAdminAction () { + // Get default what + $what = getWhat(); + + //* DEBUG: */ outputHtml(__LINE__."*".$what.'/'.getModule().'/'.getAction().'/'.getWhat()."*
"); // Remove any spaces from variable - if (empty($wht)) { + if (empty($what)) { // Default admin action is the overview page - $wht = "overview"; + $what = 'overview'; } else { - // Compile out some chars - $wht = COMPILE_CODE($wht, false, false, false); + // Secure it + $what = secureString($what); } // Get action value - $act = GET_ACTION($GLOBALS['module'], $wht); + $action = getModeAction(getModule(), $what); - // Define admin login name and ID number - define('__ADMIN_LOGIN', get_session('admin_login')); - define('__ADMIN_ID' , GET_CURRENT_ADMIN_ID()); + // Define admin login name and id number + $content['login'] = getSession('admin_login'); + $content['id'] = getCurrentAdminId(); // Preload templates - if (EXT_IS_ACTIVE("admins")) { - define('__ADMIN_WELCOME', LOAD_TEMPLATE("admin_welcome_admins", true)); + if (isExtensionActive('admins')) { + $content['welcome'] = loadTemplate('admin_welcome_admins', true, $content); } else { - define('__ADMIN_WELCOME', LOAD_TEMPLATE("admin_welcome", true)); + $content['welcome'] = loadTemplate('admin_welcome', true, $content); } - define('__ADMIN_FOOTER' , LOAD_TEMPLATE("admin_footer" , true)); - define('__ADMIN_MENU' , ADD_ADMIN_MENU($act, $wht, true)); + $content['footer'] = loadTemplate('admin_footer' , true, $content); + $content['menu'] = addAdminMenu($action, $what, true); // Tableset header - LOAD_TEMPLATE("admin_main_header"); + loadTemplate('admin_main_header', false, $content); // Check if action/what pair is valid - $result_action = SQL_QUERY_ESC("SELECT id FROM `{!_MYSQL_PREFIX!}_admin_menu` -WHERE `action`='%s' AND ((what='%s' AND what != 'overview') OR ((what='' OR `what` IS NULL) AND '%s'='overview')) -LIMIT 1", array($act, $wht, $wht), __FUNCTION__, __LINE__); + $result_action = SQL_QUERY_ESC("SELECT + `id` +FROM + `{?_MYSQL_PREFIX?}_admin_menu` +WHERE + `action`='%s' AND + ( + ( + `what`='%s' AND `what` != 'overview' + ) OR ( + ( + `what`='' OR `what` IS NULL + ) AND ( + '%s'='overview' + ) + ) + ) +LIMIT 1", + array( + $action, + $what, + $what + ), __FUNCTION__, __LINE__); + + // Do we have an entry? if (SQL_NUMROWS($result_action) == 1) { // Is valid but does the inlcude file exists? - $INC = sprintf("inc/modules/admin/action-%s.php", $act); - if ((INCLUDE_READABLE($INC)) && (VALIDATE_MENU_ACTION("admin", $act, $wht)) && ($GLOBALS['acl_allow'] === true)) { + $inc = sprintf("inc/modules/admin/action-%s.php", $action); + if ((isIncludeReadable($inc)) && (isMenuActionValid('admin', $action, $what)) && ($GLOBALS['acl_allow'] === true)) { // Ok, we finally load the admin action module - LOAD_INC($INC); + loadInclude($inc); } elseif ($GLOBALS['acl_allow'] === false) { // Access denied - LOAD_TEMPLATE("admin_menu_failed", false, getMessage('ADMIN_ACCESS_DENIED')); - addFatalMessage(__FUNCTION__, __LINE__, getMessage('ADMIN_ACCESS_DENIED')); + loadTemplate('admin_menu_failed', false, sprintf(getMessage('ADMIN_ACCESS_DENIED'), $what)); } else { // Include file not found! :-( - LOAD_TEMPLATE("admin_menu_failed", false, sprintf(getMessage('ADMIN_ACTION_404'), $act)); - addFatalMessage(__FUNCTION__, __LINE__, getMessage('ADMIN_ACTION_404'), $act); + loadTemplate('admin_menu_failed', false, sprintf(getMessage('ADMIN_ACTION_404'), $action)); } } else { // Invalid action/what pair found! - LOAD_TEMPLATE("admin_menu_failed", false, sprintf(getMessage('ADMIN_ACTION_INVALID'), $act."/".$wht)); - addFatalMessage(__FUNCTION__, __LINE__, getMessage('ADMIN_ACTION_INVALID'), $act."/".$wht); + loadTemplate('admin_menu_failed', false, sprintf(getMessage('ADMIN_ACTION_INVALID'), $action.'/'.$what)); } // Free memory SQL_FREERESULT($result_action); // Tableset footer - LOAD_TEMPLATE("admin_main_footer"); + loadTemplate('admin_main_footer', false, $content); } -// -function ADD_ADMIN_MENU($act, $wht, $return=false) { + +// Adds an admin menu +function addAdminMenu ($action, $what, $return=false) { // Init variables $SUB = false; - $OUT = ""; + $OUT = ''; // Menu descriptions $GLOBALS['menu']['description'] = array(); $GLOBALS['menu']['title'] = array(); - // Is there a cache instance? - if ((isset($GLOBALS['cache_instance'])) && (is_object($GLOBALS['cache_instance'])) && (getConfig('cache_admin_menu') == "Y")) { - // Create cache name - $cacheName = "admin_".$act."_".$wht."_".GET_LANGUAGE()."_".strtolower(get_session('admin_login')); - - // Is that cache there? - if ($GLOBALS['cache_instance']->loadCacheFile($cacheName)) { - // Then load it - $data = $GLOBALS['cache_instance']->getArrayFromCache(); - - // Extract all parts - $OUT = base64_decode($data['output'][0]); - $GLOBALS['menu']['title'] = unserialize(base64_decode($data['title'][0])); - $GLOBALS['menu']['description'] = unserialize(base64_decode($data['descr'][0])); - - // Return or output content? - if ($return) { - return $OUT; - } else { - OUTPUT_HTML($OUT); - } - } // END - if - } // END - if - // Build main menu - $result_main = SQL_QUERY("SELECT action, title, descr FROM `{!_MYSQL_PREFIX!}_admin_menu` WHERE (what='' OR `what` IS NULL) ORDER BY `sort`, id DESC", __FUNCTION__, __LINE__); + $result_main = SQL_QUERY("SELECT + `action`, `title`, `descr` +FROM + `{?_MYSQL_PREFIX?}_admin_menu` +WHERE + (`what`='' OR `what` IS NULL) +ORDER BY + `sort` ASC, + `id` DESC", __FUNCTION__, __LINE__); + + // Do we have entries? if (SQL_NUMROWS($result_main) > 0) { - $OUT = " -\n"; + $OUT = "
 
\n"; + $OUT .= " - -\n"; - $result_what = SQL_QUERY_ESC("SELECT what, title, descr FROM `{!_MYSQL_PREFIX!}_admin_menu` WHERE `action`='%s' AND `what` != '' AND `what` IS NOT NULL ORDER BY `sort`, id DESC", + + $OUT .= " +\n"; + + // Check for menu entries + $result_what = SQL_QUERY_ESC("SELECT + `what`, `title`, `descr` +FROM + `{?_MYSQL_PREFIX?}_admin_menu` +WHERE + `action`='%s' AND + `what` != '' AND + `what` IS NOT NULL +ORDER BY + `sort` ASC, + `id` DESC", array($menu), __FUNCTION__, __LINE__); - if ((SQL_NUMROWS($result_what) > 0) && ($act == $menu)) - { + + // Remember the count for later checks + setAdminMenuHasEntries($menu, ((SQL_NUMROWS($result_what) > 0) && ($action == $menu))); + + // Do we have entries? + if ((ifAdminMenuHasEntries($menu)) && (SQL_NUMROWS($result_what) > 0)) { $GLOBALS['menu']['description'] = array(); $GLOBALS['menu']['title'] = array(); $SUB = true; - $OUT .= " - - -\n"; - } - $OUT .= "\n"; - } - } + $OUT .= " +\n"; + } // END - if + + $OUT .= "
  •  
  • \n"; + } // END - if + } // END - while // Free memory SQL_FREERESULT($result_main); - $OUT .= "
     
    -  · "; - if (($menu == $act) && (empty($wht))) - { - $OUT .= ""; - } - else - { - $OUT .= "["; + $OUT .= "
  • +
  •   - \n"; - while (list($wht_sub, $title_what, $desc_what) = SQL_FETCHROW($result_what)) { - // Filename - $INC = sprintf("%sinc/modules/admin/what-%s.php", constant('PATH'), $wht_sub); - if ((EXT_IS_ACTIVE("admins")) && (GET_EXT_VERSION("admins") > "0.2")) { - $ACL = ADMINS_CHECK_ACL("", $wht_sub); + $OUT .= "
    • \n"; + // @TODO Rewrite this to $content = SQL_FETCHARRAY() + while (list($what_sub, $title_what, $desc_what) = SQL_FETCHROW($result_what)) { + // Check for access level + if ((isExtensionActive('admins')) && (getExtensionVersion('admins') > '0.2.0')) { + $ACL = adminsCheckAdminAcl('', $what_sub); } else { - // ACL is "allow"... hmmm + // @TODO ACL is 'allow'... hmmm $ACL = true; } - $readable = INCLUDE_READABLE($INC); + + // Filename + $inc = sprintf("inc/modules/admin/what-%s.php", $what_sub); + + // Is the file readable? + $readable = isIncludeReadable($inc); + + // Access allowed? if ($ACL === true) { // Insert compiled title and description - $GLOBALS['menu']['title'][$wht_sub] = $title_what; - $GLOBALS['menu']['description'][$wht_sub] = $desc_what; - $OUT .= "
  • - -\n"; - } - } + $OUT .= " +\n"; + } // END - if + } // END - while // Free memory SQL_FREERESULT($result_what); - $OUT .= "
    -  --> "; - if ($readable === true) - { - if ($wht == $wht_sub) - { + $GLOBALS['menu']['title'][$what_sub] = $title_what; + $GLOBALS['menu']['description'][$what_sub] = $desc_what; + $OUT .= "
  • +
  • -
    \n"; + $OUT .= "\n"; } - // Compile and run the code here. This inserts all constants into the - // HTML output. Costs me some time to figure this out... *sigh* Quix0r - // @TODO Is this eval longer needed? - $eval = "\$OUT = \"".COMPILE_CODE(smartAddSlashes($OUT))."\";"; - eval($eval); - // Is there a cache instance again? - if ((isset($GLOBALS['cache_instance'])) && (is_object($GLOBALS['cache_instance'])) && (getConfig('cache_admin_menu') == "Y")) { - // Init cache - $GLOBALS['cache_instance']->init($cacheName); - - // Prepare cache data - $data = array( - 'output' => base64_encode($OUT), - 'title' => $GLOBALS['menu']['title'], - 'descr' => $GLOBALS['menu']['description'] - ); - - // Write the data away - $GLOBALS['cache_instance']->addRow($data); - - // Close cache - $GLOBALS['cache_instance']->finalize(); - } // END - if - // Return or output content? - if ($return) { + if ($return === true) { return $OUT; } else { - OUTPUT_HTML($OUT); + outputHtml($OUT); } } -// -function ADD_MEMBER_SELECTION_BOX ($def="0", $add_all=false, $return=false, $none=false, $field="userid") -{ + +// Create member selection box +function addMemberSelectionBox ($def=0, $add_all=false, $return=false, $none=false, $field='userid') { // Output selection form with all confirmed user accounts listed - $result = SQL_QUERY("SELECT userid, surname, family FROM `{!_MYSQL_PREFIX!}_user_data` ORDER BY userid", __FUNCTION__, __LINE__); - $OUT = ""; + $result = SQL_QUERY("SELECT `userid`, `surname`, `family` FROM `{?_MYSQL_PREFIX?}_user_data` ORDER BY `userid` ASC", __FUNCTION__, __LINE__); + + // Default output + $OUT = ''; // USe this only for adding points (e.g. adding refs really makes no sence ;-) ) - if ($add_all) $OUT = " \n"; - elseif ($none) $OUT = " \n"; - while (list($id, $sname, $fname) = SQL_FETCHROW($result)) - { - $OUT .= " \n"; + elseif ($none === true) $OUT = " \n"; + + while ($content = SQL_FETCHARRAY($result)) { + $OUT .= " \n"; + $OUT = "\n"; - + // Return contents return $OUT; } -// -function ADMIN_USER_PROFILE_LINK ($uid, $title="", $wht="list_user") { - if (($title == "") && ($title != "0")) { + +// Creates a user-profile link for the admin. This function can also be used for many other purposes +function generateUserProfileLink ($userid, $title = '', $what = 'list_user') { + if (($title == '') && ($userid > 0)) { // Set userid as title - $title = $uid; + $title = $userid; } // END - if - if (($title == "0") && ($wht == "list_refs")) { + if (($title == '0') && ($what == 'list_refs')) { // Return title again return $title; - } // END - if + } elseif (isExtensionActive('nickname')) { + // Get nickname + $nick = getNickname($userid); + + // Is it not empty, use it as title else the userid + if (!empty($nick)) $title = $nick . '(' . $userid . ')'; else $title = $userid; + } - //* DEBUG: */ echo "a:".$title."
    "; // Return link - return "".$title.""; + return '[' . $title . ']'; } // Check "logical-area-mode" -function ADMIN_CHECK_MENU_MODE () { +function adminGetMenuMode () { // Set the global mode as the mode for all admins - $MODE = getConfig('admin_menu'); - $ADMIN = $MODE; + $mode = getConfig('admin_menu'); + $ADMIN = $mode; // Get admin id - $aid = GET_CURRENT_ADMIN_ID(); + $adminId = getCurrentAdminId(); // Check individual settings of current admin - if (isset($GLOBALS['cache_array']['admins']['la_mode'][$aid])) { + if (isset($GLOBALS['cache_array']['admin']['la_mode'][$adminId])) { // Load from cache - $ADMIN = $GLOBALS['cache_array']['admins']['la_mode'][$aid]; - incrementConfigEntry('cache_hits'); - } elseif (GET_EXT_VERSION("admins") >= "0.6.7") { - // Load from database when version of "admins" is enough - $result = SQL_QUERY_ESC("SELECT la_mode FROM `{!_MYSQL_PREFIX!}_admins` WHERE id=%s LIMIT 1", - array($aid), __FUNCTION__, __LINE__); + $ADMIN = $GLOBALS['cache_array']['admin']['la_mode'][$adminId]; + incrementStatsEntry('cache_hits'); + } elseif (isExtensionInstalledAndNewer('admins', '0.6.7')) { + // Load from database when version of 'admins' is enough + $result = SQL_QUERY_ESC("SELECT la_mode FROM `{?_MYSQL_PREFIX?}_admins` WHERE `id`=%s LIMIT 1", + array($adminId), __FUNCTION__, __LINE__); if (SQL_NUMROWS($result) == 1) { // Load data list($ADMIN) = SQL_FETCHROW($result); @@ -729,26 +751,26 @@ function ADMIN_CHECK_MENU_MODE () { } // Check what the admin wants and set it when it's not the global mode - if ($ADMIN != "global") $MODE = $ADMIN; + if ($ADMIN != 'global') $mode = $ADMIN; // Return admin-menu's mode - return $MODE; + return $mode; } // Change activation status -function ADMIN_CHANGE_ACTIVATION_STATUS ($IDs, $table, $row, $idRow = "id") { - $cnt = 0; $newStatus = "Y"; +function adminChangeActivationStatus ($IDs, $table, $row, $idRow = 'id') { + $cnt = '0'; $newStatus = 'Y'; if ((is_array($IDs)) && (count($IDs) > 0)) { // "Walk" all through and count them foreach ($IDs as $id => $selected) { - // Secure the ID number + // Secure the id number $id = bigintval($id); // Should always be set... ;-) 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__); + $result = SQL_QUERY_ESC("SELECT %s FROM `{?_MYSQL_PREFIX?}_%s` WHERE %s=%s LIMIT 1", + array($row, $table, $idRow, $id), __FUNCTION__, __LINE__); // Row found? if (SQL_NUMROWS($result) == 1) { @@ -756,11 +778,11 @@ function ADMIN_CHANGE_ACTIVATION_STATUS ($IDs, $table, $row, $idRow = "id") { list($currStatus) = SQL_FETCHROW($result); // And switch it N<->Y - if ($currStatus == "Y") $newStatus = "N"; else $newStatus = "Y"; + if ($currStatus == 'Y') $newStatus = 'N'; else $newStatus = '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__); + SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_%s` SET %s='%s' WHERE %s=%s LIMIT 1", + array($table, $row, $newStatus, $idRow, $id), __FUNCTION__, __LINE__); // Count up affected rows $cnt += SQL_AFFECTEDROWS(); @@ -772,15 +794,15 @@ function ADMIN_CHANGE_ACTIVATION_STATUS ($IDs, $table, $row, $idRow = "id") { } // END - foreach // Output status - LOAD_TEMPLATE("admin_settings_saved", false, ADMIN_STATUS_CHANGED_1.$cnt.ADMIN_STATUS_CHANGED_2.count($IDs).ADMIN_STATUS_CHANGED_3); + loadTemplate('admin_settings_saved', false, sprintf(getMessage('ADMIN_STATUS_CHANGED'), $cnt, count($IDs))); } else { // Nothing selected! - LOAD_TEMPLATE("admin_settings_saved", false, getMessage('ADMIN_NOTHING_SELECTED_CHANGE')); + loadTemplate('admin_settings_saved', false, getMessage('ADMIN_NOTHING_SELECTED_CHANGE')); } } // Send mails for del/edit/lock build modes -function ADMIN_SEND_BUILD_MAILS ($mode, $table, $content, $id, $subjectPart="") { +function sendAdminBuildMails ($mode, $table, $content, $id, $subjectPart = '') { // Default subject is the subject part $subject = $subjectPart; @@ -791,39 +813,39 @@ function ADMIN_SEND_BUILD_MAILS ($mode, $table, $content, $id, $subjectPart="") } // END - if // Is the raw userid set? - if (REQUEST_POST('uid_raw', $id) > 0) { + if (postRequestElement('userid_raw', $id) > 0) { // Generate subject - $subjectLine = constant('MEMBER_'.strtoupper($subject).'_'.strtoupper($table).'_SUBJECT'); + $subjectLine = getMessage('MEMBER_'.strtoupper($subject).'_'.strtoupper($table).'_SUBJECT'); // Load email template if (!empty($subjectPart)) { - $mail = LOAD_EMAIL_TEMPLATE("member_".$mode."_".strtolower($subjectPart)."_".$table, $content); + $mail = loadEmailTemplate('member_' . $mode . '_' . strtolower($subjectPart) . '_' . $table, $content); } else { - $mail = LOAD_EMAIL_TEMPLATE("member_".$mode."_".$table, $content); + $mail = loadEmailTemplate('member_' . $mode . '_' . $table, $content); } // Send email out - SEND_EMAIL(REQUEST_POST('uid_raw', $id), $subjectLine, $mail); + sendEmail(postRequestElement('userid_raw', $id), $subjectLine, $mail); } // END - if // Generate subject - $subjectLine = constant('ADMIN_'.strtoupper($subject).'_'.strtoupper($table).'_SUBJECT'); + $subjectLine = getMessage('ADMIN_'.strtoupper($subject).'_'.strtoupper($table).'_SUBJECT'); // Send admin notification out if (!empty($subjectPart)) { - SEND_ADMIN_NOTIFICATION($subjectLine, "admin_".$mode."_".strtolower($subjectPart)."_".$table, $content, REQUEST_POST('uid_raw', $id)); + sendAdminNotification($subjectLine, 'admin_' . $mode . '_' . strtolower($subjectPart) . '_' . $table, $content, postRequestElement('userid_raw', $id)); } else { - SEND_ADMIN_NOTIFICATION($subjectLine, "admin_".$mode."_".$table, $content, REQUEST_POST('uid_raw', $id)); + sendAdminNotification($subjectLine, 'admin_' . $mode . '_' . $table, $content, postRequestElement('userid_raw', $id)); } } // Build a special template list -function ADMIN_BUILD_LIST ($listType, $IDs, $table, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn) { - $OUT = ""; $SW = 2; +function adminListBuilder ($listType, $IDs, $table, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn) { + $OUT = ''; $SW = 2; // "Walk" through all entries foreach ($IDs as $id => $selected) { - // Secure ID number + // Secure id number $id = bigintval($id); // Get result from a given column array and table name @@ -840,23 +862,23 @@ function ADMIN_BUILD_LIST ($listType, $IDs, $table, $columns, $filterFunctions, $idx = array_search($key, $columns, true); // Do we have a userid? - if ($key == "userid") { + if ($key == 'userid') { // Add it again as raw id - $content['uid'] = bigintval($value); + $content['userid'] = bigintval($value); } // END - if // Handle the call in external function - $content[$key] = HANDLE_EXTRA_VALUES($filterFunctions[$idx], $value, $extraValues[$idx]); + $content[$key] = handleExtraValues($filterFunctions[$idx], $value, $extraValues[$idx]); } // END - foreach // Add color switching $content['sw'] = $SW; // Then list it - $OUT .= LOAD_TEMPLATE(sprintf("admin_%s_%s_row", - $listType, - $table - ), true, $content + $OUT .= loadTemplate(sprintf("admin_%s_%s_row", + $listType, + $table + ), true, $content ); // Switch color @@ -868,26 +890,24 @@ function ADMIN_BUILD_LIST ($listType, $IDs, $table, $columns, $filterFunctions, } // END - foreach // Load master template - LOAD_TEMPLATE(sprintf("admin_%s_%s", - $listType, - $table - ), false, $OUT + loadTemplate(sprintf("admin_%s_%s", + $listType, + $table + ), false, $OUT ); } // Change status of "build" list -function ADMIN_BUILD_STATUS_HANDLER ($mode, $IDs, $table, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn, $statusArray) { +function adminBuilderStatusHandler ($mode, $IDs, $table, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn, $statusArray) { // All valid entries? (We hope so here!) if ((is_array($IDs)) && (count($IDs) > 0) && (count($columns) == count($filterFunctions)) && (count($columns) == count($extraValues)) && (count($statusArray) > 0)) { // "Walk" through all entries foreach ($IDs as $id => $sel) { // Construct SQL query - $SQL = sprintf("UPDATE `{!_MYSQL_PREFIX!}_%s` SET", - SQL_ESCAPE($table) - ); + $sql = sprintf("UPDATE `{?_MYSQL_PREFIX?}_%s` SET", SQL_ESCAPE($table)); // Load data of entry - $result = SQL_QUERY_ESC("SELECT * FROM `{!_MYSQL_PREFIX!}_%s` WHERE %s=%s LIMIT 1", + $result = SQL_QUERY_ESC("SELECT * FROM `{?_MYSQL_PREFIX?}_%s` WHERE %s=%s LIMIT 1", array($table, $idColumn, $id), __FUNCTION__, __LINE__); // Fetch the data @@ -897,17 +917,17 @@ function ADMIN_BUILD_STATUS_HANDLER ($mode, $IDs, $table, $columns, $filterFunct SQL_FREERESULT($result); // Add all status entries (e.g. status column last_updated or so) - $newStatus = "UNKNOWN"; - $oldStatus = "UNKNOWN"; - $statusColumn = "unknown"; + $newStatus = 'UNKNOWN'; + $oldStatus = 'UNKNOWN'; + $statusColumn = 'unknown'; foreach ($statusArray as $column => $statusInfo) { // Does the entry exist? if ((isset($content[$column])) && (isset($statusInfo[$content[$column]]))) { // Add these entries for update - $SQL .= sprintf(" %s='%s',", SQL_ESCAPE($column), SQL_ESCAPE($statusInfo[$content[$column]])); + $sql .= sprintf(" %s='%s',", SQL_ESCAPE($column), SQL_ESCAPE($statusInfo[$content[$column]])); // Remember status - if ($statusColumn == "unknown") { + if ($statusColumn == 'unknown') { // Always (!!!) change status column first! $oldStatus = $content[$column]; $newStatus = $statusInfo[$oldStatus]; @@ -915,21 +935,21 @@ function ADMIN_BUILD_STATUS_HANDLER ($mode, $IDs, $table, $columns, $filterFunct } // END - if } elseif (isset($content[$column])) { // Unfinished! - mxchange_die("{--".__FUNCTION__."--}:".__LINE__.":UNFINISHED: id={$id}/{$column}[".gettype($statusInfo)."] = {$content[$column]}"); + app_die(__FUNCTION__, __LINE__, ":UNFINISHED: id={$id}/{$column}[".gettype($statusInfo)."] = {$content[$column]}"); } } // END - foreach // Add other columns as well - foreach (REQUEST_POST_ARRAY() as $key => $entries) { + foreach (postRequestArray() as $key => $entries) { // Skip id, raw userid and 'do_$mode' - if (!in_array($key, array($idColumn, 'uid_raw', ('do_'.$mode)))) { + if (!in_array($key, array($idColumn, 'userid_raw', ('do_'.$mode)))) { // Are there brackets () at the end? if (substr($entries[$id], -2, 2) == "()") { // Direct SQL command found - $SQL .= sprintf(" %s=%s,", SQL_ESCAPE($key), SQL_ESCAPE($entries[$id])); + $sql .= sprintf(" %s=%s,", SQL_ESCAPE($key), SQL_ESCAPE($entries[$id])); } else { // Add regular entry - $SQL .= sprintf(" %s='%s',", SQL_ESCAPE($key), SQL_ESCAPE($entries[$id])); + $sql .= sprintf(" %s='%s',", SQL_ESCAPE($key), SQL_ESCAPE($entries[$id])); // Add entry $content[$key] = $entries[$id]; @@ -938,7 +958,7 @@ function ADMIN_BUILD_STATUS_HANDLER ($mode, $IDs, $table, $columns, $filterFunct } // END - foreach // Finish SQL statement - $SQL = substr($SQL, 0, -1) . sprintf(" WHERE %s=%s AND %s='%s' LIMIT 1", + $sql = substr($sql, 0, -1) . sprintf(" WHERE `%s`=%s AND `%s`='%s' LIMIT 1", $idColumn, bigintval($id), $statusColumn, @@ -946,37 +966,37 @@ function ADMIN_BUILD_STATUS_HANDLER ($mode, $IDs, $table, $columns, $filterFunct ); // Run the SQL - SQL_QUERY($SQL, __FUNCTION__, __LINE__); + SQL_QUERY($sql, __FUNCTION__, __LINE__); // Do we have an URL? if (isset($content['url'])) { // Then add a framekiller test as well - $content['frametester'] = FRAMETESTER($content['url']); + $content['frametester'] = generateFrametesterUrl($content['url']); } // END - if // Send "build mails" out - ADMIN_SEND_BUILD_MAILS($mode, $table, $content, $id, $statusInfo[$content[$column]]); + sendAdminBuildMails($mode, $table, $content, $id, $statusInfo[$content[$column]]); } // END - foreach } // END - if } -// Delete rows by given ID numbers -function ADMIN_DELETE_ENTRIES_CONFIRM ($IDs, $table, $columns=array(), $filterFunctions=array(), $extraValues=array(), $deleteNow=false, $idColumn="id", $userIdColumn="userid") { +// Delete rows by given id numbers +function adminDeleteEntriesConfirm ($IDs, $table, $columns=array(), $filterFunctions=array(), $extraValues=array(), $deleteNow=false, $idColumn='id', $userIdColumn='userid') { // All valid entries? (We hope so here!) if ((is_array($IDs)) && (count($IDs) > 0) && (count($columns) == count($filterFunctions)) && (count($columns) == count($extraValues))) { // Shall we delete here or list for deletion? - if ($deleteNow) { + if ($deleteNow === true) { // The base SQL command: - $SQL = "DELETE LOW_PRIORITY FROM `{!_MYSQL_PREFIX!}_%s` WHERE %s IN (%s)"; + $sql = "DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_%s` WHERE %s IN (%s)"; // Delete them all - $idList = ""; + $idList = ''; foreach ($IDs as $id => $sel) { // Is there a userid? - if (REQUEST_ISSET_POST('uid_raw', $id)) { + if (isPostRequestElementSet('userid_raw', $id)) { // Load all data from that id - $result = SQL_QUERY_ESC("SELECT * FROM `{!_MYSQL_PREFIX!}_%s` WHERE %s=%s LIMIT 1", - array($table, $idColumn, $id), __FUNCTION__, __LINE__); + $result = SQL_QUERY_ESC("SELECT * FROM `{?_MYSQL_PREFIX?}_%s` WHERE %s=%s LIMIT 1", + array($table, $idColumn, $id), __FUNCTION__, __LINE__); // Fetch the data $content = SQL_FETCHARRAY($result); @@ -985,50 +1005,50 @@ function ADMIN_DELETE_ENTRIES_CONFIRM ($IDs, $table, $columns=array(), $filterFu SQL_FREERESULT($result); // Send "build mails" out - ADMIN_SEND_BUILD_MAILS("del", $table, $content, $id); + sendAdminBuildMails('del', $table, $content, $id); } // END - if // Add id number - $idList .= $id.","; + $idList .= $id . ','; } // END - foreach // Run the query - SQL_QUERY($SQL, array($table, $idColumn, substr($idList, 0, -1)), __FUNCTION__, __LINE__); + SQL_QUERY($sql, array($table, $idColumn, substr($idList, 0, -1)), __FUNCTION__, __LINE__); // Was this fine? if (SQL_AFFECTEDROWS() == count($IDs)) { // All deleted - LOAD_TEMPLATE("admin_settings_saved", false, getMessage('ADMIN_ALL_ENTRIES_REMOVED')); + loadTemplate('admin_settings_saved', false, getMessage('ADMIN_ALL_ENTRIES_REMOVED')); } else { // Some are still there :( - LOAD_TEMPLATE("admin_settings_saved", false, sprintf(ADMIN_SOME_ENTRIES_NOT_DELETED, SQL_AFFECTEDROWS(), count($IDs))); + loadTemplate('admin_settings_saved', false, sprintf(getMessage('ADMIN_SOME_ENTRIES_NOT_DELETED'), SQL_AFFECTEDROWS(), count($IDs))); } } else { // List for deletion confirmation - ADMIN_BUILD_LIST("del", $IDs, $table, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn); + adminListBuilder('del', $IDs, $table, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn); } } // END - if } -// Edit rows by given ID numbers -function ADMIN_EDIT_ENTRIES_CONFIRM ($IDs, $table, $columns=array(), $filterFunctions=array(), $extraValues=array(), $editNow=false, $idColumn="id", $userIdColumn="userid") { +// Edit rows by given id numbers +function adminEditEntriesConfirm ($IDs, $table, $columns=array(), $filterFunctions=array(), $extraValues=array(), $editNow=false, $idColumn='id', $userIdColumn='userid') { // All valid entries? (We hope so here!) if ((is_array($IDs)) && (count($IDs) > 0) && (count($columns) == count($filterFunctions)) && (count($columns) == count($extraValues))) { // Shall we change here or list for editing? - if ($editNow) { + if ($editNow === true) { // Change them all - $affected = 0; + $affected = '0'; foreach ($IDs as $id => $sel) { // Prepare content array (new values) $content = array(); // Prepare SQL for this row - $SQL = sprintf("UPDATE `{!_MYSQL_PREFIX!}_ SET", + $sql = sprintf("UPDATE `{?_MYSQL_PREFIX?}_%s` SET", SQL_ESCAPE($table) ); - foreach (REQUEST_POST_ARRAY() as $key => $entries) { + foreach (postRequestArray() as $key => $entries) { // Skip raw userid which is always invalid - if ($key == "uid_raw") { + if ($key == 'userid_raw') { // Continue with next field continue; } // END - if @@ -1041,13 +1061,13 @@ function ADMIN_EDIT_ENTRIES_CONFIRM ($IDs, $table, $columns=array(), $filterFunc // Send data through the filter function if found if ((isset($filterFunctions[$key])) && (isset($extraValues[$key]))) { // Filter function set! - $entries[$id] = HANDLE_EXTRA_VALUES($filterFunctions[$key], $entries[$id], $extraValues[$key]); + $entries[$id] = handleExtraValues($filterFunctions[$key], $entries[$id], $extraValues[$key]); } // END - if // Then add this value - $SQL .= sprintf(" %s='%s',", - SQL_ESCAPE($key), - SQL_ESCAPE($entries[$id]) + $sql .= sprintf(" `%s`='%s',", + SQL_ESCAPE($key), + SQL_ESCAPE($entries[$id]) ); } elseif (($key != $idColumn) && (!is_array($entries))) { // Add normal entries as well! @@ -1055,110 +1075,106 @@ function ADMIN_EDIT_ENTRIES_CONFIRM ($IDs, $table, $columns=array(), $filterFunc } // Do we have an URL? - if ($key == "url") { + if ($key == 'url') { // Then add a framekiller test as well - $content['frametester'] = FRAMETESTER($content[$key]); + $content['frametester'] = generateFrametesterUrl($content[$key]); } // END - if } // END - foreach // Finish SQL command - $SQL = substr($SQL, 0, -1) . " WHERE ".$idColumn."=".bigintval($id)." LIMIT 1"; + $sql = substr($sql, 0, -1) . " WHERE `".$idColumn."`=".bigintval($id)." LIMIT 1"; // Run this query - SQL_QUERY($SQL, __FUNCTION__, __LINE__); + SQL_QUERY($sql, __FUNCTION__, __LINE__); // Add affected rows $affected += SQL_AFFECTEDROWS(); // Load all data from that id - $result = SQL_QUERY_ESC("SELECT * FROM `{!_MYSQL_PREFIX!}_%s` WHERE %s=%s LIMIT 1", + $result = SQL_QUERY_ESC("SELECT * FROM `{?_MYSQL_PREFIX?}_%s` WHERE `%s`=%s LIMIT 1", array($table, $idColumn, $id), __FUNCTION__, __LINE__); - // Fetch the data - global $DATA; - $DATA = SQL_FETCHARRAY($result); + // Fetch the data and merge it into $content + $content = merge_array($content, SQL_FETCHARRAY($result)); // Free the result SQL_FREERESULT($result); // Send "build mails" out - ADMIN_SEND_BUILD_MAILS("edit", $table, $content, $id); + sendAdminBuildMails('edit', $table, $content, $id); } // END - foreach // Was this fine? if ($affected == count($IDs)) { // All deleted - LOAD_TEMPLATE("admin_settings_saved", false, getMessage('ADMIN_ALL_ENTRIES_EDITED')); + loadTemplate('admin_settings_saved', false, getMessage('ADMIN_ALL_ENTRIES_EDITED')); } else { // Some are still there :( - LOAD_TEMPLATE("admin_settings_saved", false, sprintf(ADMIN_SOME_ENTRIES_NOT_EDITED, $affected, count($IDs))); + loadTemplate('admin_settings_saved', false, sprintf(getMessage('ADMIN_SOME_ENTRIES_NOT_EDITED'), $affected, count($IDs))); } } else { // List for editing - ADMIN_BUILD_LIST("edit", $IDs, $table, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn); + adminListBuilder('edit', $IDs, $table, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn); } } // END - if } -// Un-/lock rows by given ID numbers -function ADMIN_LOCK_ENTRIES_CONFIRM ($IDs, $table, $columns=array(), $filterFunctions=array(), $extraValues=array(), $statusArray=array(), $lockNow=false, $idColumn="id", $userIdColumn="userid") { +// Un-/lock rows by given id numbers +function adminLockEntriesConfirm ($IDs, $table, $columns=array(), $filterFunctions=array(), $extraValues=array(), $statusArray=array(), $lockNow=false, $idColumn='id', $userIdColumn='userid') { // All valid entries? (We hope so here!) - if ((is_array($IDs)) && (count($IDs) > 0) && (count($columns) == count($filterFunctions)) && (count($columns) == count($extraValues)) && ((!$lockNow) || (count($statusArray) == 1))) { + if ((is_array($IDs)) && (count($IDs) > 0) && (count($columns) == count($filterFunctions)) && (count($columns) == count($extraValues)) && (($lockNow === false) || (count($statusArray) == 1))) { // Shall we un-/lock here or list for locking? - if ($lockNow) { + if ($lockNow === true) { // Un-/lock entries - ADMIN_BUILD_STATUS_HANDLER("lock", $IDs, $table, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn, $statusArray); + adminBuilderStatusHandler("lock", $IDs, $table, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn, $statusArray); } else { // List for editing - ADMIN_BUILD_LIST("lock", $IDs, $table, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn); + adminListBuilder("lock", $IDs, $table, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn); } } // END - if } -// Undelete rows by given ID numbers -function ADMIN_UNDELETE_ENTRIES_CONFIRM ($IDs, $table, $columns=array(), $filterFunctions=array(), $extraValues=array(), $statusArray=array(), $lockNow=false, $idColumn="id", $userIdColumn="userid") { +// Undelete rows by given id numbers +function adminUndeleteEntriesConfirm ($IDs, $table, $columns=array(), $filterFunctions=array(), $extraValues=array(), $statusArray=array(), $undeleteNow=false, $idColumn='id', $userIdColumn='userid') { // All valid entries? (We hope so here!) - if ((is_array($IDs)) && (count($IDs) > 0) && (count($columns) == count($filterFunctions)) && (count($columns) == count($extraValues)) && ((!$lockNow) || (count($statusArray) == 1))) { + if ((is_array($IDs)) && (count($IDs) > 0) && (count($columns) == count($filterFunctions)) && (count($columns) == count($extraValues)) && (($undeleteNow === false) || (count($statusArray) == 1))) { // Shall we un-/lock here or list for locking? - if ($lockNow) { + if ($undeleteNow === true) { // Undelete entries - ADMIN_BUILD_STATUS_HANDLER("undelete", $IDs, $table, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn, $statusArray); + adminBuilderStatusHandler("undelete", $IDs, $table, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn, $statusArray); } else { // List for editing - ADMIN_BUILD_LIST("undelete", $IDs, $table, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn); + adminListBuilder("undelete", $IDs, $table, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn); } } // END - if } // Checks proxy settins by fetching check-updates3.php from www.mxchange.org -function ADMIN_TEST_PROXY_SETTINGS ($settingsArray) { +function adminTestProxySettings ($settingsArray) { // Set temporary the new settings mergeConfig($settingsArray); // Now get the test URL - $content = GET_URL("check-updates3.php"); + $content = sendGetRequest('check-updates3.php'); // Is the first line with "200 OK"? - $valid = eregi("200 OK", $content[0]); + $valid = (strpos($content[0], '200 OK') !== false); // Return result return $valid; } // Sends out a link to the given email adress so the admin can reset his/her password -function ADMIN_SEND_PASSWORD_RESET_LINK ($email) { +function sendAdminPasswordResetLink ($email) { // Init output - $OUT = ""; - - // Compile out security characters (must be for looking up!) - $email = COMPILE_CODE($email); + $OUT = ''; // Look up administator login - $result = SQL_QUERY_ESC("SELECT id, login, password FROM `{!_MYSQL_PREFIX!}_admins` WHERE email='%s' LIMIT 1", + $result = SQL_QUERY_ESC("SELECT `id`, `login`, `password` FROM `{?_MYSQL_PREFIX?}_admins` WHERE `email`='%s' LIMIT 1", array($email), __FUNCTION__, __LINE__); // Is there an account? - if (SQL_NUMROWS($result) == 0) { + if (SQL_NUMROWS($result) == '0') { // No account found! return getMessage('ADMIN_NO_LOGIN_WITH_EMAIL'); } // END - if @@ -1170,32 +1186,29 @@ function ADMIN_SEND_PASSWORD_RESET_LINK ($email) { SQL_FREERESULT($result); // Generate hash for reset link - $content['hash'] = generateHash(URL.":".$content['id'].":".$content['login'].":".$content['password'], substr($content['password'], 10)); + $content['hash'] = generateHash(getConfig('URL').':'.$content['id'].':'.$content['login'].':'.$content['password'], substr($content['password'], 10)); // Remove some data unset($content['id']); unset($content['password']); // Prepare email - $mailText = LOAD_EMAIL_TEMPLATE("admin_reset_password", $content); + $mailText = loadEmailTemplate('admin_reset_password', $content); // Send it out - SEND_EMAIL($email, getMessage('ADMIN_RESET_PASS_LINK_SUBJ'), $mailText); + sendEmail($email, getMessage('ADMIN_RESET_PASS_LINK_SUBJ'), $mailText); // Prepare output return getMessage('ADMIN_RESET_LINK_SENT'); } // Validate hash and login for password reset -function ADMIN_VALIDATE_RESET_LINK_HASH_LOGIN ($hash, $login) { +function adminResetValidateHashLogin ($hash, $login) { // By default nothing validates... ;) $valid = false; - // Compile the login for lookup - $login = COMPILE_CODE($login); - // Then try to find that user - $result = SQL_QUERY_ESC("SELECT id, password, email FROM `{!_MYSQL_PREFIX!}_admins` WHERE login='%s' LIMIT 1", + $result = SQL_QUERY_ESC("SELECT `id`, `password`, `email` FROM `{?_MYSQL_PREFIX?}_admins` WHERE `login`='%s' LIMIT 1", array($login), __FUNCTION__, __LINE__); // Is an account here? @@ -1204,7 +1217,7 @@ function ADMIN_VALIDATE_RESET_LINK_HASH_LOGIN ($hash, $login) { $content = SQL_FETCHARRAY($result); // Generate hash again - $hashFromData = generateHash(URL.":".$content['id'].":".$login.":".$content['password'], substr($content['password'], 10)); + $hashFromData = generateHash(getConfig('URL') . ':' . $content['id'] . ':' . $login . ':' . $content['password'], substr($content['password'], 10)); // Does both match? $valid = ($hash == $hashFromData); @@ -1216,13 +1229,14 @@ function ADMIN_VALIDATE_RESET_LINK_HASH_LOGIN ($hash, $login) { // Return result return $valid; } + // Reset the password for the login. Do NOT call this function without calling above function first! -function ADMIN_RESET_PASSWORD ($login, $password) { +function doResetAdminPassword ($login, $password) { // Init hash - $passHash = ""; + $passHash = ''; // Now check if we have sql_patches installed - if (GET_EXT_VERSION("sql_patches") >= "0.3.6") { + if (isExtensionInstalledAndNewer('sql_patches', '0.3.6')) { // Use new way of hashing $passHash = generateHash($password); } else { @@ -1231,30 +1245,110 @@ function ADMIN_RESET_PASSWORD ($login, $password) { } // Update database - SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_admins` SET password='%s' WHERE login='%s' LIMIT 1", + SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_admins` SET `password`='%s' WHERE `login`='%s' LIMIT 1", array($passHash, $login), __FUNCTION__, __LINE__); // Run filters - RUN_FILTER('post_admin_reset_pass', array('login' => $login, 'hash' => $passHash)); + runFilterChain('post_admin_reset_pass', array('login' => $login, 'hash' => $passHash)); // Return output - return ADMIN_PASSWORD_RESET_DONE; + return getMessage('ADMIN_PASSWORD_RESET_DONE'); } + // Solves a task by given id number -function ADMIN_SOLVE_TASK ($id) { +function adminSolveTask ($id) { // Update the task data - ADMIN_UPDATE_TASK_DATA($id, "status", "SOLVED"); + adminUpdateTaskData($id, 'status', 'SOLVED'); } + // Marks a given task as deleted -function ADMIN_DELETE_TASK ($id) { +function adminDeleteTask ($id) { // Update the task data - ADMIN_UPDATE_TASK_DATA($id, "status", "DELETED"); + adminUpdateTaskData($id, 'status', 'DELETED'); } + // Function to update task data -function ADMIN_UPDATE_TASK_DATA ($id, $row, $data) { +function adminUpdateTaskData ($id, $row, $data) { + // Should be admin! + if (!isAdmin()) { + // Not an admin so redirect better + redirectToUrl('index.php'); + } // END - if + + // Is the id not set, then we need a backtrace here... :( + if ($id <= 0) { + // Initiate backtrace + debug_report_bug(sprintf("id is invalid: %s. row=%s, data=%s", + $id, + $row, + $data + )); + } // END - if + // Update the task - SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_task_system` SET %s='%s' WHERE id=%s LIMIT 1", + SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_task_system` SET `%s`='%s' WHERE `id`=%s LIMIT 1", array($row, $data, bigintval($id)), __FUNCTION__, __LINE__); } -// + +// Checks wether if the admin menu has entries +function ifAdminMenuHasEntries ($action) { + return ( + (( + isset($GLOBALS['admin_menu_has_entries'][$action]) + ) && ( + $GLOBALS['admin_menu_has_entries'][$action] === true + )) || ( + $action == 'login' + ) + ); +} + +// Setter for 'admin_menu_has_entries' +function setAdminMenuHasEntries ($action, $hasEntries) { + $GLOBALS['admin_menu_has_entries'][$action] = (bool) $hasEntries; +} + +// Creates a link to the user's admin-profile +function adminCreateUserLink ($userid) { + // Is the userid set correctly? + if ($userid > 0) { + // Create a link to that profile + return '{?URL?}/modules.php?module=admin&what=list_user&userid='.bigintval($userid); + } // END - if + + // Return a link to the user list + return '{?URL?}/modules.php?module=admin&what=list_user'; +} + +// Generate a "link" for the given admin id (admin_id) +function generateAdminLink ($adminId) { + // No assigned admin is default + $adminLink = "{--ADMIN_NO_ADMIN_ASSIGNED--}"; + + // Zero? = Not assigned + if (bigintval($adminId) > 0) { + // Load admin's login + $login = getAdminLogin($adminId); + + // Is the login valid? + if ($login != '***') { + // Is the extension there? + if (isExtensionActive('admins')) { + // Admin found + $adminLink = "" . $login.""; + } else { + // Extension not found + $adminLink = sprintf(getMessage('EXTENSION_PROBLEM_NOT_INSTALLED'), 'admins'); + } + } else { + // Maybe deleted? + $adminLink = "
    ".sprintf(getMessage('ADMIN_ID_404'), $adminId)."
    "; + } + } // END - if + + // Return result + return $adminLink; +} + +// [EOF] ?>