summaryrefslogtreecommitdiff
path: root/static/awstats/class.awfile.php
diff options
context:
space:
mode:
Diffstat (limited to 'static/awstats/class.awfile.php')
-rw-r--r--static/awstats/class.awfile.php221
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);
+ }
+
+}
+
+?>