/mnt/web006/d3/46/56998646/htdocs/redaxo2022/redaxo/src/addons/structure/lib/navigation.php
if (!$result) {
return false;
}
}
}
return true;
}
/**
* @param int $categoryId
* @param int $depth
*
* @return string
*/
protected function _getNavigation($categoryId, $depth = 1)
{
if ($categoryId < 1) {
$navObj = rex_category::getRootCategories();
} else {
$navObj = rex_category::get($categoryId)->getChildren();
}
$lis = [];
foreach ($navObj as $nav) {
$li = [];
$a = [];
$li['class'] = [];
$a['class'] = [];
$a['href'] = [$nav->getUrl()];
$aContent = rex_escape($nav->getName());
if ($this->checkFilter($nav, $depth) && $this->checkCallbacks($nav, $depth, $li, $a, $aContent)) {
$li['class'][] = 'rex-article-' . $nav->getId();
// classes abhaengig vom pfad
if ($nav->getId() == $this->currentCategoryId) {
$li['class'][] = 'rex-current';
$a['class'][] = 'rex-current';
} elseif (in_array($nav->getId(), $this->path)) {
$li['class'][] = 'rex-active';
$a['class'][] = 'rex-active';
} else {
Arguments
"Call to a member function getChildren() on null"
/mnt/web006/d3/46/56998646/htdocs/redaxo2022/redaxo/src/addons/structure/lib/navigation.php
* @param int $categoryId Id der Wurzelkategorie
* @param int $depth Anzahl der Ebenen die angezeigt werden sollen
* @param bool $open True, wenn nur Elemente der aktiven Kategorie angezeigt werden sollen, sonst FALSE
* @param bool $ignoreOfflines FALSE, wenn offline Elemente angezeigt werden, sonst TRUE
*
* @return string
*/
public function get($categoryId = 0, $depth = 3, $open = false, $ignoreOfflines = false)
{
if (!$this->_setActivePath()) {
return '';
}
$this->depth = $depth;
$this->open = $open;
if ($ignoreOfflines) {
$this->addFilter('status', 1, '==');
}
return $this->_getNavigation($categoryId);
}
/**
* @see get()
*
* @param int $categoryId
* @param int $depth
* @param bool $open
* @param bool $ignoreOfflines
* @return void
*/
public function show($categoryId = 0, $depth = 3, $open = false, $ignoreOfflines = false)
{
echo $this->get($categoryId, $depth, $open, $ignoreOfflines);
}
/**
* Generiert eine Breadcrumb-Navigation.
*
* @param string|false $startPageLabel Label der Startseite, falls FALSE keine Start-Page anzeigen
</div>
<!-- = Content ================================================================ -->
<div id="content" class="p20">
<?php echo $this->getArticle('4'); ?>
<div class="container">
<!-- links -->
<div class="col-lg-9 col-md-9 col-sm-12 col-xs-12"><?php echo $this->getArticle('1'); ?></div>
<!-- links -->
<!-- rechts -->
<div class="col-lg-3 col-md-3 col-sm-12 col-xs-12">
<div class="mtb"></div>
<div id="seitmenu">
<?php
$P = explode("|",$this->getValue("path").$this->getValue("article_id")."|");
$rexnav2 = rex_navigation::factory();
$rexnav2->addFilter('cat_domain', '~\|right\|~ism', 'regex');
$rexnav2->addCallback('rex_ycom_auth::articleIsPermitted');
echo $rexnav2->get($P[1],5,FALSE,TRUE);
?>
</div>
<?php echo $this->getArticle('2'); ?>
</div>
<!-- rechts -->
</div>
<?php echo $this->getArticle('3'); ?>
<div class="clear"></div>
</div>
<?= /* REX_TEMPLATE[5] */ rex_var_template::getTemplateOutput(5, new rex_timer(), require rex_var_template::getTemplateStream(5, $this)), "\r\n" ?>
</body>
</html>
/mnt/web006/d3/46/56998646/htdocs/redaxo2022/redaxo/src/addons/structure/plugins/content/lib/article_content_base.php
}
// ----- Template inklusive Artikel zurückgeben
/**
* @return string
*/
public function getArticleTemplate()
{
if (0 != $this->template_id && 0 != $this->article_id) {
ob_start();
try {
ob_implicit_flush(false);
$TEMPLATE = new rex_template($this->template_id);
rex_timer::measure('Template: ' . ($TEMPLATE->getKey() ?? $TEMPLATE->getId()), function () use ($TEMPLATE) {
$tplContent = $this->replaceCommonVars($TEMPLATE->getTemplate());
require rex_stream::factory('template/' . $this->template_id, $tplContent);
});
} finally {
$CONTENT = ob_get_clean();
}
return $this->replaceLinks($CONTENT);
}
return 'no template';
}
/**
* @param string $path
* @param string $content
* @return string
*/
protected function getStreamOutput($path, $content)
{
if (!$this->eval) {
$key = 'EOD_' . strtoupper(sha1((string) time()));
Arguments
/mnt/web006/d3/46/56998646/htdocs/redaxo2022/redaxo/src/core/lib/util/timer.php
*
* On sufficient user permissions - or in debug mode - this timings will be sent over the wire to the browser via server timing api http headers.
*
* @template T
*
* @param string $label
* @param callable():T $callable
*
* @return T result of callable
*/
public static function measure($label, callable $callable)
{
if (!rex::isDebugMode()) {
return $callable();
}
$timer = new self();
try {
return $callable();
} finally {
$timer->stop();
self::measured($label, $timer);
}
}
/**
* Saves the measurement of the given timer.
*
* This method should be used only if the measured code can not be wrapped inside a callable, otherwise use `measure()`.
*/
public static function measured(string $label, self $timer): void
{
$duration = self::$serverTimings[$label]['sum'] ?? 0;
$duration += $timer->getDelta(self::MILLISEC);
self::$serverTimings[$label]['sum'] = $duration;
self::$serverTimings[$label]['timings'][] = [
'start' => $timer->start,
/mnt/web006/d3/46/56998646/htdocs/redaxo2022/redaxo/src/addons/structure/plugins/content/lib/article_content_base.php
// ----- Template inklusive Artikel zurückgeben
/**
* @return string
*/
public function getArticleTemplate()
{
if (0 != $this->template_id && 0 != $this->article_id) {
ob_start();
try {
ob_implicit_flush(false);
$TEMPLATE = new rex_template($this->template_id);
rex_timer::measure('Template: ' . ($TEMPLATE->getKey() ?? $TEMPLATE->getId()), function () use ($TEMPLATE) {
$tplContent = $this->replaceCommonVars($TEMPLATE->getTemplate());
require rex_stream::factory('template/' . $this->template_id, $tplContent);
});
} finally {
$CONTENT = ob_get_clean();
}
return $this->replaceLinks($CONTENT);
}
return 'no template';
}
/**
* @param string $path
* @param string $content
* @return string
*/
protected function getStreamOutput($path, $content)
{
if (!$this->eval) {
$key = 'EOD_' . strtoupper(sha1((string) time()));
return "require rex_stream::factory('$path', <<<'$key'\n$content\n$key);\n";
/mnt/web006/d3/46/56998646/htdocs/redaxo2022/redaxo/src/addons/structure/plugins/content/boot.php
$content = $ep->getSubject();
$article = new rex_article_content();
$article->setCLang(rex_clang::getCurrentId());
if (!$article->setArticleId(rex_article::getCurrentId())) {
if (!rex::isDebugMode() && !rex_backend_login::hasSession()) {
throw new rex_exception('Article with id ' . rex_article::getCurrentId() . ' does not exist');
}
$fragment = new rex_fragment([
'content' => '<p><b>Article with ID ' . rex_article::getCurrentId() . ' not found.</b><br />If this is a fresh setup, an article must be created first.<br />Enter <a href="' . rex_url::backendController() . '">REDAXO</a>.</p>',
]);
$content .= $fragment->parse('core/fe_ooops.php');
rex_response::sendPage($content);
exit;
}
try {
$content .= $article->getArticleTemplate();
} catch (rex_article_not_found_exception) {
$article = new rex_article_content();
$article->setCLang(rex_clang::getCurrentId());
$article->setArticleId(rex_article::getNotfoundArticleId());
$content .= $article->getArticleTemplate();
}
$artId = $article->getArticleId();
if ($artId == rex_article::getNotfoundArticleId() && $artId != rex_article::getSiteStartArticleId()) {
rex_response::setStatus(rex_response::HTTP_NOT_FOUND);
}
// ----- inhalt ausgeben
rex_response::sendPage($content, $article->getValue('updatedate'));
});
}
rex_extension::register('EDITOR_URL', static function (rex_extension_point $ep) {
$urls = [
/mnt/web006/d3/46/56998646/htdocs/redaxo2022/redaxo/src/core/lib/extension.php
*/
public static function registerPoint(rex_extension_point $extensionPoint)
{
if ($factoryClass = static::getExplicitFactoryClass()) {
return $factoryClass::registerPoint($extensionPoint);
}
$name = $extensionPoint->getName();
rex_timer::measure('EP: ' . $name, static function () use ($extensionPoint, $name) {
foreach ([self::EARLY, self::NORMAL, self::LATE] as $level) {
if (!isset(self::$extensions[$name][$level]) || !is_array(self::$extensions[$name][$level])) {
continue;
}
foreach (self::$extensions[$name][$level] as $extensionAndParams) {
[$extension, $params] = $extensionAndParams;
$extensionPoint->setExtensionParams($params);
/** @var T|null $subject */
$subject = call_user_func($extension, $extensionPoint);
// Update subject only if the EP is not readonly and the extension has returned something
if ($extensionPoint->isReadonly()) {
continue;
}
if (null === $subject) {
continue;
}
$extensionPoint->setSubject($subject);
}
}
});
return $extensionPoint->getSubject();
}
/**
* Registers an extension for an extension point.
*
* @template T as rex_extension_point
* @param string|string[] $extensionPoint Name(s) of extension point(s)
/mnt/web006/d3/46/56998646/htdocs/redaxo2022/redaxo/src/core/lib/util/timer.php
*
* On sufficient user permissions - or in debug mode - this timings will be sent over the wire to the browser via server timing api http headers.
*
* @template T
*
* @param string $label
* @param callable():T $callable
*
* @return T result of callable
*/
public static function measure($label, callable $callable)
{
if (!rex::isDebugMode()) {
return $callable();
}
$timer = new self();
try {
return $callable();
} finally {
$timer->stop();
self::measured($label, $timer);
}
}
/**
* Saves the measurement of the given timer.
*
* This method should be used only if the measured code can not be wrapped inside a callable, otherwise use `measure()`.
*/
public static function measured(string $label, self $timer): void
{
$duration = self::$serverTimings[$label]['sum'] ?? 0;
$duration += $timer->getDelta(self::MILLISEC);
self::$serverTimings[$label]['sum'] = $duration;
self::$serverTimings[$label]['timings'][] = [
'start' => $timer->start,
/mnt/web006/d3/46/56998646/htdocs/redaxo2022/redaxo/src/core/lib/extension.php
if (!isset(self::$extensions[$name][$level]) || !is_array(self::$extensions[$name][$level])) {
continue;
}
foreach (self::$extensions[$name][$level] as $extensionAndParams) {
[$extension, $params] = $extensionAndParams;
$extensionPoint->setExtensionParams($params);
/** @var T|null $subject */
$subject = call_user_func($extension, $extensionPoint);
// Update subject only if the EP is not readonly and the extension has returned something
if ($extensionPoint->isReadonly()) {
continue;
}
if (null === $subject) {
continue;
}
$extensionPoint->setSubject($subject);
}
}
});
return $extensionPoint->getSubject();
}
/**
* Registers an extension for an extension point.
*
* @template T as rex_extension_point
* @param string|string[] $extensionPoint Name(s) of extension point(s)
* @param callable(T):mixed $extension Callback extension
* @param self::* $level Runlevel (`rex_extension::EARLY`, `rex_extension::NORMAL` or `rex_extension::LATE`)
* @param array $params Additional params
* @return void
*/
public static function register($extensionPoint, callable $extension, $level = self::NORMAL, array $params = [])
{
if ($factoryClass = static::getExplicitFactoryClass()) {
$factoryClass::register($extensionPoint, $extension, $level, $params);
return;
}
/mnt/web006/d3/46/56998646/htdocs/redaxo2022/redaxo/src/core/frontend.php
if (rex::isSetup()) {
rex_response::sendRedirect(rex_url::backendController());
}
if (rex::isDebugMode()) {
header('X-Robots-Tag: noindex, nofollow, noarchive');
}
// ----- INCLUDE ADDONS
include_once rex_path::core('packages.php');
// ----- caching end für output filter
$CONTENT = ob_get_clean();
// trigger api functions. the api function is responsible for checking permissions.
rex_api_function::handleCall();
if (rex_extension::isRegistered('FE_OUTPUT')) {
// ----- EXTENSION POINT
rex_extension::registerPoint(new rex_extension_point('FE_OUTPUT', $CONTENT));
} else {
// ----- inhalt ausgeben
rex_response::sendPage($CONTENT);
}
/mnt/web006/d3/46/56998646/htdocs/redaxo2022/redaxo/src/core/boot.php
rex_clang::setCurrentId($clangId);
}
}
// ----------------- HTTPS REDIRECT
if ('cli' !== PHP_SAPI && !rex::isSetup()) {
if ((true === rex::getProperty('use_https') || rex::getEnvironment() === rex::getProperty('use_https')) && !rex_request::isHttps()) {
rex_response::enforceHttps();
}
if (true === rex::getProperty('use_hsts') && rex_request::isHttps()) {
rex_response::setHeader('Strict-Transport-Security', 'max-age='.(int) rex::getProperty('hsts_max_age', 31536000)); // default 1 year
}
}
rex_extension::register('SESSION_REGENERATED', [rex_backend_login::class, 'sessionRegenerated']);
if (isset($REX['LOAD_PAGE']) && $REX['LOAD_PAGE']) {
unset($REX);
require rex_path::core(rex::isBackend() ? 'backend.php' : 'frontend.php');
}
Arguments
"/mnt/web006/d3/46/56998646/htdocs/redaxo2022/redaxo/src/core/frontend.php"
/mnt/web006/d3/46/56998646/htdocs/redaxo2022/index.php
<?php
unset($REX);
$REX['REDAXO'] = false;
$REX['HTDOCS_PATH'] = './';
$REX['BACKEND_FOLDER'] = 'redaxo';
$REX['LOAD_PAGE'] = true;
require $REX['BACKEND_FOLDER'] . '/src/core/boot.php';
Arguments
"/mnt/web006/d3/46/56998646/htdocs/redaxo2022/redaxo/src/core/boot.php"