Whoops \ Exception \ ErrorException (E_WARNING)
preg_match(): Compilation failed: invalid range in character class at offset 4 Whoops\Exception\ErrorException thrown with message "preg_match(): Compilation failed: invalid range in character class at offset 4" Stacktrace: #40 Whoops\Exception\ErrorException in /usr/local/etc/virtual/gorat.com/web/concrete/vendor/sunra/php-simple-html-dom-parser/Src/Sunra/PhpSimple/simplehtmldom_1_5/simple_html_dom.php:1378 #39 preg_match in /usr/local/etc/virtual/gorat.com/web/concrete/vendor/sunra/php-simple-html-dom-parser/Src/Sunra/PhpSimple/simplehtmldom_1_5/simple_html_dom.php:1378 #38 simplehtmldom_1_5\simple_html_dom:read_tag in /usr/local/etc/virtual/gorat.com/web/concrete/vendor/sunra/php-simple-html-dom-parser/Src/Sunra/PhpSimple/simplehtmldom_1_5/simple_html_dom.php:1187 #37 simplehtmldom_1_5\simple_html_dom:parse in /usr/local/etc/virtual/gorat.com/web/concrete/vendor/sunra/php-simple-html-dom-parser/Src/Sunra/PhpSimple/simplehtmldom_1_5/simple_html_dom.php:1081 #36 simplehtmldom_1_5\simple_html_dom:load in /usr/local/etc/virtual/gorat.com/web/concrete/vendor/sunra/php-simple-html-dom-parser/Src/Sunra/PhpSimple/simplehtmldom_1_5/simple_html_dom.php:102 #35 simplehtmldom_1_5\str_get_html in /usr/local/etc/virtual/gorat.com/web/concrete/vendor/sunra/php-simple-html-dom-parser/Src/Sunra/PhpSimple/HtmlDomParser.php:21 #34 call_user_func_array in /usr/local/etc/virtual/gorat.com/web/concrete/vendor/sunra/php-simple-html-dom-parser/Src/Sunra/PhpSimple/HtmlDomParser.php:21 #33 Sunra\PhpSimple\HtmlDomParser:str_get_html in /usr/local/etc/virtual/gorat.com/web/concrete/src/Editor/LinkAbstractor.php:113 #32 Concrete\Core\Editor\LinkAbstractor:translateFrom in /usr/local/etc/virtual/gorat.com/web/concrete/blocks/content/controller.php:58 #31 Concrete\Block\Content\Controller:getContent in /usr/local/etc/virtual/gorat.com/web/concrete/blocks/content/controller.php:83 #30 Concrete\Block\Content\Controller:view in /usr/local/etc/virtual/gorat.com/web/concrete/src/Controller/AbstractController.php:294 #29 call_user_func_array in /usr/local/etc/virtual/gorat.com/web/concrete/src/Controller/AbstractController.php:294 #28 Concrete\Core\Controller\AbstractController:runAction in /usr/local/etc/virtual/gorat.com/web/concrete/src/Block/View/BlockView.php:448 #27 Concrete\Core\Block\View\BlockView:runControllerTask in /usr/local/etc/virtual/gorat.com/web/concrete/src/Block/View/BlockView.php:150 #26 Concrete\Core\Block\View\BlockView:setupRender in /usr/local/etc/virtual/gorat.com/web/concrete/src/View/AbstractView.php:148 #25 Concrete\Core\View\AbstractView:render in /usr/local/etc/virtual/gorat.com/web/concrete/src/Area/Area.php:873 #24 Concrete\Core\Area\Area:display in /usr/local/etc/virtual/gorat.com/web/application/themes/rat_v2018/home.php:12 #23 include in /usr/local/etc/virtual/gorat.com/web/concrete/src/View/View.php:254 #22 Concrete\Core\View\View:renderTemplate in /usr/local/etc/virtual/gorat.com/web/concrete/src/View/View.php:216 #21 Concrete\Core\View\View:renderViewContents in /usr/local/etc/virtual/gorat.com/web/concrete/src/View/AbstractView.php:151 #20 Concrete\Core\View\AbstractView:render in /usr/local/etc/virtual/gorat.com/web/concrete/src/Http/ResponseFactory.php:147 #19 Concrete\Core\Http\ResponseFactory:view in /usr/local/etc/virtual/gorat.com/web/concrete/src/Http/ResponseFactory.php:209 #18 Concrete\Core\Http\ResponseFactory:controller in /usr/local/etc/virtual/gorat.com/web/concrete/src/Http/ResponseFactory.php:369 #17 Concrete\Core\Http\ResponseFactory:collection in /usr/local/etc/virtual/gorat.com/web/concrete/src/Routing/DispatcherRouteCallback.php:34 #16 Concrete\Core\Routing\DispatcherRouteCallback:execute in /usr/local/etc/virtual/gorat.com/web/concrete/src/Http/DefaultDispatcher.php:122 #15 Concrete\Core\Http\DefaultDispatcher:handleDispatch in /usr/local/etc/virtual/gorat.com/web/concrete/src/Http/DefaultDispatcher.php:54 #14 Concrete\Core\Http\DefaultDispatcher:dispatch in /usr/local/etc/virtual/gorat.com/web/concrete/src/Http/Middleware/DispatcherDelegate.php:39 #13 Concrete\Core\Http\Middleware\DispatcherDelegate:next in /usr/local/etc/virtual/gorat.com/web/concrete/src/Http/Middleware/ThumbnailMiddleware.php:71 #12 Concrete\Core\Http\Middleware\ThumbnailMiddleware:process in /usr/local/etc/virtual/gorat.com/web/concrete/src/Http/Middleware/MiddlewareDelegate.php:38 #11 Concrete\Core\Http\Middleware\MiddlewareDelegate:next in /usr/local/etc/virtual/gorat.com/web/concrete/src/Http/Middleware/FrameOptionsMiddleware.php:39 #10 Concrete\Core\Http\Middleware\FrameOptionsMiddleware:process in /usr/local/etc/virtual/gorat.com/web/concrete/src/Http/Middleware/MiddlewareDelegate.php:38 #9 Concrete\Core\Http\Middleware\MiddlewareDelegate:next in /usr/local/etc/virtual/gorat.com/web/concrete/src/Http/Middleware/CookieMiddleware.php:37 #8 Concrete\Core\Http\Middleware\CookieMiddleware:process in /usr/local/etc/virtual/gorat.com/web/concrete/src/Http/Middleware/MiddlewareDelegate.php:38 #7 Concrete\Core\Http\Middleware\MiddlewareDelegate:next in /usr/local/etc/virtual/gorat.com/web/concrete/src/Http/Middleware/ApplicationMiddleware.php:29 #6 Concrete\Core\Http\Middleware\ApplicationMiddleware:process in /usr/local/etc/virtual/gorat.com/web/concrete/src/Http/Middleware/MiddlewareDelegate.php:38 #5 Concrete\Core\Http\Middleware\MiddlewareDelegate:next in /usr/local/etc/virtual/gorat.com/web/concrete/src/Http/Middleware/MiddlewareStack.php:86 #4 Concrete\Core\Http\Middleware\MiddlewareStack:process in /usr/local/etc/virtual/gorat.com/web/concrete/src/Http/DefaultServer.php:85 #3 Concrete\Core\Http\DefaultServer:handleRequest in /usr/local/etc/virtual/gorat.com/web/concrete/src/Foundation/Runtime/Run/DefaultRunner.php:115 #2 Concrete\Core\Foundation\Runtime\Run\DefaultRunner:run in /usr/local/etc/virtual/gorat.com/web/concrete/src/Foundation/Runtime/DefaultRuntime.php:102 #1 Concrete\Core\Foundation\Runtime\DefaultRuntime:run in /usr/local/etc/virtual/gorat.com/web/concrete/dispatcher.php:35 #0 require in /usr/local/etc/virtual/gorat.com/web/index.php:2
Stack frames (41)
40
Whoops
\
Exception
\
ErrorException
/
vendor
/
sunra
/
php-simple-html-dom-parser
/
Src
/
Sunra
/
PhpSimple
/
simplehtmldom_1_5
/
simple_html_dom.php
1378
39
preg_match
/
vendor
/
sunra
/
php-simple-html-dom-parser
/
Src
/
Sunra
/
PhpSimple
/
simplehtmldom_1_5
/
simple_html_dom.php
1378
38
simplehtmldom_1_5
\
simple_html_dom
read_tag
/
vendor
/
sunra
/
php-simple-html-dom-parser
/
Src
/
Sunra
/
PhpSimple
/
simplehtmldom_1_5
/
simple_html_dom.php
1187
37
simplehtmldom_1_5
\
simple_html_dom
parse
/
vendor
/
sunra
/
php-simple-html-dom-parser
/
Src
/
Sunra
/
PhpSimple
/
simplehtmldom_1_5
/
simple_html_dom.php
1081
36
simplehtmldom_1_5
\
simple_html_dom
load
/
vendor
/
sunra
/
php-simple-html-dom-parser
/
Src
/
Sunra
/
PhpSimple
/
simplehtmldom_1_5
/
simple_html_dom.php
102
35
simplehtmldom_1_5
\
str_get_html
/
vendor
/
sunra
/
php-simple-html-dom-parser
/
Src
/
Sunra
/
PhpSimple
/
HtmlDomParser.php
21
34
call_user_func_array
/
vendor
/
sunra
/
php-simple-html-dom-parser
/
Src
/
Sunra
/
PhpSimple
/
HtmlDomParser.php
21
33
Sunra
\
PhpSimple
\
HtmlDomParser
str_get_html
/
src
/
Editor
/
LinkAbstractor.php
113
32
Concrete
\
Core
\
Editor
\
LinkAbstractor
translateFrom
/
blocks
/
content
/
controller.php
58
31
Concrete
\
Block
\
Content
\
Controller
getContent
/
blocks
/
content
/
controller.php
83
30
Concrete
\
Block
\
Content
\
Controller
view
/
src
/
Controller
/
AbstractController.php
294
29
call_user_func_array
/
src
/
Controller
/
AbstractController.php
294
28
Concrete
\
Core
\
Controller
\
AbstractController
runAction
/
src
/
Block
/
View
/
BlockView.php
448
27
Concrete
\
Core
\
Block
\
View
\
BlockView
runControllerTask
/
src
/
Block
/
View
/
BlockView.php
150
26
Concrete
\
Core
\
Block
\
View
\
BlockView
setupRender
/
src
/
View
/
AbstractView.php
148
25
Concrete
\
Core
\
View
\
AbstractView
render
/
src
/
Area
/
Area.php
873
24
Concrete
\
Core
\
Area
\
Area
display
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
application
/
themes
/
rat_v2018
/
home.php
12
23
include
/
src
/
View
/
View.php
254
22
Concrete
\
Core
\
View
\
View
renderTemplate
/
src
/
View
/
View.php
216
21
Concrete
\
Core
\
View
\
View
renderViewContents
/
src
/
View
/
AbstractView.php
151
20
Concrete
\
Core
\
View
\
AbstractView
render
/
src
/
Http
/
ResponseFactory.php
147
19
Concrete
\
Core
\
Http
\
ResponseFactory
view
/
src
/
Http
/
ResponseFactory.php
209
18
Concrete
\
Core
\
Http
\
ResponseFactory
controller
/
src
/
Http
/
ResponseFactory.php
369
17
Concrete
\
Core
\
Http
\
ResponseFactory
collection
/
src
/
Routing
/
DispatcherRouteCallback.php
34
16
Concrete
\
Core
\
Routing
\
DispatcherRouteCallback
execute
/
src
/
Http
/
DefaultDispatcher.php
122
15
Concrete
\
Core
\
Http
\
DefaultDispatcher
handleDispatch
/
src
/
Http
/
DefaultDispatcher.php
54
14
Concrete
\
Core
\
Http
\
DefaultDispatcher
dispatch
/
src
/
Http
/
Middleware
/
DispatcherDelegate.php
39
13
Concrete
\
Core
\
Http
\
Middleware
\
DispatcherDelegate
next
/
src
/
Http
/
Middleware
/
ThumbnailMiddleware.php
71
12
Concrete
\
Core
\
Http
\
Middleware
\
ThumbnailMiddleware
process
/
src
/
Http
/
Middleware
/
MiddlewareDelegate.php
38
11
Concrete
\
Core
\
Http
\
Middleware
\
MiddlewareDelegate
next
/
src
/
Http
/
Middleware
/
FrameOptionsMiddleware.php
39
10
Concrete
\
Core
\
Http
\
Middleware
\
FrameOptionsMiddleware
process
/
src
/
Http
/
Middleware
/
MiddlewareDelegate.php
38
9
Concrete
\
Core
\
Http
\
Middleware
\
MiddlewareDelegate
next
/
src
/
Http
/
Middleware
/
CookieMiddleware.php
37
8
Concrete
\
Core
\
Http
\
Middleware
\
CookieMiddleware
process
/
src
/
Http
/
Middleware
/
MiddlewareDelegate.php
38
7
Concrete
\
Core
\
Http
\
Middleware
\
MiddlewareDelegate
next
/
src
/
Http
/
Middleware
/
ApplicationMiddleware.php
29
6
Concrete
\
Core
\
Http
\
Middleware
\
ApplicationMiddleware
process
/
src
/
Http
/
Middleware
/
MiddlewareDelegate.php
38
5
Concrete
\
Core
\
Http
\
Middleware
\
MiddlewareDelegate
next
/
src
/
Http
/
Middleware
/
MiddlewareStack.php
86
4
Concrete
\
Core
\
Http
\
Middleware
\
MiddlewareStack
process
/
src
/
Http
/
DefaultServer.php
85
3
Concrete
\
Core
\
Http
\
DefaultServer
handleRequest
/
src
/
Foundation
/
Runtime
/
Run
/
DefaultRunner.php
115
2
Concrete
\
Core
\
Foundation
\
Runtime
\
Run
\
DefaultRunner
run
/
src
/
Foundation
/
Runtime
/
DefaultRuntime.php
102
1
Concrete
\
Core
\
Foundation
\
Runtime
\
DefaultRuntime
run
/
dispatcher.php
35
0
require
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
index.php
2
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
concrete
/
vendor
/
sunra
/
php-simple-html-dom-parser
/
Src
/
Sunra
/
PhpSimple
/
simplehtmldom_1_5
/
simple_html_dom.php
            } else {
                $node->nodetype = HDOM_TYPE_UNKNOWN;
                $node->tag = 'unknown';
            }
            if ($this->char==='>') $node->_[HDOM_INFO_TEXT].='>';
            $this->link_nodes($node, true);
            $this->char = (++$this->pos<$this->size) ? $this->doc[$this->pos] : null; // next
            return true;
        }
 
        // text
        if ($pos=strpos($tag, '<')!==false) {
            $tag = '<' . substr($tag, 0, -1);
            $node->_[HDOM_INFO_TEXT] = $tag;
            $this->link_nodes($node, false);
            $this->char = $this->doc[--$this->pos]; // prev
            return true;
        }
 
        if (!preg_match("/^[\w-:]+$/", $tag)) {
            $node->_[HDOM_INFO_TEXT] = '<' . $tag . $this->copy_until('<>');
            if ($this->char==='<') {
                $this->link_nodes($node, false);
                return true;
            }
 
            if ($this->char==='>') $node->_[HDOM_INFO_TEXT].='>';
            $this->link_nodes($node, false);
            $this->char = (++$this->pos<$this->size) ? $this->doc[$this->pos] : null; // next
            return true;
        }
 
        // begin tag
        $node->nodetype = HDOM_TYPE_ELEMENT;
        $tag_lower = strtolower($tag);
        $node->tag = ($this->lowercase) ? $tag_lower : $tag;
 
        // handle optional closing tags
        if (isset($this->optional_closing_tags[$tag_lower]) )
        {
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
concrete
/
vendor
/
sunra
/
php-simple-html-dom-parser
/
Src
/
Sunra
/
PhpSimple
/
simplehtmldom_1_5
/
simple_html_dom.php
            } else {
                $node->nodetype = HDOM_TYPE_UNKNOWN;
                $node->tag = 'unknown';
            }
            if ($this->char==='>') $node->_[HDOM_INFO_TEXT].='>';
            $this->link_nodes($node, true);
            $this->char = (++$this->pos<$this->size) ? $this->doc[$this->pos] : null; // next
            return true;
        }
 
        // text
        if ($pos=strpos($tag, '<')!==false) {
            $tag = '<' . substr($tag, 0, -1);
            $node->_[HDOM_INFO_TEXT] = $tag;
            $this->link_nodes($node, false);
            $this->char = $this->doc[--$this->pos]; // prev
            return true;
        }
 
        if (!preg_match("/^[\w-:]+$/", $tag)) {
            $node->_[HDOM_INFO_TEXT] = '<' . $tag . $this->copy_until('<>');
            if ($this->char==='<') {
                $this->link_nodes($node, false);
                return true;
            }
 
            if ($this->char==='>') $node->_[HDOM_INFO_TEXT].='>';
            $this->link_nodes($node, false);
            $this->char = (++$this->pos<$this->size) ? $this->doc[$this->pos] : null; // next
            return true;
        }
 
        // begin tag
        $node->nodetype = HDOM_TYPE_ELEMENT;
        $tag_lower = strtolower($tag);
        $node->tag = ($this->lowercase) ? $tag_lower : $tag;
 
        // handle optional closing tags
        if (isset($this->optional_closing_tags[$tag_lower]) )
        {
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
concrete
/
vendor
/
sunra
/
php-simple-html-dom-parser
/
Src
/
Sunra
/
PhpSimple
/
simplehtmldom_1_5
/
simple_html_dom.php
        $this->cursor = 1;
        $this->noise = array();
        $this->nodes = array();
        $this->lowercase = $lowercase;
        $this->default_br_text = $defaultBRText;
        $this->default_span_text = $defaultSpanText;
        $this->root = new simple_html_dom_node($this);
        $this->root->tag = 'root';
        $this->root->_[HDOM_INFO_BEGIN] = -1;
        $this->root->nodetype = HDOM_TYPE_ROOT;
        $this->parent = $this->root;
        if ($this->size>0) $this->char = $this->doc[0];
    }
 
    // parse html content
    protected function parse()
    {
        if (($s = $this->copy_until_char('<'))==='')
        {
            return $this->read_tag();
        }
 
        // text
        $node = new simple_html_dom_node($this);
        ++$this->cursor;
        $node->_[HDOM_INFO_TEXT] = $s;
        $this->link_nodes($node, false);
        return true;
    }
 
    // PAPERG - dkchou - added this to try to identify the character set of the page we have just parsed so we know better how to spit it out later.
    // NOTE:  IF you provide a routine called get_last_retrieve_url_contents_content_type which returns the CURLINFO_CONTENT_TYPE from the last curl_exec
    // (or the content_type header from the last transfer), we will parse THAT, and if a charset is specified, we will use it over any other mechanism.
    protected function parse_charset()
    {
        global $debugObject;
 
        $charset = null;
 
        if (function_exists('get_last_retrieve_url_contents_content_type'))
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
concrete
/
vendor
/
sunra
/
php-simple-html-dom-parser
/
Src
/
Sunra
/
PhpSimple
/
simplehtmldom_1_5
/
simple_html_dom.php
        $this->remove_noise("'<!--(.*?)-->'is");
        // strip out cdata
        $this->remove_noise("'<!\[CDATA\[(.*?)\]\]>'is", true);
        // Per sourceforge http://sourceforge.net/tracker/?func=detail&aid=2949097&group_id=218559&atid=1044037
        // Script tags removal now preceeds style tag removal.
        // strip out <script> tags
        $this->remove_noise("'<\s*script[^>]*[^/]>(.*?)<\s*/\s*script\s*>'is");
        $this->remove_noise("'<\s*script\s*>(.*?)<\s*/\s*script\s*>'is");
        // strip out <style> tags
        $this->remove_noise("'<\s*style[^>]*[^/]>(.*?)<\s*/\s*style\s*>'is");
        $this->remove_noise("'<\s*style\s*>(.*?)<\s*/\s*style\s*>'is");
        // strip out preformatted tags
        $this->remove_noise("'<\s*(?:code)[^>]*>(.*?)<\s*/\s*(?:code)\s*>'is");
        // strip out server side scripts
        $this->remove_noise("'(<\?)(.*?)(\?>)'s", true);
        // strip smarty scripts
        $this->remove_noise("'(\{\w)(.*?)(\})'s", true);
 
        // parsing
        while ($this->parse());
        // end
        $this->root->_[HDOM_INFO_END] = $this->cursor;
        $this->parse_charset();
 
        // make load function chainable
        return $this;
 
    }
 
    // load html from file
    function load_file()
    {
        $args = func_get_args();
        $this->load(call_user_func_array('file_get_contents', $args), true);
        // Throw an error if we can't properly load the dom.
        if (($error=error_get_last())!==null) {
            $this->clear();
            return false;
        }
    }
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
concrete
/
vendor
/
sunra
/
php-simple-html-dom-parser
/
Src
/
Sunra
/
PhpSimple
/
simplehtmldom_1_5
/
simple_html_dom.php
    //$contents = retrieve_url_contents($url);
    if (empty($contents) || strlen($contents) > MAX_FILE_SIZE)
    {
        return false;
    }
    // The second parameter can force the selectors to all be lowercase.
    $dom->load($contents, $lowercase, $stripRN);
    return $dom;
}
 
