Whoops \ Exception \ ErrorException (E_WARNING)
file_put_contents(/home/surfjoe/public_html/application/files/cache/expensive/0fea6a13c52b4d47/25368f24b045ca84/38a865804f8fdcb6/57cd99682e939275/2ddb27c5cdf0b672/745d4c64665be841/f56346d730c38ad8/617128cc2fe7ec99.php): failed to open stream: Permission denied Whoops\Exception\ErrorException thrown with message "file_put_contents(/home/surfjoe/public_html/application/files/cache/expensive/0fea6a13c52b4d47/25368f24b045ca84/38a865804f8fdcb6/57cd99682e939275/2ddb27c5cdf0b672/745d4c64665be841/f56346d730c38ad8/617128cc2fe7ec99.php): failed to open stream: Permission denied" Stacktrace: #45 Whoops\Exception\ErrorException in /home/surfjoe/public_html/concrete/src/Cache/Driver/FileSystemStashDriver.php:46 #44 file_put_contents in /home/surfjoe/public_html/concrete/src/Cache/Driver/FileSystemStashDriver.php:46 #43 Concrete\Core\Cache\Driver\FileSystemStashDriver:storeData in /home/surfjoe/public_html/concrete/vendor/tedivm/stash/src/Stash/Item.php:446 #42 Stash\Item:executeSet in /home/surfjoe/public_html/concrete/vendor/tedivm/stash/src/Stash/Item.php:406 #41 Stash\Item:save in /home/surfjoe/public_html/concrete/vendor/tedivm/stash/src/Stash/Pool.php:164 #40 Stash\Pool:save in /home/surfjoe/public_html/concrete/src/Cache/Cache.php:178 #39 Concrete\Core\Cache\Cache:save in /home/surfjoe/public_html/concrete/src/Cache/Adapter/DoctrineCacheDriver.php:80 #38 Concrete\Core\Cache\Adapter\DoctrineCacheDriver:doSave in /home/surfjoe/public_html/concrete/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CacheProvider.php:132 #37 Doctrine\Common\Cache\CacheProvider:save in /home/surfjoe/public_html/concrete/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/CachedReader.php:213 #36 Doctrine\Common\Annotations\CachedReader:saveToCache in /home/surfjoe/public_html/concrete/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/CachedReader.php:84 #35 Doctrine\Common\Annotations\CachedReader:getClassAnnotations in /home/surfjoe/public_html/concrete/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/AnnotationDriver.php:180 #34 Doctrine\Common\Persistence\Mapping\Driver\AnnotationDriver:isTransient in /home/surfjoe/public_html/concrete/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/AnnotationDriver.php:247 #33 Doctrine\Common\Persistence\Mapping\Driver\AnnotationDriver:getAllClassNames in /home/surfjoe/public_html/concrete/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/MappingDriverChain.php:128 #32 Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain:getAllClassNames in /home/surfjoe/public_html/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php:357 #31 Doctrine\ORM\Mapping\ClassMetadataFactory:addDefaultDiscriminatorMap in /home/surfjoe/public_html/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php:243 #30 Doctrine\ORM\Mapping\ClassMetadataFactory:doLoadMetadata in /home/surfjoe/public_html/concrete/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php:332 #29 Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory:loadMetadata in /home/surfjoe/public_html/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php:78 #28 Doctrine\ORM\Mapping\ClassMetadataFactory:loadMetadata in /home/surfjoe/public_html/concrete/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php:216 #27 Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory:getMetadataFor in /home/surfjoe/public_html/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php:281 #26 Doctrine\ORM\EntityManager:getClassMetadata in /home/surfjoe/public_html/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php:1318 #25 Doctrine\ORM\Persisters\Entity\BasicEntityPersister:getSelectColumnAssociationSQL in /home/surfjoe/public_html/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php:1208 #24 Doctrine\ORM\Persisters\Entity\BasicEntityPersister:getSelectColumnsSQL in /home/surfjoe/public_html/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php:1070 #23 Doctrine\ORM\Persisters\Entity\BasicEntityPersister:getSelectSQL in /home/surfjoe/public_html/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php:1805 #22 Doctrine\ORM\Persisters\Entity\BasicEntityPersister:getOneToManyStatement in /home/surfjoe/public_html/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php:1747 #21 Doctrine\ORM\Persisters\Entity\BasicEntityPersister:loadOneToManyCollection in /home/surfjoe/public_html/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php:2835 #20 Doctrine\ORM\UnitOfWork:loadCollection in /home/surfjoe/public_html/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/PersistentCollection.php:694 #19 Doctrine\ORM\PersistentCollection:doInitialize in /home/surfjoe/public_html/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/PersistentCollection.php:213 #18 Doctrine\ORM\PersistentCollection:initialize in /home/surfjoe/public_html/concrete/vendor/doctrine/collections/lib/Doctrine/Common/Collections/AbstractLazyCollection.php:274 #17 Doctrine\Common\Collections\AbstractLazyCollection:getIterator in /home/surfjoe/public_html/concrete/src/Page/Page.php:466 #16 Concrete\Core\Page\Page:getFromRequest in /home/surfjoe/public_html/concrete/src/Http/DefaultDispatcher.php:129 #15 Concrete\Core\Http\DefaultDispatcher:handleDispatch in /home/surfjoe/public_html/concrete/src/Http/DefaultDispatcher.php:58 #14 Concrete\Core\Http\DefaultDispatcher:dispatch in /home/surfjoe/public_html/concrete/src/Http/Middleware/DispatcherDelegate.php:39 #13 Concrete\Core\Http\Middleware\DispatcherDelegate:next in /home/surfjoe/public_html/concrete/src/Http/Middleware/ThumbnailMiddleware.php:76 #12 Concrete\Core\Http\Middleware\ThumbnailMiddleware:process in /home/surfjoe/public_html/concrete/src/Http/Middleware/MiddlewareDelegate.php:50 #11 Concrete\Core\Http\Middleware\MiddlewareDelegate:next in /home/surfjoe/public_html/concrete/src/Http/Middleware/FrameOptionsMiddleware.php:39 #10 Concrete\Core\Http\Middleware\FrameOptionsMiddleware:process in /home/surfjoe/public_html/concrete/src/Http/Middleware/MiddlewareDelegate.php:50 #9 Concrete\Core\Http\Middleware\MiddlewareDelegate:next in /home/surfjoe/public_html/concrete/src/Http/Middleware/CookieMiddleware.php:35 #8 Concrete\Core\Http\Middleware\CookieMiddleware:process in /home/surfjoe/public_html/concrete/src/Http/Middleware/MiddlewareDelegate.php:50 #7 Concrete\Core\Http\Middleware\MiddlewareDelegate:next in /home/surfjoe/public_html/concrete/src/Http/Middleware/ApplicationMiddleware.php:29 #6 Concrete\Core\Http\Middleware\ApplicationMiddleware:process in /home/surfjoe/public_html/concrete/src/Http/Middleware/MiddlewareDelegate.php:50 #5 Concrete\Core\Http\Middleware\MiddlewareDelegate:next in /home/surfjoe/public_html/concrete/src/Http/Middleware/MiddlewareStack.php:86 #4 Concrete\Core\Http\Middleware\MiddlewareStack:process in /home/surfjoe/public_html/concrete/src/Http/DefaultServer.php:85 #3 Concrete\Core\Http\DefaultServer:handleRequest in /home/surfjoe/public_html/concrete/src/Foundation/Runtime/Run/DefaultRunner.php:128 #2 Concrete\Core\Foundation\Runtime\Run\DefaultRunner:run in /home/surfjoe/public_html/concrete/src/Foundation/Runtime/DefaultRuntime.php:102 #1 Concrete\Core\Foundation\Runtime\DefaultRuntime:run in /home/surfjoe/public_html/concrete/dispatcher.php:45 #0 require in /home/surfjoe/public_html/index.php:3
Stack frames (46)
45
Whoops\Exception\ErrorException
/src/Cache/Driver/FileSystemStashDriver.php46
44
file_put_contents
/src/Cache/Driver/FileSystemStashDriver.php46
43
Concrete\Core\Cache\Driver\FileSystemStashDriver storeData
/vendor/tedivm/stash/src/Stash/Item.php446
42
Stash\Item executeSet
/vendor/tedivm/stash/src/Stash/Item.php406
41
Stash\Item save
/vendor/tedivm/stash/src/Stash/Pool.php164
40
Stash\Pool save
/src/Cache/Cache.php178
39
Concrete\Core\Cache\Cache save
/src/Cache/Adapter/DoctrineCacheDriver.php80
38
Concrete\Core\Cache\Adapter\DoctrineCacheDriver doSave
/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CacheProvider.php132
37
Doctrine\Common\Cache\CacheProvider save
/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/CachedReader.php213
36
Doctrine\Common\Annotations\CachedReader saveToCache
/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/CachedReader.php84
35
Doctrine\Common\Annotations\CachedReader getClassAnnotations
/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/AnnotationDriver.php180
34
Doctrine\Common\Persistence\Mapping\Driver\AnnotationDriver isTransient
/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/AnnotationDriver.php247
33
Doctrine\Common\Persistence\Mapping\Driver\AnnotationDriver getAllClassNames
/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/MappingDriverChain.php128
32
Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain getAllClassNames
/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php357
31
Doctrine\ORM\Mapping\ClassMetadataFactory addDefaultDiscriminatorMap
/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php243
30
Doctrine\ORM\Mapping\ClassMetadataFactory doLoadMetadata
/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php332
29
Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory loadMetadata
/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php78
28
Doctrine\ORM\Mapping\ClassMetadataFactory loadMetadata
/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php216
27
Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory getMetadataFor
/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php281
26
Doctrine\ORM\EntityManager getClassMetadata
/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php1318
25
Doctrine\ORM\Persisters\Entity\BasicEntityPersister getSelectColumnAssociationSQL
/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php1208
24
Doctrine\ORM\Persisters\Entity\BasicEntityPersister getSelectColumnsSQL
/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php1070
23
Doctrine\ORM\Persisters\Entity\BasicEntityPersister getSelectSQL
/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php1805
22
Doctrine\ORM\Persisters\Entity\BasicEntityPersister getOneToManyStatement
/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php1747
21
Doctrine\ORM\Persisters\Entity\BasicEntityPersister loadOneToManyCollection
/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php2835
20
Doctrine\ORM\UnitOfWork loadCollection
/vendor/doctrine/orm/lib/Doctrine/ORM/PersistentCollection.php694
19
Doctrine\ORM\PersistentCollection doInitialize
/vendor/doctrine/orm/lib/Doctrine/ORM/PersistentCollection.php213
18
Doctrine\ORM\PersistentCollection initialize
/vendor/doctrine/collections/lib/Doctrine/Common/Collections/AbstractLazyCollection.php274
17
Doctrine\Common\Collections\AbstractLazyCollection getIterator
/src/Page/Page.php466
16
Concrete\Core\Page\Page getFromRequest
/src/Http/DefaultDispatcher.php129
15
Concrete\Core\Http\DefaultDispatcher handleDispatch
/src/Http/DefaultDispatcher.php58
14
Concrete\Core\Http\DefaultDispatcher dispatch
/src/Http/Middleware/DispatcherDelegate.php39
13
Concrete\Core\Http\Middleware\DispatcherDelegate next
/src/Http/Middleware/ThumbnailMiddleware.php76
12
Concrete\Core\Http\Middleware\ThumbnailMiddleware process
/src/Http/Middleware/MiddlewareDelegate.php50
11
Concrete\Core\Http\Middleware\MiddlewareDelegate next
/src/Http/Middleware/FrameOptionsMiddleware.php39
10
Concrete\Core\Http\Middleware\FrameOptionsMiddleware process
/src/Http/Middleware/MiddlewareDelegate.php50
9
Concrete\Core\Http\Middleware\MiddlewareDelegate next
/src/Http/Middleware/CookieMiddleware.php35
8
Concrete\Core\Http\Middleware\CookieMiddleware process
/src/Http/Middleware/MiddlewareDelegate.php50
7
Concrete\Core\Http\Middleware\MiddlewareDelegate next
/src/Http/Middleware/ApplicationMiddleware.php29
6
Concrete\Core\Http\Middleware\ApplicationMiddleware process
/src/Http/Middleware/MiddlewareDelegate.php50
5
Concrete\Core\Http\Middleware\MiddlewareDelegate next
/src/Http/Middleware/MiddlewareStack.php86
4
Concrete\Core\Http\Middleware\MiddlewareStack process
/src/Http/DefaultServer.php85
3
Concrete\Core\Http\DefaultServer handleRequest
/src/Foundation/Runtime/Run/DefaultRunner.php128
2
Concrete\Core\Foundation\Runtime\Run\DefaultRunner run
/src/Foundation/Runtime/DefaultRuntime.php102
1
Concrete\Core\Foundation\Runtime\DefaultRuntime run
/dispatcher.php45
0
require
/home/surfjoe/public_html/index.php3
/home/surfjoe/public_html/concrete/src/Cache/Driver/FileSystemStashDriver.php
            throw new WindowsPathMaxLengthException();
        }
 
        if (!file_exists($path)) {
            $dirname = dirname($path);
            if (!is_dir($dirname)) {
                if (!@mkdir($dirname, $this->dirPermissions, true)) {
                    if (!is_dir($dirname)) {
                        return false;
                    }
                }
            }
 
            if (!(touch($path) && chmod($path, $this->filePermissions))) {
                return false;
            }
        }
 
        $storeString = $this->getEncoder()->serialize($this->makeKeyString($key), $data, $expiration);
        $result = file_put_contents($path, $storeString, LOCK_EX);
 
        // If opcache is switched on, it will try to cache the PHP data file
        // The new php opcode caching system only revalidates against the source files once every few seconds,
        // so some changes will not be caught.
        // This fix immediately invalidates that opcode cache after a file is written,
        // so that future includes are not using the stale opcode cached file.
        if (function_exists('opcache_invalidate')) {
            $invalidate = true;
 
            if ($restrictedDirectory = ini_get('opcache.restrict_api')) {
                if (strpos(__FILE__, $restrictedDirectory) !== 0) {
                    $invalidate = false;
                }
            }
 
            if ($invalidate) {
                @opcache_invalidate($path, true);
            }
        }
 
