X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Ffunctions.php;h=021edbe8793423f4caec6d95b793a1c39304244e;hp=6a64288272beb298c040b25443e5d483ab60691c;hb=c7f21c9eb494d8466447c1a199ec5621440d7ac8;hpb=dbd1bc95c8f89024118791dc3fb3633a90afa9cf diff --git a/inc/functions.php b/inc/functions.php index 6a64288272..021edbe879 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -32,47 +32,34 @@ ************************************************************************/ // Some security stuff... -if (ereg(basename(__FILE__), $_SERVER['PHP_SELF'])) -{ +if (ereg(basename(__FILE__), $_SERVER['PHP_SELF'])) { $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php"; require($INC); } // Check if our config file is writeable or not -function is_INCWritable($inc) -{ +function is_INCWritable($inc) { $fp = @fopen(PATH."inc/".$inc.".php", 'a'); - if ($inc == "dummy") - { + if ($inc == "dummy") { // Remove dummy file @fclose($fp); return @unlink(PATH."inc/dummy.php"); - } - else - { + } else { // Close all other files return @fclose($fp); } } -// Check if we can write to an sql file -function is_SQLWriteable($sql) -{ - $fp = @fopen(PATH.$sql.".sql", 'a'); - 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) -{ +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... :-) - if (empty($CLASS)) - { + if (empty($CLASS)) { // Class is empty so count one up and create a class $table_cnt++; $CLASS = "class".$table_cnt; } $OUT = ""; - OUTPUT_HTML ($OUT); + OUTPUT_HTML($OUT); } + // Close a table (you may want to add some footer stuff here) -function CLOSE_TABLE($ADD="") -{ - OUTPUT_HTML (" +function CLOSE_TABLE($ADD="") { + OUTPUT_HTML(" "); - if (!empty($ADD)) OUTPUT_HTML ($ADD); - OUTPUT_HTML ("
"); + 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; + global $OUTPUT, $footer, $CSS; // Do we have HTML-Code here? if (!empty($HTML)) { @@ -112,16 +99,13 @@ function OUTPUT_HTML ($HTML, $NEW_LINE = true) { { case "render": // That's why you don't need any \n at the end of your HTML code... :-) - if (_OB_CACHING == "on") - { + if (_OB_CACHING == "on") { // Output into PHP's internal buffer echo stripslashes($HTML); // That's why you don't need any \n at the end of your HTML code... :-) if ($NEW_LINE) echo "\n"; - } - else - { + } else { // Render mode for old or lame servers... $OUTPUT .= $HTML; @@ -144,7 +128,7 @@ function OUTPUT_HTML ($HTML, $NEW_LINE = true) { die ("".FATAL_ERROR.": ".LANG_NO_RENDER_DIRECT); break; } - } elseif ((_OB_CACHING == "on") && ($FOOTER == 1)) { + } elseif ((_OB_CACHING == "on") && ($footer == 1)) { // Output cached HTML code $OUTPUT = ob_get_contents(); @@ -196,18 +180,22 @@ function ADD_FATAL ($message, $extra="") } // Load a template file and return it's content (only it's name; do not use ' or ") -function LOAD_TEMPLATE($template, $return=false, $content="") -{ +function LOAD_TEMPLATE($template, $return=false, $content="") { // Add more variables which you want to use in your template files - global $DATA, $username; + global $DATA, $CONFIG, $username; + + // Count the template load + if (!isset($CONFIG['num_templates'])) $CONFIG['num_templates'] = 0; + $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']; - if ($template == "member_support_form") - { + if ($template == "member_support_form") { // Support request of a member $result = SQL_QUERY_ESC("SELECT sex, surname, family FROM "._MYSQL_PREFIX."_user_data WHERE userid=%d LIMIT 1", array($GLOBALS['userid']), __FILE__, __LINE__); @@ -224,42 +212,28 @@ function LOAD_TEMPLATE($template, $return=false, $content="") $MODE = ""; // Check for admin/guest/member templates - if (strpos($template, "admin_") > -1) - { + if (strpos($template, "admin_") > -1) { // Admin template found $MODE = "admin/"; - } - elseif (strpos($template, "guest_") > -1) - { + } elseif (strpos($template, "guest_") > -1) { // Guest template found $MODE = "guest/"; - } - elseif (strpos($template, "member_") > -1) - { + } elseif (strpos($template, "member_") > -1) { // Member template found $MODE = "member/"; - } - elseif (strpos($template, "install_") > -1) - { + } elseif (strpos($template, "install_") > -1) { // Installation template found $MODE = "install/"; - } - elseif (strpos($template, "ext_") > -1) - { + } elseif (strpos($template, "ext_") > -1) { // Extension template found $MODE = "ext/"; - } - elseif (strpos($template, "la_") > -1) - { + } elseif (strpos($template, "la_") > -1) { // "Logical-area" template found $MODE = "la/"; - } - else - { + } else { // Test for extension $test = substr($template, 0, strpos($template, "_")); - if (EXT_IS_ACTIVE($test)) - { + if (EXT_IS_ACTIVE($test)) { // Set extra path to extension's name $MODE = $test."/"; } @@ -270,8 +244,7 @@ function LOAD_TEMPLATE($template, $return=false, $content="") //////////////////////// $file = $BASE.$MODE.$template.".tpl"; - if ((!empty($GLOBALS['what'])) && ((strpos($template, "_header") > 0) || (strpos($template, "_footer") > 0)) && (($MODE == "guest/") || ($MODE == "member/") || ($MODE == "admin/"))) - { + if ((!empty($GLOBALS['what'])) && ((strpos($template, "_header") > 0) || (strpos($template, "_footer") > 0)) && (($MODE == "guest/") || ($MODE == "member/") || ($MODE == "admin/"))) { // Select what depended header/footer template file for admin/guest/member area $file2 = sprintf("%s%s%s_%s.tpl", $BASE, @@ -288,15 +261,13 @@ function LOAD_TEMPLATE($template, $return=false, $content="") } // Does the special template exists? - if (!file_exists($file)) - { + if (!file_exists($file)) { // Reset to default template $file = $BASE.$template.".tpl"; } // Now does the final template exists? - if (file_exists($file)) - { + if (file_exists($file)) { // The local file does exists so we load it. :) $tmpl_file = implode("", file($file)); @@ -304,73 +275,59 @@ function LOAD_TEMPLATE($template, $return=false, $content="") while (strpos($tmpl_file, "\'") !== false) { $tmpl_file = str_replace("\'", "{QUOT}", $tmpl_file); } // Do we have to compile the code? - if ((strpos($tmpl_file, "\$") !== false) || (strpos($tmpl_file, '{--') !== false) || (strpos($tmpl_file, '--}') > 0)) - { + if ((strpos($tmpl_file, "\$") !== false) || (strpos($tmpl_file, '{--') !== false) || (strpos($tmpl_file, '--}') > 0)) { // Okay, compile it! $tmpl_file = "\$ret=\"".COMPILE_CODE(addslashes($tmpl_file))."\";"; eval($tmpl_file); - } - else - { + } else { // Simply return loaded code $ret = $tmpl_file; } // Add surrounding HTML comments to help finding bugs faster $ret = "\n".$ret."\n"; - } - elseif ((IS_ADMIN()) || ((mxchange_installing) && (!mxchange_installed))) - { + } elseif ((IS_ADMIN()) || ((mxchange_installing) && (!mxchange_installed))) { // Only admins shall see this warning or when installation mode is active - $ret = "
".TEMPLATE_404."
-(".basename($file).")
-
+ $ret = "
".TEMPLATE_404."
+(".basename($file).")
+
".TEMPLATE_CONTENT."
".print_r($content, true)."
".TEMPLATE_DATA."
".print_r($DATA, true)."
-

"; +

"; } - if (!empty($ret)) - { + + // Do we have some content to output or return? + if (!empty($ret)) { // Not empty so let's put it out! ;) - if ($return) - { + if ($return) { // Return the HTML code return $ret; - } - else - { + } else { // Output direct - OUTPUT_HTML ($ret); + OUTPUT_HTML($ret); } - } - elseif (DEBUG_MODE) - { + } elseif (DEBUG_MODE) { // Warning, empty output! - return "E:".$template."
\n"; + return "E:".$template."
\n"; } } // Send mail out to an email address -function SEND_EMAIL($TO, $SUBJECT, $MSG, $HTML='N', $FROM="") -{ +function SEND_EMAIL($TO, $SUBJECT, $MSG, $HTML='N', $FROM="") { // Compile subject line (for POINTS constant etc.) $eval = "\$SUBJECT = \"".COMPILE_CODE(addslashes($SUBJECT))."\";"; eval($eval); $SUBJECT = html_entity_decode($SUBJECT); // Set from header - if (!eregi("@", $TO)) - { + if (!eregi("@", $TO)) { // Value detected, load email from database - if (EXT_IS_ACTIVE("msg")) - { + if (EXT_IS_ACTIVE("msg")) { ADD_MESSAGE_TO_BOX($TO, $SUBJECT, $MSG, $HTML); return; - } - else - { + } else { $result_email = SQL_QUERY_ESC("SELECT email FROM "._MYSQL_PREFIX."_user_data WHERE userid=%d LIMIT 1", array(bigintval($TO)), __FILE__, __LINE__); list($TO) = SQL_FETCHROW($result_email); SQL_FREERESULT($result_email); @@ -398,8 +355,7 @@ function SEND_EMAIL($TO, $SUBJECT, $MSG, $HTML='N', $FROM="") // Fix HTML parameter (default is no!) if (empty($HTML)) $HTML = 'N'; - if (DEBUG_MODE) - { + if (DEBUG_MODE) { // In debug mode we want to display the mail instead of sending it away so we can debug this part echo "
 ".htmlentities(trim($FROM))."
@@ -407,26 +363,21 @@ To      : ".$TO."
 Subject : ".$SUBJECT."
 Message : ".$MSG."
 
\n"; - } - elseif (($HTML == 'Y') && (EXT_IS_ACTIVE("html_mail", true))) - { + } elseif (($HTML == 'Y') && (EXT_IS_ACTIVE("html_mail", true))) { // Send mail as HTML away SEND_HTML_EMAIL($TO, $SUBJECT, $MSG, $FROM); - } - elseif (!empty($TO)) - { + } elseif (!empty($TO)) { // Compile email $TO = COMPILE_CODE($TO); // Send Mail away SEND_RAW_EMAIL(stripslashes($TO), COMPILE_CODE($SUBJECT), stripslashes($MSG), $FROM); - } - elseif ($HTML == 'N') - { + } elseif ($HTML == 'N') { // Problem found! SEND_RAW_EMAIL(WEBMASTER, COMPILE_CODE($SUBJECT), stripslashes($MSG), $FROM); } } + // Check if legacy or PHPMailer command // @private function CHECK_PHPMAILER_USAGE() { @@ -536,71 +487,56 @@ function MAKE_DATETIME($time, $mode="0") } return $ret; } -// + +// Translates the american decimal dot into a german comma function TRANSLATE_COMMA($dotted, $cut=true) { global $CONFIG; // Default is 3 you can change this in admin area "Misc -> Misc Options" if (empty($CONFIG['max_comma'])) $CONFIG['max_comma'] = "3"; if (!ereg("\.", $dotted)) $dotted .= ".".str_repeat("0", $CONFIG['max_comma']); - if ($cut) - { + if ($cut) { // Remove trailing zeros $dot = str_replace(".", "x", $dotted); - while(substr($dot, -1, 1) == "0") - { + while(substr($dot, -1, 1) == "0") { $dot = substr($dot, 0, -1); } - if (substr($dot, -1, 1) == "x") - { + + if (substr($dot, -1, 1) == "x") { // Last char is the 'x' $dotted = substr($dot, 0, -1); - } - else - { + } else { // Last char is a number $dotted = str_replace("x", ".", $dot); } } - switch (GET_LANGUAGE()) - { + + // Translate it now + switch (GET_LANGUAGE()) { case "de": $pos = strpos($dotted, "."); - if ($pos > 0) - { - if ($cut) - { + if ($pos > 0) { + if ($cut) { // Cut x numbers behind comma $dotted = str_replace(".", ",", substr($dotted, 0, ($pos + $CONFIG['max_comma'] + 1))); - } - else - { + } else { // Replace comma with dot $dotted = str_replace(".", ",", $dotted); } - } - elseif (!$cut) - { - if (empty($pos)) - { + } elseif (!$cut) { + if (empty($pos)) { $dotted = "0,".str_repeat("0", $CONFIG['max_comma']); - } - else - { + } else { $dotted .= ",".str_repeat("0", $CONFIG['max_comma']); } } break; default: - if (!$cut) - { - if ($pos > 0) - { + if (!$cut) { + if ($pos > 0) { $dotted = substr($dotted, 0, ($pos + $CONFIG['max_comma'] + 1)); - } - else - { + } else { $dotted .= ".".str_repeat("0", $CONFIG['max_comma']); } } @@ -608,15 +544,15 @@ function TRANSLATE_COMMA($dotted, $cut=true) } return $dotted; } + // -function DEREFERER($URL) -{ +function DEREFERER($URL) { $URL = URL."/modules.php?module=loader&url=".urlencode(base64_encode(COMPILE_CODE($URL))); return $URL; } + // -function TRANSLATE_SEX($sex) -{ +function TRANSLATE_SEX($sex) { switch ($sex) { case "M": $ret = SEX_M; break; @@ -963,12 +899,12 @@ function LOAD_EMAIL_TEMPLATE($template, $content="", $UID="0") elseif (!empty($template)) { // Template file not found! - $content = TEMPLATE_404.": ".$template."
+ $content = TEMPLATE_404.": ".$template."
".TEMPLATE_CONTENT."
".print_r($content, true)."
".TEMPLATE_DATA."
".print_r($DATA, true)."
-

"; +

"; // Debug mode not active? Then remove the HTML tags if (!DEBUG_MODE) $content = strip_tags($content); @@ -1005,14 +941,14 @@ function LOAD_URL($URL, $addUrlData=true) { $URL = htmlentities(strip_tags($URL), ENT_QUOTES); // Output new location link as anchor - OUTPUT_HTML ("".$URL."\n"); + OUTPUT_HTML("".$URL.""); } elseif (!headers_sent()) { // Load URL when headers are not sent @header ("Location: ".str_replace("&", "&", $URL)); } else { // Output error message include(PATH."inc/header.php"); - OUTPUT_HTML (LOAD_URL_ERROR_1.$URL.LOAD_URL_ERROR_2); + OUTPUT_HTML(LOAD_URL_ERROR_1.$URL.LOAD_URL_ERROR_2); include(PATH."inc/footer.php"); } exit(); @@ -1132,22 +1068,22 @@ function array_pk_sort(&$array, $a_sort, $primary_key = 0, $order = -1, $nums = $array = $dummy; } // -function ADD_SELECTION($type, $DEFAULT, $PREFIX="", $id="0") +function ADD_SELECTION($type, $DEFAULT, $prefix="", $id="0") { global $MONTH_DESCR; $OUT = ""; 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 .= "_"; + if (!empty($prefix)) $prefix .= "_"; $type2 = $type; if ($id > 0) $type2 .= "[".$id."]"; - $OUT .= " \n"; } switch ($type) { @@ -1797,11 +1733,11 @@ function VALIDATE_EMAIL($email) { function VALIDATE_URL ($URL, $compile=true) { // Trim URL a little $URL = trim(urldecode($URL)); - //* DEBUG: */ echo $URL."
"; + //* DEBUG: */ echo $URL."
"; // Compile some chars out... if ($compile) $URL = COMPILE_CODE($URL, false, false, false); - //* DEBUG: */ echo $URL."
"; + //* DEBUG: */ echo $URL."
"; // Check for the extension filter if (EXT_IS_ACTIVE("filter")) { @@ -1911,7 +1847,7 @@ function generateHash($plainText, $salt = "") { // Generate the password salt string $salt = substr($sha1, 0, $CONFIG['salt_length']); - //* DEBUG: */ echo $salt." (".strlen($salt).")
"; + //* DEBUG: */ echo $salt." (".strlen($salt).")
"; } else { @@ -1941,7 +1877,7 @@ function scrambleString($str) { } // Scramble string here - //* DEBUG: */ echo "***Original=".$str."***
"; + //* DEBUG: */ echo "***Original=".$str."***
"; for ($idx = 0; $idx < strlen($str); $idx++) { // Get char on scrambled position $char = substr($str, $scrambleNums[$idx], 1); @@ -1951,7 +1887,7 @@ function scrambleString($str) { } // Return scrambled string - //* DEBUG: */ echo "***Scrambled=".$scrambled."***
"; + //* DEBUG: */ echo "***Scrambled=".$scrambled."***
"; return $scrambled; } // @@ -1969,7 +1905,7 @@ function descrambleString($str) // Begin descrambling $orig = str_repeat(" ", 40); - //* DEBUG: */ echo "+++Scrambled=".$str."+++
"; + //* DEBUG: */ echo "+++Scrambled=".$str."+++
"; for ($idx = 0; $idx < 40; $idx++) { $char = substr($str, $idx, 1); @@ -1977,7 +1913,7 @@ function descrambleString($str) } // Return scrambled string - //* DEBUG: */ echo "+++Original=".$orig."+++
"; + //* DEBUG: */ echo "+++Original=".$orig."+++
"; return $orig; } // @@ -2087,7 +2023,7 @@ function FIX_DELETED_COOKIES ($cookies) { } // Output error messages in a fasioned way and die... function mxchange_die ($msg) { - global $FOOTER; + global $footer; // Load the message template LOAD_TEMPLATE("admin_settings_saved", false, $msg); @@ -2098,6 +2034,36 @@ function mxchange_die ($msg) { // Exit explicitly exit; } + +// Display parsing time and number of SQL queries in footer +function DISPLAY_PARSING_TIME_FOOTER() { + global $startTime, $CONFIG; + $endTime = microtime(true); + + // Is the timer started? + if (!isset($GLOBALS['startTime'])) { + // Abort here + return false; + } + + // "Explode" both times + $start = explode(" ", $GLOBALS['startTime']); + $end = explode(" ", $endTime); + $runTime = $end[0] - $start[0]; + if ($runTime < 0) $runTime = 0; + $runTime = TRANSLATE_COMMA($runTime); + + // Prepare output + $content = array( + 'runtime' => $runTime, + 'numSQLs' => ($CONFIG['sql_count'] + 1), + 'numTemplates' => ($CONFIG['num_templates'] + 1) + ); + + // Load the template + LOAD_TEMPLATE("footer_stats", false, $content); +} + // ////////////////////////////////////////////// // //