Esempio n. 1
0
    function transform($xslfile, $xml, $no_dbg = false)
    {
        if (Param('_DBG') && !$no_dbg) {
            //print_r(debug_backtrace());
            //setcookie('111', '222');
            //die();
            header("Content-type: text/xml");
            print trim($xml);
            die;
        }
        //$phpver = explode('.', PHP_VERSION);
        //if ($phpver[0] == 5) {
        if (extension_loaded('xslcache')) {
            $xslt = new xsltCache();
            $xslt->importStyleSheet($xslfile);
        } else {
            $xslt = new xsltProcessor();
            $xsltDoc = DomDocument::load($xslfile);
            $xslt->importStyleSheet($xsltDoc);
        }
        $doc = new DOMDocument();
        $load_succesfull = $doc->loadXML($xml);
        if ((!$load_succesfull || @$_GET['_BAD_XML_TEST']) && !Param('_DBG')) {
            //error
            //Redirect( '/error.php?error=xml&url='.$_SERVER['REQUEST_URI'] );
            if (SITE == 'http://dev.starhit.ru') {
                die(file_get_contents('http://www.starhit.ru/error.php?error=xml'));
            }
            die(file_get_contents(SITE . '/error.php?error=xml'));
        } else {
            $galleries = $doc->getElementsByTagName('gallery');
            foreach ($galleries as $gallery) {
                $images = $gallery->getElementsByTagName('image');
                foreach ($images as $image) {
                    foreach ($this->dsp->ae->size as $size => $params) {
                        $img = $image->getElementsByTagName($size)->item(0);
                        $width = $img->getAttribute('width');
                        if (!$width) {
                            $img_sizes = $this->dsp->eis->GetSizeByURL($img->nodeValue);
                            $img->setAttribute('width', $img_sizes[0]);
                            $img->setAttribute('height', $img_sizes[1]);
                        }
                    }
                }
            }
            $result = $xslt->transformToXML($doc);
        }
        //}
        if (@$_GET['XSLT_INFO']) {
            echo '$xslt->hasExsltSupport(): ' . $xslt->hasExsltSupport() . '
			$xslfile: ' . $xslfile . '
			extension_loaded("xslcache"): ' . extension_loaded("xslcache") . '
			XSL_CLONE_AUTO: ' . XSL_CLONE_AUTO . '
			XSL_CLONE_NEVER: ' . XSL_CLONE_NEVER . '
			XSL_CLONE_ALWAYS: ' . XSL_CLONE_ALWAYS . '
			LIBXSLT_VERSION: ' . LIBXSLT_VERSION . '
			LIBXSLT_DOTTED_VERSION: ' . LIBXSLT_DOTTED_VERSION . '
			LIBEXSLT_VERSION: ' . LIBEXSLT_VERSION . '
			LIBEXSLT_DOTTED_VERSION: ' . LIBEXSLT_DOTTED_VERSION . '
			$xslt: ' . print_r($xslt, 1) . '
			';
            var_dump($doc->saveXML(), $xsltDoc->saveXML(), $xslt->transformToXML($doc));
            die;
        }
        return $result;
    }