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