]> git.mxchange.org Git - mailer.git/blobdiff - inc/functions.php
Add slashes instead of SQL_ESCAPE()
[mailer.git] / inc / functions.php
index c7064dccf77d16a91138714a7e402e26674855cd..25610ef39c4263cbded07e7e7d4ddf3acc22c15c 100644 (file)
@@ -527,10 +527,9 @@ function loadEmailTemplate ($template, $content = array(), $UID = 0) {
        if (isFileReadable($FQFN)) {
                // The local file does exists so we load it. :)
                $GLOBALS['tpl_content'] = readFromFile($FQFN);
-               $GLOBALS['tpl_content'] = SQL_ESCAPE($GLOBALS['tpl_content']);
 
                // Run code
-               $GLOBALS['tpl_content'] = "\$newContent = decodeEntities(\"".compileCode($GLOBALS['tpl_content'])."\");";
+               $GLOBALS['tpl_content'] = "\$newContent = decodeEntities(\"".compileCode(smartAddSlashes($GLOBALS['tpl_content']))."\");";
                eval($GLOBALS['tpl_content']);
        } elseif (!empty($template)) {
                // Template file not found!
@@ -600,7 +599,7 @@ function sendEmail ($toEmail, $subject, $message, $isHtml = 'N', $mailHeader = '
                        // Free result
                        SQL_FREERESULT($result_email);
                }
-       } elseif ($toEmail == 0) {
+       } elseif ($toEmail == '0') {
                // Is the webmaster!
                $toEmail = getConfig('WEBMASTER');
        }
@@ -636,12 +635,12 @@ function sendEmail ($toEmail, $subject, $message, $isHtml = 'N', $mailHeader = '
        if (empty($isHtml)) $isHtml = 'N';
        if (isDebugModeEnabled()) {
                // In debug mode we want to display the mail instead of sending it away so we can debug this part
-               outputHtml("<pre>
-".htmlentities(trim($mailHeader))."
-To      : " . $toEmail."
-Subject : " . $subject."
-Message : " . $message."
-</pre>\n");
+               outputHtml('<pre>
+Headers : ' . str_replace('<', '&lt', str_replace('>', '&gt;', htmlentities(trim($mailHeader)))) . '
+To      : ' . $toEmail . '
+Subject : ' . $subject . '
+Message : ' . $message . '
+</pre>');
        } elseif (($isHtml == 'Y') && (isExtensionActive('html_mail'))) {
                // Send mail as HTML away
                sendHtmlEmail($toEmail, $subject, $message, $mailHeader);
@@ -1742,10 +1741,25 @@ function extractHostnameFromUrl (&$script) {
 }
 
 // Send a GET request
-function sendGetRequest ($script) {
+function sendGetRequest ($script, $data = array()) {
        // Extract host name from script
        $host = extractHostnameFromUrl($script);
 
+       // Add data
+       $scriptData = http_build_query($data, '', '&');
+
+       // Do we have a question-mark in the script?
+       if (strpos($script, '?') === false) {
+               // No, so first char must be question mark
+               $scriptData = '?' . $scriptData;
+       } else {
+               // Ok, add &
+               $scriptData = '&' . $scriptData;
+       }
+
+       // Add script data
+       $script .= $scriptData;
+
        // Generate GET request header
        $request  = 'GET /' . trim($script) . ' HTTP/1.1' . getConfig('HTTP_EOL');
        $request .= 'Host: ' . $host . getConfig('HTTP_EOL');
@@ -1782,7 +1796,7 @@ function sendPostRequest ($script, $postData) {
        $host = extractHostnameFromUrl($script);
 
        // Construct request
-       $data = http_build_query($postData, '','&');
+       $data = http_build_query($postData, '', '&');
 
        // Generate POST request header
        $request  = 'POST /' . trim($script) . ' HTTP/1.1' . getConfig('HTTP_EOL');
@@ -2021,7 +2035,7 @@ function generateEmailLink ($email, $table = 'admins') {
 // Generate a hash for extra-security for all passwords
 function generateHash ($plainText, $salt = '') {
        // Is the required extension 'sql_patches' there and a salt is not given?
-       if (((isExtensionInstalledAndOlder('sql_patches', '0.3.6')) || (!isExtensionActive('sql_patches'))) && (empty($salt))) {
+       if (((isExtensionInstalledAndOlder('sql_patches', '0.3.6')) || (!isExtensionActive('sql_patches')) || (!isExtensionInstalledAndNewer('other', '0.2.5'))) && (empty($salt))) {
                // Extension sql_patches is missing/outdated so we hash the plain text with MD5
                return md5($plainText);
        } // END - if
@@ -2153,7 +2167,7 @@ function generatePassString ($passHash) {
        $ret = $passHash;
 
        // Is a secret key and master salt already initialized?
-       if ((isExtensionInstalled('sql_patches')) && (isConfigEntrySet('secret_key')) && (isConfigEntrySet('master_salt'))) {
+       if ((isExtensionInstalled('sql_patches')) && (isConfigEntrySet('_PRIME')) && (isConfigEntrySet('secret_key')) && (isConfigEntrySet('master_salt'))) {
                // Only calculate when the secret key is generated
                $newHash = ''; $start = 9;
                for ($idx = 0; $idx < 10; $idx++) {
@@ -2295,7 +2309,7 @@ function getCurrentTheme () {
        $ret = 'default';
 
        // Load default theme if not empty from configuration
-       if (getConfig('default_theme') != '') $ret = getConfig('default_theme');
+       if ((isConfigEntrySet('default_theme')) && (getConfig('default_theme') != '')) $ret = getConfig('default_theme');
 
        if (!isSessionVariableSet('mxchange_theme')) {
                // Set default theme
@@ -2604,6 +2618,17 @@ function debug_get_printable_backtrace () {
 
 // Output a debug backtrace to the user
 function debug_report_bug ($message = '') {
+       // Is this already called?
+       if (isset($GLOBALS[__FUNCTION__])) {
+               // Other backtrace
+               print 'Message:'.$message.'<br />Backtrace:<pre>';
+               debug_print_backtrace();
+               die('</pre>');
+       } // END - if
+
+       // Set this function as called
+       $GLOBALS[__FUNCTION__] = true;
+
        // Init message
        $debug = '';
 
@@ -3188,7 +3213,7 @@ function determineReferalId () {
        }
 
        // Set cookie when default refid > 0
-       if (!isSessionVariableSet('refid') || (!empty($GLOBALS['refid'])) || ((getSession('refid') == 0) && (getConfig('def_refid') > 0))) {
+       if (!isSessionVariableSet('refid') || (!empty($GLOBALS['refid'])) || ((getSession('refid') == 0) && (isConfigEntrySet('def_refid')) && (getConfig('def_refid') > 0))) {
                // Set cookie
                setSession('refid', $GLOBALS['refid']);
        } // END - if
@@ -3476,8 +3501,25 @@ function mapModuleToTable ($moduleName) {
 
 // Add SQL debug data to array for later output
 function addSqlToDebug ($result, $sqlString, $timing, $F, $L) {
-       // Don't execute anything here if we don't need
-       if (getConfig('display_debug_sqls') != 'Y') return;
+       // Already executed?
+       if (isset($GLOBALS['debug_sqls'][$F][$L][$sqlString])) {
+               // Then abort here, we don't need to profile a query twice
+               return;
+       } // END - if
+
+       // Remeber this as profiled (or not, but we don't care here)
+       $GLOBALS['debug_sqls'][$F][$L][$sqlString] = true;
+
+       // Do we have cache?
+       if (!isset($GLOBALS['debug_sql_available'])) {
+               // Check it and cache it in $GLOBALS
+               $GLOBALS['debug_sql_available'] = ((isConfigurationLoaded()) && (isExtensionInstalledAndNewer('other', '0.2.2')) && (getConfig('display_debug_sqls') == 'Y'));
+       } // END - if
+       
+       // Don't execute anything here if we don't need or ext-other is missing
+       if ($GLOBALS['debug_sql_available'] === false) {
+               return;
+       } // END - if
 
        // Generate record
        $record = array(
@@ -3502,7 +3544,7 @@ function initCacheInstance () {
        $GLOBALS['cache_instance'] = new CacheSystem();
        if ($GLOBALS['cache_instance']->getStatus() != 'done') {
                // Failed to initialize cache sustem
-               addFatalMessage(__FILE__, __LINE__, "(<font color=\"#0000aa\">".__LINE__."</font>): ".getMessage('CACHE_CANNOT_INITIALIZE'));
+               addFatalMessage(__FILE__, __LINE__, '(<font color="#0000aa">' . __LINE__ . '</font>): ' . getMessage('CACHE_CANNOT_INITIALIZE'));
        } // END - if
 }
 
@@ -3521,91 +3563,6 @@ function getMessageFromIndexedArray ($message, $pos, $array) {
        return $ret;
 }
 
-// Handles fatal errors
-function handleFatalErrors () {
-       // Do we have errors to handle and right output mode?
-       if ((getTotalFatalErrors() == 0) || (getOutputMode() != 0)) {
-               // Abort executing here
-               return false;
-       } // END - if
-
-       // Set content type
-       setContentType('text/html');
-
-       // Load config here
-       loadIncludeOnce('inc/load_config.php');
-
-       // Set unset variable
-       if (empty($check)) $check = '';
-
-       // Default is none
-       $content = '';
-
-       // Installation phase or regular mode?
-       if ((isInstallationPhase())) {
-               // While we are installing ouput other header than while it is installed... :-)
-               $OUT = '';
-               foreach (getFatalArray() as $key => $value) {
-                       // Prepare content for the template
-                       $content = array(
-                               'key'   => ($key + 1),
-                               'value' => $value
-                       );
-
-                       // Load row template
-                       $OUT .= loadTemplate('install_fatal_row', true, $content);
-               }
-
-               // Load main template
-               $content = loadTemplate('install_fatal_table', true, $OUT);
-       } elseif (isInstalled()) {
-               // Display all runtime fatal errors
-               $OUT = '';
-               foreach (getFatalArray() as $key => $value) {
-                       // Prepare content for the template
-                       $content = array(
-                               'key'   => ($key + 1),
-                               'value' => $value
-                       );
-
-                       // Load row template
-                       $OUT .= loadTemplate('runtime_fatal_row', true, $content);
-               }
-
-               // Load main template
-               $content = loadTemplate('runtime_fatal_table', true, $OUT);
-       }
-
-       // Message to regular users (non-admin)
-       $CORR = getMessage('FATAL_REPORT_ERRORS');
-
-       // PHP warnings fixed
-       if ($check == 'done') {
-               if (isAdmin()) $CORR = getMessage('FATAL_CORRECT_ERRORS');
-       } // END - if
-
-       // Remember all in array
-       $content = array(
-               'rows' => $content,
-               'corr' => $CORR
-       );
-
-       // Load footer
-       loadIncludeOnce('inc/header.php');
-
-       // Load main template
-       loadTemplate('fatal_errors', false, $content);
-
-       // Delete all to prevent double-display
-       initFatalMessages();
-
-       // Load footer
-       loadIncludeOnce('inc/footer.php');
-
-       // Abort here
-       shutdown();
-}
-
 // Print code with line numbers
 function linenumberCode ($code)    {
        if (!is_array($code)) $codeE = explode("\n", $code); else $codeE = $code;
@@ -3646,5 +3603,29 @@ if (!function_exists('html_entity_decode')) {
        }
 } // END - if
 
+if (!function_exists('http_build_query')) {
+       // Taken from documentation on www.php.net, credits to Marco K. (Germany)
+       function http_build_query($data, $prefix='', $sep='', $key='') {
+               $ret = array();
+               foreach ((array)$data as $k => $v) {
+                       if (is_int($k) && $prefix != null) {
+                               $k = urlencode($prefix . $k);
+                       } // END - if
+
+                       if ((!empty($key)) || ($key === 0))  $k = $key.'['.urlencode($k).']';
+
+                       if (is_array($v) || is_object($v)) {
+                               array_push($ret, http_build_query($v, '', $sep, $k));
+                       } else {
+                               array_push($ret, $k.'='.urlencode($v));
+                       }
+               } // END - foreach
+
+               if (empty($sep)) $sep = ini_get('arg_separator.output');
+
+               return implode($sep, $ret);
+       }
+}// // END - if
+
 // [EOF]
 ?>