New extension added, ext-uberwach rewritten (unfinished), some fixes
[mailer.git] / inc / stats-functions.php
index da5815c..1e4b5da 100644 (file)
@@ -45,17 +45,11 @@ if (!defined('__SECURITY')) {
 function initStatsSystem () {
        // Is stats cache loaded?
        if ((!isset($GLOBALS['stats_loaded'])) && (getConfig('STATS_ENABLED') == 'Y')) {
-               // Load stats cache
-               $GLOBALS['stats_fqfn'] = sprintf("%sinc/cache/stats.cache", getConfig('PATH'));
-
-               // Is the file readable?
-               if (isFileReadable($GLOBALS['stats_fqfn'])) {
-                       // Yes, so load it and eval
-                       eval(readFromFile($GLOBALS['stats_fqfn']));
-               } else {
-                       // Generate it only
-                       touch($GLOBALS['stats_fqfn']);
-               }
+               // Init statistics array
+               $GLOBALS['stats'] = array();
+
+               // Load statistics entry from temporary table
+               loadStatsTable();
 
                // Stats are loaded!
                $GLOBALS['stats_loaded'] = true;
@@ -70,6 +64,9 @@ function isStatsEntrySet ($entry) {
 
 // Increments a statistics entry
 function incrementStatsEntry ($entry, $amount=1) {
+       // Do we have stats enabled?
+       if (getConfig('STATS_ENABLED') != 'Y') return;
+
        // Is it there?
        if (isStatsEntrySet($entry)) {
                // Then increment it
@@ -100,20 +97,73 @@ function setStatsEntry ($entry, $value) {
        $GLOBALS['stats'][$entry] = $value;
 }
 
+// Loads stats table
+function loadStatsTable () {
+       // Do we have it there for today?
+       if (!isStatsTableCreated()) {
+               // Then create a default one
+               createStatsTable();
+       } // END - if
+
+       // Load it from database
+       $result = SQL_QUERY_ESC("SELECT `stats_entry`,`stats_value` FROM `{?_MYSQL_PREFIX?}_stats_%s` ORDER BY `stats_entry` ASC",
+               array(date('Ymd', time())), __FUNCTION__, __LINE__);
+
+       // Read all rows
+       while ($row = SQL_FETCHARRAY($result)) {
+               $GLOBALS['stats'][$row['stats_entry']] = $row['stats_value'];
+       } // END - while
+
+       // Free the result
+       SQL_FREERESULT($result);
+}
+
+// Checks if the the statistics table is created
+function isStatsTableCreated () {
+       // Ask for it
+       $result = SQL_QUERY_ESC("SHOW TABLES LIKE '{?_MYSQL_PREFIX?}_stats_%s'",
+               array(date('Ymd', time())), __FUNCTION__, __LINE__);
+
+       // Do we have a row?
+       return SQL_NUMROWS($result);
+}
+
+// Create the dummy table
+function createStatsTable () {
+       // Create it here
+       $result = SQL_QUERY_ESC("CREATE TABLE IF NOT EXISTS `{?_MYSQL_PREFIX?}_stats_%s` (
+`stats_entry` VARCHAR(100) NOT NULL DEFAULT '',
+`stats_value` BIGINT(20) NOT NULL DEFAULT 0,
+PRIMARY KEY (`stats_entry`)
+) TYPE=HEAP COMMENT='Temporary statistics table'",
+               array(date('Ymd', time())), __FUNCTION__, __LINE__);
+}
+
+// Write all entries to the table
+function writeStatsTable () {
+       // Empty the table first
+       SQL_QUERY_ESC("TRUNCATE `{?_MYSQL_PREFIX?}_stats_%s`",
+               array(date('Ymd', time())), __FUNCTION__, __LINE__);
+
+       // Begin the SQL command
+       $sql = sprintf("INSERT INTO `{?_MYSQL_PREFIX?}_stats_%s` (`stats_entry`,`stats_value`) VALUES ",
+               date('Ymd', time()));
+
+       // Add all entries to the final query
+       foreach ($GLOBALS['stats'] as $entry=>$value) {
+               $sql .= sprintf("('%s', %s),", $entry, bigintval($value));
+       } // END - foreach
+
+       // Finalize it and run it
+       SQL_QUERY(substr($sql, 0, -1), __FUNCTION__, __LINE__);
+}
+
 // Filter for flushing statistics
 function FILTER_FLUSH_STATS () {
        // Now do we have stats?
        if ((isset($GLOBALS['stats'])) && (getConfig('STATS_ENABLED') == 'Y')) {
-               // Then prepare it for writing
-               foreach ($GLOBALS['stats'] as $key=>$value) {
-                       $stats[] = '$GLOBALS[\'stats\'][\'' . $key . '\'] = ' . $value . ';';
-               } // END - foreach
-
-               // Add empty line
-               $stats[] = '';
-
-               // And flush all out
-               writeToFile($GLOBALS['stats_fqfn'], implode("\n", $stats), true);
+               // Write statistics to temporary table
+               writeStatsTable();
        } // END - if
 }