Crikey! There was an error...
Error
Class "RocketTheme\Toolbox\File\File" not found
Previous exceptions
  • Class "RocketTheme\Toolbox\File\File" not found (0)
Error thrown with message "Class "RocketTheme\Toolbox\File\File" not found" Stacktrace: #41 Error in /hp/cj/ac/pt/www/libraries/gantry5/vendor/rockettheme/toolbox/File/src/YamlFile.php:20 #40 include in /hp/cj/ac/pt/www/libraries/vendor/composer/ClassLoader.php:576 #39 {closure:Composer\Autoload\ClassLoader::initializeIncludeClosure():575} in /hp/cj/ac/pt/www/libraries/vendor/composer/ClassLoader.php:427 #38 Composer\Autoload\ClassLoader:loadClass in /hp/cj/ac/pt/www/libraries/gantry5/src/classes/Gantry/Component/File/CompiledYamlFile.php:25 #37 include in /hp/cj/ac/pt/www/libraries/vendor/composer/ClassLoader.php:576 #36 {closure:Composer\Autoload\ClassLoader::initializeIncludeClosure():575} in /hp/cj/ac/pt/www/libraries/vendor/composer/ClassLoader.php:427 #35 Composer\Autoload\ClassLoader:loadClass in /hp/cj/ac/pt/www/libraries/gantry5/src/classes/Gantry/Component/Theme/AbstractTheme.php:221 #34 Gantry\Component\Theme\AbstractTheme:init in /hp/cj/ac/pt/www/libraries/gantry5/src/classes/Gantry/Framework/Theme.php:155 #33 Gantry\Framework\Theme:init in /hp/cj/ac/pt/www/libraries/gantry5/src/classes/Gantry/Component/Theme/AbstractTheme.php:71 #32 Gantry\Component\Theme\AbstractTheme:__construct in /hp/cj/ac/pt/www/templates/g5_hydrogen/includes/theme.php:35 #31 plgSystemGantry5:{closure:/hp/cj/ac/pt/www/templates/g5_hydrogen/includes/theme.php:34} in /hp/cj/ac/pt/www/libraries/gantry5/compat/vendor/pimple/pimple/src/Pimple/Container.php:122 #30 Pimple\Container:offsetGet in /hp/cj/ac/pt/www/templates/g5_hydrogen/error.php:30 #29 require in /hp/cj/ac/pt/www/libraries/src/Document/HtmlDocument.php:734 #28 Joomla\CMS\Document\HtmlDocument:_loadTemplate in /hp/cj/ac/pt/www/libraries/src/Document/HtmlDocument.php:788 #27 Joomla\CMS\Document\HtmlDocument:_fetchTemplate in /hp/cj/ac/pt/www/libraries/src/Document/HtmlDocument.php:625 #26 Joomla\CMS\Document\HtmlDocument:parse in /hp/cj/ac/pt/www/libraries/src/Document/HtmlDocument.php:643 #25 Joomla\CMS\Document\HtmlDocument:render in /hp/cj/ac/pt/www/libraries/src/Document/ErrorDocument.php:139 #24 Joomla\CMS\Document\ErrorDocument:render in /hp/cj/ac/pt/www/libraries/src/Error/Renderer/HtmlRenderer.php:70 #23 Joomla\CMS\Error\Renderer\HtmlRenderer:render in /hp/cj/ac/pt/www/libraries/src/Exception/ExceptionHandler.php:142 #22 Joomla\CMS\Exception\ExceptionHandler:render in /hp/cj/ac/pt/www/libraries/src/Exception/ExceptionHandler.php:76 #21 Joomla\CMS\Exception\ExceptionHandler:handleException in /hp/cj/ac/pt/www/libraries/src/Application/CMSApplication.php:334 #20 Error in /hp/cj/ac/pt/www/libraries/gantry5/vendor/rockettheme/toolbox/File/src/YamlFile.php:20 #19 include in /hp/cj/ac/pt/www/libraries/vendor/composer/ClassLoader.php:576 #18 {closure:Composer\Autoload\ClassLoader::initializeIncludeClosure():575} in /hp/cj/ac/pt/www/libraries/vendor/composer/ClassLoader.php:427 #17 Composer\Autoload\ClassLoader:loadClass in /hp/cj/ac/pt/www/libraries/gantry5/src/classes/Gantry/Component/File/CompiledYamlFile.php:25 #16 include in /hp/cj/ac/pt/www/libraries/vendor/composer/ClassLoader.php:576 #15 {closure:Composer\Autoload\ClassLoader::initializeIncludeClosure():575} in /hp/cj/ac/pt/www/libraries/vendor/composer/ClassLoader.php:427 #14 Composer\Autoload\ClassLoader:loadClass in /hp/cj/ac/pt/www/libraries/gantry5/src/classes/Gantry/Component/Theme/AbstractTheme.php:221 #13 Gantry\Component\Theme\AbstractTheme:init in /hp/cj/ac/pt/www/libraries/gantry5/src/classes/Gantry/Framework/Theme.php:155 #12 Gantry\Framework\Theme:init in /hp/cj/ac/pt/www/libraries/gantry5/src/classes/Gantry/Component/Theme/AbstractTheme.php:71 #11 Gantry\Component\Theme\AbstractTheme:__construct in /hp/cj/ac/pt/www/templates/g5_hydrogen/includes/theme.php:35 #10 plgSystemGantry5:{closure:/hp/cj/ac/pt/www/templates/g5_hydrogen/includes/theme.php:34} in /hp/cj/ac/pt/www/libraries/gantry5/compat/vendor/pimple/pimple/src/Pimple/Container.php:122 #9 Pimple\Container:offsetGet in /hp/cj/ac/pt/www/plugins/system/gantry5/gantry5.php:305 #8 plgSystemGantry5:onAfterRouteSite in /hp/cj/ac/pt/www/plugins/system/gantry5/gantry5.php:110 #7 plgSystemGantry5:onAfterRoute in /hp/cj/ac/pt/www/libraries/src/Plugin/CMSPlugin.php:320 #6 Joomla\CMS\Plugin\CMSPlugin:{closure:Joomla\CMS\Plugin\CMSPlugin::registerLegacyListener():304} in /hp/cj/ac/pt/www/libraries/vendor/joomla/event/src/Dispatcher.php:454 #5 Joomla\Event\Dispatcher:dispatch in /hp/cj/ac/pt/www/libraries/vendor/joomla/application/src/AbstractApplication.php:99 #4 Joomla\Application\AbstractApplication:dispatchEvent in /hp/cj/ac/pt/www/libraries/src/Application/SiteApplication.php:811 #3 Joomla\CMS\Application\SiteApplication:route in /hp/cj/ac/pt/www/libraries/src/Application/SiteApplication.php:243 #2 Joomla\CMS\Application\SiteApplication:doExecute in /hp/cj/ac/pt/www/libraries/src/Application/CMSApplication.php:304 #1 Joomla\CMS\Application\CMSApplication:execute in /hp/cj/ac/pt/www/includes/app.php:58 #0 require_once in /hp/cj/ac/pt/www/index.php:51
Stack frames (42)
41
Error
/vendor/rockettheme/toolbox/File/src/YamlFile.php20
40
include
/hp/cj/ac/pt/www/libraries/vendor/composer/ClassLoader.php576
39
{closure:Composer\Autoload\ClassLoader::initializeIncludeClosure():575}
/hp/cj/ac/pt/www/libraries/vendor/composer/ClassLoader.php427
38
Composer\Autoload\ClassLoader loadClass
/src/classes/Gantry/Component/File/CompiledYamlFile.php25
37
include
/hp/cj/ac/pt/www/libraries/vendor/composer/ClassLoader.php576
36
{closure:Composer\Autoload\ClassLoader::initializeIncludeClosure():575}
/hp/cj/ac/pt/www/libraries/vendor/composer/ClassLoader.php427
35
Composer\Autoload\ClassLoader loadClass
/src/classes/Gantry/Component/Theme/AbstractTheme.php221
34
Gantry\Component\Theme\AbstractTheme init
/src/classes/Gantry/Framework/Theme.php155
33
Gantry\Framework\Theme init
/src/classes/Gantry/Component/Theme/AbstractTheme.php71
32
Gantry\Component\Theme\AbstractTheme __construct
/hp/cj/ac/pt/www/templates/g5_hydrogen/includes/theme.php35
31
plgSystemGantry5 {closure:/hp/cj/ac/pt/www/templates/g5_hydrogen/includes/theme.php:34}
/compat/vendor/pimple/pimple/src/Pimple/Container.php122
30
Pimple\Container offsetGet
/hp/cj/ac/pt/www/templates/g5_hydrogen/error.php30
29
require
/hp/cj/ac/pt/www/libraries/src/Document/HtmlDocument.php734
28
Joomla\CMS\Document\HtmlDocument _loadTemplate
/hp/cj/ac/pt/www/libraries/src/Document/HtmlDocument.php788
27
Joomla\CMS\Document\HtmlDocument _fetchTemplate
/hp/cj/ac/pt/www/libraries/src/Document/HtmlDocument.php625
26
Joomla\CMS\Document\HtmlDocument parse
/hp/cj/ac/pt/www/libraries/src/Document/HtmlDocument.php643
25
Joomla\CMS\Document\HtmlDocument render
/hp/cj/ac/pt/www/libraries/src/Document/ErrorDocument.php139
24
Joomla\CMS\Document\ErrorDocument render
/hp/cj/ac/pt/www/libraries/src/Error/Renderer/HtmlRenderer.php70
23
Joomla\CMS\Error\Renderer\HtmlRenderer render
/hp/cj/ac/pt/www/libraries/src/Exception/ExceptionHandler.php142
22
Joomla\CMS\Exception\ExceptionHandler render
/hp/cj/ac/pt/www/libraries/src/Exception/ExceptionHandler.php76
21
Joomla\CMS\Exception\ExceptionHandler handleException
/hp/cj/ac/pt/www/libraries/src/Application/CMSApplication.php334
20
Error
/vendor/rockettheme/toolbox/File/src/YamlFile.php20
19
include
/hp/cj/ac/pt/www/libraries/vendor/composer/ClassLoader.php576
18
{closure:Composer\Autoload\ClassLoader::initializeIncludeClosure():575}
/hp/cj/ac/pt/www/libraries/vendor/composer/ClassLoader.php427
17
Composer\Autoload\ClassLoader loadClass
/src/classes/Gantry/Component/File/CompiledYamlFile.php25
16
include
/hp/cj/ac/pt/www/libraries/vendor/composer/ClassLoader.php576
15
{closure:Composer\Autoload\ClassLoader::initializeIncludeClosure():575}
/hp/cj/ac/pt/www/libraries/vendor/composer/ClassLoader.php427
14
Composer\Autoload\ClassLoader loadClass
/src/classes/Gantry/Component/Theme/AbstractTheme.php221
13
Gantry\Component\Theme\AbstractTheme init
/src/classes/Gantry/Framework/Theme.php155
12
Gantry\Framework\Theme init
/src/classes/Gantry/Component/Theme/AbstractTheme.php71
11
Gantry\Component\Theme\AbstractTheme __construct
/hp/cj/ac/pt/www/templates/g5_hydrogen/includes/theme.php35
10
plgSystemGantry5 {closure:/hp/cj/ac/pt/www/templates/g5_hydrogen/includes/theme.php:34}
/compat/vendor/pimple/pimple/src/Pimple/Container.php122
9
Pimple\Container offsetGet
/hp/cj/ac/pt/www/plugins/system/gantry5/gantry5.php305
8
plgSystemGantry5 onAfterRouteSite
/hp/cj/ac/pt/www/plugins/system/gantry5/gantry5.php110
7
plgSystemGantry5 onAfterRoute
/hp/cj/ac/pt/www/libraries/src/Plugin/CMSPlugin.php320
6
Joomla\CMS\Plugin\CMSPlugin {closure:Joomla\CMS\Plugin\CMSPlugin::registerLegacyListener():304}
/hp/cj/ac/pt/www/libraries/vendor/joomla/event/src/Dispatcher.php454
5
Joomla\Event\Dispatcher dispatch
/hp/cj/ac/pt/www/libraries/vendor/joomla/application/src/AbstractApplication.php99
4
Joomla\Application\AbstractApplication dispatchEvent
/hp/cj/ac/pt/www/libraries/src/Application/SiteApplication.php811
3
Joomla\CMS\Application\SiteApplication route
/hp/cj/ac/pt/www/libraries/src/Application/SiteApplication.php243
2
Joomla\CMS\Application\SiteApplication doExecute
/hp/cj/ac/pt/www/libraries/src/Application/CMSApplication.php304
1
Joomla\CMS\Application\CMSApplication execute
/hp/cj/ac/pt/www/includes/app.php58
0
require_once
/hp/cj/ac/pt/www/index.php51
<?php
 
