Phalcon Framework 4.1.2

ParseError: syntax error, unexpected end of file, expecting ';' or ','

/var/www/html/johngold.net/cache/volt/Tmpl_System_Comment_Comment.volt.php (120)
#0Phalcon\Mvc\View\Engine\Volt->render
#1Phalcon\Mvc\View->engineRender
#2Phalcon\Mvc\View->partial
#3Phalcon\Mvc\View\Engine\AbstractEngine->partial
/var/www/html/johngold.net/cache/volt/Tmpl_Site_PhalCMS_Post_Show.volt.php (107)
<div class="uk-container" itemscope itemtype="http://schema.org/Brand">
    <article class="uk-article">
        <div class="uk-text-left">
            <?= $this->partial('Breadcrumb/Breadcrumb') ?>
        </div>
        <h1 class="uk-article-title" itemprop="name">
            <?= html_entity_decode($post->t('title')) ?>
        </h1>
        <p class="uk-article-meta">
            <?= CLSystems\PhalCMS\Lib\Helper\Text::_('posted-in') . ' ' ?>
            <a href="<?= $post->category->link ?>">
                <?= $post->category->t('title') ?>
            </a>
            <?= ' | ' . CLSystems\PhalCMS\Lib\Helper\IconSvg::render('eye') . ' ' . CLSystems\PhalCMS\Lib\Helper\Text::plural('hits',$post->hits,['hits' => $post->hits]) ?>
        </p>
 
        <?php $vouchers = $post->vouchers(); ?>
        <?php if (!empty($vouchers)) { ?>
            <h2><?= CLSystems\PhalCMS\Lib\Helper\Text::_('discounts-at') ?> <?= $this->escaper->escapeHtmlAttr(html_entity_decode($post->t('title'))) ?></h2>
            <?= $this->partial('UcmItem/VouchersSlider') ?>
        <?php } ?>
 
        <?php if ($post->parentId == 118) { ?>
            <h2><?= CLSystems\PhalCMS\Lib\Helper\Text::_('info-about') ?> <?= lcfirst(html_entity_decode(html_entity_decode($post->t('title')))) ?></h2>
        <?php } else { ?>
            <h2><?= CLSystems\PhalCMS\Lib\Helper\Text::_('info-about') ?> <?= html_entity_decode(html_entity_decode($post->t('title'))) ?></h2>
        <?php } ?>
        <?php $images = CLSystems\PhalCMS\Lib\Helper\Image::loadImage($post->t('image'),false); ?>
        <?php $rating = $post->rating(); ?>
        <?php if (!empty($rating)) { ?>
            <script type="application/ld+json">
                {
                    "@context": "https://schema.org/",
                    "@type": "Organization",
                    "brand": {
                        "@type": "Brand",
                        "name": "<?= $this->escaper->escapeHtmlAttr($rating->merchantName) ?>"
                    },
                    "description": "<?= strip_tags(html_entity_decode($post->t('summary'))) ?>",
                    "image": "<?= $images[0]->getUri() ?>",
                    "name": "<?= $this->escaper->escapeHtmlAttr($post->t('title')) ?>",
                    "aggregateRating": {
                        "@type": "AggregateRating",
                        "ratingValue": "<?= $rating->ratingValue ?>",
                        "bestRating": "100",
                        "ratingCount": "<?= $rating->ratingCount ?>"
                    }
                }
            </script>
            <div class="post-rating uk-text-muted uk-margin"><?= $rating->ratingCount ?> <?= CLSystems\PhalCMS\Lib\Helper\Text::_('reviews') ?><br/>
                <?= CLSystems\PhalCMS\Lib\Helper\Text::_('score') ?>: <a href="<?= $rating->externalRatingUrl ?>" target="_blank" rel="noreferrer">
                    <?= $rating->ratingValue ?> <?= CLSystems\PhalCMS\Lib\Helper\Text::_('out-of') ?> 100
                </a>
            </div>
        <?php } ?>
 
        <?php $summary = trim($post->t('summary')); ?>
        <?php if (!empty($summary)) { ?>
            <div class="post-summary uk-text-lead uk-margin">
                <?= strip_tags(html_entity_decode($summary)) ?>
            </div>
        <?php } ?>
 
        <?php if ($this->length($images) > 0) { ?>
            <?php if ($this->length($images) > 1) { ?>
                <div class="post-images">
                    <div class="uk-position-relative" uk-slideshow>
                        <ul class="uk-slideshow-items" uk-lightbox>
                            <?php $thumbNav = ''; ?>
                            <?php foreach ($images as $i => $image) { ?>
                                <?php $ratio = $image->getRatio(); ?>
                                <li>
                                    <a href="<?= $image->getUri() ?>">
                                        <div style="--aspect-ratio: <?= $ratio ?>/1">
                                            <img data-src="<?= $image->getUri() ?>" alt="<?= $this->escaper->escapeHtmlAttr($post->t('title')) ?>" uk-img uk-cover/>
                                        </div>
                                    </a>
                                </li>
                                <?php $thumbNav = $thumbNav . '<li uk-slideshow-item="' . $i . '"><a href="#"><img src="' . $image->getResize(100) . '" width="100" alt=""></a></li>'; ?>
                            <?php } ?>
                        </ul>
                        <div class="uk-position-bottom-center uk-position-small">
                            <ul class="uk-thumbnav">
                                <?= $thumbNav ?>
                            </ul>
                        </div>
                    </div>
                </div>
            <?php } else { ?>
                <?php $ratio = $images[0]->getRatio(); ?>
                <div class="post-image" uk-lightbox>
                    <a href="<?= $images[0]->getUri() ?>">
                        <div style="--aspect-ratio: <?= $ratio ?>/1">
                            <img itemprop="logo" data-src="<?= $images[0]->getUri() ?>" alt="<?= $this->escaper->escapeHtmlAttr($post->t('title')) ?>" uk-img/>
                        </div>
                    </a>
                </div>
            <?php } ?>
        <?php } ?>
 
        
        <span itemprop="description"><?= $this->partial('UcmItem/Description') ?></span>
 
    </article>
 
    
    <?= $this->partial('Comment/Comment') ?>
