X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Ffunctions.php;h=e25fce111139915ff13934aeaf5e26894a8bb0f5;hp=0ef88afef5cd572dfc706ba36227a7b22d9b362f;hb=56156f6c4392510cdbe0eb4f2ccefc23b43e2672;hpb=0ea6a32046f1c359405805dda77a48fbc82e6623 diff --git a/inc/functions.php b/inc/functions.php index 0ef88afef5..e25fce1111 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -51,16 +51,17 @@ function IS_INC_WRITEABLE($inc) { $fp = @fopen($fqfn, 'a'); if ($inc == "dummy") { // Remove dummy file - @fclose($fp); - return @unlink($fqfn); + fclose($fp); + return unlink($fqfn); } else { // Close all other files - return @fclose($fp); + return fclose($fp); } } // Open a table (you may want to add some header stuff here) -function OPEN_TABLE($PERCENT = "", $CLASS = "", $ALIGN="left", $VALIGN="", $td_only=false) { +// @DEPRECATED +function OPEN_TABLE ($PERCENT = "", $CLASS = "", $ALIGN="left", $VALIGN="", $td_only=false) { global $table_cnt; // Count tables so we can generate CSS classes for every table... :-) @@ -88,14 +89,15 @@ function OPEN_TABLE($PERCENT = "", $CLASS = "", $ALIGN="left", $VALIGN="", $td_o } // Close a table (you may want to add some footer stuff here) -function CLOSE_TABLE($ADD="") { +// @DEPRECATED +function CLOSE_TABLE( $ADD="") { OUTPUT_HTML(" \n"); if (!empty($ADD)) OUTPUT_HTML($ADD); OUTPUT_HTML(""); } // Output HTML code directly or "render" it. You addionally switch the new-line character off -function OUTPUT_HTML($HTML, $NEW_LINE = true) { +function OUTPUT_HTML ($HTML, $NEW_LINE = true) { // Some global variables global $OUTPUT, $footer, $CSS; @@ -133,10 +135,22 @@ function OUTPUT_HTML($HTML, $NEW_LINE = true) { default: // Huh, something goes wrong or maybe you have edited config.php ??? DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("Invalid renderer %s detected.", OUTPUT_MODE)); - MXCHANGE_DIE("".FATAL_ERROR.": ".LANG_NO_RENDER_DIRECT); + MXCHANGE_DIE("".FATAL_ERROR.": ".LANG_NO_RENDER_DIRECT); break; } } elseif ((_OB_CACHING == "on") && ($footer == 1)) { + // Headers already sent? + if (headers_sent()) { + // Log this error + DEBUG_LOG(__FUNCTION__, __LINE__, "Headers already sent! We need debug backtrace here."); + + // Output debug trace + print("Headers are already sent!
\n"); + print("Please report this error at bugs.mxchange.org:
");
+			debug_print_backtrace();
+			die("
Thank you for your help finding bugs."); + } // END - if + // Output cached HTML code $OUTPUT = ob_get_contents(); @@ -208,7 +222,7 @@ function OUTPUT_RAW ($HTML) { } // Add a fatal error message to the queue array -function ADD_FATAL ($message, $extra="") { +function addFatalMessage ($message, $extra="") { global $FATAL; if (empty($extra)) { @@ -224,8 +238,25 @@ function ADD_FATAL ($message, $extra="") { DEBUG_LOG(__FUNCTION__, __LINE__, " message={$message}"); } +// Getter for total fatal message count +function getTotalFatalMessages () { + global $FATAL; + + // Init coun + $count = 0; + + // Do we have at least the first entry? + if (!empty($FATAL[0])) { + // Get total count + $count = count($FATAL); + } // END - if + + // Return value + return $count; +} + // Load a template file and return it's content (only it's name; do not use ' or ") -function LOAD_TEMPLATE($template, $return=false, $content=array()) { +function LOAD_TEMPLATE ($template, $return=false, $content=array()) { // Add more variables which you want to use in your template files global $DATA, $_CONFIG, $username; @@ -335,7 +366,7 @@ function LOAD_TEMPLATE($template, $return=false, $content=array()) { // Now does the final template exists? if (FILE_READABLE($file)) { // The local file does exists so we load it. :) - $tmpl_file = implode("", file($file)); + $tmpl_file = READ_FILE($file); // Replace ' to our own chars to preventing them being quoted while (strpos($tmpl_file, "'") !== false) { $tmpl_file = str_replace("'", '{QUOT}', $tmpl_file); } @@ -355,7 +386,7 @@ function LOAD_TEMPLATE($template, $return=false, $content=array()) { $ret = "\n".$ret."\n"; } elseif ((IS_ADMIN()) || ((isBooleanConstantAndTrue('mxchange_installing')) && (!isBooleanConstantAndTrue('mxchange_installed')))) { // Only admins shall see this warning or when installation mode is active - $ret = "
".TEMPLATE_404."
+ $ret = "
".TEMPLATE_404."
(".basename($file).")

".TEMPLATE_CONTENT." @@ -636,7 +667,7 @@ function DEREFERER ($URL) { // Don't de-refer our own links! if (substr($URL, 0, strlen(URL)) != URL) { // De-refer this link - $URL = URL."/modules.php?module=loader&url=".urlencode(base64_encode(gzcompress($URL))); + $URL = "modules.php?module=loader&url=".urlencode(base64_encode(gzcompress($URL))); } // END - if // Return link @@ -743,16 +774,16 @@ function GET_LANGUAGE() { return $ret; } // -function SET_LANGUAGE($lang) { +function SET_LANGUAGE ($lang) { // Accept only first 2 chars! $lang = substr(SQL_ESCAPE(strip_tags($lang)), 0, 2); // Set cookie - set_session("mx_lang", $lang); + set_session('mx_lang', $lang); } // function LOAD_EMAIL_TEMPLATE($template, $content=array(), $UID="0") { - global $DATA, $REPLACER; + global $DATA, $REPLACER, $_CONFIG; // Make sure all template names are lowercase! $template = strtolower($template); @@ -869,7 +900,7 @@ function LOAD_EMAIL_TEMPLATE($template, $content=array(), $UID="0") { $newContent = ""; if (FILE_READABLE($file)) { // The local file does exists so we load it. :) - $tmpl_file = implode("", file($file)); + $tmpl_file = READ_FILE($file); $tmpl_file = addslashes($tmpl_file); // Run code @@ -925,10 +956,15 @@ function LOAD_URL($URL, $addUrlData=true) { // Check if http(s):// is there if ((substr($URL, 0, 7) != "http://") && (substr($URL, 0, 8) != "https://")) { // Make all URLs full-qualified - $URL = URL."/".$URL; + $URL = "".$URL; } // Get output buffer + /* + print "
";
+	debug_print_backtrace();
+	die("
"); + */ $OUTPUT = ob_get_contents(); // Clear it only if there is content @@ -940,12 +976,12 @@ function LOAD_URL($URL, $addUrlData=true) { if (((!defined('__COOKIES')) || (!__COOKIES)) && ($addUrlData)) $URL = ADD_URL_DATA($URL); // Probe for bot from search engine - if ((eregi("spider", GET_USER_AGENT())) || (eregi("bot", GET_USER_AGENT())) || (eregi("spider", GET_USER_AGENT()))) { + if ((eregi("spider", GET_USER_AGENT())) || (eregi("bot", GET_USER_AGENT()))) { // Search engine bot detected so let's rewrite many chars for the link $URL = htmlentities(strip_tags($URL), ENT_QUOTES); // Output new location link as anchor - OUTPUT_HTML("".$URL.""); + OUTPUT_HTML("".$URL.""); } elseif (!headers_sent()) { // Load URL when headers are not sent /* @@ -1054,7 +1090,7 @@ function COMPILE_CODE($code, $simple = false, $constants = true, $full = true) { * $array - Das 3-dimensionale Array, das paralell sortiert werden soll * * $a_sort - Array, das die Sortiereihenfolge der ersten Elementeben * * $primary_key - Prim.rschl.ssel aus $a_sort, nach dem sortiert wird * - * $order - Sortiereihenfolge: -1 = A-Z, 0 = keine, 1 = Z-A * + * $order - Sortiereihenfolge: -1 = a-Z, 0 = keine, 1 = Z-a * * $nums - true = Als Zahlen sortieren, false = Als Zeichen sortieren * * * * $a_sort muss Elemente enthalten, deren Wert Schluessel von $array * @@ -1105,29 +1141,29 @@ function ADD_SELECTION($type, $DEFAULT, $prefix="", $id="0") { if ($type == "yn") { // This is a yes/no selection only! if ($id > 0) $prefix .= "[".$id."]"; - $OUT .= " \n"; } else { // Begin with regular selection box here if (!empty($prefix)) $prefix .= "_"; $type2 = $type; if ($id > 0) $type2 .= "[".$id."]"; - $OUT .= " \n"; } switch ($type) { case "day": // Day for ($idx = 1; $idx < 32; $idx++) { - $OUT .= "\n"; } // END - for break; case "month": // Month foreach ($MONTH_DESCR as $month => $descr) { - $OUT .= "\n"; } // END - for break; @@ -1150,19 +1186,19 @@ function ADD_SELECTION($type, $DEFAULT, $prefix="", $id="0") { // Check if the default value is larger than minimum and bigger than actual year if (($DEFAULT > $minYear) && ($DEFAULT >= $YEAR)) { for ($idx = $YEAR; $idx < ($YEAR + 11); $idx++) { - $OUT .= "\n"; } // END - for } elseif ($DEFAULT == -1) { // Current year minus 1 for ($idx = $startYear; $idx <= ($YEAR + 1); $idx++) { - $OUT .= "\n"; + $OUT .= "\n"; } } else { // Get current year and subtract the configured minimum age - $OUT .= "\n"; + $OUT .= "\n"; // Calculate earliest year depending on extension version if (GET_EXT_VERSION("other") >= "0.2.1") { // Use configured minimum age @@ -1174,9 +1210,9 @@ function ADD_SELECTION($type, $DEFAULT, $prefix="", $id="0") { // Construct year selection list for ($idx = $minYear; $idx <= $YEAR; $idx++) { - $OUT .= "\n"; } // END - for } break; @@ -1185,30 +1221,30 @@ function ADD_SELECTION($type, $DEFAULT, $prefix="", $id="0") { case "min": for ($idx = 0; $idx < 60; $idx+=5) { if (strlen($idx) == 1) $idx = "0".$idx; - $OUT .= "\n"; } // END - for break; case "hour": for ($idx = 0; $idx < 24; $idx++) { if (strlen($idx) == 1) $idx = "0".$idx; - $OUT .= "\n"; } // END - for break; case "yn": - $OUT .= "\n"; break; } - $OUT .= " \n"; + $OUT .= " \n"; return $OUT; } // @@ -1246,7 +1282,6 @@ function GEN_RANDOM_CODE($length, $code, $uid, $DATA="") { // Add more additional data if (isSessionVariableSet('u_hash')) $data .= ":".get_session('u_hash'); if (isset($GLOBALS['userid'])) $data .= ":".$GLOBALS['userid']; - if (isSessionVariableSet('lifetime')) $data .= ":".get_session('lifetime'); if (isSessionVariableSet('mxchange_theme')) $data .= ":".get_session('mxchange_theme'); if (isSessionVariableSet('mx_lang')) $data .= ":".GET_LANGUAGE(); if (isset($GLOBALS['refid'])) $data .= ":".$GLOBALS['refid']; @@ -1407,36 +1442,36 @@ function CREATE_TIME_SELECTIONS ($timestamp, $prefix="", $display="", $align="ce ); } else { // Generate table - $OUT = "
\n"; + $OUT = "
\n"; $OUT .= "\n"; $OUT .= "\n"; if (ereg('Y', $display) || (empty($display))) { - $OUT .= " \n"; + $OUT .= " \n"; } if (ereg("M", $display) || (empty($display))) { - $OUT .= " \n"; + $OUT .= " \n"; } if (ereg("W", $display) || (empty($display))) { - $OUT .= " \n"; + $OUT .= " \n"; } if (ereg("D", $display) || (empty($display))) { - $OUT .= " \n"; + $OUT .= " \n"; } if (ereg("h", $display) || (empty($display))) { - $OUT .= " \n"; + $OUT .= " \n"; } if (ereg("m", $display) || (empty($display))) { - $OUT .= " \n"; + $OUT .= " \n"; } if (ereg("s", $display) || (empty($display))) { - $OUT .= " \n"; + $OUT .= " \n"; } $OUT .= "\n"; @@ -1444,98 +1479,98 @@ function CREATE_TIME_SELECTIONS ($timestamp, $prefix="", $display="", $align="ce if (ereg('Y', $display) || (empty($display))) { // Generate year selection - $OUT .= " \n"; + $OUT .= " \n"; } else { - $OUT .= "\n"; + $OUT .= "\n"; } if (ereg("M", $display) || (empty($display))) { // Generate month selection - $OUT .= " \n"; + $OUT .= " \n"; } else { - $OUT .= "\n"; + $OUT .= "\n"; } if (ereg("W", $display) || (empty($display))) { // Generate week selection - $OUT .= " \n"; + $OUT .= " \n"; } else { - $OUT .= "\n"; + $OUT .= "\n"; } if (ereg("D", $display) || (empty($display))) { // Generate day selection - $OUT .= " \n"; + $OUT .= " \n"; } else { $OUT .= "\n"; } if (ereg("h", $display) || (empty($display))) { // Generate hour selection - $OUT .= " \n"; + $OUT .= " \n"; } else { $OUT .= "\n"; } if (ereg("m", $display) || (empty($display))) { // Generate minute selection - $OUT .= " \n"; + $OUT .= " \n"; } else { $OUT .= "\n"; } if (ereg("s", $display) || (empty($display))) { // Generate second selection - $OUT .= " \n"; + $OUT .= " \n"; } else { $OUT .= "\n"; } $OUT .= "\n"; $OUT .= "
"._YEARS."
"._YEARS."
"._MONTHS."
"._MONTHS."
"._WEEKS."
"._WEEKS."
"._DAYS."
"._DAYS."
"._HOURS."
"._HOURS."
"._MINUTES."
"._MINUTES."
"._SECONDS."
"._SECONDS."
\n"; - $OUT .= "
\n"; + $OUT .= "
\n"; // Return generated HTML code } return $OUT; @@ -1661,10 +1696,10 @@ function ADD_EMAIL_NAV($PAGES, $offset, $show_form, $colspan, $return=false) { // Is the page currently selected or shall we generate a link to it? if (($page == $_GET['page']) || ((empty($_GET['page'])) && ($page == "1"))) { // Is currently selected, so only highlight it - $NAV .= "-"; + $NAV .= "-"; } else { // Open anchor tag and add base URL - $NAV .= " 0)) $NAV .= "&u_id=".bigintval($_GET['u_id']); @@ -1675,10 +1710,10 @@ function ADD_EMAIL_NAV($PAGES, $offset, $show_form, $colspan, $return=false) { $NAV .= $page; if (($page == $_GET['page']) || ((empty($_GET['page'])) && ($page == "1"))) { // Is currently selected, so only highlight it - $NAV .= "-"; + $NAV .= "-"; } else { // Close anchor tag - $NAV .= ""; + $NAV .= ""; } // Add seperator if we have not yet reached total pages @@ -1954,7 +1989,7 @@ function MEMBER_ACTION_LINKS($uid, $status="") { $eval = "\$OUT = \"[ "; foreach ($TARGETS as $tar) { - $eval .= "\n"; if (($tar == "lock_user") && ($status == "LOCKED")) { // Locked accounts shall be unlocked @@ -1971,7 +2006,7 @@ function MEMBER_ACTION_LINKS($uid, $status="") { // All other status is fine $eval .= strtoupper($tar); } - $eval .= ".\" | "; + $eval .= ".\" | "; } // Finish navigation link @@ -2360,6 +2395,7 @@ function get_session ($var) { // Return the value return $value; } + // Send notification to admin function SEND_ADMIN_NOTIFICATION($subject, $templateName, $content=array(), $uid="0") { if (GET_EXT_VERSION("admins") >= "0.4.1") { @@ -2371,11 +2407,16 @@ function SEND_ADMIN_NOTIFICATION($subject, $templateName, $content=array(), $uid SEND_ADMIN_EMAILS($subject, $msg); } } + // Destroy user session function destroy_user_session () { + // Reset userid + $GLOBALS['userid'] = 0; + // Remove all user data from session - return ((set_session("userid", "")) && (set_session("u_hash", "")) && (set_session("lifetime", ""))); + return ((set_session('userid', "")) && (set_session('u_hash', ""))); } + // Merges an array together but only if both are arrays function merge_array ($array1, $array2) { // Are both an array? @@ -2392,6 +2433,7 @@ function merge_array ($array1, $array2) { debug_print_backtrace(); die(""); } + // Debug message logger function DEBUG_LOG ($file, $line, $message, $force=true) { // Is debug mode enabled? @@ -2402,6 +2444,7 @@ function DEBUG_LOG ($file, $line, $message, $force=true) { fclose($fp); } // END - if } + // Reads a directory with PHP files in and gets only files back function GET_DIR_AS_ARRAY ($baseDir, $prefix) { $INCs = array(); @@ -2576,6 +2619,7 @@ function REVERT_COMMA ($str) { // Return float return $float; } + // Handle menu-depending failed logins and return the rendered content function HANDLE_LOGIN_FAILTURES ($accessLevel) { // Default output is empty ;-) @@ -2604,6 +2648,7 @@ function HANDLE_LOGIN_FAILTURES ($accessLevel) { // Return rendered content return $OUT; } + // Rebuild cache function REBUILD_CACHE ($cache, $inc="") { global $cacheInstance, $CSS; @@ -2633,6 +2678,7 @@ function REBUILD_CACHE ($cache, $inc="") { } // END - if } // END - if } + // Purge admin menu cache function CACHE_PURGE_ADMIN_MENU ($id=0, $action="", $what="", $str="") { global $cacheInstance; @@ -2651,8 +2697,9 @@ function CACHE_PURGE_ADMIN_MENU ($id=0, $action="", $what="", $str="") { } // Experiemental feature! - trigger_error("You have to delete the admin_*.cache files by yourself at this point."); + trigger_error("Experimental feature: You have to delete the admin_*.cache files by yourself at this point."); } + // Translates the "pool type" into human-readable function TRANSLATE_POOL_TYPE ($type) { // Default type is unknown @@ -2670,6 +2717,7 @@ function TRANSLATE_POOL_TYPE ($type) { // Return "translation" return $translated; } + // "Getter" for remote IP number function GET_REMOTE_ADDR () { // Get remote ip from environment @@ -2876,7 +2924,7 @@ function GET_CURR_THEME() { if (!isSessionVariableSet('mxchange_theme')) { // Set default theme - set_session("mxchange_theme", $ret); + set_session('mxchange_theme', $ret); } elseif ((isSessionVariableSet('mxchange_theme')) && (GET_EXT_VERSION("sql_patches") >= "0.1.4")) { //die("
".print_r($cacheArray['themes'], true)."
"); // Get theme from cookie @@ -2894,17 +2942,17 @@ function GET_CURR_THEME() { // Installation mode active if ((!empty($_GET['theme'])) && (FILE_READABLE($theme))) { // Set cookie from URL data - set_session("mxchange_theme", SQL_ESCAPE($_GET['theme'])); + set_session('mxchange_theme', SQL_ESCAPE($_GET['theme'])); } elseif (FILE_READABLE(sprintf("%stheme/%s/theme.php", PATH, SQL_ESCAPE($_POST['theme'])))) { // Set cookie from posted data - set_session("mxchange_theme", SQL_ESCAPE($_POST['theme'])); + set_session('mxchange_theme', SQL_ESCAPE($_POST['theme'])); } // Set return value $ret = get_session('mxchange_theme'); } else { // Invalid design, reset cookie - set_session("mxchange_theme", $ret); + set_session('mxchange_theme', $ret); } // Add (maybe) found theme.php file to inclusion list @@ -2956,18 +3004,63 @@ function THEME_GET_ID ($name) { return $id; } -// Increment or init with 1 the given config entry -function incrementConfigEntry ($configEntry) { +// Increment or init with given value or 1 as default the given config entry +function incrementConfigEntry ($configEntry, $value=1) { global $_CONFIG; // Increment it if set or init it with 1 - if (getConfig($configEntry) > 0) { $_CONFIG[$configEntry]++; } else { $_CONFIG[$configEntry] = 1; } + if (getConfig($configEntry) > 0) { + $_CONFIG[$configEntry] += $value; + } else { + $_CONFIG[$configEntry] = $value; + } +} + +// Read a given file +function READ_FILE ($FQFN, $sqlPrepare = false) { + // Load the file + if (function_exists('file_get_contents')) { + // Use new function + $content = file_get_contents($FQFN); + } else { + // Fall-back to implode-file chain + $content = implode("", file($FQFN)); + } + + // Prepare SQL queries? + if ($sqlPrepare === true) { + // Remove some unwanted chars + $content = str_replace("\r", "", $content); + $content = str_replace("\n\n", "\n", $content); + } // END - if + + // Return the content + return $content; +} + +// Generates an error code from given account status +function GEN_ERROR_CODE_FROM_ACCOUNT_STATUS ($status) { + // Default error code if unknown account status + $ERROR = CODE_UNKNOWN_STATUS; + + // Generate constant name + $constantName = sprintf("CODE_ID_%s", $status); + + // Is the constant there? + if (defined($constantName)) { + // Then get it! + $ERROR = constant($constantName); + } else { + // Unknown status + DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("Unknown error status %s detected.", $status)); + } + + // Return error code + return $ERROR; } ////////////////////////////////////////////////// -// // // AUTOMATICALLY RE-GENERATED MISSING FUNCTIONS // -// // ////////////////////////////////////////////////// // if (!function_exists('html_entity_decode')) { @@ -2979,5 +3072,5 @@ if (!function_exists('html_entity_decode')) { } } // END - if -// +// [EOF] ?>