| 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-- |
| 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 |
?> |