Error
Call to undefined method rex_null_addon::isActivated() Error thrown with message "Call to undefined method rex_null_addon::isActivated()" Stacktrace: #14 Error in rex:///module/48/output:35 #13 require in /home/httpd/vhosts/kommunisten.ch/httpdocs/redaxo/cache/addons/structure/1046.1.content:300 #12 require in /home/httpd/vhosts/kommunisten.ch/httpdocs/redaxo/src/addons/structure/plugins/content/lib/article_content.php:123 #11 rex_article_content:getArticle in rex:///template/14:187 #10 require in rex:///template/5:1 #9 require in /home/httpd/vhosts/kommunisten.ch/httpdocs/redaxo/src/addons/structure/plugins/content/lib/article_content_base.php:460 #8 rex_article_content_base:{closure} in /home/httpd/vhosts/kommunisten.ch/httpdocs/redaxo/src/core/lib/util/timer.php:63 #7 rex_timer:measure in /home/httpd/vhosts/kommunisten.ch/httpdocs/redaxo/src/addons/structure/plugins/content/lib/article_content_base.php:461 #6 rex_article_content_base:getArticleTemplate in /home/httpd/vhosts/kommunisten.ch/httpdocs/redaxo/src/addons/structure/plugins/content/boot.php:60 #5 rex_package:{closure} in /home/httpd/vhosts/kommunisten.ch/httpdocs/redaxo/src/core/lib/extension.php:52 #4 rex_extension:{closure} in /home/httpd/vhosts/kommunisten.ch/httpdocs/redaxo/src/core/lib/util/timer.php:63 #3 rex_timer:measure in /home/httpd/vhosts/kommunisten.ch/httpdocs/redaxo/src/core/lib/extension.php:63 #2 rex_extension:registerPoint in /home/httpd/vhosts/kommunisten.ch/httpdocs/redaxo/src/core/frontend.php:26 #1 require in /home/httpd/vhosts/kommunisten.ch/httpdocs/redaxo/src/core/boot.php:143 #0 require in /home/httpd/vhosts/kommunisten.ch/httpdocs/index.php:9
Stack frames (15)
14
Error
rex:///module/48/output35
13
require
/redaxo/cache/addons/structure/1046.1.content300
12
require
/redaxo/src/addons/structure/plugins/content/lib/article_content.php123
11
rex_article_content getArticle
rex:///template/14187
10
require
rex:///template/51
9
require
/redaxo/src/addons/structure/plugins/content/lib/article_content_base.php460
8
rex_article_content_base {closure}
/redaxo/src/core/lib/util/timer.php63
7
rex_timer measure
/redaxo/src/addons/structure/plugins/content/lib/article_content_base.php461
6
rex_article_content_base getArticleTemplate
/redaxo/src/addons/structure/plugins/content/boot.php60
5
rex_package {closure}
/redaxo/src/core/lib/extension.php52
4
rex_extension {closure}
/redaxo/src/core/lib/util/timer.php63
3
rex_timer measure
/redaxo/src/core/lib/extension.php63
2
rex_extension registerPoint
/redaxo/src/core/frontend.php26
1
require
/redaxo/src/core/boot.php143
0
require
/index.php9
//    -> Anpassung in slice_onoff-Addon notwendig:
//    -->> text/plain zu text/html
//    -->> isBackend() liefert true bei $REX['HiJacker'] = true
//-------------------------------------------------------------------------------------------

//-------------------------------------------------------------------------------------------
//
//    ACHTUNG REDAXO VERSION 4.2.0 und 4.2.1 haben einen 'getSlice()'-Bug, der vorher behoben werden muss ! In 4.3.2 ist der Bug behoben.
//
//    in der Datei redaxo/include/classes/class.ooarticleslice.inc.php
//    ca. bei Zeile 184 so aendern ( eine Zeile hinzufuegen ! )
//
//    $art = new rex_article_content();
//    $art->setEval(true);                 // <- adm csa hinzugefuegt 19.12.09
//    $art->setArticleId($this->getArticleId());
//
//-------------------------------------------------------------------------------------------

$do = true;
if(rex_addon::get('slice_onoff')->isActivated())
{
  if(SliceOnOff::instance()->isOnline(33074) === '0')
  {
    $do = false;
  }
}