namespace RocketTheme\Toolbox\File;
 
use Symfony\Component\Yaml\Exception\DumpException;
use Symfony\Component\Yaml\Exception\ParseException;
use Symfony\Component\Yaml\Yaml as YamlParser;
use RocketTheme\Toolbox\Compat\Yaml\Yaml as FallbackYamlParser;
use function function_exists;
use function is_array;
use function is_object;
 
/**
 * Implements YAML File reader.
 *
 * @package RocketTheme\Toolbox\File
 * @author RocketTheme
 * @license MIT
 */
class YamlFile extends File
{
    /** @var static[] */
    static protected $instances = [];
    /** @var array */
    static protected $globalSettings = [
        'compat' => true,
        'native' => true
    ];
 
    /**
     * @param array|null $var
     * @return array
     */
    public function content($var = null)
    {
        /** @var array $content */
        $content = parent::content($var);
 
        return $content;
    }
Arguments
  1. "Class "RocketTheme\Toolbox\File\File" not found"
    
 
    /**
     * @return void
     */
    private static function initializeIncludeClosure()
    {
        if (self::$includeFile !== null) {
            return;
        }
 
        /**
         * Scope isolated include.
         *
         * Prevents access to $this/self from included files.
         *
         * @param  string $file
         * @return void
         */
        self::$includeFile = \Closure::bind(static function($file) {
            include $file;
        }, null, null);
    }
}
 
    public function unregister()
    {
        spl_autoload_unregister(array($this, 'loadClass'));
 
        if (null !== $this->vendorDir) {
            unset(self::$registeredLoaders[$this->vendorDir]);
        }
    }
 
    /**
     * Loads the given class or interface.
     *
     * @param  string    $class The name of the class
     * @return true|null True if loaded, null otherwise
     */
    public function loadClass($class)
    {
        if ($file = $this->findFile($class)) {
            $includeFile = self::$includeFile;
            $includeFile($file);
 
            return true;
        }
 
        return null;
    }
 
    /**
     * Finds the path to the file where the class is defined.
     *
     * @param string $class The name of the class
     *
     * @return string|false The path if found, false otherwise
     */
    public function findFile($class)
    {
        // class map lookup
        if (isset($this->classMap[$class])) {
            return $this->classMap[$class];
        }
Arguments
  1. "/hp/cj/ac/pt/www/libraries/gantry5/vendor/composer/../rockettheme/toolbox/File/src/YamlFile.php"
    
 * @originalCreator  RocketTheme (Gantry Framework) 
 * @currentDeveloper  Tiger12, LLC 
 * @copyright Copyright (C) 2007 - 2022 Tiger12, LLC
 * @license   Dual License: MIT or GNU/GPLv2 and later
 *
 * http://opensource.org/licenses/MIT
 * http://www.gnu.org/licenses/gpl-2.0.html
 *
 * Gantry Framework code that extends GPL code is considered GNU/GPLv2 and later
 */
 
namespace Gantry\Component\File;
 
use RocketTheme\Toolbox\File\YamlFile;
 
/**
 * Class CompiledYamlFile
 * @package Gantry\Component\File
 */
class CompiledYamlFile extends YamlFile
{
    use CompiledFile;
 
    static public $defaultCachePath;
    static public $defaultCaching = true;
 
    protected function __construct()
    {
        parent::__construct();
 
        $this->caching(static::$defaultCaching);
 
        if (static::$defaultCachePath) {
            $this->setCachePath(static::$defaultCachePath);
        }
    }
}
 
Arguments
  1. "RocketTheme\Toolbox\File\YamlFile"
    
 
    /**
     * @return void
     */
    private static function initializeIncludeClosure()
    {
        if (self::$includeFile !== null) {
            return;
        }
 
        /**
         * Scope isolated include.
         *
         * Prevents access to $this/self from included files.
         *
         * @param  string $file
         * @return void
         */
        self::$includeFile = \Closure::bind(static function($file) {
            include $file;
        }, null, null);
    }
}
 