// get html dom from string
function str_get_html($str, $lowercase=true, $forceTagsClosed=true, $target_charset = DEFAULT_TARGET_CHARSET, $stripRN=true, $defaultBRText=DEFAULT_BR_TEXT, $defaultSpanText=DEFAULT_SPAN_TEXT)
{
    $dom = new simple_html_dom(null, $lowercase, $forceTagsClosed, $target_charset, $stripRN, $defaultBRText, $defaultSpanText);
    if (empty($str) || strlen($str) > MAX_FILE_SIZE)
    {
        $dom->clear();
        return false;
    }
    $dom->load($str, $lowercase, $stripRN);
    return $dom;
}
 
// dump html dom tree
function dump_html_tree($node, $show_attr=true, $deep=0)
{
    $node->dump($node);
}
 
 
/**
 * simple html dom node
 * PaperG - added ability for "find" routine to lowercase the value of the selector.
 * PaperG - added $tag_start to track the start position of the tag in the total byte index
 *
 * @package PlaceLocalInclude
 */
class simple_html_dom_node
{
    public $nodetype = HDOM_TYPE_TEXT;
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
concrete
/
vendor
/
sunra
/
php-simple-html-dom-parser
/
Src
/
Sunra
/
PhpSimple
/
HtmlDomParser.php
namespace Sunra\PhpSimple;

require 'simplehtmldom_1_5'.DIRECTORY_SEPARATOR.'simple_html_dom.php';

class HtmlDomParser {
    
