Exemplo n.º 1
0
 /**
  * Generate string from $xmlWriter use $template for this.
  *
  * @param string     $template
  * @param XML\Writer $xmlWriter
  * @param array      $parameters
  *
  * @throws \DomainException
  * @throws \LogicException
  * @return string
  */
 public function render($template, \XSLTemplate\XML\Writer $xmlWriter, array $parameters = array())
 {
     $this->_currentParameters = $currentParameters = array_merge($this->getParameters(), $parameters);
     if (empty($currentParameters['render.types'])) {
         throw new \DomainException('render.types is not defined in renderer parameters');
     }
     //close all opened nodes in xml document
     $xmlWriter->endDocument();
     if (in_array(Renderer::RENDER_XML, $currentParameters['render.types']) && isset($currentParameters['only.xml']) && $currentParameters['only.xml'] == true) {
         return $this->renderXml($xmlWriter, $parameters);
     }
     $userAgent = isset($currentParameters['userAgent']) ? $currentParameters['userAgent'] : $_SERVER['HTTP_USER_AGENT'];
     if (in_array(Renderer::RENDER_BROWSER, $currentParameters['render.types']) && $this->isBrowserSupport($userAgent, $currentParameters['render.browsers'])) {
         if (!isset($currentParameters['templates.url'])) {
             throw new \DomainException('templates.url is not defined in renderer parameters, need for render on browser side');
         }
         return $this->renderBrowser($currentParameters['templates.url'] . $template, $xmlWriter, $currentParameters);
     }
     if (!isset($currentParameters['templates.path'])) {
         throw new \DomainException('templates.path is not defined in renderer parameters, need for render on server side with libxslt or xslcache');
     }
     if (in_array(Renderer::RENDER_XSL_CACHE, $currentParameters['render.types'])) {
         return $this->renderXslCache($currentParameters['templates.path'] . $template, $xmlWriter, $currentParameters);
     }
     if (in_array(Renderer::RENDER_LIB_XSLT, $currentParameters['render.types'])) {
         return $this->renderLibXslt($currentParameters['templates.path'] . $template, $xmlWriter, $currentParameters);
     }
     throw new \LogicException("Renderers for xsl transformation is not found");
 }