Ejemplo n.º 1
0
 public function render(Register $ParameterOutput)
 {
     $result = new XMLDocument();
     $root = $result->createElement($this->parameters()->{'root-element'});
     try {
         $filter_parent = isset($this->parameters()->parent) && $this->parameters()->parent != "";
         $filter_type = isset($this->parameters()->type) && $this->parameters()->type != "";
         if ($filter_parent && $filter_type) {
             $filtered_by_parent = new ViewIterator('/' . $this->parameters()->parent . '/');
             $iterator = array();
             foreach ($filtered_by_parent as $v) {
                 if (@in_array($type, $v->types)) {
                     $iterator[$v->guid] = $v;
                 }
             }
         } else {
             if ($filter_parent) {
                 $iterator = new ViewIterator('/' . $this->parameters()->parent . '/', false);
             } else {
                 if ($filter_type) {
                     $iterator = View::findFromType($this->parameters()->type);
                 } else {
                     $iterator = new ViewIterator(null, false);
                 }
             }
         }
         if (count($iterator) <= 0) {
             throw new DatasourceException("No views found.");
         } else {
             foreach ($iterator as $index => $view) {
                 if ($filter_parent) {
                     $view = $view->parent();
                 }
                 $node = $this->__buildPageXML($view);
                 if (!is_null($node)) {
                     $root->appendChild($result->importNode($node, true));
                 }
             }
         }
     } catch (FrontendPageNotFoundException $error) {
         FrontendPageNotFoundExceptionHandler::render($error);
     } catch (Exception $error) {
         $root->appendChild($result->createElement('error', General::sanitize($error->getMessage())));
     }
     $result->appendChild($root);
     return $result;
 }
Ejemplo n.º 2
0
 public function resolve($url = NULL)
 {
     try {
         if (is_null($url)) {
             $views = View::findFromType('index');
             self::$view = array_shift($views);
         } else {
             self::$view = View::loadFromURL($url);
         }
         if (!self::$view instanceof View) {
             throw new Exception('Page not found');
         }
         if (!Frontend::instance()->isLoggedIn() && in_array('admin', self::$view->types)) {
             $views = View::findFromType('403');
             self::$view = array_shift($views);
             if (!self::$view instanceof View) {
                 throw new SymphonyErrorPage(__('Please <a href="%s">login</a> to view this page.', array(ADMIN_URL . '/login/')), __('Forbidden'), NULL, array('HTTP/1.0 403 Forbidden'));
             }
         }
     } catch (Exception $e) {
         $views = View::findFromType('404');
         self::$view = array_shift($views);
         if (!self::$view instanceof View) {
             throw new FrontendPageNotFoundException($url);
         }
     }
 }