    /**
     * @return \simplehtmldom_1_5\simple_html_dom
     */
    static public function file_get_html() {
        return call_user_func_array ( '\simplehtmldom_1_5\file_get_html' , func_get_args() );
    }

    /**
     * get html dom from string
     * @return \simplehtmldom_1_5\simple_html_dom
     */
    static public function str_get_html() {
        return call_user_func_array ( '\simplehtmldom_1_5\str_get_html' , func_get_args() );
    }
}
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
concrete
/
vendor
/
sunra
/
php-simple-html-dom-parser
/
Src
/
Sunra
/
PhpSimple
/
HtmlDomParser.php
namespace Sunra\PhpSimple;

require 'simplehtmldom_1_5'.DIRECTORY_SEPARATOR.'simple_html_dom.php';

class HtmlDomParser {
    
    /**
     * @return \simplehtmldom_1_5\simple_html_dom
     */
    static public function file_get_html() {
        return call_user_func_array ( '\simplehtmldom_1_5\file_get_html' , func_get_args() );
    }

    /**
     * get html dom from string
     * @return \simplehtmldom_1_5\simple_html_dom
     */
    static public function str_get_html() {
        return call_user_func_array ( '\simplehtmldom_1_5\str_get_html' , func_get_args() );
    }
}
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
concrete
/
src
/
Editor
/
LinkAbstractor.php
            $text
        );
 
        // now we add in support for the links
        $text = preg_replace_callback(
            '/{CCM:CID_([0-9]+)}/i',
            function ($matches) {
                $cID = $matches[1];
                if ($cID > 0) {
                    $c = Page::getByID($cID, 'ACTIVE');
 
                    return Loader::helper("navigation")->getLinkToCollection($c);
                }
            },
            $text
        );
 
        // now we add in support for the files that we view inline
        $dom = new HtmlDomParser();
        $r = $dom->str_get_html($text, true, true, DEFAULT_TARGET_CHARSET, false);
        if (is_object($r)) {
            foreach ($r->find('concrete-picture') as $picture) {
                $fID = $picture->fid;
                $fo = \File::getByID($fID);
                if (is_object($fo)) {
                    $style = (string) $picture->style;
                    // move width px to width attribute and height px to height attribute
                    $widthPattern = "/(?:^width|[^-]width):\\s([0-9]+)px;?/i";
                    if (preg_match($widthPattern, $style, $matches)) {
                        $style = preg_replace($widthPattern, '', $style);
                        $picture->width = $matches[1];
                    }
                    $heightPattern = "/(?:^height|[^-]height):\\s([0-9]+)px;?/i";
                    if (preg_match($heightPattern, $style, $matches)) {
                        $style = preg_replace($heightPattern, '', $style);
                        $picture->height = $matches[1];
                    }
                    if ($style === '') {
                        unset($picture->style);
                    } else {
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
concrete
/
blocks
/
content
/
controller.php
 
    public function getBlockTypeDescription()
    {
        return t("HTML/WYSIWYG Editor Content.");
    }
 
    public function getBlockTypeName()
    {
        return t("Content");
    }
 
    public function __construct($obj=null, AggregateTracker $tracker=null)
    {
        parent::__construct($obj);
        $this->tracker = $tracker;
    }
 
    public function getContent()
    {
        return LinkAbstractor::translateFrom($this->content);
    }
 
    public function getSearchableContent()
    {
        return $this->content;
    }
 
    public function br2nl($str)
    {
        $str = str_replace("\r\n", "\n", $str);
        $str = str_replace("<br />\n", "\n", $str);
 
        return $str;
    }
 
    public function registerViewAssets($outputContent = '')
    {
        if (preg_match('/data-concrete5-link-lightbox/i', $outputContent)) {
            $this->requireAsset('core/lightbox');
        }
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
concrete
/
blocks
/
content
/
controller.php
    }
 
    public function br2nl($str)
    {
        $str = str_replace("\r\n", "\n", $str);
        $str = str_replace("<br />\n", "\n", $str);
 
        return $str;
    }
 
    public function registerViewAssets($outputContent = '')
    {
        if (preg_match('/data-concrete5-link-lightbox/i', $outputContent)) {
            $this->requireAsset('core/lightbox');
        }
    }
 
    public function view()
    {
        $this->set('content', $this->getContent());
    }
 
    public function getContentEditMode()
    {
        return LinkAbstractor::translateFromEditMode($this->content);
    }
 
    public function getImportData($blockNode, $page)
    {
        $content = $blockNode->data->record->content;
        $content = LinkAbstractor::import($content);
        $args = array('content' => $content);
 
        return $args;
    }
 
    public function export(\SimpleXMLElement $blockNode)
    {
        $data = $blockNode->addChild('data');
        $data->addAttribute('table', $this->btTable);
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
concrete
/
src
/
Controller
/
AbstractController.php
    public function runTask($action, $parameters)
    {
        $this->runAction($action, $parameters);
    }
 
    /**
     * Perform an action of this controller (if shouldRunControllerTask returns true).
     *
     * @param string $action the action to be performed
     * @param array $parameters the action parameters
     *
     * @return mixed in case the action is executed, you'll receive the result of the action, or NULL otherwise
     */
    public function runAction($action, $parameters = [])
    {
        $this->action = $action;
        $this->parameters = $parameters;
        if (is_callable([$this, $action])) {
            if ($this->shouldRunControllerTask()) {
                return call_user_func_array([$this, $action], $parameters);
            }
        }
    }
 
    /**
     * Get the whole $_REQUEST array or a specific requested value.
     *
     * @param string|null $key set to null to get the whole $_REQUEST array, or a string to get a specific value in $_GET or in $_POST
     *
     * @return mixed
     */
    public function request($key = null)
    {
        return Request::request($key);
    }
}
 
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
concrete
/
src
/
Controller
/
AbstractController.php
    public function runTask($action, $parameters)
    {
        $this->runAction($action, $parameters);
    }
 
    /**
     * Perform an action of this controller (if shouldRunControllerTask returns true).
     *
     * @param string $action the action to be performed
     * @param array $parameters the action parameters
     *
     * @return mixed in case the action is executed, you'll receive the result of the action, or NULL otherwise
     */
    public function runAction($action, $parameters = [])
    {
        $this->action = $action;
        $this->parameters = $parameters;
        if (is_callable([$this, $action])) {
            if ($this->shouldRunControllerTask()) {
                return call_user_func_array([$this, $action], $parameters);
            }
        }
    }
 
    /**
     * Get the whole $_REQUEST array or a specific requested value.
     *
     * @param string|null $key set to null to get the whole $_REQUEST array, or a string to get a specific value in $_GET or in $_POST
     *
     * @return mixed
     */
    public function request($key = null)
    {
        return Request::request($key);
    }
}
 
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
concrete
/
src
/
Block
/
View
/
BlockView.php
                $method = $this->viewToRender;
            } else {
                $method = 'view';
            }
            $passthru = false;
            if ($method == 'view' && is_object($this->block)) {
                $c = Page::getCurrentPage();
                if (is_object($c)) {
                    $cnt = $c->getController();
                    $controller = $cnt->getPassThruBlockController($this->block);
                    if (is_object($controller)) {
                        $passthru = true;
                        $this->controller = $controller;
                    }
                }
            }
 
            $parameters = array();
            if (!$passthru) {
                $this->controller->runAction($method, $parameters);
            }
            $this->controller->on_before_render();
        }
    }
 
    /**
     * Legacy.
     */
    public function getThemePath()
    {
        $v = View::getInstance();
 
        return $v->getThemePath();
    }
}
 
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
concrete
/
src
/
Block
/
View
/
BlockView.php
                    if (is_object($b) && is_object($c)) {
                        $arguments = func_get_args();
                        $arguments[] = $b->getBlockID();
                        array_unshift($arguments, $c);
 
                        return call_user_func_array(array('\URL', 'page'), $arguments);
                    }
                }
            }
        } catch (Exception $e) {
        }
    }
 
    public function startRender()
    {
    }
 
    public function setupRender()
    {
        $this->runControllerTask();
 
        $view = $this->viewToRender;
 
        $env = Environment::get();
        if ($this->viewToRender == 'scrapbook') {
            $scrapbookTemplate = $this->getBlockPath(
                    FILENAME_BLOCK_VIEW_SCRAPBOOK
                ) . '/' . FILENAME_BLOCK_VIEW_SCRAPBOOK;
            if (file_exists($scrapbookTemplate)) {
                $view = 'scrapbook';
            } else {
                $view = 'view';
            }
        }
        $customFilenameToRender = null;
        if (!in_array($this->viewToRender, array('view', 'add', 'edit', 'scrapbook'))) {
            // then we're trying to render a custom view file, which we'll pass to the bottom functions as $_filename
            $customFilenameToRender = $view . '.php';
            $view = 'view';
        }
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
concrete
/
src
/
View
/
AbstractView.php
    {
        if (is_object($this->controller)) {
            $sets = $this->controller->getSets();
            $helpers = $this->controller->getHelperObjects();
            $return = array_merge($this->scopeItems, $sets, $helpers);
        } else {
            $return = $this->scopeItems;
        }
        $return['view'] = $this;
        $return['controller'] = $this->controller;
        return $return;
    }
 
    public function render($state = false)
    {
        if ($this instanceof View) {
            $this->setRequestInstance($this);
        }
        $this->start($state);
        $this->setupRender();
        $this->startRender();
        $scopeItems = $this->getScopeItems();
        $contents = $this->renderViewContents($scopeItems);
        $contents = $this->postProcessViewContents($contents);
        $response = $this->finishRender($contents);
        if ($this instanceof View) {
            $this->revertRequestInstance();
        }
 
        return $response;
    }
 
    public function renderViewContents($scopeItems)
    {
        if (file_exists($this->template)) {
            extract($scopeItems);
            ob_start();
            $this->onBeforeGetContents();
            include $this->template;
            $this->onAfterGetContents();
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
concrete
/
src
/
Area
/
Area.php
        $loc = Localization::getInstance();
 
        // now, we iterate through these block groups (which are actually arrays of block objects), and display them on the page
        $loc->pushActiveContext(Localization::CONTEXT_UI);
        if ($this->showControls && $c->isEditMode() && $ap->canViewAreaControls()) {
            View::element('block_area_header', array('a' => $this));
        } else {
            View::element('block_area_header_view', array('a' => $this));
        }
        $loc->popActiveContext();
 
        foreach ($blocksToDisplay as $b) {
            $bv = new BlockView($b);
            $bv->setAreaObject($this);
            $p = new Permissions($b);
            if ($p->canViewBlock()) {
                if (!$c->isEditMode()) {
                    echo $this->enclosingStart;
                }
                $bv->render('view');
                if (!$c->isEditMode()) {
                    echo $this->enclosingEnd;
                }
            }
        }
 
        $loc->pushActiveContext(Localization::CONTEXT_UI);
        if ($this->showControls && $c->isEditMode() && $ap->canViewAreaControls()) {
            View::element('block_area_footer', array('a' => $this));
        } else {
            View::element('block_area_footer_view', array('a' => $this));
        }
        $loc->popActiveContext();
    }
 
    /**
     * Exports the area to content format.
     *
     * @param \SimpleXMLElement $p
     * @param Page $page
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
application
/
themes
/
rat_v2018
/
home.php
<?php $this->inc('elements/header.php'); ?>
    
    <div id="main">
        
        <section class="content">
            
            <div class="container">
              
              <div class="span-7 main-area">
                  <?php
                  $a = new Area('Main');
                  $a->display($c);
                  ?>
              </div>
              
              <div class="span-5 sidebar-area" <?php if(!$c->isEditMode()) { ?>data-flickity='{"pageDots": false}'<?php } ?>>
                <?php
                  $a = new Area('Sidebar');
                  $a->display($c);
                  ?>
              </div>
              
              <div class="clear"></div>
              
              <hr />
              
              <div class="span-3">
                <img src="<?php echo $this->getThemePath(); ?>/images/gizmo.png" alt="Gizmo" />
              </div>
              
              <div class="span-9">
                <h2>News & Updates</h2>
                <?php
                  $a = new Area('News');
                  $a->display($c);
                  ?>
              </div>
              
            </div><!--/.container-->
            
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
concrete
/
src
/
View
/
View.php
        ob_end_clean();
 
        return $innerContent;
    }
 
    /**
     * Render the file set to $this->template
     * @param $scopeItems
     * @return string
     */
    protected function renderTemplate($scopeItems, $innerContent)
    {
        // Extract the items into the current scope
        extract($scopeItems);
 
        ob_start();
 
        // Fire a `before` event
        $this->onBeforeGetContents();
        include $this->template;
 
        // Fire an `after` event
        $this->onAfterGetContents();
        $contents = ob_get_contents();
        ob_end_clean();
 
        return $contents;
    }
 
    public function finishRender($contents)
    {
        $event = new \Symfony\Component\EventDispatcher\GenericEvent();
        $event->setArgument('view', $this);
        Events::dispatch('on_render_complete', $event);
 
        return $contents;
    }
 
    /**
     * Function responsible for outputting header items.
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
concrete
/
src
/
View
/
View.php
    protected function onBeforeGetContents()
    {
        $event = new \Symfony\Component\EventDispatcher\GenericEvent();
        $event->setArgument('view', $this);
        Events::dispatch('on_before_render', $event);
        $this->themeObject->registerAssets();
    }
 
    public function renderViewContents($scopeItems)
    {
        $contents = '';
 
        // Render the main view file
        if ($this->innerContentFile) {
            $contents = $this->renderInnerContents($scopeItems);
        }
 
        // Render the template around it
        if (file_exists($this->template)) {
            $contents = $this->renderTemplate($scopeItems, $contents);
        }
 
        return $contents;
    }
 
    /**
     * Render the file set to $this->innerContentFile
     * @param $scopeItems
     * @return string
     */
    protected function renderInnerContents($scopeItems)
    {
        // Extract the items into the current scope
        extract($scopeItems);
 
        ob_start();
        include $this->innerContentFile;
        $innerContent = ob_get_contents();
        ob_end_clean();
 
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
concrete
/
src
/
View
/
AbstractView.php
            $helpers = $this->controller->getHelperObjects();
            $return = array_merge($this->scopeItems, $sets, $helpers);
        } else {
            $return = $this->scopeItems;
        }
        $return['view'] = $this;
        $return['controller'] = $this->controller;
        return $return;
    }
 
    public function render($state = false)
    {
        if ($this instanceof View) {
            $this->setRequestInstance($this);
        }
        $this->start($state);
        $this->setupRender();
        $this->startRender();
        $scopeItems = $this->getScopeItems();
        $contents = $this->renderViewContents($scopeItems);
        $contents = $this->postProcessViewContents($contents);
        $response = $this->finishRender($contents);
        if ($this instanceof View) {
            $this->revertRequestInstance();
        }
 
        return $response;
    }
 
    public function renderViewContents($scopeItems)
    {
        if (file_exists($this->template)) {
            extract($scopeItems);
            ob_start();
            $this->onBeforeGetContents();
            include $this->template;
            $this->onAfterGetContents();
            $contents = ob_get_contents();
            ob_end_clean();
 
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
concrete
/
src
/
Http
/
ResponseFactory.php
        $cnt = $this->app->make(PageForbidden::class);
        $this->controller($cnt, $code, $headers);
    }
 
    /**
     * {@inheritdoc}
     */
    public function redirect($to, $code = Response::HTTP_MOVED_PERMANENTLY, $headers = [])
    {
        return RedirectResponse::create($to, $code, $headers);
    }
 
    /**
     * {@inheritdoc}
     */
    public function view(View $view, $code = Response::HTTP_OK, $headers = [])
    {
        $this->localization->pushActiveContext(Localization::CONTEXT_SITE);
 
        $contents = $view->render();
 
        return $this->create($contents, $code, $headers);
    }
 
    /**
     * {@inheritdoc}
     */
    public function controller(Controller $controller, $code = Response::HTTP_OK, $headers = [])
    {
        $request = $this->request;
 
        if ($response = $controller->on_start()) {
            return $response;
        }
 
        if ($controller instanceof PageController) {
            if ($controller->isReplaced()) {
                return $this->controller($controller->getReplacement(), $code, $headers);
            }
            $controller->setupRequestActionAndParameters($request);
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
concrete
/
src
/
Http
/
ResponseFactory.php
            if ($response = $controller->runAction('view')) {
                return $response;
            }
        }
 
        $view = $controller->getViewObject();
 
        // Mobile theme
        if ($this->config->get('concrete.misc.mobile_theme_id') > 0) {
            $md = $this->app->make(MobileDetect::class);
            if ($md->isMobile()) {
                $mobileTheme = Theme::getByID($this->app->config->get('concrete.misc.mobile_theme_id'));
                if ($mobileTheme instanceof Theme) {
                    $view->setViewTheme($mobileTheme);
                    $controller->setTheme($mobileTheme);
                }
            }
        }
 
        return $this->view($view, $code, $headers);
    }
 
    /**
     * {@inheritdoc}
     */
    public function collection(Collection $collection, $code = Response::HTTP_OK, $headers = [])
    {
        if (!$this->app) {
            throw new \RuntimeException('Cannot resolve collections without a reference to the application');
        }
 
        $request = $this->request;
 
        if ($collection->isError() && $collection->getError() == COLLECTION_NOT_FOUND) {
            if ($response = $this->collectionNotFound($collection, $request, $headers)) {
                return $response;
            }
        }
 
        if ($collection->getCollectionPath() != '/page_not_found') {
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
concrete
/
src
/
Http
/
ResponseFactory.php
        require DIR_BASE_CORE . '/bootstrap/process.php';
        $u = $this->app->make(User::class);
 
        // On page view event.
        $pe = new Event($collection);
        $pe->setUser($u);
        $pe->setRequest($request);
        $this->app['director']->dispatch('on_page_view', $pe);
 
        // Core menu items
        $item = new RelationListItem();
        $menu = $this->app->make('helper/concrete/ui/menu');
        $menu->addMenuItem($item);
 
        $controller = $collection->getPageController();
 
        // we update the current page with the one bound to this controller.
        $collection->setController($controller);
 
        return $this->controller($controller);
    }
 
    private function collectionNotFound(Collection $collection, Request $request, array $headers)
    {
        // if we don't have a path and we're doing cID, then this automatically fires a 404.
        if (!$request->getPath() && $request->get('cID')) {
            return $this->notFound('', Response::HTTP_NOT_FOUND, $headers);
        }
 
        // let's test to see if this is, in fact, the home page,
        // and we're routing arguments onto it (which is screwing up the path.)
        $home = Page::getByID(Page::getHomePageID());
        $request->setCurrentPage($home);
        $homeController = $home->getPageController();
        $homeController->setupRequestActionAndParameters($request);
 
        $response = $homeController->validateRequest();
        if ($response instanceof \Symfony\Component\HttpFoundation\Response) {
            return $response;
        } elseif ($response === true) {
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
concrete
/
src
/
Routing
/
DispatcherRouteCallback.php
    protected $factory;
 
    /**
     * DispatcherRouteCallback constructor.
     *
     * @param $callback
     * @param $factory
     */
    public function __construct($callback, ResponseFactoryInterface $factory)
    {
        parent::__construct($callback);
        $this->factory = $factory;
    }
 
    public function execute(Request $request, Route $route = null, $parameters = [])
    {
        // figure out where we need to go
        $c = Page::getFromRequest($request);
 
        return $this->factory->collection($c);
    }
 
    public static function getRouteAttributes($callback)
    {
        $callback = Core::make(self::class, [$callback]);
 
        return ['callback' => $callback];
    }
 
    /**
     * @deprecated Use CollectionResponseFactory
     *
     * @param \Concrete\Core\View\View $view
     * @param int $code
     *
     * @return \Symfony\Component\HttpFoundation\Response
     */
    protected function sendResponse(View $view, $code = 200)
    {
        return $this->factory->view($view, $code);
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
concrete
/
src
/
Http
/
DefaultDispatcher.php
        $context->fromRequest($request);
        $matcher = new UrlMatcher($collection, $context);
        $path = rtrim($request->getPathInfo(), '/') . '/';
 
        $callDispatcher = false;
        try {
            $matched = $matcher->match($path);
            $request->attributes->add($matched);
            $route = $collection->get($matched['_route']);
 
            $this->router->setRequest($request);
            $response = $this->router->execute($route, $matched);
        } catch (ResourceNotFoundException $e) {
            $callDispatcher = true;
        } catch (MethodNotAllowedException $e) {
            $callDispatcher = true;
        }
        if ($callDispatcher) {
            $callback = $this->app->make(DispatcherRouteCallback::class, ['dispatcher']);
            $response = $callback->execute($request);
        }
 
        return $response;
    }
}
 
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
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()
    {
        $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;
        }
    }
 
    private function validateUser()
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
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);
    }
 
}
 
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
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 the thumbnail generator is async, we do not use the thumbnail middleware.
 
        if ($this->app->isInstalled() && $this->config->get('concrete.misc.basic_thumbnailer_generation_strategy') == 'now') {
            if ($response->getStatusCode() == 200) {
                /* @var Connection $database */
                try {
                    $database = $this->getConnection();
                } catch (\InvalidArgumentException $e) {
                    // Don't die here if there's no available database connection
                    $database = null;
                }
 
                if ($database) {
                    try {
                        $paths = $database->executeQuery('SELECT * FROM FileImageThumbnailPaths WHERE isBuilt=0 LIMIT 5');
                        if ($paths->rowCount()) {
                            $this->generateThumbnails($paths, $database);
                        }
                    } catch (InvalidFieldNameException $e) {
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
concrete
/
src
/
Http
/
Middleware
/
MiddlewareDelegate.php
    /**
     * @var \Concrete\Core\Http\Middleware\DelegateInterface
     */
    private $nextDelegate;
 
    public function __construct(MiddlewareInterface $middleware, DelegateInterface $nextDelegate)
    {
        $this->middleware = $middleware;
        $this->nextDelegate = $nextDelegate;
    }
 
    /**
     * Dispatch the next available middleware and return the response.
     *
     * @param Request $request
     * @return Response
     */
    public function next(Request $request)
    {
        return $this->middleware->process($request, $this->nextDelegate);
    }
 
}
 
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
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;
    }
 
}
 
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
concrete
/
src
/
Http
/
Middleware
/
MiddlewareDelegate.php
    /**
     * @var \Concrete\Core\Http\Middleware\DelegateInterface
     */
    private $nextDelegate;
 
    public function __construct(MiddlewareInterface $middleware, DelegateInterface $nextDelegate)
    {
        $this->middleware = $middleware;
        $this->nextDelegate = $nextDelegate;
    }
 
    /**
     * Dispatch the next available middleware and return the response.
     *
     * @param Request $request
     * @return Response
     */
    public function next(Request $request)
    {
        return $this->middleware->process($request, $this->nextDelegate);
    }
 
}
 
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
concrete
/
src
/
Http
/
Middleware
/
CookieMiddleware.php
     */
    private $cookies;
 
    public function __construct(CookieJar $cookies)
    {
        $this->cookies = $cookies;
    }
 
    /**
     * Add or remove cookies from the
     * @param Request $request
     * @param \Concrete\Core\Http\Middleware\DelegateInterface $frame
     * @return Response
     */
    public function process(Request $request, DelegateInterface $frame)
    {
        $this->cookies->setRequest($request);
 
        /** @var Response $response */
        $response = $frame->next($request);
 
        $cleared = $this->cookies->getClearedCookies();
        foreach ($cleared as $cookie) {
            $response->headers->clearCookie($cookie, DIR_REL . '/');
        }
 
        $cookies = $this->cookies->getCookies();
        foreach ($cookies as $cookie) {
            $response->headers->setCookie($cookie);
        }
 
        return $response;
    }
 
}
 
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
concrete
/
src
/
Http
/
Middleware
/
MiddlewareDelegate.php
    /**
     * @var \Concrete\Core\Http\Middleware\DelegateInterface
     */
    private $nextDelegate;
 
    public function __construct(MiddlewareInterface $middleware, DelegateInterface $nextDelegate)
    {
        $this->middleware = $middleware;
        $this->nextDelegate = $nextDelegate;
    }
 
    /**
     * Dispatch the next available middleware and return the response.
     *
     * @param Request $request
     * @return Response
     */
    public function next(Request $request)
    {
        return $this->middleware->process($request, $this->nextDelegate);
    }
 
}
 
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
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);
    }
 
}
 
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
concrete
/
src
/
Http
/
Middleware
/
MiddlewareDelegate.php
    /**
     * @var \Concrete\Core\Http\Middleware\DelegateInterface
     */
    private $nextDelegate;
 
    public function __construct(MiddlewareInterface $middleware, DelegateInterface $nextDelegate)
    {
        $this->middleware = $middleware;
        $this->nextDelegate = $nextDelegate;
    }
 
    /**
     * Dispatch the next available middleware and return the response.
     *
     * @param Request $request
     * @return Response
     */
    public function next(Request $request)
    {
        return $this->middleware->process($request, $this->nextDelegate);
    }
 
}
 
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
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;
    }
 
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
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);
    }
 
}
 
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
concrete
/
src
/
Foundation
/
Runtime
/
Run
/
DefaultRunner.php
                'registerLegacyRoutes',
 
                // Register legacy config values
                'registerLegacyConfigValues',
 
                // Handle loading permission keys
                'handlePermissionKeys',
 
                // Handle eventing
                'handleEventing',
            ]);
        } else {
            $this->initializeSystemTimezone();
        }
 
        // 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 {
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
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;
    }
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
concrete
/
dispatcher.php
 * Include all autoloaders.
 * ----------------------------------------------------------------------------
 */
