* @author Pavel Kulbakin
* @package General
*/
require_once dirname(__FILE__) . '/XmlImportConfig.php';
/**
* Represents a template
*/
class XmlImportTemplate {
/**
* Root element of the record that is being parsed
*
* @var SimpleXMLElement
*/
protected $xml;
/**
* file name of the cached template
*
* @var string
*/
protected $cachedTemplate;
protected $trimValues = TRUE;
/**
* Creates new instance
*
* @param SimpleXmlElement $xml
* @param string $cachedTemplate
*/
public function __construct($xml, $cachedTemplate)
{
$this->xml = $xml;
$this->cachedTemplate = $cachedTemplate;
$this->trimValues = apply_filters('wp_all_import_is_trim_parsed_data', $this->trimValues);
}
/**
* Parses a template using {@see $this->xml}
*
* @return string
*/
public function parse()
{
ob_start();
$err_lvl = error_reporting(E_ALL);
include $this->cachedTemplate;
error_reporting($err_lvl);
return ob_get_clean();
}
/**
* Get the value by XPath expression
*
* @param SimpleXmlElement $xpath XPath result
* @return mixed
*/
protected function getValue($xpath = array())
{
if (is_array($xpath) && count($xpath) > 0) {
$result = array();
foreach ($xpath as $xp) { // concatenate multiple elements into 1 string
ob_start();
echo $xp;
$result[] = $this->trimValues ? trim(ob_get_clean()) : ob_get_clean();
}
return implode(XmlImportConfig::getInstance()->getMultiGlue(), $result);
} else {
// return null if nothing found
return null;
}
}
}