X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Fmodules%2Fadmin%2Fadmin-inc.php;h=d0aef8c0f099a3754997e8bcd12b223a876501ea;hp=899bd4c36ae215796af42622702046358dd6a016;hb=307a4e11763f0914e73dc756b219356e1c29ab25;hpb=306158d5fb74ec96f0c2321834f702ecb0874a7d diff --git a/inc/modules/admin/admin-inc.php b/inc/modules/admin/admin-inc.php index 899bd4c36a..d0aef8c0f0 100644 --- a/inc/modules/admin/admin-inc.php +++ b/inc/modules/admin/admin-inc.php @@ -79,7 +79,7 @@ function CHECK_ADMIN_LOGIN ($admin_login, $password) } } - /* DEBUG: */ echo "*".$pass."/".md5($password)."/".$ret."
"; + //* DEBUG: */ echo "*".$pass."/".md5($password)."/".$ret."
"; if ((strlen($pass) == 32) && ($pass == md5($password))) { // Generate new hash $pass = generateHash($password); @@ -300,7 +300,7 @@ function ADMIN_DO_ACTION($wht) // Check if action/what pair is valid $result = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_admin_menu -WHERE action='%s' AND ((what='%s' AND what != 'overview') OR (what='' AND '%s'='overview')) +WHERE action='%s' AND ((what='%s' AND what != 'overview') OR ((what='' OR what IS NULL) AND '%s'='overview')) LIMIT 1", array($act, $wht, $wht), __FILE__, __LINE__); if (SQL_NUMROWS($result) == 1) { @@ -346,7 +346,7 @@ function ADD_ADMIN_MENU($act, $wht,$return=false) $menuTitle = array(); // Build main menu - $result_main = SQL_QUERY("SELECT action, title, descr FROM "._MYSQL_PREFIX."_admin_menu WHERE what='' ORDER BY sort, id DESC", __FILE__, __LINE__); + $result_main = SQL_QUERY("SELECT action, title, descr FROM "._MYSQL_PREFIX."_admin_menu WHERE (what='' OR what IS NULL) ORDER BY sort, id DESC", __FILE__, __LINE__); $OUT = ""; if (SQL_NUMROWS($result_main) > 0) { @@ -522,7 +522,7 @@ function ADD_MEMBER_SELECTION_BOX($add_all = false, $return = false, $none = fal // function ADMIN_MENU_SELECTION($MODE, $default="", $defid="") { $wht = "what != ''"; - if ($MODE == "action") $wht = "what='' AND action !='login'"; + if ($MODE == "action") $wht = "(what='' OR what IS NULL) AND action !='login'"; $result = SQL_QUERY_ESC("SELECT %s, title FROM "._MYSQL_PREFIX."_admin_menu WHERE ".$wht." ORDER BY sort", array($MODE), __FILE__, __LINE__); if (SQL_NUMROWS($result) > 0) @@ -746,7 +746,7 @@ function ADMIN_CHECK_MENU_MODE() // Change activation status function ADMIN_CHANGE_ACTIVATION_STATUS ($IDs, $table, $row, $idRow = "id") { global $_CONFIG; - $cnt = 0; $newStatus = 'Y'; + $cnt = 0; $newStatus = "Y"; if ((is_array($IDs)) && (count($IDs) > 0)) { // "Walk" all through and count them foreach ($IDs as $id=>$selected) { @@ -763,7 +763,7 @@ function ADMIN_CHANGE_ACTIVATION_STATUS ($IDs, $table, $row, $idRow = "id") { if (SQL_NUMROWS($result) == 1) { // Load the status list($currStatus) = SQL_FETCHROW($result); - 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=%d LIMIT 1", @@ -793,9 +793,10 @@ function ADMIN_DELETE_ENTRIES_CONFIRM ($IDs, $table, $row, $columns = array(), $ // "Walk" through all entries and count them if ($deleteNow) { // Delete them + die("DELETE!"); } else { // List for confirmation - foreach ($IDs as $id=>$selected) { + foreach ($IDs as $id => $selected) { // Secure ID number $id = bigintval($id); @@ -837,5 +838,168 @@ function ADMIN_DELETE_ENTRIES_CONFIRM ($IDs, $table, $row, $columns = array(), $ } } } +// Edit rows by given ID numbers +function ADMIN_EDIT_ENTRIES_CONFIRM ($IDs, $table, $row, $columns = array(), $filterFunctions = array(), $editNow=false, $idRow="id") { + global $_CONFIG; + $OUT = ""; $SW = 2; + if ((is_array($IDs)) && (count($IDs) > 0)) { + // "Walk" through all entries and count them + if ($editNow) { + // Delete them + die("EDIT!"); + } else { + // List for confirmation + foreach ($IDs as $id => $selected) { + // Secure ID number + $id = bigintval($id); + + // Will always be 1 ;-) + if ($selected == 1) { + // Get result from a given column array and table name + $result = SQL_RESULT_FROM_ARRAY($table, $columns, $idRow, $id); + + // Is there one entry? + if (SQL_NUMROWS($result) == 1) { + // Load all data + $content = SQL_FETCHARRAY($result); + + // Filter all data + foreach ($content as $key=>$value) { + // Is a filter function set? + $idx = array_search($key, $columns, true); + if (!empty($filterFunctions[$idx])) { + // Then call it! + $content[$key] = call_user_func($filterFunctions[$idx], $value); + } + } + + // Add color switching + $content['sw'] = $SW; + + // Then list it again... + $OUT .= LOAD_TEMPLATE("admin_edit_".$table."_row", true, $content); + $SW = 3 - $SW; + } + + // Free the result + SQL_FREERESULT($result); + } + } + + // Load master template + LOAD_TEMPLATE("admin_edit_".$table."", false, $OUT); + } + } +} +// Checks proxy settins by fetching check-updates2.php from www.mxchange.org +function ADMIN_TEST_PROXY_SETTINGS ($settingsArray) { + global $_CONFIG; + // By default they are invalid + $valid = false; + + // Set temporary the new settings + $_CONFIG = array_merge($_CONFIG, $settingsArray); + + // Now get the test URL + $content = MXCHANGE_OPEN("check-updates2.php"); + + // Is the first line with "200 OK"? + $valid = eregi("200 OK", $content[0]); + + // 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) { + global $_CONFIG; + // Init output + $OUT = ""; + + // Compile out security characters (must be for looking up!) + $email = COMPILE_CODE($email); + + // Look up administator login + $result = SQL_QUERY_ESC("SELECT id, login, password FROM "._MYSQL_PREFIX."_admins WHERE email='%s' LIMIT 1", + array($email), __FILE__, __LINE__); + + // Is there an account? + if (SQL_NUMROWS($result) == 0) { + // No account found! + return ADMIN_NO_LOGIN_WITH_EMAIL; + } // END - if + + // Load all data + $content = SQL_FETCHARRAY($result); + + // Free result + SQL_FREERESULT($result); + + // Generate hash for reset link + $content['hash'] = generateHash(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); + + // Send it out + SEND_EMAIL($email, ADMIN_RESET_PASS_LINK_SUBJ, $mailText); + + // Prepare output + return ADMIN_RESET_LINK_SENT; +} +// Validate hash and login for password reset +function ADMIN_VALIDATE_RESET_LINK_HASH_LOGIN ($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", + array($login), __FILE__, __LINE__); + + // Is an account here? + if (SQL_NUMROWS($result) == 1) { + // Load all data + $content = SQL_FETCHARRAY($result); + + // Generate hash again + $hashFromData = generateHash(URL.":".$content['id'].":".$login.":".$content['password'], substr($content['password'], 10)); + + // Does both match? + $valid = ($hash == $hashFromData); + } // END - if + + // Free result + SQL_FREERESULT($result); + + // 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) { + // Init hash + $passHash = ""; + + // Now check if we have sql_patches installed + if (GET_EXT_VERSION("sql_patches") >= "0.3.6") { + // Use new way of hashing + $passHash = generateHash($password); + } else { + // Old MD5 method + $passHash = md5($password); + } + + // Update database + SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_admins SET password='%s' WHERE login='%s' LIMIT 1", + array($passHash, $login), __FILE__, __LINE__); + + // Return output + return ADMIN_PASSWORD_RESET_DONE; +} // ?>