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; }
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); } } }