diff --git a/runtime/history/NEWFI-260919-NEWFDOM-CONTENT207-PUBLICRCA121R2.json b/runtime/history/NEWFI-260919-NEWFDOM-CONTENT207-PUBLICRCA121R2.json new file mode 100644 index 00000000..0b07590e --- /dev/null +++ b/runtime/history/NEWFI-260919-NEWFDOM-CONTENT207-PUBLICRCA121R2.json @@ -0,0 +1,38 @@ +{ + "schema_version": 1, + "channel": "homelab-runtime", + "command_id": "NEWFI-260919-NEWFDOM-CONTENT207-PUBLICRCA121R2", + "status": "OK", + "rc": 0, + "host": "pve01", + "mode": "read-only", + "component": "newfi-newfdom-content207-public-render-cache-xfrm-rca-readonly-r2-json-path-fix", + "started_at_utc": "2026-09-18T23:36:14Z", + "finished_at_utc": "2026-09-18T23:36:18Z", + "reference_register_checked": true, + "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", + "error_register_checked": true, + "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", + "command_sha256": "f739271047bc428da5abe24a53be462939138a138271b84da73622a3e4f2f144", + "duplicate_failed_command_blocked": false, + "block_reason": null, + "execution_started": true, + "change_declared": false, + "result_contract_valid": true, + "result_contract_status": null, + "result_contract_error": null, + "command_rc": 0, + "changes_made": false, + "rollback_started": false, + "rollback_restored": null, + "mutation_outcome": "NO_MUTATION", + "sanitized": true, + "secrets_included": false, + "private_addresses_included": false, + "raw_evidence_retained_locally": true, + "raw_evidence_sha256": "e955eca9162212fb2b13fae31531a7512463b8c34a9bb61d9f127bdfb83d81a7", + "sanitized_output_sha256": "e955eca9162212fb2b13fae31531a7512463b8c34a9bb61d9f127bdfb83d81a7", + "output_truncated_in_json": false, + "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", + "output": "NEWFI121R2_BEGIN\nCOMMAND_ID=NEWFI-260919-NEWFDOM-CONTENT207-PUBLICRCA121R2\nNEWFI121R2_GIT={\"branch\":\"implementation/newfi-closed-mvp-20260906\",\"clean\":true,\"head\":\"bcd970b0fa5d0f140aad4a3246773f44409ffe46\",\"remotes\":[{\"head\":\"bcd970b0fa5d0f140aad4a3246773f44409ffe46\",\"remote\":\"origin\"}]}\nNEWFI121R2_STAGING={\"_qga_transport\":\"stdin\",\"http_probes\":{},\"ok\":true,\"role\":\"staging\",\"source_scans\":[{\"matches\":[{\"line\":73,\"text\":\"\"},{\"line\":74,\"text\":\"\\t\\t$listParams = $overviewPlugin->getCoreListData($viewableCategoryIds);\"},{\"line\":75,\"text\":\"\"},{\"line\":76,\"text\":\"\\t\\t$this->assertValidPage($listParams['page'], $listParams['perPage'], $listParams['total'], 'resources');\"},{\"line\":77,\"text\":\"\\t\\t$this->assertCanonicalUrl($this->buildPaginatedLink('resources', null, $listParams['page']));\"},{\"line\":78,\"text\":\"\"},{\"line\":79,\"text\":\"\\t\\t$viewParams = $categoryParams + $listParams;\"},{\"line\":80,\"text\":\"\"},{\"line\":81,\"text\":\"\\t\\treturn $this->view('XFRM:Overview', 'xfrm_overview', $viewParams);\"},{\"line\":82,\"text\":\"\\t}\"},{\"line\":83,\"text\":\"\"},{\"line\":84,\"text\":\"\\tpublic function actionFilters()\"},{\"line\":85,\"text\":\"\\t{\"},{\"line\":86,\"text\":\"\\t\\t/** @var Overview $overviewPlugin */\"},{\"line\":87,\"text\":\"\\t\\t$overviewPlugin = $this->plugin('XFRM:Overview');\"},{\"line\":112,\"text\":\"\\t\\t$this->assertValidPage($page, $perPage, $total, 'resources/latest-reviews');\"},{\"line\":113,\"text\":\"\\t\\t$this->assertCanonicalUrl($this->buildPaginatedLink('resources/latest-reviews', null, $page));\"},{\"line\":114,\"text\":\"\"},{\"line\":115,\"text\":\"\\t\\t$reviews = $finder->limitByPage($page, $perPage)->fetch();\"},{\"line\":116,\"text\":\"\\t\\t$reviews = $reviews->filterViewable();\"},{\"line\":117,\"text\":\"\"},{\"line\":118,\"text\":\"\\t\\t$viewParams = [\"},{\"line\":119,\"text\":\"\\t\\t\\t'reviews' => $reviews,\"},{\"line\":120,\"text\":\"\\t\\t\\t'page' => $page,\"},{\"line\":121,\"text\":\"\\t\\t\\t'perPage' => $perPage,\"},{\"line\":122,\"text\":\"\\t\\t\\t'total' => $total,\"},{\"line\":123,\"text\":\"\\t\\t];\"},{\"line\":124,\"text\":\"\\t\\treturn $this->view('XFRM:LatestReviews', 'xfrm_latest_reviews', $viewParams);\"},{\"line\":125,\"text\":\"\\t}\"},{\"line\":126,\"text\":\"\"},{\"line\":127,\"text\":\"\\tpublic function actionAdd()\"},{\"line\":128,\"text\":\"\\t{\"},{\"line\":129,\"text\":\"\\t\\t/** @var User $visitor */\"},{\"line\":130,\"text\":\"\\t\\t$visitor = \\\\XF::visitor();\"},{\"line\":169,\"text\":\"\"},{\"line\":170,\"text\":\"\\t\\t\\treturn false;\"},{\"line\":171,\"text\":\"\\t\\t});\"},{\"line\":172,\"text\":\"\"},{\"line\":173,\"text\":\"\\t\\t$categoryExtras = $categoryRepo->getCategoryListExtras($categoryTree);\"},{\"line\":174,\"text\":\"\"},{\"line\":175,\"text\":\"\\t\\t$viewParams = [\"},{\"line\":176,\"text\":\"\\t\\t\\t'categoryTree' => $categoryTree,\"},{\"line\":177,\"text\":\"\\t\\t\\t'categoryExtras' => $categoryExtras,\"},{\"line\":178,\"text\":\"\\t\\t];\"},{\"line\":179,\"text\":\"\\t\\treturn $this->view('XFRM:ResourceItem\\\\AddChooser', 'xfrm_resource_add_chooser', $viewParams);\"},{\"line\":180,\"text\":\"\\t}\"},{\"line\":181,\"text\":\"\"},{\"line\":182,\"text\":\"\\tpublic function actionView(ParameterBag $params)\"},{\"line\":183,\"text\":\"\\t{\"},{\"line\":184,\"text\":\"\\t\\t$this->assertNotEmbeddedImageRequest();\"},{\"line\":185,\"text\":\"\"},{\"line\":186,\"text\":\"\\t\\t$resource = $this->assertViewableResource($params->resource_id, $this->getResourceViewExtraWith());\"},{\"line\":187,\"text\":\"\"},{\"line\":188,\"text\":\"\\t\\t$this->assertCanonicalUrl($this->buildLink('resources', $resource));\"},{\"line\":231,\"text\":\"\\t\\t}\"},{\"line\":232,\"text\":\"\\t\\telse\"},{\"line\":233,\"text\":\"\\t\\t{\"},{\"line\":234,\"text\":\"\\t\\t\\t$authorOthers = $this->em()->getEmptyCollection();\"},{\"line\":235,\"text\":\"\\t\\t}\"},{\"line\":236,\"text\":\"\"},{\"line\":237,\"text\":\"\\t\\t$trimmedDescription = null;\"},{\"line\":238,\"text\":\"\"},{\"line\":239,\"text\":\"\\t\\tif (!$resource->canViewFullDescription())\"},{\"line\":240,\"text\":\"\\t\\t{\"},{\"line\":241,\"text\":\"\\t\\t\\t$snippet = $this->app->stringFormatter()->wholeWordTrim(\"},{\"line\":242,\"text\":\"\\t\\t\\t\\t$resource->Description->message,\"},{\"line\":243,\"text\":\"\\t\\t\\t\\t$this->options()->xfrmFilelessViewFull['length']\"},{\"line\":244,\"text\":\"\\t\\t\\t);\"},{\"line\":245,\"text\":\"\\t\\t\\tif (strlen($snippet) < strlen($resource->Description->message))\"},{\"line\":246,\"text\":\"\\t\\t\\t{\"},{\"line\":247,\"text\":\"\\t\\t\\t\\t// just cleaning BB code, so not passing the content\"},{\"line\":248,\"text\":\"\\t\\t\\t\\t$trimmedDescription = $this->app->bbCode()->render($snippet, 'bbCodeClean', 'resource_update', null);\"},{\"line\":249,\"text\":\"\\t\\t\\t}\"},{\"line\":250,\"text\":\"\\t\\t}\"},{\"line\":251,\"text\":\"\"},{\"line\":252,\"text\":\"\\t\\tif ($this->isContentViewCounted())\"},{\"line\":253,\"text\":\"\\t\\t{\"},{\"line\":254,\"text\":\"\\t\\t\\t$this->repository('XFRM:ResourceItem')->logResourceView($resource);\"},{\"line\":255,\"text\":\"\\t\\t}\"},{\"line\":256,\"text\":\"\"},{\"line\":257,\"text\":\"\\t\\t$shownUpdateIds = $latestUpdates->keys();\"},{\"line\":258,\"text\":\"\\t\\t$shownUpdateIds[] = $resource->description_update_id;\"},{\"line\":259,\"text\":\"\"},{\"line\":260,\"text\":\"\\t\\t/** @var UserAlert $userAlertRepo */\"},{\"line\":261,\"text\":\"\\t\\t$userAlertRepo = $this->repository('XF:UserAlert');\"},{\"line\":262,\"text\":\"\\t\\t$userAlertRepo->markUserAlertsReadForContent('resource_update', $shownUpdateIds);\"},{\"line\":263,\"text\":\"\\t\\t$userAlertRepo->markUserAlertsReadForContent('resource', $resource->resource_id);\"},{\"line\":264,\"text\":\"\"},{\"line\":265,\"text\":\"\\t\\t$description = $resource->Description;\"},{\"line\":266,\"text\":\"\"},{\"line\":267,\"text\":\"\\t\\t/** @var EmbedResolver $embedRepo */\"},{\"line\":268,\"text\":\"\\t\\t$embedRepo = $this->repository('XF:EmbedResolver');\"},{\"line\":269,\"text\":\"\\t\\t$embedRepo->addEmbedsToContent([$description]);\"},{\"line\":270,\"text\":\"\"},{\"line\":271,\"text\":\"\\t\\t$viewParams = [\"},{\"line\":272,\"text\":\"\\t\\t\\t'resource' => $resource,\"},{\"line\":273,\"text\":\"\\t\\t\\t'category' => $resource->Category,\"},{\"line\":274,\"text\":\"\\t\\t\\t'description' => $description,\"},{\"line\":275,\"text\":\"\\t\\t\\t'trimmedDescription' => $trimmedDescription,\"},{\"line\":276,\"text\":\"\\t\\t\\t'latestUpdates' => $latestUpdates,\"},{\"line\":277,\"text\":\"\\t\\t\\t'latestReviews' => $latestReviews,\"},{\"line\":278,\"text\":\"\\t\\t\\t'teamMembers' => $teamMembers,\"},{\"line\":279,\"text\":\"\\t\\t\\t'authorOthers' => $authorOthers,\"},{\"line\":280,\"text\":\"\\t\\t\\t'iconError' => $this->filter('icon_error', 'bool'),\"},{\"line\":281,\"text\":\"\\t\\t];\"},{\"line\":282,\"text\":\"\\t\\treturn $this->view('XFRM:ResourceItem\\\\View', 'xfrm_resource_view', $viewParams);\"},{\"line\":283,\"text\":\"\\t}\"},{\"line\":284,\"text\":\"\"},{\"line\":285,\"text\":\"\\tprotected function getResourceViewExtraWith()\"},{\"line\":286,\"text\":\"\\t{\"},{\"line\":287,\"text\":\"\\t\\t$extraWith = [];\"},{\"line\":288,\"text\":\"\\t\\t$userId = \\\\XF::visitor()->user_id;\"},{\"line\":289,\"text\":\"\\t\\tif ($userId)\"},{\"line\":290,\"text\":\"\\t\\t{\"},{\"line\":291,\"text\":\"\\t\\t\\t$extraWith[] = 'Watch|' . $userId;\"},{\"line\":292,\"text\":\"\\t\\t\\t$extraWith[] = 'CurrentVersion.Downloads|' . $userId;\"},{\"line\":293,\"text\":\"\\t\\t\\t$extraWith[] = 'Description.Reactions|' . $userId;\"},{\"line\":294,\"text\":\"\\t\\t}\"},{\"line\":295,\"text\":\"\"},{\"line\":296,\"text\":\"\\t\\treturn $extraWith;\"},{\"line\":297,\"text\":\"\\t}\"},{\"line\":298,\"text\":\"\"},{\"line\":299,\"text\":\"\\tpublic function actionExtra(ParameterBag $params)\"},{\"line\":301,\"text\":\"\\t\\t$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":302,\"text\":\"\\t\\tif (!$resource->hasExtraInfoTab())\"},{\"line\":303,\"text\":\"\\t\\t{\"},{\"line\":304,\"text\":\"\\t\\t\\treturn $this->redirect($this->buildLink('resources', $resource));\"},{\"line\":305,\"text\":\"\\t\\t}\"},{\"line\":306,\"text\":\"\"},{\"line\":307,\"text\":\"\\t\\t$viewParams = [\"},{\"line\":308,\"text\":\"\\t\\t\\t'resource' => $resource,\"},{\"line\":309,\"text\":\"\\t\\t\\t'category' => $resource->Category,\"},{\"line\":310,\"text\":\"\\t\\t];\"},{\"line\":311,\"text\":\"\\t\\treturn $this->view('XFRM:ResourceItem\\\\Extra', 'xfrm_resource_extra', $viewParams);\"},{\"line\":312,\"text\":\"\\t}\"},{\"line\":313,\"text\":\"\"},{\"line\":314,\"text\":\"\\tpublic function actionField(ParameterBag $params)\"},{\"line\":315,\"text\":\"\\t{\"},{\"line\":316,\"text\":\"\\t\\t$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":317,\"text\":\"\"},{\"line\":325,\"text\":\"\"},{\"line\":326,\"text\":\"\\t\\t/** @var Set $fieldSet */\"},{\"line\":327,\"text\":\"\\t\\t$fieldSet = $resource->custom_fields;\"},{\"line\":328,\"text\":\"\\t\\t$definition = $fieldSet->getDefinition($fieldId);\"},{\"line\":329,\"text\":\"\\t\\t$fieldValue = $fieldSet->getFieldValue($fieldId);\"},{\"line\":330,\"text\":\"\"},{\"line\":331,\"text\":\"\\t\\t$viewParams = [\"},{\"line\":332,\"text\":\"\\t\\t\\t'resource' => $resource,\"},{\"line\":333,\"text\":\"\\t\\t\\t'category' => $resource->Category,\"},{\"line\":334,\"text\":\"\"},{\"line\":335,\"text\":\"\\t\\t\\t'fieldId' => $fieldId,\"},{\"line\":336,\"text\":\"\\t\\t\\t'fieldDefinition' => $definition,\"},{\"line\":337,\"text\":\"\\t\\t\\t'fieldValue' => $fieldValue,\"},{\"line\":338,\"text\":\"\\t\\t];\"},{\"line\":339,\"text\":\"\\t\\treturn $this->view('XFRM:ResourceItem\\\\Field', 'xfrm_resource_field', $viewParams);\"},{\"line\":340,\"text\":\"\\t}\"},{\"line\":341,\"text\":\"\"},{\"line\":342,\"text\":\"\\tpublic function actionUpdates(ParameterBag $params)\"},{\"line\":343,\"text\":\"\\t{\"},{\"line\":344,\"text\":\"\\t\\t$this->assertNotEmbeddedImageRequest();\"}],\"path\":\"src/addons/XFRM/Pub/Controller/ResourceItem.php\",\"present\":true,\"sha256\":\"78aaaaaf3ad95aedde7b4a1e4d8ec026b9a305dd4a2a23172d28a756244b9f67\"},{\"matches\":[{\"line\":48,\"text\":\" * @property array $team_member_user_ids\"},{\"line\":49,\"text\":\" * @property string $resource_state\"},{\"line\":50,\"text\":\" * @property string $resource_type\"},{\"line\":51,\"text\":\" * @property int $resource_date\"},{\"line\":52,\"text\":\" * @property int $resource_category_id\"},{\"line\":53,\"text\":\" * @property int $current_version_id\"},{\"line\":54,\"text\":\" * @property int $description_update_id\"},{\"line\":55,\"text\":\" * @property int $discussion_thread_id\"},{\"line\":56,\"text\":\" * @property string $external_url\"},{\"line\":57,\"text\":\" * @property string $external_url_\"},{\"line\":58,\"text\":\" * @property string $external_purchase_url\"},{\"line\":59,\"text\":\" * @property string $external_purchase_url_\"},{\"line\":60,\"text\":\" * @property float $price\"},{\"line\":65,\"text\":\" * @property int $rating_sum\"},{\"line\":66,\"text\":\" * @property float $rating_avg\"},{\"line\":67,\"text\":\" * @property float $rating_weighted\"},{\"line\":68,\"text\":\" * @property array|null $rating_split\"},{\"line\":69,\"text\":\" * @property int $update_count\"},{\"line\":70,\"text\":\" * @property int $review_count\"},{\"line\":71,\"text\":\" * @property int $last_update\"},{\"line\":72,\"text\":\" * @property string $alt_support_url\"},{\"line\":73,\"text\":\" * @property string $alt_support_url_\"},{\"line\":74,\"text\":\" * @property array|null $custom_fields_\"},{\"line\":75,\"text\":\" * @property int $prefix_id\"},{\"line\":76,\"text\":\" * @property int $icon_date\"},{\"line\":77,\"text\":\" * @property bool $icon_optimized\"},{\"line\":89,\"text\":\" * @property-read string|null $cover_image\"},{\"line\":90,\"text\":\" *\"},{\"line\":91,\"text\":\" * RELATIONS\"},{\"line\":92,\"text\":\" * @property-read Category|null $Category\"},{\"line\":93,\"text\":\" * @property-read User|null $User\"},{\"line\":94,\"text\":\" * @property-read AbstractCollection $TeamMembers\"},{\"line\":95,\"text\":\" * @property-read ResourceUpdate|null $Description\"},{\"line\":96,\"text\":\" * @property-read ResourceVersion|null $CurrentVersion\"},{\"line\":97,\"text\":\" * @property-read Thread|null $Discussion\"},{\"line\":98,\"text\":\" * @property-read ResourcePrefix|null $Prefix\"},{\"line\":99,\"text\":\" * @property-read AbstractCollection $Watch\"},{\"line\":100,\"text\":\" * @property-read DeletionLog|null $DeletionLog\"},{\"line\":101,\"text\":\" * @property-read ApprovalQueue|null $ApprovalQueue\"},{\"line\":139,\"text\":\"\\t\\t$mainEntity = [\"},{\"line\":140,\"text\":\"\\t\\t\\t'@type' => 'CreativeWork',\"},{\"line\":141,\"text\":\"\\t\\t\\t'@id' => $resourceLink,\"},{\"line\":142,\"text\":\"\\t\\t\\t'headline' => $this->title,\"},{\"line\":143,\"text\":\"\\t\\t\\t'alternativeHeadline' => $this->tag_line,\"},{\"line\":144,\"text\":\"\\t\\t\\t'dateCreated' => gmdate('c', $this->resource_date),\"},{\"line\":145,\"text\":\"\\t\\t\\t'dateModified' => $this->last_update\"},{\"line\":146,\"text\":\"\\t\\t\\t\\t? gmdate('c', $this->last_update)\"},{\"line\":147,\"text\":\"\\t\\t\\t\\t: null,\"},{\"line\":148,\"text\":\"\\t\\t\\t'keywords' => implode(', ', array_column($this->tags, 'tag')),\"},{\"line\":149,\"text\":\"\\t\\t\\t'url' => $resourceLink,\"},{\"line\":150,\"text\":\"\\t\\t\\t'thumbnailUrl' => $options->xfrmAllowIcons && $this->icon_date\"},{\"line\":151,\"text\":\"\\t\\t\\t\\t? $this->getIconUrl('s', true)\"},{\"line\":152,\"text\":\"\\t\\t\\t\\t: null,\"},{\"line\":153,\"text\":\"\\t\\t\\t'version' => $this->isVersioned()\"},{\"line\":154,\"text\":\"\\t\\t\\t\\t? $this->CurrentVersion->version_string\"},{\"line\":155,\"text\":\"\\t\\t\\t\\t: null,\"},{\"line\":156,\"text\":\"\\t\\t\\t'discussionUrl' => $this->hasViewableDiscussion()\"},{\"line\":157,\"text\":\"\\t\\t\\t\\t? $this->Discussion->getContentUrl(true)\"},{\"line\":158,\"text\":\"\\t\\t\\t\\t: null,\"},{\"line\":159,\"text\":\"\\t\\t\\t'description' => $strFormatter->snippetString(\"},{\"line\":160,\"text\":\"\\t\\t\\t\\t$this->Description->message,\"},{\"line\":161,\"text\":\"\\t\\t\\t\\t0,\"},{\"line\":162,\"text\":\"\\t\\t\\t\\t['stripBbCode' => true]\"},{\"line\":163,\"text\":\"\\t\\t\\t),\"},{\"line\":164,\"text\":\"\\t\\t\\t'author' => [\"},{\"line\":165,\"text\":\"\\t\\t\\t\\t'@type' => 'Person',\"},{\"line\":166,\"text\":\"\\t\\t\\t\\t'@id' => $userLink,\"},{\"line\":168,\"text\":\"\\t\\t\\t\\t'url' => $userLink,\"},{\"line\":169,\"text\":\"\\t\\t\\t],\"},{\"line\":170,\"text\":\"\\t\\t\\t'interactionStatistic' => [\"},{\"line\":171,\"text\":\"\\t\\t\\t\\t[\"},{\"line\":172,\"text\":\"\\t\\t\\t\\t\\t'@type' => 'InteractionCounter',\"},{\"line\":173,\"text\":\"\\t\\t\\t\\t\\t'interactionType' => 'https://schema.org/LikeAction',\"},{\"line\":174,\"text\":\"\\t\\t\\t\\t\\t'userInteractionCount' => $this->Description->reaction_score,\"},{\"line\":175,\"text\":\"\\t\\t\\t\\t],\"},{\"line\":176,\"text\":\"\\t\\t\\t\\t[\"},{\"line\":177,\"text\":\"\\t\\t\\t\\t\\t'@type' => 'InteractionCounter',\"},{\"line\":178,\"text\":\"\\t\\t\\t\\t\\t'interactionType' => 'https://schema.org/ViewAction',\"},{\"line\":179,\"text\":\"\\t\\t\\t\\t\\t'userInteractionCount' => $this->view_count,\"},{\"line\":180,\"text\":\"\\t\\t\\t\\t],\"},{\"line\":212,\"text\":\"\\t\\t\\t'url' => $resourceLink,\"},{\"line\":213,\"text\":\"\\t\\t\\t'mainEntity' => $mainEntity,\"},{\"line\":214,\"text\":\"\\t\\t\\t'publisher' => [\"},{\"line\":215,\"text\":\"\\t\\t\\t\\t'@type' => 'Organization',\"},{\"line\":216,\"text\":\"\\t\\t\\t\\t'name' => $options->boardTitle,\"},{\"line\":217,\"text\":\"\\t\\t\\t\\t'alternateName' => $options->boardShortTitle ?: null,\"},{\"line\":218,\"text\":\"\\t\\t\\t\\t'description' => $options->boardDescription ?: null,\"},{\"line\":219,\"text\":\"\\t\\t\\t\\t'url' => $options->boardUrl,\"},{\"line\":220,\"text\":\"\\t\\t\\t\\t'logo' => $logo,\"},{\"line\":221,\"text\":\"\\t\\t\\t],\"},{\"line\":222,\"text\":\"\\t\\t];\"},{\"line\":223,\"text\":\"\"},{\"line\":224,\"text\":\"\\t\\treturn Arr::filterNull($structuredData, true);\"},{\"line\":314,\"text\":\"\"},{\"line\":315,\"text\":\"\\tpublic function canDownload(&$error = null)\"},{\"line\":316,\"text\":\"\\t{\"},{\"line\":317,\"text\":\"\\t\\treturn $this->hasPermission('download') || $this->isTeamMember();\"},{\"line\":318,\"text\":\"\\t}\"},{\"line\":319,\"text\":\"\"},{\"line\":320,\"text\":\"\\tpublic function canViewFullDescription()\"},{\"line\":321,\"text\":\"\\t{\"},{\"line\":322,\"text\":\"\\t\\tif ($this->resource_type != 'fileless')\"},{\"line\":323,\"text\":\"\\t\\t{\"},{\"line\":324,\"text\":\"\\t\\t\\treturn true;\"},{\"line\":325,\"text\":\"\\t\\t}\"},{\"line\":326,\"text\":\"\"},{\"line\":953,\"text\":\"\\t{\"},{\"line\":954,\"text\":\"\\t\\tif (!$teamUser)\"},{\"line\":955,\"text\":\"\\t\\t{\"},{\"line\":956,\"text\":\"\\t\\t\\t$teamUser = \\\\XF::visitor();\"},{\"line\":957,\"text\":\"\\t\\t}\"},{\"line\":958,\"text\":\"\"},{\"line\":959,\"text\":\"\\t\\t$update = $this->_em->create('XFRM:ResourceUpdate');\"},{\"line\":960,\"text\":\"\"},{\"line\":961,\"text\":\"\\t\\t$update->resource_id = $this->_getDeferredValue(function ()\"},{\"line\":962,\"text\":\"\\t\\t{\"},{\"line\":963,\"text\":\"\\t\\t\\treturn $this->resource_id;\"},{\"line\":964,\"text\":\"\\t\\t}, 'save');\"},{\"line\":965,\"text\":\"\"},{\"line\":996,\"text\":\"\\t{\"},{\"line\":997,\"text\":\"\\t\\treturn Draft::createFromEntity($this, 'DraftUpdates');\"},{\"line\":998,\"text\":\"\\t}\"},{\"line\":999,\"text\":\"\"},{\"line\":1000,\"text\":\"\\tpublic function getCoverImage(): ?string\"},{\"line\":1001,\"text\":\"\\t{\"},{\"line\":1002,\"text\":\"\\t\\t$description = $this->Description;\"},{\"line\":1003,\"text\":\"\\t\\tif (!$description)\"},{\"line\":1004,\"text\":\"\\t\\t{\"},{\"line\":1005,\"text\":\"\\t\\t\\treturn null;\"},{\"line\":1006,\"text\":\"\\t\\t}\"},{\"line\":1007,\"text\":\"\"},{\"line\":1008,\"text\":\"\\t\\t$attachments = $description->attach_count\"},{\"line\":1009,\"text\":\"\\t\\t\\t? $description->Attachments\"},{\"line\":1010,\"text\":\"\\t\\t\\t: $this->_em->getEmptyCollection();\"},{\"line\":1011,\"text\":\"\"},{\"line\":1012,\"text\":\"\\t\\treturn $this->getCoverImageInternal(\"},{\"line\":1013,\"text\":\"\\t\\t\\t$attachments,\"},{\"line\":1014,\"text\":\"\\t\\t\\t$this->canViewUpdateImages(),\"},{\"line\":1015,\"text\":\"\\t\\t\\t$description->embed_metadata,\"},{\"line\":1016,\"text\":\"\\t\\t\\t$description->message\"},{\"line\":1017,\"text\":\"\\t\\t);\"},{\"line\":1018,\"text\":\"\\t}\"},{\"line\":1019,\"text\":\"\"},{\"line\":1020,\"text\":\"\\tpublic function getFieldEditMode()\"},{\"line\":1021,\"text\":\"\\t{\"},{\"line\":1022,\"text\":\"\\t\\t$visitor = \\\\XF::visitor();\"},{\"line\":1055,\"text\":\"\\t\\tif (!$this->canViewDeletedContent() && !$this->canViewModeratedContent())\"},{\"line\":1056,\"text\":\"\\t\\t{\"},{\"line\":1057,\"text\":\"\\t\\t\\treturn $this->update_count;\"},{\"line\":1058,\"text\":\"\\t\\t}\"},{\"line\":1059,\"text\":\"\\t\\telse\"},{\"line\":1060,\"text\":\"\\t\\t{\"},{\"line\":1061,\"text\":\"\\t\\t\\t/** @var \\\\XFRM\\\\Repository\\\\ResourceUpdate $updateRepo */\"},{\"line\":1062,\"text\":\"\\t\\t\\t$updateRepo = $this->repository('XFRM:ResourceUpdate');\"},{\"line\":1063,\"text\":\"\\t\\t\\treturn $updateRepo->findUpdatesInResource($this)->total();\"},{\"line\":1064,\"text\":\"\\t\\t}\"},{\"line\":1065,\"text\":\"\\t}\"},{\"line\":1066,\"text\":\"\"},{\"line\":1067,\"text\":\"\\t/**\"},{\"line\":1068,\"text\":\"\\t * @return int\"}],\"path\":\"src/addons/XFRM/Entity/ResourceItem.php\",\"present\":true,\"sha256\":\"703773471dd35c876a0fed578a60dfc51e1dafc9520ad1493282b50fd9e05262\"},{\"matches\":[{\"line\":21,\"text\":\"use XF\\\\Mvc\\\\Entity\\\\Structure;\"},{\"line\":22,\"text\":\"use XF\\\\Repository\\\\UserAlert;\"},{\"line\":23,\"text\":\"use XF\\\\Spam\\\\ContentChecker;\"},{\"line\":24,\"text\":\"\"},{\"line\":25,\"text\":\"/**\"},{\"line\":26,\"text\":\" * COLUMNS\"},{\"line\":27,\"text\":\" * @property int|null $resource_update_id\"},{\"line\":28,\"text\":\" * @property int $resource_id\"},{\"line\":29,\"text\":\" * @property int $team_user_id\"},{\"line\":30,\"text\":\" * @property string $team_username\"},{\"line\":31,\"text\":\" * @property string $title\"},{\"line\":32,\"text\":\" * @property string $title_\"},{\"line\":33,\"text\":\" * @property string $message\"},{\"line\":34,\"text\":\" * @property string $message_state\"},{\"line\":35,\"text\":\" * @property int $post_date\"},{\"line\":36,\"text\":\" * @property int $attach_count\"},{\"line\":37,\"text\":\" * @property int $ip_id\"},{\"line\":38,\"text\":\" * @property int $warning_id\"},{\"line\":39,\"text\":\" * @property string $warning_message\"},{\"line\":40,\"text\":\" * @property int $last_edit_date\"},{\"line\":41,\"text\":\" * @property int $last_edit_user_id\"},{\"line\":42,\"text\":\" * @property int $edit_count\"},{\"line\":43,\"text\":\" * @property array|null $embed_metadata\"},{\"line\":44,\"text\":\" * @property int $reaction_score\"},{\"line\":45,\"text\":\" * @property array|null $reactions_\"},{\"line\":46,\"text\":\" * @property array|null $reaction_users_\"},{\"line\":47,\"text\":\" *\"},{\"line\":48,\"text\":\" * GETTERS\"},{\"line\":49,\"text\":\" * @property-read string $resource_title\"},{\"line\":50,\"text\":\" * @property mixed $reactions\"},{\"line\":51,\"text\":\" * @property mixed $reaction_users\"},{\"line\":52,\"text\":\" * @property-read array $Embeds\"},{\"line\":53,\"text\":\" *\"},{\"line\":54,\"text\":\" * RELATIONS\"},{\"line\":55,\"text\":\" * @property-read ResourceItem|null $Resource\"},{\"line\":56,\"text\":\" * @property-read User|null $TeamUser\"},{\"line\":57,\"text\":\" * @property-read AbstractCollection $Attachments\"},{\"line\":58,\"text\":\" * @property-read DeletionLog|null $DeletionLog\"},{\"line\":59,\"text\":\" * @property-read ApprovalQueue|null $ApprovalQueue\"},{\"line\":60,\"text\":\" * @property-read AbstractCollection $Reactions\"},{\"line\":61,\"text\":\" * @property-read AbstractCollection $Bookmarks\"},{\"line\":62,\"text\":\" */\"},{\"line\":63,\"text\":\"class ResourceUpdate extends Entity implements RenderableContentInterface, LinkableInterface, ViewableInterface\"},{\"line\":64,\"text\":\"{\"},{\"line\":65,\"text\":\"\\tuse BookmarkTrait;\"},{\"line\":66,\"text\":\"\\tuse EmbedRendererTrait;\"},{\"line\":67,\"text\":\"\\tuse EmbedResolverTrait;\"},{\"line\":68,\"text\":\"\\tuse ReactionTrait;\"},{\"line\":69,\"text\":\"\"},{\"line\":70,\"text\":\"\\tpublic function canView(&$error = null)\"},{\"line\":71,\"text\":\"\\t{\"},{\"line\":72,\"text\":\"\\t\\t$resource = $this->Resource;\"},{\"line\":73,\"text\":\"\"},{\"line\":74,\"text\":\"\\t\\tif (!$resource || !$resource->canView($error))\"},{\"line\":75,\"text\":\"\\t\\t{\"},{\"line\":76,\"text\":\"\\t\\t\\treturn false;\"},{\"line\":77,\"text\":\"\\t\\t}\"},{\"line\":78,\"text\":\"\"},{\"line\":79,\"text\":\"\\t\\t$visitor = \\\\XF::visitor();\"},{\"line\":80,\"text\":\"\"},{\"line\":81,\"text\":\"\\t\\tif ($this->message_state == 'moderated')\"},{\"line\":82,\"text\":\"\\t\\t{\"},{\"line\":83,\"text\":\"\\t\\t\\tif (\"},{\"line\":84,\"text\":\"\\t\\t\\t\\t!$resource->hasPermission('viewModerated')\"},{\"line\":85,\"text\":\"\\t\\t\\t\\t&& (!$visitor->user_id || !$resource->isTeamMember())\"},{\"line\":86,\"text\":\"\\t\\t\\t)\"},{\"line\":87,\"text\":\"\\t\\t\\t{\"},{\"line\":88,\"text\":\"\\t\\t\\t\\treturn false;\"},{\"line\":89,\"text\":\"\\t\\t\\t}\"},{\"line\":90,\"text\":\"\\t\\t}\"},{\"line\":91,\"text\":\"\\t\\telse if ($this->message_state == 'deleted')\"},{\"line\":92,\"text\":\"\\t\\t{\"},{\"line\":93,\"text\":\"\\t\\t\\tif (!$resource->hasPermission('viewDeleted'))\"},{\"line\":94,\"text\":\"\\t\\t\\t{\"},{\"line\":95,\"text\":\"\\t\\t\\t\\treturn false;\"},{\"line\":96,\"text\":\"\\t\\t\\t}\"},{\"line\":97,\"text\":\"\\t\\t}\"},{\"line\":98,\"text\":\"\"},{\"line\":99,\"text\":\"\\t\\treturn true;\"},{\"line\":100,\"text\":\"\\t}\"},{\"line\":101,\"text\":\"\"},{\"line\":102,\"text\":\"\\tpublic function canEdit(&$error = null)\"},{\"line\":103,\"text\":\"\\t{\"},{\"line\":104,\"text\":\"\\t\\t$visitor = \\\\XF::visitor();\"},{\"line\":105,\"text\":\"\\t\\t$resource = $this->Resource;\"},{\"line\":106,\"text\":\"\"},{\"line\":107,\"text\":\"\\t\\tif (!$visitor->user_id || !$resource)\"},{\"line\":108,\"text\":\"\\t\\t{\"},{\"line\":109,\"text\":\"\\t\\t\\treturn false;\"},{\"line\":110,\"text\":\"\\t\\t}\"},{\"line\":111,\"text\":\"\"},{\"line\":112,\"text\":\"\\t\\treturn $resource->canEdit($error);\"},{\"line\":113,\"text\":\"\\t}\"},{\"line\":114,\"text\":\"\"},{\"line\":115,\"text\":\"\\tpublic function canViewHistory(&$error = null): bool\"},{\"line\":116,\"text\":\"\\t{\"},{\"line\":117,\"text\":\"\\t\\t$visitor = \\\\XF::visitor();\"},{\"line\":118,\"text\":\"\\t\\tif (!$visitor->user_id)\"},{\"line\":122,\"text\":\"\"},{\"line\":123,\"text\":\"\\t\\tif (!$this->app()->options()->editHistory['enabled'])\"},{\"line\":124,\"text\":\"\\t\\t{\"},{\"line\":125,\"text\":\"\\t\\t\\treturn false;\"},{\"line\":126,\"text\":\"\\t\\t}\"},{\"line\":127,\"text\":\"\"},{\"line\":128,\"text\":\"\\t\\tif ($this->Resource && $this->Resource->hasPermission('editAny'))\"},{\"line\":129,\"text\":\"\\t\\t{\"},{\"line\":130,\"text\":\"\\t\\t\\treturn true;\"},{\"line\":131,\"text\":\"\\t\\t}\"},{\"line\":132,\"text\":\"\"},{\"line\":133,\"text\":\"\\t\\treturn false;\"},{\"line\":134,\"text\":\"\\t}\"},{\"line\":135,\"text\":\"\"},{\"line\":136,\"text\":\"\\tpublic function canDelete($type = 'soft', &$error = null)\"},{\"line\":137,\"text\":\"\\t{\"},{\"line\":138,\"text\":\"\\t\\t$visitor = \\\\XF::visitor();\"},{\"line\":139,\"text\":\"\\t\\t$resource = $this->Resource;\"},{\"line\":140,\"text\":\"\"},{\"line\":141,\"text\":\"\\t\\tif ($this->isDescription() || !$visitor->user_id || !$resource)\"},{\"line\":142,\"text\":\"\\t\\t{\"},{\"line\":143,\"text\":\"\\t\\t\\treturn false;\"},{\"line\":144,\"text\":\"\\t\\t}\"},{\"line\":145,\"text\":\"\"},{\"line\":146,\"text\":\"\\t\\tif ($type != 'soft')\"},{\"line\":147,\"text\":\"\\t\\t{\"},{\"line\":148,\"text\":\"\\t\\t\\treturn $resource->hasPermission('hardDeleteAny');\"},{\"line\":149,\"text\":\"\\t\\t}\"},{\"line\":150,\"text\":\"\"},{\"line\":151,\"text\":\"\\t\\tif ($resource->hasPermission('deleteAny'))\"},{\"line\":152,\"text\":\"\\t\\t{\"},{\"line\":153,\"text\":\"\\t\\t\\treturn true;\"},{\"line\":154,\"text\":\"\\t\\t}\"},{\"line\":155,\"text\":\"\"},{\"line\":156,\"text\":\"\\t\\tif (\"},{\"line\":157,\"text\":\"\\t\\t\\t$resource->isTeamMember()\"},{\"line\":158,\"text\":\"\\t\\t\\t&& $this->team_user_id == $visitor->user_id\"},{\"line\":159,\"text\":\"\\t\\t)\"},{\"line\":160,\"text\":\"\\t\\t{\"},{\"line\":161,\"text\":\"\\t\\t\\treturn $resource->hasPermission('updateOwn');\"},{\"line\":162,\"text\":\"\\t\\t}\"},{\"line\":163,\"text\":\"\"},{\"line\":164,\"text\":\"\\t\\treturn (\"},{\"line\":165,\"text\":\"\\t\\t\\t$resource->user_id == $visitor->user_id\"},{\"line\":166,\"text\":\"\\t\\t\\t&& $resource->hasPermission('updateOwn')\"},{\"line\":167,\"text\":\"\\t\\t);\"},{\"line\":168,\"text\":\"\\t}\"},{\"line\":169,\"text\":\"\"},{\"line\":170,\"text\":\"\\tpublic function canUndelete(&$error = null)\"},{\"line\":171,\"text\":\"\\t{\"},{\"line\":172,\"text\":\"\\t\\t$visitor = \\\\XF::visitor();\"},{\"line\":173,\"text\":\"\\t\\t$resource = $this->Resource;\"},{\"line\":174,\"text\":\"\"},{\"line\":175,\"text\":\"\\t\\tif (!$visitor->user_id || !$resource)\"},{\"line\":176,\"text\":\"\\t\\t{\"},{\"line\":177,\"text\":\"\\t\\t\\treturn false;\"},{\"line\":178,\"text\":\"\\t\\t}\"},{\"line\":179,\"text\":\"\"},{\"line\":180,\"text\":\"\\t\\treturn $resource->hasPermission('undelete');\"},{\"line\":181,\"text\":\"\\t}\"},{\"line\":182,\"text\":\"\"},{\"line\":183,\"text\":\"\\tpublic function canSendModeratorActionAlert()\"}],\"path\":\"src/addons/XFRM/Entity/ResourceUpdate.php\",\"present\":true,\"sha256\":\"9e978eeef933f5dd12a66afa34eba873eb0cae8ddb527ea96fcff6b058a9d05f\"}],\"state\":{\"contentindexnow_jobs\":0,\"counts\":{\"drafts\":0,\"resources\":13,\"tag_content\":39,\"tags\":33,\"updates\":13,\"versions\":13},\"error_ids\":[33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55],\"links\":{\"resource\":\"http://newfi-staging.gram1.ru/index.php?resources/n-yufaundlend-chto-vazhno-znat-o-porode.10/\",\"update\":\"http://newfi-staging.gram1.ru/index.php?resources/n-yufaundlend-chto-vazhno-znat-o-porode.10/update/10/\"},\"portal_sha\":\"5e4eae47a54970611a5f08875b2423d69e9bb57d53b3fc888d15d33a52b595ed\",\"resource\":{\"description_update_id\":10,\"last_update\":1789766861,\"resource_id\":10,\"state\":\"visible\",\"title\":\"Ньюфаундленд: что важно знать о породе\",\"type\":\"fileless\"},\"template_hits\":[{\"line\":48,\"text\":\"\\t\\t\\t\\t\",\"title\":\"xfrm_resource_add_chooser\"},{\"line\":50,\"text\":\"\\t\\t\\t\\t\\t\\t{$category.description|raw}\",\"title\":\"xfrm_resource_add_chooser\"},{\"line\":100,\"text\":\"\\t\\t\\t\\t\",\"title\":\"xfrm_resource_add_chooser\"},{\"line\":102,\"text\":\"\\t\\t\\t\\t\\t\\t{$category.description|raw}\",\"title\":\"xfrm_resource_add_chooser\"},{\"line\":52,\"text\":\"\\t\\t\\t\",\"title\":\"xfrm_resource_edit_macros\"},{\"line\":63,\"text\":\"\\t\\t\\t\\thint=\\\"{{ phrase('xfrm_description_will_contain_contents_of_this_resource') }}\\\" />\",\"title\":\"xfrm_resource_edit_macros\"},{\"line\":84,\"text\":\"\",\"title\":\"xfrm_resource_edit_macros\"},{\"line\":86,\"text\":\"\\t\\t\",\"title\":\"xfrm_resource_review_macros\"},{\"line\":9,\"text\":\"\\t
\",\"title\":\"xfrm_resource_review_macros\"},{\"line\":11,\"text\":\"\\t\\t
\",\"title\":\"xfrm_resource_review_macros\"},{\"line\":12,\"text\":\"\\t\\t\\t\",\"title\":\"xfrm_resource_review_macros\"},{\"line\":14,\"text\":\"\\t\\t\\t\\t\\t\",\"title\":\"xfrm_resource_review_macros\"},{\"line\":24,\"text\":\"\\t\\t\\t\\t
\",\"title\":\"xfrm_resource_review_macros\"},{\"line\":25,\"text\":\"\\t\\t\\t\\t\\t
\",\"title\":\"xfrm_resource_review_macros\"},{\"line\":27,\"text\":\"\\t\\t\\t\\t\\t\\t\\t
\",\"title\":\"xfrm_resource_review_macros\"},{\"line\":36,\"text\":\"\\t\\t\\t\\t\\t\\t\\t
  • \",\"title\":\"xfrm_resource_review_macros\"},{\"line\":62,\"text\":\"\\t\\t\\t\\t\\t\\t
    \",\"title\":\"xfrm_resource_review_macros\"},{\"line\":72,\"text\":\"\\t\\t\\t\\t\\t\\targ-wrapperClass=\\\"message-fields message-fields--before\\\" />\",\"title\":\"xfrm_resource_review_macros\"},{\"line\":74,\"text\":\"\\t\\t\\t\\t\\t
    \",\"title\":\"xfrm_resource_review_macros\"},{\"line\":75,\"text\":\"\\t\\t\\t\\t\\t\\t{{ structured_text($review.message) }}\",\"title\":\"xfrm_resource_review_macros\"},{\"line\":83,\"text\":\"\\t\\t\\t\\t\\t\\targ-wrapperClass=\\\"message-fields message-fields--after\\\" />\",\"title\":\"xfrm_resource_review_macros\"},{\"line\":87,\"text\":\"\\t\\t\\t\\t\\t
    \",\"title\":\"xfrm_resource_review_macros\"},{\"line\":169,\"text\":\"\\t\\t\\t\\t\\t
    \",\"title\":\"xfrm_resource_review_macros\"},{\"line\":175,\"text\":\"\\t\\t\\t\\t\\t\\t\\t
    \",\"title\":\"xfrm_resource_review_macros\"},{\"line\":179,\"text\":\"\\t\\t\\t\\t\\t\\t\\t\",\"title\":\"xfrm_resource_review_macros\"},{\"line\":180,\"text\":\"\\t\\t\\t\\t\\t\\t\\t
    \",\"title\":\"xfrm_resource_review_macros\"},{\"line\":183,\"text\":\"\\t\\t\\t\\t\\t\\t\\t\\t\\tdata-message-container=\\\"< .js-messageResponses | .js-replyNewMessageContainer\\\"\",\"title\":\"xfrm_resource_review_macros\"},{\"line\":191,\"text\":\"\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\",\"title\":\"xfrm_resource_review_macros\"},{\"line\":218,\"text\":\"\\t\\t\\t\\t\\t
    \",\"title\":\"xfrm_resource_review_macros\"},{\"line\":234,\"text\":\"\\t
    \",\"title\":\"xfrm_resource_review_macros\"},{\"line\":278,\"text\":\"\\t\\t\\t
    {{ snippet($review.message, 100) }}
    \",\"title\":\"xfrm_resource_review_macros\"},{\"line\":15,\"text\":\"\\t\\t\\t\",\"title\":\"xfrm_resource_update_macros\"},{\"line\":2,\"text\":\"\\t\",\"title\":\"xfrm_resource_update_macros\"},{\"line\":3,\"text\":\"\\t
    \",\"title\":\"xfrm_resource_update_macros\"},{\"line\":4,\"text\":\"\\t\\t\",\"title\":\"xfrm_resource_update_macros\"},{\"line\":5,\"text\":\"\\t\\t
    \",\"title\":\"xfrm_resource_update_macros\"},{\"line\":6,\"text\":\"\\t\\t\\t
    \",\"title\":\"xfrm_resource_update_macros\"},{\"line\":8,\"text\":\"\\t\\t\\t\\t\\t
    \",\"title\":\"xfrm_resource_update_macros\"},{\"line\":9,\"text\":\"\\t\\t\\t\\t\\t\\t
    \",\"title\":\"xfrm_resource_update_macros\"},{\"line\":10,\"text\":\"\\t\\t\\t\\t\\t\\t\\t

    \",\"title\":\"xfrm_resource_update_macros\"},{\"line\":13,\"text\":\"\\t\\t\\t\\t\\t\\t\\t