CHAT_OUTPUT_BEGIN
COMMAND_ID=NEWFI-260919-NEWFDOM-EVENTS208-AUDIT122R1
STATUS=OK
RC=0
HOST=pve01
MODE=read-only
COMPONENT=newfi-newfdom-events208-full-ui-foundation-audit-readonly-r1-php-linted
REFERENCE_REGISTER_CHECK=OK
REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
COMMAND_SHA256=0c8ad785f454cccfac01e122c4b6dd81990c193c83ad7d8708f218a016ff4ed6
DUPLICATE_FAILED_COMMAND_BLOCKED=false
EXECUTION_STARTED=true
CHANGE_DECLARED=false
RESULT_CONTRACT_VALID=true
RESULT_CONTRACT_STATUS=NOT_APPLICABLE
RESULT_CONTRACT_ERROR=NONE
COMMAND_RC=0
CHANGES_MADE=false
ROLLBACK_STARTED=false
ROLLBACK_RESTORED=null
MUTATION_OUTCOME=NO_MUTATION
SANITIZED=yes
SECRETS_INCLUDED=no
PRIVATE_ADDRESSES_INCLUDED=no
RAW_EVIDENCE_SHA256=c800ad649ac6a001b861be0203acfcfb6558111d2c948e8d49459be102da8282
SANITIZED_OUTPUT_SHA256=c800ad649ac6a001b861be0203acfcfb6558111d2c948e8d49459be102da8282
OUTPUT_BEGIN
NEWFI122R1_BEGIN
COMMAND_ID=NEWFI-260919-NEWFDOM-EVENTS208-AUDIT122R1
NEWFI122R1_GIT={"branch":"implementation/newfi-closed-mvp-20260906","clean":true,"head":"a13361297ba22f9745bb64aac4ed90849242955a","remotes":[{"head":"a13361297ba22f9745bb64aac4ed90849242955a","remote":"origin"}]}
NEWFI122R1_WORKTREE_FILES=[{"bytes":1131,"rel":"Entity/Event.php","sha256":"c6b81864e2029f0094864573d31fdfc4280140b900da411f14282061b84ba891"},{"bytes":777,"rel":"Entity/EventChange.php","sha256":"c9743f22eedbd43a2a6231b34301d43d42fefbca9ce4898ee0d2a59eb455e602"},{"bytes":775,"rel":"Entity/EventSource.php","sha256":"07541d087caf9668a2a2d80bb8cd81e9471095ce36260f1cc12ec81eb0460187"},{"bytes":494,"rel":"Pub/Controller/Events.php","sha256":"9dbbc3588b4d308b60fe1ab52daad7d88e0c0461820f6244f64a074fd686a57b"},{"bytes":79,"rel":"Pub/View/Events.php","sha256":"dabbfabaa95bfb8105cea2123827f3433a29f618347dd8f1551124ccaea2a0b2"},{"bytes":2129,"rel":"Setup.php","sha256":"3deab1d6e74661131a19e50ac151a9442b9612916e65963b675247f6d3280a5b"},{"bytes":144,"rel":"_data/routes.xml","sha256":"7fefbb03c4c8b0bcd3e1dc1cd8f3f0e44460aa3b1fc09f5e63ee394e56c61309"},{"bytes":830,"rel":"_data/templates.xml","sha256":"bb1e0ff32036a9606b60b76e63c4a0e40e05cd3dc4f64a5fcb8bf43f47e2367c"},{"bytes":397,"rel":"addon.json","sha256":"cc60d5f949db176004f603e42cfb160aefd7ed4d8d7fff30101f4ebb2c502dc3"}]
NEWFI122R1_STAGING={"files":[{"bytes":1131,"matches":[{"line":1,"text":"<?php"},{"line":2,"text":""},{"line":3,"text":"namespace Newfi\\Events\\Entity;"},{"line":4,"text":""},{"line":5,"text":"use XF\\Mvc\\Entity\\Entity;"},{"line":6,"text":"use XF\\Mvc\\Entity\\Structure;"},{"line":7,"text":""},{"line":8,"text":"class Event extends Entity"},{"line":9,"text":"{"},{"line":10,"text":"    public static function getStructure(Structure $structure)"},{"line":11,"text":"    {"},{"line":12,"text":"        $structure->table = 'xf_newfi_event';"},{"line":13,"text":"        $structure->shortName = 'Newfi\\Events:Event';"},{"line":14,"text":"        $structure->primaryKey = 'event_id';"},{"line":15,"text":"        $structure->columns = ["},{"line":16,"text":"            'event_id' => ['type' => self::UINT, 'autoIncrement' => true, 'nullable' => true],"},{"line":17,"text":"            'title' => ['type' => self::STR, 'maxLength' => 100, 'required' => true],"},{"line":18,"text":"            'starts_at' => ['type' => self::UINT, 'required' => true],"},{"line":19,"text":"            'state' => ["},{"line":20,"text":"                'type' => self::STR,"},{"line":27,"text":"            'updated_at' => ['type' => self::UINT, 'required' => true]"},{"line":28,"text":"        ];"},{"line":29,"text":"        return $structure;"},{"line":30,"text":"    }"},{"line":31,"text":"}"}],"rel":"Entity/Event.php","sha256":"c6b81864e2029f0094864573d31fdfc4280140b900da411f14282061b84ba891"},{"bytes":777,"matches":[{"line":1,"text":"<?php"},{"line":2,"text":""},{"line":3,"text":"namespace Newfi\\Events\\Entity;"},{"line":4,"text":""},{"line":5,"text":"use XF\\Mvc\\Entity\\Entity;"},{"line":6,"text":"use XF\\Mvc\\Entity\\Structure;"},{"line":7,"text":""},{"line":8,"text":"class EventChange extends Entity"},{"line":9,"text":"{"},{"line":10,"text":"    public static function getStructure(Structure $structure)"},{"line":11,"text":"    {"},{"line":12,"text":"        $structure->table = 'xf_newfi_event_change';"},{"line":13,"text":"        $structure->shortName = 'Newfi\\Events:EventChange';"},{"line":14,"text":"        $structure->primaryKey = 'event_change_id';"},{"line":15,"text":"        $structure->columns = ["},{"line":16,"text":"            'event_change_id' => ['type' => self::UINT, 'autoIncrement' => true, 'nullable' => true],"},{"line":17,"text":"            'event_id' => ['type' => self::UINT, 'required' => true],"},{"line":18,"text":"            'changed_at' => ['type' => self::UINT, 'required' => true],"},{"line":19,"text":"            'change_note' => ['type' => self::STR, 'maxLength' => 1000, 'required' => true]"},{"line":20,"text":"        ];"},{"line":21,"text":"        return $structure;"},{"line":22,"text":"    }"},{"line":23,"text":"}"}],"rel":"Entity/EventChange.php","sha256":"c9743f22eedbd43a2a6231b34301d43d42fefbca9ce4898ee0d2a59eb455e602"},{"bytes":775,"matches":[{"line":1,"text":"<?php"},{"line":2,"text":""},{"line":3,"text":"namespace Newfi\\Events\\Entity;"},{"line":4,"text":""},{"line":5,"text":"use XF\\Mvc\\Entity\\Entity;"},{"line":6,"text":"use XF\\Mvc\\Entity\\Structure;"},{"line":7,"text":""},{"line":8,"text":"class EventSource extends Entity"},{"line":9,"text":"{"},{"line":10,"text":"    public static function getStructure(Structure $structure)"},{"line":11,"text":"    {"},{"line":12,"text":"        $structure->table = 'xf_newfi_event_source';"},{"line":13,"text":"        $structure->shortName = 'Newfi\\Events:EventSource';"},{"line":14,"text":"        $structure->primaryKey = 'event_source_id';"},{"line":15,"text":"        $structure->columns = ["},{"line":16,"text":"            'event_source_id' => ['type' => self::UINT, 'autoIncrement' => true, 'nullable' => true],"},{"line":17,"text":"            'event_id' => ['type' => self::UINT, 'required' => true],"},{"line":18,"text":"            'source_url' => ['type' => self::STR, 'maxLength' => 500, 'required' => true],"},{"line":19,"text":"            'checked_at' => ['type' => self::UINT, 'required' => true]"},{"line":20,"text":"        ];"},{"line":21,"text":"        return $structure;"},{"line":22,"text":"    }"},{"line":23,"text":"}"}],"rel":"Entity/EventSource.php","sha256":"07541d087caf9668a2a2d80bb8cd81e9471095ce36260f1cc12ec81eb0460187"},{"bytes":494,"matches":[{"line":1,"text":"<?php"},{"line":2,"text":""},{"line":3,"text":"namespace Newfi\\Events\\Pub\\Controller;"},{"line":4,"text":""},{"line":5,"text":"use XF\\Pub\\Controller\\AbstractController;"},{"line":6,"text":""},{"line":7,"text":"class Events extends AbstractController"},{"line":8,"text":"{"},{"line":9,"text":"    public function actionIndex()"},{"line":10,"text":"    {"},{"line":11,"text":"        $events = $this->finder('Newfi\\Events:Event')"},{"line":12,"text":"            ->where('state', 'published')"},{"line":13,"text":"            ->order('starts_at', 'ASC')"},{"line":14,"text":"            ->order('event_id', 'ASC')"},{"line":15,"text":"            ->fetch(100);"},{"line":16,"text":""},{"line":17,"text":"        return $this->view('Newfi\\Events:Events', 'newfi_events', ["},{"line":18,"text":"            'events' => $events"},{"line":19,"text":"        ]);"},{"line":20,"text":"    }"}],"rel":"Pub/Controller/Events.php","sha256":"9dbbc3588b4d308b60fe1ab52daad7d88e0c0461820f6244f64a074fd686a57b"},{"bytes":79,"matches":[{"line":1,"text":"<?php"},{"line":2,"text":""},{"line":3,"text":"namespace Newfi\\Events\\Pub\\View;"},{"line":4,"text":""},{"line":5,"text":"class Events extends \\XF\\Mvc\\View"},{"line":6,"text":"{"},{"line":7,"text":"}"}],"rel":"Pub/View/Events.php","sha256":"dabbfabaa95bfb8105cea2123827f3433a29f618347dd8f1551124ccaea2a0b2"},{"bytes":2129,"matches":[{"line":1,"text":"<?php"},{"line":2,"text":""},{"line":3,"text":"namespace Newfi\\Events;"},{"line":4,"text":""},{"line":5,"text":"use XF\\AddOn\\AbstractSetup;"},{"line":6,"text":"use XF\\Db\\Schema\\Create;"},{"line":7,"text":""},{"line":8,"text":"class Setup extends AbstractSetup"},{"line":9,"text":"{"},{"line":10,"text":"    public function install(array $stepParams = [])"},{"line":12,"text":"        $sm = $this->schemaManager();"},{"line":13,"text":""},{"line":14,"text":"        $sm->createTable('xf_newfi_event', function (Create $table)"},{"line":15,"text":"        {"},{"line":16,"text":"            $table->addColumn('event_id', 'int')->autoIncrement();"},{"line":17,"text":"            $table->addColumn('title', 'varchar', 100);"},{"line":18,"text":"            $table->addColumn('starts_at', 'int');"},{"line":19,"text":"            $table->addColumn('state', 'varbinary', 25)->setDefault('draft');"},{"line":20,"text":"            $table->addColumn('fingerprint', 'varbinary', 64);"},{"line":21,"text":"            $table->addColumn('created_at', 'int');"},{"line":22,"text":"            $table->addColumn('updated_at', 'int');"},{"line":23,"text":"            $table->addPrimaryKey('event_id');"},{"line":24,"text":"            $table->addKey('starts_at');"},{"line":25,"text":"            $table->addKey('state');"},{"line":26,"text":"            $table->addKey('fingerprint');"},{"line":27,"text":"        });"},{"line":28,"text":""},{"line":29,"text":"        $sm->createTable('xf_newfi_event_source', function (Create $table)"},{"line":30,"text":"        {"},{"line":31,"text":"            $table->addColumn('event_source_id', 'int')->autoIncrement();"},{"line":32,"text":"            $table->addColumn('event_id', 'int');"},{"line":33,"text":"            $table->addColumn('source_url', 'varchar', 500);"},{"line":34,"text":"            $table->addColumn('checked_at', 'int');"},{"line":35,"text":"            $table->addPrimaryKey('event_source_id');"},{"line":36,"text":"            $table->addKey('event_id');"},{"line":37,"text":"        });"},{"line":38,"text":""},{"line":39,"text":"        $sm->createTable('xf_newfi_event_change', function (Create $table)"},{"line":40,"text":"        {"},{"line":41,"text":"            $table->addColumn('event_change_id', 'int')->autoIncrement();"},{"line":42,"text":"            $table->addColumn('event_id', 'int');"},{"line":43,"text":"            $table->addColumn('changed_at', 'int');"},{"line":44,"text":"            $table->addColumn('change_note', 'text');"},{"line":45,"text":"            $table->addPrimaryKey('event_change_id');"},{"line":46,"text":"            $table->addKey('event_id');"},{"line":47,"text":"        });"},{"line":48,"text":""},{"line":58,"text":"    {"},{"line":59,"text":"        $sm = $this->schemaManager();"},{"line":60,"text":"        $sm->dropTable('xf_newfi_event_change');"},{"line":61,"text":"        $sm->dropTable('xf_newfi_event_source');"},{"line":62,"text":"        $sm->dropTable('xf_newfi_event');"},{"line":63,"text":"        return null;"},{"line":64,"text":"    }"}],"rel":"Setup.php","sha256":"3deab1d6e74661131a19e50ac151a9442b9612916e65963b675247f6d3280a5b"},{"bytes":144,"matches":[{"line":1,"text":"<?xml version=\"1.0\" encoding=\"utf-8\"?>"},{"line":2,"text":"<routes>"},{"line":3,"text":"  <route route_type=\"public\" route_prefix=\"events\" controller=\"Newfi\\Events:Events\"/>"},{"line":4,"text":"</routes>"}],"rel":"_data/routes.xml","sha256":"7fefbb03c4c8b0bcd3e1dc1cd8f3f0e44460aa3b1fc09f5e63ee394e56c61309"},{"bytes":830,"matches":[{"line":1,"text":"<?xml version=\"1.0\" encoding=\"utf-8\"?>"},{"line":2,"text":"<templates>"},{"line":3,"text":"  <template type=\"public\" title=\"newfi_events\" version_id=\"1000010\" version_string=\"1.0.0 Alpha 1\"><![CDATA["},{"line":4,"text":"<xf:title>События</xf:title>"},{"line":5,"text":""},{"line":8,"text":"    <div class=\"block-header\">Календарь событий</div>"},{"line":9,"text":"    <div class=\"block-body\">"},{"line":10,"text":"      <xf:if is=\"$events\">"},{"line":11,"text":"        <xf:foreach loop=\"$events\" value=\"$event\">"},{"line":12,"text":"          <div class=\"block-row\">"},{"line":13,"text":"            <h3 class=\"contentRow-title\">{$event.title}</h3>"},{"line":14,"text":"            <div class=\"contentRow-minor\"><xf:date time=\"$event.starts_at\" /></div>"},{"line":15,"text":"          </div>"},{"line":16,"text":"        </xf:foreach>"},{"line":21,"text":"  </div>"},{"line":22,"text":"</div>"},{"line":23,"text":"]]></template>"},{"line":24,"text":"</templates>"}],"rel":"_data/templates.xml","sha256":"bb1e0ff32036a9606b60b76e63c4a0e40e05cd3dc4f64a5fcb8bf43f47e2367c"},{"bytes":397,"matches":[{"line":1,"text":"{"},{"line":2,"text":"  \"title\": \"Newfi Events\","},{"line":3,"text":"  \"description\": \"Minimal private-staging events/calendar component for the Newfi closed MVP.\","},{"line":4,"text":"  \"version_id\": 1000010,"},{"line":5,"text":"  \"version_string\": \"1.0.0 Alpha 1\","}],"rel":"addon.json","sha256":"cc60d5f949db176004f603e42cfb160aefd7ed4d8d7fff30101f4ebb2c502dc3"}],"ok":true,"role":"staging","state":{"addon":{"active":1,"addon_id":"Newfi/Events","json_hash":"cc60d5f949db176004f603e42cfb160aefd7ed4d8d7fff30101f4ebb2c502dc3","title":"Newfi Events","version_id":1000010,"version_string":"1.0.0 Alpha 1"},"app_counts":{"drafts":0,"resources":13,"tag_content":39,"tags":33,"updates":13,"versions":13},"board":"0","counts":{"xf_newfi_event":0,"xf_newfi_event_change":0,"xf_newfi_event_source":0},"errors":{"ids":[33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55],"old_fp":"e739c2c309539a508e20eba89b0ebc688640ef6ff9f919bbb419b2faad819f80","rows":[{"error_id":33,"exception_type":"XF\\CssRenderException","filename":"src/XF/CssRenderException.php","line":89,"message":"Error rendering template public:variations.less: ParseError: Unexpected input in public:variations.less on line 849, column 34 (on or near line 849)"},{"error_id":34,"exception_type":"XF\\CssRenderException","filename":"src/XF/CssRenderException.php","line":89,"message":"Error rendering template public:core.less: ParseError: Unexpected input in public:core.less on line 849, column 34 (on or near line 849)"},{"error_id":35,"exception_type":"XF\\CssRenderException","filename":"src/XF/CssRenderException.php","line":89,"message":"Error rendering template public:app.less: ParseError: Unexpected input in public:app.less on line 849, column 34 (on or near line 849)"},{"error_id":36,"exception_type":"XF\\CssRenderException","filename":"src/XF/CssRenderException.php","line":89,"message":"Error rendering template public:extra.less: ParseError: Unexpected input in public:extra.less on line 849, column 34 (on or near line 849)"},{"error_id":37,"exception_type":"XF\\CssRenderException","filename":"src/XF/CssRenderException.php","line":89,"message":"Error rendering template public:variations.less: ParseError: Unexpected input in public:variations.less on line 849, column 34 (on or near line 849)"},{"error_id":38,"exception_type":"XF\\CssRenderException","filename":"src/XF/CssRenderException.php","line":89,"message":"Error rendering template public:core.less: ParseError: Unexpected input in public:core.less on line 849, column 34 (on or near line 849)"},{"error_id":39,"exception_type":"XF\\CssRenderException","filename":"src/XF/CssRenderException.php","line":89,"message":"Error rendering template public:app.less: ParseError: Unexpected input in public:app.less on line 849, column 34 (on or near line 849)"},{"error_id":40,"exception_type":"XF\\CssRenderException","filename":"src/XF/CssRenderException.php","line":89,"message":"Error rendering template public:extra.less: ParseError: Unexpected input in public:extra.less on line 849, column 34 (on or near line 849)"},{"error_id":41,"exception_type":"XF\\PrintableException","filename":"src/XF/Mvc/Entity/Entity.php","line":1276,"message":"Строка 111: Ошибка синтаксиса - Название шаблона: public:newfi_portal"},{"error_id":42,"exception_type":"LogicException","filename":"src/XF/Mvc/Entity/Entity.php","line":645,"message":"Attempted to set 'type' while a save was pending without forceSet"},{"error_id":43,"exception_type":"ErrorException","filename":"src/XF/Mvc/Entity/Entity.php","line":1276,"message":"Fatal Error: Uncaught XF\\PrintableException: Строка 111: Ошибка синтаксиса - Название шаблона: public:newfi_portal in /var/www/forums/newfi/public/src/XF/Mvc/Entity/Entity.php:1276 Stack trace: #0 Command line code(31): XF\\Mvc\\Entity\\Entity->save(true, false) #1 {main} thrown"},{"error_id":44,"exception_type":"ErrorException","filename":"src/XF/Db/AbstractStatement.php","line":225,"message":"Fatal Error: Uncaught XF\\Db\\InvalidQueryException: MySQL statement prepare error [1064]: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '\\'Gram/Support\\'' at line 1 in /var/www/forums/newfi/public/src/XF/Db/AbstractStatement.php:225 Stack trace: #0 /var/www/forums/newfi/public/src/XF/Db/Mysqli/Statement.php(207): XF\\Db\\AbstractStatement->getException('...', 1064, '...') #1 /var/www/forums/newfi/public/src/XF/Db/Mysqli/Statement.php(43): XF\\Db\\Mysqli\\Statement->getException('...', 1064, '...') #2 /var/www/forums/newfi/public/src/XF/Db/Mysqli/Statement.php(61): XF\\Db\\Mysqli\\Statement->prepare() #3 /var/www/forums/newfi/public/src/XF/Db/AbstractAdapter.php(96): XF\\Db\\Mysqli\\Statement->execute() #4 /var/www/forums/newfi/public/src/XF/Db/AbstractAdapter.php(152): XF\\Db\\AbstractAdapter->query('...', Array) #5 Command line code(1): XF\\Db\\AbstractAdapter->fetchOne('...') #6 {main} thrown"},{"error_id":45,"exception_type":"XF\\PrintableException","filename":"src/XF/Mvc/Entity/Entity.php","line":1276,"message":"Пожалуйста, введите корректный префикс роутинга."},{"error_id":46,"exception_type":"ErrorException","filename":"Command line code","line":5,"message":"Fatal Error: Uncaught ReflectionException: Method XF\\AddOn\\AbstractSetup::applyGlobalPermissionByGroup() does not exist in Command line code:5 Stack trace: #0 Command line code(5): ReflectionMethod->__construct('...', '...') #1 {main} thrown"},{"error_id":47,"exception_type":"XF\\Db\\InvalidQueryException","filename":"src/XF/Db/AbstractStatement.php","line":225,"message":"MySQL statement prepare error [1064]: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'enabled FROM xf_template_modification WHERE addon_id = ? ORDER BY modificatio...' at line 1"},{"error_id":48,"exception_type":"XF\\Db\\InvalidQueryException","filename":"src/XF/Db/AbstractStatement.php","line":225,"message":"MySQL statement prepare error [1064]: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'enabled FROM xf_template_modification WHERE addon_id = ? ORDER BY modificatio...' at line 1"},{"error_id":49,"exception_type":"XF\\Db\\Exception","filename":"src/XF/Db/AbstractStatement.php","line":225,"message":"MySQL statement prepare error [1054]: Unknown column 'sub_name_format' in 'SELECT'"},{"error_id":50,"exception_type":"XF\\Db\\Exception","filename":"src/XF/Db/AbstractStatement.php","line":225,"message":"MySQL statement prepare error [1054]: Unknown column 'display_in_list' in 'SELECT'"},{"error_id":51,"exception_type":"ErrorException","filename":"Command line code","line":32,"message":"Fatal Error: Uncaught ErrorException: [E_WARNING] Trying to access array offset on false in Command line code:32 Stack trace: #0 Command line code(32): XF::handlePhpError(2, '...', '...', 32) #1 {main} thrown"},{"error_id":52,"exception_type":"ErrorException","filename":"Command line code","line":16,"message":"Fatal Error: Uncaught ErrorException: [E_WARNING] Trying to access array offset on false in Command line code:16 Stack trace: #0 Command line code(16): XF::handlePhpError(2, '...', '...', 16) #1 {main} thrown"},{"error_id":53,"exception_type":"ErrorException","filename":"src/XF/Db/AbstractStatement.php","line":225,"message":"Fatal Error: Uncaught XF\\Db\\Exception: MySQL statement prepare error [1054]: Unknown column 'display_in_list' in 'SELECT' in /var/www/forums/newfi/public/src/XF/Db/AbstractStatement.php:225 Stack trace: #0 /var/www/forums/newfi/public/src/XF/Db/Mysqli/Statement.php(207): XF\\Db\\AbstractStatement->getException('...', 1054, '...') #1 /var/www/forums/newfi/public/src/XF/Db/Mysqli/Statement.php(43): XF\\Db\\Mysqli\\Statement->getException('...', 1054, '...') #2 /var/www/forums/newfi/public/src/XF/Db/Mysqli/Statement.php(61): XF\\Db\\Mysqli\\Statement->prepare() #3 /var/www/forums/newfi/public/src/XF/Db/AbstractAdapter.php(96): XF\\Db\\Mysqli\\Statement->execute() #4 /var/www/forums/newfi/public/src/XF/Db/AbstractAdapter.php(157): XF\\Db\\AbstractAdapter->query('...', Array) #5 Command line code(11): XF\\Db\\AbstractAdapter->fetchAll('...') #6 {main} thrown"},{"error_id":54,"exception_type":"ErrorException","filename":"src/XF/Service/ValidateAndSavableTrait.php","line":36,"message":"Fatal Error: Uncaught LogicException: Cannot save with validation errors. Use validate() to ensure there are no errors. (First error: Пожалуйста, укажите корректную версию.) in /var/www/forums/newfi/public/src/XF/Service/ValidateAndSavableTrait.php:36 Stack trace: #0 Command line code(4): XFRM\\Service\\ResourceItem\\Create->save() #1 /var/www/forums/newfi/public/src/XF.php(950): {closure}() #2 Command line code(4): XF::asVisitor(Object(XFRM\\XF\\Entity\\User), Object(Closure)) #3 {main} thrown"},{"error_id":55,"exception_type":"ErrorException","filename":"src/XF/Db/AbstractStatement.php","line":225,"message":"Fatal Error: Uncaught XF\\Db\\Exception: MySQL statement prepare error [1054]: Unknown column 'r.category_id' in 'SELECT' in /var/www/forums/newfi/public/src/XF/Db/AbstractStatement.php:225 Stack trace: #0 /var/www/forums/newfi/public/src/XF/Db/Mysqli/Statement.php(207): XF\\Db\\AbstractStatement->getException('...', 1054, '...') #1 /var/www/forums/newfi/public/src/XF/Db/Mysqli/Statement.php(43): XF\\Db\\Mysqli\\Statement->getException('...', 1054, '...') #2 /var/www/forums/newfi/public/src/XF/Db/Mysqli/Statement.php(61): XF\\Db\\Mysqli\\Statement->prepare() #3 /var/www/forums/newfi/public/src/XF/Db/AbstractAdapter.php(96): XF\\Db\\Mysqli\\Statement->execute() #4 /var/www/forums/newfi/public/src/XF/Db/AbstractAdapter.php(157): XF\\Db\\AbstractAdapter->query('...', Array) #5 Command line code(3): XF\\Db\\AbstractAdapter->fetchAll('...') #6 {main} thrown"}]},"event_templates":[{"bytes":643,"matches":[{"line":6,"text":"    <div class=\"block-header\">Календарь событий</div>"},{"line":7,"text":"    <div class=\"block-body\">"},{"line":8,"text":"      <xf:if is=\"$events\">"},{"line":9,"text":"        <xf:foreach loop=\"$events\" value=\"$event\">"},{"line":10,"text":"          <div class=\"block-row\">"},{"line":11,"text":"            <h3 class=\"contentRow-title\">{$event.title}</h3>"},{"line":12,"text":"            <div class=\"contentRow-minor\"><xf:date time=\"$event.starts_at\" /></div>"},{"line":13,"text":"          </div>"},{"line":14,"text":"        </xf:foreach>"},{"line":15,"text":"      <xf:else />"}],"sha256":"514dffc791acf6b30e0c2bda235e571e62ccc5752b72b31449beb8d2b34e4543","style_id":0,"template_id":1612,"title":"newfi_events"}],"jobs":[],"navigation_tables":{"xf_navigation":{"count":56,"create":"CREATE TABLE `xf_navigation` (\n  `navigation_id` varbinary(50) NOT NULL,\n  `parent_navigation_id` varbinary(50) NOT NULL,\n  `display_order` int(10) unsigned NOT NULL DEFAULT 0,\n  `navigation_type_id` varbinary(25) NOT NULL,\n  `type_config` mediumtext NOT NULL,\n  `condition_expression` mediumblob NOT NULL,\n  `condition_setup` mediumblob NOT NULL,\n  `data_expression` mediumblob NOT NULL,\n  `data_setup` mediumblob NOT NULL,\n  `global_setup` mediumblob NOT NULL,\n  `enabled` tinyint(3) unsigned NOT NULL DEFAULT 0,\n  `is_customized` tinyint(3) unsigned NOT NULL DEFAULT 0,\n  `default_value` mediumblob NOT NULL,\n  `addon_id` varbinary(50) NOT NULL DEFAULT '',\n  PRIMARY KEY (`navigation_id`),\n  KEY `parent_navigation_id_display_order` (`parent_navigation_id`,`display_order`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci"},"xf_navigation_type":{"count":3,"create":"CREATE TABLE `xf_navigation_type` (\n  `navigation_type_id` varbinary(25) NOT NULL,\n  `handler_class` varchar(100) NOT NULL,\n  `display_order` int(10) unsigned NOT NULL DEFAULT 0,\n  PRIMARY KEY (`navigation_type_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci"}},"portal_template":{"bytes":8623,"matches":[{"line":6,"text":"  <section class=\"newfiPortal-hero\">"},{"line":7,"text":"    <div class=\"newfiPortal-heroCopy\">"},{"line":8,"text":"      <div class=\"newfiPortal-kicker\">Ньюфаундленды · знания · люди</div>"},{"line":9,"text":"      <h1>Дом сообщества ньюфаундлендов</h1>"},{"line":10,"text":"      <p>Обсуждения, практические материалы, события, фотографии и собаки сообщества — в одной точке входа.</p>"},{"line":11,"text":""},{"line":12,"text":"      <div class=\"newfiPortal-actions\">"},{"line":13,"text":"        <a class=\"button button--primary\" href=\"{{ link('forums') }}\">К обсуждениям</a>"},{"line":14,"text":"        <a class=\"button\" href=\"{{ link('events') }}\">События</a>"},{"line":15,"text":"        <a class=\"button\" href=\"{{ link('dogs') }}\">Собаки</a>"},{"line":16,"text":"      </div>"},{"line":17,"text":"    </div>"},{"line":18,"text":"  </section>"},{"line":19,"text":""},{"line":20,"text":"  <div class=\"newfiPortal-grid\">"},{"line":21,"text":"    <xf:if is=\"$portal.forums.hasItems\"><section class=\"newfiPortal-card newfiPortal-card--wide\" data-portal-section=\"forums\">"},{"line":22,"text":"      <header class=\"newfiPortal-cardHeader\">"},{"line":23,"text":"        <div>"},{"line":24,"text":"          <span class=\"newfiPortal-eyebrow\">Сообщество</span>"},{"line":25,"text":"          <h2>Последние обсуждения</h2>"},{"line":26,"text":"        </div>"},{"line":27,"text":"        <a href=\"{{ link('forums') }}\">Все разделы</a>"},{"line":28,"text":"      </header>"},{"line":29,"text":""},{"line":30,"text":"      "},{"line":31,"text":"        <div class=\"newfiPortal-list\">"},{"line":32,"text":"          <xf:foreach loop=\"$portal.forums.items\" value=\"$thread\">"},{"line":33,"text":"            <a class=\"newfiPortal-listItem\" href=\"{{ link('threads', $thread) }}\">"},{"line":34,"text":"              <strong>{$thread.title}</strong>"},{"line":35,"text":"              <span>{$thread.Forum.Node.title}</span>"},{"line":36,"text":"              <small><xf:date time=\"$thread.last_post_date\" /></small>"},{"line":37,"text":"            </a>"},{"line":38,"text":"          </xf:foreach>"},{"line":39,"text":"        </div>"},{"line":40,"text":"      "},{"line":41,"text":"    </section></xf:if>"},{"line":75,"text":"<xf:if is=\"$portal.resources.available\">"},{"line":76,"text":"        <xf:if is=\"$portal.resources.hasItems\">"},{"line":77,"text":"          <div class=\"newfiPortal-list\">"},{"line":78,"text":"            <xf:foreach loop=\"$portal.resources.items\" value=\"$resource\">"},{"line":79,"text":"              <a class=\"newfiPortal-listItem\" href=\"{{ link('resources', $resource) }}\">"},{"line":80,"text":"                <strong>{$resource.title}</strong>"},{"line":81,"text":"                <span>{$resource.tag_line}</span>"},{"line":82,"text":"                <small><xf:date time=\"$resource.last_update\" /></small>"},{"line":83,"text":"              </a>"},{"line":84,"text":"            </xf:foreach>"},{"line":85,"text":"          </div>"},{"line":86,"text":"        <xf:else />"},{"line":87,"text":"          <div class=\"newfiPortal-empty\">Проверенные материалы появятся здесь после публикации.</div>"},{"line":88,"text":"        </xf:if>"},{"line":89,"text":"        <a class=\"newfiPortal-textLink\" href=\"{{ link('resources') }}\">Открыть базу знаний</a>"},{"line":90,"text":"      <xf:else />"},{"line":91,"text":"        <div class=\"newfiPortal-locked\" data-portal-locked=\"resources\">"},{"line":92,"text":"          База знаний доступна участникам с соответствующими правами."},{"line":93,"text":"        </div>"},{"line":94,"text":"      </xf:if>"},{"line":95,"text":"    </section>"},{"line":96,"text":""},{"line":97,"text":"    <xf:if is=\"$portal.events.hasItems\"><section class=\"newfiPortal-card\" data-portal-section=\"events\">"},{"line":98,"text":"      <header class=\"newfiPortal-cardHeader\">"},{"line":99,"text":"        <div>"},{"line":100,"text":"          <span class=\"newfiPortal-eyebrow\">Календарь</span>"},{"line":101,"text":"          <h2>Ближайшие события</h2>"},{"line":102,"text":"        </div>"},{"line":103,"text":"        <a href=\"{{ link('events') }}\">Все события</a>"},{"line":104,"text":"      </header>"},{"line":105,"text":""},{"line":106,"text":"      "},{"line":107,"text":"        <div class=\"newfiPortal-list\">"},{"line":108,"text":"          <xf:foreach loop=\"$portal.events.items\" value=\"$event\">"},{"line":109,"text":"            <div class=\"newfiPortal-listItem newfiPortal-listItem--static\">"},{"line":110,"text":"              <strong>{$event.title}</strong>"},{"line":111,"text":"              <small><xf:date time=\"$event.starts_at\" /></small>"},{"line":112,"text":"            </div>"},{"line":113,"text":"          </xf:foreach>"},{"line":114,"text":"        </div>"},{"line":115,"text":"      "},{"line":116,"text":"    </section></xf:if>"},{"line":120,"text":"        <div>"},{"line":121,"text":"          <span class=\"newfiPortal-eyebrow\">Сообщество</span>"},{"line":122,"text":"          <h2>Наши собаки</h2>"},{"line":123,"text":"        </div>"},{"line":124,"text":"        <a href=\"{{ link('dogs') }}\">Все собаки</a>"},{"line":125,"text":"      </header>"},{"line":126,"text":""},{"line":127,"text":"      "},{"line":128,"text":"        <div class=\"newfiPortal-list\">"},{"line":129,"text":"          <xf:foreach loop=\"$portal.dogs.items\" value=\"$dog\">"},{"line":130,"text":"            <div class=\"newfiPortal-listItem newfiPortal-listItem--static\">"},{"line":131,"text":"              <strong><xf:if is=\"$dog.full_name\">{$dog.full_name}<xf:else />{$dog.name}</xf:if></strong>"},{"line":132,"text":"              <xf:if is=\"$dog.city\"><span>{$dog.city}</span></xf:if>"},{"line":147,"text":"      <xf:if is=\"$portal.media.available\">"},{"line":148,"text":"        <xf:if is=\"$portal.media.hasItems\">"},{"line":149,"text":"          <div class=\"newfiPortal-mediaList\">"},{"line":150,"text":"            <xf:foreach loop=\"$portal.media.items\" value=\"$media\">"},{"line":151,"text":"              <a class=\"newfiPortal-mediaItem\" href=\"{{ link('media', $media) }}\">"},{"line":152,"text":"                <strong>{$media.title}</strong>"},{"line":153,"text":"                <span>{$media.username}</span>"},{"line":154,"text":"                <small><xf:date time=\"$media.media_date\" /></small>"},{"line":155,"text":"              </a>"},{"line":156,"text":"            </xf:foreach>"},{"line":157,"text":"          </div>"},{"line":158,"text":"        <xf:else />"},{"line":159,"text":"          <div class=\"newfiPortal-empty\">Фотографии появятся здесь после публикации в галерее.</div>"},{"line":160,"text":"        </xf:if>"},{"line":161,"text":"        <a class=\"newfiPortal-textLink\" href=\"{{ link('media') }}\">Открыть галерею</a>"},{"line":162,"text":"      <xf:else />"},{"line":163,"text":"        <div class=\"newfiPortal-locked\" data-portal-locked=\"media\">"},{"line":164,"text":"          Галерея доступна участникам с соответствующими правами."},{"line":165,"text":"        </div>"},{"line":166,"text":"      </xf:if>"},{"line":167,"text":"    </section>"},{"line":168,"text":"  </div>"},{"line":169,"text":""},{"line":172,"text":"      <span class=\"newfiPortal-eyebrow\">НьюфДом</span>"},{"line":173,"text":"      <h2>Полезное начинается с живого сообщества</h2>"},{"line":174,"text":"      <p>Задайте вопрос, поделитесь опытом или добавьте материал в подходящий раздел.</p>"},{"line":175,"text":"    </div>"},{"line":176,"text":"    <a class=\"button button--primary\" href=\"{{ link('forums') }}\">Перейти к форуму</a>"},{"line":177,"text":"  </section>"},{"line":178,"text":"</div>"},{"line":179,"text":""}],"sha256":"31100610adcf19b8a5df5eac88cc3ea1eed1e642ccd9232be082343af018e669","style_id":0,"template_id":1610},"schemas":{"xf_newfi_event":{"columns":[{"Collation":null,"Comment":"","Default":null,"Extra":"auto_increment","Field":"event_id","Key":"PRI","Null":"NO","Privileges":"select,insert,update,references","Type":"int(10) unsigned"},{"Collation":"utf8mb4_general_ci","Comment":"","Default":null,"Extra":"","Field":"title","Key":"","Null":"NO","Privileges":"select,insert,update,references","Type":"varchar(100)"},{"Collation":null,"Comment":"","Default":null,"Extra":"","Field":"starts_at","Key":"MUL","Null":"NO","Privileges":"select,insert,update,references","Type":"int(10) unsigned"},{"Collation":null,"Comment":"","Default":"draft","Extra":"","Field":"state","Key":"MUL","Null":"NO","Privileges":"select,insert,update,references","Type":"varbinary(25)"},{"Collation":null,"Comment":"","Default":null,"Extra":"","Field":"fingerprint","Key":"MUL","Null":"NO","Privileges":"select,insert,update,references","Type":"varbinary(64)"},{"Collation":null,"Comment":"","Default":null,"Extra":"","Field":"created_at","Key":"","Null":"NO","Privileges":"select,insert,update,references","Type":"int(10) unsigned"},{"Collation":null,"Comment":"","Default":null,"Extra":"","Field":"updated_at","Key":"","Null":"NO","Privileges":"select,insert,update,references","Type":"int(10) unsigned"}],"create":"CREATE TABLE `xf_newfi_event` (\n  `event_id` int(10) unsigned NOT NULL AUTO_INCREMENT,\n  `title` varchar(100) NOT NULL,\n  `starts_at` int(10) unsigned NOT NULL,\n  `state` varbinary(25) NOT NULL DEFAULT 'draft',\n  `fingerprint` varbinary(64) NOT NULL,\n  `created_at` int(10) unsigned NOT NULL,\n  `updated_at` int(10) unsigned NOT NULL,\n  PRIMARY KEY (`event_id`),\n  KEY `starts_at` (`starts_at`),\n  KEY `state` (`state`),\n  KEY `fingerprint` (`fingerprint`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci","indexes":[{"Cardinality":0,"Collation":"A","Column_name":"event_id","Comment":"","Ignored":"NO","Index_comment":"","Index_type":"BTREE","Key_name":"PRIMARY","Non_unique":0,"Null":"","Packed":null,"Seq_in_index":1,"Sub_part":null,"Table":"xf_newfi_event"},{"Cardinality":0,"Collation":"A","Column_name":"starts_at","Comment":"","Ignored":"NO","Index_comment":"","Index_type":"BTREE","Key_name":"starts_at","Non_unique":1,"Null":"","Packed":null,"Seq_in_index":1,"Sub_part":null,"Table":"xf_newfi_event"},{"Cardinality":0,"Collation":"A","Column_name":"state","Comment":"","Ignored":"NO","Index_comment":"","Index_type":"BTREE","Key_name":"state","Non_unique":1,"Null":"","Packed":null,"Seq_in_index":1,"Sub_part":null,"Table":"xf_newfi_event"},{"Cardinality":0,"Collation":"A","Column_name":"fingerprint","Comment":"","Ignored":"NO","Index_comment":"","Index_type":"BTREE","Key_name":"fingerprint","Non_unique":1,"Null":"","Packed":null,"Seq_in_index":1,"Sub_part":null,"Table":"xf_newfi_event"}]},"xf_newfi_event_change":{"columns":[{"Collation":null,"Comment":"","Default":null,"Extra":"auto_increment","Field":"event_change_id","Key":"PRI","Null":"NO","Privileges":"select,insert,update,references","Type":"int(10) unsigned"},{"Collation":null,"Comment":"","Default":null,"Extra":"","Field":"event_id","Key":"MUL","Null":"NO","Privileges":"select,insert,update,references","Type":"int(10) unsigned"},{"Collation":null,"Comment":"","Default":null,"Extra":"","Field":"changed_at","Key":"","Null":"NO","Privileges":"select,insert,update,references","Type":"int(10) unsigned"},{"Collation":"utf8mb4_general_ci","Comment":"","Default":null,"Extra":"","Field":"change_note","Key":"","Null":"NO","Privileges":"select,insert,update,references","Type":"text"}],"create":"CREATE TABLE `xf_newfi_event_change` (\n  `event_change_id` int(10) unsigned NOT NULL AUTO_INCREMENT,\n  `event_id` int(10) unsigned NOT NULL,\n  `changed_at` int(10) unsigned NOT NULL,\n  `change_note` text NOT NULL,\n  PRIMARY KEY (`event_change_id`),\n  KEY `event_id` (`event_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci","indexes":[{"Cardinality":0,"Collation":"A","Column_name":"event_change_id","Comment":"","Ignored":"NO","Index_comment":"","Index_type":"BTREE","Key_name":"PRIMARY","Non_unique":0,"Null":"","Packed":null,"Seq_in_index":1,"Sub_part":null,"Table":"xf_newfi_event_change"},{"Cardinality":0,"Collation":"A","Column_name":"event_id","Comment":"","Ignored":"NO","Index_comment":"","Index_type":"BTREE","Key_name":"event_id","Non_unique":1,"Null":"","Packed":null,"Seq_in_index":1,"Sub_part":null,"Table":"xf_newfi_event_change"}]},"xf_newfi_event_source":{"columns":[{"Collation":null,"Comment":"","Default":null,"Extra":"auto_increment","Field":"event_source_id","Key":"PRI","Null":"NO","Privileges":"select,insert,update,references","Type":"int(10) unsigned"},{"Collation":null,"Comment":"","Default":null,"Extra":"","Field":"event_id","Key":"MUL","Null":"NO","Privileges":"select,insert,update,references","Type":"int(10) unsigned"},{"Collation":"utf8mb4_general_ci","Comment":"","Default":null,"Extra":"","Field":"source_url","Key":"","Null":"NO","Privileges":"select,insert,update,references","Type":"varchar(500)"},{"Collation":null,"Comment":"","Default":null,"Extra":"","Field":"checked_at","Key":"","Null":"NO","Privileges":"select,insert,update,references","Type":"int(10) unsigned"}],"create":"CREATE TABLE `xf_newfi_event_source` (\n  `event_source_id` int(10) unsigned NOT NULL AUTO_INCREMENT,\n  `event_id` int(10) unsigned NOT NULL,\n  `source_url` varchar(500) NOT NULL,\n  `checked_at` int(10) unsigned NOT NULL,\n  PRIMARY KEY (`event_source_id`),\n  KEY `event_id` (`event_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci","indexes":[{"Cardinality":0,"Collation":"A","Column_name":"event_source_id","Comment":"","Ignored":"NO","Index_comment":"","Index_type":"BTREE","Key_name":"PRIMARY","Non_unique":0,"Null":"","Packed":null,"Seq_in_index":1,"Sub_part":null,"Table":"xf_newfi_event_source"},{"Cardinality":0,"Collation":"A","Column_name":"event_id","Comment":"","Ignored":"NO","Index_comment":"","Index_type":"BTREE","Key_name":"event_id","Non_unique":1,"Null":"","Packed":null,"Seq_in_index":1,"Sub_part":null,"Table":"xf_newfi_event_source"}]}}}}
NEWFI122R1_PRODUCTION={"files":[{"bytes":1131,"matches":[{"line":1,"text":"<?php"},{"line":2,"text":""},{"line":3,"text":"namespace Newfi\\Events\\Entity;"},{"line":4,"text":""},{"line":5,"text":"use XF\\Mvc\\Entity\\Entity;"},{"line":6,"text":"use XF\\Mvc\\Entity\\Structure;"},{"line":7,"text":""},{"line":8,"text":"class Event extends Entity"},{"line":9,"text":"{"},{"line":10,"text":"    public static function getStructure(Structure $structure)"},{"line":11,"text":"    {"},{"line":12,"text":"        $structure->table = 'xf_newfi_event';"},{"line":13,"text":"        $structure->shortName = 'Newfi\\Events:Event';"},{"line":14,"text":"        $structure->primaryKey = 'event_id';"},{"line":15,"text":"        $structure->columns = ["},{"line":16,"text":"            'event_id' => ['type' => self::UINT, 'autoIncrement' => true, 'nullable' => true],"},{"line":17,"text":"            'title' => ['type' => self::STR, 'maxLength' => 100, 'required' => true],"},{"line":18,"text":"            'starts_at' => ['type' => self::UINT, 'required' => true],"},{"line":19,"text":"            'state' => ["},{"line":20,"text":"                'type' => self::STR,"},{"line":27,"text":"            'updated_at' => ['type' => self::UINT, 'required' => true]"},{"line":28,"text":"        ];"},{"line":29,"text":"        return $structure;"},{"line":30,"text":"    }"},{"line":31,"text":"}"}],"rel":"Entity/Event.php","sha256":"c6b81864e2029f0094864573d31fdfc4280140b900da411f14282061b84ba891"},{"bytes":777,"matches":[{"line":1,"text":"<?php"},{"line":2,"text":""},{"line":3,"text":"namespace Newfi\\Events\\Entity;"},{"line":4,"text":""},{"line":5,"text":"use XF\\Mvc\\Entity\\Entity;"},{"line":6,"text":"use XF\\Mvc\\Entity\\Structure;"},{"line":7,"text":""},{"line":8,"text":"class EventChange extends Entity"},{"line":9,"text":"{"},{"line":10,"text":"    public static function getStructure(Structure $structure)"},{"line":11,"text":"    {"},{"line":12,"text":"        $structure->table = 'xf_newfi_event_change';"},{"line":13,"text":"        $structure->shortName = 'Newfi\\Events:EventChange';"},{"line":14,"text":"        $structure->primaryKey = 'event_change_id';"},{"line":15,"text":"        $structure->columns = ["},{"line":16,"text":"            'event_change_id' => ['type' => self::UINT, 'autoIncrement' => true, 'nullable' => true],"},{"line":17,"text":"            'event_id' => ['type' => self::UINT, 'required' => true],"},{"line":18,"text":"            'changed_at' => ['type' => self::UINT, 'required' => true],"},{"line":19,"text":"            'change_note' => ['type' => self::STR, 'maxLength' => 1000, 'required' => true]"},{"line":20,"text":"        ];"},{"line":21,"text":"        return $structure;"},{"line":22,"text":"    }"},{"line":23,"text":"}"}],"rel":"Entity/EventChange.php","sha256":"c9743f22eedbd43a2a6231b34301d43d42fefbca9ce4898ee0d2a59eb455e602"},{"bytes":775,"matches":[{"line":1,"text":"<?php"},{"line":2,"text":""},{"line":3,"text":"namespace Newfi\\Events\\Entity;"},{"line":4,"text":""},{"line":5,"text":"use XF\\Mvc\\Entity\\Entity;"},{"line":6,"text":"use XF\\Mvc\\Entity\\Structure;"},{"line":7,"text":""},{"line":8,"text":"class EventSource extends Entity"},{"line":9,"text":"{"},{"line":10,"text":"    public static function getStructure(Structure $structure)"},{"line":11,"text":"    {"},{"line":12,"text":"        $structure->table = 'xf_newfi_event_source';"},{"line":13,"text":"        $structure->shortName = 'Newfi\\Events:EventSource';"},{"line":14,"text":"        $structure->primaryKey = 'event_source_id';"},{"line":15,"text":"        $structure->columns = ["},{"line":16,"text":"            'event_source_id' => ['type' => self::UINT, 'autoIncrement' => true, 'nullable' => true],"},{"line":17,"text":"            'event_id' => ['type' => self::UINT, 'required' => true],"},{"line":18,"text":"            'source_url' => ['type' => self::STR, 'maxLength' => 500, 'required' => true],"},{"line":19,"text":"            'checked_at' => ['type' => self::UINT, 'required' => true]"},{"line":20,"text":"        ];"},{"line":21,"text":"        return $structure;"},{"line":22,"text":"    }"},{"line":23,"text":"}"}],"rel":"Entity/EventSource.php","sha256":"07541d087caf9668a2a2d80bb8cd81e9471095ce36260f1cc12ec81eb0460187"},{"bytes":494,"matches":[{"line":1,"text":"<?php"},{"line":2,"text":""},{"line":3,"text":"namespace Newfi\\Events\\Pub\\Controller;"},{"line":4,"text":""},{"line":5,"text":"use XF\\Pub\\Controller\\AbstractController;"},{"line":6,"text":""},{"line":7,"text":"class Events extends AbstractController"},{"line":8,"text":"{"},{"line":9,"text":"    public function actionIndex()"},{"line":10,"text":"    {"},{"line":11,"text":"        $events = $this->finder('Newfi\\Events:Event')"},{"line":12,"text":"            ->where('state', 'published')"},{"line":13,"text":"            ->order('starts_at', 'ASC')"},{"line":14,"text":"            ->order('event_id', 'ASC')"},{"line":15,"text":"            ->fetch(100);"},{"line":16,"text":""},{"line":17,"text":"        return $this->view('Newfi\\Events:Events', 'newfi_events', ["},{"line":18,"text":"            'events' => $events"},{"line":19,"text":"        ]);"},{"line":20,"text":"    }"}],"rel":"Pub/Controller/Events.php","sha256":"9dbbc3588b4d308b60fe1ab52daad7d88e0c0461820f6244f64a074fd686a57b"},{"bytes":79,"matches":[{"line":1,"text":"<?php"},{"line":2,"text":""},{"line":3,"text":"namespace Newfi\\Events\\Pub\\View;"},{"line":4,"text":""},{"line":5,"text":"class Events extends \\XF\\Mvc\\View"},{"line":6,"text":"{"},{"line":7,"text":"}"}],"rel":"Pub/View/Events.php","sha256":"dabbfabaa95bfb8105cea2123827f3433a29f618347dd8f1551124ccaea2a0b2"},{"bytes":2129,"matches":[{"line":1,"text":"<?php"},{"line":2,"text":""},{"line":3,"text":"namespace Newfi\\Events;"},{"line":4,"text":""},{"line":5,"text":"use XF\\AddOn\\AbstractSetup;"},{"line":6,"text":"use XF\\Db\\Schema\\Create;"},{"line":7,"text":""},{"line":8,"text":"class Setup extends AbstractSetup"},{"line":9,"text":"{"},{"line":10,"text":"    public function install(array $stepParams = [])"},{"line":12,"text":"        $sm = $this->schemaManager();"},{"line":13,"text":""},{"line":14,"text":"        $sm->createTable('xf_newfi_event', function (Create $table)"},{"line":15,"text":"        {"},{"line":16,"text":"            $table->addColumn('event_id', 'int')->autoIncrement();"},{"line":17,"text":"            $table->addColumn('title', 'varchar', 100);"},{"line":18,"text":"            $table->addColumn('starts_at', 'int');"},{"line":19,"text":"            $table->addColumn('state', 'varbinary', 25)->setDefault('draft');"},{"line":20,"text":"            $table->addColumn('fingerprint', 'varbinary', 64);"},{"line":21,"text":"            $table->addColumn('created_at', 'int');"},{"line":22,"text":"            $table->addColumn('updated_at', 'int');"},{"line":23,"text":"            $table->addPrimaryKey('event_id');"},{"line":24,"text":"            $table->addKey('starts_at');"},{"line":25,"text":"            $table->addKey('state');"},{"line":26,"text":"            $table->addKey('fingerprint');"},{"line":27,"text":"        });"},{"line":28,"text":""},{"line":29,"text":"        $sm->createTable('xf_newfi_event_source', function (Create $table)"},{"line":30,"text":"        {"},{"line":31,"text":"            $table->addColumn('event_source_id', 'int')->autoIncrement();"},{"line":32,"text":"            $table->addColumn('event_id', 'int');"},{"line":33,"text":"            $table->addColumn('source_url', 'varchar', 500);"},{"line":34,"text":"            $table->addColumn('checked_at', 'int');"},{"line":35,"text":"            $table->addPrimaryKey('event_source_id');"},{"line":36,"text":"            $table->addKey('event_id');"},{"line":37,"text":"        });"},{"line":38,"text":""},{"line":39,"text":"        $sm->createTable('xf_newfi_event_change', function (Create $table)"},{"line":40,"text":"        {"},{"line":41,"text":"            $table->addColumn('event_change_id', 'int')->autoIncrement();"},{"line":42,"text":"            $table->addColumn('event_id', 'int');"},{"line":43,"text":"            $table->addColumn('changed_at', 'int');"},{"line":44,"text":"            $table->addColumn('change_note', 'text');"},{"line":45,"text":"            $table->addPrimaryKey('event_change_id');"},{"line":46,"text":"            $table->addKey('event_id');"},{"line":47,"text":"        });"},{"line":48,"text":""},{"line":58,"text":"    {"},{"line":59,"text":"        $sm = $this->schemaManager();"},{"line":60,"text":"        $sm->dropTable('xf_newfi_event_change');"},{"line":61,"text":"        $sm->dropTable('xf_newfi_event_source');"},{"line":62,"text":"        $sm->dropTable('xf_newfi_event');"},{"line":63,"text":"        return null;"},{"line":64,"text":"    }"}],"rel":"Setup.php","sha256":"3deab1d6e74661131a19e50ac151a9442b9612916e65963b675247f6d3280a5b"},{"bytes":144,"matches":[{"line":1,"text":"<?xml version=\"1.0\" encoding=\"utf-8\"?>"},{"line":2,"text":"<routes>"},{"line":3,"text":"  <route route_type=\"public\" route_prefix=\"events\" controller=\"Newfi\\Events:Events\"/>"},{"line":4,"text":"</routes>"}],"rel":"_data/routes.xml","sha256":"7fefbb03c4c8b0bcd3e1dc1cd8f3f0e44460aa3b1fc09f5e63ee394e56c61309"},{"bytes":830,"matches":[{"line":1,"text":"<?xml version=\"1.0\" encoding=\"utf-8\"?>"},{"line":2,"text":"<templates>"},{"line":3,"text":"  <template type=\"public\" title=\"newfi_events\" version_id=\"1000010\" version_string=\"1.0.0 Alpha 1\"><![CDATA["},{"line":4,"text":"<xf:title>События</xf:title>"},{"line":5,"text":""},{"line":8,"text":"    <div class=\"block-header\">Календарь событий</div>"},{"line":9,"text":"    <div class=\"block-body\">"},{"line":10,"text":"      <xf:if is=\"$events\">"},{"line":11,"text":"        <xf:foreach loop=\"$events\" value=\"$event\">"},{"line":12,"text":"          <div class=\"block-row\">"},{"line":13,"text":"            <h3 class=\"contentRow-title\">{$event.title}</h3>"},{"line":14,"text":"            <div class=\"contentRow-minor\"><xf:date time=\"$event.starts_at\" /></div>"},{"line":15,"text":"          </div>"},{"line":16,"text":"        </xf:foreach>"},{"line":21,"text":"  </div>"},{"line":22,"text":"</div>"},{"line":23,"text":"]]></template>"},{"line":24,"text":"</templates>"}],"rel":"_data/templates.xml","sha256":"bb1e0ff32036a9606b60b76e63c4a0e40e05cd3dc4f64a5fcb8bf43f47e2367c"},{"bytes":397,"matches":[{"line":1,"text":"{"},{"line":2,"text":"  \"title\": \"Newfi Events\","},{"line":3,"text":"  \"description\": \"Minimal private-staging events/calendar component for the Newfi closed MVP.\","},{"line":4,"text":"  \"version_id\": 1000010,"},{"line":5,"text":"  \"version_string\": \"1.0.0 Alpha 1\","}],"rel":"addon.json","sha256":"cc60d5f949db176004f603e42cfb160aefd7ed4d8d7fff30101f4ebb2c502dc3"}],"ok":true,"role":"production","state":{"addon":{"active":1,"addon_id":"Newfi/Events","json_hash":"cc60d5f949db176004f603e42cfb160aefd7ed4d8d7fff30101f4ebb2c502dc3","title":"Newfi Events","version_id":1000010,"version_string":"1.0.0 Alpha 1"},"app_counts":{"drafts":0,"resources":13,"tag_content":39,"tags":33,"updates":13,"versions":13},"board":"1","counts":{"xf_newfi_event":0,"xf_newfi_event_change":0,"xf_newfi_event_source":0},"errors":{"ids":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40],"old_fp":"737935e0f156defd5fcd89c9e05899bb3577964371bc436e65db7c7e461be69b","rows":[{"error_id":1,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":2,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":3,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":4,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":5,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":6,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":7,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":8,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":9,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":10,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":11,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":12,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":13,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":14,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":15,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":16,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":17,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":18,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":19,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":20,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":21,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":22,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":23,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":24,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":25,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":26,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":27,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":28,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":29,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":30,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":31,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":32,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":33,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":34,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":35,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":36,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":37,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":38,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":39,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":40,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"}]},"event_templates":[{"bytes":643,"matches":[{"line":6,"text":"    <div class=\"block-header\">Календарь событий</div>"},{"line":7,"text":"    <div class=\"block-body\">"},{"line":8,"text":"      <xf:if is=\"$events\">"},{"line":9,"text":"        <xf:foreach loop=\"$events\" value=\"$event\">"},{"line":10,"text":"          <div class=\"block-row\">"},{"line":11,"text":"            <h3 class=\"contentRow-title\">{$event.title}</h3>"},{"line":12,"text":"            <div class=\"contentRow-minor\"><xf:date time=\"$event.starts_at\" /></div>"},{"line":13,"text":"          </div>"},{"line":14,"text":"        </xf:foreach>"},{"line":15,"text":"      <xf:else />"}],"sha256":"514dffc791acf6b30e0c2bda235e571e62ccc5752b72b31449beb8d2b34e4543","style_id":0,"template_id":1612,"title":"newfi_events"}],"jobs":[],"navigation_tables":{"xf_navigation":{"count":56,"create":"CREATE TABLE `xf_navigation` (\n  `navigation_id` varbinary(50) NOT NULL,\n  `parent_navigation_id` varbinary(50) NOT NULL,\n  `display_order` int(10) unsigned NOT NULL DEFAULT 0,\n  `navigation_type_id` varbinary(25) NOT NULL,\n  `type_config` mediumtext NOT NULL,\n  `condition_expression` mediumblob NOT NULL,\n  `condition_setup` mediumblob NOT NULL,\n  `data_expression` mediumblob NOT NULL,\n  `data_setup` mediumblob NOT NULL,\n  `global_setup` mediumblob NOT NULL,\n  `enabled` tinyint(3) unsigned NOT NULL DEFAULT 0,\n  `is_customized` tinyint(3) unsigned NOT NULL DEFAULT 0,\n  `default_value` mediumblob NOT NULL,\n  `addon_id` varbinary(50) NOT NULL DEFAULT '',\n  PRIMARY KEY (`navigation_id`),\n  KEY `parent_navigation_id_display_order` (`parent_navigation_id`,`display_order`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci"},"xf_navigation_type":{"count":3,"create":"CREATE TABLE `xf_navigation_type` (\n  `navigation_type_id` varbinary(25) NOT NULL,\n  `handler_class` varchar(100) NOT NULL,\n  `display_order` int(10) unsigned NOT NULL DEFAULT 0,\n  PRIMARY KEY (`navigation_type_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci"}},"portal_template":{"bytes":8623,"matches":[{"line":6,"text":"  <section class=\"newfiPortal-hero\">"},{"line":7,"text":"    <div class=\"newfiPortal-heroCopy\">"},{"line":8,"text":"      <div class=\"newfiPortal-kicker\">Ньюфаундленды · знания · люди</div>"},{"line":9,"text":"      <h1>Дом сообщества ньюфаундлендов</h1>"},{"line":10,"text":"      <p>Обсуждения, практические материалы, события, фотографии и собаки сообщества — в одной точке входа.</p>"},{"line":11,"text":""},{"line":12,"text":"      <div class=\"newfiPortal-actions\">"},{"line":13,"text":"        <a class=\"button button--primary\" href=\"{{ link('forums') }}\">К обсуждениям</a>"},{"line":14,"text":"        <a class=\"button\" href=\"{{ link('events') }}\">События</a>"},{"line":15,"text":"        <a class=\"button\" href=\"{{ link('dogs') }}\">Собаки</a>"},{"line":16,"text":"      </div>"},{"line":17,"text":"    </div>"},{"line":18,"text":"  </section>"},{"line":19,"text":""},{"line":20,"text":"  <div class=\"newfiPortal-grid\">"},{"line":21,"text":"    <xf:if is=\"$portal.forums.hasItems\"><section class=\"newfiPortal-card newfiPortal-card--wide\" data-portal-section=\"forums\">"},{"line":22,"text":"      <header class=\"newfiPortal-cardHeader\">"},{"line":23,"text":"        <div>"},{"line":24,"text":"          <span class=\"newfiPortal-eyebrow\">Сообщество</span>"},{"line":25,"text":"          <h2>Последние обсуждения</h2>"},{"line":26,"text":"        </div>"},{"line":27,"text":"        <a href=\"{{ link('forums') }}\">Все разделы</a>"},{"line":28,"text":"      </header>"},{"line":29,"text":""},{"line":30,"text":"      "},{"line":31,"text":"        <div class=\"newfiPortal-list\">"},{"line":32,"text":"          <xf:foreach loop=\"$portal.forums.items\" value=\"$thread\">"},{"line":33,"text":"            <a class=\"newfiPortal-listItem\" href=\"{{ link('threads', $thread) }}\">"},{"line":34,"text":"              <strong>{$thread.title}</strong>"},{"line":35,"text":"              <span>{$thread.Forum.Node.title}</span>"},{"line":36,"text":"              <small><xf:date time=\"$thread.last_post_date\" /></small>"},{"line":37,"text":"            </a>"},{"line":38,"text":"          </xf:foreach>"},{"line":39,"text":"        </div>"},{"line":40,"text":"      "},{"line":41,"text":"    </section></xf:if>"},{"line":75,"text":"<xf:if is=\"$portal.resources.available\">"},{"line":76,"text":"        <xf:if is=\"$portal.resources.hasItems\">"},{"line":77,"text":"          <div class=\"newfiPortal-list\">"},{"line":78,"text":"            <xf:foreach loop=\"$portal.resources.items\" value=\"$resource\">"},{"line":79,"text":"              <a class=\"newfiPortal-listItem\" href=\"{{ link('resources', $resource) }}\">"},{"line":80,"text":"                <strong>{$resource.title}</strong>"},{"line":81,"text":"                <span>{$resource.tag_line}</span>"},{"line":82,"text":"                <small><xf:date time=\"$resource.last_update\" /></small>"},{"line":83,"text":"              </a>"},{"line":84,"text":"            </xf:foreach>"},{"line":85,"text":"          </div>"},{"line":86,"text":"        <xf:else />"},{"line":87,"text":"          <div class=\"newfiPortal-empty\">Проверенные материалы появятся здесь после публикации.</div>"},{"line":88,"text":"        </xf:if>"},{"line":89,"text":"        <a class=\"newfiPortal-textLink\" href=\"{{ link('resources') }}\">Открыть базу знаний</a>"},{"line":90,"text":"      <xf:else />"},{"line":91,"text":"        <div class=\"newfiPortal-locked\" data-portal-locked=\"resources\">"},{"line":92,"text":"          База знаний доступна участникам с соответствующими правами."},{"line":93,"text":"        </div>"},{"line":94,"text":"      </xf:if>"},{"line":95,"text":"    </section>"},{"line":96,"text":""},{"line":97,"text":"    <xf:if is=\"$portal.events.hasItems\"><section class=\"newfiPortal-card\" data-portal-section=\"events\">"},{"line":98,"text":"      <header class=\"newfiPortal-cardHeader\">"},{"line":99,"text":"        <div>"},{"line":100,"text":"          <span class=\"newfiPortal-eyebrow\">Календарь</span>"},{"line":101,"text":"          <h2>Ближайшие события</h2>"},{"line":102,"text":"        </div>"},{"line":103,"text":"        <a href=\"{{ link('events') }}\">Все события</a>"},{"line":104,"text":"      </header>"},{"line":105,"text":""},{"line":106,"text":"      "},{"line":107,"text":"        <div class=\"newfiPortal-list\">"},{"line":108,"text":"          <xf:foreach loop=\"$portal.events.items\" value=\"$event\">"},{"line":109,"text":"            <div class=\"newfiPortal-listItem newfiPortal-listItem--static\">"},{"line":110,"text":"              <strong>{$event.title}</strong>"},{"line":111,"text":"              <small><xf:date time=\"$event.starts_at\" /></small>"},{"line":112,"text":"            </div>"},{"line":113,"text":"          </xf:foreach>"},{"line":114,"text":"        </div>"},{"line":115,"text":"      "},{"line":116,"text":"    </section></xf:if>"},{"line":120,"text":"        <div>"},{"line":121,"text":"          <span class=\"newfiPortal-eyebrow\">Сообщество</span>"},{"line":122,"text":"          <h2>Наши собаки</h2>"},{"line":123,"text":"        </div>"},{"line":124,"text":"        <a href=\"{{ link('dogs') }}\">Все собаки</a>"},{"line":125,"text":"      </header>"},{"line":126,"text":""},{"line":127,"text":"      "},{"line":128,"text":"        <div class=\"newfiPortal-list\">"},{"line":129,"text":"          <xf:foreach loop=\"$portal.dogs.items\" value=\"$dog\">"},{"line":130,"text":"            <div class=\"newfiPortal-listItem newfiPortal-listItem--static\">"},{"line":131,"text":"              <strong><xf:if is=\"$dog.full_name\">{$dog.full_name}<xf:else />{$dog.name}</xf:if></strong>"},{"line":132,"text":"              <xf:if is=\"$dog.city\"><span>{$dog.city}</span></xf:if>"},{"line":147,"text":"      <xf:if is=\"$portal.media.available\">"},{"line":148,"text":"        <xf:if is=\"$portal.media.hasItems\">"},{"line":149,"text":"          <div class=\"newfiPortal-mediaList\">"},{"line":150,"text":"            <xf:foreach loop=\"$portal.media.items\" value=\"$media\">"},{"line":151,"text":"              <a class=\"newfiPortal-mediaItem\" href=\"{{ link('media', $media) }}\">"},{"line":152,"text":"                <strong>{$media.title}</strong>"},{"line":153,"text":"                <span>{$media.username}</span>"},{"line":154,"text":"                <small><xf:date time=\"$media.media_date\" /></small>"},{"line":155,"text":"              </a>"},{"line":156,"text":"            </xf:foreach>"},{"line":157,"text":"          </div>"},{"line":158,"text":"        <xf:else />"},{"line":159,"text":"          <div class=\"newfiPortal-empty\">Фотографии появятся здесь после публикации в галерее.</div>"},{"line":160,"text":"        </xf:if>"},{"line":161,"text":"        <a class=\"newfiPortal-textLink\" href=\"{{ link('media') }}\">Открыть галерею</a>"},{"line":162,"text":"      <xf:else />"},{"line":163,"text":"        <div class=\"newfiPortal-locked\" data-portal-locked=\"media\">"},{"line":164,"text":"          Галерея доступна участникам с соответствующими правами."},{"line":165,"text":"        </div>"},{"line":166,"text":"      </xf:if>"},{"line":167,"text":"    </section>"},{"line":168,"text":"  </div>"},{"line":169,"text":""},{"line":172,"text":"      <span class=\"newfiPortal-eyebrow\">НьюфДом</span>"},{"line":173,"text":"      <h2>Полезное начинается с живого сообщества</h2>"},{"line":174,"text":"      <p>Задайте вопрос, поделитесь опытом или добавьте материал в подходящий раздел.</p>"},{"line":175,"text":"    </div>"},{"line":176,"text":"    <a class=\"button button--primary\" href=\"{{ link('forums') }}\">Перейти к форуму</a>"},{"line":177,"text":"  </section>"},{"line":178,"text":"</div>"},{"line":179,"text":""}],"sha256":"31100610adcf19b8a5df5eac88cc3ea1eed1e642ccd9232be082343af018e669","style_id":0,"template_id":1610},"schemas":{"xf_newfi_event":{"columns":[{"Collation":null,"Comment":"","Default":null,"Extra":"auto_increment","Field":"event_id","Key":"PRI","Null":"NO","Privileges":"select,insert,update,references","Type":"int(10) unsigned"},{"Collation":"utf8mb4_general_ci","Comment":"","Default":null,"Extra":"","Field":"title","Key":"","Null":"NO","Privileges":"select,insert,update,references","Type":"varchar(100)"},{"Collation":null,"Comment":"","Default":null,"Extra":"","Field":"starts_at","Key":"MUL","Null":"NO","Privileges":"select,insert,update,references","Type":"int(10) unsigned"},{"Collation":null,"Comment":"","Default":"draft","Extra":"","Field":"state","Key":"MUL","Null":"NO","Privileges":"select,insert,update,references","Type":"varbinary(25)"},{"Collation":null,"Comment":"","Default":null,"Extra":"","Field":"fingerprint","Key":"MUL","Null":"NO","Privileges":"select,insert,update,references","Type":"varbinary(64)"},{"Collation":null,"Comment":"","Default":null,"Extra":"","Field":"created_at","Key":"","Null":"NO","Privileges":"select,insert,update,references","Type":"int(10) unsigned"},{"Collation":null,"Comment":"","Default":null,"Extra":"","Field":"updated_at","Key":"","Null":"NO","Privileges":"select,insert,update,references","Type":"int(10) unsigned"}],"create":"CREATE TABLE `xf_newfi_event` (\n  `event_id` int(10) unsigned NOT NULL AUTO_INCREMENT,\n  `title` varchar(100) NOT NULL,\n  `starts_at` int(10) unsigned NOT NULL,\n  `state` varbinary(25) NOT NULL DEFAULT 'draft',\n  `fingerprint` varbinary(64) NOT NULL,\n  `created_at` int(10) unsigned NOT NULL,\n  `updated_at` int(10) unsigned NOT NULL,\n  PRIMARY KEY (`event_id`),\n  KEY `starts_at` (`starts_at`),\n  KEY `state` (`state`),\n  KEY `fingerprint` (`fingerprint`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci","indexes":[{"Cardinality":0,"Collation":"A","Column_name":"event_id","Comment":"","Ignored":"NO","Index_comment":"","Index_type":"BTREE","Key_name":"PRIMARY","Non_unique":0,"Null":"","Packed":null,"Seq_in_index":1,"Sub_part":null,"Table":"xf_newfi_event"},{"Cardinality":0,"Collation":"A","Column_name":"starts_at","Comment":"","Ignored":"NO","Index_comment":"","Index_type":"BTREE","Key_name":"starts_at","Non_unique":1,"Null":"","Packed":null,"Seq_in_index":1,"Sub_part":null,"Table":"xf_newfi_event"},{"Cardinality":0,"Collation":"A","Column_name":"state","Comment":"","Ignored":"NO","Index_comment":"","Index_type":"BTREE","Key_name":"state","Non_unique":1,"Null":"","Packed":null,"Seq_in_index":1,"Sub_part":null,"Table":"xf_newfi_event"},{"Cardinality":0,"Collation":"A","Column_name":"fingerprint","Comment":"","Ignored":"NO","Index_comment":"","Index_type":"BTREE","Key_name":"fingerprint","Non_unique":1,"Null":"","Packed":null,"Seq_in_index":1,"Sub_part":null,"Table":"xf_newfi_event"}]},"xf_newfi_event_change":{"columns":[{"Collation":null,"Comment":"","Default":null,"Extra":"auto_increment","Field":"event_change_id","Key":"PRI","Null":"NO","Privileges":"select,insert,update,references","Type":"int(10) unsigned"},{"Collation":null,"Comment":"","Default":null,"Extra":"","Field":"event_id","Key":"MUL","Null":"NO","Privileges":"select,insert,update,references","Type":"int(10) unsigned"},{"Collation":null,"Comment":"","Default":null,"Extra":"","Field":"changed_at","Key":"","Null":"NO","Privileges":"select,insert,update,references","Type":"int(10) unsigned"},{"Collation":"utf8mb4_general_ci","Comment":"","Default":null,"Extra":"","Field":"change_note","Key":"","Null":"NO","Privileges":"select,insert,update,references","Type":"text"}],"create":"CREATE TABLE `xf_newfi_event_change` (\n  `event_change_id` int(10) unsigned NOT NULL AUTO_INCREMENT,\n  `event_id` int(10) unsigned NOT NULL,\n  `changed_at` int(10) unsigned NOT NULL,\n  `change_note` text NOT NULL,\n  PRIMARY KEY (`event_change_id`),\n  KEY `event_id` (`event_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci","indexes":[{"Cardinality":0,"Collation":"A","Column_name":"event_change_id","Comment":"","Ignored":"NO","Index_comment":"","Index_type":"BTREE","Key_name":"PRIMARY","Non_unique":0,"Null":"","Packed":null,"Seq_in_index":1,"Sub_part":null,"Table":"xf_newfi_event_change"},{"Cardinality":0,"Collation":"A","Column_name":"event_id","Comment":"","Ignored":"NO","Index_comment":"","Index_type":"BTREE","Key_name":"event_id","Non_unique":1,"Null":"","Packed":null,"Seq_in_index":1,"Sub_part":null,"Table":"xf_newfi_event_change"}]},"xf_newfi_event_source":{"columns":[{"Collation":null,"Comment":"","Default":null,"Extra":"auto_increment","Field":"event_source_id","Key":"PRI","Null":"NO","Privileges":"select,insert,update,references","Type":"int(10) unsigned"},{"Collation":null,"Comment":"","Default":null,"Extra":"","Field":"event_id","Key":"MUL","Null":"NO","Privileges":"select,insert,update,references","Type":"int(10) unsigned"},{"Collation":"utf8mb4_general_ci","Comment":"","Default":null,"Extra":"","Field":"source_url","Key":"","Null":"NO","Privileges":"select,insert,update,references","Type":"varchar(500)"},{"Collation":null,"Comment":"","Default":null,"Extra":"","Field":"checked_at","Key":"","Null":"NO","Privileges":"select,insert,update,references","Type":"int(10) unsigned"}],"create":"CREATE TABLE `xf_newfi_event_source` (\n  `event_source_id` int(10) unsigned NOT NULL AUTO_INCREMENT,\n  `event_id` int(10) unsigned NOT NULL,\n  `source_url` varchar(500) NOT NULL,\n  `checked_at` int(10) unsigned NOT NULL,\n  PRIMARY KEY (`event_source_id`),\n  KEY `event_id` (`event_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci","indexes":[{"Cardinality":0,"Collation":"A","Column_name":"event_source_id","Comment":"","Ignored":"NO","Index_comment":"","Index_type":"BTREE","Key_name":"PRIMARY","Non_unique":0,"Null":"","Packed":null,"Seq_in_index":1,"Sub_part":null,"Table":"xf_newfi_event_source"},{"Cardinality":0,"Collation":"A","Column_name":"event_id","Comment":"","Ignored":"NO","Index_comment":"","Index_type":"BTREE","Key_name":"event_id","Non_unique":1,"Null":"","Packed":null,"Seq_in_index":1,"Sub_part":null,"Table":"xf_newfi_event_source"}]}}}}
NEWFI122R1_PUBLIC={"events_no_slash":{"http":"200","rc":0,"stderr":"","url":"https://newfi.ru/events"},"events_slash":{"http":"200","rc":0,"stderr":"","url":"https://newfi.ru/events/"},"portal":{"http":"200","rc":0,"stderr":"","url":"https://newfi.ru/"}}
NEWFI122R1_SAFE_REPORT={"changes_made":false,"decision":"PASS_EVENTS208_FOUNDATION_UI_AUDIT_CAPTURED","event_counts":{"xf_newfi_event":0,"xf_newfi_event_change":0,"xf_newfi_event_source":0},"event_templates":1,"git_head":"a13361297ba22f9745bb64aac4ed90849242955a","portal_template_sha":"31100610adcf19b8a5df5eac88cc3ea1eed1e642ccd9232be082343af018e669","public":{"events_no_slash":{"http":"200","rc":0,"stderr":"","url":"https://newfi.ru/events"},"events_slash":{"http":"200","rc":0,"stderr":"","url":"https://newfi.ru/events/"},"portal":{"http":"200","rc":0,"stderr":"","url":"https://newfi.ru/"}},"source_files":9}
NEWFI122R1_DECISION=PASS_EVENTS208_FOUNDATION_UI_AUDIT_CAPTURED
NEWFI122R1_NEXT_GATE=DESIGN_EVENTS208_FULL_UI_FROM_EXACT_SCHEMA

OUTPUT_END
CHAT_OUTPUT_END