/home/surfjoe/public_html/concrete/src/Cache/Driver/FileSystemStashDriver.php
            throw new WindowsPathMaxLengthException();
        }
 
        if (!file_exists($path)) {
            $dirname = dirname($path);
            if (!is_dir($dirname)) {
                if (!@mkdir($dirname, $this->dirPermissions, true)) {
                    if (!is_dir($dirname)) {
                        return false;
                    }
                }
            }
 
            if (!(touch($path) && chmod($path, $this->filePermissions))) {
                return false;
            }
        }
 
        $storeString = $this->getEncoder()->serialize($this->makeKeyString($key), $data, $expiration);
        $result = file_put_contents($path, $storeString, LOCK_EX);
 
        // If opcache is switched on, it will try to cache the PHP data file
        // The new php opcode caching system only revalidates against the source files once every few seconds,
        // so some changes will not be caught.
        // This fix immediately invalidates that opcode cache after a file is written,
        // so that future includes are not using the stale opcode cached file.
        if (function_exists('opcache_invalidate')) {
            $invalidate = true;
 
            if ($restrictedDirectory = ini_get('opcache.restrict_api')) {
                if (strpos(__FILE__, $restrictedDirectory) !== 0) {
                    $invalidate = false;
                }
            }
 
            if ($invalidate) {
                @opcache_invalidate($path, true);
            }
        }
 
