X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Ffunctions.php;h=7838ec88620947b87d2cc7c6bb17e64386358bf7;hp=887faea62aa5f772ada24286930081da85dd0e7d;hb=f57261751b221bd64a7dfe96d7a90404e6974d23;hpb=82d72ce0fd29e2714e62bd11997272eaf6110fd6 diff --git a/inc/functions.php b/inc/functions.php index 887faea62a..7838ec8862 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -184,7 +184,7 @@ 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: */ if ($insertComments) die('
'.linenumberCode($eval).'
'); eval($eval); @@ -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))) { @@ -504,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); @@ -871,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 @@ -896,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! @@ -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 @@ -2565,8 +2535,9 @@ function debug_report_bug ($F, $L, $message = '', $sendEmail = true) { // 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 .= debug_get_printable_backtrace();
-	$debug .= '
Request-URI: ' . getRequestUri() . '
'; - $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())) { @@ -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;