X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Ffunctions.php;h=be503dcc6c07c68da41bb4350e490d889ec366d5;hb=78dc19b40041f126eede57575484c684d5fd0ddb;hp=2f1f10302237a13f0a533805513c6ec9528a6051;hpb=f01652b7b8efac92d97889e312402c4a845c2f14;p=mailer.git
diff --git a/inc/functions.php b/inc/functions.php
index 2f1f103022..be503dcc6c 100644
--- a/inc/functions.php
+++ b/inc/functions.php
@@ -32,7 +32,7 @@
************************************************************************/
// Some security stuff...
-if (ereg(basename(__FILE__), $_SERVER['PHP_SELF'])) {
+if (!defined('__SECURITY')) {
$INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4)."/security.php";
require($INC);
}
@@ -207,17 +207,16 @@ function LOAD_TEMPLATE($template, $return=false, $content="") {
$_CONFIG['num_templates']++;
// Init some data
- $ACTION = SQL_ESCAPE($GLOBALS['action']);
- $WHAT = SQL_ESCAPE($GLOBALS['what']);
$ret = "";
if (empty($GLOBALS['refid'])) $GLOBALS['refid'] = 0;
- $REFID = $GLOBALS['refid'];
- // DEPRECATED!!!
+ // @DEPRECATED Try to remove this if() block
if ($template == "member_support_form") {
// Support request of a member
$result = SQL_QUERY_ESC("SELECT gender, surname, family, email FROM "._MYSQL_PREFIX."_user_data WHERE userid=%s LIMIT 1",
array($GLOBALS['userid']), __FILE__, __LINE__);
+
+ // @TODO Merge this data into $content
list($gender, $surname, $family, $email) = SQL_FETCHROW($result);
// Translate gender
@@ -588,16 +587,20 @@ function TRANSLATE_GENDER ($gender) {
}
//
function GET_POOL_TYPE($PT) {
- switch ($PT)
- {
- case "TEMP" : $ret = POOL_TEMP; break;
- case "SEND" : $ret = POOL_SEND; break;
- case "NEW" : $ret = POOL_NEW; break;
- case "ADMIN" : $ret = POOL_ADMIN; break;
- case "ACTIVE" : $ret = POOL_ACTIVE; break;
- case "DELETED": $ret = POOL_DELETED; break;
- default : $ret = POOL_UNKNOWN." (".$PT.")"; break;
- }
+ // Unknown pool type is default
+ $ret = POOL_UNKNOWN." (".$PT.")";
+
+ // Generate constant name
+ $constantName = sprintf("POOL_%s", $PT);
+
+ // Is the type known?
+ if (defined($constantName)) {
+ // Prepare eval command
+ $eval = sprintf("\$ret = %s;", $constantName);
+ eval($eval);
+ } // END - if
+
+ // Return result
return $ret;
}
//
@@ -895,7 +898,7 @@ function LOAD_URL($URL, $addUrlData=true) {
print("
");
debug_print_backtrace();
die("
URL={$URL}");
- */
+ /**/
@header ("Location: ".str_replace("&", "&", $URL));
} else {
// Output error message
@@ -1178,6 +1181,7 @@ function GEN_RANDOM_CODE($length, $code, $uid, $DATA="") {
// At least 10 numbers shall be secure enought!
$len = $_CONFIG['code_length'];
+ if ($len == 0) $len = $length;
if ($len == 0) $len = 10;
// Cut off requested counts of number
@@ -1256,8 +1260,8 @@ function GENERATE_IMAGE($img_code, $header=true) {
}
// Create selection box or array of splitted timestamp
function CREATE_TIME_SELECTIONS($timestamp, $prefix="", $display="", $align="center", $return_array=false) {
- // Calculate 15-seconds timestamp (15-seconds-steps shall be fine ;) )
- $stamp = round($timestamp / 15) * 15;
+ // Calculate 2-seconds timestamp
+ $stamp = round($timestamp / 2) * 2;
// Do we have a leap year?
$SWITCH = 0;
@@ -1286,7 +1290,7 @@ function CREATE_TIME_SELECTIONS($timestamp, $prefix="", $display="", $align="cen
// Is seconds zero and time is < 60 seconds?
if (($s == 0) && ($stamp < 60)) {
// Fix seconds
- $s = $timestamp;
+ $s = round($timestamp);
} // END - if
//
@@ -1474,10 +1478,10 @@ function SEND_ADMIN_EMAILS_PRO($subj, $template, $content, $UID) {
// Load email template
$msg = LOAD_EMAIL_TEMPLATE($template, $content, $UID);
- if (GET_EXT_VERSION("admins") < "0.4.0") {
+ if (EXT_VERSION_IS_OLDER("admins", "0.4.0")) {
// Older version detected!
return SEND_ADMIN_EMAILS($subj, $msg);
- }
+ } // END - if
// Check which admin shall receive this mail
$result = SQL_QUERY_ESC("SELECT DISTINCT admin_id FROM "._MYSQL_PREFIX."_admins_mails WHERE mail_template='%s' ORDER BY admin_id",
@@ -1533,8 +1537,14 @@ function CREATE_FANCY_TIME($stamp) {
} // END - if
} // END - foreach
- // Remove leading commata and space
- $ret = substr($ret, 2);
+ // Do we have something there?
+ if (strlen($ret) > 0) {
+ // Remove leading commata and space
+ $ret = substr($ret, 2);
+ } else {
+ // Zero seconds
+ $ret = "0 "._SECONDS;
+ }
// Return fancy time string
return $ret;
@@ -1906,7 +1916,7 @@ function generateHash ($plainText, $salt = "") {
global $_CONFIG, $_SERVER;
// Is the required extension "sql_patches" there and a salt is not given?
- if (((GET_EXT_VERSION("sql_patches") < "0.3.6") || (GET_EXT_VERSION("sql_patches") == "")) && (empty($salt))) {
+ if (((EXT_VERSION_IS_OLDER("sql_patches", "0.3.6")) || (GET_EXT_VERSION("sql_patches") == "")) && (empty($salt))) {
// Extension sql_patches is missing/outdated so we return the plain text
return $plainText;
} // END - if
@@ -1935,11 +1945,11 @@ function generateHash ($plainText, $salt = "") {
// Generate SHA1 sum from modula of number and the prime number
$sha1 = sha1(($a % _PRIME).$server.":".$keys.":".$data.":".date("d-m-Y (l-F-T)", time()).":".$a);
- //* DEBUG: */ echo "SHA1=".$sha1." (".strlen($sha1).")
";
+ //* DEBUG: */ echo "SHA1=".$sha1." (".strlen($sha1).")
";
$sha1 = scrambleString($sha1);
- //* DEBUG: */ echo "Scrambled=".$sha1." (".strlen($sha1).")
";
+ //* DEBUG: */ echo "Scrambled=".$sha1." (".strlen($sha1).")
";
//* DEBUG: */ $sha1b = descrambleString($sha1);
- //* DEBUG: */ echo "Descrambled=".$sha1b." (".strlen($sha1b).")
";
+ //* DEBUG: */ echo "Descrambled=".$sha1b." (".strlen($sha1b).")
";
// Generate the password salt string
$salt = substr($sha1, 0, $_CONFIG['salt_length']);
@@ -2092,12 +2102,12 @@ function generatePassString($passHash) {
}
$mod = substr(round($mod), 0, 4);
$mod = str_repeat('0', 4-strlen($mod)).$mod;
- //* DEBUG: */ echo "*".$start."=".$mod."*
";
+ //* DEBUG: */ echo "*".$start."=".$mod."*
";
$start += 4;
$newHash .= $mod;
} // END - for
- //* DEBUG: */ print($passHash."
".$newHash." (".strlen($newHash).")");
+ //* DEBUG: */ print($passHash."
".$newHash." (".strlen($newHash).")");
$ret = generateHash($newHash, $_CONFIG['master_salt']);
//* DEBUG: */ print($ret."
\n");
} else {
@@ -2191,39 +2201,62 @@ function set_session ($var, $value) {
return session_register($var);
} elseif (!empty($value)) {
// Update session
+ //* DEBUG: */ echo "UPDATE:".$var."=".$value."
\n";
$_SESSION[$var] = $value;
- } else {
- // Something bad happens!
- return false; // Hope this doesn't make so much trouble???
+ return true;
}
- // Return always true if the session variable is already set.
- // Keept me busy for a longer while...
+ // Ignored (but valid)
//* DEBUG: */ echo "IGNORED:".$var."=".$value."
\n";
return true;
}
// Check wether a boolean constant is set
// Taken from user comments in PHP documentation for function constant()
-function isBooleanConstantAndTrue($constname) { // : Boolean
+function isBooleanConstantAndTrue($constName) { // : Boolean
+ global $constCache;
+
+ // Failed by default
$res = false;
- if (defined($constname)) $res = (constant($constname) === true);
- return($res);
+
+ // In cache?
+ if (isset($constCache[$constName])) {
+ // Use cache
+ $res = $constCache[$constName];
+ } else {
+ // Check constant
+ if (defined($constName)) $res = (constant($constName) === true);
+
+ // Set cache
+ $constCache[$constName] = $res;
+ }
+
+ // Return value
+ return $res;
}
// Check wether a session variable is set
function isSessionVariableSet($var) {
+ //* DEBUG: */ echo __FUNCTION__.":var={$var}
\n";
return (isset($_SESSION[$var]));
}
// Returns wether the value of the session variable or NULL if not set
function get_session($var) {
+ global $cacheArray;
+
// Default is not found! ;-)
$value = null;
- // Is the variable there?
- if (isSessionVariableSet($var)) {
+ // Is the variable there or cached values?
+ if (isset($cacheArray['session'][$var])) {
+ // Get cached value (skips a lot SQL_ESCAPE() calles!
+ $value = $cacheArray['session'][$var];
+ } elseif (isSessionVariableSet($var)) {
// Then get it secured!
$value = SQL_ESCAPE($_SESSION[$var]);
+
+ // Cache the value
+ $cacheArray['session'][$var] = $value;
} // END - if
// Return the value
@@ -2285,6 +2318,7 @@ function GET_DIR_AS_ARRAY ($baseDir, $prefix) {
$file = $baseDir.$baseFile;
// Is this a valid reset file?
+ //* DEBUG: */ echo __FUNCTION__.":baseDir={$baseDir},prefix={$prefix},baseFile={$baseFile}
\n";
if ((is_file($file)) && (is_readable($file)) && (substr($baseFile, 0, strlen($prefix)) == $prefix) && (substr($baseFile, -4, 4) == ".php")) {
// Remove both for extension name
$extName = substr($baseFile, strlen($prefix), -4);
@@ -2296,6 +2330,9 @@ function GET_DIR_AS_ARRAY ($baseDir, $prefix) {
if (($extId > 0) && (EXT_IS_ACTIVE($extName))) {
// Then add this file
$INCs[] = $file;
+ } elseif ($extId == 0) {
+ // Add non-extension files as well
+ $INCs[] = $file;
}
} // END - if
} // END - while
@@ -2311,9 +2348,9 @@ function RESET_ADD_INCLUDES () {
global $_CONFIG;
// Is the reset set or old sql_patches?
- if ((!isBooleanConstantAndTrue('__DAILY_RESET')) || (GET_EXT_VERSION("sql_patches") < "0.4.5")) {
+ if ((!isBooleanConstantAndTrue('__DAILY_RESET')) || (EXT_VERSION_IS_OLDER("sql_patches", "0.4.5"))) {
// Then abort here
- return;
+ return array();
} // END - if
// Get more daily reset scripts
@@ -2415,9 +2452,95 @@ function CONVERT_SELECTIONS_TO_TIMESTAMP(&$POST, &$DATA, &$id, &$skip) {
}
// Reverts the german decimal comma into Computer decimal dot
function REVERT_COMMA ($str) {
- $float = (float)str_replace(",", ".", $str);
+ // Default float is not a float... ;-)
+ $float = false;
+
+ // Which language is selected?
+ switch (GET_LANGUAGE()) {
+ case "de": // German language
+ // Remove german thousand dots first
+ $str = str_replace(".", "", $str);
+
+ // Replace german commata with decimal dot and cast it
+ $float = (float)str_replace(",", ".", $str);
+ break;
+
+ default: // US and so on
+ // Remove thousand dots first and cast
+ $float = (float)str_replace(",", "", $str);
+ break;
+ }
+
+ // Return float
return $float;
}
+// Handle menu-depending failed logins and return the rendered content
+function HANDLE_LOGIN_FAILTURES ($accessLevel) {
+ // Default output is empty ;-)
+ $OUT = "";
+
+ // Is the session data set?
+ if ((isSessionVariableSet('mxchange_'.$accessLevel.'_failtures')) && (isSessionVariableSet('mxchange_'.$accessLevel.'_last_fail'))) {
+ // Ignore zero values
+ if (get_session('mxchange_'.$accessLevel.'_failtures') > 0) {
+ // Non-guest has login failtures found, get both data and prepare it for template
+ //* DEBUG: */ echo __FUNCTION__.":accessLevel={$accessLevel}
\n";
+ $content = array(
+ 'login_failtures' => get_session('mxchange_'.$accessLevel.'_failtures'),
+ 'last_failture' => MAKE_DATETIME(get_session('mxchange_'.$accessLevel.'_last_fail'), "2")
+ );
+
+ // Load template
+ $OUT = LOAD_TEMPLATE("login_failtures", true, $content);
+ } // END - if
+
+ // Reset session data
+ set_session('mxchange_'.$accessLevel.'_failtures', "");
+ set_session('mxchange_'.$accessLevel.'_last_fail', "");
+ } // END - if
+
+ // Return rendered content
+ return $OUT;
+}
+// Rebuild cache
+function REBUILD_CACHE ($cache, $inc="") {
+ global $cacheInstance;
+
+ // Shall I remove the cache file?
+ if ((EXT_IS_ACTIVE("cache")) && (is_object($cacheInstance))) {
+ // Rebuild cache
+ if ($cacheInstance->cache_file($cache, true)) {
+ // Destroy it
+ $cacheInstance->cache_destroy();
+
+ // Include file given?
+ if (!empty($inc)) {
+ // And rebuild it from scratch
+ require_once(PATH."inc/loader/load_cache-".$inc.".php");
+ } // END - if
+ } // END - if
+ } // END - if
+}
+// Purge admin menu cache
+function CACHE_PURGE_ADMIN_MENU ($id=0, $action="", $what="", $str="") {
+ global $_CONFIG, $cacheInstance;
+
+ // Is the cache extension enabled or no cache instance or admin menu cache disabled?
+ if (!EXT_IS_ACTIVE("cache")) {
+ // Cache extension not active
+ return false;
+ } elseif (!is_object($cacheInstance)) {
+ // No cache instance!
+ DEBUG_LOG(__FUNCTION__.": No cache instance found.");
+ return false;
+ } elseif ((!isset($_CONFIG['cache_admin_menu'])) || ($_CONFIG['cache_admin_menu'] == "N")) {
+ // Caching disabled (currently experiemental!)
+ return false;
+ }
+
+ // Experiemental feature!
+ trigger_error("You have to delete the admin_*.cache files by yourself at this point.");
+}
//
//////////////////////////////////////////////////
// //