tools/profiler/php/ProfFileParser.class.php
author Ruben Gonzalez <drifter01620@gmail.com>
Thu May 22 09:49:27 2014 -0400 (2014-05-22)
changeset 4378 568f4497ef4a
parent 1908 318e0a01aef9
permissions -rw-r--r--
Update CS:GO team score gamedata.
dvander@1908
     1
<?php
dvander@1908
     2
dvander@1908
     3
class ProfReport
dvander@1908
     4
{
dvander@1908
     5
	public $time;
dvander@1908
     6
	public $uptime;
dvander@1908
     7
	public $items = array();
dvander@1908
     8
}
dvander@1908
     9
dvander@1908
    10
class ProfReportParser
dvander@1908
    11
{
dvander@1908
    12
	private $report;
dvander@1908
    13
	private $curtype;
dvander@1908
    14
	public $last_error;
dvander@1908
    15
dvander@1908
    16
	public function Parse($file)
dvander@1908
    17
	{
dvander@1908
    18
		$this->report = FALSE;
dvander@1908
    19
		$this->curtype = FALSE;
dvander@1908
    20
dvander@1908
    21
		if (($contents = file_get_contents($file)) === FALSE)
dvander@1908
    22
		{
dvander@1908
    23
			$this->last_error = 'File not found';
dvander@1908
    24
			return FALSE;
dvander@1908
    25
		}
dvander@1908
    26
		
dvander@1908
    27
		$xml = xml_parser_create();
dvander@1908
    28
		xml_set_object($xml, $this);
dvander@1908
    29
		xml_set_element_handler($xml, 'tag_open', 'tag_close');
dvander@1908
    30
		xml_parser_set_option($xml, XML_OPTION_CASE_FOLDING, false);
dvander@1908
    31
dvander@1908
    32
		if (!xml_parse($xml, $contents))
dvander@1908
    33
		{
dvander@1908
    34
			$this->last_error = 'Line: ' . xml_get_current_line_number($xml) . ' -- ' . xml_error_string(xml_get_error_code($xml));
dvander@1908
    35
			return FALSE;
dvander@1908
    36
		}
dvander@1908
    37
dvander@1908
    38
		return $this->report;
dvander@1908
    39
	}
dvander@1908
    40
dvander@1908
    41
	public function tag_open($parser, $tag, $attrs)
dvander@1908
    42
	{
dvander@1908
    43
		if ($tag == 'profile')
dvander@1908
    44
		{
dvander@1908
    45
			$this->report = new ProfReport();
dvander@1908
    46
			$this->report->time = $attrs['time'];
dvander@1908
    47
			$this->report->uptime = $attrs['uptime'];
dvander@1908
    48
		}
dvander@1908
    49
		else if ($tag == 'report')
dvander@1908
    50
		{
dvander@1908
    51
			$this->curtype = $attrs['name'];
dvander@1908
    52
		}
dvander@1908
    53
		else if ($tag == 'item')
dvander@1908
    54
		{
dvander@1908
    55
			if ($this->report === FALSE || $this->curtype === FALSE)
dvander@1908
    56
			{
dvander@1908
    57
				return;
dvander@1908
    58
			}
dvander@1908
    59
			$attrs['type'] = $this->curtype;
dvander@1908
    60
			$this->report->items[] = $attrs;
dvander@1908
    61
		}
dvander@1908
    62
	}
dvander@1908
    63
dvander@1908
    64
	public function tag_close($parser, $tag)
dvander@1908
    65
	{
dvander@1908
    66
		if ($tag == 'report')
dvander@1908
    67
		{
dvander@1908
    68
			$this->curtype = FALSE;
dvander@1908
    69
		}
dvander@1908
    70
	}
dvander@1908
    71
}
dvander@1908
    72
dvander@1908
    73
?>