]> git.mxchange.org Git - mailer.git/blobdiff - inc/functions.php
More SQL rewrites, TODO: Put all table and column names in backticks (`)
[mailer.git] / inc / functions.php
index 3f5f434e2486fc8551b0b79fdde7d04d5945e099..de061a52f20c3308447babed89684e1272a9dd0a 100644 (file)
@@ -243,7 +243,7 @@ function LOAD_TEMPLATE($template, $return=false, $content=array()) {
        // @DEPRECATED Try to rewrite the if() condition
        if ($template == "member_support_form") {
                // Support request of a member
-               $result = SQL_QUERY_ESC("SELECT userid, gender, surname, family, email FROM "._MYSQL_PREFIX."_user_data WHERE userid=%s LIMIT 1",
+               $result = SQL_QUERY_ESC("SELECT userid, gender, surname, family, email FROM `"._MYSQL_PREFIX."_user_data` WHERE userid=%s LIMIT 1",
                        array($GLOBALS['userid']), __FILE__, __LINE__);
 
                // Is content an array?
@@ -397,7 +397,7 @@ function SEND_EMAIL($TO, $SUBJECT, $MSG, $HTML = "N", $FROM = "") {
                        return;
                } else {
                        // Load email address
-                       $result_email = SQL_QUERY_ESC("SELECT email FROM "._MYSQL_PREFIX."_user_data WHERE userid=%s LIMIT 1", array(bigintval($TO)), __FILE__, __LINE__);
+                       $result_email = SQL_QUERY_ESC("SELECT email FROM `"._MYSQL_PREFIX."_user_data` WHERE userid=%s LIMIT 1", array(bigintval($TO)), __FILE__, __LINE__);
                        //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):numRows=".SQL_NUMROWS($result_email)."<br />\n";
 
                        // Does the user exist?
@@ -603,23 +603,17 @@ function TRANSLATE_COMMA ($dotted, $cut=true, $max=0) {
        if ($max > 0) $maxComma = $max;
 
        // Cut zeros off?
-       if ($cut) {
+       if (($cut) && ($max == 0)) {
                // 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 display only one
-                               $maxComma = 1;
-                       } // END - if
-               } else {
+               if (count($com) < 2) {
                        // Don't display commatas even if there are none... ;-)
                        $maxComma = 0;
                }
        } // END - if
 
        // Debug log
-       //DEBUG_LOG(__FUNCTION__, __LINE__, "dotted={$dotted},maxComma={$maxComma}");
+       //* DEBUG: */ DEBUG_LOG(__FUNCTION__, __LINE__, "dotted={$dotted},maxComma={$maxComma}");
 
        // Translate it now
        switch (GET_LANGUAGE()) {
@@ -712,19 +706,22 @@ function TRANSLATE_STATUS($status) {
 }
 //
 function GET_LANGUAGE() {
-       if (!empty($_GET['mx_lang'])) {
-               // Accept only first 2 chars
-               $lang = substr($_GET['mx_lang'], 0, 2);
-       } else {
-               // Do nothing
-               $lang = "";
-       }
+       global $cacheArray;
 
        // Set default return value to default language from config
        $ret = DEFAULT_LANG;
 
-       // Check GET variable and cookie
-       if (!empty($lang)) {
+       // Init variable
+       $lang = "";
+
+       // Is the variable set
+       if (!empty($_GET['mx_lang'])) {
+               // Accept only first 2 chars
+               $lang = substr($_GET['mx_lang'], 0, 2);
+       } elseif (isset($cacheArray['language'])) {
+               // Use cached
+               $ret = $cacheArray['language'];
+       } elseif (!empty($lang)) {
                // Check if main language file does exist
                if (FILE_READABLE(PATH."inc/language/".$lang.".php")) {
                        // Okay found, so let's update cookies
@@ -737,6 +734,11 @@ function GET_LANGUAGE() {
                // Fixes a warning before the session has the mx_lang constant
                if (empty($ret)) $ret = DEFAULT_LANG;
        }
+
+       // Cache entry
+       $cacheArray['language'] = $ret;
+
+       // Return value
        return $ret;
 }
 //
@@ -805,12 +807,12 @@ function LOAD_EMAIL_TEMPLATE($template, $content=array(), $UID="0") {
                if (EXT_IS_ACTIVE("nickname")) {
                        //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):NICKNAME!<br />\n";
                        // Load nickname
-                       $result = SQL_QUERY_ESC("SELECT surname, family, gender, email, nickname FROM "._MYSQL_PREFIX."_user_data WHERE userid=%s LIMIT 1",
+                       $result = SQL_QUERY_ESC("SELECT surname, family, gender, email, nickname FROM `"._MYSQL_PREFIX."_user_data` WHERE userid=%s LIMIT 1",
                                array(bigintval($UID)), __FILE__, __LINE__);
                } else {
                        //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):NO-NICK!<br />\n";
                        /// Load normal data
-                       $result = SQL_QUERY_ESC("SELECT surname, family, gender, email FROM "._MYSQL_PREFIX."_user_data WHERE userid=%s LIMIT 1",
+                       $result = SQL_QUERY_ESC("SELECT surname, family, gender, email FROM `"._MYSQL_PREFIX."_user_data` WHERE userid=%s LIMIT 1",
                                array(bigintval($UID)), __FILE__, __LINE__);
                }
 
@@ -921,15 +923,15 @@ function MAKE_TIME($H, $M, $S, $stamp) {
 function LOAD_URL($URL, $addUrlData=true) {
        global $CSS, $_CONFIG, $footer;
 
+       // Compile out URI codes
+       $URL = COMPILE_CODE($URL);
+
        // Check if http(s):// is there
        if ((substr($URL, 0, 7) != "http://") && (substr($URL, 0, 8) != "https://")) {
                // Make all URLs full-qualified
                $URL = URL."/".$URL;
        }
 
-       // Compile out URI codes
-       $URL = COMPILE_CODE($URL);
-
        // Get output buffer
        $OUTPUT = ob_get_contents();
 
@@ -1100,76 +1102,86 @@ function array_pk_sort(&$array, $a_sort, $primary_key = 0, $order = -1, $nums =
        $array = $dummy;
 }
 //
-function ADD_SELECTION($type, $DEFAULT, $prefix="", $id="0")
-{
-       global $MONTH_DESCR; $OUT = "";
-       if ($type == "yn")
-       {
+function ADD_SELECTION($type, $DEFAULT, $prefix="", $id="0") {
+       global $MONTH_DESCR, $_CONFIG;
+       $OUT = "";
+
+       if ($type == "yn") {
                // This is a yes/no selection only!
                if ($id > 0) $prefix .= "[".$id."]";
                $OUT .= "    <SELECT name=\"".$prefix."\" class=\"register_select\" size=\"1\">\n";
-       }
-        else
-       {
+       } else {
                // Begin with regular selection box here
                if (!empty($prefix)) $prefix .= "_";
                $type2 = $type;
                if ($id > 0) $type2 .= "[".$id."]";
                $OUT .= "    <SELECT name=\"".strtolower($prefix.$type2)."\" class=\"register_select\" size=\"1\">\n";
        }
-       switch ($type)
-       {
+
+       switch ($type) {
        case "day": // Day
-               for ($idx = 1; $idx < 32; $idx++)
-               {
+               for ($idx = 1; $idx < 32; $idx++) {
                        $OUT .= "<OPTION value=\"".$idx."\"";
                        if ($DEFAULT == $idx) $OUT .= " selected=\"selected\"";
                        $OUT .= ">".$idx."</OPTION>\n";
-               }
+               } // END - for
                break;
 
        case "month": // Month
-               foreach ($MONTH_DESCR as $month => $descr)
-               {
+               foreach ($MONTH_DESCR as $month => $descr) {
                        $OUT .= "<OPTION value=\"".$month."\"";
                        if ($DEFAULT == $month) $OUT .= " selected=\"selected\"";
                        $OUT .= ">".$descr."</OPTION>\n";
-               }
+               } // END - for
                break;
 
        case "year": // Year
                // Get current year
                $YEAR = date('Y', time());
 
+               // Use configured min age or fixed?
+               if (GET_EXT_VERSION("other") >= "0.2.1") {
+                       // Configured
+                       $startYear = $YEAR - $_CONFIG['min_age'];
+               } else {
+                       // Fixed 16 years
+                       $startYear = $YEAR - 16;
+               }
+
+               // Calculate earliest year (100 years old people can still enter Internet???)
+               $minYear = $YEAR - 100;
+
                // Check if the default value is larger than minimum and bigger than actual year
-               if (($DEFAULT > 1930) && ($DEFAULT >= $YEAR))
-               {
-                       for ($idx = $YEAR; $idx < ($YEAR + 11); $idx++)
-                       {
+               if (($DEFAULT > $minYear) && ($DEFAULT >= $YEAR)) {
+                       for ($idx = $YEAR; $idx < ($YEAR + 11); $idx++) {
                                $OUT .= "<OPTION value=\"".$idx."\"";
                                if ($DEFAULT == $idx) $OUT .= " selected=\"selected\"";
                                $OUT .= ">".$idx."</OPTION>\n";
-                       }
-               }
-                elseif ($DEFAULT == -1)
-               {
+                       } // END - for
+               } elseif ($DEFAULT == -1) {
                        // Current year minus 1
-                       for ($idx = 2003; $idx <= ($YEAR + 1); $idx++)
+                       for ($idx = $startYear; $idx <= ($YEAR + 1); $idx++)
                        {
                                $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";
-                       $YEAR = date('Y', time()) - 16;
-                       for ($idx = 1930; $idx <= $YEAR; $idx++)
-                       {
+               } else {
+                       // Get current year and subtract the configured minimum age
+                       $OUT .= "<OPTION value=\"".($minYear - 1)."\">&lt;".$minYear."</OPTION>\n";
+                       // Calculate earliest year depending on extension version
+                       if (GET_EXT_VERSION("other") >= "0.2.1") {
+                               // Use configured minimum age
+                               $YEAR = date('Y', time()) - $_CONFIG['min_age'];
+                       } else {
+                               // Use fixed 16 years age
+                               $YEAR = date('Y', time()) - 16;
+                       }
+
+                       // Construct year selection list
+                       for ($idx = $minYear; $idx <= $YEAR; $idx++) {
                                $OUT .= "<OPTION value=\"".$idx."\"";
                                if ($DEFAULT == $idx) $OUT .= " selected=\"selected\"";
                                $OUT .= ">".$idx."</OPTION>\n";
-                       }
+                       } // END - for
                }
                break;
 
@@ -1180,7 +1192,7 @@ function ADD_SELECTION($type, $DEFAULT, $prefix="", $id="0")
                        $OUT .= "<OPTION value=\"".$idx."\"";
                        if ($DEFAULT == $idx) $OUT .= " selected=\"selected\"";
                        $OUT .= ">".$idx."</OPTION>\n";
-               }
+               } // END - for
                break;
 
        case "hour":
@@ -1189,7 +1201,7 @@ function ADD_SELECTION($type, $DEFAULT, $prefix="", $id="0")
                        $OUT .= "<OPTION value=\"".$idx."\"";
                        if ($DEFAULT == $idx) $OUT .= " selected=\"selected\"";
                        $OUT .= ">".$idx."</OPTION>\n";
-               }
+               } // END - for
                break;
 
        case "yn":
@@ -1284,6 +1296,9 @@ function bigintval($num, $castValue = true) {
        // Has the whole value changed?
        if ("".$ret."" != "".$num."") {
                // Log the values
+               print("<pre>");
+               debug_print_backtrace();
+               die("</pre>");
                DEBUG_LOG(__FUNCTION__, __LINE__, " num={$num},ret={$ret}");
        } // END - if
 
@@ -1342,38 +1357,46 @@ function GENERATE_IMAGE($img_code, $header=true) {
        imagedestroy($image);
 }
 // Create selection box or array of splitted timestamp
-function CREATE_TIME_SELECTIONS($timestamp, $prefix="", $display="", $align="center", $return_array=false) {
+function CREATE_TIME_SELECTIONS ($timestamp, $prefix="", $display="", $align="center", $return_array=false) {
        global $_CONFIG;
 
        // Calculate 2-seconds timestamp
        $stamp = round($timestamp);
+       //* DEBUG: */ print("*".$stamp."/".$timestamp."*<br />");
 
        // Do we have a leap year?
        $SWITCH = 0;
        $TEST = date('Y', time()) / 4;
        $M1 = date("m", time());
-       $M2 = date("m", (time() + $stamp));
+       $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 = $_CONFIG['one_day'];
 
        // First of all years...
-       $Y = abs(floor($stamp / (31536000 + $SWITCH)));
+       $Y = abs(floor($timestamp / (31536000 + $SWITCH)));
+       //* DEBUG: */ print("Y={$Y}<br />\n");
        // Next months...
-       $M = abs(floor($stamp / 2628000 - $Y * 12));
+       $M = abs(floor($timestamp / 2628000 - $Y * 12));
+       //* DEBUG: */ print("M={$M}<br />\n");
        // Next weeks
-       $W = abs(floor($stamp / 604800 - $Y * ((365 + $SWITCH / $_CONFIG['one_day']) / 7) - ($M / 12 * (365 + $SWITCH / $_CONFIG['one_day']) / 7)));
+       $W = abs(floor($timestamp / 604800 - $Y * ((365 + $SWITCH / $_CONFIG['one_day']) / 7) - ($M / 12 * (365 + $SWITCH / $_CONFIG['one_day']) / 7)));
+       //* DEBUG: */ print("W={$W}<br />\n");
        // Next days...
-       $D = abs(floor($stamp / 86400 - $Y * (365 + $SWITCH / $_CONFIG['one_day']) - ($M / 12 * (365 + $SWITCH / $_CONFIG['one_day'])) - $W * 7));
+       $D = abs(floor($timestamp / 86400 - $Y * (365 + $SWITCH / $_CONFIG['one_day']) - ($M / 12 * (365 + $SWITCH / $_CONFIG['one_day'])) - $W * 7));
+       //* DEBUG: */ print("D={$D}<br />\n");
        // Next hours...
-       $h = abs(floor($stamp / 3600 - $Y * (365 + $SWITCH / $_CONFIG['one_day']) * 24 - ($M / 12 * (365 + $SWITCH / $_CONFIG['one_day']) * 24) - $W * 7 * 24 - $D * 24));
+       $h = abs(floor($timestamp / 3600 - $Y * (365 + $SWITCH / $_CONFIG['one_day']) * 24 - ($M / 12 * (365 + $SWITCH / $_CONFIG['one_day']) * 24) - $W * 7 * 24 - $D * 24));
+       //* DEBUG: */ print("h={$h}<br />\n");
        // Next minutes..
-       $m = abs(floor($stamp / 60 - $Y * (365 + $SWITCH / $_CONFIG['one_day']) * 24 * 60 - ($M / 12 * (365 + $SWITCH / $_CONFIG['one_day']) * 24 * 60) - $W * 7 * 24 * 60 - $D * 24 * 60 - $h * 60));
+       $m = abs(floor($timestamp / 60 - $Y * (365 + $SWITCH / $_CONFIG['one_day']) * 24 * 60 - ($M / 12 * (365 + $SWITCH / $_CONFIG['one_day']) * 24 * 60) - $W * 7 * 24 * 60 - $D * 24 * 60 - $h * 60));
+       //* DEBUG: */ print("m={$m}<br />\n");
        // And at last seconds...
-       $s = abs(floor($stamp - $Y * (365 + $SWITCH / $_CONFIG['one_day']) * 24 * 3600 - ($M / 12 * (365 + $SWITCH / $_CONFIG['one_day']) * 24 * 3600) - $W * 7 * 24 * 3600 - $D * 24 * 3600 - $h * 3600 - $m * 60));
+       $s = abs(floor($timestamp - $Y * (365 + $SWITCH / $_CONFIG['one_day']) * 24 * 3600 - ($M / 12 * (365 + $SWITCH / $_CONFIG['one_day']) * 24 * 3600) - $W * 7 * 24 * 3600 - $D * 24 * 3600 - $h * 3600 - $m * 60));
+       //* DEBUG: */ print("s={$s}<br />\n");
 
        // Is seconds zero and time is < 60 seconds?
-       if (($s == 0) && ($stamp < 60)) {
+       if (($s == 0) && ($timestamp < 60)) {
                // Fix seconds
                $s = round($timestamp);
        } // END - if
@@ -1511,7 +1534,7 @@ function CREATE_TIME_SELECTIONS($timestamp, $prefix="", $display="", $align="cen
                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 <= 59; $idx++) {
                                $OUT .= "  <OPTION class=\"mini_select\" value=\"".$idx."\"";
                                if ($idx == $s) $OUT .= " selected default";
                                $OUT .= ">".$idx."</OPTION>\n";
@@ -1610,7 +1633,7 @@ function SEND_ADMIN_EMAILS_PRO($subj, $template, $content, $UID) {
        SQL_FREERESULT($result);
 }
 //
-function CREATE_FANCY_TIME($stamp) {
+function CREATE_FANCY_TIME ($stamp) {
        // Get data array with years/months/weeks/days/...
        $data = CREATE_TIME_SELECTIONS($stamp, "", "", "", true);
        $ret = "";
@@ -2238,7 +2261,7 @@ function mxchange_die ($msg) {
 
 // Display parsing time and number of SQL queries in footer
 function DISPLAY_PARSING_TIME_FOOTER() {
-       global $startTime, $_CONFIG;
+       global $_CONFIG;
        $endTime = microtime(true);
 
        // Is the timer started?
@@ -2301,23 +2324,23 @@ function set_session ($var, $value) {
 // Check wether a boolean constant is set
 // Taken from user comments in PHP documentation for function constant()
 function isBooleanConstantAndTrue($constName) { // : Boolean
-       global $constCache;
+       global $cacheArray;
 
        // Failed by default
        $res = false;
 
        // In cache?
-       if (isset($constCache[$constName])) {
+       if (isset($cacheArray['const'][$constName])) {
                // Use cache
                //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>): ".$constName."-CACHE!<br />\n";
-               $res = $constCache[$constName];
+               $res = $cacheArray['const'][$constName];
        } else {
                // Check constant
                //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>): ".$constName."-RESOLVE!<br />\n";
                if (defined($constName)) $res = (constant($constName) === true);
 
                // Set cache
-               $constCache[$constName] = $res;
+               $cacheArray['const'][$constName] = $res;
        }
        //* DEBUG: */ var_dump($res);
 
@@ -2326,12 +2349,12 @@ function isBooleanConstantAndTrue($constName) { // : Boolean
 }
 
 // Check wether a session variable is set
-function isSessionVariableSet($var) {
+function isSessionVariableSet ($var) {
        //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):var={$var}<br />\n";
        return (isset($_SESSION[$var]));
 }
 // Returns wether the value of the session variable or NULL if not set
-function get_session($var) {
+function get_session ($var) {
        global $cacheArray;
 
        // Default is not found! ;-)
@@ -2340,9 +2363,11 @@ function get_session($var) {
        // Is the variable there or cached values?
        if (isset($cacheArray['session'][$var])) {
                // Get cached value (skips a lot SQL_ESCAPE() calles!
+               //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>): ".$var."-CACHE!<br />\n";
                $value = $cacheArray['session'][$var];
        } elseif (isSessionVariableSet($var)) {
                // Then  get it secured!
+               //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>): ".$var."-RESOLVE!<br />\n";
                $value = SQL_ESCAPE($_SESSION[$var]);
 
                // Cache the value
@@ -2519,31 +2544,31 @@ function FILE_READABLE($fqfn) {
 // Converts timestamp selections into a timestamp
 function CONVERT_SELECTIONS_TO_TIMESTAMP(&$POST, &$DATA, &$id, &$skip) {
        // Init test variable
-       $TEST2 = "";
+       $test2 = "";
 
        // Get last three chars
-       $TEST = substr($id, -3);
+       $test = substr($id, -3);
 
        // Improved way of checking! :-)
-       if (in_array($TEST, array("_ye", "_mo", "_we", "_da", "_ho", "_mi", "_se"))) {
+       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)) {
+               $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]."'";
+                       $POST[$test] = CREATE_TIMESTAMP_FROM_SELECTIONS($test, $POST);
+                       $DATA[] = sprintf("%s='%s'", $test, $POST[$test]);
 
                        // Remove data from array
                        foreach (array("ye", "mo", "we", "da", "ho", "mi", "se") as $rem) {
-                               unset($POST[$TEST."_".$rem]);
+                               unset($POST[$test."_".$rem]);
                        } // END - foreach
 
                        // Skip adding
-                       unset($id); $skip = true; $TEST2 = $TEST;
+                       unset($id); $skip = true; $test2 = $test;
                } // END - if
        } else {
                // Process this entry
-               $skip = false; $TEST2 = "";
+               $skip = false; $test2 = "";
        }
 }
 // Reverts the german decimal comma into Computer decimal dot
@@ -2605,9 +2630,9 @@ function REBUILD_CACHE ($cache, $inc="") {
        // Shall I remove the cache file?
        if ((EXT_IS_ACTIVE("cache")) && (is_object($cacheInstance))) {
                // Rebuild cache
-               if ($cacheInstance->cache_file($cache, true)) {
+               if ($cacheInstance->loadCacheFile($cache)) {
                        // Destroy it
-                       $cacheInstance->cache_destroy();
+                       $cacheInstance->destroyCacheFile();
                } // END - if
 
                // Include file given?
@@ -2804,6 +2829,12 @@ function DESTROY_ADMIN_SESSION () {
        return @session_destroy();
 }
 
+// Checks if a given apache module is loaded
+function IF_APACHE_MODULE_LOADED ($apacheModule) {
+       // Check it and return result
+       return (((function_exists('apache_get_modules')) && (in_array($apacheModule, apache_get_modules()))) || (!function_exists('apache_get_modules')));
+}
+
 //////////////////////////////////////////////////
 //                                              //
 // AUTOMATICALLY RE-GENERATED MISSING FUNCTIONS //