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."***
"; return $scrambled; } // -function descrambleString($str) -{ +function descrambleString($str) { global $_CONFIG; // Scramble only 40 chars long strings if (strlen($str) != 40) return $str; @@ -1998,11 +2053,10 @@ function descrambleString($str) // Begin descrambling $orig = str_repeat(" ", 40); //* DEBUG: */ echo "+++Scrambled=".$str."+++
"; - for ($idx = 0; $idx < 40; $idx++) - { + for ($idx = 0; $idx < 40; $idx++) { $char = substr($str, $idx, 1); $orig = substr_replace($orig, $char, $scrambleNums[$idx], 1); - } + } // END - for // Return scrambled string //* DEBUG: */ echo "+++Original=".$orig."+++
"; @@ -2022,11 +2076,11 @@ function genScrambleString($len) { // Check for it by creating more numbers while (array_key_exists($rand, $scrambleNumbers)) { $rand = mt_rand(0, ($len -1)); - } + } // END - while // Add number $scrambleNumbers[$rand] = $rand; - } + } // END - for // So let's create the string for storing it in database $scrambleString = implode(":", $scrambleNumbers); @@ -2034,8 +2088,7 @@ function genScrambleString($len) { } // Append data like session ID referral ID to the given URL which would // normally be stored in cookies -function ADD_URL_DATA($URL) -{ +function ADD_URL_DATA($URL) { global $_CONFIG; $ADD = ""; @@ -2064,7 +2117,7 @@ function ADD_URL_DATA($URL) // Add current session $ADD .= $BIND."PHPSESSID=".session_id(); } - } + } // END - if // Add all together and return it return $URL.$ADD; @@ -2120,8 +2173,8 @@ function FIX_DELETED_COOKIES ($cookies) { if (get_session($cookieName) == "deleted") { set_session($cookieName, ""); } - } - } + } // END - foreach + } // END - if } // Output error messages in a fasioned way and die... @@ -2223,7 +2276,7 @@ function get_session($var) { if (isSessionVariableSet($var)) { // Then get it secured! $value = SQL_ESCAPE($_SESSION[$var]); - } + } // END - if // Return the value return $value; @@ -2260,6 +2313,152 @@ function merge_array ($array1, $array2) { debug_print_backtrace(); die(""); } +// Debug message logger +function DEBUG_LOG ($message) { + // Is debug mode enabled? + if (isBooleanConstantAndTrue('DEBUG_MODE')) { + // Log this message away + $fp = fopen(PATH."inc/cache/debug.log", 'a') or mxchange_die("Cannot write logfile debug.log!"); + fwrite($fp, date("d.m.Y|H:i:s", time())."|{$message}\n"); + fclose($fp); + } // END - if +} +// Reads a directory with PHP files in and gets only files back +function GET_DIR_AS_ARRAY ($baseDir, $prefix) { + $INCs = array(); + + // Open directory + $dirPointer = opendir($baseDir) or mxchange_die("Cannot read ".basename($baseDir)." path!"); + + // Read all entries + while ($baseFile = readdir($dirPointer)) { + // Load file only if extension is active + // Make full path + $file = $baseDir.$baseFile; + + // Is this a valid reset file? + if ((is_file($file)) && (is_readable($file)) && (substr($baseFile, 0, strlen($prefix)) == $prefix) && (substr($baseFile, -4, 4) == ".php")) { + // Remove both for extension name + $extName = substr($baseFile, strlen($prefix), -4); + + // Try to find it + $extId = GET_EXT_ID($extName); + + // Is the extension valid and active? + if (($extId > 0) && (EXT_IS_ACTIVE($extName))) { + // Then add this file + $INCs[] = $file; + } + } // END - if + } // END - while + + // Close directory + closedir($dirPointer); + + // Return array with include files + return $INCs; +} +// Load more reset scripts +function RESET_ADD_INCLUDES () { + global $_CONFIG, $INC_POOL; + + // Is the reset set or old sql_patches? + if ((!isBooleanConstantAndTrue('__DAILY_RESET')) || (GET_EXT_VERSION("sql_patches") < "0.4.5")) { + // Then abort here + return; + } // END - if + + // Get more daily reset scripts + $INC_POOL = array_merge($INC_POOL, GET_DIR_AS_ARRAY(PATH."inc/reset/", "reset_")); + + // Create current week mark + $currWeek = date("W", time()); + + // Has it changed? + if ($_CONFIG['last_week'] != $currWeek) { + // Include weekly reset scripts + $INC_POOL = array_merge($INC_POOL, GET_DIR_AS_ARRAY(PATH."inc/weekly/", "weekly_")); + + // Update config + UPDATE_CONFIG("last_week", $currWeek); + } // END - if + + // Create current month mark + $currMonth = date("m", time()); + + // Has it changed? + if ($_CONFIG['last_month'] != $currMonth) { + // Include monthly reset scripts + $INC_POOL = array_merge($INC_POOL, GET_DIR_AS_ARRAY(PATH."inc/monthly/", "monthly_")); + + // Update config + UPDATE_CONFIG("last_month", $currMonth); + } // END - if +} +// Handle extra values +function HANDLE_EXTRA_VALUES ($filterFunction, $value, $extraValue) { + // Default is the value itself + $ret = $value; + + // Do we have a special filter function? + if (!empty($filterFunction)) { + // Do we have extra parameters here? + if (!empty($extraValue)) { + // Put both parameters in one new array by default + $args = array($value, $extraValue); + + // If we have an array simply use it and pre-extend it with our value + if (is_array($extraValue)) { + // Make the new args array + $args = array_merge(array($value), $extraValue); + } // END - if + + // Call the multi-parameter call-back + $ret = call_user_func_array($filterFunction, $args); + } else { + // One parameter call + $ret = call_user_func($filterFunction, $value); + } + } // END - if + + // Return the value + return $ret; +} +// Check if given FQFN is a readable file +function FILE_READABLE($fqfn) { + // Check all... + return ((file_exists($fqfn)) && (is_file($fqfn)) && (is_readable($fqfn))); +} +// Converts timestamp selections into a timestamp +function CONVERT_SELECTIONS_TO_TIMESTAMP(&$POST, &$DATA, &$id, &$skip) { + // Init test variable + $TEST2 = ""; + + // Get last three chars + $TEST = substr($id, -3); + + // Improved way of checking! :-) + if (in_array($TEST, array("_ye", "_mo", "_we", "_da", "_ho", "_mi", "_se"))) { + // Found a multi-selection for timings? + $TEST = substr($id, 0, -3); + if ((isset($POST[$TEST."_ye"])) && (isset($POST[$TEST."_mo"])) && (isset($POST[$TEST."_we"])) && (isset($POST[$TEST."_da"])) && (isset($POST[$TEST."_ho"])) && (isset($POST[$TEST."_mi"])) && (isset($POST[$TEST."_se"])) && ($TEST != $TEST2)) { + // Generate timestamp + $POST[$TEST] = CREATE_TIMESTAMP_FROM_SELECTIONS($TEST, $POST); + $DATA[] = "$TEST='".$POST[$TEST]."'"; + + // Remove data from array + foreach (array("ye", "mo", "we", "da", "ho", "mi", "se") as $rem) { + unset($POST[$TEST."_".$rem]); + } // END - foreach + + // Skip adding + unset($id); $skip = true; $TEST2 = $TEST; + } // END - if + } else { + // Process this entry + $skip = false; $TEST2 = ""; + } +} // ////////////////////////////////////////////////// // // @@ -2274,7 +2473,7 @@ if (!function_exists('html_entity_decode')) { $trans_tbl = array_flip($trans_tbl); return strtr($string, $trans_tbl); } -} +} // END - if // ?>