if($do)
{

// Aus anderer Sprache spiegeln ...
if( /* REX_VALUE[3] */ '' != '' ) {
    $clangOfSource = /* REX_VALUE[3] */ '';
}
else {
    $clangOfSource = 0;                // Clang auf 0 setzten wenn keine Sprache ausgewählt wurde ...
}
// CType spiegeln ...
if( /* REX_VALUE[4] */ '' != '' ) {
    $CTypeOfSource = /* REX_VALUE[4] */ '';// Wenn Wert eingegeben wurde, den Wert nehmen ...
Arguments
  1. "Call to undefined method rex_null_addon::isActivated()"
    
/home/httpd/vhosts/kommunisten.ch/httpdocs/redaxo/cache/addons/structure/1046.1.content
    7 => NULL,
    8 => NULL,
    9 => NULL,
  ),
   'linklists' => 
  array (
    0 => NULL,
    1 => NULL,
    2 => NULL,
    3 => NULL,
    4 => NULL,
    5 => NULL,
    6 => NULL,
    7 => NULL,
    8 => NULL,
    9 => NULL,
  ),
));
require rex_stream::factory('module/48/output', <<<'EOD_B1191133390DC396B45B995A5D2CD5F74E6479B3'
<?php

//------------------------------------------------------------------------------------------
//    Slice-HiJacker2.1 ab REDAXO 4.2.x
//
//    Urspruengliche Erstfassung: Mirco Brandes / Gerald Rusche GERUWEB
//    ( Redaxo 4.1 OHNE Sprachen und CType )
//
//    Komplett-Ueberarbeitung (Neufassung) von 19.12.09 asgari-design | Cambiz Seyed-Asgari ( openmind )
//    -> CType + Sprachen
//    -> Fehlermeldung, wenn Artikel / Slice nicht mehr existiert
//    -> Deutlichere Backendausgabe (Alias-Unterscheidung, Meldungen)
//   
//    Funktionsfähigkeit mit slice_onoff-Addon ergänzt am 13.03.2011 von Jan-Goldacker.de
//    -> wenn $do = true und $REX['HiJacker'] = true;
//    -> Anpassung in slice_onoff-Addon notwendig:
//    -->> text/plain zu text/html
//    -->> isBackend() liefert true bei $REX['HiJacker'] = true
//-------------------------------------------------------------------------------------------

//-------------------------------------------------------------------------------------------
/home/httpd/vhosts/kommunisten.ch/httpdocs/redaxo/src/addons/structure/plugins/content/lib/article_content.php
        // bc
        if ($this->viasql) {
            return parent::getArticle($curctype);
        }
 
        $this->ctype = $curctype;
 
        if (!$this->getSlice && 0 != $this->article_id) {
            // article caching
            ob_start();
            try {
                ob_implicit_flush(0);
 
                $articleContentFile = rex_path::addonCache('structure', $this->article_id . '.' . $this->clang . '.content');
 
                if (!is_file($articleContentFile)) {
                    rex_content_service::generateArticleContent($this->article_id, $this->clang);
                }
 
                require $articleContentFile;
            } finally {
                $CONTENT = ob_get_clean();
                assert(is_string($CONTENT));
            }
        } else {
            // Inhalt ueber sql generierens
            $CONTENT = parent::getArticle($curctype);
        }
 
        return rex_extension::registerPoint(new rex_extension_point('ART_CONTENT', $CONTENT, [
            'ctype' => $curctype,
            'article' => $this,
        ]));
    }
 
    public function getCurrentSlice(): rex_article_slice
    {
        if ($this->viasql) {
            return parent::getCurrentSlice();
        }
Arguments
  1. "/home/httpd/vhosts/kommunisten.ch/httpdocs/redaxo/cache/addons/structure/1046.1.content"
    
            $nav .= '</ul>';
         } // END by if ($lev1Size != "0"):
      }
      $nav .= '</li>';

   endif; // END by if ($lev1->isOnline())
}
$nav .= '</ul>';
// END 1st level categories

print $nav;
?>
        </section>

    </nav>

    <main>
        <article>
<?php
   print $this->getArticle(1);
?>
        </article>
 
Arguments
  1. 1
    
<?= /* REX_TEMPLATE[14] */ rex_var_template::getTemplateOutput(14, new rex_timer(), require rex_var_template::getTemplateStream(14, $this)), "\r\n" ?>

        <aside>
<h2>Schuldokumentation über KPS und PdA</h3>
<p>Vortrag über PdA oder CH-Kommunismus in der Schule? 
Hier gibt&#8217;s eine Präsentation mit Dokumentation.</p>
<p>
<a href="index.php?article_id=53" title="" >mehr ...</a></p><p>&#x00A0;&#x00A0;</p>
<h2>Arbeiterlieder</h3>
<p>Lieder gehören zum kulturellen Erbe der Arbeiterbewegung. Sie drücken die Forderungen bewusster Arbeiterinnen und Arbeiter wie die Ziele sozialer Bewegungen aus. 
Hier sind Notenblätter und Audiodateien zu finden.</p>
<p>
<a href="index.php?article_id=49" title="" >mehr ...</a>&#x00A0;&#x00A0;

<?= /* REX_TEMPLATE[15] */ rex_var_template::getTemplateOutput(15, new rex_timer(), require rex_var_template::getTemplateStream(15, $this)) ?>
Arguments
  1. "rex:///template/14"
    
/home/httpd/vhosts/kommunisten.ch/httpdocs/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(0);
 
                $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
  1. "rex:///template/5"
    
