<?php
/**
* ÐлаÑÑ Transformer.
*
* @package energine
* @subpackage core
* @author dr.Pavka
* @copyright ColoCall 2006
* @version $Id: Transformer.class.php,v 1.5 2008/04/01 14:06:09 pavka Exp $
*/
//require_once('core/framework/SystemConfig.class.php');
/**
* ТÑанÑÑоÑÐ¼ÐµÑ XML-докÑменÑа ÑÑÑаниÑÑ.
*
* @package energine
* @subpackage core
*/
class Transformer extends Object {
/**
* ÐиÑекÑоÑиÑ, где наÑ
одиÑÑÑ Ð¾Ñновной ÑÑанÑÑоÑмеÑ
*/
const MAIN_TRANSFORMER_DIR = 'site/transformers/';
/**
* ÐонÑÑÑÑкÑÐ¾Ñ ÐºÐ»Ð°ÑÑа.
*
* @access public
* @return void
*/
public function __construct() {
parent::__construct();
}
/**
* ТÑанÑÑоÑмиÑÑÐµÑ XML-докÑÐ¼ÐµÐ½Ñ ÑÑÑаниÑÑ Ð² вÑÑ
одной ÑоÑмаÑ.
*
* @param DOMDocument
* @param string
* @return string
* @access public
*/
public function transform($document, $transformerFilename = null) {
$xsltProc = new XSLTProcessor;
if (!isset($transformerFilename)) {
$transformerFilename = $this->getConfigValue('document.transformer');
}
if (empty($transformerFilename)) {
throw new SystemException('ERR_DEV_NO_TRANSFORMER', SystemException::ERR_DEVELOPER);
}
$transformerFilename = self::MAIN_TRANSFORMER_DIR.$transformerFilename;
if (!file_exists($transformerFilename)) {
throw new SystemException('ERR_DEV_NO_MAIN_TRANSFORMER', SystemException::ERR_DEVELOPER, $transformerFilename);
}
$xsltDoc = new DOMDocument('1.0', 'UTF-8');
if (!@$xsltDoc->load($transformerFilename)) {
throw new SystemException('ERR_DEV_NOT_WELL_FORMED_XSLT', SystemException::ERR_DEVELOPER);
}
$xsltProc->importStylesheet($xsltDoc);
$result = $xsltProc->transformToXml($document);
return $result;
}
}