Code

54420e9d91bb08142eb29727c7e69a052d1b6f4a
[gosa.git] / gosa-core / include / class_stats.inc
1 <?php
3 class stats 
4 {
5     
9     static function checkDatabase()
10     {
11         $TABLE_NAME = 'stats';
12     
13         // Check for modules
14         // php5-sqlite
17         // Try to create database, if it exists just open it.
18         $res = sqlite_open('/var/spool/gosa/stats', 0666, $error);
19         if(!$res){
20             return($res);
21         }
23         // Delete Table 
24         $query = "DROP TABLE '{$TABLE_NAME}'";
25 #        $ret = sqlite_query($query, $res);
27         // List Tables an check if there is already everything we need.
28         $query = "SELECT name FROM sqlite_master WHERE type='table' and name='{$TABLE_NAME}'";
29         $ret = sqlite_query($query, $res);
30         if(!count(sqlite_fetch_all($ret))){
32             // Check for table existance    
33             $query = "
34                 CREATE TABLE {$TABLE_NAME} (
35                         ID          INTEGER PRIMARY KEY,
36                         ACTID       INTEGER,
37                         TYPE        TEXT,
38                         PLUGIN      TEXT,
39                         ACTION      TEXT,
40                         UUID        TEXT,
41                         TIMESTAMP   INTEGER,
42                         MTIMESTAMP  INTEGER,
43                         AMOUNT      INTEGER,
44                         DURATION    INTEGER
45                         )";
46             $ret = sqlite_query($query, $res);
47         }
49         return($res);
50     }
54     static function log($type, $plugin, $action, $amount = 1, $duration = 0)
55     {
56         global $config;
57         global $clicks;
58         $type       = sqlite_escape_string($type);
59         $plugin     = sqlite_escape_string($plugin);
60         $action     = sqlite_escape_string($action);
61         $timestamp  = time();
62         $mtimestamp = microtime(TRUE);
63         $uuid       = $config->getGOsaUUID();
64         $amount     = sqlite_escape_string($amount);
65         $duration   = sqlite_escape_string($duration);
66         $clicks     = sqlite_escape_string($clicks);
68         $res = stats::checkDatabase();
69         $TABLE_NAME = 'stats';
70         $query = "
71             INSERT INTO {$TABLE_NAME}
72                 (ACTID, TYPE, PLUGIN, ACTION, UUID, MTIMESTAMP, TIMESTAMP, AMOUNT, DURATION) 
73             VALUES 
74                 ('{$clicks}','{$type}','{$plugin}','{$action}','{$uuid}','{$mtimestamp}','{$timestamp}','{$amount}','{$duration}')";
75         sqlite_query($query, $res);
76     }
78     static function show()
79     {
80         $res = stats::checkDatabase();
81         $TABLE_NAME = 'stats';
82         $query = "SELECT * FROM {$TABLE_NAME} ORDER BY MTIMESTAMP";
83         $query = "SELECT PLUGIN, ACTION, MAX(DURATION) as 'DURATION' FROM {$TABLE_NAME} WHERE ACTION='modify' GROUP BY PLUGIN,ACTION ";
84         $query = "SELECT * FROM {$TABLE_NAME} ORDER BY ID DESC LIMIT 20";
85         $res = sqlite_query($query, $res);
86         echo "<pre>";
87         foreach(sqlite_fetch_all($res) as $entry){
88             foreach($entry as $key => $str){
89                 if(is_numeric($key)) continue;
90                 
91                 if($key == "DURATION"){
92                     $str = sprintf("%0.4f", $str);
93                     echo str_pad($str,20,' ', STR_PAD_LEFT)."|"; 
94                 }else{
95                     echo str_pad($str,20,' ')."|"; 
96                 }
97             }
98             echo "\n";
99         }
100         echo "</pre>";
101         echo sqlite_error_string($res);
102     }
106 ?>