X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Ffunctions.php;h=d5d9226e38b4b6980eefed23818ef2d9daa41882;hp=a5a92f5ecfbdefd42ee0cd601595e16afbe1a21c;hb=f40ee6b3fe47308625f3490dedb1c52174ddf9f1;hpb=261f8bb5b097dfafb28d151867fff3ded1974bbe diff --git a/inc/functions.php b/inc/functions.php index a5a92f5ecf..d5d9226e38 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -11,7 +11,7 @@ * Kurzbeschreibung : Viele Nicht-Datenbank-Funktionen * * -------------------------------------------------------------------- * * Copyright (c) 2003 - 2009 by Roland Haeder * - * Copyright (c) 2009 - 2013 by Mailer Developer Team * + * Copyright (c) 2009 - 2016 by Mailer Developer Team * * For more information visit: http://mxchange.org * * * * This program is free software; you can redistribute it and/or modify * @@ -434,7 +434,7 @@ function makeTime ($hours, $minutes, $seconds, $stamp) { } // Redirects to an URL and if neccessarry extends it with own base URL -function redirectToUrl ($url, $allowSpider = TRUE) { +function redirectToUrl ($url, $allowSpider = TRUE, $compileCode = TRUE) { // Is the output mode -2? if (isAjaxOutputMode()) { // This is always (!) an AJAX request and shall not be redirected @@ -446,8 +446,11 @@ function redirectToUrl ($url, $allowSpider = TRUE) { $url = substr($url, 6, -2); } // END - if - // Compile out codes - eval('$url = "' . compileRawCode(encodeUrl($url)) . '";'); + // Compile codes out? + if ($compileCode === TRUE) { + // Compile out codes + eval('$url = "' . compileRawCode(encodeUrl($url)) . '";'); + } // END - if // Default 'rel' value is external, nofollow is evil from Google and hurts the Internet $rel = ' rel="external"'; @@ -461,12 +464,18 @@ function redirectToUrl ($url, $allowSpider = TRUE) { // Three different ways to debug... //* DEBUG: */ reportBug(__FUNCTION__, __LINE__, 'URL=' . $url); //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'URL=' . $url); - //* DEBUG: */ die($url); + //* DEBUG-DIE: */ die(__METHOD__ . ':url=' . $url . '
compileCode=' . intval($compileCode)); // We should not sent a redirect if headers are already sent if (!headers_sent()) { + // Compile again? + if ($compileCode === TRUE) { + // Do final compilation + $url = doFinalCompilation(str_replace('&', '&', $url), FALSE); + } // END - if + // Load URL when headers are not sent - sendRawRedirect(doFinalCompilation(str_replace('&', '&', $url), FALSE)); + sendRawRedirect($url); } else { // Output error message loadPageHeader(); @@ -536,7 +545,7 @@ function array_pk_sort (&$array, $a_sort, $primary_key = '0', $order = -1, $nums // function generateRandomCode ($length, $code, $userid, $extraData = '') { // Build server string - $server = $_SERVER['PHP_SELF'] . getEncryptSeparator() . detectUserAgent() . getEncryptSeparator() . getenv('SERVER_SOFTWARE') . getEncryptSeparator() . detectRealIpAddress() . getEncryptSeparator() . detectRemoteAddr(); + $server = $_SERVER['REQUEST_URI'] . getEncryptSeparator() . detectUserAgent() . getEncryptSeparator() . getenv('SERVER_SOFTWARE') . getEncryptSeparator() . detectRealIpAddress() . getEncryptSeparator() . detectRemoteAddr(); // Build key string $keys = getSiteKey() . getEncryptSeparator() . getDateKey(); @@ -772,7 +781,7 @@ function generateHash ($plainText, $salt = '', $hash = TRUE) { // When the salt is empty build a new one, else use the first x configured characters as the salt if (empty($salt)) { // Build server string for more entropy - $server = $_SERVER['PHP_SELF'] . getEncryptSeparator() . detectUserAgent() . getEncryptSeparator() . getenv('SERVER_SOFTWARE') . getEncryptSeparator() . detectRealIpAddress() . getEncryptSeparator() . detectRemoteAddr(); + $server = $_SERVER['REQUEST_URI'] . getEncryptSeparator() . detectUserAgent() . getEncryptSeparator() . getenv('SERVER_SOFTWARE') . getEncryptSeparator() . detectRealIpAddress() . getEncryptSeparator() . detectRemoteAddr(); // Build key string $keys = getSiteKey() . getEncryptSeparator() . getDateKey() . getEncryptSeparator() . getFileHash() . getEncryptSeparator() . getMasterSalt(); @@ -2074,7 +2083,7 @@ function encodeUrl ($url, $outputMode = '0') { } // END - if // Add {?URL?} ? - if ((substr($url, 0, strlen(getUrl())) != getUrl()) && (substr($url, 0, 7) != '{?URL?}') && (substr($url, 0, 7) != 'http://') && (substr($url, 0, 8) != 'https://')) { + if ((substr($url, 0, strlen(getUrl())) != getUrl()) && (substr($url, 0, 7) != '{?URL?}') && (!isFullQualifiedUrl($url))) { // Add it $url = '{?URL?}/' . $url; } // END - if @@ -2703,25 +2712,6 @@ function convertCharsetToUtf8 ($str, $charset) { return $str; } -// Hash string with SHA256 and encode it to hex -function hashSha256 ($str) { - /// Hash string - $hash = mhash(MHASH_SHA256, $str); - - // Encode it to hexadecimal - $hex = ''; - for ($i = 0; $i < strlen($hash); $i++) { - // Encode char to decimal, pad it with zero, add it - $hex .= padLeftZero(dechex(ord(substr($hash, $i, 1))), 2); - } // END - if - - // Make sure 'length modulo 2' = 0 - assert((strlen($hex) % 2) == 0); - - // Return it - return $hex; -} - // ---------------------------------------------------------------------------- // "Translatation" functions for points_data table // ---------------------------------------------------------------------------- @@ -2825,62 +2815,6 @@ if (!function_exists('html_entity_decode')) { } } // END - if -// "Calculates" password strength -function calculatePasswordStrength ($password, $configEntry = 'min_password_length') { - // Default score - $score = 1; - - if ((strlen($password) < 1) || (strlen($password) < getConfig($configEntry))) { - // Is to weak - return 0; - } // END - if - - // At least 8 chars long? - if (strlen($password) >= 8) { - // Add score - $score++; - } // END - if - - // At least 10 chars long? - if (strlen($password) >= 10) { - // Add score - $score++; - } // END - if - - // Lower and upper cases? - if ((preg_match('/[a-z]/', $password)) && (preg_match('/[A-Z]/', $password))) { - // Add score - $score++; - } // END - if - - // Also numbers? - if (preg_match('/[0-9]/', $password)) { - // Add score - $score++; - } // END - if - - // Special characters? - if (preg_match('/.[!,@,#,$,%,^,&,*,?,\/,_,~,+,-,(,)]/', $password)) { - // Add score - $score++; - } // END - if - - // Return password score - return $score; -} - -// "Translates" password strength/score -function translatePasswordStrength ($strength) { - // Return it translated - return '{--PASSWORD_SCORE_' . bigintval($strength) . '--}'; -} - -// Checks whether given password is strong enough -function isStrongPassword ($password) { - // Determine it - return (calculatePasswordStrength($password) >= getConfig('min_password_score')); -} - // "Getter" for base path from theme function getBasePathFromTheme ($theme) { return sprintf('%stheme/%s/css/', getPath(), $theme); @@ -2913,9 +2847,16 @@ function isPhpExtensionLoaded ($extension) { } // Loads given library (aka. PHP extension) -// Credits: shaunspiller at spammenot-gmail dot com ( http://de.php.net/dl#88566 ) function loadLibrary ($n, $f = NULL) { - return extension_loaded($n) or dl(((PHP_SHLIB_SUFFIX === 'dll') ? 'php_' : '') . ($f ? $f : $n) . '.' . PHP_SHLIB_SUFFIX); + // Is the actual function dl() available? (Not on all SAPIs since 5.3) + if (!is_callable('dl')) { + // Not callable + /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'dl() is not callable for n=' . $n . ',f[' . gettype($f) . ']=' . $f); + return FALSE; + } // END - if + + // Try to load PHP library + return dl(((PHP_SHLIB_SUFFIX === 'dll') ? 'php_' : '') . ($f ? $f : $n) . '.' . PHP_SHLIB_SUFFIX); } // "Translates" given PHP extension name into a readable version @@ -2924,5 +2865,101 @@ function translatePhpExtension ($extension) { return '{--PHP_EXTENSION_' . strtoupper($extension) . '--}'; } +// Loads stylesheet files in different ways, depending on output mode +function loadStyleSheets () { + // Default styles + $stylesList = array( + 'general.css', + 'ajax.css', + ); + + // Add stylesheet for installation + if ((isInstaller())) { + array_push($stylesList, 'install.css'); + } // END - if + + // When no CSS output-mode is set, set it to file-output + if (!isConfigEntrySet('css_php')) { + setConfigEntry('css_php', 'FILE'); + } // END - if + + // Get current theme + $currentTheme = getCurrentTheme(); + + // Has the theme changed? + if ($currentTheme != getSession('mailer_theme')) { + // Then set it + setMailerTheme($currentTheme); + } // END - if + + // Output CSS files or content or link to css.php ? + if ((isCssOutputMode()) || (getCssPhp() == 'DIRECT')) { + // Load CSS files + $stylesList = merge_array($stylesList, getExtensionCssFiles()); + + // Generate base path + $basePath = getBasePathFromTheme($currentTheme); + + // Output inclusion lines + foreach ($stylesList as $value) { + // Only include found CSS files (to reduce 404 requests) + $FQFN = $basePath . '/' . $value; + + // Do include only existing files and whose are not empty + if ((isFileReadable($FQFN)) && (filesize($FQFN) > 0)) { + switch (getCssPhp()) { + case 'DIRECT': // Just link them (unsupported) + $GLOBALS['__page_header'] .= ''; + break; + + case 'FILE': // Output contents + $GLOBALS['__page_header'] .= removeDeprecatedComment(readFromFile($FQFN)); + break; + + default: // Invalid mode! + reportBug(__FILE__, __LINE__, sprintf('Invalid css_php value %s detected.', getCssPhp())); + break; + } // END - switch + } // END - if + } // END - foreach + } elseif ((isHtmlOutputMode()) || (getCssPhp() == 'INLINE')) { + // Load CSS files + $stylesList = merge_array($stylesList, getExtensionCssFiles()); + + // Generate base path + $basePath = getBasePathFromTheme(getCurrentTheme()); + + // Output inclusion lines + $OUT = ''; + foreach ($stylesList as $value) { + // Only include found CSS files (to reduce 404 requests) + $FQFN = $basePath . '/' . $value; + + // Do include only existing files and whose are not empty + if ((isFileReadable($FQFN)) && (filesize($FQFN) > 0)) { + // Load CSS content + $OUT .= readFromFile($FQFN); + } // END - if + } // END - foreach + + // Load template + $GLOBALS['__page_header'] .= loadTemplate('css_inline', TRUE, removeDeprecatedComment($OUT)); + } else { + // Now we load all CSS files from css.php! + $OUT = ''; + } +} + // [EOF] ?>