</div>
#4unknown
#5Phalcon\Mvc\View\Engine\Volt->render
#6Phalcon\Mvc\View->engineRender
#7Phalcon\Mvc\View->processRender
#8Phalcon\Mvc\View->render
#9Phalcon\Mvc\Application->handle
/var/www/html/johngold.net/src/app/Lib/CmsApplication.php (117)
<?php
 
namespace CLSystems\PhalCMS\Lib;
 
use Phalcon\Loader;
use Phalcon\Http\Response;
use Phalcon\Events\Event;
use Phalcon\Mvc\Application;
use Phalcon\Mvc\Dispatcher;
use Phalcon\Mvc\View;
use CLSystems\PhalCMS\Lib\Helper\Asset;
use CLSystems\PhalCMS\Lib\Helper\Config;
use CLSystems\PhalCMS\Lib\Helper\Uri;
use CLSystems\PhalCMS\Lib\Helper\State;
use CLSystems\PhalCMS\Lib\Helper\User;
use CLSystems\PhalCMS\Lib\Helper\Event as EventHelper;
use CLSystems\PhalCMS\Lib\Mvc\View\ViewBase;
use CLSystems\Php\Registry;
use MatthiasMullie\Minify;
use Exception;
 
class CmsApplication extends Application
{
    public function execute()
    {
        try {
            $eventsManager = $this->di->getShared('eventsManager');
            $eventsManager->attach('application:beforeSendResponse', $this);
            $plugins = EventHelper::getPlugins();
            $systemEvents = [
                'application:beforeSendResponse',
                'dispatch:beforeExecuteRoute',
                'dispatch:beforeException',
                'dispatch:beforeDispatch',
                'dispatch:afterDispatch',
                'dispatch:afterInitialize',
            ];
 
            foreach ($plugins['System'] as $className => $config) {
                $handler = EventHelper::getHandler($className, $config);
 
                foreach ($systemEvents as $systemEvent) {
                    $eventsManager->attach($systemEvent, $handler);
                }
            }
 
            // Update view dirs
            define('TPL_SITE_PATH', APP_PATH . '/Tmpl/Site/' . Config::get('siteTemplate', 'PhalCMS'));
            define('TPL_ADMINISTRATOR_PATH', APP_PATH . '/Tmpl/Administrator');
            define('TPL_SYSTEM_PATH', APP_PATH . '/Tmpl/System');
 
            if (Uri::isClient('site')) {
                $viewDirs = [
                    TPL_SITE_PATH . '/Tmpl/',
                    TPL_SITE_PATH . '/',
                ];
            } else {
                $viewDirs = [
                    TPL_ADMINISTRATOR_PATH . '/',
                ];
            }
 
            foreach (['System', 'Cms'] as $plgGroup) {
                if (isset($plugins[$plgGroup])) {
                    /**
                     * @var string $pluginClass
                     * @var Registry $pluginConfig
                     */
 
 
                    foreach ($plugins[$plgGroup] as $pluginClass => $pluginConfig) {
                        $pluginName = $pluginConfig->get('manifest.name');
                        $pluginPath = PLUGIN_PATH . '/' . $plgGroup . '/' . $pluginName;
                        $psrPaths = [];
 
                        if (is_dir($pluginPath . '/Tmpl')) {
                            $viewDirs[] = $pluginPath . '/Tmpl/';
                        }
 
                        if (is_dir($pluginPath . '/Lib')) {
                            $psrPaths['CLSystems\\PhalCMS\\Lib'] = $pluginPath . '/Lib';
                        }
 
                        if (is_dir($pluginPath . '/Widget')) {
                            $psrPaths['CLSystems\\PhalCMS\\Widget'] = $pluginPath . '/Widget';
                        }
 
                        if ($psrPaths) {
                            (new Loader)
                                ->registerNamespaces($psrPaths, true)
                                ->register();
                        }
                    }
                }
            }
 
            $viewDirs[] = TPL_SYSTEM_PATH . '/';
 
            /** @var ViewBase $view */
            $view = $this->di->getShared('view');
            $requestUri = $_SERVER['REQUEST_URI'];
 
            if (Config::get('siteOffline') === 'Y'
                && !User::getInstance()->access('super')
            ) {
                $this->view->setMainView('Offline/Index');
 
                if (strpos($requestUri, '/user/') !== 0) {
                    $requestUri = '';
                }
            } else {
                $view->setMainView('Index');
            }
 
            $view->setViewsDir($viewDirs);
            $this->setEventsManager($eventsManager);
            $this->handle($requestUri)->send();
        } catch (Exception $e) {
            if (true === DEVELOPMENT_MODE) {
                // Let Phalcon Debug catch this
                throw $e;
            }
 
            try {
                if (User::getInstance()->access('super')) {
                    State::setMark('exception', $e);
                }
 
                /**
                 * @var Dispatcher $dispatcher
                 * @var View $view
                 */
                $dispatcher = $this->getDI()->getShared('dispatcher');
                $dispatcher->setControllerName(Uri::isClient('administrator') ? 'admin_error' : 'error');
                $dispatcher->setActionName('show');
                $dispatcher->setParams(
                    [
                        'code'    => $e->getCode(),
                        'message' => $e->getMessage(),
                    ]
                );
 
                $view = $this->getDI()->getShared('view');
                $view->start();
                $dispatcher->dispatch();
                $view->render(
                    $dispatcher->getControllerName(),
                    $dispatcher->getActionName(),
                    $dispatcher->getParams()
                );
                $view->finish();
                echo $view->getContent();
            } catch (Exception $e2) {
                debugVar($e2->getMessage());
            }
        }
    }
 
