X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Ffunctions.php;h=7838ec88620947b87d2cc7c6bb17e64386358bf7;hp=a1577f58a7e5b6caedd1817a0c10ae43e4f6cf49;hb=f57261751b221bd64a7dfe96d7a90404e6974d23;hpb=4707e8e1d5511597b3d425bca0fd5addbb6fe2a8 diff --git a/inc/functions.php b/inc/functions.php index a1577f58a7..7838ec8862 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -171,7 +171,7 @@ function compileFinalOutput () { // Main compilation loop function doFinalCompilation ($code, $insertComments = true) { - // Insert comments? + // Insert comments? (Only valid with HTML templates, of course) enableTemplateHtml($insertComments); // Init counter @@ -184,9 +184,9 @@ function doFinalCompilation ($code, $insertComments = true) { $newContent = ''; // Compile it - //* DEBUG: */ print '
'.htmlentities($code).'
'; + //* DEBUG: */ debugOutput('
'.htmlentities($code).'
'); $eval = '$newContent = "' . str_replace('{DQUOTE}', '"', compileCode(escapeQuotes($code))) . '";'; - //* DEBUG: */ die('
'.htmlentities($eval).'
'); + //* DEBUG: */ if ($insertComments) die('
'.linenumberCode($eval).'
'); eval($eval); //* DEBUG: */ die('
'.htmlentities($newContent).'
'); @@ -331,14 +331,18 @@ function loadTemplate ($template, $return = false, $content = array()) { $GLOBALS['template_eval'][$template] = $eval; } elseif ((isAdmin()) || ((isInstalling()) && (!isInstalled()))) { // Only admins shall see this warning or when installation mode is active - $ret = '
{--TEMPLATE_404--}
-(' . $template . ')
-
-{--TEMPLATE_CONTENT--} -
' . print_r($content, true) . '
-{--TEMPLATE_DATA--} -
' . print_r($DATA, true) . '
-

'; + $ret = '
+ {--TEMPLATE_404--} +
+
+ (' . $template . ') +
+
+ {--TEMPLATE_CONTENT--} +
' . print_r($content, true) . '
+ {--TEMPLATE_DATA--} +
' . print_r($DATA, true) . '
+
'; } else { // No file! $GLOBALS['template_eval'][$template] = '404'; @@ -450,7 +454,7 @@ function loadEmailTemplate ($template, $content = array(), $userid = '0') { } // END - if // Load user's data - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "UID={$userid},template={$template},content[]=".gettype($content).'
'); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "UID={$userid},template={$template},content[]=".gettype($content)); if (($userid > 0) && (is_array($content))) { // If nickname extension is installed, fetch nickname as well if ((isExtensionActive('nickname')) && (isNicknameUsed($userid))) { @@ -471,9 +475,6 @@ function loadEmailTemplate ($template, $content = array(), $userid = '0') { //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "content()=".count($content)." - AFTER
"); } // END - if - // Translate M to male or F to female if present - if (isset($content['gender'])) $content['gender'] = translateGender($content['gender']); - // Overwrite email from data if present if (isset($content['email'])) $email = $content['email']; @@ -507,12 +508,15 @@ function loadEmailTemplate ($template, $content = array(), $userid = '0') { eval($GLOBALS['tpl_content']); } elseif (!empty($template)) { // Template file not found! - $newContent = '{--TEMPLATE_404--}: ' . $template . '
-{--TEMPLATE_CONTENT--} -
' . print_r($content, true) . '
-{--TEMPLATE_DATA--} -
' . print_r($DATA, true) . '
-

'; + $newContent = '
+ {--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 (!isDebugModeEnabled()) $newContent = secureString($newContent); @@ -874,24 +878,24 @@ function translateUserStatus ($status) { // "Translates" 'visible' and 'locked' to a CSS class function translateMenuVisibleLocked ($content, $prefix = '') { // Translate 'visible' and keep an eye on the prefix - switch ($content[$prefix . 'visible']) { + switch ($content['visible']) { // Should be visible - case 'Y': $content[$prefix . 'visible_css'] = $prefix . 'menu_visible' ; break; - case 'N': $content[$prefix . 'visible_css'] = $prefix . 'menu_invisible'; break; + case 'Y': $content['visible_css'] = $prefix . 'menu_visible' ; break; + case 'N': $content['visible_css'] = $prefix . 'menu_invisible'; break; default: // Please report this - debug_report_bug(__FUNCTION__, __LINE__, 'Unsupported visible value detected. content=
'.print_r($content, true).'
'); + debug_report_bug(__FUNCTION__, __LINE__, 'Unsupported visible value detected. content=
' . print_r($content, true) . '
'); break; } // END - switch // Translate 'locked' and keep an eye on the prefix - switch ($content[$prefix . 'locked']) { + switch ($content['locked']) { // Should be locked - case 'Y': $content[$prefix . 'locked_css'] = $prefix . 'menu_locked' ; break; - case 'N': $content[$prefix . 'locked_css'] = $prefix . 'menu_unlocked'; break; + case 'Y': $content['locked_css'] = $prefix . 'menu_locked' ; break; + case 'N': $content['locked_css'] = $prefix . 'menu_unlocked'; break; default: // Please report this - debug_report_bug(__FUNCTION__, __LINE__, 'Unsupported locked value detected. content=
'.print_r($content, true).'
'); + debug_report_bug(__FUNCTION__, __LINE__, 'Unsupported locked value detected. content=
' . print_r($content, true) . '
'); break; } // END - switch @@ -899,6 +903,25 @@ function translateMenuVisibleLocked ($content, $prefix = '') { return $content; } +// "Getter" for menu CSS classes, mainly used in templates +function getMenuCssClasses ($data) { + // $data needs to be converted into an array + $content = explode('|', $data); + + // Non-existent index 2 will happen in menu blocks + if (!isset($content[2])) $content[2] = ''; + + // Re-construct the array: 0=visible,1=locked,2=prefix + $content['visible'] = $content[0]; + $content['locked'] = $content[1]; + + // Call our "translator" function + $content = translateMenuVisibleLocked($content, $content[2]); + + // Return CSS classes + return ($content['visible_css'] . ' ' . $content['locked_css']); +} + // Generates an URL for the dereferer function generateDerefererUrl ($URL) { // Don't de-refer our own links! @@ -987,6 +1010,9 @@ function redirectToUrl ($URL, $allowSpider = true) { // Simple probe for bots/spiders from search engines if ((isSpider()) && ($allowSpider === true)) { + // Set HTTP-Status + setHttpStatus('200 OK'); + // Set content-type here to fix a missing array element setContentType('text/html'); @@ -1106,7 +1132,7 @@ function compileRawCode ($code, $simple = false, $constants = true, $full = true if ($fuzzyFound === true) continue; // Take all string elements - if ((is_string($matches[4][$key])) && (!isset($matchesFound[$match])) && (!isset($matchesFound[$key."_" . $matches[4][$key]]))) { + if ((is_string($matches[4][$key])) && (!isset($matchesFound[$match])) && (!isset($matchesFound[$key.'_' . $matches[4][$key]]))) { // Replace it in the code //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "key={$key},match={$match}
"); $newMatch = str_replace('[', "['", str_replace(']', "']", $match)); @@ -1187,7 +1213,7 @@ function addSelectionBox ($type, $default, $prefix = '', $id = '0', $class = 're $OUT .= ''; @@ -1434,7 +1460,7 @@ function createTimeSelections ($timestamp, $prefix = '', $display = '', $align = // Calculate 2-seconds timestamp $stamp = round($timestamp); - //* DEBUG: */ print("*" . $stamp.'/' . $timestamp."*
"); + //* DEBUG: */ debugOutput('*' . $stamp .'/' . $timestamp . '*'); // Do we have a leap year? $SWITCH = '0'; @@ -1443,29 +1469,29 @@ function createTimeSelections ($timestamp, $prefix = '', $display = '', $align = $M2 = date('m', (time() + $timestamp)); // If so and if current time is before 02/29 and estimated time is after 02/29 then add 86400 seconds (one day) - if ((floor($TEST) == $TEST) && ($M1 == "02") && ($M2 > "02")) $SWITCH = getConfig('ONE_DAY'); + if ((floor($TEST) == $TEST) && ($M1 == '02') && ($M2 > '02')) $SWITCH = getConfig('ONE_DAY'); // First of all years... $Y = abs(floor($timestamp / (31536000 + $SWITCH))); - //* DEBUG: */ print("Y={$Y}
"); + //* DEBUG: */ debugOutput('Y=' . $Y); // Next months... $M = abs(floor($timestamp / 2628000 - $Y * 12)); - //* DEBUG: */ print("M={$M}
"); + //* DEBUG: */ debugOutput('M=' . $M); // Next weeks $W = abs(floor($timestamp / 604800 - $Y * ((365 + $SWITCH / getConfig('ONE_DAY')) / 7) - ($M / 12 * (365 + $SWITCH / getConfig('ONE_DAY')) / 7))); - //* DEBUG: */ print("W={$W}
"); + //* DEBUG: */ debugOutput('W=' . $W); // Next days... $D = abs(floor($timestamp / 86400 - $Y * (365 + $SWITCH / getConfig('ONE_DAY')) - ($M / 12 * (365 + $SWITCH / getConfig('ONE_DAY'))) - $W * 7)); - //* DEBUG: */ print("D={$D}
"); + //* DEBUG: */ debugOutput('D=' . $D); // Next hours... $h = abs(floor($timestamp / 3600 - $Y * (365 + $SWITCH / getConfig('ONE_DAY')) * 24 - ($M / 12 * (365 + $SWITCH / getConfig('ONE_DAY')) * 24) - $W * 7 * 24 - $D * 24)); - //* DEBUG: */ print("h={$h}
"); + //* DEBUG: */ debugOutput('h=' . $h); // Next minutes.. $m = abs(floor($timestamp / 60 - $Y * (365 + $SWITCH / getConfig('ONE_DAY')) * 24 * 60 - ($M / 12 * (365 + $SWITCH / getConfig('ONE_DAY')) * 24 * 60) - $W * 7 * 24 * 60 - $D * 24 * 60 - $h * 60)); - //* DEBUG: */ print("m={$m}
"); + //* DEBUG: */ debugOutput('m=' . $m); // And at last seconds... $s = abs(floor($timestamp - $Y * (365 + $SWITCH / getConfig('ONE_DAY')) * 24 * 3600 - ($M / 12 * (365 + $SWITCH / getConfig('ONE_DAY')) * 24 * 3600) - $W * 7 * 24 * 3600 - $D * 24 * 3600 - $h * 3600 - $m * 60)); - //* DEBUG: */ print("s={$s}
"); + //* DEBUG: */ debugOutput('s=' . $s); // Is seconds zero and time is < 60 seconds? if (($s == '0') && ($timestamp < 60)) { @@ -1687,62 +1713,6 @@ function createFancyTime ($stamp) { return $ret; } -// Generates a navigation row for listing emails -function addEmailNavigation ($PAGES, $offset, $show_form, $colspan, $return=false) { - $TOP = ''; - if ($show_form === false) { - $TOP = ' top'; - } // END - if - - $NAV = ''; - for ($page = 1; $page <= $PAGES; $page++) { - // Is the page currently selected or shall we generate a link to it? - if (($page == getRequestParameter('page')) || ((!isGetRequestParameterSet('page')) && ($page == 1))) { - // Is currently selected, so only highlight it - $NAV .= '-'; - } else { - // Open anchor tag and add base URL - $NAV .= ''; - } - $NAV .= $page; - if (($page == getRequestParameter('page')) || ((!isGetRequestParameterSet('page')) && ($page == 1))) { - // Is currently selected, so only highlight it - $NAV .= '-'; - } else { - // Close anchor tag - $NAV .= ''; - } - - // Add seperator if we have not yet reached total pages - if ($page < $PAGES) { - // Add it - $NAV .= '|'; - } // END - if - } // END - for - - // Define constants only once - $content['nav'] = $NAV; - $content['span'] = $colspan; - $content['top'] = $TOP; - - // Load navigation template - $OUT = loadTemplate('admin_email_nav_row', true, $content); - - if ($return === true) { - // Return generated HTML-Code - return $OUT; - } else { - // Output HTML-Code - outputHtml($OUT); - } -} - // Extract host from script name function extractHostnameFromUrl (&$script) { // Use default SERVER_URL by default... ;) So? @@ -1762,7 +1732,7 @@ function extractHostnameFromUrl (&$script) { if (isInString('/', $host)) $host = substr($host, 0, strpos($host, '/')); // Generate relative URL - //* DEBUG: */ print('SCRIPT=' . $script.'
'); + //* DEBUG: */ debugOutput('SCRIPT=' . $script); if (substr(strtolower($script), 0, 7) == 'http://') { // But only if http:// is in front! $script = substr($script, (strlen($url) + 7)); @@ -1771,7 +1741,7 @@ function extractHostnameFromUrl (&$script) { $script = substr($script, (strlen($url) + 8)); } - //* DEBUG: */ print('SCRIPT=' . $script.'
'); + //* DEBUG: */ debugOutput('SCRIPT=' . $script); if (substr($script, 0, 1) == '/') $script = substr($script, 1); // Return host name @@ -1885,7 +1855,7 @@ function sendRawRequest ($host, $request) { $resolver = new HostnameResolver(); // Open connection - //* DEBUG: */ die('SCRIPT=' . $script.'
'); + //* DEBUG: */ die('SCRIPT=' . $script); if ($useProxy === true) { // Resolve hostname into IP address $ip = $resolver->resolveHostname(compileRawCode(getConfig('proxy_host'))); @@ -1985,8 +1955,8 @@ function sendRawRequest ($host, $request) { } } // END - foreach - //* DEBUG: */ print('Request:
'.print_r($request, true).'
'); - //* DEBUG: */ print('Response:
'.print_r($response, true).'
'); + //* DEBUG: */ debugOutput('Request:
'.print_r($request, true).'
'); + //* DEBUG: */ debugOutput('Response:
'.print_r($response, true).'
'); // Proxy agent found or something went wrong? if (!isset($response[0])) { @@ -2028,7 +1998,7 @@ function setupProxyTunnel ($host, $resource) { // Add last new-line $proxyTunnel .= getConfig('HTTP_EOL'); - //* DEBUG: */ print('proxyTunnel=
' . $proxyTunnel.'
'); + //* DEBUG: */ debugOutput('proxyTunnel=
' . $proxyTunnel.'
'); // Write request fwrite($fp, $proxyTunnel); @@ -2070,11 +2040,11 @@ function isEmailValid ($email) { function isUrlValid ($URL, $compile=true) { // Trim URL a little $URL = trim(urldecode($URL)); - //* DEBUG: */ outputHtml($URL.'
'); + //* DEBUG: */ debugOutput($URL); // Compile some chars out... if ($compile === true) $URL = compileUriCode($URL, false, false, false); - //* DEBUG: */ outputHtml($URL.'
'); + //* DEBUG: */ debugOutput($URL); // Check for the extension filter if (isExtensionActive('filter')) { @@ -2100,7 +2070,7 @@ function generateMemberAdminActionLinks ($userid, $status = '') { foreach ($targetArray as $tar) { $OUT .= '' . __LINE__ . '): ' . $constName."-CACHE!
"); + //* DEBUG: */ debugOutput(__FUNCTION__ . '(' . __LINE__ . '): ' . $constName."-CACHE!
"); $res = ($GLOBALS['cache_array']['const'][$constName] === true); } else { // Check constant - //* DEBUG: */ outputHtml(__FUNCTION__ . '(' . __LINE__ . '): ' . $constName."-RESOLVE!
"); + //* DEBUG: */ debugOutput(__FUNCTION__ . '(' . __LINE__ . '): ' . $constName."-RESOLVE!
"); if (defined($constName)) { // Found! - //* DEBUG: */ outputHtml(__FUNCTION__ . '(' . __LINE__ . '): ' . $constName."-FOUND!
"); + //* DEBUG: */ debugOutput(__FUNCTION__ . '(' . __LINE__ . '): ' . $constName."-FOUND!
"); $res = (constant($constName) === true); } // END - if @@ -2499,7 +2469,7 @@ function generateErrorCodeFromUserStatus ($status='') { // Back-ported from the new ship-simu engine. :-) function debug_get_printable_backtrace () { // Init variable - $backtrace = "
    \n"; + $backtrace = '
      '; // Get and prepare backtrace for output $backtraceArray = debug_backtrace(); @@ -2507,11 +2477,11 @@ function debug_get_printable_backtrace () { if (!isset($trace['file'])) $trace['file'] = __FUNCTION__; if (!isset($trace['line'])) $trace['line'] = __LINE__; if (!isset($trace['args'])) $trace['args'] = array(); - $backtrace .= "
    1. ".basename($trace['file']).":" . $trace['line'].", " . $trace['function'].'('.count($trace['args']).")
    2. \n"; + $backtrace .= '
    3. ' . basename($trace['file']) . ':' . $trace['line'].", " . $trace['function'] . '(' . count($trace['args']) . ')
    4. '; } // END - foreach // Close it - $backtrace .= "
    \n"; + $backtrace .= '
'; // Return the backtrace return $backtrace; @@ -2563,17 +2533,18 @@ function debug_report_bug ($F, $L, $message = '', $sendEmail = true) { } // END - if // Add output - $debug .= "Please report this bug at
http://bugs.mxchange.org and include the logfile from " . str_replace(getConfig('PATH'), '', getConfig('CACHE_PATH')) . "debug.log in your report (you can now attach files):
";
+	$debug .= 'Please report this bug at http://bugs.mxchange.org and include the logfile from ' . str_replace(getConfig('PATH'), '', getConfig('CACHE_PATH')) . 'debug.log in your report (you can now attach files):
';
 	$debug .= debug_get_printable_backtrace();
-	$debug .= "
\nRequest-URI: " . getRequestUri()."
\n"; - $debug .= "Thank you for finding bugs."; + $debug .= '
'; + $debug .= '
Request-URI: ' . getRequestUri() . '
'; + $debug .= '
Thank you for finding bugs.
'; // Send an email? (e.g. not wanted for evaluation errors) if (($sendEmail === true) && (!isInstallationPhase())) { // Prepare content $content = array( - 'message' => trim($message), - 'backtrace' => trim(debug_get_mailable_backtrace()) + 'message' => trim($message), + 'backtrace' => trim(debug_get_mailable_backtrace()) ); // Send email to webmaster @@ -2608,11 +2579,11 @@ function getMessageFromErrorCode ($code) { case getCode('COOKIES_DISABLED') : $message = getMessage('LOGIN_COOKIES_DISABLED'); break; case getCode('BEG_SAME_AS_OWN') : $message = getMessage('BEG_SAME_UID_AS_OWN'); break; case getCode('LOGIN_FAILED') : $message = getMessage('LOGIN_FAILED_GENERAL'); break; - case getCode('MODULE_MEM_ONLY') : $message = getMaskedMessage('MODULE_MEM_ONLY', getRequestParameter('mod')); break; + case getCode('MODULE_MEMBER_ONLY') : $message = getMaskedMessage('MODULE_MEMBER_ONLY', getRequestParameter('mod')); break; case getCode('OVERLENGTH') : $message = getMessage('MEMBER_TEXT_OVERLENGTH'); break; case getCode('URL_FOUND') : $message = getMessage('MEMBER_TEXT_CONTAINS_URL'); break; case getCode('SUBJ_URL') : $message = getMessage('MEMBER_SUBJ_CONTAINS_URL'); break; - case getCode('BLIST_URL') : $message = "{--MEMBER_URL_BLACK_LISTED--}
\n{--MEMBER_BLIST_TIME--}: ".generateDateTime(getRequestParameter('blist'), 0); break; + case getCode('BLIST_URL') : $message = '{--MEMBER_URL_BLACK_LISTED--}
{--MEMBER_BLIST_TIME--}: ' . generateDateTime(getRequestParameter('blist'), 0); break; case getCode('NO_RECS_LEFT') : $message = getMessage('MEMBER_SELECTED_MORE_RECS'); break; case getCode('INVALID_TAGS') : $message = getMessage('MEMBER_HTML_INVALID_TAGS'); break; case getCode('MORE_POINTS') : $message = getMessage('MEMBER_MORE_POINTS_NEEDED'); break; @@ -2757,7 +2728,7 @@ function isUrlValidSimple ($url) { // @TODO Are these convertions still required? $pat = str_replace('.', "\.", $pat); $pat = str_replace('@', "\@", $pat); - //* DEBUG: */ outputHtml($key."= " . $pat . '
'); + //* DEBUG: */ debugOutput($key."= " . $pat); } // END - if // Check if expression matches @@ -2786,12 +2757,12 @@ function changeDataInFile ($FQFN, $comment, $prefix, $suffix, $DATA, $seek=0) { $tmp = $FQFN . '.tmp'; // Open the source file - $fp = fopen($FQFN, 'r') or outputHtml('READ: ' . $FQFN . '
'); + $fp = fopen($FQFN, 'r') or debug_report_bug(__FUNCTION__, __LINE__, 'Cannot read. file=' . basename($FQFN)); // Is the resource valid? if (is_resource($fp)) { // Open temporary file - $fp_tmp = fopen($tmp, 'w') or outputHtml('WRITE: ' . $tmp . '
'); + $fp_tmp = fopen($tmp, 'w') or debug_report_bug(__FUNCTION__, __LINE__, 'Cannot write. tmp=' . basename($tmp) . ',file=' . $FQFN); // Is the resource again valid? if (is_resource($fp_tmp)) { @@ -2840,7 +2811,7 @@ function changeDataInFile ($FQFN, $comment, $prefix, $suffix, $DATA, $seek=0) { } } else { // File not found, not readable or writeable - outputHtml('404: ' . $FQFN . '
'); + debug_report_bug(__FUNCTION__, __LINE__, 'File not readable/writeable. file=' . basename($FQFN)); } // An error was detected! @@ -3248,7 +3219,7 @@ function generateExtensionInactiveMessage ($ext_name) { // Is the extension empty? if (empty($ext_name)) { // This should not happen - debug_report_bug(__FUNCTION__ . ': Parameter ext is empty. This should not happen.'); + debug_report_bug(__FUNCTION__, __LINE__, 'Parameter ext is empty. This should not happen.'); } // END - if // Default message @@ -3269,7 +3240,7 @@ function generateExtensionNotInstalledMessage ($ext_name) { // Is the extension empty? if (empty($ext_name)) { // This should not happen - debug_report_bug(__FUNCTION__ . ': Parameter ext is empty. This should not happen.'); + debug_report_bug(__FUNCTION__, __LINE__, 'Parameter ext is empty. This should not happen.'); } // END - if // Default message @@ -3333,7 +3304,7 @@ function getArrayFromDirectory ($baseDir, $prefix, $fileIncludeDirs = false, $ad // Exclude '.', '..' and entries in $excludeArray automatically if (in_array($baseFile, $excludeArray, true)) { // Exclude them - //* DEBUG: */ outputHtml('excluded=' . $baseFile . '
'); + //* DEBUG: */ debugOutput('excluded=' . $baseFile); continue; } // END - if @@ -3347,9 +3318,9 @@ function getArrayFromDirectory ($baseDir, $prefix, $fileIncludeDirs = false, $ad // Check if the base filenname matches an exclusion pattern and if the pattern is not empty if ((!empty($excludePattern)) && (preg_match($excludePattern, $baseFile, $match))) { // These Lines are only for debugging!! - //* DEBUG: */ outputHtml('baseDir:' . $baseDir . '
'); - //* DEBUG: */ outputHtml('baseFile:' . $baseFile . '
'); - //* DEBUG: */ outputHtml('FQFN:' . $FQFN . '
'); + //* DEBUG: */ debugOutput('baseDir:' . $baseDir); + //* DEBUG: */ debugOutput('baseFile:' . $baseFile); + //* DEBUG: */ debugOutput('FQFN:' . $FQFN); // Exclude this one continue; @@ -3663,9 +3634,6 @@ function sendModeMails ($mod, $modes) { // Load the data $content = getUserDataArray(); - // Translate gender - $content['gender'] = translateGender($content['gender']); - // Clear/init the content variable $content['message'] = '';