X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Ffunctions.php;h=c73058b0a52d1d88e0751a55f50c02ad3f6f4d81;hp=640ff9df0f317ec2310b2cfdb3b429cf48b0cd89;hb=7967841ac94cdcbd10b4d5c011a1e0a9982ec600;hpb=c47293f5523a4a9e8791f0922b138fa6865aefaf
diff --git a/inc/functions.php b/inc/functions.php
index 640ff9df0f..c73058b0a5 100644
--- a/inc/functions.php
+++ b/inc/functions.php
@@ -53,6 +53,7 @@ function is_INCWritable($inc) {
// Open a table (you may want to add some header stuff here)
function OPEN_TABLE($PERCENT = "", $CLASS = "", $ALIGN="left", $VALIGN="", $td_only=false) {
global $table_cnt;
+
// Count tables so we can generate CSS classes for every table... :-)
if (empty($CLASS)) {
// Class is empty so count one up and create a class
@@ -198,6 +199,9 @@ function LOAD_TEMPLATE($template, $return=false, $content="") {
// Add more variables which you want to use in your template files
global $DATA, $_CONFIG, $username;
+ // Make all template names lowercase
+ $template = strtolower($template);
+
// Count the template load
if (!isset($_CONFIG['num_templates'])) $_CONFIG['num_templates'] = 0;
$_CONFIG['num_templates']++;
@@ -269,20 +273,20 @@ function LOAD_TEMPLATE($template, $return=false, $content="") {
);
// Probe for it...
- if (file_exists($file2)) $file = $file2;
+ if (FILE_READABLE($file2)) $file = $file2;
// Remove variable from memory
unset($file2);
}
// Does the special template exists?
- if ((!file_exists($file)) || (!is_readable($file))) {
+ if (!FILE_READABLE($file)) {
// Reset to default template
$file = $BASE.$template.".tpl";
- }
+ } // END - if
// Now does the final template exists?
- if ((file_exists($file)) && (is_readable($file))) {
+ if (FILE_READABLE($file)) {
// The local file does exists so we load it. :)
$tmpl_file = implode("", file($file));
@@ -290,6 +294,7 @@ function LOAD_TEMPLATE($template, $return=false, $content="") {
while (strpos($tmpl_file, "\'") !== false) { $tmpl_file = str_replace("\'", '{QUOT}', $tmpl_file); }
// Do we have to compile the code?
+ $ret = "";
if ((strpos($tmpl_file, "\$") !== false) || (strpos($tmpl_file, '{--') !== false) || (strpos($tmpl_file, '--}') > 0)) {
// Okay, compile it!
$tmpl_file = "\$ret=\"".COMPILE_CODE(addslashes($tmpl_file))."\";";
@@ -337,7 +342,7 @@ function SEND_EMAIL($TO, $SUBJECT, $MSG, $HTML='N', $FROM="") {
$SUBJECT = html_entity_decode($SUBJECT);
// Set from header
- if (!eregi("@", $TO)) {
+ if ((!eregi("@", $TO)) && ($TO > 0)) {
// Value detected, load email from database
if (EXT_IS_ACTIVE("msg")) {
ADD_MESSAGE_TO_BOX($TO, $SUBJECT, $MSG, $HTML);
@@ -347,6 +352,9 @@ function SEND_EMAIL($TO, $SUBJECT, $MSG, $HTML='N', $FROM="") {
list($TO) = SQL_FETCHROW($result_email);
SQL_FREERESULT($result_email);
}
+ } elseif ($TO == 0) {
+ // Is the webmaster!
+ $TO = WEBMASTER;
}
// Not in PHPMailer-Mode
@@ -473,7 +481,7 @@ function GEN_PASS($LEN = 0) {
return $PASS;
}
//
-function MAKE_DATETIME($time, $mode="0")
+function MAKE_DATETIME ($time, $mode="0")
{
if ($time == 0) {
// Never happend
@@ -486,8 +494,7 @@ function MAKE_DATETIME($time, $mode="0")
switch (GET_LANGUAGE())
{
case "de": // German date / time format
- switch ($mode)
- {
+ switch ($mode) {
case "0": $ret = date("d.m.Y \u\m H:i \U\h\\r", $time); break;
case "1": $ret = strtolower(date("d.m.Y - H:i", $time)); break;
case "2": $ret = date("d.m.Y|H:i", $time); break;
@@ -496,8 +503,7 @@ function MAKE_DATETIME($time, $mode="0")
break;
default: // Default is the US date / time format!
- switch ($mode)
- {
+ switch ($mode) {
case "0": $ret = date("r", $time); break;
case "1": $ret = date("Y-m-d - g:i A", $time); break;
case "2": $ret = date("y-m-d|H:i", $time); break;
@@ -508,69 +514,55 @@ function MAKE_DATETIME($time, $mode="0")
}
// Translates the american decimal dot into a german comma
-function TRANSLATE_COMMA($dotted, $cut=true) {
+function TRANSLATE_COMMA ($dotted, $cut=true) {
global $_CONFIG;
+
// Default is 3 you can change this in admin area "Misc -> Misc Options"
if (empty($_CONFIG['max_comma'])) $_CONFIG['max_comma'] = "3";
- if (!ereg("\.", $dotted)) $dotted .= ".".str_repeat("0", $_CONFIG['max_comma']);
- if ($cut) {
- // Remove trailing zeros
- $dot = str_replace(".", "x", $dotted);
- while(substr($dot, -1, 1) == "0") {
- $dot = substr($dot, 0, -1);
- }
+ $maxComma = $_CONFIG['max_comma'];
- if (substr($dot, -1, 1) == "x") {
- // Last char is the 'x'
- $dotted = substr($dot, 0, -1);
+ // Cut zeros off?
+ if ($cut) {
+ // Test for commata if in cut-mode
+ $com = explode(".", $dotted);
+ if (count($com) > 1) {
+ // Commata found, so only zeros?
+ if ($com[1] == str_repeat("0", strlen($com[1]))) {
+ // Only zeros, so don't display them
+ $maxComma = 0;
+ } // END - if
} else {
- // Last char is a number
- $dotted = str_replace("x", ".", $dot);
+ // Don't display commatas even if there are none... ;-)
+ $maxComma = 0;
}
- }
+ } // END - if
+
+ // Debug log
+ //DEBUG_LOG(__FUNCTION__.":dotted={$dotted},maxComma={$maxComma}");
// Translate it now
switch (GET_LANGUAGE()) {
case "de":
- $pos = strpos($dotted, ".");
- if ($pos > 0) {
- if ($cut) {
- // Cut x numbers behind comma
- $dotted = str_replace(".", ",", substr($dotted, 0, ($pos + $_CONFIG['max_comma'] + 1)));
- } else {
- // Replace comma with dot
- $dotted = str_replace(".", ",", $dotted);
- }
- } elseif (!$cut) {
- if (empty($pos)) {
- $dotted = "0,".str_repeat("0", $_CONFIG['max_comma']);
- } else {
- $dotted .= ",".str_repeat("0", $_CONFIG['max_comma']);
- }
- }
+ $dotted = number_format($dotted, $maxComma, ",", ".");
break;
default:
- if (!$cut) {
- if ($pos > 0) {
- $dotted = substr($dotted, 0, ($pos + $_CONFIG['max_comma'] + 1));
- } else {
- $dotted .= ".".str_repeat("0", $_CONFIG['max_comma']);
- }
- }
+ $dotted = number_format($dotted, $maxComma, ".", ",");
break;
}
+
+ // Return translated value
return $dotted;
}
//
-function DEREFERER($URL) {
- $URL = URL."/modules.php?module=loader&url=".urlencode(base64_encode(gzcompress(COMPILE_CODE($URL))));
+function DEREFERER ($URL) {
+ $URL = URL."/modules.php?module=loader&url=".urlencode(base64_encode(gzcompress($URL)));
return $URL;
}
//
-function TRANSLATE_SEX($sex) {
+function TRANSLATE_SEX ($sex) {
switch ($sex)
{
case "M": $ret = SEX_M; break;
@@ -655,7 +647,7 @@ function GET_LANGUAGE() {
// Check GET variable and cookie
if (!empty($lang)) {
// Check if main language file does exist
- if (file_exists(PATH."inc/language/".$lang.".php")) {
+ if (FILE_READABLE(PATH."inc/language/".$lang.".php")) {
// Okay found, so let's update cookies
SET_LANGUAGE($lang);
}
@@ -682,6 +674,9 @@ function SET_LANGUAGE($lang) {
function LOAD_EMAIL_TEMPLATE($template, $content="", $UID="0") {
global $DATA, $_CONFIG, $REPLACER;
+ // Make sure all template names are lowercase!
+ $template = strtolower($template);
+
// Keept for backward-compatiblity (please replace these variables against our new {--CONST--} syntax!)
$MAIN_TITLE = MAIN_TITLE; $URL = URL; $WEBMASTER = WEBMASTER;
$surname = ""; $family = ""; $nick = ""; $sex = "N";
@@ -694,7 +689,7 @@ function LOAD_EMAIL_TEMPLATE($template, $content="", $UID="0") {
if (isSessionVariableSet('admin_login')) {
// Load Admin data
$result = SQL_QUERY_ESC("SELECT email FROM "._MYSQL_PREFIX."_admins WHERE login='%s' LIMIT 1",
- array(SQL_ESCAPE(get_session('admin_login'))), __FILE__, __LINE__);
+ array(get_session('admin_login')), __FILE__, __LINE__);
list($ADMIN) = SQL_FETCHROW($result);
SQL_FREERESULT($result);
}
@@ -859,13 +854,13 @@ function LOAD_EMAIL_TEMPLATE($template, $content="", $UID="0") {
}
// Does the special template exists?
- if ((!@file_exists($file)) || (!is_readable($file))) {
+ if (!FILE_READABLE($file)) {
// Reset to default template
$file = $BASE.$template.".tpl";
} // END - if
// Now does the final template exists?
- if ((@file_exists($file)) && (is_readable($file))) {
+ if (FILE_READABLE($file)) {
// The local file does exists so we load it. :)
$tmpl_file = @implode("", @file($file));
$tmpl_file = addslashes($tmpl_file);
@@ -910,7 +905,7 @@ function MAKE_TIME($H, $M, $S, $stamp) {
}
//
function LOAD_URL($URL, $addUrlData=true) {
- global $CSS, $_CONFIG, $link, $db, $footer;
+ global $CSS, $_CONFIG, $footer;
// Check if http(s):// is there
if ((substr($URL, 0, 7) != "http://") && (substr($URL, 0, 8) != "https://")) {
@@ -1254,42 +1249,34 @@ function bigintval($num, $castValue = true) {
// Insert the code in $img_code into jpeg or PNG image
function GENERATE_IMAGE($img_code, $header=true) {
global $_CONFIG;
- if ((strlen($img_code) > 6) || (empty($img_code)) || ($_CONFIG['code_length'] == 0))
- {
+
+ if ((strlen($img_code) > 6) || (empty($img_code)) || ($_CONFIG['code_length'] == 0)) {
// Stop execution of function here because of over-sized code length
return;
- }
- elseif (!$header)
- {
+ } elseif (!$header) {
// Return in an HTML code code
return "\n";
}
- switch ($_CONFIG['img_type'])
- {
- case "jpg":
- // Loads JPEG image
- $img = sprintf("%s/theme/%s/images/code_bg.jpg", PATH, GET_CURR_THEME());
- if ((file_exists($img)) && (is_readable($img))) {
+ // Load image
+ $img = sprintf("%s/theme/%s/images/code_bg.%s", PATH, GET_CURR_THEME(), $_CONFIG['img_type']);
+ if (FILE_READABLE($img)) {
+ // Switch image type
+ switch ($_CONFIG['img_type'])
+ {
+ case "jpg":
// Okay, load image and hide all errors
$image = @imagecreatefromjpeg($img);
- } else {
- // Exit function here
- return;
- }
- break;
+ break;
- case "png":
- // Loads PNG image
- $img = sprintf("%s/theme/%s/images/code_bg.png", PATH, GET_CURR_THEME());
- if ((file_exists($img)) && (is_readable($img))) {
+ case "png":
// Okay, load image and hide all errors
$image = @imagecreatefrompng($img);
- } else {
- // Exit function here
- return;
+ break;
}
- break;
+ } else {
+ // Exit function here
+ return;
}
// Generate text color (red/green/blue; 0 = dark, 255 = bright)
@@ -1661,25 +1648,12 @@ function ADD_EMAIL_NAV($PAGES, $offset, $show_form, $colspan, $return=false) {
}
}
-//
-function MXCHANGE_OPEN ($script) {
- global $_CONFIG;
- // Default is not to use proxy
- $useProxy = true;
-
- // Are proxy settins set?
- if ((!empty($_CONFIG['proxy_host'])) && ($_CONFIG['proxy_port'] > 0)) {
- // Then use it
- $useProxy = true;
- }
-
- //* DEBUG */ print("SCRIPT=".$script."
\n");
- // Compile the script name
- $script = COMPILE_CODE($script);
- //* DEBUG */ print("SCRIPT=".$script."
\n");
-
+// Extract host from script name
+function EXTRACT_HOST (&$script) {
// Use default SERVER_URL by default... ;) So?
$url = SERVER_URL;
+
+ // Is this URL valid?
if (substr($script, 0, 7) == "http://") {
// Use the hostname from script URL as new hostname
$url = substr($script, 7);
@@ -1705,6 +1679,85 @@ function MXCHANGE_OPEN ($script) {
//* DEBUG */ print("SCRIPT=".$script."
\n");
if (substr($script, 0, 1) == "/") $script = substr($script, 1);
+ // Return host name
+ return $host;
+}
+
+// Send a GET request
+function GET_URL ($script) {
+ // Compile the script name
+ $script = COMPILE_CODE($script);
+
+ // Extract host name from script
+ $host = EXTRACT_HOST($script);
+
+ // Generate GET request header
+ $request = "GET /" . trim($script) . " HTTP/1.1\r\n";
+ $request .= "Host: " . $host . "\r\n";
+ $request .= "Referer: " . URL . "/admin.php\r\n";
+ $request .= "User-Agent: " . TITLE . "/" . FULL_VERSION . "\r\n";
+ $request .= "Content-Type: text/plain\r\n";
+ $request .= "Cache-Control: no-cache\r\n";
+ $request .= "Connection: Close\r\n\r\n";
+
+ // Send the raw request
+ $response = SEND_RAW_REQUEST($host, $request);
+
+ // Return the result to the caller function
+ return $response;
+}
+
+// Send a POST request
+function POST_URL ($script, $postData) {
+ // Is postData an array?
+ if (!is_array($postData)) {
+ // Abort here
+ return array("", "", "");
+ } // END - if
+
+ // Compile the script name
+ $script = COMPILE_CODE($script);
+
+ // Extract host name from script
+ $host = EXTRACT_HOST($script);
+
+ // Construct request
+ $data = http_build_query($postData, '', '&');
+
+ // Generate POST request header
+ $request = "POST /" . trim($script) . " HTTP/1.1\r\n";
+ $request .= "Host: " . $host . "\r\n";
+ $request .= "Referer: " . URL . "/admin.php\r\n";
+ $request .= "User-Agent: " . TITLE . "/" . FULL_VERSION . "\r\n";
+ $request .= "Content-type: application/x-www-form-urlencoded\r\n";
+ $request .= "Content-length: " . strlen($data) . "\r\n";
+ $request .= "Cache-Control: no-cache\r\n";
+ $request .= "Connection: Close\r\n\r\n";
+ $request .= $data;
+
+ // Send the raw request
+ $response = SEND_RAW_REQUEST($host, $request);
+
+ // Return the result to the caller function
+ return $response;
+}
+
+// Sends a raw request to another host
+function SEND_RAW_REQUEST ($host, $request) {
+ global $_CONFIG;
+
+ // Initialize array
+ $response = array("", "", "");
+
+ // Default is not to use proxy
+ $useProxy = false;
+
+ // Are proxy settins set?
+ if ((!empty($_CONFIG['proxy_host'])) && ($_CONFIG['proxy_port'] > 0)) {
+ // Then use it
+ $useProxy = true;
+ } // END - if
+
// Open connection
//* DEBUG */ die("SCRIPT=".$script."
\n");
if ($useProxy) {
@@ -1716,33 +1769,33 @@ function MXCHANGE_OPEN ($script) {
// Is there a link?
if (!is_resource($fp)) {
// Failed!
- return array("", "", "");
+ return $response;
} // END - if
// Do we use proxy?
if ($useProxy) {
// Generate CONNECT request header
- $request = "CONNECT ".$host.":80 HTTP/1.1\r\n";
- $request .= "Host: ".$host."\r\n";
+ $proxyTunnel = "CONNECT ".$host.":80 HTTP/1.1\r\n";
+ $proxyTunnel .= "Host: ".$host."\r\n";
// Use login data to proxy? (username at least!)
if (!empty($_CONFIG['proxy_username'])) {
// Add it as well
$encodedAuth = base64_encode(COMPILE_CODE($_CONFIG['proxy_username']).":".COMPILE_CODE($_CONFIG['proxy_password']));
- $request .= "Proxy-Authorization: Basic ".$encodedAuth."\r\n";
+ $proxyTunnel .= "Proxy-Authorization: Basic ".$encodedAuth."\r\n";
} // END - if
// Add last new-line
- $request .= "\r\n";
- //* DEBUG: */ print("Request:
".$request.""); + $proxyTunnel .= "\r\n"; + //* DEBUG: */ print("proxyTunnel=
".$proxyTunnel.""); // Write request - fputs($fp, $request); + fputs($fp, $proxyTunnel); // Got response? if (feof($fp)) { // No response received - return array("", "", ""); + return $response; } // END - if // Read the first line @@ -1750,22 +1803,9 @@ function MXCHANGE_OPEN ($script) { $respArray = explode(" ", $resp); if ((strtolower($respArray[0]) !== "http/1.0") || ($respArray[1] != "200")) { // Invalid response! - return array("", "", ""); + return $response; } // END - if } // END - if - - // Generate GET request header - $request = "GET /".trim($script)." HTTP/1.1\r\n"; - $request .= "Host: ".$host."\r\n"; - $request .= "Referer: ".URL."/admin.php\r\n"; - $request .= "User-Agent: ".TITLE."/".FULL_VERSION."\r\n"; - $request .= "Content-Type: text/plain\r\n"; - $request .= "Cache-Control: no-cache\r\n"; - $request .= "Connection: Close\r\n\r\n"; - //* DEBUG: */ print("Request:
".$request.""); - - // Initialize array - $response = array(); // Write request fputs($fp, $request); @@ -1778,6 +1818,22 @@ function MXCHANGE_OPEN ($script) { // Close socket fclose($fp); + // Skip first empty lines + $resp = $response; + foreach ($resp as $idx => $line) { + // Trim space away + $line = trim($line); + + // Is this line empty? + if (empty($line)) { + // Then remove it + array_shift($response); + } else { + // Abort on first non-empty line + break; + } + } // END - foreach + //* DEBUG: */ print("Response:
".print_r($response, true).""); // Proxy agent found? @@ -1976,15 +2032,14 @@ function scrambleString($str) { // Add it to final output string $scrambled .= $char; - } + } // END - for // Return scrambled string //* DEBUG: */ echo "***Scrambled=".$scrambled."***