    protected function getCompressor($type)
    {
        if ('css' === $type) {
            $compressor = new Minify\CSS;
            $compressor->setImportExtensions(
                [
                    'gif' => 'data:image/gif',
                    'png' => 'data:image/png',
                    'svg' => 'data:image/svg+xml',
                ]
            );
        } else {
            $compressor = new Minify\JS;
        }
 
        return $compressor;
    }
 
    protected function compressAssets()
    {
        $basePath = PUBLIC_PATH . '/assets';
        $assets = Factory::getService('assets');
 
        foreach (Asset::getFiles() as $type => $files) {
            $fileName = md5(implode(':', $files)) . '.' . $type;
            $filePath = $basePath . '/compressed/' . $fileName;
            $fileUri = DOMAIN . '/assets/compressed/' . $fileName . (DEVELOPMENT_MODE ? '?' . time() : '');
            $hasAsset = is_file($filePath);
            $ucType = ucfirst($type);
            $addFunc = 'add' . $ucType;
 
            if ($hasAsset && !DEVELOPMENT_MODE) {
                call_user_func_array([$assets, $addFunc], [$fileUri, false]);
                continue;
            }
 
            $compressor = self::getCompressor($type);
 
            foreach ($files as $file) {
                $compressor->add($file);
            }
 
            if (!is_dir($basePath . '/compressed/')) {
                mkdir($basePath . '/compressed/', 0777, true);
            }
 
            if ($compressor->minify($filePath)) {
//                echo "&nbsp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" . $filePath . "<br/>";
                chmod($filePath, 0777);
                call_user_func_array([$assets, $addFunc], [$fileUri, false]);
            }
 
            unset($compressor);
        }
    }
 