Arguments
  1. "/hp/cj/ac/pt/www/libraries/gantry5/src/classes/Gantry/Component/File/CompiledYamlFile.php"
    
    public function unregister()
    {
        spl_autoload_unregister(array($this, 'loadClass'));
 
        if (null !== $this->vendorDir) {
            unset(self::$registeredLoaders[$this->vendorDir]);
        }
    }
 
    /**
     * Loads the given class or interface.
     *
     * @param  string    $class The name of the class
     * @return true|null True if loaded, null otherwise
     */
    public function loadClass($class)
    {
        if ($file = $this->findFile($class)) {
            $includeFile = self::$includeFile;
            $includeFile($file);
 
            return true;
        }
 
        return null;
    }
 
    /**
     * Finds the path to the file where the class is defined.
     *
     * @param string $class The name of the class
     *
     * @return string|false The path if found, false otherwise
     */
    public function findFile($class)
    {
        // class map lookup
        if (isset($this->classMap[$class])) {
            return $this->classMap[$class];
        }
Arguments
  1. "/hp/cj/ac/pt/www/libraries/gantry5/vendor/composer/../../src/classes/Gantry/Component/File/CompiledYamlFile.php"
    
    protected function init()
    {
        $gantry = static::gantry();
        $gantry['streams']->register();
 
        // Only add error service if development or debug mode has been enabled or user is admin.
        if (!$gantry['global']->get('production', 0) || $gantry->debug() || $gantry->admin()) {
            $gantry->register(new ErrorServiceProvider);
        }
 
        // Initialize theme cache stream.
        $cachePath = $this->getCachePath();
 
        Folder::create($cachePath);
 
        /** @var UniformResourceLocator $locator */
        $locator = $gantry['locator'];
        $locator->addPath('gantry-cache', 'theme', [$cachePath], true, true);
 
        CompiledYamlFile::$defaultCachePath = $locator->findResource('gantry-cache://theme/compiled/yaml', true, true);
        CompiledYamlFile::$defaultCaching = $gantry['global']->get('compile_yaml', 1);
    }
 
    /**
     * Set twig lookup paths to the loader.
     *
     * @param LoaderInterface $loader
     * @return FilesystemLoader|null
     * @internal
     */
    protected function setTwigLoaderPaths(LoaderInterface $loader)
    {
        if ($loader instanceof ChainLoader) {
            $new = new FilesystemLoader();
            $loader->addLoader($new);
            $loader = $new;
        } elseif (!($loader instanceof FilesystemLoader)) {
            return null;
        }
 
Arguments
  1. "Gantry\Component\File\CompiledYamlFile"
    
     * @param array $context
     * @return array
     */
    public function getContext(array $context)
    {
        $gantry = static::gantry();
 
        $context = parent::getContext($context);
        $context['site'] = $gantry['site'];
        $context['joomla'] = $gantry['platform'];
 
        return $context;
    }
 
    /**
     * @see AbstractTheme::init()
     */
    protected function init()
    {
        parent::init();
 
        $gantry = Gantry::instance();
 
        /** @var UniformResourceLocator $locator */
        $locator = $gantry['locator'];
 
        /** @var CMSApplication $application */
        $application = Factory::getApplication();
        $language = $application->getLanguage();
 
        // FIXME: Do not hardcode this file.
        $language->load('files_gantry5_nucleus', JPATH_SITE);
 
        if ($application->isClient('site')) {
            // Load our custom positions file as frontend requires the strings to be there.
            $filename = $locator("gantry-theme://language/en-GB/en-GB.tpl_{$this->name}_positions.ini");
 
            if ($filename) {
                $language->load("tpl_{$this->name}_positions", \dirname(\dirname(\dirname($filename))), 'en-GB');
            }
 
    /** @var Environment|null */
    protected $renderer;
 
    /**
     * Construct theme object.
     *
     * @param string $path
     * @param string $name
     */
    public function __construct($path, $name = null)
    {
        if (!is_dir($path)) {
            throw new \LogicException('Theme not found!');
        }
 
        $this->name = $name ?: Gantry::basename($path);
        $this->path = $path;
 
        $this->init();
    }
 
    /**
     * Get context for render().
     *
     * @param array $context
     * @return array
     */
    public function getContext(array $context)
    {
        $context['theme'] = $this;
 
        return $context;
    }
 
    /**
     * Define twig environment.
     *
     * @param Environment $twig
     * @param LoaderInterface $loader
/**
 * Define the template.
 */
class GantryTheme extends Theme {}
 
// Initialize theme stream.
/** @var \Gantry\Framework\Platform $platform */
$platform = $gantry['platform'];
$platform->set(
    'streams.gantry-theme.prefixes',
    ['' => [
        "gantry-themes://{$gantry['theme.name']}/custom",
        "gantry-themes://{$gantry['theme.name']}",
        "gantry-themes://{$gantry['theme.name']}/common"
    ]]
);
 
// Define Gantry services.
$gantry['theme'] = static function ($c)  {
    return new GantryTheme($c['theme.path'], $c['theme.name']);
};
 
Arguments
  1. "/hp/cj/ac/pt/www/templates/g5_hydrogen"
    
  2. "g5_hydrogen"
    
    {
        if (!isset($this->keys[$id])) {
            throw new UnknownIdentifierException($id);
        }
 
        if (
            isset($this->raw[$id])
            || !\is_object($this->values[$id])
            || isset($this->protected[$this->values[$id]])
            || !\method_exists($this->values[$id], '__invoke')
        ) {
            return $this->values[$id];
        }
 
        if (isset($this->factories[$this->values[$id]])) {
            return $this->values[$id]($this);
        }
 
        $raw = $this->values[$id];
        $val = $this->values[$id] = $raw($this);
        $this->raw[$id] = $raw;
 
        $this->frozen[$id] = true;
 
        return $val;
    }
 
    /**
     * Checks if a parameter or an object is set.
     *
     * @param string $id The unique identifier for the parameter or object
     *
     * @return bool
     */
    #[\ReturnTypeWillChange]
    public function offsetExists($id)
    {
        return isset($this->keys[$id]);
    }
 
Arguments
  1. Gantry\Framework\Gantry {#736}
    
 
defined('_JEXEC') or die;
 
use Gantry\Framework\Platform;
use Gantry\Framework\Theme;
use Joomla\CMS\Factory;
 
// Bootstrap Gantry framework or fail gracefully (inside included file).
$className = __DIR__ . '/custom/includes/gantry.php';
if (!is_file($className)) {
    $className = __DIR__ . '/includes/gantry.php';
}
$gantry = include $className;
 
/** @var Platform $joomla */
$joomla = $gantry['platform'];
$joomla->document = $this;
 
/** @var Theme $theme */
$theme = $gantry['theme'];
$app = Factory::getApplication();
 
$context = array(
    'errorcode' => isset($this->error) ? $this->error->getCode() : null,
    'error' => isset($this->error) ? $this->error->getMessage() : null,
    'debug' => $app->get('debug_lang', '0') == '1' || $app->get('debug', '0') == '1',
    'backtrace' => $this->debug ? $this->renderBacktrace() : null
);
 
// Reset used outline configuration.
unset($gantry['configuration']);
 
// Render the page.
echo $theme
    ->setLayout('_error', true)
    ->render('error.html.twig', $context);
 
Arguments
  1. "theme"
    
     *
     * @param   string  $directory  The name of the template
     * @param   string  $filename   The actual filename
     *
     * @return  string  The contents of the template
     *
     * @since   1.7.0
     */
    protected function _loadTemplate($directory, $filename)
    {
        $contents = '';
 
        // Check to see if we have a valid template file
        if (is_file($directory . '/' . $filename)) {
            // Store the file path
            $this->_file = $directory . '/' . $filename;
 
            // Get the file content
            ob_start();
            require $directory . '/' . $filename;
            $contents = ob_get_clean();
        }
 
        return $contents;
    }
 
    /**
     * Fetch the template, and initialise the params
     *
     * @param   array  $params  Parameters to determine the template
     *
     * @return  HtmlDocument instance of $this to allow chaining
     *
     * @since   1.7.0
     */
    protected function _fetchTemplate($params = [])
    {
        // Check
        $directory = $params['directory'] ?? 'templates';
        $filter    = InputFilter::getInstance();
Arguments
  1. "/hp/cj/ac/pt/www/templates/g5_hydrogen/error.php"
    
                }
            }
        }
 
        // Load the language file for the template
        $lang = CmsFactory::getLanguage();
 
        // 1.5 or core then 1.6
        $lang->load('tpl_' . $template, JPATH_BASE)
            || ($inherits !== '' && $lang->load('tpl_' . $inherits, JPATH_BASE))
            || $lang->load('tpl_' . $template, $directory . '/' . $template)
            || ($inherits !== '' && $lang->load('tpl_' . $inherits, $directory . '/' . $inherits));
 
        // Assign the variables
        $this->baseurl  = Uri::base(true);
        $this->params   = $params['params'] ?? new Registry();
        $this->template = $template;
 
        // Load
        $this->_template = $this->_loadTemplate($baseDir, $file);
 
        return $this;
    }
 
    /**
     * Returns a toolbar object or null
     *
     * @param   string   $toolbar
     * @param   boolean  $create
     *
     * @return  ?Toolbar
     *
     * @since   5.0.0
     */
    public function getToolbar(string $toolbar = 'toolbar', bool $create = true): ?Toolbar
    {
        if (empty($this->toolbars[$toolbar])) {
            if (!$create) {
                return null;
            }
Arguments
  1. "/hp/cj/ac/pt/www/templates/g5_hydrogen"
    
  2. "error.php"
    
        $name  = $options['name'] ?? '';
        $title = $options['title'] ?? '';
 
        parent::$_buffer[$type][$name][$title] = $content;
 
        return $this;
    }
 
    /**
     * Parses the template and populates the buffer
     *
     * @param   array  $params  Parameters for fetching the template
     *
     * @return  HtmlDocument instance of $this to allow chaining
     *
     * @since   1.7.0
     */
    public function parse($params = [])
    {
        return $this->_fetchTemplate($params)->_parseTemplate();
    }
 
    /**
     * Outputs the template to the browser.
     *
     * @param   boolean  $caching  If true, cache the output
     * @param   array    $params   Associative array of attributes
     *
     * @return  string The rendered data
     *
     * @since   1.7.0
     */
    public function render($caching = false, $params = [])
    {
        $this->_caching = $caching;
 
        if (empty($this->_template)) {
            $this->parse($params);
        }
 
Arguments
  1. array:7 [
      "template" => "g5_hydrogen"
      "directory" => "/hp/cj/ac/pt/www/templates"
      "debug" => false
      "csp_nonce" => null
      "templateInherits" => ""
      "params" => Joomla\Registry\Registry {#808}
      "file" => "error.php"
    ]
    
    {
        return $this->_fetchTemplate($params)->_parseTemplate();
    }
 
    /**
     * Outputs the template to the browser.
     *
     * @param   boolean  $caching  If true, cache the output
     * @param   array    $params   Associative array of attributes
     *
     * @return  string The rendered data
     *
     * @since   1.7.0
     */
    public function render($caching = false, $params = [])
    {
        $this->_caching = $caching;
 
        if (empty($this->_template)) {
            $this->parse($params);
        }
 
        if (\array_key_exists('csp_nonce', $params) && $params['csp_nonce'] !== null) {
            $this->cspNonce = $params['csp_nonce'];
        }
 
        $data = $this->_renderTemplate();
        parent::render($caching, $params);
 
        return $data;
    }
 
    /**
     * Count the modules in the given position
     *
     * @param   string   $positionName     The position to use
     * @param   boolean  $withContentOnly  Count only a modules which actually has a content
     *
     * @return  integer  Number of modules found
     *
Arguments
  1. array:7 [
      "template" => "g5_hydrogen"
      "directory" => "/hp/cj/ac/pt/www/templates"
      "debug" => false
      "csp_nonce" => null
      "templateInherits" => ""
      "params" => Joomla\Registry\Registry {#808}
      "file" => "error.php"
    ]
    
 
        if ($status < 400 || $status > 599) {
            $status = 500;
        }
 
        $errorReporting = CmsFactory::getApplication()->get('error_reporting');
 
        if ($errorReporting === "development" || $errorReporting === "maximum") {
            $status .= ' ' . str_replace("\n", ' ', $this->_error->getMessage());
        }
 
        CmsFactory::getApplication()->setHeader('status', $status);
 
        // Set variables
        $this->debug = $params['debug'] ?? false;
        $this->error = $this->_error;
 
        $params['file'] = 'error.php';
 
        return parent::render($cache, $params);
    }
 
    /**
     * Render the backtrace
     *
     * @return  string  The contents of the backtrace
     *
     * @since   1.7.0
     */
    public function renderBacktrace()
    {
        // If no error object is set return null
        if (!isset($this->_error)) {
            return;
        }
 
        // The back trace
        $backtrace = $this->_error->getTrace();
 
        // Add the position of the actual file
Arguments
  1. false
    
  2. array:7 [
      "template" => "g5_hydrogen"
      "directory" => "/hp/cj/ac/pt/www/templates"
      "debug" => false
      "csp_nonce" => null
      "templateInherits" => ""
      "params" => Joomla\Registry\Registry {#808}
      "file" => "error.php"
    ]
    
 
        // Push the error object into the document
        $this->getDocument()->setError($error);
 
        // Add registry file for the template asset
        $wa = $this->getDocument()->getWebAssetManager()->getRegistry();
 
        $wa->addTemplateRegistryFile($template->template, $app->getClientId());
 
        if (!empty($template->parent)) {
            $wa->addTemplateRegistryFile($template->parent, $app->getClientId());
        }
 
        if (ob_get_contents()) {
            ob_end_clean();
        }
 
        $this->getDocument()->setTitle(Text::_('Error') . ': ' . $error->getCode());
 
        return $this->getDocument()->render(
            false,
            [
                'template'         => $template->template,
                'directory'        => JPATH_THEMES,
                'debug'            => JDEBUG,
                'csp_nonce'        => $app->get('csp_nonce'),
                'templateInherits' => $template->parent,
                'params'           => $template->params,
            ]
        );
    }
}
 
Arguments
  1. false
    
  2. array:7 [
      "template" => "g5_hydrogen"
      "directory" => "/hp/cj/ac/pt/www/templates"
      "debug" => false
      "csp_nonce" => null
      "templateInherits" => ""
      "params" => Joomla\Registry\Registry {#808}
      "file" => "error.php"
    ]
    
                $renderer = AbstractRenderer::getRenderer($format);
            } catch (\InvalidArgumentException) {
                // Default to the HTML renderer
                $renderer = AbstractRenderer::getRenderer('html');
            }
 
            // Reset the document object in the factory, this gives us a clean slate and lets everything render properly
            Factory::$document = $renderer->getDocument();
            Factory::getApplication()->loadDocument(Factory::$document);
 
            // Trigger the onAfterInitialiseDocument event.
            $app->getDispatcher()->dispatch(
                'onAfterInitialiseDocument',
                new AfterInitialiseDocumentEvent('onAfterInitialiseDocument', [
                    'subject'  => $app,
                    'document' => $renderer->getDocument(),
                ])
            );
 
            $data = $renderer->render($error);
 
            // If nothing was rendered, just use the message from the Exception
            if (empty($data)) {
                $data = $error->getMessage();
            }
 
            if ($isCli) {
                echo $data;
            } elseif ($isAPI) {
                $app->setHeader('Content-Type', $app->mimeType . '; charset=' . $app->charSet);
                $app->sendHeaders();
 
                echo $data;
            } else {
                /** @var CMSApplication $app */
 
                // Do not allow cache
                $app->allowCache(false);
 
                $app->setBody($data);
Arguments
  1. Error {#815
      #message: "Class "RocketTheme\Toolbox\File\File" not found"
      #code: 0
      #file: "/hp/cj/ac/pt/www/libraries/gantry5/vendor/rockettheme/toolbox/File/src/YamlFile.php"
      #line: 20
    }
    
            }
        }
 
        // Always return false, this will tell PHP to handle the error internally
        return false;
    }
 
    /**
     * Handles exceptions: logs errors and renders error page.
     *
     * @param   \Exception|\Throwable  $error  An Exception or Throwable (PHP 7+) object for which to render the error page.
     *
     * @return  void
     *
     * @since   3.10.0
     */
    public static function handleException(\Throwable $error)
    {
        static::logException($error);
        static::render($error);
    }
 
    /**
     * Render the error page based on an exception.
     *
     * @param   \Throwable  $error  An Exception or Throwable (PHP 7+) object for which to render the error page.
     *
     * @return  void
     *
     * @since   3.0
     */
    public static function render(\Throwable $error)
    {
        try {
            $app = Factory::getApplication();
 
            // Flag if we are on cli or api
            $isCli = $app->isClient('cli');
            $isAPI = $app->isClient('api');
 
Arguments
  1. Error {#815
      #message: "Class "RocketTheme\Toolbox\File\File" not found"
      #code: 0
      #file: "/hp/cj/ac/pt/www/libraries/gantry5/vendor/rockettheme/toolbox/File/src/YamlFile.php"
      #line: 20
    }
    
 
                // Trigger the onAfterCompress event.
                $this->dispatchEvent(
                    'onAfterCompress',
                    new AfterCompressEvent('onAfterCompress', ['subject' => $this])
                );
            }
        } catch (\Throwable $throwable) {
            $event = new ErrorEvent(
                'onError',
                [
                    'subject'     => $throwable,
                    'application' => $this,
                ]
            );
 
            // Trigger the onError event.
            $this->dispatchEvent('onError', $event);
 
            ExceptionHandler::handleException($event->getError());
        }
 
        // Trigger the onBeforeRespond event.
        $this->dispatchEvent(
            'onBeforeRespond',
            new BeforeRespondEvent('onBeforeRespond', ['subject' => $this])
        );
 
        // Send the application response.
        $this->respond();
 
        // Trigger the onAfterRespond event.
        $this->dispatchEvent(
            'onAfterRespond',
            new AfterRespondEvent('onAfterRespond', ['subject' => $this])
        );
    }
 
    /**
     * Check if the user is required to reset their password.
Arguments
  1. Error {#815
      #message: "Class "RocketTheme\Toolbox\File\File" not found"
      #code: 0
      #file: "/hp/cj/ac/pt/www/libraries/gantry5/vendor/rockettheme/toolbox/File/src/YamlFile.php"
      #line: 20
    }
    
<?php
 
namespace RocketTheme\Toolbox\File;
 
use Symfony\Component\Yaml\Exception\DumpException;
use Symfony\Component\Yaml\Exception\ParseException;
use Symfony\Component\Yaml\Yaml as YamlParser;
use RocketTheme\Toolbox\Compat\Yaml\Yaml as FallbackYamlParser;
use function function_exists;
use function is_array;
use function is_object;
 
/**
 * Implements YAML File reader.
 *
 * @package RocketTheme\Toolbox\File
 * @author RocketTheme
 * @license MIT
 */
class YamlFile extends File
{
    /** @var static[] */
    static protected $instances = [];
    /** @var array */
    static protected $globalSettings = [
        'compat' => true,
        'native' => true
    ];
 
    /**
     * @param array|null $var
     * @return array
     */
    public function content($var = null)
    {
        /** @var array $content */
        $content = parent::content($var);
 
        return $content;
    }
Arguments
  1. "Class "RocketTheme\Toolbox\File\File" not found"
    
Exception message: Class "RocketTheme\Toolbox\File\File" not found
 
    /**
     * @return void
     */
    private static function initializeIncludeClosure()
    {
        if (self::$includeFile !== null) {
            return;
        }
 
        /**
         * Scope isolated include.
         *
         * Prevents access to $this/self from included files.
         *
         * @param  string $file
         * @return void
         */
        self::$includeFile = \Closure::bind(static function($file) {
            include $file;
        }, null, null);
    }
}
 
    public function unregister()
    {
        spl_autoload_unregister(array($this, 'loadClass'));
 
        if (null !== $this->vendorDir) {
            unset(self::$registeredLoaders[$this->vendorDir]);
        }
    }
 
    /**
     * Loads the given class or interface.
     *
     * @param  string    $class The name of the class
     * @return true|null True if loaded, null otherwise
     */
    public function loadClass($class)
    {
        if ($file = $this->findFile($class)) {
            $includeFile = self::$includeFile;
            $includeFile($file);
 
            return true;
        }
 
        return null;
    }
 
    /**
     * Finds the path to the file where the class is defined.
     *
     * @param string $class The name of the class
     *
     * @return string|false The path if found, false otherwise
     */
    public function findFile($class)
    {
        // class map lookup
        if (isset($this->classMap[$class])) {
            return $this->classMap[$class];
        }
Arguments
  1. "/hp/cj/ac/pt/www/libraries/gantry5/vendor/composer/../rockettheme/toolbox/File/src/YamlFile.php"
    
 * @originalCreator  RocketTheme (Gantry Framework) 
 * @currentDeveloper  Tiger12, LLC 
 * @copyright Copyright (C) 2007 - 2022 Tiger12, LLC
 * @license   Dual License: MIT or GNU/GPLv2 and later
 *
 * http://opensource.org/licenses/MIT
 * http://www.gnu.org/licenses/gpl-2.0.html
 *
 * Gantry Framework code that extends GPL code is considered GNU/GPLv2 and later
 */
 
namespace Gantry\Component\File;
 
use RocketTheme\Toolbox\File\YamlFile;
 
/**
 * Class CompiledYamlFile
 * @package Gantry\Component\File
 */
class CompiledYamlFile extends YamlFile
{
    use CompiledFile;
 
    static public $defaultCachePath;
    static public $defaultCaching = true;
 
    protected function __construct()
    {
        parent::__construct();
 
        $this->caching(static::$defaultCaching);
 
        if (static::$defaultCachePath) {
            $this->setCachePath(static::$defaultCachePath);
        }
    }
}
 
Arguments
  1. "RocketTheme\Toolbox\File\YamlFile"
    
 
    /**
     * @return void
     */
    private static function initializeIncludeClosure()
    {
        if (self::$includeFile !== null) {
            return;
        }
 
        /**
         * Scope isolated include.
         *
         * Prevents access to $this/self from included files.
         *
         * @param  string $file
         * @return void
         */
        self::$includeFile = \Closure::bind(static function($file) {
            include $file;
        }, null, null);
    }
}
 
Arguments
  1. "/hp/cj/ac/pt/www/libraries/gantry5/src/classes/Gantry/Component/File/CompiledYamlFile.php"
    
    public function unregister()
    {
        spl_autoload_unregister(array($this, 'loadClass'));
 
        if (null !== $this->vendorDir) {
            unset(self::$registeredLoaders[$this->vendorDir]);
        }
    }
 
    /**
     * Loads the given class or interface.
     *
     * @param  string    $class The name of the class
     * @return true|null True if loaded, null otherwise
     */
    public function loadClass($class)
    {
        if ($file = $this->findFile($class)) {
            $includeFile = self::$includeFile;
            $includeFile($file);
 
            return true;
        }
 
        return null;
    }
 
    /**
     * Finds the path to the file where the class is defined.
     *
     * @param string $class The name of the class
     *
     * @return string|false The path if found, false otherwise
     */
    public function findFile($class)
    {
        // class map lookup
        if (isset($this->classMap[$class])) {
            return $this->classMap[$class];
        }
Arguments
  1. "/hp/cj/ac/pt/www/libraries/gantry5/vendor/composer/../../src/classes/Gantry/Component/File/CompiledYamlFile.php"
    
    protected function init()
    {
        $gantry = static::gantry();
        $gantry['streams']->register();
 
        // Only add error service if development or debug mode has been enabled or user is admin.
        if (!$gantry['global']->get('production', 0) || $gantry->debug() || $gantry->admin()) {
            $gantry->register(new ErrorServiceProvider);
        }
 
        // Initialize theme cache stream.
        $cachePath = $this->getCachePath();
 
        Folder::create($cachePath);
 
        /** @var UniformResourceLocator $locator */
        $locator = $gantry['locator'];
        $locator->addPath('gantry-cache', 'theme', [$cachePath], true, true);
 
        CompiledYamlFile::$defaultCachePath = $locator->findResource('gantry-cache://theme/compiled/yaml', true, true);
        CompiledYamlFile::$defaultCaching = $gantry['global']->get('compile_yaml', 1);
    }
 
    /**
     * Set twig lookup paths to the loader.
     *
     * @param LoaderInterface $loader
     * @return FilesystemLoader|null
     * @internal
     */
    protected function setTwigLoaderPaths(LoaderInterface $loader)
    {
        if ($loader instanceof ChainLoader) {
            $new = new FilesystemLoader();
            $loader->addLoader($new);
            $loader = $new;
        } elseif (!($loader instanceof FilesystemLoader)) {
            return null;
        }
 
Arguments
  1. "Gantry\Component\File\CompiledYamlFile"
    
     * @param array $context
     * @return array
     */
    public function getContext(array $context)
    {
        $gantry = static::gantry();
 
        $context = parent::getContext($context);
        $context['site'] = $gantry['site'];
        $context['joomla'] = $gantry['platform'];
 
        return $context;
    }
 
    /**
     * @see AbstractTheme::init()
     */
    protected function init()
    {
        parent::init();
 
        $gantry = Gantry::instance();
 
        /** @var UniformResourceLocator $locator */
        $locator = $gantry['locator'];
 
        /** @var CMSApplication $application */
        $application = Factory::getApplication();
        $language = $application->getLanguage();
 
        // FIXME: Do not hardcode this file.
        $language->load('files_gantry5_nucleus', JPATH_SITE);
 
        if ($application->isClient('site')) {
            // Load our custom positions file as frontend requires the strings to be there.
            $filename = $locator("gantry-theme://language/en-GB/en-GB.tpl_{$this->name}_positions.ini");
 
            if ($filename) {
                $language->load("tpl_{$this->name}_positions", \dirname(\dirname(\dirname($filename))), 'en-GB');
            }
 
    /** @var Environment|null */
    protected $renderer;
 
    /**
     * Construct theme object.
     *
     * @param string $path
     * @param string $name
     */
    public function __construct($path, $name = null)
    {
        if (!is_dir($path)) {
            throw new \LogicException('Theme not found!');
        }
 
        $this->name = $name ?: Gantry::basename($path);
        $this->path = $path;
 
        $this->init();
    }
 
    /**
     * Get context for render().
     *
     * @param array $context
     * @return array
     */
    public function getContext(array $context)
    {
        $context['theme'] = $this;
 
        return $context;
    }
 
    /**
     * Define twig environment.
     *
     * @param Environment $twig
     * @param LoaderInterface $loader
/**
 * Define the template.
 */
class GantryTheme extends Theme {}
 
// Initialize theme stream.
/** @var \Gantry\Framework\Platform $platform */
$platform = $gantry['platform'];
$platform->set(
    'streams.gantry-theme.prefixes',
    ['' => [
        "gantry-themes://{$gantry['theme.name']}/custom",
        "gantry-themes://{$gantry['theme.name']}",
        "gantry-themes://{$gantry['theme.name']}/common"
    ]]
);
 
// Define Gantry services.
$gantry['theme'] = static function ($c)  {
    return new GantryTheme($c['theme.path'], $c['theme.name']);
};
 
Arguments
  1. "/hp/cj/ac/pt/www/templates/g5_hydrogen"
    
  2. "g5_hydrogen"
    
    {
        if (!isset($this->keys[$id])) {
            throw new UnknownIdentifierException($id);
        }
 
        if (
            isset($this->raw[$id])
            || !\is_object($this->values[$id])
            || isset($this->protected[$this->values[$id]])
            || !\method_exists($this->values[$id], '__invoke')
        ) {
            return $this->values[$id];
        }
 
        if (isset($this->factories[$this->values[$id]])) {
            return $this->values[$id]($this);
        }
 
        $raw = $this->values[$id];
        $val = $this->values[$id] = $raw($this);
        $this->raw[$id] = $raw;
 
        $this->frozen[$id] = true;
 
        return $val;
    }
 
    /**
     * Checks if a parameter or an object is set.
     *
     * @param string $id The unique identifier for the parameter or object
     *
     * @return bool
     */
    #[\ReturnTypeWillChange]
    public function offsetExists($id)
    {
        return isset($this->keys[$id]);
    }
 
Arguments
  1. Gantry\Framework\Gantry {#736}
    
            $gantry = Gantry::instance();
 
            // Initialize the template.
            $gantry['theme.path'] = JPATH_THEMES . "/{$templateName}";
            $gantry['theme.name'] = $templateName;
 
            $classPath = $gantry['theme.path'] . '/custom/includes/theme.php';
            if (!is_file($classPath)) {
                $classPath = $gantry['theme.path'] . '/includes/theme.php';
            }
 
            include_once $classPath;
        }
 
        if (\GANTRY_DEBUGGER) {
            Debugger::addMessage("Using Gantry 5 template {$templateName}");
        }
 
        /** @var Theme $theme */
        $theme = $gantry['theme'];
 
        $assignments = new Assignments();
 
        if (\GANTRY_DEBUGGER) {
            Debugger::addMessage('Selecting outline (rules, matches, scores):', 'debug');
            Debugger::addMessage($assignments->getPage(), 'debug');
            Debugger::addMessage($assignments->loadAssignments(), 'debug');
            Debugger::addMessage($assignments->matches(), 'debug');
            Debugger::addMessage($assignments->scores(), 'debug');
        }
 
        $theme->setLayout($assignments->select());
 
        if ($this->params->get('asset_timestamps', 1)) {
            $age = (int)($this->params->get('asset_timestamps_period', 7) * 86400);
            Document::$timestamp_age = $age > 0 ? $age : PHP_INT_MAX;
        } else {
            Document::$timestamp_age = 0;
        }
    }
Arguments
  1. "theme"
    
        }
 
        // Finish initialization and register all the events.
        parent::__construct($subject, $config);
    }
 
    /**
     * Return global configuration for Gantry5.
     *
     * @param array $global
     */
    public function onGantryGlobalConfig(&$global)
    {
        $global = $this->params->toArray();
    }
 
    public function onAfterRoute()
    {
        if ($this->app->isClient('site')) {
            $this->onAfterRouteSite();
 
        } elseif ($this->app->isClient('administrator')) {
            $this->onAfterRouteAdmin();
        }
    }
 
    /**
     * Document gets set during dispatch, we need language and direction.
     */
    public function onAfterDispatch()
    {
        if (class_exists('Gantry\Framework\Gantry')) {
            $this->onAfterDispatchSiteAdmin();
        }
    }
 
    public function onAfterRender()
    {
        if ($this->app->isClient('site') && class_exists('Gantry\Framework\Gantry')) {
            $this->onAfterRenderSite();
    {
        $this->getDispatcher()->addListener(
            $methodName,
            function (AbstractEvent $event) use ($methodName) {
                // Get the event arguments
                $arguments = $event->getArguments();
 
                // Extract any old results; they must not be part of the method call.
                $allResults = [];
 
                if (isset($arguments['result'])) {
                    $allResults = $arguments['result'];
 
                    unset($arguments['result']);
                }
 
                // Convert to indexed array for unpacking.
                $arguments = array_values($arguments);
 
                $result = $this->{$methodName}(...$arguments);
 
                // Ignore null results
                if ($result === null) {
                    return;
                }
 
                if ($event instanceof ResultAwareInterface) {
                    $event->addResult($result);
                } elseif (!$event instanceof AbstractImmutableEvent) {
                    // Restore the old results and add the new result from our method call
                    $allResults[]    = $result;
                    $event['result'] = $allResults;
                }
            }
        );
    }
 
    /**
     * Registers a proper event listener, i.e. a method which accepts an AbstractEvent as its sole argument. This is the
     * preferred way to implement plugins in Joomla! 4.x and will be the only possible method with Joomla! 5.x onwards.
Arguments
  1. Joomla\CMS\Application\SiteApplication {#166}
    
    public function dispatch(string $name, ?EventInterface $event = null): EventInterface
    {
        if (!($event instanceof EventInterface)) {
            trigger_deprecation(
                'joomla/event',
                '2.0.0',
                'Not passing an event object to %s() is deprecated, as of 3.0 the $event argument will be required.',
                __METHOD__
            );
 
            $event = $this->getDefaultEvent($name);
        }
 
        if (isset($this->listeners[$event->getName()])) {
            foreach ($this->listeners[$event->getName()] as $listener) {
                if ($event->isStopped()) {
                    return $event;
                }
 
                $listener($event);
            }
        }
 
        return $event;
    }
 
    /**
     * Trigger an event.
     *
     * @param   EventInterface|string  $event  The event object or name.
     *
     * @return  EventInterface  The event after being passed through all listeners.
     *
     * @since   1.0
     * @deprecated  3.0  Use dispatch() instead.
     */
    public function triggerEvent($event)
    {
        trigger_deprecation(
            'joomla/event',
Arguments
  1. Joomla\CMS\Event\Application\AfterRouteEvent {#683}
    
 
    /**
     * Dispatches an application event if the dispatcher has been set.
     *
     * @param  string               $eventName  The event to dispatch.
     * @param  EventInterface|null  $event      The event object.
     *
     * @return  EventInterface|null  The dispatched event or null if no dispatcher is set
     *
     * @since   2.0.0
     */
    protected function dispatchEvent(string $eventName, ?EventInterface $event = null): ?EventInterface
    {
        try {
            $dispatcher = $this->getDispatcher();
        } catch (\UnexpectedValueException $exception) {
            return null;
        }
 
        return $dispatcher->dispatch($eventName, $event ?: new ApplicationEvent($eventName, $this));
    }
 
    /**
     * Method to run the application routines.
     *
     * Most likely you will want to instantiate a controller and execute it, or perform some sort of task directly.
     *
     * @return  mixed
     *
     * @since   1.0.0
     */
    abstract protected function doExecute();
 
    /**
     * Execute the application.
     *
     * @return  void
     *
     * @since   1.0.0
     */
Arguments
  1. "onAfterRoute"
    
  2. Joomla\CMS\Event\Application\AfterRouteEvent {#683}
    
                if ($position !== false) {
                    $oldUri->setPath($base . '/' . substr_replace($oldPath, $item->route, $position, \strlen($activePathPrefix)));
 
                    $this->setHeader('Expires', 'Wed, 17 Aug 2005 00:00:00 GMT', true);
                    $this->setHeader('Last-Modified', gmdate('D, d M Y H:i:s') . ' GMT', true);
                    $this->setHeader('Cache-Control', 'no-store, no-cache, must-revalidate', false);
                    $this->sendHeaders();
 
                    $this->redirect((string) $oldUri, 301);
                }
            }
        }
 
        foreach ($result as $key => $value) {
            $this->input->def($key, $value);
        }
 
        // Trigger the onAfterRoute event.
        PluginHelper::importPlugin('system', null, true, $this->getDispatcher());
        $this->dispatchEvent(
            'onAfterRoute',
            new AfterRouteEvent('onAfterRoute', ['subject' => $this])
        );
 
        $Itemid = $this->input->getInt('Itemid', 0);
        $this->authorise($Itemid);
    }
 
    /**
     * Set the current state of the detect browser option.
     *
     * @param   boolean  $state  The new state of the detect browser option
     *
     * @return  boolean  The previous state
     *
     * @since   3.2
     */
    public function setDetectBrowser($state = false)
    {
        $old                  = $this->getDetectBrowser();
Arguments
  1. "onAfterRoute"
    
  2. Joomla\CMS\Event\Application\AfterRouteEvent {#683}
    
        );
    }
 
    /**
     * Method to run the Web application routines.
     *
     * @return  void
     *
     * @since   3.2
     */
    protected function doExecute()
    {
        // Initialise the application
        $this->initialiseApp();
 
        // Mark afterInitialise in the profiler.
        JDEBUG ? $this->profiler->mark('afterInitialise') : null;
 
        // Route the application
        $this->route();
 
        // Mark afterRoute in the profiler.
        JDEBUG ? $this->profiler->mark('afterRoute') : null;
 
        if (!$this->isHandlingMultiFactorAuthentication()) {
            /*
             * Check if the user is required to reset their password
             *
             * Before $this->route(); "option" and "view" can't be safely read using:
             * $this->input->getCmd('option'); or $this->input->getCmd('view');
             * ex: due of the sef urls
             */
            $this->checkUserRequiresReset('com_users', 'profile', 'edit', [
                ['option' => 'com_users', 'task' => 'profile.save'],
                ['option' => 'com_users', 'task' => 'profile.apply'],
                ['option' => 'com_users', 'task' => 'user.logout'],
                ['option' => 'com_users', 'task' => 'user.menulogout'],
                ['option' => 'com_users', 'task' => 'captive.validate'],
                ['option' => 'com_users', 'view' => 'captive'],
                ['option' => 'com_users', 'view' => 'methods'],
            throw new \RuntimeException('Invalid input, aborting application.');
        }
    }
 
    /**
     * Execute the application.
     *
     * @return  void
     *
     * @since   3.2
     */
    public function execute()
    {
        try {
            $this->sanityCheckSystemVariables();
            $this->setupLogging();
            $this->createExtensionNamespaceMap();
 
            // Perform application routines.
            $this->doExecute();
 
            // If we have an application document object, render it.
            if ($this->document instanceof \Joomla\CMS\Document\Document) {
                // Render the application output.
                $this->render();
            }
 
            // If gzip compression is enabled in configuration and the server is compliant, compress the output.
            if ($this->get('gzip') && !\ini_get('zlib.output_compression') && \ini_get('output_handler') !== 'ob_gzhandler') {
                $this->compress();
 
                // Trigger the onAfterCompress event.
                $this->dispatchEvent(
                    'onAfterCompress',
                    new AfterCompressEvent('onAfterCompress', ['subject' => $this])
                );
            }
        } catch (\Throwable $throwable) {
            $event = new ErrorEvent(
                'onError',
 *
 * In addition to aliasing "common" service keys, we also create aliases for the PHP classes to ensure autowiring objects
 * is supported.  This includes aliases for aliased class names, and the keys for aliased class names should be considered
 * deprecated to be removed when the class name alias is removed as well.
 */
$container->alias('session.web', 'session.web.site')
    ->alias('session', 'session.web.site')
    ->alias('JSession', 'session.web.site')
    ->alias(\Joomla\CMS\Session\Session::class, 'session.web.site')
    ->alias(\Joomla\Session\Session::class, 'session.web.site')
    ->alias(\Joomla\Session\SessionInterface::class, 'session.web.site');
 
// Instantiate the application.
$app = $container->get(\Joomla\CMS\Application\SiteApplication::class);
 
// Set the application as global app
\Joomla\CMS\Factory::$application = $app;
 
// Execute the application.
$app->execute();
 
if (file_exists(__DIR__ . '/defines.php')) {
    include_once __DIR__ . '/defines.php';
}
 
require_once __DIR__ . '/includes/defines.php';
 
// Check the existence of an update-extraction config file
if (
    !empty($_GET['jautoupdate'])
    && is_file(JPATH_ADMINISTRATOR . '/components/com_joomlaupdate/update.php')
) {
    // Load extraction script and...
    require_once JPATH_ADMINISTRATOR . '/components/com_joomlaupdate/extract.php';
 
    // ... die
    die();
}
 
// Run the application - All executable code should be triggered through this file
require_once __DIR__ . '/includes/app.php';
 
Arguments
  1. "/hp/cj/ac/pt/www/includes/app.php"
    

Environment & details:

Key Value
iccaldate
"2029-04-1"
empty
empty
empty
empty
Key Value
PATH
"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
PWD
"/"
CONTENT_LENGTH
"0"
HTTP_CONNECTION
"close"
PATH_TRANSLATED
"/hp/cj/ac/pt/www/nachhaltigkeit/unser-weg/strom"
PATH_INFO
"/nachhaltigkeit/unser-weg/strom"
SCRIPT_NAME
"/index.php"
REQUEST_URI
"/index.php/nachhaltigkeit/unser-weg/strom?iccaldate=2029-04-1"
QUERY_STRING
"iccaldate=2029-04-1"
REQUEST_METHOD
"GET"
SERVER_PROTOCOL
"HTTP/2.0"
GATEWAY_INTERFACE
"CGI/1.1"
REMOTE_PORT
"8852"
SCRIPT_FILENAME
"/hp/cj/ac/pt/www/index.php"
SERVER_ADMIN
"[no address given]"
CONTEXT_DOCUMENT_ROOT
"/hp/cj/ac/pt/www"
CONTEXT_PREFIX
""
REQUEST_SCHEME
"https"
DOCUMENT_ROOT
"/hp/cj/ac/pt/www"
REMOTE_ADDR
"216.73.217.11"
SERVER_PORT
"443"
SERVER_ADDR
"178.254.10.14"
SERVER_NAME
"www.beadmakersbench.de"
SERVER_SOFTWARE
"Apache"
SERVER_SIGNATURE
""
HTTP_HOST
"www.beadmakersbench.de"
HTTP_ACCEPT_ENCODING
"gzip, br, zstd, deflate"
HTTP_USER_AGENT
"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"
HTTP_ACCEPT
"*/*"
SSL_SESSION_RESUMED
"Initial"
SSL_SESSION_ID
"39934f8c79ca356358480bd419b26768d302ea420ba7f4fb1a1e2eab07e49758"
SSL_SERVER_A_SIG
"sha256WithRSAEncryption"
SSL_SERVER_A_KEY
"rsaEncryption"
SSL_SERVER_I_DN
"CN=R12,O=Let's Encrypt,C=US"
SSL_SERVER_S_DN
"CN=www.beadmakersbench.de"
SSL_SERVER_V_END
"Jul 12 07:25:33 2026 GMT"
SSL_SERVER_V_START
"Apr 13 07:25:34 2026 GMT"
SSL_SERVER_M_SERIAL
"0529EDBE813CF6DE8B28A08FAB0F6498B555"
SSL_SERVER_M_VERSION
"3"
SSL_CLIENT_VERIFY
"NONE"
SSL_CIPHER_ALGKEYSIZE
"256"
SSL_CIPHER_USEKEYSIZE
"256"
SSL_CIPHER_EXPORT
"false"
SSL_CIPHER
"TLS_AES_256_GCM_SHA384"
SSL_COMPRESS_METHOD
"NULL"
SSL_SECURE_RENEG
"true"
SSL_PROTOCOL
"TLSv1.3"
SSL_VERSION_LIBRARY
"OpenSSL/3.0.2"
SSL_VERSION_INTERFACE
"mod_ssl/2.4.52"
SSL_SERVER_SAN_DNS_1
"www.beadmakersbench.de"
SSL_SERVER_SAN_DNS_0
"beadmakersbench.de"
SSL_SERVER_I_DN_CN
"R12"
SSL_SERVER_I_DN_O
"Let's Encrypt"
SSL_SERVER_I_DN_C
"US"
SSL_SERVER_S_DN_CN
"www.beadmakersbench.de"
SSL_TLS_SNI
"www.beadmakersbench.de"
HTTPS
"on"
H2_STREAM_TAG
"834573-267-3"
H2_STREAM_ID
"3"
H2_PUSHED_ON
""
H2_PUSHED
""
H2_PUSH
"off"
H2PUSH
"off"
HTTP2
"on"
LogDir
"/hp/cj/ac/pt/logfiles"
SCRIPT_URI
"https://www.beadmakersbench.de/index.php/nachhaltigkeit/unser-weg/strom"
SCRIPT_URL
"/index.php/nachhaltigkeit/unser-weg/strom"
UNIQUE_ID
"aeUQVkNy2qMg7xRDwJbDkgACTh4"
IP_Anonym
"216.73.217.0"
IP_Full
"216.73.217.11"
FCGI_ROLE
"RESPONDER"
PHP_SELF
"/index.php/nachhaltigkeit/unser-weg/strom"
REQUEST_TIME_FLOAT
1776619606.4321
REQUEST_TIME
1776619606
argv
array:1 [
  0 => "iccaldate=2029-04-1"
]
argc
1
Key Value
PATH
"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
PWD
"/"
CONTENT_LENGTH
"0"
HTTP_CONNECTION
"close"
PATH_TRANSLATED
"/hp/cj/ac/pt/www/nachhaltigkeit/unser-weg/strom"
PATH_INFO
"/nachhaltigkeit/unser-weg/strom"
SCRIPT_NAME
"/index.php"
REQUEST_URI
"/index.php/nachhaltigkeit/unser-weg/strom?iccaldate=2029-04-1"
QUERY_STRING
"iccaldate=2029-04-1"
REQUEST_METHOD
"GET"
SERVER_PROTOCOL
"HTTP/2.0"
GATEWAY_INTERFACE
"CGI/1.1"
REMOTE_PORT
"8852"
SCRIPT_FILENAME
"/hp/cj/ac/pt/www/index.php"
SERVER_ADMIN
"[no address given]"
CONTEXT_DOCUMENT_ROOT
"/hp/cj/ac/pt/www"
CONTEXT_PREFIX
""
REQUEST_SCHEME
"https"
DOCUMENT_ROOT
"/hp/cj/ac/pt/www"
REMOTE_ADDR
"216.73.217.11"
SERVER_PORT
"443"
SERVER_ADDR
"178.254.10.14"
SERVER_NAME
"www.beadmakersbench.de"
SERVER_SOFTWARE
"Apache"
SERVER_SIGNATURE
""
HTTP_HOST
"www.beadmakersbench.de"
HTTP_ACCEPT_ENCODING
"gzip, br, zstd, deflate"
HTTP_USER_AGENT
"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"
HTTP_ACCEPT
"*/*"
SSL_SESSION_RESUMED
"Initial"
SSL_SESSION_ID
"39934f8c79ca356358480bd419b26768d302ea420ba7f4fb1a1e2eab07e49758"
SSL_SERVER_A_SIG
"sha256WithRSAEncryption"
SSL_SERVER_A_KEY
"rsaEncryption"
SSL_SERVER_I_DN
"CN=R12,O=Let's Encrypt,C=US"
SSL_SERVER_S_DN
"CN=www.beadmakersbench.de"
SSL_SERVER_V_END
"Jul 12 07:25:33 2026 GMT"
SSL_SERVER_V_START
"Apr 13 07:25:34 2026 GMT"
SSL_SERVER_M_SERIAL
"0529EDBE813CF6DE8B28A08FAB0F6498B555"
SSL_SERVER_M_VERSION
"3"
SSL_CLIENT_VERIFY
"NONE"
SSL_CIPHER_ALGKEYSIZE
"256"
SSL_CIPHER_USEKEYSIZE
"256"
SSL_CIPHER_EXPORT
"false"
SSL_CIPHER
"TLS_AES_256_GCM_SHA384"
SSL_COMPRESS_METHOD
"NULL"
SSL_SECURE_RENEG
"true"
SSL_PROTOCOL
"TLSv1.3"
SSL_VERSION_LIBRARY
"OpenSSL/3.0.2"
SSL_VERSION_INTERFACE
"mod_ssl/2.4.52"
SSL_SERVER_SAN_DNS_1
"www.beadmakersbench.de"
SSL_SERVER_SAN_DNS_0
"beadmakersbench.de"
SSL_SERVER_I_DN_CN
"R12"
SSL_SERVER_I_DN_O
"Let's Encrypt"
SSL_SERVER_I_DN_C
"US"
SSL_SERVER_S_DN_CN
"www.beadmakersbench.de"
SSL_TLS_SNI
"www.beadmakersbench.de"
HTTPS
"on"
H2_STREAM_TAG
"834573-267-3"
H2_STREAM_ID
"3"
H2_PUSHED_ON
""
H2_PUSHED
""
H2_PUSH
"off"
H2PUSH
"off"
HTTP2
"on"
LogDir
"/hp/cj/ac/pt/logfiles"
SCRIPT_URI
"https://www.beadmakersbench.de/index.php/nachhaltigkeit/unser-weg/strom"
SCRIPT_URL
"/index.php/nachhaltigkeit/unser-weg/strom"
UNIQUE_ID
"aeUQVkNy2qMg7xRDwJbDkgACTh4"
IP_Anonym
"216.73.217.0"
IP_Full
"216.73.217.11"
FCGI_ROLE
"RESPONDER"
0. Whoops\Handler\PrettyPageHandler