/home/surfjoe/public_html/concrete/vendor/tedivm/stash/src/Stash/Item.php
            $cacheTime = $expiration - $store['createdOn'];
        } else {
            $cacheTime = self::$cacheTime;
        }
 
        $expiration = $store['createdOn'] + $cacheTime;
 
        if ($cacheTime > 0) {
            $expirationDiff = rand(0, floor($cacheTime * .15));
            $expiration -= $expirationDiff;
        }
 
        if ($this->stampedeRunning === true) {
            $spkey = $this->key;
            $spkey[0] = 'sp'; // change "cache" data namespace to stampede namespace
            $this->driver->clear($spkey);
            $this->stampedeRunning = false;
        }
 
        return $this->driver->storeData($this->key, $store, $expiration);
    }
 
    /**
     * {@inheritdoc}
     */
    public function extend($ttl = null)
    {
        if ($this->isDisabled()) {
            return false;
        }
 
        return $this->set($this->get(), $ttl);
    }
 
    /**
     * {@inheritdoc}
     */
    public function isDisabled()
    {
        return self::$runtimeDisable
/home/surfjoe/public_html/concrete/vendor/tedivm/stash/src/Stash/Item.php
            } else {
                $date->sub($dateInterval);
            }
            $this->expiration = $date;
        } elseif ($time instanceof \DateInterval) {
            $date->add($time);
            $this->expiration = $date;
        } else {
        }
 
        return $this;
    }
 
    /**
     * {@inheritdoc}
     */
    public function save()
    {
        try {
            return $this->executeSet($this->data, $this->expiration);
        } catch (Exception $e) {
            $this->logException('Setting value in cache caused exception.', $e);
            $this->disable();
 
            return false;
        }
    }
 
    private function executeSet($data, $time)
    {
        if ($this->isDisabled() || !isset($this->key)) {
            return false;
        }
 
        $store = array();
        $store['return'] = $data;
        $store['createdOn'] = time();
 
        if (isset($time) && (($time instanceof \DateTime) || ($time instanceof \DateTimeInterface))) {
            $expiration = $time->getTimestamp();
/home/surfjoe/public_html/concrete/vendor/tedivm/stash/src/Stash/Pool.php
            $items[$item->getKey()] = $item;
        }
 
        return new \ArrayIterator($items);
    }
 
    /**
     * {@inheritdoc}
     */
    public function hasItem($key)
    {
        return $this->getItem($key)->isHit();
    }
 
    /**
     * {@inheritdoc}
     */
    public function save(CacheItemInterface $item)
    {
        return $item->save();
    }
 
    /**
     * {@inheritdoc}
     */
    public function saveDeferred(CacheItemInterface $item)
    {
        return $this->save($item);
    }
 
    /**
     * {@inheritdoc}
     */
    public function commit()
    {
        return true;
    }
 
 
    /**
/home/surfjoe/public_html/concrete/src/Cache/Cache.php
    public function flush()
    {
        return $this->pool->clear();
    }
 
    /**
     * Gets a value from the cache.
     *
     * @param string $key Name of the cache item ID
     *
     * @return \Stash\Interfaces\ItemInterface
     */
    public function getItem($key)
    {
        return $this->pool->getItem($key);
    }
 
    public function save(CacheItemInterface $item)
    {
        $this->pool->save($item);
    }
 
    /**
     * Enables the cache.
     */
    public function enable()
    {
        if ($this->driver !== null) {
            $this->pool->setDriver($this->driver);
        }
        $this->enabled = true;
    }
 
    /**
     * Disables the cache.
     */
    public function disable()
    {
        // save the current driver if not yet black hole so it can be restored on enable()
        if (!($this->pool->getDriver() instanceof BlackHole)) {
/home/surfjoe/public_html/concrete/src/Cache/Adapter/DoctrineCacheDriver.php
            return false;
        }
 
        return $this->getC5Cache()->exists('doctrine/' . $id);
    }
 
    /**
     * {@inheritdoc}
     */
    protected function doSave($id, $data, $lifeTime = 0)
    {
        $cache = $this->getC5Cache();
        if (!$cache->isEnabled()) {
            return false;
        }
        if ($lifeTime === 0) {
            $lifeTime = null;
        }
 
        return $cache->save($cache->getItem('doctrine/' . $id)->set($data, $lifeTime));
    }
 
    /**
     * {@inheritdoc}
     */
    protected function doDelete($id)
    {
        if (!$this->getC5Cache()->isEnabled()) {
            return false;
        }
 
        return $this->getC5Cache()->delete('doctrine/' . $id);
    }
 
    /**
     * {@inheritdoc}
     */
    protected function doFlush()
    {
        if (!$this->getC5Cache()->isEnabled()) {
/home/surfjoe/public_html/concrete/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CacheProvider.php
            $namespacedKeysAndValues[$this->getNamespacedId($key)] = $value;
        }
 
        return $this->doSaveMultiple($namespacedKeysAndValues, $lifetime);
    }
 
    /**
     * {@inheritdoc}
     */
    public function contains($id)
    {
        return $this->doContains($this->getNamespacedId($id));
    }
 
    /**
     * {@inheritdoc}
     */
    public function save($id, $data, $lifeTime = 0)
    {
        return $this->doSave($this->getNamespacedId($id), $data, $lifeTime);
    }
 
    /**
     * {@inheritdoc}
     */
    public function delete($id)
    {
        return $this->doDelete($this->getNamespacedId($id));
    }
 
    /**
     * {@inheritdoc}
     */
    public function getStats()
    {
        return $this->doGetStats();
    }
 
    /**
     * {@inheritDoc}
/home/surfjoe/public_html/concrete/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/CachedReader.php
            if (!$this->debug || $this->isCacheFresh($cacheKey, $class)) {
                return $data;
            }
        }
 
        return false;
    }
 
    /**
     * Saves a value to the cache.
     *
     * @param string $rawCacheKey The cache key.
     * @param mixed  $value       The value.
     *
     * @return void
     */
    private function saveToCache($rawCacheKey, $value)
    {
        $cacheKey = $rawCacheKey . self::$CACHE_SALT;
        $this->cache->save($cacheKey, $value);
        if ($this->debug) {
            $this->cache->save('[C]'.$cacheKey, time());
        }
    }
 
    /**
     * Checks if the cache is fresh.
     *
     * @param string           $cacheKey
     * @param \ReflectionClass $class
     *
     * @return boolean
     */
    private function isCacheFresh($cacheKey, \ReflectionClass $class)
    {
        if (false === $filename = $class->getFilename()) {
            return true;
        }
 
        return $this->cache->fetch('[C]'.$cacheKey) >= filemtime($filename);
/home/surfjoe/public_html/concrete/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/CachedReader.php
    {
        $this->delegate = $reader;
        $this->cache = $cache;
        $this->debug = (boolean) $debug;
    }
 
    /**
     * {@inheritDoc}
     */
    public function getClassAnnotations(\ReflectionClass $class)
    {
        $cacheKey = $class->getName();
 
        if (isset($this->loadedAnnotations[$cacheKey])) {
            return $this->loadedAnnotations[$cacheKey];
        }
 
        if (false === ($annots = $this->fetchFromCache($cacheKey, $class))) {
            $annots = $this->delegate->getClassAnnotations($class);
            $this->saveToCache($cacheKey, $annots);
        }
 
        return $this->loadedAnnotations[$cacheKey] = $annots;
    }
 
    /**
     * {@inheritDoc}
     */
    public function getClassAnnotation(\ReflectionClass $class, $annotationName)
    {
        foreach ($this->getClassAnnotations($class) as $annot) {
            if ($annot instanceof $annotationName) {
                return $annot;
            }
        }
 
        return null;
    }
 
    /**
/home/surfjoe/public_html/concrete/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/AnnotationDriver.php
     */
    public function setFileExtension($fileExtension)
    {
        $this->fileExtension = $fileExtension;
    }
 
    /**
     * Returns whether the class with the specified name is transient. Only non-transient
     * classes, that is entities and mapped superclasses, should have their metadata loaded.
     *
     * A class is non-transient if it is annotated with an annotation
     * from the {@see AnnotationDriver::entityAnnotationClasses}.
     *
     * @param string $className
     *
     * @return boolean
     */
    public function isTransient($className)
    {
        $classAnnotations = $this->reader->getClassAnnotations(new \ReflectionClass($className));
 
        foreach ($classAnnotations as $annot) {
            if (isset($this->entityAnnotationClasses[get_class($annot)])) {
                return false;
            }
        }
        return true;
    }
 
    /**
     * {@inheritDoc}
     */
    public function getAllClassNames()
    {
        if ($this->classNames !== null) {
            return $this->classNames;
        }
 
        if (!$this->paths) {
            throw MappingException::pathRequired();
/home/surfjoe/public_html/concrete/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/AnnotationDriver.php
                    $exclude = str_replace('\\', '/', realpath($excludePath));
                    $current = str_replace('\\', '/', $sourceFile);
 
                    if (strpos($current, $exclude) !== false) {
                        continue 2;
                    }
                }
 
                require_once $sourceFile;
 
                $includedFiles[] = $sourceFile;
            }
        }
 
        $declared = get_declared_classes();
 
        foreach ($declared as $className) {
            $rc = new \ReflectionClass($className);
            $sourceFile = $rc->getFileName();
            if (in_array($sourceFile, $includedFiles) && ! $this->isTransient($className)) {
                $classes[] = $className;
            }
        }
 
        $this->classNames = $classes;
 
        return $classes;
    }
}
 
/home/surfjoe/public_html/concrete/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/MappingDriverChain.php
            return;
        }
 
        throw MappingException::classNotFoundInNamespaces($className, array_keys($this->drivers));
    }
 
    /**
     * {@inheritDoc}
     */
    public function getAllClassNames()
    {
        $classNames = [];
        $driverClasses = [];
 
        /* @var $driver MappingDriver */
        foreach ($this->drivers AS $namespace => $driver) {
            $oid = spl_object_hash($driver);
 
            if (!isset($driverClasses[$oid])) {
                $driverClasses[$oid] = $driver->getAllClassNames();
            }
 
            foreach ($driverClasses[$oid] AS $className) {
                if (strpos($className, $namespace) === 0) {
                    $classNames[$className] = true;
                }
            }
        }
 
        if (null !== $this->defaultDriver) {
            foreach ($this->defaultDriver->getAllClassNames() as $className) {
                $classNames[$className] = true;
            }
        }
 
        return array_keys($classNames);
    }
 
    /**
     * {@inheritDoc}
/home/surfjoe/public_html/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php
        throw MappingException::mappedClassNotPartOfDiscriminatorMap($metadata->name, $metadata->rootEntityName);
    }
 
    /**
     * Adds a default discriminator map if no one is given
     *
     * If an entity is of any inheritance type and does not contain a
     * discriminator map, then the map is generated automatically. This process
     * is expensive computation wise.
     *
     * The automatically generated discriminator map contains the lowercase short name of
     * each class as key.
     *
     * @param \Doctrine\ORM\Mapping\ClassMetadata $class
     *
     * @throws MappingException
     */
    private function addDefaultDiscriminatorMap(ClassMetadata $class)
    {
        $allClasses = $this->driver->getAllClassNames();
        $fqcn = $class->getName();
        $map = array($this->getShortName($class->name) => $fqcn);
 
        $duplicates = array();
        foreach ($allClasses as $subClassCandidate) {
            if (is_subclass_of($subClassCandidate, $fqcn)) {
                $shortName = $this->getShortName($subClassCandidate);
 
                if (isset($map[$shortName])) {
                    $duplicates[] = $shortName;
                }
 
                $map[$shortName] = $subClassCandidate;
            }
        }
 
        if ($duplicates) {
            throw MappingException::duplicateDiscriminatorEntry($class->name, $duplicates, $map);
        }
 
/home/surfjoe/public_html/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php
                $this->addInheritedNamedQueries($class, $parent);
            }
 
            if ( ! empty($parent->namedNativeQueries)) {
                $this->addInheritedNamedNativeQueries($class, $parent);
            }
 
            if ( ! empty($parent->sqlResultSetMappings)) {
                $this->addInheritedSqlResultSetMappings($class, $parent);
            }
 
            if ( ! empty($parent->entityListeners) && empty($class->entityListeners)) {
                $class->entityListeners = $parent->entityListeners;
            }
        }
 
        $class->setParentClasses($nonSuperclassParents);
 
        if ($class->isRootEntity() && ! $class->isInheritanceTypeNone() && ! $class->discriminatorMap) {
            $this->addDefaultDiscriminatorMap($class);
        }
 
        if ($this->evm->hasListeners(Events::loadClassMetadata)) {
            $eventArgs = new LoadClassMetadataEventArgs($class, $this->em);
            $this->evm->dispatchEvent(Events::loadClassMetadata, $eventArgs);
        }
 
        $this->validateRuntimeMetadata($class, $parent);
    }
 
    /**
     * Validate runtime metadata is correctly defined.
     *
     * @param ClassMetadata               $class
     * @param ClassMetadataInterface|null $parent
     *
     * @return void
     *
     * @throws MappingException
     */