require __DIR__ . '/bootstrap/autoload.php';

/*
 * ----------------------------------------------------------------------------
 * Begin concrete5 startup.
 * ----------------------------------------------------------------------------
 */
/** @var \Concrete\Core\Application\Application $cms */
$cms = require __DIR__ . '/bootstrap/start.php';

/*
 * ----------------------------------------------------------------------------
 * Run the runtime.
 * ----------------------------------------------------------------------------
 */
$runtime = $cms->getRuntime();
if ($response = $runtime->run()) {

    /*
     * ------------------------------------------------------------------------
     * Shut it down.
     * ------------------------------------------------------------------------
     */
    $cms->shutdown();
} else {
    return $cms;
}
 
/
usr
/
local
/
etc
/
virtual
/
gorat.com
/
web
/
index.php
<?php
require('concrete/dispatcher.php');

Environment & details:

Key Value
Version 8.3.2
Installed Version 8.3.2
Key Value
concrete.version 8.3.2
concrete.version_installed 8.3.2
concrete.version_db 20180122213656
concrete.installed true
concrete.locale en_US
concrete.charset UTF-8
concrete.maintenance_mode false
concrete.debug.display_errors true
concrete.debug.detail debug
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.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 /usr/local/etc/virtual/gorat.com/web/application/files/cache
concrete.cache.directory_relative null
concrete.cache.page.directory /usr/local/etc/virtual/gorat.com/web/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 /usr/local/etc/virtual/gorat.com/web/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.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 /usr/local/etc/virtual/gorat.com/web/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.object.drivers.core_ephemeral.class \Stash\Driver\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.queries.log false
concrete.log.queries.clear_on_reload false
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.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_overlay false
concrete.external.news true
concrete.misc.user_timezones false
concrete.misc.package_backup_directory /usr/local/etc/virtual/gorat.com/web/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.basic_thumbnailer_generation_strategy now
concrete.misc.help_overlay true
concrete.misc.require_version_comments false
concrete.misc.login_redirect DESKTOP
concrete.misc.access_entity_updated 1529869551
concrete.misc.do_page_reindex_check false
concrete.misc.latest_version 8.3.2
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.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.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.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.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.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.save_path null
concrete.session.max_lifetime 7200
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.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.allow_spaces false
concrete.user.password.maximum 128
concrete.user.password.minimum 5
concrete.user.password.hash_portable false
concrete.user.password.hash_cost_log2 12
concrete.user.password.legacy_salt
concrete.user.private_messages.throttle_max 20
concrete.user.private_messages.throttle_max_timespan 15
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.ban.ip.enabled true
concrete.security.ban.ip.attempts 5
concrete.security.ban.ip.time 300
concrete.security.ban.ip.length 10
concrete.security.misc.x_frame_options SAMEORIGIN
concrete.permissions.forward_to_login true
concrete.permissions.model simple
concrete.seo.tracking.code
concrete.seo.tracking.code_position bottom
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 true
concrete.seo.url_rewriting_all false
concrete.seo.redirect_to_canonical_url 0
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.version_db_installed 20180122213656
concrete.site Reject All Tobacco
empty
empty
empty
empty
Key Value
_sf2_attributes Array ( [uGroups] => Array ( [1] => 1 ) [accessEntities] => Array ( [0] => Concrete\Core\Permission\Access\Entity\GroupEntity Object ( [group:protected] => Concrete\Core\User\Group\Group Object ( [ctID] => [permissionSet] => [permissions:Concrete\Core\User\Group\Group:private] => Array ( ) [error] => [gID] => 1 [gName] => Guest [gDescription] => The guest group represents unregistered visitors to your site. [gUserExpirationIsEnabled] => 0 [gUserExpirationMethod] => [gUserExpirationSetDateTime] => [gUserExpirationInterval] => 0 [gUserExpirationAction] => [gIsBadge] => 0 [gBadgeFID] => 0 [gBadgeDescription] => [gBadgeCommunityPointValue] => 0 [gIsAutomated] => 0 [gCheckAutomationOnRegister] => 0 [gCheckAutomationOnLogin] => 0 [gCheckAutomationOnJobRun] => 0 [gPath] => /Guest [pkgID] => 0 ) [error] => [petID] => 1 [peID] => 2 [petHandle] => group [label] => Guest ) ) [accessEntitiesUpdated] => 1710847889 )
_sf2_flashes Array ( )
_sf2_meta Array ( [u] => 1710847889 [c] => 1710847889 [l] => 0 )
Key Value
HTTP_ACCEPT */*
HTTP_USER_AGENT claudebot
HTTP_HOST gorat.com
PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
SERVER_SIGNATURE
Apache/2.4.52 (Ubuntu) Server at gorat.com Port 80
SERVER_SOFTWARE Apache/2.4.52 (Ubuntu)
SERVER_NAME gorat.com
SERVER_ADDR 206.41.228.249
SERVER_PORT 80
REMOTE_ADDR 54.84.65.73
DOCUMENT_ROOT /usr/local/etc/virtual/gorat.com/web
REQUEST_SCHEME http
CONTEXT_PREFIX
CONTEXT_DOCUMENT_ROOT /usr/local/etc/virtual/gorat.com/web
SERVER_ADMIN webmaster@gorat.com
SCRIPT_FILENAME /usr/local/etc/virtual/gorat.com/web/index.php
REMOTE_PORT 41464
GATEWAY_INTERFACE CGI/1.1
SERVER_PROTOCOL HTTP/1.1
REQUEST_METHOD GET
QUERY_STRING
REQUEST_URI /
SCRIPT_NAME /index.php
PHP_SELF /index.php
REQUEST_TIME_FLOAT 1710847889.5586
REQUEST_TIME 1710847889
empty
0. Concrete\Core\Error\Handler\ErrorHandler
1. Concrete\Core\Error\Handler\JsonErrorHandler