diff options
-rw-r--r-- | htdocs/index.php | 22 | ||||
-rw-r--r-- | utils/modules/sitestats.php | 130 |
2 files changed, 150 insertions, 2 deletions
diff --git a/htdocs/index.php b/htdocs/index.php index a550f77..d389e6d 100644 --- a/htdocs/index.php +++ b/htdocs/index.php @@ -16,6 +16,13 @@ if(!isset($JPEG_CACHE_QUALITY)) $JPEG_CACHE_QUALITY = 85; if($mode == "imagecache") { include_once($UTIL_DIR. "/imagecache.php"); getCachedImage($uri, $mod, $cat); + + include_once($MODULES_DIR."/sitestats.php"); + $stats = new SiteStats($DATA_DIR."/sitestats"); + + $stop_time = microtime(true); + $stats->log($stop_time - $start_time); + return; } @@ -62,6 +69,13 @@ if($config->value('splash') == "true") { </body> </html> <?php + include_once($MODULES_DIR."/sitestats.php"); + $stats = new SiteStats($DATA_DIR."/sitestats"); + + $page = "[splash]"; + $stop_time = microtime(true); + $stats->log($stop_time - $start_time); + return; } } @@ -143,11 +157,15 @@ $_p = $pages->getPage("footer"); if($_p) $_p->show(); ?> </div> - <div class="generationtime">This document was generated in <?php $stop_time = microtime(true); echo $stop_time - $start_time; ?> seconds</div> + <div class="generationtime">This document was generated in <?php $stop_time = microtime(true); echo $stop_time - $start_time; ?> seconds</div> </div> <div> <a href="?page=admin" class="admin_link"></a> <a href="?page=admin" class="admin_link_text">Admin</a> </div> </body> -</html> +</html><?php +include_once($MODULES_DIR."/sitestats.php"); +$stats = new SiteStats($DATA_DIR."/sitestats"); +$stats->log($stop_time - $start_time); +?>
\ No newline at end of file diff --git a/utils/modules/sitestats.php b/utils/modules/sitestats.php new file mode 100644 index 0000000..c4bafbf --- /dev/null +++ b/utils/modules/sitestats.php @@ -0,0 +1,130 @@ +<?php /* -*- Mode: php; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ + +global $UTIL_DIR; + +include_once($UTIL_DIR . "/convert.php"); + +class SiteStats { + + public $statsdir; + public $stats = array(); + + // Admin config + public $admin_title = "Site Stats"; + public $admin_submodules = array("Overview" => "overview"); + + public function admin_overview($action, $vars) + { + switch($action) { + default: + break; + } + } + + public function admin($sub, $action, $vars) + { + switch($sub) { + case "overview": + $this->admin_overview($action, $vars); + break; + } + } + + /* + public function write() + { + $fp = fopen($this->file, "w"); + fwrite($fp, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); + + fwrite($fp, "<configs>\n"); + foreach($this->configs as $name => $value) { + fwrite($fp, " <config name=\"".$name."\"\n"); + fwrite($fp, " value=\"". + htmlspecialchars(serialize($value), ENT_QUOTES, "UTF-8")."\"/>\n"); + } + fwrite($fp, "</configs>\n"); + + fclose($fp); + } + */ + private function read($file) + { + /* + $dom = new DomDocument; + $dom->preserveWhiteSpace = TRUE; + $dom->load($this->file); + $configElems = $dom->getElementsByTagName('config'); + + foreach ($configElems as $config) { + $this->setValue($config->getAttribute('name'), + unserialize(htmlspecialchars_decode($config->getAttribute('value'), ENT_QUOTES))); + } + */ + } + + public function log($loadtime) + { + $now = time(); + + $str = "<entry>". + "<time>".xmlenc($now)."</time>". // Time + "<remoteaddr>".xmlenc($_SERVER['REMOTE_ADDR'])."</remoteaddr>". // remote ip + "<remotehost>".xmlenc($_SERVER['REMOTE_HOST'])."</remotehost>". // remote hostname + "<loadtime>".xmlenc($loadtime)."</loadtime>". // Loadtime + "<page>".xmlenc($GLOBALS['page'])."</page>". // Page + // $_SERVER['REMOTE_PORT'] . // current port + // $_SERVER['SCRIPT_FILENAME'] . // script name + "<agent>".xmlenc($_SERVER['HTTP_USER_AGENT'])."</agent>". // User agent (browser) + "<referer>".xmlenc($_SERVER['HTTP_REFERER'])."</referer>". // referer (link) + "<uri>".xmlenc($_SERVER['REQUEST_URI'])."</uri>". // URI + // GeoIP ?? + "</entry>\n"; + + $file = $this->getFilename($now); + + if(!file_exists(dirname($file))) mkdir(dirname($file), 0777, true); + + $fp = fopen($file, "a"); + fwrite($fp, $str); + fclose($fp); + } + + private function getFilename($timestamp) + { + $year = "2010"; + $month = "03"; + $file = $this->statsdir . "/" . $year . "/" . $month . ".xml"; + return $file; + } + + private function readSingle($timestamp) + { + $file = $this->getFilename($timestamp); + if(file_exists($file)) $this->read($file); + } + + private function readAll() + { + } + + public function SiteStats($statsdir, $readall = false) + { + $this->statsdir = $statsdir; + if(file_exists($statsdir) && is_dir($statsdir)) { + if($readall) { + $this->readAll(); + } else { + $this->readSingle(time()); + } + } + } + +} + +function sitestats_init() +{ + global $DATA_DIR; + return new SiteStats($DATA_DIR."/sitestats", true); +} + +?>
\ No newline at end of file |