/home/surfjoe/public_html/concrete/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php
 
        // Move down the hierarchy of parent classes, starting from the topmost class
        $parent = null;
        $rootEntityFound = false;
        $visited = [];
        $reflService = $this->getReflectionService();
        foreach ($parentClasses as $className) {
            if (isset($this->loadedMetadata[$className])) {
                $parent = $this->loadedMetadata[$className];
                if ($this->isEntity($parent)) {
                    $rootEntityFound = true;
                    array_unshift($visited, $className);
                }
                continue;
            }
 
            $class = $this->newClassMetadataInstance($className);
            $this->initializeReflection($class, $reflService);
 
            $this->doLoadMetadata($class, $parent, $rootEntityFound, $visited);
 
            $this->loadedMetadata[$className] = $class;
 
            $parent = $class;
 
            if ($this->isEntity($class)) {
                $rootEntityFound = true;
                array_unshift($visited, $className);
            }
 
            $this->wakeupReflection($class, $reflService);
 
            $loaded[] = $className;
        }
 
        return $loaded;
    }
 
    /**
     * Provides a fallback hook for loading metadata when loading failed due to reflection/mapping exceptions
/home/surfjoe/public_html/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php
     * @var \Doctrine\Common\Persistence\Mapping\Driver\MappingDriver
     */
    private $driver;
 
    /**
     * @var \Doctrine\Common\EventManager
     */
    private $evm;
 
    /**
     * @var array
     */
    private $embeddablesActiveNesting = array();
 
    /**
     * {@inheritDoc}
     */
    protected function loadMetadata($name)
    {
        $loaded = parent::loadMetadata($name);
 
        array_map([$this, 'resolveDiscriminatorValue'], array_map([$this, 'getMetadataFor'], $loaded));
 
        return $loaded;
    }
 
    /**
     * @param EntityManagerInterface $em
     */
    public function setEntityManager(EntityManagerInterface $em)
    {
        $this->em = $em;
    }
 
    /**
     * {@inheritDoc}
     */
    protected function initialize()
    {
        $this->driver = $this->em->getConfiguration()->getMetadataDriverImpl();
/home/surfjoe/public_html/concrete/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php
            $realClassName = $this->getFqcnFromAlias($namespaceAlias, $simpleClassName);
        } else {
            $realClassName = ClassUtils::getRealClass($className);
        }
 
        if (isset($this->loadedMetadata[$realClassName])) {
            // We do not have the alias name in the map, include it
            return $this->loadedMetadata[$className] = $this->loadedMetadata[$realClassName];
        }
 
        $loadingException = null;
 
        try {
            if ($this->cacheDriver) {
                if (($cached = $this->cacheDriver->fetch($realClassName . $this->cacheSalt)) instanceof ClassMetadata) {
                    $this->loadedMetadata[$realClassName] = $cached;
 
                    $this->wakeupReflection($cached, $this->getReflectionService());
                } else {
                    foreach ($this->loadMetadata($realClassName) as $loadedClassName) {
                        $this->cacheDriver->save(
                            $loadedClassName . $this->cacheSalt,
                            $this->loadedMetadata[$loadedClassName],
                            null
                        );
                    }
                }
            } else {
                $this->loadMetadata($realClassName);
            }
        } catch (MappingException $loadingException) {
            if (! $fallbackMetadataResponse = $this->onNotFoundMetadata($realClassName)) {
                throw $loadingException;
            }
 
            $this->loadedMetadata[$realClassName] = $fallbackMetadataResponse;
        }
 
        if ($className !== $realClassName) {
            // We do not have the alias name in the map, include it
/home/surfjoe/public_html/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php
 
    /**
     * Returns the ORM metadata descriptor for a class.
     *
     * The class name must be the fully-qualified class name without a leading backslash
     * (as it is returned by get_class($obj)) or an aliased class name.
     *
     * Examples:
     * MyProject\Domain\User
     * sales:PriceRequest
     *
     * Internal note: Performance-sensitive method.
     *
     * @param string $className
     *
     * @return \Doctrine\ORM\Mapping\ClassMetadata
     */
    public function getClassMetadata($className)
    {
        return $this->metadataFactory->getMetadataFor($className);
    }
 
    /**
     * {@inheritDoc}
     */
    public function createQuery($dql = '')
    {
        $query = new Query($this);
 
        if ( ! empty($dql)) {
            $query->setDql($dql);
        }
 
        return $query;
    }
 
    /**
     * {@inheritDoc}
     */
    public function createNamedQuery($name)
/home/surfjoe/public_html/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php
    }
 
    /**
     * Gets the SQL join fragment used when selecting entities from an association.
     *
     * @param string        $field
     * @param array         $assoc
     * @param ClassMetadata $class
     * @param string        $alias
     *
     * @return string
     */
    protected function getSelectColumnAssociationSQL($field, $assoc, ClassMetadata $class, $alias = 'r')
    {
        if ( ! ($assoc['isOwningSide'] && $assoc['type'] & ClassMetadata::TO_ONE) ) {
            return '';
        }
 
        $columnList  = array();
        $targetClass = $this->em->getClassMetadata($assoc['targetEntity']);
 
        foreach ($assoc['joinColumns'] as $joinColumn) {
            $type             = null;
            $isIdentifier     = isset($assoc['id']) && $assoc['id'] === true;
            $quotedColumn     = $this->quoteStrategy->getJoinColumnName($joinColumn, $this->class, $this->platform);
            $resultColumnName = $this->getSQLColumnAlias($joinColumn['name']);
            $columnList[]     = $this->getSQLTableAlias($class->name, ($alias == 'r' ? '' : $alias) )
                                . '.' . $quotedColumn . ' AS ' . $resultColumnName;
            $type             = PersisterHelper::getTypeOfColumn($joinColumn['referencedColumnName'], $targetClass, $this->em);
 
            $this->currentPersisterContext->rsm->addMetaResult($alias, $resultColumnName, $quotedColumn, $isIdentifier, $type);
        }
 
        return implode(', ', $columnList);
    }
 
    /**
     * Gets the SQL join fragment used when selecting entities from a
     * many-to-many association.
     *
/home/surfjoe/public_html/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php
     */
    protected function getSelectColumnsSQL()
    {
        if ($this->currentPersisterContext->selectColumnListSql !== null) {
            return $this->currentPersisterContext->selectColumnListSql;
        }
 
        $columnList = array();
        $this->currentPersisterContext->rsm->addEntityResult($this->class->name, 'r'); // r for root
 
        // Add regular columns to select list
        foreach ($this->class->fieldNames as $field) {
            $columnList[] = $this->getSelectColumnSQL($field, $this->class);
        }
 
        $this->currentPersisterContext->selectJoinSql    = '';
        $eagerAliasCounter      = 0;
 
        foreach ($this->class->associationMappings as $assocField => $assoc) {
            $assocColumnSQL = $this->getSelectColumnAssociationSQL($assocField, $assoc, $this->class);
 
            if ($assocColumnSQL) {
                $columnList[] = $assocColumnSQL;
            }
 
            $isAssocToOneInverseSide = $assoc['type'] & ClassMetadata::TO_ONE && ! $assoc['isOwningSide'];
            $isAssocFromOneEager     = $assoc['type'] !== ClassMetadata::MANY_TO_MANY && $assoc['fetch'] === ClassMetadata::FETCH_EAGER;
 
            if ( ! ($isAssocFromOneEager || $isAssocToOneInverseSide)) {
                continue;
            }
 
            if ((($assoc['type'] & ClassMetadata::TO_MANY) > 0) && $this->currentPersisterContext->handlesLimits) {
                continue;
            }
 
            $eagerEntity = $this->em->getClassMetadata($assoc['targetEntity']);
 
            if ($eagerEntity->inheritanceType != ClassMetadata::INHERITANCE_TYPE_NONE) {
                continue; // now this is why you shouldn't use inheritance
/home/surfjoe/public_html/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php
 
        if ($orderBy) {
            $orderBySql = $this->getOrderBySQL($orderBy, $this->getSQLTableAlias($this->class->name));
        }
 
        $conditionSql = ($criteria instanceof Criteria)
            ? $this->getSelectConditionCriteriaSQL($criteria)
            : $this->getSelectConditionSQL($criteria, $assoc);
 
        switch ($lockMode) {
            case LockMode::PESSIMISTIC_READ:
                $lockSql = ' ' . $this->platform->getReadLockSql();
                break;
 
            case LockMode::PESSIMISTIC_WRITE:
                $lockSql = ' ' . $this->platform->getWriteLockSql();
                break;
        }
 
        $columnList = $this->getSelectColumnsSQL();
        $tableAlias = $this->getSQLTableAlias($this->class->name);
        $filterSql  = $this->generateFilterConditionSQL($this->class, $tableAlias);
        $tableName  = $this->quoteStrategy->getTableName($this->class, $this->platform);
 
        if ('' !== $filterSql) {
            $conditionSql = $conditionSql
                ? $conditionSql . ' AND ' . $filterSql
                : $filterSql;
        }
 
        $select = 'SELECT ' . $columnList;
        $from   = ' FROM ' . $tableName . ' '. $tableAlias;
        $join   = $this->currentPersisterContext->selectJoinSql . $joinSql;
        $where  = ($conditionSql ? ' WHERE ' . $conditionSql : '');
        $lock   = $this->platform->appendLockHint($from, $lockMode);
        $query  = $select
            . $lock
            . $join
            . $where
            . $orderBySql;
/home/surfjoe/public_html/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php
                    'field' => $field,
                    'class' => $sourceClass,
                );
 
                continue;
            }
 
            $field = $sourceClass->fieldNames[$sourceKeyColumn];
            $value = $sourceClass->reflFields[$field]->getValue($sourceEntity);
 
            $criteria[$tableAlias . "." . $targetKeyColumn] = $value;
            $parameters[] = array(
                'value' => $value,
                'field' => $field,
                'class' => $sourceClass,
            );
 
        }
 
        $sql                  = $this->getSelectSQL($criteria, $assoc, null, $limit, $offset);
        list($params, $types) = $this->expandToManyParameters($parameters);
 
        return $this->conn->executeQuery($sql, $params, $types);
    }
 
    /**
     * {@inheritdoc}
     */
    public function expandParameters($criteria)
    {
        $params = array();
        $types  = array();
 
        foreach ($criteria as $field => $value) {
            if ($value === null) {
                continue; // skip null values.
            }
 
            $types  = array_merge($types, $this->getTypes($field, $value, $this->class));
            $params = array_merge($params, $this->getValues($value));
/home/surfjoe/public_html/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php
    }
 
    /**
     * {@inheritdoc}
     */
    public function getOneToManyCollection(array $assoc, $sourceEntity, $offset = null, $limit = null)
    {
        $this->switchPersisterContext($offset, $limit);
 
        $stmt = $this->getOneToManyStatement($assoc, $sourceEntity, $offset, $limit);
 
        return $this->loadArrayFromStatement($assoc, $stmt);
    }
 
    /**
     * {@inheritdoc}
     */
    public function loadOneToManyCollection(array $assoc, $sourceEntity, PersistentCollection $coll)
    {
        $stmt = $this->getOneToManyStatement($assoc, $sourceEntity);
 
        return $this->loadCollectionFromStatement($assoc, $stmt, $coll);
    }
 
    /**
     * Builds criteria and execute SQL statement to fetch the one to many entities from.
     *
     * @param array    $assoc
     * @param object   $sourceEntity
     * @param int|null $offset
     * @param int|null $limit
     *
     * @return \Doctrine\DBAL\Statement
     */
    private function getOneToManyStatement(array $assoc, $sourceEntity, $offset = null, $limit = null)
    {
        $this->switchPersisterContext($offset, $limit);
 
        $criteria    = array();
        $parameters  = array();
/home/surfjoe/public_html/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php
        }
    }
 
    /**
     * Initializes (loads) an uninitialized persistent collection of an entity.
     *
     * @param \Doctrine\ORM\PersistentCollection $collection The collection to initialize.
     *
     * @return void
     *
     * @todo Maybe later move to EntityManager#initialize($proxyOrCollection). See DDC-733.
     */
    public function loadCollection(PersistentCollection $collection)
    {
        $assoc     = $collection->getMapping();
        $persister = $this->getEntityPersister($assoc['targetEntity']);
 
        switch ($assoc['type']) {
            case ClassMetadata::ONE_TO_MANY:
                $persister->loadOneToManyCollection($assoc, $collection->getOwner(), $collection);
                break;
 
            case ClassMetadata::MANY_TO_MANY:
                $persister->loadManyToManyCollection($assoc, $collection->getOwner(), $collection);
                break;
        }
 
        $collection->setInitialized(true);
    }
 
    /**
     * Gets the identity map of the UnitOfWork.
     *
     * @return array
     */
    public function getIdentityMap()
    {
        return $this->identityMap;
    }
 
