1 <?php
3 class stats
4 {
9 static function checkDatabase()
10 {
11 $TABLE_NAME = 'stats';
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;
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 }
103 }
106 ?>