summaryrefslogtreecommitdiffstats
path: root/pts-core/objects/tandem_XmlReader.php
diff options
context:
space:
mode:
Diffstat (limited to 'pts-core/objects/tandem_XmlReader.php')
-rw-r--r--pts-core/objects/tandem_XmlReader.php309
1 files changed, 0 insertions, 309 deletions
diff --git a/pts-core/objects/tandem_XmlReader.php b/pts-core/objects/tandem_XmlReader.php
deleted file mode 100644
index 7bc6707..0000000
--- a/pts-core/objects/tandem_XmlReader.php
+++ /dev/null
@@ -1,309 +0,0 @@
-<?php
-
-/*
- Phoronix Test Suite
- URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/
- Copyright (C) 2008, Phoronix Media
- Copyright (C) 2004-2008, Michael Larabel
- tandem_XmlReader.php: The XML reading object for the Phoronix Test Suite.
-
- Additional Notes: A very simple XML parser with a few extras... Does not currently support attributes on tags, etc.
- A work in progress. This was originally designed for just some select needs in the past. No XML validation is done with this parser, etc.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-class tandem_XmlReader
-{
- var $xml_data = ""; // XML contents
- var $xml_file_time = null; // File modification time
- var $xml_file_name = null; // File name
-
- var $xml_cache_file = false; // Cache the entire XML file being parsed?
- var $xml_cache_tags = true; // Cache the tags that are being called?
-
- var $tag_fallback_value = null; // Fallback value if tag is not present
-
- static $tag_cache = null; // The cache for the tag cache
- static $file_cache = null; // The cache for the file cache
-
- function __construct($read_xml, $cache_support = true)
- {
- if(is_readable($read_xml))
- {
- if($cache_support)
- {
- $this->xml_cache_file = false;
- $this->xml_cache_tags = false;
- }
-
- // If you are going to be banging XML files hard through the course of the script, you will want to flush the PHP file cache
- // clearstatcache();
-
- $this->xml_file_time = filemtime($read_xml);
- $this->xml_file_name = $read_xml;
-
- if($this->xml_cache_file && isset(self::$file_cache[$this->xml_file_name][$this->xml_file_time]))
- {
- $this->xml_data = self::$file_cache[$this->xml_file_name][$this->xml_file_time];
- }
-
- if(empty($this->xml_data))
- {
- $this->xml_data = file_get_contents($read_xml);
-
- if($this->xml_cache_file)
- {
- self::$file_cache[$this->xml_file_name][$this->xml_file_time] = $this->xml_data;
- }
- }
- }
- else
- {
- $this->xml_cache_file = false;
- $this->xml_cache_tags = false;
- $this->xml_data = $read_xml;
- }
- }
- function getStatement($statement)
- {
- return $this->listStatements(true, $statement);
- }
- function listStatements($perform_search = false, $search_query = "")
- {
- $return_r = array();
- $comment_statements = $this->parseLineCommentsFromFile();
-
- foreach($comment_statements as $statement)
- {
- $name = substr($statement, 0, strpos($statement, ":"));
- $name = trim(strstr($name, " "));
-
- if($perform_search && !empty($search_query))
- {
- if($name == $search_query)
- {
- $value = trim(substr(strstr($statement, ":"), 1));
- array_push($return_r, $value);
- }
- }
- else
- {
- array_push($return_r, $name);
- }
- }
-
- return $return_r;
- }
- function getXMLValue($xml_tag)
- {
- return $this->getValue($xml_tag);
- }
- function isDefined($xml_tag)
- {
- return $this->getValue($xml_tag) != null;
- }
- function getValue($xml_path, $xml_tag = null, $xml_match = null, $cache_tag = true, $is_fallback_call = false)
- {
- if($xml_tag == null)
- {
- $xml_tag = $xml_path;
- }
- if($xml_match == null)
- {
- $xml_match = $this->xml_data;
- }
-
- if($this->xml_cache_tags && $cache_tag && isset(self::$tag_cache[$this->xml_file_name][$this->xml_file_time][$xml_tag]))
- {
- $xml_match = self::$tag_cache[$this->xml_file_name][$this->xml_file_time][$xml_tag];
- }
- else
- {
- foreach(explode("/", $xml_tag) as $xml_step)
- {
- $xml_match = $this->parseXMLString($xml_step, $xml_match, false);
-
- if($xml_match == false)
- {
- if($is_fallback_call != true)
- {
- $xml_match = $this->handleXmlZeroTagFallback($xml_path);
- }
- else
- {
- $xml_match = $this->tag_fallback_value;
- }
- }
- }
-
- if($this->xml_cache_tags && $cache_tag)
- {
- self::$tag_cache[$this->xml_file_name][$this->xml_file_time][$xml_tag] = $xml_match;
- }
- }
-
- return $xml_match;
- }
- function parseXMLString($xml_tag, $to_parse, $multi_search = true)
- {
- $return = false;
- $temp_r = array();
- $temp = $to_parse;
-
- $open_tag = "<" . $xml_tag . ">";
- $close_tag = "</" . $xml_tag . ">";
- $open_tag_length = strlen($open_tag);
- $close_tag_length = strlen($close_tag);
-
- do
- {
- $return = null;
-
- if(($start = strpos($temp, $open_tag)) !== false)
- {
- $temp = substr($temp, $start + $open_tag_length);
-
- if(($end = strpos($temp, $close_tag)) !== false)
- {
- $return = substr($temp, 0, $end);
- $temp = substr($temp, strlen($return) + $close_tag_length);
- }
- }
-
- if($return != null)
- {
- array_push($temp_r, $return);
- }
- }
- while($return != null && $multi_search);
-
- if(count($temp_r) > 0)
- {
- $return = $temp_r;
-
- if($multi_search == false)
- {
- $return = $return[0];
- }
- }
-
- return $return;
- }
- function parseLineCommentsFromFile($read_from = null)
- {
- if(empty($read_from))
- {
- $read_from = $this->xml_data;
- }
-
- $return_r = array();
- $temp = $read_from;
-
- do
- {
- $return = null;
-
- if(($start = strpos($temp, "<!--")) !== false)
- {
- $temp = substr($temp, $start + 4);
-
- if(($end = strpos($temp, "-->")) !== false)
- {
- $return = substr($temp, 0, $end);
- $temp = substr($temp, strlen($return) + 3);
- }
- }
-
- if($return != null)
- {
- array_push($return_r, $return);
- }
- }
- while($return != null);
-
- return $return_r;
- }
- function handleXmlZeroTagFallback($xml_tag)
- {
- return $this->tag_fallback_value;
- }
- function getXMLValues($xml_tag)
- {
- return $this->getXMLArrayValues($xml_tag);
- }
- function getXMLArrayValues($xml_tag)
- {
- return $this->getArrayValues($xml_tag, $this->xml_data);
- }
- function getArrayValues($xml_tag, $xml_match)
- {
- $xml_steps = explode("/", $xml_tag);
- $xml_steps_count = count($xml_steps);
- $this_xml = $xml_match;
-
- for($i = 0; $i < ($xml_steps_count - 2); $i++)
- {
- $this_xml = $this->getValue($xml_tag, $xml_steps[$i], $this_xml, false);
- }
-
- $xml_matches = $this->parseXMLString($xml_steps[($xml_steps_count - 2)], $this_xml);
- $xml_matches_count = count($xml_matches);
-
- $return_r = array();
- $extraction_tags = explode(",", end($xml_steps));
- $extraction_tags_count = count($extraction_tags);
-
- for($i = 0; $i < $xml_matches_count; $i++)
- {
- if($extraction_tags_count == 1)
- {
- $this_item = $this->getValue($xml_tag, $extraction_tags[0], $xml_matches[$i], false);
- array_push($return_r, $this_item);
- }
- else
- {
- if($i == 0)
- {
- foreach($extraction_tags as $extract)
- {
- $return_r[$extract] = array();
- }
- }
-
- foreach($extraction_tags as $extract)
- {
- $this_item = $this->getValue($xml_tag, $extract, $xml_matches[$i], false);
- array_push($return_r[$extract], $this_item);
- }
- }
- }
- return $return_r;
- }
- function setFileCaching($do_cache)
- {
- $this->xml_cache_file = ($do_cache == true);
- }
- function setTagCaching($do_cache)
- {
- $this->xml_cache_tags = ($do_cache == true);
- }
- function setCaching($do_cache)
- {
- $this->setFileCaching($do_cache);
- $this->setTagCaching($do_cache);
- }
-}
-
-?>