/home/surfjoe/public_html/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/PersistentCollection.php
     */
    public function unwrap()
    {
        return $this->collection;
    }
 
    /**
     * {@inheritdoc}
     */
    protected function doInitialize()
    {
        // Has NEW objects added through add(). Remember them.
        $newlyAddedDirtyObjects = array();
 
        if ($this->isDirty) {
            $newlyAddedDirtyObjects = $this->collection->toArray();
        }
 
        $this->collection->clear();
        $this->em->getUnitOfWork()->loadCollection($this);
        $this->takeSnapshot();
 
        if ($newlyAddedDirtyObjects) {
            $this->restoreNewObjectsInDirtyCollection($newlyAddedDirtyObjects);
        }
    }
 
    /**
     * @param object[] $newObjects
     *
     * @return void
     *
     * Note: the only reason why this entire looping/complexity is performed via `spl_object_hash`
     *       is because we want to prevent using `array_udiff()`, which is likely to cause very
     *       high overhead (complexity of O(n^2)). `array_diff_key()` performs the operation in
     *       core, which is faster than using a callback for comparisons
     */
    private function restoreNewObjectsInDirtyCollection(array $newObjects)
    {
        $loadedObjects               = $this->collection->toArray();
/home/surfjoe/public_html/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/PersistentCollection.php
            // Set back reference to owner
            $this->typeClass->reflFields[$this->backRefFieldName]->setValue(
                $element, $this->owner
            );
        }
    }
 
    /**
     * Initializes the collection by loading its contents from the database
     * if the collection is not yet initialized.
     *
     * @return void
     */
    public function initialize()
    {
        if ($this->initialized || ! $this->association) {
            return;
        }
 
        $this->doInitialize();
 
        $this->initialized = true;
    }
 
    /**
     * INTERNAL:
     * Tells this collection to take a snapshot of its current state.
     *
     * @return void
     */
    public function takeSnapshot()
    {
        $this->snapshot = $this->collection->toArray();
        $this->isDirty  = false;
    }
 
    /**
     * INTERNAL:
     * Returns the last snapshot of the elements in the collection.
     *
/home/surfjoe/public_html/concrete/vendor/doctrine/collections/lib/Doctrine/Common/Collections/AbstractLazyCollection.php
    {
        $this->initialize();
        return $this->collection->indexOf($element);
    }
 
    /**
     * {@inheritDoc}
     */
    public function slice($offset, $length = null)
    {
        $this->initialize();
        return $this->collection->slice($offset, $length);
    }
 
    /**
     * {@inheritDoc}
     */
    public function getIterator()
    {
        $this->initialize();
        return $this->collection->getIterator();
    }
 
    /**
     * {@inheritDoc}
     */
    public function offsetExists($offset)
    {
        $this->initialize();
        return $this->collection->offsetExists($offset);
    }
 
    /**
     * {@inheritDoc}
     */
    public function offsetGet($offset)
    {
        $this->initialize();
        return $this->collection->offsetGet($offset);
    }
/home/surfjoe/public_html/concrete/src/Page/Page.php
     *
     * @param \Concrete\Core\Http\Request $request
     *
     * @return \Concrete\Core\Page\Page
     */
    public static function getFromRequest(Request $request)
    {
        // if something has already set a page object, we return it
        $c = $request->getCurrentPage();
        if (is_object($c)) {
            return $c;
        }
        if ($request->getPath() != '') {
            $path = $request->getPath();
            $db = Database::connection();
            $cID = false;
            $ppIsCanonical = false;
            $site = \Core::make('site')->getSite();
            $treeIDs = [0];
            foreach ($site->getLocales() as $locale) {
                $tree = $locale->getSiteTree();
                if (is_object($tree)) {
                    $treeIDs[] = $tree->getSiteTreeID();
                }
            }
 
            $treeIDs = implode(',', $treeIDs);
 
            while ((!$cID) && $path) {
                $row = $db->fetchAssoc('select pp.cID, ppIsCanonical from PagePaths pp inner join Pages p on pp.cID = p.cID where cPath = ? and siteTreeID in (' . $treeIDs . ')', [$path]);
                if (!empty($row)) {
                    $cID = $row['cID'];
                    if ($cID) {
                        $cPath = $path;
                        $ppIsCanonical = (bool) $row['ppIsCanonical'];
                        break;
                    }
                }
                $path = substr($path, 0, strrpos($path, '/'));
            }
/home/surfjoe/public_html/concrete/src/Http/DefaultDispatcher.php
            $stack = new MiddlewareStack(
                new DispatcherDelegate($dispatcher)
            );
            $stack->setApplication($this->app);
            foreach($route->getMiddlewares() as $middleware) {
                if (is_string($middleware->getMiddleware())) {
                    $inflatedMiddleware =  $this->app->make($middleware->getMiddleware());
                } else {
                    $inflatedMiddleware = $middleware->getMiddleware();
                }
                $stack = $stack->withMiddleware(
                    $inflatedMiddleware,
                    $middleware->getPriority()
                );
            }
            return $stack->process($request);
        } catch (ResourceNotFoundException $e) {
        } catch (MethodNotAllowedException $e) {
        }
        $c = \Page::getFromRequest($request);
        $response = $this->app->make(ResponseFactoryInterface::class)->collection($c);
 
        return $response;
    }
 
    /**
     * @param \Symfony\Component\Routing\RouteCollection $routes
     * @param string $path
     *
     * @return \Symfony\Component\Routing\RouteCollection
     */
    private function filterRouteCollectionForPath(RouteCollection $routes, $path)
    {
        $result = new RouteCollection();
        foreach ($routes->getResources() as $resource) {
            $result->addResource($resource);
        }
        foreach ($routes->all() as $name => $route) {
            $routePath = $route->getPath();
            $p = strpos($routePath, '{');
/home/surfjoe/public_html/concrete/src/Http/DefaultDispatcher.php
    /**
     * @param \Symfony\Component\HttpFoundation\Request $request
     *
     * @return SymfonyResponse
     */
    public function dispatch(SymfonyRequest $request)
    {
        $path = rawurldecode($request->getPathInfo());
 
        if (substr($path, 0, 3) == '../' || substr($path, -3) == '/..' || strpos($path, '/../') ||
            substr($path, 0, 3) == '..\\' || substr($path, -3) == '\\..' || strpos($path, '\\..\\')) {
            throw new \RuntimeException(t('Invalid path traversal. Please make this request with a valid HTTP client.'));
        }
 
        $response = null;
        if ($this->app->isInstalled()) {
            $response = $this->getEarlyDispatchResponse();
        }
        if ($response === null) {
            $response = $this->handleDispatch($request);
        }
 
        return $response;
    }
 
    private function getEarlyDispatchResponse()
    {
        $validator = $this->app->make(SessionValidator::class);
        if ($validator->hasActiveSession()) {
            $session = $this->app['session'];
            if (!$session->has('uID')) {
                User::verifyAuthTypeCookie();
            }
 
            // User may have been logged in, so lets check status again.
            if ($session->has('uID') && $session->get('uID') > 0 && $response = $this->validateUser()) {
                return $response;
            }
        }
    }
/home/surfjoe/public_html/concrete/src/Http/Middleware/DispatcherDelegate.php
    private $dispatcher;
 
    /**
     * DispatcherFrame constructor.
     * @param \Concrete\Core\Http\DispatcherInterface $dispatcher
     */
    public function __construct(DispatcherInterface $dispatcher)
    {
        $this->dispatcher = $dispatcher;
    }
 
    /**
     * Dispatch the next available middleware and return the response.
     *
     * @param Request $request
     * @return Response
     */
    public function next(Request $request)
    {
        return $this->dispatcher->dispatch($request);
    }
 
}
 
/home/surfjoe/public_html/concrete/src/Http/Middleware/ThumbnailMiddleware.php
     * @var \Concrete\Core\Config\Repository\Repository
     */
    private $config;
 
    public function __construct(Repository $config)
    {
        $this->config = $config;
    }
 
    /**
     * Process the request and return a response.
     *
     * @param \Symfony\Component\HttpFoundation\Request $request
     * @param DelegateInterface $frame
     *
     * @return \Symfony\Component\HttpFoundation\Response
     */
    public function process(Request $request, DelegateInterface $frame)
    {
        $response = $frame->next($request);
 
        if ($response && $this->app->isInstalled() && $this->config->get('concrete.misc.basic_thumbnailer_generation_strategy') == 'now') {
            $responseStatusCode = (int) $response->getStatusCode();
            if ($responseStatusCode === 200 || $responseStatusCode === 404) {
                $database = $this->tryGetConnection();
                if ($database !== null) {
                    if ($responseStatusCode === 404) {
                        $searchThumbnailPath = $request->getRequestUri();
                    } else {
                        $searchThumbnailPath = null;
                    }
                    $thumbnail = $this->getThumbnailToGenerate($database, $searchThumbnailPath);
                    if ($thumbnail !== null) {
                        $this->markThumbnailAsBuilt($database, $thumbnail);
                        if ($this->generateThumbnail($thumbnail)) {
                            if ($this->couldBeTheRequestedThumbnail($thumbnail, $searchThumbnailPath)) {
                                $response = $this->buildRedirectToThumbnailResponse($request);
                            }
                        }
                    }
/home/surfjoe/public_html/concrete/src/Http/Middleware/MiddlewareDelegate.php
 
    public function __construct(
        MiddlewareInterface $middleware,
        DelegateInterface $nextDelegate,
        HttpFoundationFactory $foundationFactory
    ) {
        $this->middleware = $middleware;
        $this->nextDelegate = $nextDelegate;
        $this->foundationFactory = $foundationFactory;
    }
 
    /**
     * Dispatch the next available middleware and return the response.
     *
     * @param Request $request
     * @return Response
     */
    public function next(Request $request)
    {
        $response = $this->middleware->process($request, $this->nextDelegate);
 
        // Negotiate PSR7 responses
        if ($response instanceof ResponseInterface) {
            return $this->foundationFactory->createResponse($response);
        }
 
        return $response;
    }
 
}
 
/home/surfjoe/public_html/concrete/src/Http/Middleware/FrameOptionsMiddleware.php
    private $config;
 
    /**
     * @var \Concrete\Core\Utility\Service\Validation\Strings
     */
    private $stringValidator;
 
    public function __construct(Repository $config, Strings $stringValidator)
    {
        $this->config = $config;
        $this->stringValidator = $stringValidator;
    }
 
    /**
     * @param \Concrete\Core\Http\Middleware\DelegateInterface $frame
     * @return Response
     */
    public function process(Request $request, DelegateInterface $frame)
    {
        $response = $frame->next($request);
 
        if ($response->headers->has('X-Frame-Options') === false) {
            $x_frame_options = $this->config->get('concrete.security.misc.x_frame_options');
            if ($this->stringValidator->notempty($x_frame_options)) {
                $response->headers->set('X-Frame-Options', $x_frame_options);
            }
        }
 
        return $response;
    }
 
}
 
/home/surfjoe/public_html/concrete/src/Http/Middleware/MiddlewareDelegate.php
 
    public function __construct(
        MiddlewareInterface $middleware,
        DelegateInterface $nextDelegate,
        HttpFoundationFactory $foundationFactory
    ) {
        $this->middleware = $middleware;
        $this->nextDelegate = $nextDelegate;
        $this->foundationFactory = $foundationFactory;
    }
 
    /**
     * Dispatch the next available middleware and return the response.
     *
     * @param Request $request
     * @return Response
     */
    public function next(Request $request)
    {
        $response = $this->middleware->process($request, $this->nextDelegate);
 
        // Negotiate PSR7 responses
        if ($response instanceof ResponseInterface) {
            return $this->foundationFactory->createResponse($response);
        }
 
        return $response;
    }
 
}
 
/home/surfjoe/public_html/concrete/src/Http/Middleware/CookieMiddleware.php
     * @var \Concrete\Core\Cookie\ResponseCookieJar
     */
    private $responseCookieJar;
 
    /**
     * @param \Concrete\Core\Cookie\ResponseCookieJar $responseCookieJar
     */
    public function __construct(ResponseCookieJar $responseCookieJar)
    {
        $this->responseCookieJar = $responseCookieJar;
    }
 
    /**
     * {@inheritdoc}
     *
     * @see \Concrete\Core\Http\Middleware\MiddlewareInterface::process()
     */
    public function process(Request $request, DelegateInterface $frame)
    {
        $response = $frame->next($request);
 
        $cleared = $this->responseCookieJar->getClearedCookies();
        foreach ($cleared as $cookie) {
            $response->headers->clearCookie($cookie, DIR_REL . '/');
        }
 
        $cookies = $this->responseCookieJar->getCookies();
        foreach ($cookies as $cookie) {
            $response->headers->setCookie($cookie);
        }
 
        return $response;
    }
}
 
/home/surfjoe/public_html/concrete/src/Http/Middleware/MiddlewareDelegate.php
 
    public function __construct(
        MiddlewareInterface $middleware,
        DelegateInterface $nextDelegate,
        HttpFoundationFactory $foundationFactory
    ) {
        $this->middleware = $middleware;
        $this->nextDelegate = $nextDelegate;
        $this->foundationFactory = $foundationFactory;
    }
 
    /**
     * Dispatch the next available middleware and return the response.
     *
     * @param Request $request
     * @return Response
     */
    public function next(Request $request)
    {
        $response = $this->middleware->process($request, $this->nextDelegate);
 
        // Negotiate PSR7 responses
        if ($response instanceof ResponseInterface) {
            return $this->foundationFactory->createResponse($response);
        }
 
        return $response;
    }
 
}
 
