diff options
Diffstat (limited to 'static/awstats/class.awfile.php')
-rw-r--r-- | static/awstats/class.awfile.php | 221 |
1 files changed, 221 insertions, 0 deletions
diff --git a/static/awstats/class.awfile.php b/static/awstats/class.awfile.php new file mode 100644 index 0000000..79ed4d0 --- /dev/null +++ b/static/awstats/class.awfile.php @@ -0,0 +1,221 @@ +<?php +/** +* Copyright (c) 2005 - Javier Infante +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the +* GNU General Public License (GPL) Version 2, June 1991, +* which accompanies this distribution, and is available at: +* http://www.opensource.org/licenses/gpl-license.php +* +* Description: Simple class that parses into simple PPH arrays +* access information to a site, from a AWSTATS DATA FILE. +* This file is found as "awstatsMMYYYY.example.com.txt" commonly +* in shared servers or others. +* The information recieved is quite limited (as much as i needed so far). +* +* Name of the class: awfile +* Version: 0.1 +* Author: Javier Infante (original author) +* Email: jabi (at) irontec (dot) com +**/ + +class awfile { + var $fich; + var $first_visit; + var $visits; + var $uniquevisits; + var $aHours = array(); + var $aDays = array(); + var $aOs = array(); + var $aBrowser = array(); + var $aReferers = array(); + var $aRange = array(); + var $aSections = array(); + var $error = false; + var $ErrorStr = array( + 1=>"file not found.", + 2=>"File not readable"); + var $_positions = array( + "POS_GENERAL"=>0, + "POS_TIME"=>0, + "POS_OS"=>0, + "POS_BROWSER"=>0, + "POS_PAGEREFS"=>0, + "POS_DAY"=>0, + "POS_SESSION"=>0, + "POS_SIDER"=>0); + + function awfile($fich) { + if (!file_exists($fich)) + $this->error = 1; + else { + $this->fich = $fich; + $this->__proc(); + } + } + + function __proc() { + if (!$fd = fopen($this->fich,"r")) + $this->error = 2; + else { + + do { + $str = trim(fgets($fd)); + if ($str{0} ==" ") continue; + + list($elem,$pos) = explode(" ",$str); + if (isset($this->_positions[$elem])) + $this->_positions[$elem] = $pos; + else continue; + } while ($str!="END_MAP"); + + + fseek($fd,$this->_positions["POS_GENERAL"]); + list(,$n) = explode(" ",trim(fgets($fd))); + $pendientes = 3; + while ($n>0) { + list($elem,$num) = explode(" ",trim(fgets($fd))); + switch($elem) { + case "FirstTime": + $this->first_visit = $num; + $pendientes--; + break; + case "TotalVisits": + $this->visits = $num; + $pendientes--; + break; + + case "TotalUnique": + $this->uniquevisits = $num; + $pendientes--; + break; + default: continue; + } + if ($pendientes==0) break; + $n--; + } + + + fseek($fd,$this->_positions["POS_TIME"]); + list(,$n) = explode(" ",trim(fgets($fd))); + while ($n>0) { + list($elem,$num,,,,,) = explode(" ",trim(fgets($fd))); + $this->aHours[$elem] = $num; + $n--; + } + + fseek($fd,$this->_positions["POS_OS"]); + list(,$n) = explode(" ",trim(fgets($fd))); + while ($n>0) { + list($elem,$num) = explode(" ",trim(fgets($fd))); + $this->aOs[$elem] = $num; + $n--; + } + + fseek($fd,$this->_positions["POS_BROWSER"]); + list(,$n) = explode(" ",trim(fgets($fd))); + while ($n>0) { + list($elem,$num) = explode(" ",trim(fgets($fd))); + $this->aBrowser[$elem] = $num; + $n--; + } + + fseek($fd,$this->_positions["POS_PAGEREFS"]); + list(,$n) = explode(" ",trim(fgets($fd))); + while ($n>0) { + list($elem,$num,) = explode(" ",trim(fgets($fd))); + $this->aReferes[$elem] = $num; + $n--; + } + + fseek($fd,$this->_positions["POS_DAY"]); + list(,$n) = explode(" ",trim(fgets($fd))); + while ($n>0) { + list($elem,,,,$num) = explode(" ",trim(fgets($fd))); + $this->aDays[$elem] = $num; + $n--; + } + + fseek($fd,$this->_positions["POS_SESSION"]); + list(,$n) = explode(" ",trim(fgets($fd))); + while ($n>0) { + list($elem,$num) = explode(" ",trim(fgets($fd))); + $this->aRange[$elem] = $num; + $n--; + } + + fseek($fd,$this->_positions["POS_SIDER"]); + list(,$n) = explode(" ",trim(fgets($fd))); + while ($n>0) { + list($elem,$num,,,) = explode(" ",trim(fgets($fd))); + $this->aSections[$elem] = $num; + $n--; + } + + } + + } + + + function GetFirstVisit() { + return $this->first_visit; + } + + function GetVisits() { + return $this->visits; + } + + function GetUniqueVisits() { + return $this->uniquevisits; + } + + function GetHours() { + return $this->aHours; + } + + function GetDays() { + return $this->aHours; + } + + function GetOs() { + return $this->aOs; + } + + function GetBrowser() { + return $this->aBrowser; + } + + function GetReferers() { + return $this->aReferes; + } + + function GetRanges() { + return $this->aRange; + } + + function GetSections() { + return $this->aSections; + } + + function Error() { + return $this->error; + } + + function GetError() { + return $this->ErrorStr[$this->error]; + } + + function GetBetterDay() { + $max = 0; + foreach ($this->aDays as $day => $num) { + if ($num>$max) { + $max = $num; + $date = $day; + } + } + return array($date,$max); + } + +} + +?> |