| author | David Anderson <dvander@alliedmods.net> |
| Fri Jul 11 06:51:21 2008 +0000 (2008-07-11) | |
| branch | refac-jit |
| changeset 2192 | 7602d7fb60d9 |
| parent 2168 | c24a6fa957db |
| permissions | -rw-r--r-- |
| dvander@2168 | 1 |
<?php |
| dvander@2168 | 2 |
|
| dvander@2168 | 3 |
class ProfReport |
| dvander@2168 | 4 |
{ |
| dvander@2168 | 5 |
public $time; |
| dvander@2168 | 6 |
public $uptime; |
| dvander@2168 | 7 |
public $items = array(); |
| dvander@2168 | 8 |
} |
| dvander@2168 | 9 |
|
| dvander@2168 | 10 |
class ProfReportParser |
| dvander@2168 | 11 |
{ |
| dvander@2168 | 12 |
private $report; |
| dvander@2168 | 13 |
private $curtype; |
| dvander@2168 | 14 |
public $last_error; |
| dvander@2168 | 15 |
|
| dvander@2168 | 16 |
public function Parse($file) |
| dvander@2168 | 17 |
{ |
| dvander@2168 | 18 |
$this->report = FALSE; |
| dvander@2168 | 19 |
$this->curtype = FALSE; |
| dvander@2168 | 20 |
|
| dvander@2168 | 21 |
if (($contents = file_get_contents($file)) === FALSE) |
| dvander@2168 | 22 |
{ |
| dvander@2168 | 23 |
$this->last_error = 'File not found'; |
| dvander@2168 | 24 |
return FALSE; |
| dvander@2168 | 25 |
} |
| dvander@2168 | 26 |
|
| dvander@2168 | 27 |
$xml = xml_parser_create(); |
| dvander@2168 | 28 |
xml_set_object($xml, $this); |
| dvander@2168 | 29 |
xml_set_element_handler($xml, 'tag_open', 'tag_close'); |
| dvander@2168 | 30 |
xml_parser_set_option($xml, XML_OPTION_CASE_FOLDING, false); |
| dvander@2168 | 31 |
|
| dvander@2168 | 32 |
if (!xml_parse($xml, $contents)) |
| dvander@2168 | 33 |
{ |
| dvander@2168 | 34 |
$this->last_error = 'Line: ' . xml_get_current_line_number($xml) . ' -- ' . xml_error_string(xml_get_error_code($xml)); |
| dvander@2168 | 35 |
return FALSE; |
| dvander@2168 | 36 |
} |
| dvander@2168 | 37 |
|
| dvander@2168 | 38 |
return $this->report; |
| dvander@2168 | 39 |
} |
| dvander@2168 | 40 |
|
| dvander@2168 | 41 |
public function tag_open($parser, $tag, $attrs) |
| dvander@2168 | 42 |
{ |
| dvander@2168 | 43 |
if ($tag == 'profile') |
| dvander@2168 | 44 |
{ |
| dvander@2168 | 45 |
$this->report = new ProfReport(); |
| dvander@2168 | 46 |
$this->report->time = $attrs['time']; |
| dvander@2168 | 47 |
$this->report->uptime = $attrs['uptime']; |
| dvander@2168 | 48 |
} |
| dvander@2168 | 49 |
else if ($tag == 'report') |
| dvander@2168 | 50 |
{ |
| dvander@2168 | 51 |
$this->curtype = $attrs['name']; |
| dvander@2168 | 52 |
} |
| dvander@2168 | 53 |
else if ($tag == 'item') |
| dvander@2168 | 54 |
{ |
| dvander@2168 | 55 |
if ($this->report === FALSE || $this->curtype === FALSE) |
| dvander@2168 | 56 |
{ |
| dvander@2168 | 57 |
return; |
| dvander@2168 | 58 |
} |
| dvander@2168 | 59 |
$attrs['type'] = $this->curtype; |
| dvander@2168 | 60 |
$this->report->items[] = $attrs; |
| dvander@2168 | 61 |
} |
| dvander@2168 | 62 |
} |
| dvander@2168 | 63 |
|
| dvander@2168 | 64 |
public function tag_close($parser, $tag) |
| dvander@2168 | 65 |
{ |
| dvander@2168 | 66 |
if ($tag == 'report') |
| dvander@2168 | 67 |
{ |
| dvander@2168 | 68 |
$this->curtype = FALSE; |
| dvander@2168 | 69 |
} |
| dvander@2168 | 70 |
} |
| dvander@2168 | 71 |
} |
| dvander@2168 | 72 |
|
| dvander@2168 | 73 |
?> |