/home/httpd/vhosts/kommunisten.ch/httpdocs/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,
/home/httpd/vhosts/kommunisten.ch/httpdocs/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(0);
 
                $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";
Arguments
  1. "Template: 5"
    
  2. Closure() {#92 …4}
    
/home/httpd/vhosts/kommunisten.ch/httpdocs/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 $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) {
    static $urls = [
/home/httpd/vhosts/kommunisten.ch/httpdocs/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.
     *
     * @param string|string[] $extensionPoint Name(s) of extension point(s)
     * @param callable        $extension      Callback extension
Arguments
  1. rex_extension_point {#74}
    
/home/httpd/vhosts/kommunisten.ch/httpdocs/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,
/home/httpd/vhosts/kommunisten.ch/httpdocs/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.
     *
     * @param string|string[] $extensionPoint Name(s) of extension point(s)
     * @param callable        $extension      Callback extension
     * @param self::*         $level          Runlevel (`rex_extension::EARLY`, `rex_extension::NORMAL` or `rex_extension::LATE`)
     * @param array           $params         Additional params
     * @return void
     *
     * @template T as rex_extension_point
     * @psalm-param callable(T):mixed $extension
     */
    public static function register($extensionPoint, callable $extension, $level = self::NORMAL, array $params = [])
    {
        if ($factoryClass = static::getExplicitFactoryClass()) {
            $factoryClass::register($extensionPoint, $extension, $level, $params);
Arguments
  1. "EP: FE_OUTPUT"
    
  2. Closure() {#75 …3}
    
/home/httpd/vhosts/kommunisten.ch/httpdocs/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);
}
 
Arguments
  1. rex_extension_point {#74}
    
/home/httpd/vhosts/kommunisten.ch/httpdocs/redaxo/src/core/boot.php
    $clangId = rex_request('clang', 'int', rex_clang::getStartId());
    if (rex::isBackend() || rex_clang::exists($clangId)) {
        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='.rex::getProperty('hsts_max_age', 31536000)); // default 1 year
    }
}
 
if (isset($REX['LOAD_PAGE']) && $REX['LOAD_PAGE']) {
    unset($REX);
    require rex_path::core(rex::isBackend() ? 'backend.php' : 'frontend.php');
}
 
Arguments
  1. "/home/httpd/vhosts/kommunisten.ch/httpdocs/redaxo/src/core/frontend.php"
    
/home/httpd/vhosts/kommunisten.ch/httpdocs/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
  1. "/home/httpd/vhosts/kommunisten.ch/httpdocs/redaxo/src/core/boot.php"
    

Environment & details:

Key Value
article_id
"1046"
empty
empty
empty
empty
Key Value
PATH
"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
PP_CUSTOM_PHP_INI
"/home/httpd/vhosts/system/kommunisten.ch/etc/php.ini"
PP_CUSTOM_PHP_CGI_INDEX
"plesk-php73-fastcgi"
HTTP_CONNECTION
"close"
SCRIPT_NAME
"/index.php"
REQUEST_URI
"/index.php?article_id=1046"
QUERY_STRING
"article_id=1046"
REQUEST_METHOD
"GET"
SERVER_PROTOCOL
"HTTP/1.1"
GATEWAY_INTERFACE
"CGI/1.1"
REMOTE_PORT
"37192"
SCRIPT_FILENAME
"/home/httpd/vhosts/kommunisten.ch/httpdocs/index.php"
SERVER_ADMIN
"root@localhost"
CONTEXT_DOCUMENT_ROOT
"/home/httpd/vhosts/kommunisten.ch/httpdocs"
CONTEXT_PREFIX
""
REQUEST_SCHEME
"https"
DOCUMENT_ROOT
"/home/httpd/vhosts/kommunisten.ch/httpdocs"
REMOTE_ADDR
"18.212.87.137"
SERVER_PORT
"443"
SERVER_ADDR
"80.74.132.2"
SERVER_NAME
"kommunisten.ch"
SERVER_SOFTWARE
"Apache"
SERVER_SIGNATURE
""
HTTP_HOST
"kommunisten.ch"
HTTP_REFERER
"http://www.kommunisten.ch/index.php?article_id=1046"
HTTP_USER_AGENT
"claudebot"
HTTP_ACCEPT
"*/*"
SSL_TLS_SNI
"kommunisten.ch"
HTTPS
"on"
PERL5LIB
"/usr/share/awstats/lib:/usr/share/awstats/plugins"
SCRIPT_URI
"https://kommunisten.ch/index.php"
SCRIPT_URL
"/index.php"
UNIQUE_ID
"ZgYlIqqZ1B068pQDW1OPAgAAABU"
FCGI_ROLE
"RESPONDER"
PHP_SELF
"/index.php"
REQUEST_TIME_FLOAT
1711678754.6086
REQUEST_TIME
1711678754
empty
0. Whoops\Handler\PrettyPageHandler
Report a REDAXO bug