]> git.mxchange.org Git - mailer.git/blobdiff - inc/functions.php
Caching of expensive PHP functions:
[mailer.git] / inc / functions.php
index 90dbe1d5e69a801bdd4c84ff4d95f7f4b2ba407a..e1b5a9ca363ad074e1419e570afa344346c42bbf 100644 (file)
@@ -275,15 +275,22 @@ function generatePassword ($length = '0') {
 
 // Generates a human-readable timestamp from the Uni* stamp
 function generateDateTime ($time, $mode = '0') {
-       // Filter out numbers
-       $time = bigintval($time);
-
        // If the stamp is zero it mostly didn't "happen"
        if ($time == '0') {
                // Never happend
                return '{--NEVER_HAPPENED--}';
        } // END - if
 
+       // Filter out numbers
+       $time = bigintval($time);
+
+       // Is it cached?
+       if (isset($GLOBALS[__FUNCTION__][$time][$mode])) {
+               // Then use it
+               return $GLOBALS[__FUNCTION__][$time][$mode];
+       } // END - if
+
+       // Detect language
        switch (getLanguage()) {
                case 'de': // German date / time format
                        switch ($mode) {
@@ -291,6 +298,9 @@ function generateDateTime ($time, $mode = '0') {
                                case '1': $ret = strtolower(date('d.m.Y - H:i', $time)); break;
                                case '2': $ret = date('d.m.Y|H:i', $time); break;
                                case '3': $ret = date('d.m.Y', $time); break;
+                               case '4': $ret = date('d.m.Y|H:i:s', $time); break;
+                               case '5': $ret = date('d-m-Y (l-F-T)', $time); break;
+                               case '6': $ret = date('Ymd', $time); break;
                                default:
                                        logDebugMessage(__FUNCTION__, __LINE__, sprintf("Invalid date mode %s detected.", $mode));
                                        break;
@@ -300,34 +310,43 @@ function generateDateTime ($time, $mode = '0') {
                default: // Default is the US date / time format!
                        switch ($mode) {
                                case '0': $ret = date('r', $time); break;
-                               case '1': $ret = date('Y-m-d - g:i A', $time); break;
+                               case '1': $ret = strtolower(date('Y-m-d - g:i A', $time)); break;
                                case '2': $ret = date('y-m-d|H:i', $time); break;
                                case '3': $ret = date('y-m-d', $time); break;
+                               case '4': $ret = date('d.m.Y|H:i:s', $time); break;
+                               case '5': $ret = date('d-m-Y (l-F-T)', $time); break;
+                               case '6': $ret = date('Ymd', $time); break;
                                default:
                                        logDebugMessage(__FUNCTION__, __LINE__, sprintf("Invalid date mode %s detected.", $mode));
                                        break;
                        } // END - switch
        } // END - switch
 
+       // Store it in cache
+       $GLOBALS[__FUNCTION__][$time][$mode] = $ret;
+
        // Return result
        return $ret;
 }
 
 // Translates Y/N to yes/no
 function translateYesNo ($yn) {
-       // Default
-       $translated = '??? (' . $yn . ')';
-       switch ($yn) {
-               case 'Y': $translated = '{--YES--}'; break;
-               case 'N': $translated = '{--NO--}'; break;
-               default:
-                       // Log unknown value
-                       logDebugMessage(__FUNCTION__, __LINE__, sprintf("Unknown value %s. Expected Y/N!", $yn));
-                       break;
-       } // END - switch
+       // Is it cached?
+       if (!isset($GLOBALS[__FUNCTION__][$yn])) {
+               // Default
+               $GLOBALS[__FUNCTION__][$yn] = '??? (' . $yn . ')';
+               switch ($yn) {
+                       case 'Y': $GLOBALS[__FUNCTION__][$yn] = '{--YES--}'; break;
+                       case 'N': $GLOBALS[__FUNCTION__][$yn] = '{--NO--}'; break;
+                       default:
+                               // Log unknown value
+                               logDebugMessage(__FUNCTION__, __LINE__, sprintf("Unknown value %s. Expected Y/N!", $yn));
+                               break;
+               } // END - switch
+       } // END - if
 
        // Return it
-       return $translated;
+       return $GLOBALS[__FUNCTION__][$yn];
 }
 
 // Translates the "pool type" into human-readable
@@ -498,9 +517,9 @@ function countSelection ($array) {
 // Generates a timestamp (some wrapper for mktime())
 function makeTime ($hours, $minutes, $seconds, $stamp) {
        // Extract day, month and year from given timestamp
-       $days   = date('d', $stamp);
-       $months = date('m', $stamp);
-       $years  = date('Y', $stamp);
+       $days   = getDay($stamp);
+       $months = getMonth($stamp);
+       $years  = getYear($stamp);
 
        // Create timestamp for wished time which depends on extracted date
        return mktime(
@@ -632,7 +651,7 @@ function generateRandomCode ($length, $code, $userid, $DATA = '') {
        $keys = getConfig('SITE_KEY') . getConfig('ENCRYPT_SEPERATOR') . getConfig('DATE_KEY');
        if (isConfigEntrySet('secret_key'))  $keys .= getConfig('ENCRYPT_SEPERATOR').getConfig('secret_key');
        if (isConfigEntrySet('file_hash'))   $keys .= getConfig('ENCRYPT_SEPERATOR').getConfig('file_hash');
-       $keys .= getConfig('ENCRYPT_SEPERATOR') . date('d-m-Y (l-F-T)', getConfig('patch_ctime'));
+       $keys .= getConfig('ENCRYPT_SEPERATOR') . getDateFromPatchTime();
        if (isConfigEntrySet('master_salt')) $keys .= getConfig('ENCRYPT_SEPERATOR').getConfig('master_salt');
 
        // Build string from misc data
@@ -701,8 +720,8 @@ function createTimestampFromSelections ($prefix, $postData) {
 
        // Do we have a leap year?
        $SWITCH = '0';
-       $TEST = date('Y', time()) / 4;
-       $M1   = date('m', time());
+       $TEST = getYear() / 4;
+       $M1   = getMonth();
 
        // 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') && ($postData[$prefix . '_mo'] > '02'))  $SWITCH = getConfig('ONE_DAY');
@@ -1132,7 +1151,7 @@ function generateHash ($plainText, $salt = '', $hash = true) {
                $server = $_SERVER['PHP_SELF'] . getConfig('ENCRYPT_SEPERATOR') . detectUserAgent() . getConfig('ENCRYPT_SEPERATOR') . getenv('SERVER_SOFTWARE') . getConfig('ENCRYPT_SEPERATOR') . detectRemoteAddr();
 
                // Build key string
-               $keys   = getConfig('SITE_KEY') . getConfig('ENCRYPT_SEPERATOR') . getConfig('DATE_KEY') . getConfig('ENCRYPT_SEPERATOR') . getConfig('secret_key') . getConfig('ENCRYPT_SEPERATOR') . getConfig('file_hash') . getConfig('ENCRYPT_SEPERATOR') . date('d-m-Y (l-F-T)', getConfig('patch_ctime')) . getConfig('ENCRYPT_SEPERATOR') . getConfig('master_salt');
+               $keys   = getConfig('SITE_KEY') . getConfig('ENCRYPT_SEPERATOR') . getConfig('DATE_KEY') . getConfig('ENCRYPT_SEPERATOR') . getConfig('secret_key') . getConfig('ENCRYPT_SEPERATOR') . getConfig('file_hash') . getConfig('ENCRYPT_SEPERATOR') . getDateFromPatchTime() . getConfig('ENCRYPT_SEPERATOR') . getConfig('master_salt');
 
                // Additional data
                $data = $plainText . getConfig('ENCRYPT_SEPERATOR') . uniqid(mt_rand(), true) . getConfig('ENCRYPT_SEPERATOR') . time();
@@ -1664,7 +1683,7 @@ function logDebugMessage ($funcFile, $line, $message, $force=true) {
 
                // Log this message away
                $fp = fopen(getConfig('CACHE_PATH') . 'debug.log', 'a') or debug_report_bug(__FUNCTION__, __LINE__, 'Cannot write logfile debug.log!');
-               fwrite($fp, date('d.m.Y|H:i:s', time()) . '|' . getModule(false) . '|' . basename($funcFile) . '|' . $line . '|' . $message . "\n");
+               fwrite($fp, generateDateTime(time(), '4') . '|' . getModule(false) . '|' . basename($funcFile) . '|' . $line . '|' . $message . "\n");
                fclose($fp);
        } // END - if
 }