Whoops \ Exception \ ErrorException (E_NOTICE)
Undefined index: categoriaSelezionata Whoops\Exception\ErrorException thrown with message "Undefined index: categoriaSelezionata" Stacktrace: #5 Whoops\Exception\ErrorException in /var/www/clients/client1/web2/web/private/beautycare/libraries/Frontend.php:141 #4 Whoops\Run:handleError in /var/www/clients/client1/web2/web/private/beautycare/libraries/Frontend.php:141 #3 Beautycare\Frontend:displayProdotti in /var/www/clients/client1/web2/web/private/beautycare/libraries/Frontend.php:106 #2 Beautycare\Frontend:execBrowse in /var/www/clients/client1/web2/private/vendor/phpcraft/subject/src/Subject.php:142 #1 PHPCraft\Subject\Subject:execAction in /var/www/clients/client1/web2/web/private/beautycare/procedures/bootstrap.php:42 #0 require in /var/www/clients/client1/web2/web/index.php:6
Stack frames (6)
5
Whoops
\
Exception
\
ErrorException
/
var
/
www
/
clients
/
client1
/
web2
/
web
/
private
/
beautycare
/
libraries
/
Frontend.php
141
4
Whoops
\
Run
handleError
/
var
/
www
/
clients
/
client1
/
web2
/
web
/
private
/
beautycare
/
libraries
/
Frontend.php
141
3
Beautycare
\
Frontend
displayProdotti
/
var
/
www
/
clients
/
client1
/
web2
/
web
/
private
/
beautycare
/
libraries
/
Frontend.php
106
2
Beautycare
\
Frontend
execBrowse
/
vendor
/
phpcraft
/
subject
/
src
/
Subject.php
142
1
PHPCraft
\
Subject
\
Subject
execAction
/
var
/
www
/
clients
/
client1
/
web2
/
web
/
private
/
beautycare
/
procedures
/
bootstrap.php
42
0
require
/
var
/
www
/
clients
/
client1
/
web2
/
web
/
index.php
6
/
var
/
www
/
clients
/
client1
/
web2
/
web
/
private
/
beautycare
/
libraries
/
Frontend.php
        //currently selected path
        if(!isset($this->routeParameters['path'])) {
            $categorieSelezionate = [];
        } else {
            $categorieSelezionate = explode('/', $this->routeParameters['path']);
            $this->templateParameters['currentPath'] = array_merge($this->templateParameters['currentPath'], $categorieSelezionate);
        }
        //immagine testata di default
        $this->templateParameters['immagineTestata'] = 'public/beautycare/assets/images/testata_default.png';
        //menu
        $slugGenitori = $this->getLivello($this->templateParameters['currentPath'], $this->templateParameters['menu'][0], 1, [null], $depthCategorie);
        //template
        $template = 'categoria-vuota';
        if(!isset($this->routeParameters['path'])) {
            //categorie 0 level
            $template = 'categorie-0';
        } else {
            $this->addApplicationTranslations('gamme_prodotti','gamme_prodotti.ini');
            //categorie 1+ level
            if($this->templateParameters['categoriaSelezionata']['numero_figlie'] > 0) {
                $template = 'categorie-1+';
            }
            //gamme prodotti
            if($this->templateParameters['categoriaSelezionata']['numero_gamme'] > 0) {
                //elenco gamme
                $gamme = $this->getGammeCategoria($this->templateParameters['categoriaSelezionata']['categoria_id']);
                $pathDepth = count($this->templateParameters['currentPath']);
                $gammaLevel = $this->templateParameters['categoriaSelezionata']['numero_gamme'] == 1 ? $depthCategorie : $depthCategorie + 1;
                $prodottoSelezionato = isset($this->templateParameters['currentPath'][$gammaLevel + 1]);
                //path to gamma
                $this->templateParameters['pathToGamma'] = join('/',array_slice($this->templateParameters['currentPath'], 0, $gammaLevel));
                //gamma prodotti
                if(!$prodottoSelezionato) {
                    //gamma unica o selezionata
                    if($this->templateParameters['categoriaSelezionata']['numero_gamme'] == 1 || $pathDepth > $depthCategorie) {
                        //locale
                        $this->addApplicationTranslations('espositori','espositori.ini');
                        //section
                        $this->templateParameters['section'] = isset($this->templateParameters['currentPath'][$gammaLevel]) ? $this->templateParameters['currentPath'][$gammaLevel] : false;
                        if($this->templateParameters['categoriaSelezionata']['numero_gamme'] == 1) {
/
var
/
www
/
clients
/
client1
/
web2
/
web
/
private
/
beautycare
/
libraries
/
Frontend.php
        //currently selected path
        if(!isset($this->routeParameters['path'])) {
            $categorieSelezionate = [];
        } else {
            $categorieSelezionate = explode('/', $this->routeParameters['path']);
            $this->templateParameters['currentPath'] = array_merge($this->templateParameters['currentPath'], $categorieSelezionate);
        }
        //immagine testata di default
        $this->templateParameters['immagineTestata'] = 'public/beautycare/assets/images/testata_default.png';
        //menu
        $slugGenitori = $this->getLivello($this->templateParameters['currentPath'], $this->templateParameters['menu'][0], 1, [null], $depthCategorie);
        //template
        $template = 'categoria-vuota';
        if(!isset($this->routeParameters['path'])) {
            //categorie 0 level
            $template = 'categorie-0';
        } else {
            $this->addApplicationTranslations('gamme_prodotti','gamme_prodotti.ini');
            //categorie 1+ level
            if($this->templateParameters['categoriaSelezionata']['numero_figlie'] > 0) {
                $template = 'categorie-1+';
            }
            //gamme prodotti
            if($this->templateParameters['categoriaSelezionata']['numero_gamme'] > 0) {
                //elenco gamme
                $gamme = $this->getGammeCategoria($this->templateParameters['categoriaSelezionata']['categoria_id']);
                $pathDepth = count($this->templateParameters['currentPath']);
                $gammaLevel = $this->templateParameters['categoriaSelezionata']['numero_gamme'] == 1 ? $depthCategorie : $depthCategorie + 1;
                $prodottoSelezionato = isset($this->templateParameters['currentPath'][$gammaLevel + 1]);
                //path to gamma
                $this->templateParameters['pathToGamma'] = join('/',array_slice($this->templateParameters['currentPath'], 0, $gammaLevel));
                //gamma prodotti
                if(!$prodottoSelezionato) {
                    //gamma unica o selezionata
                    if($this->templateParameters['categoriaSelezionata']['numero_gamme'] == 1 || $pathDepth > $depthCategorie) {
                        //locale
                        $this->addApplicationTranslations('espositori','espositori.ini');
                        //section
                        $this->templateParameters['section'] = isset($this->templateParameters['currentPath'][$gammaLevel]) ? $this->templateParameters['currentPath'][$gammaLevel] : false;
                        if($this->templateParameters['categoriaSelezionata']['numero_gamme'] == 1) {
/
var
/
www
/
clients
/
client1
/
web2
/
web
/
private
/
beautycare
/
libraries
/
Frontend.php
        } else {
            $logAction = 'display-login';
            $logLabel = $this->translations['frontend']['main_menu']['login_link'];
        }
        $this->templateParameters['menu'] = [
            [
                'slug' => 'prodotti','nome' => $this->translations['frontend']['main_menu']['prodotti_link'],
            ],
            /*[
                'slug' => 'espositori','nome' => $this->translations['frontend']['main_menu']['display_link']
            ]
            [
                'slug' => 'artworks','nome' => $this->translations['frontend']['main_menu']['artworks_link']
            ],*/
            [
                'slug' => 'utenti/' . $logAction,'nome' => $logLabel
            ]
        ];
        //handle subject
        $template = $this->{'display' . ucfirst($this->subject)}();
        $this->templateParameters['page_title'] = sprintf('%s - %s - %s', $this->translations['application']['marketing']['brand'], $this->translations['application']['marketing']['division'], $this->translations['application']['marketing']['area']);
        //$this->setPageTitle($this->templateParameters['subject_title']);
        //$this->templateParameters['translations'] = $this->translations;
 
        $this->renderTemplate('frontend/' . $template);
    }
 
    /**
     * displays prodotti
     * @return string $template
     */
    private function displayProdotti()
    {
        //locale
        $this->addApplicationTranslations('prodotti','prodotti.ini');
        //currently selected path
        if(!isset($this->routeParameters['path'])) {
            $categorieSelezionate = [];
        } else {
            $categorieSelezionate = explode('/', $this->routeParameters['path']);
/
var
/
www
/
clients
/
client1
/
web2
/
private
/
vendor
/
phpcraft
/
subject
/
src
/
Subject.php
     * @param string $pathToIniFile file path into private/application-name/curent-language/
     * @throws InvalidArgumentException if file is not found
     **/
    public function addApplicationTranslations($key, $pathToIniFile)
    {
        $path = sprintf('private/%s/locales/%s/%s', $this->application, $this->language, $pathToIniFile);
        $this->addTranslations($key, $path);
    }
    
    /**
     * tries to exec current action
     * @throws Exception if there is no method defined to handle action
     **/
    public function execAction()
    {
        try {
            $this->templateParameters['area'] = $this->area;
            $this->templateParameters['areaAuthentication'] = $this->areaAuthentication;
            $this->getBackPaths();
            $this->{'exec'.ucfirst($this->sanitizeAction($this->action))}();
        } catch(Exception $exception) {
            throw new Exception(sprintf('no method for handling %s %s %s', $this->area, $this->subject, $this->action));
        }
    }
    
    /**
     * Stores a path to turn back lately
     **/
    public function execBackPath()
    {
        $arguments = array(
            'backId' => FILTER_SANITIZE_STRING,
            'backPath' =>  array(
                        'filter' => FILTER_SANITIZE_URL,
                        'flags' => FILTER_FLAG_PATH_REQUIRED
                    ),
            'backLabel' => FILTER_SANITIZE_STRING,
        );
        $input = filter_input_array(INPUT_POST, $arguments);
        $this->cookie->set('backPaths[' . $input['backId'] . '][path]', $input['backPath']);
/
var
/
www
/
clients
/
client1
/
web2
/
web
/
private
/
beautycare
/
procedures
/
bootstrap.php
    if(!in_array(LANGUAGE, $configuration['languages'])) throw new Exception("language not into configured languages");
    //load specific area configuration and procedure if needed
    if($configuration['areas'][AREA]['configuration']) {
        require sprintf('private/%s/configurations/%s.php', APPLICATION, AREA);
    }
    if($configuration['areas'][AREA]['procedure']) {
        require sprintf('private/%s/procedures/%s.php', APPLICATION, AREA);
    }
    //require subject procedure
    $subject = require sprintf('private/%s/procedures/%s/%s.php', APPLICATION, AREA, SUBJECT);
    //load specific application and area translations if needed
    if($configuration['locale']) {
        $subject->addApplicationTranslations('application', 'application.ini');
    }
    if($configuration['areas'][AREA]['locale']) {
        $subject->addApplicationTranslations(AREA, sprintf('%s.ini', AREA));
    }
 
    //subject action
    $subject->execAction();
}
//output
    // set headers
foreach ($http->response->getHeaders() as $name => $values) {
    foreach ($values as $value) {
        @header(sprintf('%s: %s', $name, $value), false);
    }
}
    //check status code
switch($http->response->getStatusCode()) {
    case 200:
    break;
    default:
        @header($_SERVER["SERVER_PROTOCOL"]." " . $http->response->getStatusCode());
    break;
}
    // output body
$http->response = $http->response->withBody($http->stream);
echo $http->response->getBody();
 
/
var
/
www
/
clients
/
client1
/
web2
/
web
/
index.php
<?php
//application name and namesapce
define('APPLICATION','beautycare');
define('APPLICATION_NAMESPACE','Beautycare');
//bootstrap
require sprintf('private/%s/procedures/bootstrap.php', APPLICATION);

Environment & details:

empty
empty
empty
empty
empty
Key Value
PHP_FCGI_MAX_REQUESTS 5000
PHPRC /var/www/conf/web2
PWD /var/www/php-fcgi-scripts/web2
TMPDIR /var/www/clients/client1/web2/tmp
TEMP /var/www/clients/client1/web2/tmp
SHLVL 0
TMP /var/www/clients/client1/web2/tmp
PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PHP_DOCUMENT_ROOT /var/www/clients/client1/web2
CONTENT_LENGTH 0
HTTP_CONNECTION close
SCRIPT_NAME /index.php
REQUEST_URI /prodotti/neutromed-old/uomo-old/schiuma-da-barba-old
QUERY_STRING
REQUEST_METHOD GET
SERVER_PROTOCOL HTTP/2.0
GATEWAY_INTERFACE CGI/1.1
REDIRECT_URL /prodotti/neutromed-old/uomo-old/schiuma-da-barba-old
REMOTE_PORT 52146
SCRIPT_FILENAME /var/www/beautycare.hbcwebtools.it/web/index.php
SERVER_ADMIN webmaster@beautycare.hbcwebtools.it
CONTEXT_DOCUMENT_ROOT /var/www/beautycare.hbcwebtools.it/web
CONTEXT_PREFIX
REQUEST_SCHEME https
DOCUMENT_ROOT /var/www/beautycare.hbcwebtools.it/web
REMOTE_ADDR 52.91.255.225
SERVER_PORT 443
SERVER_ADDR 65.108.156.216
SERVER_NAME beautycare.hbcwebtools.it
SERVER_SOFTWARE Apache
SERVER_SIGNATURE
HTTP_HOST beautycare.hbcwebtools.it
HTTP_USER_AGENT claudebot
HTTP_ACCEPT */*
SSL_TLS_SNI beautycare.hbcwebtools.it
HTTPS on
H2_STREAM_TAG 148-3
H2_STREAM_ID 3
H2_PUSHED_ON
H2_PUSHED
H2_PUSH off
H2PUSH off
HTTP2 on
SCRIPT_URI https://beautycare.hbcwebtools.it/prodotti/neutromed-old/uomo-old/schiuma-da-barba-old
SCRIPT_URL /prodotti/neutromed-old/uomo-old/schiuma-da-barba-old
REDIRECT_STATUS 200
REDIRECT_SSL_TLS_SNI beautycare.hbcwebtools.it
REDIRECT_HTTPS on
REDIRECT_H2_STREAM_TAG 148-3
REDIRECT_H2_STREAM_ID 3
REDIRECT_H2_PUSHED_ON
REDIRECT_H2_PUSHED
REDIRECT_H2_PUSH off
REDIRECT_H2PUSH off
REDIRECT_HTTP2 on
REDIRECT_SCRIPT_URI https://beautycare.hbcwebtools.it/prodotti/neutromed-old/uomo-old/schiuma-da-barba-old
REDIRECT_SCRIPT_URL /prodotti/neutromed-old/uomo-old/schiuma-da-barba-old
FCGI_ROLE RESPONDER
PHP_SELF /index.php
REQUEST_TIME_FLOAT 1711639162.0373
REQUEST_TIME 1711639162
empty
0. Whoops\Handler\PrettyPageHandler