/home/surfjoe/public_html/concrete/src/Http/Middleware/ApplicationMiddleware.php
 * Middleware for applying state changes to the application
 * @package Concrete\Core\Http\Middleware
 */
class ApplicationMiddleware implements MiddlewareInterface, ApplicationAwareInterface
{
 
    use ApplicationAwareTrait;
 
    /**
     * Apply the request instance to the request singleton
     * @param \Symfony\Component\HttpFoundation\Request $request
     * @param \Concrete\Core\Http\Middleware\DelegateInterface $frame
     * @return \Symfony\Component\HttpFoundation\Response
     */
    public function process(Request $request, DelegateInterface $frame)
    {
        \Concrete\Core\Http\Request::setInstance($request);
        $this->app->instance('Concrete\Core\Http\Request', $request);
 
        return $frame->next($request);
    }
 
}
 
/home/surfjoe/public_html/concrete/src/Http/Middleware/MiddlewareDelegate.php
 
    public function __construct(
        MiddlewareInterface $middleware,
        DelegateInterface $nextDelegate,
        HttpFoundationFactory $foundationFactory
    ) {
        $this->middleware = $middleware;
        $this->nextDelegate = $nextDelegate;
        $this->foundationFactory = $foundationFactory;
    }
 
    /**
     * Dispatch the next available middleware and return the response.
     *
     * @param Request $request
     * @return Response
     */
    public function next(Request $request)
    {
        $response = $this->middleware->process($request, $this->nextDelegate);
 
        // Negotiate PSR7 responses
        if ($response instanceof ResponseInterface) {
            return $this->foundationFactory->createResponse($response);
        }
 
        return $response;
    }
 
}
 
/home/surfjoe/public_html/concrete/src/Http/Middleware/MiddlewareStack.php
    public function withoutMiddleware(MiddlewareInterface $middleware)
    {
        $stack = clone $this;
 
        $stack->middleware = array_map(function($priorityGroup) use ($middleware) {
            return array_map(function($stackMiddleware) use ($middleware)  {
                return $middleware === $stackMiddleware ? null : $stackMiddleware;
            }, $priorityGroup);
        }, $stack->middleware);
 
        return $stack;
    }
 
    /**
     * @inheritdoc
     */
    public function process(Request $request)
    {
        $stack = $this->getStack();
        return $stack->next($request);
    }
 
    /**
     * Reduce middleware into a stack of functions that each call the next
     * @return callable
     */
    private function getStack()
    {
        $processed = [];
 
        foreach ($this->middlewareGenerator() as $middleware) {
            $processed[] = $middleware;
        }
 
        $middleware = array_reverse($processed);
        $stack = array_reduce($middleware, $this->getZipper(), $this->dispatcher);
 
        return $stack;
    }
 
/home/surfjoe/public_html/concrete/src/Http/DefaultServer.php
     */
    public function removeMiddleware(MiddlewareInterface $middleware)
    {
        $this->stack = $this->stack->withoutMiddleware($middleware);
        return $this;
    }
 
    /**
     * Take a request and pass it through middleware, then return the response
     * @param SymfonyRequest $request
     * @return SymfonyResponse
     */
    public function handleRequest(SymfonyRequest $request)
    {
        $stack = $this->stack;
        if ($stack instanceof MiddlewareStack) {
            $stack = $stack->withDispatcher($this->app->make(DispatcherDelegate::class, [$this->dispatcher]));
        }
 
        return $stack->process($request);
    }
 
}
 
