<?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);
}

?>