* $Date:: $ *
* $Tag:: 0.2.1-FINAL $ *
* $Author:: $ *
- * Needs to be in all Files and every File needs "svn propset *
- * svn:keywords Date Revision" (autoprobset!) at least!!!!!! *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
* Copyright (c) 2009, 2010 by Mailer Developer Team *
} // END - if
// Compress it?
+ /**
+ * @TODO On some pages this is buggy
if (!empty($_SERVER['HTTP_ACCEPT_ENCODING']) && (strpos('gzip', $_SERVER['HTTP_ACCEPT_ENCODING']) !== null)) {
// Compress it for HTTP gzip
- $GLOBALS['output'] = gzencode($GLOBALS['output'], 9, true);
+ $GLOBALS['output'] = gzencode($GLOBALS['output'], 9);
// Add header
sendHeader('Content-Encoding: gzip');
// Add header
sendHeader('Content-Encoding: deflate');
}
+ */
// Add final length
sendHeader('Content-Length: ' . strlen($GLOBALS['output']));
enableTemplateHtml($insertComments);
// Init counter
- $cnt = 0;
+ $count = 0;
// Compile all out
- while (((strpos($code, '{--') !== false) || (strpos($code, '{DQUOTE}') !== false) || (strpos($code, '{?') !== false) || (strpos($code, '{%') !== false)) && ($cnt < 5)) {
+ while (((strpos($code, '{--') !== false) || (strpos($code, '{DQUOTE}') !== false) || (strpos($code, '{?') !== false) || (strpos($code, '{%') !== false)) && ($count < 5)) {
// Init common variables
$content = array();
$newContent = '';
// Compile it
//* DEBUG: */ debugOutput('<pre>'.linenumberCode($code).'</pre>');
$eval = '$newContent = "' . str_replace('{DQUOTE}', '"', compileCode(escapeQuotes($code), false, true, $enableCodes)) . '";';
- //* DEBUG: */ if (!$insertComments) print('<pre>'.linenumberCode($eval).'</pre>');
+ //* DEBUG: */ if (!$insertComments) print('EVAL=<pre>'.linenumberCode($eval).'</pre>');
eval($eval);
+ //* DEBUG: */ if (!$insertComments) print('NEW=<pre>'.linenumberCode($newContent).'</pre>');
//* DEBUG: */ die('<pre>'.encodeEntities($newContent).'</pre>');
// Was that eval okay?
$code = $newContent;
// Count round
- $cnt++;
+ $count++;
} // END - while
// Return the compiled code
// Init some data
$ret = '';
- if (empty($GLOBALS['refid'])) $GLOBALS['refid'] = '0';
// Base directory
$basePath = sprintf("%stemplates/%s/html/", getPath(), getLanguage());
incrementConfigEntry('num_templates');
// The local file does exists so we load it. :)
- $GLOBALS['tpl_content'] = readFromFile($FQFN);
+ $GLOBALS['tpl_content'][$template] = readFromFile($FQFN);
// Do we have to compile the code?
$ret = '';
- if ((strpos($GLOBALS['tpl_content'], '$') !== false) || (strpos($GLOBALS['tpl_content'], '{--') !== false) || (strpos($GLOBALS['tpl_content'], '{?') !== false) || (strpos($GLOBALS['tpl_content'], '{%') !== false)) {
+ if ((strpos($GLOBALS['tpl_content'][$template], '$') !== false) || (strpos($GLOBALS['tpl_content'][$template], '{--') !== false) || (strpos($GLOBALS['tpl_content'][$template], '{?') !== false) || (strpos($GLOBALS['tpl_content'][$template], '{%') !== false)) {
// Normal HTML output?
if (isHtmlOutputMode()) {
// Add surrounding HTML comments to help finding bugs faster
- $ret = '<!-- Template ' . $template . ' - Start //-->' . $GLOBALS['tpl_content'] . '<!-- Template ' . $template . ' - End //-->';
+ $ret = '<!-- Template ' . $template . ' - Start //-->' . $GLOBALS['tpl_content'][$template] . '<!-- Template ' . $template . ' - End //-->';
// Prepare eval() command
$GLOBALS['template_eval'][$template] = '$ret = "' . getColorSwitchCode($template) . compileCode(escapeQuotes($ret)) . '";';
} elseif (substr($template, 0, 3) == 'js_') {
// JavaScripts don't like entities and timings
- $GLOBALS['template_eval'][$template] = '$ret = decodeEntities("' . compileRawCode(escapeJavaScriptQuotes($GLOBALS['tpl_content'])) . '");';
+ $GLOBALS['template_eval'][$template] = '$ret = decodeEntities("' . compileRawCode(escapeJavaScriptQuotes($GLOBALS['tpl_content'][$template])) . '");';
} else {
// Prepare eval() command, other output doesn't like entities, maybe
- $GLOBALS['template_eval'][$template] = '$ret = decodeEntities("' . compileRawCode(escapeQuotes($GLOBALS['tpl_content'])) . '");';
+ $GLOBALS['template_eval'][$template] = '$ret = decodeEntities("' . compileRawCode(escapeQuotes($GLOBALS['tpl_content'][$template])) . '");';
}
} else {
// Add surrounding HTML comments to help finding bugs faster
- $ret = '<!-- Template ' . $template . ' - Start //-->' . $GLOBALS['tpl_content'] . '<!-- Template ' . $template . ' - End //-->';
+ $ret = '<!-- Template ' . $template . ' - Start //-->' . $GLOBALS['tpl_content'][$template] . '<!-- Template ' . $template . ' - End //-->';
$GLOBALS['template_eval'][$template] = '$ret = "' . getColorSwitchCode($template) . compileRawCode(escapeQuotes($ret)) . '";';
} // END - if
} elseif ((isAdmin()) || ((isInstalling()) && (!isInstalled()))) {
// Only admins shall see this warning or when installation mode is active
$ret = '<div class="para">
- <span class="guest_failed">{--TEMPLATE_404--}</span>
+ <span class="notice">{--TEMPLATE_404--}</span>
</div>
<div class="para">
(' . $template . ')
}
// Loads an email template and compiles it
-function loadEmailTemplate ($template, $content = array(), $userid = '0') {
+function loadEmailTemplate ($template, $content = array(), $userid = '0', $loadUserData = true) {
global $DATA;
// Make sure all template names are lowercase!
$content['expiration'] = '{--MAIL_WILL_NEVER_EXPIRE--}';
} elseif (isConfigEntrySet('auto_purge')) {
// Create nice date string
- $content['expiration'] = createFancyTime(getAutoPurge());
+ $content['expiration'] = '{%pipe,getAutoPurge,createFancyTime%}';
} else {
// Missing entry
$content['expiration'] = '{--MAIL_NO_CONFIG_AUTO_PURGE--}';
// Merge data if valid
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "content()=".count($content)." - PRE<br />");
- if (isUserDataValid()) {
+ if ((isUserDataValid()) && ($loadUserData === true)) {
$content = merge_array($content, getUserDataArray());
} // END - if
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "content()=".count($content)." - AFTER<br />");
$newContent = '';
if (isFileReadable($FQFN)) {
// The local file does exists so we load it. :)
- $GLOBALS['tpl_content'] = readFromFile($FQFN);
+ $GLOBALS['tpl_content'][$template] = readFromFile($FQFN);
// Run code
- $GLOBALS['tpl_content'] = '$newContent = decodeEntities("' . compileRawCode(escapeQuotes($GLOBALS['tpl_content'])) . '");';
- eval($GLOBALS['tpl_content']);
+ $GLOBALS['tpl_content'][$template] = '$newContent = decodeEntities("' . compileRawCode(escapeQuotes($GLOBALS['tpl_content'][$template])) . '");';
+ eval($GLOBALS['tpl_content'][$template]);
} elseif (!empty($template)) {
// Template file not found!
$newContent = '<div class="para">
</div>';
// Debug mode not active? Then remove the HTML tags
- if (!isDebugModeEnabled()) $newContent = secureString($newContent);
+ if (!isDebugModeEnabled()) {
+ // Remove HTML tags
+ $newContent = secureString($newContent);
+ } // END - if
} else {
// No template name supplied!
$newContent = '{--NO_TEMPLATE_SUPPLIED--}';
// Is there some content?
if (empty($newContent)) {
// Compiling failed
- $newContent = "Compiler error for template " . $template . " !\nUncompiled content:\n" . $GLOBALS['tpl_content'];
+ $newContent = "Compiler error for template " . $template . " !\nUncompiled content:\n" . $GLOBALS['tpl_content'][$template];
// Add last error if the required function exists
if (function_exists('error_get_last')) $newContent .= "\n--------------------------------------\nDebug:\n".print_r(error_get_last(), true)."--------------------------------------\nPlease don't alter these informations!\nThanx.";
}
//
-function addSelectionBox ($type, $default, $prefix = '', $id = '0', $class = 'register_select') {
+function addSelectionBox ($type, $default, $prefix = '', $id = '0', $class = 'form_select') {
$OUT = '';
if ($type == 'yn') {
// Insert the code in $img_code into jpeg or PNG image
function generateImageOrCode ($img_code, $headerSent = true) {
// Is the code size oversized or shouldn't we display it?
- if ((strlen($img_code) > 6) || (empty($img_code)) || (getConfig('code_length') == '0')) {
+ if ((strlen($img_code) > 6) || (empty($img_code)) || (getCodeLength() == '0')) {
// Stop execution of function here because of over-sized code length
- debug_report_bug(__FUNCTION__, __LINE__, 'img_code ' . $img_code .' has invalid length. img_code()=' . strlen($img_code) . ' code_length=' . getConfig('code_length'));
+ debug_report_bug(__FUNCTION__, __LINE__, 'img_code ' . $img_code .' has invalid length. img_code()=' . strlen($img_code) . ' code_length=' . getCodeLength());
} elseif ($headerSent === false) {
// Return an HTML code here
return '<img src="{%url=img.php?code=' . $img_code . '%}" alt="Image" />';
$img = sprintf("%s/theme/%s/images/code_bg.%s",
getPath(),
getCurrentTheme(),
- getConfig('img_type')
+ getImgType()
);
// Is it readable?
if (isFileReadable($img)) {
// Switch image type
- switch (getConfig('img_type')) {
- case 'jpg':
- // Okay, load image and hide all errors
+ switch (getImgType()) {
+ case 'jpg': // Okay, load image and hide all errors
$image = imagecreatefromjpeg($img);
break;
- case 'png':
- // Okay, load image and hide all errors
+ case 'png': // Okay, load image and hide all errors
$image = imagecreatefrompng($img);
break;
} // END - switch
} else {
- // Exit function here
- logDebugMessage(__FUNCTION__, __LINE__, sprintf("File for image type %s not found.", getConfig('img_type')));
+ // Silently log the error
+ logDebugMessage(__FUNCTION__, __LINE__, sprintf("File for image-type %s in theme %s not found.", getImgType(), getCurrentTheme()));
return;
}
imagestring($image, 5, 14, 2, $img_code, $text_color);
// Return to browser
- sendHeader('Content-Type: image/' . getConfig('img_type'));
+ setContentType('image/' . getImgType());
// Output image with matching image factory
- switch (getConfig('img_type')) {
+ switch (getImgType()) {
case 'jpg': imagejpeg($image); break;
case 'png': imagepng($image); break;
} // END - switch
$M2 = getMonth(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 = getOneDay();
// First of all years...
$Y = abs(floor($timestamp / (31536000 + $SWITCH)));
$M = abs(floor($timestamp / 2628000 - $Y * 12));
//* 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)));
+ $W = abs(floor($timestamp / 604800 - $Y * ((365 + $SWITCH / getOneDay()) / 7) - ($M / 12 * (365 + $SWITCH / getOneDay()) / 7)));
//* 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));
+ $D = abs(floor($timestamp / 86400 - $Y * (365 + $SWITCH / getOneDay()) - ($M / 12 * (365 + $SWITCH / getOneDay())) - $W * 7));
//* 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));
+ $h = abs(floor($timestamp / 3600 - $Y * (365 + $SWITCH / getOneDay()) * 24 - ($M / 12 * (365 + $SWITCH / getOneDay()) * 24) - $W * 7 * 24 - $D * 24));
//* 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));
+ $m = abs(floor($timestamp / 60 - $Y * (365 + $SWITCH / getOneDay()) * 24 * 60 - ($M / 12 * (365 + $SWITCH / getOneDay()) * 24 * 60) - $W * 7 * 24 * 60 - $D * 24 * 60 - $h * 60));
//* 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));
+ $s = abs(floor($timestamp - $Y * (365 + $SWITCH / getOneDay()) * 24 * 3600 - ($M / 12 * (365 + $SWITCH / getOneDay()) * 24 * 3600) - $W * 7 * 24 * 3600 - $D * 24 * 3600 - $h * 3600 - $m * 60));
//* DEBUG: */ debugOutput('s=' . $s);
// Is seconds zero and time is < 60 seconds?
$OUT = '[';
foreach ($targetArray as $tar) {
- $OUT .= '<span class="admin_user_link"><a href="{%url=modules.php?module=admin&what=' . $tar . '&userid=' . $userid . '%}" title="{--ADMIN_LINK_';
+ $OUT .= '<span class="admin_user_link"><a href="{%url=modules.php?module=admin&what=' . $tar . '&userid=' . $userid . '%}" title="{--ADMIN_USER_ACTION_LINK_';
//* DEBUG: */ debugOutput('*' . $tar.'/' . $status.'*');
if (($tar == 'lock_user') && ($status == 'LOCKED')) {
// Locked accounts shall be unlocked
$OUT .= 'UNLOCK_USER';
+ } elseif ($tar == 'del_user') {
+ // @TODO Deprecate this thing
+ $OUT .= 'DELETE_USER';
} else {
// All other status is fine
$OUT .= strtoupper($tar);
}
- $OUT .= '_TITLE--}">{--ADMIN_';
+ $OUT .= '_TITLE--}">{--ADMIN_USER_ACTION_LINK_';
if (($tar == 'lock_user') && ($status == 'LOCKED')) {
// Locked accounts shall be unlocked
$OUT .= 'UNLOCK_USER';
+ } elseif ($tar == 'del_user') {
+ // @TODO Deprecate this thing
+ $OUT .= 'DELETE_USER';
} else {
// All other status is fine
$OUT .= strtoupper($tar);
$EMAIL = generateAdminEmailLink($email);
} elseif ((isExtensionInstalledAndNewer('user', '0.3.3')) && ($table == 'user_data')) {
// Create email link for contacting a member within admin area (or later in other areas, too?)
- $EMAIL = generateUserEmailLink($email, 'admin');
+ $EMAIL = generateUserEmailLink($email);
} elseif ((isExtensionActive('sponsor')) && ($table == 'sponsor_data')) {
// Create email link to contact sponsor within admin area (or like the link above?)
- $EMAIL = generateSponsorEmailLink($email, 'sponsor_data');
+ $EMAIL = generateSponsorEmailLink($email);
}
// Shall I close the link when there is no admin?
// Output error messages in a fasioned way and die...
function app_die ($F, $L, $message) {
// Check if Script is already dieing and not let it kill itself another 1000 times
- if (!isset($GLOBALS['app_died'])) {
- // Make sure, that the script realy realy diese here and now
- $GLOBALS['app_died'] = true;
+ if (isset($GLOBALS['app_died'])) {
+ // Script tried to kill itself twice
+ die('[' . __FUNCTION__ . ':' . __LINE__ . ']: Script wanted to kill itself more than once! Raw message=' . $message . ', file/function=' . $F . ', line=' . $L);
+ } // END - if
- // Set content type as text/html
- setContentType('text/html');
+ // Make sure, that the script realy realy diese here and now
+ $GLOBALS['app_died'] = true;
- // Load header
- loadIncludeOnce('inc/header.php');
+ // Set content type as text/html
+ setContentType('text/html');
- // Rewrite message for output
- $message = sprintf(getMessage('MAILER_HAS_DIED'), basename($F), $L, $message);
+ // Load header
+ loadIncludeOnce('inc/header.php');
- // Load the message template
- loadTemplate('app_die_message', false, $message);
+ // Rewrite message for output
+ $message = sprintf(getMessage('MAILER_HAS_DIED'), basename($F), $L, $message);
- // Load footer
- loadIncludeOnce('inc/footer.php');
- } else {
- // Script tried to kill itself twice
- die('['.__FUNCTION__.':'.__LINE__.']: Script wanted to kill itself more than once! Raw message=' . $message . ', file/function=' . $F . ', line=' . $L);
- }
+ // Load the message template
+ loadTemplate('app_die_message', false, $message);
+
+ // Load footer
+ loadIncludeOnce('inc/footer.php');
}
// Display parsing time and number of SQL queries in footer
$start = explode(' ', $GLOBALS['startTime']);
$end = explode(' ', $endTime);
$runTime = $end[0] - $start[0];
- if ($runTime < 0) $runTime = '0';
+ if ($runTime < 0) {
+ $runTime = '0';
+ } // END - if
// Prepare output
// @TODO This can be easily moved out after the merge from EL branch to this is complete
// Add code
$r .= '<span class="linetext">' . encodeEntities($c) . '</span></div>';
- }
+ } // END - foreach
return '<div class="code">' . $r . '</div>';
}
// Send out mails depending on the 'mod/modes' combination
// @TODO Lame description for this function
function sendModeMails ($mod, $modes) {
+ // Init user data
+ $content = array ();
+
// Load hash
if (fetchUserData(getMemberId())) {
// Extract salt from cookie
$sub_mem = '{--MEMBER_CHANGED_DATA--}';
// Output success message
- $content = '<span class="member_done">{--MEMBER_MYDATA_MAIL_SENT--}</span>';
+ $content['message'] = '<span class="message">{--MEMBER_MYDATA_MAIL_SENT--}</span>';
break;
default: // Unsupported module!
logDebugMessage(__FUNCTION__, __LINE__, sprintf("Unsupported module %s detected.", $mod));
- $content = '<span class="member_failed">{--UNKNOWN_MODULE--}</span>';
+ $content['message'] = '<span class="notice">{--UNKNOWN_MODULE--}</span>';
break;
} // END - switch
} else {
// Passwords mismatch
- $content = '<span class="member_failed">{--MEMBER_PASSWORD_ERROR--}</span>';
+ $content['message'] = '<span class="notice">{--MEMBER_PASSWORD_ERROR--}</span>';
}
} else {
// Could not load profile
- $content = '<span class="member_failed">{--MEMBER_CANNOT_LOAD_PROFILE--}</span>';
+ $content['message'] = '<span class="notice">{--MEMBER_CANNOT_LOAD_PROFILE--}</span>';
}
// Send email to user if required
- if ((!empty($sub_mem)) && (!empty($message))) {
+ if ((!empty($sub_mem)) && (!empty($message)) && (!empty($content['email']))) {
// Send member mail
sendEmail($content['email'], $sub_mem, $message);
} // END - if
// Send only if no other error has occured
- if (empty($content)) {
- if ((!empty($sub_adm)) && (!empty($message_admin))) {
- // Send admin mail
- sendAdminNotification($sub_adm, $message_admin, $content, getMemberId());
- } elseif (isAdminNotificationEnabled()) {
- // Cannot send mails to admin!
- $content = '{--CANNOT_SEND_ADMIN_MAILS--}';
- } else {
- // No mail to admin
- $content = '<span class="member_done">{--MEMBER_MYDATA_MAIL_SENT--}</span>';
- }
- } // END - if
+ if ((!empty($sub_adm)) && (!empty($message_admin)) && (isAdminNotificationEnabled())) {
+ // Send admin mail
+ sendAdminNotification($sub_adm, $message_admin, $content, getMemberId());
+ } elseif (isAdminNotificationEnabled()) {
+ // Cannot send mails to admin!
+ $content['message'] = '{--CANNOT_SEND_ADMIN_MAILS--}';
+ } else {
+ // No mail to admin
+ $content['message'] = '<span class="message">{--MEMBER_MYDATA_MAIL_SENT--}</span>';
+ }
// Load template
- loadTemplate('admin_settings_saved', false, $content);
+ loadTemplate('admin_settings_saved', false, $content['message']);
}
// Generates a 'selection box' from given array
function generateSelectionBoxFromArray ($options, $name, $optionValue, $optionContent = '', $extraName = '') {
// Start the output
- $OUT = '<select name="' . $name . '" size="1" class="admin_select">
+ $OUT = '<select name="' . $name . '" size="1" class="form_select">
<option value="X" disabled="disabled">{--PLEASE_SELECT--}</option>';
// Walk through all options
foreach ($options as $option) {
- // Add the <option> entry
+ // Add the <option> entry from ...
if (empty($optionContent)) {
- // ... from template
+ // ... template
$OUT .= loadTemplate('select_' . $name . $extraName . '_option', true, $option);
} else {
- // Direct HTML code
+ // ... direct HTML code
$OUT .= '<option value="' . $option[$optionValue] . '">' . $option[$optionContent] . '</option>';
}
} // END - foreach
return $return;
}
+// Translates the "pool type" into human-readable
+function translatePoolType ($type) {
+ // Return "translation"
+ return sprintf("{--POOL_TYPE_%s--}", strtoupper($type));
+}
+
//-----------------------------------------------------------------------------
-// Template Helper Functions
+// Template helper functions for EL
//-----------------------------------------------------------------------------
// Color-switch helper function
// Switch color if called from loadTemplate()
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'SWITCH:' . $template);
$GLOBALS['color_switch'][$template] = 3 - $GLOBALS['color_switch'][$template];
- } // END - if
+ }
// Return CSS class name
if ($return === true) {
// Is the given extension non-productive?
if (!isExtensionProductive($ext_name)) {
// Non-productive code
- $OUT = '<em style="cursor:help" class="admin_note" title="{%message,ADMIN_EXTENSION_IS_NON_PRODUCTIVE_LINK_TITLE=' . $ext_name . '%}">{--ADMIN_EXTENSION_IS_NON_PRODUCTIVE_LINK--}</em>';
+ $OUT = '<em style="cursor:help" class="notice" title="{%message,ADMIN_EXTENSION_IS_NON_PRODUCTIVE_LINK_TITLE=' . $ext_name . '%}">{--ADMIN_EXTENSION_IS_NON_PRODUCTIVE_LINK--}</em>';
} // END - if
// Return code