1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
<?php
namespace SimpleSAML\Module\statistics;
/**
* @author Andreas Åkre Solberg <andreas.solberg@uninett.no>
* @package SimpleSAMLphp
*/
class LogParser
{
/** @var integer */
private $datestart;
/** @var integer */
private $datelength;
/** @var integer */
private $offset;
/**
* Constructor
*
* @param integer $datestart At which char is the date starting
* @param integer $datelength How many characters is the date (on the b
* @param integer $offset At which char is the rest of the entries starting
*/
public function __construct($datestart, $datelength, $offset)
{
$this->datestart = $datestart;
$this->datelength = $datelength;
$this->offset = $offset;
}
/**
* @param string $line
*
* @return integer
*/
public function parseEpoch($line)
{
$epoch = strtotime(substr($line, 0, $this->datelength));
if ($epoch > time() + 2678400) { // 60 * 60 * 24 * 31 = 2678400
/**
* More than a month in the future - probably caused by
* the log files missing the year.
* We will therefore subtrackt one year.
*/
$hour = intval(gmdate('H', $epoch));
$minute = intval(gmdate('i', $epoch));
$second = intval(gmdate('s', $epoch));
$month = intval(gmdate('n', $epoch));
$day = intval(gmdate('j', $epoch));
$year = intval(gmdate('Y', $epoch)) - 1;
$epoch = gmmktime($hour, $minute, $second, $month, $day, $year);
}
return $epoch;
}
/**
* @param string $line
*
* @return array
*/
public function parseContent($line)
{
$contentstr = substr($line, $this->offset);
$content = explode(' ', $contentstr);
return $content;
}
}
|