/home/surfjoe/public_html/concrete/src/Foundation/Runtime/Run/DefaultRunner.php
 
                // Register legacy config values
                'registerLegacyConfigValues',
 
                // Handle loading permission keys
                'handlePermissionKeys',
 
                // Handle eventing
                'handleEventing',
            ]);
        } else {
            $this->initializeSystemTimezone();
            $this->preloadClassAliases();
        }
 
        // Create the request to use
        $request = $this->createRequest();
 
        if (!$response) {
            $response = $this->server->handleRequest($request);
        }
 
        // Prepare and return the response
        return $response->prepare($request);
    }
 
    /**
     * Define the base url if not defined
     * This will define `BASE_URL` to whatever is resolved from the resolver.
     *
     * @deprecated In a future major version this will be part of HTTP middleware
     *
     * @return Response|void Returns a response if an error occurs
     */
    protected function initializeLegacyURLDefinitions()
    {
        if (!defined('BASE_URL')) {
            $resolver = $this->getUrlResolver();
 
            try {
/home/surfjoe/public_html/concrete/src/Foundation/Runtime/DefaultRuntime.php
            $this->status = self::STATUS_ACTIVE;
        }
    }
 
    /**
     * Begin the runtime.
     */
    public function run()
    {
        switch ($this->status) {
            case self::STATUS_ENDED:
                // We've already ended, lets just return
                return;
 
            case self::STATUS_INACTIVE:
                throw new \RuntimeException('Runtime has not yet booted.');
        }
 
        $runner = $this->getRunner();
        $response = $runner->run();
 
        if ($response) {
            $this->sendResponse($response);
        }
 
        return $response;
    }
 
    /**
     * The method that handles properly sending a response.
     *
     * @param \Symfony\Component\HttpFoundation\Response $response
     */
    protected function sendResponse(Response $response)
    {
        $response->send();
 
        // Set the status to ended
        $this->status = self::STATUS_ENDED;
    }
/home/surfjoe/public_html/concrete/dispatcher.php
 * Include all autoloaders.
 * ----------------------------------------------------------------------------
 */
require __DIR__ . '/bootstrap/autoload.php';
 
/*
 * ----------------------------------------------------------------------------
 * Begin concrete5 startup.
 * ----------------------------------------------------------------------------
 */
$app = require __DIR__ . '/bootstrap/start.php';
/** @var \Concrete\Core\Application\Application $app */
 
/*
 * ----------------------------------------------------------------------------
 * Run the runtime.
 * ----------------------------------------------------------------------------
 */
$runtime = $app->getRuntime();
if ($response = $runtime->run()) {
 
    /*
     * ------------------------------------------------------------------------
     * Shut it down.
     * ------------------------------------------------------------------------
     */
    $app->shutdown();
} else {
    return $app;
}
 
/home/surfjoe/public_html/index.php
<?php ini_set('session.save_handler', 'files'); ini_set('session.save_path', '/home/surfjoe/public_html/new.spacemakersusa.com/tmp');
 
require 'concrete/dispatcher.php';
 

Environment & details:

Key Value
Version 8.5.4
Installed Version 8.5.4
Key Value
concrete.version 8.5.4
concrete.version_installed 8.5.4
concrete.version_db 20200609145307
concrete.installed true
concrete.locale en_US
concrete.charset UTF-8
concrete.charset_bom 
concrete.maintenance_mode false
concrete.debug.display_errors true
concrete.debug.detail debug
concrete.debug.error_reporting null
concrete.proxy.host null
concrete.proxy.port null
concrete.proxy.user null
concrete.proxy.password null
concrete.upload.extensions *.flv;*.jpg;*.gif;*.jpeg;*.ico;*.docx;*.xla;*.png;*.psd;*.swf;*.doc;*.txt;*.xls;*.xlsx;*.csv;*.pdf;*.tiff;*.rtf;*.m4a;*.mov;*.wmv;*.mpeg;*.mpg;*.wav;*.3gp;*.avi;*.m4v;*.mp4;*.mp3;*.qt;*.ppt;*.pptx;*.kml;*.xml;*.svg;*.webm;*.ogg;*.ogv
concrete.upload.extensions_blacklist *.php;*.php2;*.php3;*.php4;*.php5;*.php7;*.php8;*.phtml;*.phar;*.htaccess;*.pl;*.phpsh;*.pht;*.shtml;*.cgi
concrete.upload.chunking.enabled true
concrete.upload.chunking.chunkSize null
concrete.export.csv.include_bom false
concrete.export.csv.datetime_format ATOM
concrete.interface.panel.page_relations false
concrete.mail.method PHP_MAIL
concrete.mail.methods.smtp.server
concrete.mail.methods.smtp.port
concrete.mail.methods.smtp.username
concrete.mail.methods.smtp.password
concrete.mail.methods.smtp.encryption
concrete.mail.methods.smtp.messages_per_connection null
concrete.cache.enabled true
concrete.cache.lifetime 21600
concrete.cache.overrides true
concrete.cache.blocks true
concrete.cache.assets false
concrete.cache.theme_css true
concrete.cache.pages false
concrete.cache.doctrine_dev_mode false
concrete.cache.full_page_lifetime default
concrete.cache.full_page_lifetime_value null
concrete.cache.full_contents_assets_hash false
concrete.cache.directory /home/surfjoe/public_html/application/files/cache
concrete.cache.directory_relative null
concrete.cache.page.directory /home/surfjoe/public_html/application/files/cache/pages
concrete.cache.page.adapter file
concrete.cache.levels.overrides.drivers.core_ephemeral.class \Stash\Driver\Ephemeral
concrete.cache.levels.overrides.drivers.core_filesystem.class Concrete\Core\Cache\Driver\FileSystemStashDriver
concrete.cache.levels.overrides.drivers.core_filesystem.options.path /home/surfjoe/public_html/application/files/cache/overrides
concrete.cache.levels.overrides.drivers.core_filesystem.options.dirPermissions 493
concrete.cache.levels.overrides.drivers.core_filesystem.options.filePermissions 420
concrete.cache.levels.overrides.drivers.redis.class Concrete\Core\Cache\Driver\RedisStashDriver
concrete.cache.levels.overrides.drivers.redis.options.prefix c5_overrides
concrete.cache.levels.overrides.drivers.redis.options.database 0
concrete.cache.levels.overrides.preferred_driver core_filesystem
concrete.cache.levels.expensive.drivers.core_ephemeral.class \Stash\Driver\Ephemeral
concrete.cache.levels.expensive.drivers.core_filesystem.class Concrete\Core\Cache\Driver\FileSystemStashDriver
concrete.cache.levels.expensive.drivers.core_filesystem.options.path /home/surfjoe/public_html/application/files/cache/expensive
concrete.cache.levels.expensive.drivers.core_filesystem.options.dirPermissions 493
concrete.cache.levels.expensive.drivers.core_filesystem.options.filePermissions 420
concrete.cache.levels.expensive.drivers.redis.class Concrete\Core\Cache\Driver\RedisStashDriver
concrete.cache.levels.expensive.drivers.redis.options.prefix c5_expensive
concrete.cache.levels.expensive.drivers.redis.options.database 0
concrete.cache.levels.expensive.preferred_driver core_filesystem
concrete.cache.levels.object.drivers.core_ephemeral.class \Stash\Driver\Ephemeral
concrete.cache.levels.object.drivers.redis.class Concrete\Core\Cache\Driver\RedisStashDriver
concrete.cache.levels.object.drivers.redis.options.prefix c5_object
concrete.cache.levels.object.drivers.redis.options.database 0
concrete.cache.levels.object.preferred_driver core_ephemeral
concrete.cache.clear.thumbnails false
concrete.design.enable_custom true
concrete.design.enable_layouts true
concrete.log.emails true
concrete.log.errors true
concrete.log.spam false
concrete.log.api false
concrete.log.enable_dashboard_report true
concrete.log.configuration.mode simple
concrete.log.configuration.simple.core_logging_level NOTICE
concrete.log.configuration.simple.handler database
concrete.log.configuration.simple.file.file
concrete.jobs.enable_scheduling true
concrete.filesystem.temp_directory null
concrete.filesystem.permissions.file 420
concrete.filesystem.permissions.directory 493
concrete.email.enabled true
concrete.email.default.address concrete5-noreply@concrete5
concrete.email.default.name
concrete.email.form_block.address false
concrete.email.forgot_password.address null
concrete.email.forgot_password.name null
concrete.email.validate_registration.address null
concrete.email.validate_registration.name null
concrete.email.workflow_notification.address null
concrete.email.workflow_notification.name null
concrete.form.store_form_submissions auto
concrete.marketplace.enabled true
concrete.marketplace.request_timeout 30
concrete.marketplace.token null
concrete.marketplace.site_token null
concrete.marketplace.intelligent_search true
concrete.marketplace.log_requests false
concrete.external.intelligent_search_help true
concrete.external.news true
concrete.misc.user_timezones false
concrete.misc.package_backup_directory /home/surfjoe/public_html/application/files/trash
concrete.misc.enable_progressive_page_reindex true
concrete.misc.mobile_theme_id 0
concrete.misc.sitemap_approve_immediately true
concrete.misc.enable_translate_locale_en_us false
concrete.misc.page_search_index_lifetime 259200
concrete.misc.enable_trash_can true
concrete.misc.app_version_display_in_header true
concrete.misc.default_jpeg_image_compression 80
concrete.misc.default_png_image_compression 9
concrete.misc.default_thumbnail_format auto
concrete.misc.inplace_image_operations_limit 4194304
concrete.misc.basic_thumbnailer_generation_strategy now
concrete.misc.help_overlay true
concrete.misc.require_version_comments false
concrete.misc.enable_move_blocktypes_across_sets false
concrete.misc.image_editor_cors_policy.enable_cross_origin false
concrete.misc.image_editor_cors_policy.anonymous_request true
concrete.misc.generator_tag_display_in_header true
concrete.misc.login_redirect DESKTOP
concrete.misc.latest_version 8.5.4
concrete.misc.do_page_reindex_check false
concrete.theme.compress_preprocessor_output true
concrete.theme.generate_less_sourcemap false
concrete.updates.enable_auto_update_packages false
concrete.updates.enable_permissions_protection true
concrete.updates.check_threshold 172800
concrete.updates.services.get_available_updates http://www.concrete5.org/tools/update_core
concrete.updates.services.inspect_update http://www.concrete5.org/tools/inspect_update
concrete.updates.skip_core false
concrete.paths.trash /!trash
concrete.paths.drafts /!drafts
concrete.icons.page_template.width 120
concrete.icons.page_template.height 90
concrete.icons.theme_thumbnail.width 120
concrete.icons.theme_thumbnail.height 90
concrete.icons.file_manager_listing.handle file_manager_listing
concrete.icons.file_manager_listing.width 60
concrete.icons.file_manager_listing.height 60
concrete.icons.file_manager_detail.handle file_manager_detail
concrete.icons.file_manager_detail.width 400
concrete.icons.file_manager_detail.height 400
concrete.icons.user_avatar.width 80
concrete.icons.user_avatar.height 80
concrete.icons.user_avatar.default /concrete/images/avatar_none.png
concrete.file_manager.images.use_exif_data_to_rotate_images false
concrete.file_manager.images.manipulation_library gd
concrete.file_manager.images.create_high_dpi_thumbnails true
concrete.file_manager.images.preview_image_size small
concrete.file_manager.images.preview_image_popover true
concrete.file_manager.images.svg_sanitization.action sanitize
concrete.file_manager.images.svg_sanitization.allowed_tags
concrete.file_manager.images.svg_sanitization.allowed_attributes
concrete.file_manager.images.image_editor_save_area_background_color
concrete.file_manager.items_per_page_options.0 10
concrete.file_manager.items_per_page_options.1 25
concrete.file_manager.items_per_page_options.2 50
concrete.file_manager.items_per_page_options.3 100
concrete.file_manager.items_per_page_options.4 250
concrete.file_manager.results 10
concrete.search_users.results 10
concrete.sitemap_xml.file sitemap.xml
concrete.sitemap_xml.frequency weekly
concrete.sitemap_xml.priority 0.5
concrete.accessibility.toolbar_titles false
concrete.accessibility.toolbar_large_font false
concrete.accessibility.display_help_system true
concrete.accessibility.toolbar_tooltips true
concrete.i18n.choose_language_login false
concrete.i18n.auto_install_package_languages true
concrete.i18n.community_translation.entry_point http://translate.concrete5.org/api
concrete.i18n.community_translation.api_token
concrete.i18n.community_translation.progress_limit 60
concrete.i18n.community_translation.cache_lifetime 3600
concrete.i18n.community_translation.package_url https://translate.concrete5.org/translate/package
concrete.urls.concrete5 http://www.concrete5.org
concrete.urls.concrete5_secure https://www.concrete5.org
concrete.urls.newsflow http://newsflow.concrete5.org
concrete.urls.background_feed //backgroundimages.concrete5.org/wallpaper
concrete.urls.privacy_policy //www.concrete5.org/legal/privacy-policy
concrete.urls.background_feed_secure https://backgroundimages.concrete5.org/wallpaper
concrete.urls.background_info http://backgroundimages.concrete5.org/get_image_data.php
concrete.urls.videos https://www.youtube.com/user/concrete5cms/videos
concrete.urls.help.developer http://documentation.concrete5.org/developers
concrete.urls.help.user http://documentation.concrete5.org/editors
concrete.urls.help.forum http://www.concrete5.org/community/forums
concrete.urls.help.slack https://www.concrete5.org/slack
concrete.urls.paths.menu_help_service /tools/get_remote_help_list/
concrete.urls.paths.site_page /private/sites
concrete.urls.paths.newsflow_slot_content /tools/slot_content/
concrete.urls.paths.marketplace.connect /marketplace/connect
concrete.urls.paths.marketplace.connect_success /marketplace/connect/-/connected
concrete.urls.paths.marketplace.connect_validate /marketplace/connect/-/validate
concrete.urls.paths.marketplace.connect_new_token /marketplace/connect/-/generate_token
concrete.urls.paths.marketplace.checkout /cart/-/add
concrete.urls.paths.marketplace.purchases /marketplace/connect/-/get_available_licenses
concrete.urls.paths.marketplace.item_information /marketplace/connect/-/get_item_information
concrete.urls.paths.marketplace.item_free_license /marketplace/connect/-/enable_free_license
concrete.urls.paths.marketplace.remote_item_list /marketplace/
concrete.white_label.logo false
concrete.white_label.name false
concrete.white_label.background_image null
concrete.session.name CONCRETE5
concrete.session.handler file
concrete.session.redis.database 1
concrete.session.save_path null
concrete.session.max_lifetime 7200
concrete.session.gc_probability 1
concrete.session.gc_divisor 100
concrete.session.cookie.cookie_path false
concrete.session.cookie.cookie_lifetime 0
concrete.session.cookie.cookie_domain false
concrete.session.cookie.cookie_secure false
concrete.session.cookie.cookie_httponly true
concrete.session.cookie.cookie_raw false
concrete.session.cookie.cookie_samesite null
concrete.session.remember_me.lifetime 1209600
concrete.user.registration.enabled false
concrete.user.registration.type disabled
concrete.user.registration.captcha true
concrete.user.registration.email_registration false
concrete.user.registration.display_username_field true
concrete.user.registration.display_confirm_password_field true
concrete.user.registration.validate_email false
concrete.user.registration.approval false
concrete.user.registration.notification false
concrete.user.group.badge.default_point_value 50
concrete.user.username.maximum 64
concrete.user.username.minimum 3
concrete.user.username.allowed_characters.boundary A-Za-z0-9
concrete.user.username.allowed_characters.middle A-Za-z0-9_\.
concrete.user.username.allowed_characters.requirement_string A username may only contain letters, numbers, dots (not at the beginning/end), and underscores (not at the beginning/end).
concrete.user.username.allowed_characters.error_string A username may only contain letters, numbers, dots (not at the beginning/end), and underscores (not at the beginning/end).
concrete.user.password.maximum 128
concrete.user.password.minimum 5
concrete.user.password.required_special_characters 0
concrete.user.password.required_lower_case 0
concrete.user.password.required_upper_case 0
concrete.user.password.reuse 0
concrete.user.password.hash_portable false
concrete.user.password.hash_cost_log2 12
concrete.user.password.legacy_salt
concrete.user.email.test_mx_record false
concrete.user.email.strict true
concrete.user.private_messages.throttle_max 20
concrete.user.private_messages.throttle_max_timespan 15
concrete.user.deactivation.enable_login_threshold_deactivation false
concrete.user.deactivation.login.threshold 120
concrete.user.deactivation.authentication_failure.enabled false
concrete.user.deactivation.authentication_failure.amount 5
concrete.user.deactivation.authentication_failure.duration 300
concrete.user.deactivation.message This user is inactive. Please contact us regarding this account.
concrete.spam.whitelist_group 0
concrete.spam.notify_email
concrete.calendar.colors.text #ffffff
concrete.calendar.colors.background #3A87AD
concrete.security.session.invalidate_on_user_agent_mismatch true
concrete.security.session.invalidate_on_ip_mismatch true
concrete.security.session.invalidate_inactive_users.enabled false
concrete.security.session.invalidate_inactive_users.time 300
concrete.security.misc.x_frame_options SAMEORIGIN
concrete.permissions.forward_to_login true
concrete.permissions.model simple
concrete.seo.exclude_words a, an, as, at, before, but, by, for, from, is, in, into, like, of, off, on, onto, per, since, than, the, this, that, to, up, via, with
concrete.seo.url_rewriting false
concrete.seo.url_rewriting_all false
concrete.seo.redirect_to_canonical_url false
concrete.seo.canonical_url null
concrete.seo.canonical_url_alternative null
concrete.seo.trailing_slash false
concrete.seo.title_format %2$s :: %1$s
concrete.seo.title_segment_separator ::
concrete.seo.page_path_separator -
concrete.seo.group_name_separator /
concrete.seo.segment_max_length 128
concrete.seo.paging_string ccm_paging_p
concrete.statistics.track_downloads true
concrete.limits.sitemap_pages 100
concrete.limits.delete_pages 100
concrete.limits.copy_pages 10
concrete.limits.page_search_index_batch 200
concrete.limits.job_queue_batch 10
concrete.limits.style_customizer.size_min -50
concrete.limits.style_customizer.size_max 200
concrete.page.search.always_reindex false
concrete.composer.idle_timeout 1
concrete.api.enabled false
concrete.api.grant_types.client_credentials true
concrete.api.grant_types.authorization_code true
concrete.api.grant_types.password_credentials false
concrete.api.grant_types.refresh_token true
concrete.mutex.semaphore.priority 100
concrete.mutex.semaphore.class Concrete\Core\System\Mutex\SemaphoreMutex
concrete.mutex.file_lock.priority 50
concrete.mutex.file_lock.class Concrete\Core\System\Mutex\FileLockMutex
concrete.version_db_installed 20200609145307
concrete.maintenance.version_job_page_num 305
concrete.site Temp
empty
empty
empty
empty
empty
Key Value
LSPHP_ENABLE_USER_INI on
PATH /usr/local/bin:/usr/bin:/bin
TEMP /tmp
TMP /tmp
TMPDIR /tmp
PWD /
HTTP_ACCEPT */*
CONTENT_LENGTH 0
HTTP_HOST spacemakerscustomcabinetrynaples.com
HTTP_USER_AGENT claudebot
UNIQUE_ID ZgbAq324nJFZxgkJCqOx7gAAAUU
SCRIPT_URL /index.php/custom-cabinetry/doors
SCRIPT_URI http://spacemakerscustomcabinetrynaples.com/index.php/custom-cabinetry/doors
USER_ID 2360461
SERVER_SIGNATURE
SERVER_SOFTWARE Apache
SERVER_NAME spacemakerscustomcabinetrynaples.com
SERVER_ADDR 107.180.57.7
SERVER_PORT 80
REMOTE_ADDR 44.192.16.116
DOCUMENT_ROOT /home/surfjoe/public_html
REQUEST_SCHEME http
CONTEXT_PREFIX
CONTEXT_DOCUMENT_ROOT /home/surfjoe/public_html
SERVER_ADMIN webmaster@spacemakerscustomcabinetrynaples.com
SCRIPT_FILENAME /home/surfjoe/public_html/index.php
REMOTE_PORT 57702
SERVER_PROTOCOL HTTP/1.1
REQUEST_METHOD GET
QUERY_STRING
REQUEST_URI /index.php/custom-cabinetry/doors
SCRIPT_NAME /index.php
PATH_INFO /custom-cabinetry/doors
PATH_TRANSLATED redirect:/index.php/doors
PHP_SELF /index.php
REQUEST_TIME_FLOAT 1711718571.3606
REQUEST_TIME 1711718571
Key Value
LSPHP_ENABLE_USER_INI on
PATH /usr/local/bin:/usr/bin:/bin
TEMP /tmp
TMP /tmp
TMPDIR /tmp
PWD /
0. Concrete\Core\Error\Handler\JsonErrorHandler
1. Concrete\Core\Error\Handler\ErrorHandler