    public function beforeSendResponse(Event $event, CmsApplication $app, Response $response)
    {
        $request = $this->di->getShared('request');
 
        if ($request->isAjax()) {
            return;
        }
 
        /** @var Asset $assets */
        $this->compressAssets();
        $assets = $this->di->getShared('assets');
 
        // Compress CSS
        ob_start();
        $assets->outputCss();
        $assets->outputInlineCss();
        $content = str_replace('</head>', ob_get_clean() . '</head>', $response->getContent());
 
        // Compress JS
        ob_start();
        $assets->outputJs();
        $assets->outputInlineJs();
        $code = Asset::getCode() . ob_get_clean();
 
        // Extra code (in the footer)
        $content = str_replace('</body>', $code . '</body>', $content);
        $response->setContent($content);
    }
}
#10CLSystems\PhalCMS\Lib\CmsApplication->execute
/var/www/html/johngold.net/public/index.php (14)
<?php
declare(strict_types=1);
 
error_reporting(E_ALL);
ini_set('display_errors', 'true');
 
use CLSystems\PhalCMS\Lib\Factory;
 
define('BASE_PATH', dirname(__DIR__));
 
require_once BASE_PATH . '/src/app/Lib/Factory.php';
 
// Execute application
Factory::getApplication()->execute();
KeyValue
_url/merken/av-aanbiedingen-2
KeyValue
PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
TEMP/var/www/clients/client1/web19/tmp
TMPDIR/var/www/clients/client1/web19/tmp
TMP/var/www/clients/client1/web19/tmp
HOSTNAME
USERweb19
HOME/var/www/clients/client1/web19
SCRIPT_NAME/index.php
REQUEST_URI/merken/av-aanbiedingen-2
QUERY_STRING_url=/merken/av-aanbiedingen-2
REQUEST_METHODGET
SERVER_PROTOCOLHTTP/1.1
GATEWAY_INTERFACECGI/1.1
REDIRECT_QUERY_STRING_url=/merken/av-aanbiedingen-2
REDIRECT_URL/merken/av-aanbiedingen-2
REMOTE_PORT31993
SCRIPT_FILENAME/var/www/clients/client1/web19/web/index.php
SERVER_ADMINwebmaster@johngold.net
CONTEXT_DOCUMENT_ROOT/var/www/clients/client1/web19/web
CONTEXT_PREFIX
REQUEST_SCHEMEhttps
DOCUMENT_ROOT/var/www/clients/client1/web19/web
REMOTE_ADDR216.73.216.99
SERVER_PORT443
SERVER_ADDR178.18.244.9
SERVER_NAMEjohngold.net
SERVER_SOFTWAREApache
SERVER_SIGNATURE
HTTP_HOSTjohngold.net
HTTP_ACCEPT_ENCODINGgzip, br, zstd, deflate
HTTP_USER_AGENTMozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
HTTP_ACCEPT*/*
proxy-nokeepalive1
SSL_TLS_SNIjohngold.net
HTTPSon
REDIRECT_STATUS200
REDIRECT_SSL_TLS_SNIjohngold.net
REDIRECT_HTTPSon
FCGI_ROLERESPONDER
PHP_SELF/index.php
REQUEST_TIME_FLOAT1749331107.8217
REQUEST_TIME1749331107
#Path
0/var/www/html/johngold.net/public/index.php
1/var/www/html/johngold.net/src/app/Lib/Factory.php
2/var/www/html/johngold.net/src/app/Config/Define.php
3/var/www/html/johngold.net/src/app/Config/Loader.php
4/var/www/html/johngold.net/vendor/autoload.php
5/var/www/html/johngold.net/vendor/composer/autoload_real.php
6/var/www/html/johngold.net/vendor/composer/platform_check.php
7/var/www/html/johngold.net/vendor/composer/ClassLoader.php
8/var/www/html/johngold.net/vendor/composer/autoload_static.php
9/var/www/html/johngold.net/vendor/phpunit/phpunit/src/Framework/Assert/Functions.php
10/var/www/html/johngold.net/vendor/symfony/polyfill-php80/bootstrap.php
11/var/www/html/johngold.net/vendor/symfony/polyfill-mbstring/bootstrap.php
12/var/www/html/johngold.net/vendor/symfony/polyfill-ctype/bootstrap.php
13/var/www/html/johngold.net/vendor/symfony/deprecation-contracts/function.php
14/var/www/html/johngold.net/vendor/ralouphie/getallheaders/src/getallheaders.php
15/var/www/html/johngold.net/vendor/guzzlehttp/psr7/src/functions_include.php
16/var/www/html/johngold.net/vendor/guzzlehttp/psr7/src/functions.php
17/var/www/html/johngold.net/vendor/symfony/polyfill-intl-grapheme/bootstrap.php
18/var/www/html/johngold.net/vendor/symfony/polyfill-intl-normalizer/bootstrap.php
19/var/www/html/johngold.net/vendor/guzzlehttp/promises/src/functions_include.php
20/var/www/html/johngold.net/vendor/guzzlehttp/promises/src/functions.php
21/var/www/html/johngold.net/vendor/symfony/polyfill-php72/bootstrap.php
22/var/www/html/johngold.net/vendor/symfony/polyfill-php73/bootstrap.php
23/var/www/html/johngold.net/vendor/symfony/string/Resources/functions.php
24/var/www/html/johngold.net/vendor/symfony/polyfill-intl-idn/bootstrap.php
25/var/www/html/johngold.net/vendor/guzzlehttp/guzzle/src/functions_include.php
26/var/www/html/johngold.net/vendor/guzzlehttp/guzzle/src/functions.php
27/var/www/html/johngold.net/vendor/phpseclib/phpseclib/phpseclib/bootstrap.php
28/var/www/html/johngold.net/vendor/myclabs/deep-copy/src/DeepCopy/deep_copy.php
29/var/www/html/johngold.net/vendor/symfony/polyfill-iconv/bootstrap.php
30/var/www/html/johngold.net/vendor/facebook/graph-sdk/src/Facebook/polyfills.php
31/var/www/html/johngold.net/vendor/phalcon/dd/src/helper.php
32/var/www/html/johngold.net/vendor/voku/portable-utf8/bootstrap.php
33/var/www/html/johngold.net/vendor/voku/portable-utf8/src/voku/helper/Bootup.php
34/var/www/html/johngold.net/vendor/voku/portable-utf8/src/voku/helper/UTF8.php
35/var/www/html/johngold.net/vendor/clsystems/php-registry/src/Registry.php
36/var/www/html/johngold.net/src/app/Lib/Helper/Config.php
37/var/www/html/johngold.net/src/app/Lib/Helper/Asset.php
38/var/www/html/johngold.net/src/app/Lib/Mvc/View/ViewBase.php
39/var/www/html/johngold.net/src/app/Lib/Helper/Volt.php
40/var/www/html/johngold.net/src/app/Lib/CmsApplication.php
41/var/www/html/johngold.net/src/app/Lib/Helper/Language.php
42/var/www/html/johngold.net/src/app/Lib/Helper/FileSystem.php
43/var/www/html/johngold.net/src/app/Language/de-DE/Locale.php
44/var/www/html/johngold.net/src/app/Language/en-GB/Locale.php
45/var/www/html/johngold.net/src/app/Language/nl-NL/Locale.php
46/var/www/html/johngold.net/src/app/Lib/Helper/Uri.php
47/var/www/html/johngold.net/src/app/Language/nl-NL/nl-NL.php
48/var/www/html/johngold.net/src/app/Lib/Helper/Event.php
49/var/www/html/johngold.net/src/app/Lib/Mvc/Model/Config.php
50/var/www/html/johngold.net/src/app/Lib/Mvc/Model/ModelBase.php
51/var/www/html/johngold.net/src/app/Plugin/Cms/OutLink/OutLink.php
52/var/www/html/johngold.net/src/app/Lib/Plugin.php
53/var/www/html/johngold.net/src/app/Plugin/Cms/SiteMap/SiteMap.php
54/var/www/html/johngold.net/src/app/Plugin/Cms/SiteMap/Language/nl-NL.php
55/var/www/html/johngold.net/src/app/Plugin/Cms/SocialLogin/SocialLogin.php
56/var/www/html/johngold.net/src/app/Plugin/System/Backup/Backup.php
57/var/www/html/johngold.net/src/app/Plugin/System/Backup/Language/nl-NL.php
58/var/www/html/johngold.net/src/app/Plugin/System/Cms/Cms.php
59/var/www/html/johngold.net/src/app/Config/Router.php
60/var/www/html/johngold.net/src/app/Config/Router/Site.php
61/var/www/html/johngold.net/src/app/Lib/Mvc/Controller/DisplayController.php
62/var/www/html/johngold.net/src/app/Lib/Mvc/Controller/ControllerBase.php
63/var/www/html/johngold.net/src/app/Lib/Helper/User.php
64/var/www/html/johngold.net/src/app/Lib/Helper/State.php
65/var/www/html/johngold.net/src/app/Lib/Mvc/Model/User.php
66/var/www/html/johngold.net/src/app/Lib/Mvc/Model/UcmItem.php
67/var/www/html/johngold.net/src/app/Lib/Helper/UcmItem.php
68/var/www/html/johngold.net/src/app/Lib/Mvc/Model/Post.php
69/var/www/html/johngold.net/src/app/Lib/Mvc/Model/PostCategory.php
70/var/www/html/johngold.net/src/app/Lib/Mvc/Model/Nested.php
71/var/www/html/johngold.net/src/app/Lib/Helper/Text.php
72/var/www/html/johngold.net/cache/volt/Tmpl_Site_PhalCMS_Post_Show.volt.php
73/var/www/html/johngold.net/cache/volt/Tmpl_System_Breadcrumb_Breadcrumb.volt.php
74/var/www/html/johngold.net/src/app/Lib/Helper/IconSvg.php
75/var/www/html/johngold.net/src/app/Lib/Helper/Image.php
76/var/www/html/johngold.net/src/app/Lib/Mvc/Model/Rating.php
77/var/www/html/johngold.net/cache/volt/Tmpl_System_UcmItem_Description.volt.php
78/var/www/html/johngold.net/src/app/Lib/Mvc/Model/UcmFieldValue.php
79/var/www/html/johngold.net/src/app/Lib/Mvc/Model/UcmField.php
80/var/www/html/johngold.net/src/app/Lib/Mvc/Model/Tag.php
81/var/www/html/johngold.net/src/app/Lib/Mvc/Model/UcmItemMap.php
Memory
Usage2097152