]> git.mxchange.org Git - mailer.git/blobdiff - inc/functions.php
bigintval() now casts to double
[mailer.git] / inc / functions.php
index de2c08a4a07deeb568e4db45614a6c7dfda0a9a3..7857554a5ce86d1bb13e3072cc9062fc5f410941 100644 (file)
@@ -597,7 +597,7 @@ function FRAMETESTER($URL) {
 }
 //
 function SELECTION_COUNT($array) {
-       $ret = "0";
+       $ret = 0;
        if (is_array($array)) {
                foreach ($array as $key => $sel) {
                        if (!empty($sel)) $ret++;
@@ -860,6 +860,7 @@ function LOAD_EMAIL_TEMPLATE($template, $content="", $UID="0") {
        } // END - if
 
        // Now does the final template exists?
+       $newContent = "";
        if (FILE_READABLE($file)) {
                // The local file does exists so we load it. :)
                $tmpl_file = @implode("", @file($file));
@@ -887,6 +888,12 @@ function LOAD_EMAIL_TEMPLATE($template, $content="", $UID="0") {
                $newContent = NO_TEMPLATE_SUPPLIED;
        }
 
+       // Is there some content?
+       if (empty($newContent)) {
+               // Compiling failed
+               $newContent = "Compiler error for template {$template}!";
+       } // END - if
+
        // Return compiled content
        return COMPILE_CODE($newContent);
 }
@@ -989,7 +996,7 @@ function COMPILE_CODE($code, $simple = false, $constants = true, $full = true) {
                        } // END - if
 
                        // Take all string elements
-                       if (("".bigintval($matches[4][$key])."" != $matches[4][$key]) && (!isset($matchesFound[$key."_".$matches[4][$key]]))) {
+                       if ((is_string($matches[4][$key])) && (!isset($matchesFound[$key."_".$matches[4][$key]]))) {
                                // Replace it in the code
                                $newMatch = str_replace("[".$matches[4][$key]."]", "['".$matches[4][$key]."']", $match);
                                $code = str_replace($match, $newMatch, $code);
@@ -1021,41 +1028,34 @@ function COMPILE_CODE($code, $simple = false, $constants = true, $full = true) {
 function array_pk_sort(&$array, $a_sort, $primary_key = 0, $order = -1, $nums = false)
 {
        $dummy = $array;
-       while ($primary_key < count($a_sort))
-       {
-               foreach ($dummy[$a_sort[$primary_key]] as $key => $value)
-               {
-                       foreach ($dummy[$a_sort[$primary_key]] as $key2 => $value2)
-                       {
+       while ($primary_key < count($a_sort)) {
+               foreach ($dummy[$a_sort[$primary_key]] as $key => $value) {
+                       foreach ($dummy[$a_sort[$primary_key]] as $key2 => $value2) {
                                $match = false;
-                               if (!$nums)
-                               {
+                               if (!$nums) {
                                        // Sort byte-by-byte (also numbers will be interpreted as chars! E.g.: "9" > "10")
                                        if (($key != $key2) && (strcmp(strtolower($dummy[$a_sort[$primary_key]][$key]), strtolower($dummy[$a_sort[$primary_key]][$key2])) == $order)) $match = true;
-                               }
-                                elseif ($key != $key2)
-                               {
+                               } elseif ($key != $key2) {
                                        // Sort numbers (E.g.: 9 < 10)
                                        if (($dummy[$a_sort[$primary_key]][$key] < $dummy[$a_sort[$primary_key]][$key2]) && ($order == -1)) $match = true;
                                        if (($dummy[$a_sort[$primary_key]][$key] > $dummy[$a_sort[$primary_key]][$key2]) && ($order == 1))  $match = true;
                                }
-                               if ($match)
-                               {
+
+                               if ($match) {
                                        // We have found two different values, so let's sort whole array
-                                       foreach ($dummy as $sort_key => $sort_val)
-                                       {
+                                       foreach ($dummy as $sort_key => $sort_val) {
                                                $t                       = $dummy[$sort_key][$key];
                                                $dummy[$sort_key][$key]  = $dummy[$sort_key][$key2];
                                                $dummy[$sort_key][$key2] = $t;
                                                unset($t);
-                                       }
-                               }
-                       }
-               }
+                                       } // END - foreach
+                               } // END - if
+                       } // END - foreach
+               } // END - foreach
 
                // Count one up
                $primary_key++;
-       }
+       } // END - while
 
        // Write back sorted array
        $array = $dummy;
@@ -1083,7 +1083,7 @@ function ADD_SELECTION($type, $DEFAULT, $prefix="", $id="0")
        case "day": // Day
                for ($idx = 1; $idx < 32; $idx++)
                {
-                       $OUT .= "      <OPTION value=\"".$idx."\"";
+                       $OUT .= "<OPTION value=\"".$idx."\"";
                        if ($DEFAULT == $idx) $OUT .= " selected=\"selected\"";
                        $OUT .= ">".$idx."</OPTION>\n";
                }
@@ -1092,7 +1092,7 @@ function ADD_SELECTION($type, $DEFAULT, $prefix="", $id="0")
        case "month": // Month
                foreach ($MONTH_DESCR as $month => $descr)
                {
-                       $OUT .= "      <OPTION value=\"".$month."\"";
+                       $OUT .= "<OPTION value=\"".$month."\"";
                        if ($DEFAULT == $month) $OUT .= " selected=\"selected\"";
                        $OUT .= ">".$descr."</OPTION>\n";
                }
@@ -1107,7 +1107,7 @@ function ADD_SELECTION($type, $DEFAULT, $prefix="", $id="0")
                {
                        for ($idx = $YEAR; $idx < ($YEAR + 11); $idx++)
                        {
-                               $OUT .= "      <OPTION value=\"".$idx."\"";
+                               $OUT .= "<OPTION value=\"".$idx."\"";
                                if ($DEFAULT == $idx) $OUT .= " selected=\"selected\"";
                                $OUT .= ">".$idx."</OPTION>\n";
                        }
@@ -1117,17 +1117,17 @@ function ADD_SELECTION($type, $DEFAULT, $prefix="", $id="0")
                        // Current year minus 1
                        for ($idx = 2003; $idx <= ($YEAR + 1); $idx++)
                        {
-                               $OUT .= "      <OPTION value=\"".$idx."\">".$idx."</OPTION>\n";
+                               $OUT .= "<OPTION value=\"".$idx."\">".$idx."</OPTION>\n";
                        }
                }
                 else
                {
                        // Get current year and subtract 16 (for erotic content)
-                       $OUT .= "      <OPTION value=\"1929\">&lt;1930</OPTION>\n";
+                       $OUT .= "<OPTION value=\"1929\">&lt;1930</OPTION>\n";
                        $YEAR = date('Y', time()) - 16;
                        for ($idx = 1930; $idx <= $YEAR; $idx++)
                        {
-                               $OUT .= "      <OPTION value=\"".$idx."\"";
+                               $OUT .= "<OPTION value=\"".$idx."\"";
                                if ($DEFAULT == $idx) $OUT .= " selected=\"selected\"";
                                $OUT .= ">".$idx."</OPTION>\n";
                        }
@@ -1136,30 +1136,27 @@ function ADD_SELECTION($type, $DEFAULT, $prefix="", $id="0")
 
        case "sec":
        case "min":
-               for ($idx = 0; $idx < 60; $idx+=5)
-               {
+               for ($idx = 0; $idx < 60; $idx+=5) {
                        if (strlen($idx) == 1) $idx = "0".$idx;
-                       $OUT .= "      <OPTION value=\"".$idx."\"";
+                       $OUT .= "<OPTION value=\"".$idx."\"";
                        if ($DEFAULT == $idx) $OUT .= " selected=\"selected\"";
                        $OUT .= ">".$idx."</OPTION>\n";
                }
                break;
 
        case "hour":
-               for ($idx = 0; $idx < 24; $idx++)
-               {
+               for ($idx = 0; $idx < 24; $idx++) {
                        if (strlen($idx) == 1) $idx = "0".$idx;
-                       $OUT .= "      <OPTION value=\"".$idx."\"";
+                       $OUT .= "<OPTION value=\"".$idx."\"";
                        if ($DEFAULT == $idx) $OUT .= " selected=\"selected\"";
                        $OUT .= ">".$idx."</OPTION>\n";
                }
                break;
 
        case "yn":
-               $OUT .= "      <OPTION value=\"Y\"";
+               $OUT .= "<OPTION value=\"Y\"";
                if ($DEFAULT == "Y") $OUT .= " selected=\"selected\"";
-               $OUT .= ">".YES."</OPTION>
-                       <OPTION value=\"N\"";
+               $OUT .= ">".YES."</OPTION>\n<OPTION value=\"N\"";
                if ($DEFAULT == "N") $OUT .= " selected=\"selected\"";
                $OUT .= ">".NO."</OPTION>\n";
                break;
@@ -1195,7 +1192,7 @@ function GEN_RANDOM_CODE($length, $code, $uid, $DATA="") {
        $keys   = SITE_KEY.":".DATE_KEY;
        if (isset($_CONFIG['secret_key']))  $keys .= ":".$_CONFIG['secret_key'];
        if (isset($_CONFIG['file_hash']))   $keys .= ":".$_CONFIG['file_hash'];
-       $keys .= ":".date("d-m-Y (l-F-T)", $_CONFIG['patch_ctime']);
+       $keys .= ":".date("d-m-Y (l-F-T)", bigintval($_CONFIG['patch_ctime']));
        if (isset($_CONFIG['master_salt'])) $keys .= ":".$_CONFIG['master_salt'];
 
        // Build string from misc data
@@ -1241,6 +1238,15 @@ function bigintval($num, $castValue = true) {
        // Filter all numbers out
        $ret = preg_replace("/[^0123456789]/", "", $num);
 
+       // Shall we cast?
+       if ($castValue) $ret = (double)$ret;
+
+       // Has the whole value changed?
+       if ("".$ret."" != "".$num."") {
+               // Log the values
+               DEBUG_LOG(__FUNCTION__.": num={$num},ret={$ret}");
+       } // END - if
+
        // Return result
        return $ret;
 }
@@ -1295,17 +1301,20 @@ function GENERATE_IMAGE($img_code, $header=true) {
        // Remove image from memory
        imagedestroy($image);
 }
-function CREATE_TIME_SELECTIONS($timestamp, $prefix="", $display="", $align="center", $return_array=false)
-{
+// Create selection box or array of splitted timestamp
+function CREATE_TIME_SELECTIONS($timestamp, $prefix="", $display="", $align="center", $return_array=false) {
        // Calculate 15-seconds timestamp (15-seconds-steps shall be fine ;) )
        $timestamp = round($timestamp / 15) * 15;
+
        // Do we have a leap year?
        $SWITCH = 0;
        $TEST = date('Y', time()) / 4;
        $M1 = date("m", time());
        $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 = ONE_DAY;
+
        // First of all years...
        $Y = abs(floor($timestamp / (31536000 + $SWITCH)));
        // Next months...
@@ -1320,11 +1329,11 @@ function CREATE_TIME_SELECTIONS($timestamp, $prefix="", $display="", $align="cen
        $m = abs(floor($timestamp / 60 - $Y * (365 + $SWITCH / ONE_DAY) * 24 * 60 - ($M / 12 * (365 + $SWITCH / ONE_DAY) * 24 * 60) - $W * 7 * 24 * 60 - $D * 24 * 60 - $h * 60));
        // And at last seconds...
        $s = abs(floor($timestamp - $Y * (365 + $SWITCH / ONE_DAY) * 24 * 3600 - ($M / 12 * (365 + $SWITCH / ONE_DAY) * 24 * 3600) - $W * 7 * 24 * 3600 - $D * 24 * 3600 - $h * 3600 - $m * 60));
+
        //
        // Now we convert them in seconds...
        //
-       if ($return_array)
-       {
+       if ($return_array) {
                // Just put all data in an array for later use
                $OUT = array(
                        'YEARS'   => $Y,
@@ -1335,61 +1344,57 @@ function CREATE_TIME_SELECTIONS($timestamp, $prefix="", $display="", $align="cen
                        'MINUTES' => $m,
                        'SECONDS' => $s
                );
-       }
-        else
-       {
+       } else {
                // Generate table
                $OUT  = "<DIV align=\"".$align."\">\n";
                $OUT .= "<TABLE border=\"0\" cellspacing=\"0\" cellpadding=\"0\" class=\"admin_table dashed\">\n";
                $OUT .= "<TR>\n";
-               if (ereg('Y', $display) || (empty($display)))
-               {
+
+               if (ereg('Y', $display) || (empty($display))) {
                        $OUT .= "  <TD align=\"center\" class=\"admin_title bottom\"><STRONG class=\"tiny\">"._YEARS."</STRONG></TD>\n";
                }
-               if (ereg("M", $display) || (empty($display)))
-               {
+
+               if (ereg("M", $display) || (empty($display))) {
                        $OUT .= "  <TD align=\"center\" class=\"admin_title bottom\"><STRONG class=\"tiny\">"._MONTHS."</STRONG></TD>\n";
                }
-               if (ereg("W", $display) || (empty($display)))
-               {
+
+               if (ereg("W", $display) || (empty($display))) {
                        $OUT .= "  <TD align=\"center\" class=\"admin_title bottom\"><STRONG class=\"tiny\">"._WEEKS."</STRONG></TD>\n";
                }
-               if (ereg("D", $display) || (empty($display)))
-               {
+
+               if (ereg("D", $display) || (empty($display))) {
                        $OUT .= "  <TD align=\"center\" class=\"admin_title bottom\"><STRONG class=\"tiny\">"._DAYS."</STRONG></TD>\n";
                }
-               if (ereg("h", $display) || (empty($display)))
-               {
+
+               if (ereg("h", $display) || (empty($display))) {
                        $OUT .= "  <TD align=\"center\" class=\"admin_title bottom\"><STRONG class=\"tiny\">"._HOURS."</STRONG></TD>\n";
                }
-               if (ereg("m", $display) || (empty($display)))
-               {
+
+               if (ereg("m", $display) || (empty($display))) {
                        $OUT .= "  <TD align=\"center\" class=\"admin_title bottom\"><STRONG class=\"tiny\">"._MINUTES."</STRONG></TD>\n";
                }
-               if (ereg("s", $display) || (empty($display)))
-               {
+
+               if (ereg("s", $display) || (empty($display))) {
                        $OUT .= "  <TD align=\"center\" class=\"admin_title bottom\"><STRONG class=\"tiny\">"._SECONDS."</STRONG></TD>\n";
                }
+
                $OUT .= "</TR>\n";
                $OUT .= "<TR>\n";
-               if (ereg('Y', $display) || (empty($display)))
-               {
+
+               if (ereg('Y', $display) || (empty($display))) {
                        // Generate year selection
                        $OUT .= "  <TD align=\"center\"><SELECT class=\"mini_select\" name=\"".$prefix."_ye\" size=\"1\">\n";
-                       for ($idx = 0; $idx <= 10; $idx++)
-                       {
+                       for ($idx = 0; $idx <= 10; $idx++) {
                                $OUT .= "    <OPTION class=\"mini_select\" value=\"".$idx."\"";
                                if ($idx == $Y) $OUT .= " selected default";
                                $OUT .= ">".$idx."</OPTION>\n";
                        }
                        $OUT .= "  </SELECT></TD>\n";
-               }
-                else
-               {
+               } else {
                        $OUT .= "<INPUT type=\"hidden\" name=\"".$prefix."_ye\" value=\"0\">\n";
                }
-               if (ereg("M", $display) || (empty($display)))
-               {
+
+               if (ereg("M", $display) || (empty($display))) {
                        // Generate month selection
                        $OUT .= "  <TD align=\"center\"><SELECT class=\"mini_select\" name=\"".$prefix."_mo\" size=\"1\">\n";
                        for ($idx = 0; $idx <= 11; $idx++)
@@ -1399,89 +1404,72 @@ function CREATE_TIME_SELECTIONS($timestamp, $prefix="", $display="", $align="cen
                                $OUT .= ">".$idx."</OPTION>\n";
                        }
                        $OUT .= "  </SELECT></TD>\n";
-               }
-                else
-               {
+               } else {
                        $OUT .= "<INPUT type=\"hidden\" name=\"".$prefix."_mo\" value=\"0\">\n";
                }
-               if (ereg("W", $display) || (empty($display)))
-               {
+
+               if (ereg("W", $display) || (empty($display))) {
                        // Generate week selection
                        $OUT .= "  <TD align=\"center\"><SELECT class=\"mini_select\" name=\"".$prefix."_we\" size=\"1\">\n";
-                       for ($idx = 0; $idx <= 4; $idx++)
-                       {
+                       for ($idx = 0; $idx <= 4; $idx++) {
                                $OUT .= "  <OPTION class=\"mini_select\" value=\"".$idx."\"";
                                if ($idx == $W) $OUT .= " selected default";
                                $OUT .= ">".$idx."</OPTION>\n";
                        }
                        $OUT .= "  </SELECT></TD>\n";
-               }
-                else
-               {
+               } else {
                        $OUT .= "<INPUT type=\"hidden\" name=\"".$prefix."_we\" value=\"0\">\n";
                }
-               if (ereg("D", $display) || (empty($display)))
-               {
+
+               if (ereg("D", $display) || (empty($display))) {
                        // Generate day selection
                        $OUT .= "  <TD align=\"center\"><SELECT class=\"mini_select\" name=\"".$prefix."_da\" size=\"1\">\n";
-                       for ($idx = 0; $idx <= 31; $idx++)
-                       {
+                       for ($idx = 0; $idx <= 31; $idx++) {
                                $OUT .= "  <OPTION class=\"mini_select\" value=\"".$idx."\"";
                                if ($idx == $D) $OUT .= " selected default";
                                $OUT .= ">".$idx."</OPTION>\n";
                        }
                        $OUT .= "  </SELECT></TD>\n";
-               }
-                else
-               {
+               } else {
                        $OUT .= "<INPUT type=\"hidden\" name=\"".$prefix."_da\" value=\"0\">\n";
                }
-               if (ereg("h", $display) || (empty($display)))
-               {
+
+               if (ereg("h", $display) || (empty($display))) {
                        // Generate hour selection
                        $OUT .= "  <TD align=\"center\"><SELECT class=\"mini_select\" name=\"".$prefix."_ho\" size=\"1\">\n";
-                       for ($idx = 0; $idx <= 23; $idx++)
-                       {
+                       for ($idx = 0; $idx <= 23; $idx++)      {
                                $OUT .= "  <OPTION class=\"mini_select\" value=\"".$idx."\"";
                                if ($idx == $h) $OUT .= " selected default";
                                $OUT .= ">".$idx."</OPTION>\n";
                        }
                        $OUT .= "  </SELECT></TD>\n";
-               }
-                else
-               {
+               } else {
                        $OUT .= "<INPUT type=\"hidden\" name=\"".$prefix."_ho\" value=\"0\">\n";
                }
-               if (ereg("m", $display) || (empty($display)))
-               {
+
+               if (ereg("m", $display) || (empty($display))) {
                        // Generate minute selection
                        $OUT .= "  <TD align=\"center\"><SELECT class=\"mini_select\" name=\"".$prefix."_mi\" size=\"1\">\n";
-                       for ($idx = 0; $idx <= 59; $idx++)
-                       {
+                       for ($idx = 0; $idx <= 59; $idx++) {
                                $OUT .= "  <OPTION class=\"mini_select\" value=\"".$idx."\"";
                                if ($idx == $m) $OUT .= " selected default";
                                $OUT .= ">".$idx."</OPTION>\n";
                        }
                        $OUT .= "  </SELECT></TD>\n";
-               }
-                else
-               {
+               } else {
                        $OUT .= "<INPUT type=\"hidden\" name=\"".$prefix."_mi\" value=\"0\">\n";
                }
-               if (ereg("s", $display) || (empty($display)))
-               {
+
+               if (ereg("s", $display) || (empty($display))) {
                        // Generate second selection
                        $OUT .= "  <TD align=\"center\"><SELECT class=\"mini_select\" name=\"".$prefix."_se\" size=\"1\">\n";
-                       for ($idx = 0; $idx <= 45; $idx+=15)
-                       {
+                       for ($idx = 0; $idx <= 45; $idx += 15) {
                                $OUT .= "  <OPTION class=\"mini_select\" value=\"".$idx."\"";
                                if ($idx == $s) $OUT .= " selected default";
                                $OUT .= ">".$idx."</OPTION>\n";
                        }
                        $OUT .= "  </SELECT></TD>\n";
-               }
-                else
-               {
+               } else {
                        $OUT .= "<INPUT type=\"hidden\" name=\"".$prefix."_se\" value=\"0\">\n";
                }
                $OUT .= "</TR>\n";
@@ -1493,7 +1481,8 @@ function CREATE_TIME_SELECTIONS($timestamp, $prefix="", $display="", $align="cen
 }
 //
 function CREATE_TIMESTAMP_FROM_SELECTIONS($prefix, $POST) {
-       $ret = "0";
+       $ret = 0;
+
        // Do we have a leap year?
        $SWITCH = 0;
        $TEST = date('Y', time()) / 4;
@@ -1964,7 +1953,7 @@ function generateHash ($plainText, $salt = "") {
        // Do we miss an arry element here?
        if (!isset($_CONFIG['file_hash'])) {
                // Stop here
-               print(__FUNCTION__.":<pre>");
+               print("Missing file_hash in ".__FUNCTION__.". Backtrace:<pre>");
                debug_print_backtrace();
                die("</pre>");
        } // END - if
@@ -1975,7 +1964,7 @@ function generateHash ($plainText, $salt = "") {
                $server = $_SERVER['PHP_SELF'].":".getenv('HTTP_USER_AGENT').":".getenv('SERVER_SOFTWARE').":".getenv('REMOTE_ADDR').":".":".filemtime(PATH."inc/databases.php");
 
                // Build key string
-               $keys   = SITE_KEY.":".DATE_KEY.":".$_CONFIG['secret_key'].":".$_CONFIG['file_hash'].":".date("d-m-Y (l-F-T)", $_CONFIG['patch_ctime']).":".$_CONFIG['master_salt'];
+               $keys   = SITE_KEY.":".DATE_KEY.":".$_CONFIG['secret_key'].":".$_CONFIG['file_hash'].":".date("d-m-Y (l-F-T)", bigintval($_CONFIG['patch_ctime'])).":".$_CONFIG['master_salt'];
 
                // Additional data
                $data = $plainText.":".uniqid(rand(), true).":".time();
@@ -2358,7 +2347,7 @@ function GET_DIR_AS_ARRAY ($baseDir, $prefix) {
 }
 // Load more reset scripts
 function RESET_ADD_INCLUDES () {
-       global $_CONFIG, $INC_POOL;
+       global $_CONFIG;
 
        // Is the reset set or old sql_patches?
        if ((!isBooleanConstantAndTrue('__DAILY_RESET')) || (GET_EXT_VERSION("sql_patches") < "0.4.5")) {
@@ -2367,7 +2356,7 @@ function RESET_ADD_INCLUDES () {
        } // END - if
 
        // Get more daily reset scripts
-       $INC_POOL = array_merge($INC_POOL, GET_DIR_AS_ARRAY(PATH."inc/reset/", "reset_"));
+       $INC_POOL = GET_DIR_AS_ARRAY(PATH."inc/reset/", "reset_");
 
        // Create current week mark
        $currWeek = date("W", time());
@@ -2392,6 +2381,9 @@ function RESET_ADD_INCLUDES () {
                // Update config
                UPDATE_CONFIG("last_month", $currMonth);
        } // END - if
+
+       // Return array
+       return $INC_POOL;
 }
 // Handle extra values
 function HANDLE_EXTRA_VALUES ($filterFunction, $value, $extraValue) {