1
0
Files
homelab-public-context/runtime/latest.json
T
2026-09-18 19:27:28 +00:00

39 lines
143 KiB
JSON

{
"schema_version": 1,
"channel": "homelab-runtime",
"command_id": "NEWFI-260918-NEWFDOM-KB204-AUDIT95",
"status": "OK",
"rc": 0,
"host": "pve01",
"mode": "read-only",
"component": "newfi-newfdom-kb204-xfrm-taxonomy-editorial-contract-audit-readonly",
"started_at_utc": "2026-09-18T19:27:24Z",
"finished_at_utc": "2026-09-18T19:27:28Z",
"reference_register_checked": true,
"reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66",
"error_register_checked": true,
"error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0",
"command_sha256": "8785f2a354ef4d5cab3d5dc4f901a21a579b611ce80b845a568c501bb02168e3",
"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": "6789d0a730d8fcb56a708b3df769f18f8db8820c30f35edade22f93f61f863d9",
"sanitized_output_sha256": "6789d0a730d8fcb56a708b3df769f18f8db8820c30f35edade22f93f61f863d9",
"output_truncated_in_json": false,
"full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
"output": "NEWFI95_BEGIN\nCOMMAND_ID=NEWFI-260918-NEWFDOM-KB204-AUDIT95\nNEWFI95_GIT={\"branch\":\"implementation/newfi-closed-mvp-20260906\",\"clean\":true,\"head\":\"4a7b85eca9c1d6393dbf15f9c9bfa4703072beb0\",\"remote\":\"origin\",\"remote_head\":\"4a7b85eca9c1d6393dbf15f9c9bfa4703072beb0\"}\nNEWFI95_STAGING={\"addons\":[{\"active\":1,\"addon_id\":\"XF\",\"title\":\"XenForo\",\"version_id\":2031270,\"version_string\":\"2.3.12\"},{\"active\":1,\"addon_id\":\"XFRM\",\"title\":\"XenForo Resource Manager\",\"version_id\":2031170,\"version_string\":\"2.3.11\"}],\"boardActive\":\"0\",\"counts\":{\"categories\":1,\"category_fields\":0,\"drafts\":0,\"resource_fields\":0,\"resources\":0},\"errors\":{\"count\":21,\"ids\":[33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53],\"new\":[{\"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/Mys\"}],\"old_fp\":\"e739c2c309539a508e20eba89b0ebc688640ef6ff9f919bbb419b2faad819f80\"},\"hostname\":\"newfi-staging\",\"indexRoute\":\"portal/\",\"options\":[{\"option_id\":\"enableTagging\",\"option_value\":\"0\"},{\"option_id\":\"xfrmAllowAnonReview\",\"option_value\":\"0\"},{\"option_id\":\"xfrmAllowIcons\",\"option_value\":\"1\"},{\"option_id\":\"xfrmAuthorOtherResourcesCount\",\"option_value\":\"5\"},{\"option_id\":\"xfrmEnableTeams\",\"option_value\":\"0\"},{\"option_id\":\"xfrmFilelessViewFull\",\"option_value\":\"{\\\"limit\\\":\\\"1\\\",\\\"length\\\":\\\"250\\\"}\"},{\"option_id\":\"xfrmListDefaultOrder\",\"option_value\":\"last_update\"},{\"option_id\":\"xfrmMinimumReviewLength\",\"option_value\":\"0\"},{\"option_id\":\"xfrmPaidResourceThreadTitleTemplate\",\"option_value\":\"{title} [Paid]\"},{\"option_id\":\"xfrmRecentReviewsCount\",\"option_value\":\"10\"},{\"option_id\":\"xfrmRecentUpdatesCount\",\"option_value\":\"3\"},{\"option_id\":\"xfrmRequireDownloadToRate\",\"option_value\":\"1\"},{\"option_id\":\"xfrmResourceCurrencies\",\"option_value\":\"usd\\ncad\\naud\\ngbp\\neur\"},{\"option_id\":\"xfrmResourceDeleteThreadAction\",\"option_value\":\"{\\\"action\\\":\\\"close\\\",\\\"update_title\\\":\\\"1\\\",\\\"title_template\\\":\\\"{title} [Deleted]\\\",\\\"add_post\\\":\\\"1\\\"}\"},{\"option_id\":\"xfrmResourceExtensions\",\"option_value\":\"zip\\ntxt\\npdf\\npng\\njpg\\njpeg\\njpe\\ngif\\npsd\\ntif\\nwebp\"},{\"option_id\":\"xfrmResourceMaxFileSize\",\"option_value\":\"2048\"},{\"option_id\":\"xfrmResourceMaxFiles\",\"option_value\":\"5\"},{\"option_id\":\"xfrmResourcesPerPage\",\"option_value\":\"20\"},{\"option_id\":\"xfrmReviewRequired\",\"option_value\":\"1\"},{\"option_id\":\"xfrmReviewVoting\",\"option_value\":\"yes\"},{\"option_id\":\"xfrmReviewsPerPage\",\"option_value\":\"20\"},{\"option_id\":\"xfrmUpdateMaxLength\",\"option_value\":\"50000\"},{\"option_id\":\"xfrmUpdatesPerPage\",\"option_value\":\"10\"}],\"rows\":{\"xf_rm_category\":[{\"allow_commercial_external\":1,\"allow_external\":1,\"allow_fileless\":1,\"allow_local\":1,\"always_moderate_create\":0,\"always_moderate_update\":0,\"auto_feature\":0,\"breadcrumb_data\":\"[]\",\"depth\":0,\"description\":\"\",\"display_order\":10,\"enable_support_url\":1,\"enable_versioning\":1,\"featured_count\":0,\"field_cache\":\"\",\"last_resource_id\":0,\"last_resource_title\":\"\",\"last_update\":0,\"lft\":1,\"min_tags\":0,\"parent_category_id\":0,\"prefix_cache\":\"\",\"require_prefix\":0,\"resource_category_id\":1,\"resource_count\":0,\"review_field_cache\":\"\",\"rgt\":2,\"thread_node_id\":0,\"thread_prefix_id\":0,\"title\":\"База знаний\"}],\"xf_rm_category_field\":[],\"xf_rm_category_prefix\":[],\"xf_rm_resource_field\":[],\"xf_rm_resource_prefix\":[]},\"schemas\":{\"xf_draft\":[{\"Default\":null,\"Extra\":\"auto_increment\",\"Field\":\"draft_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"draft_key\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"varbinary(75)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"user_id\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"last_update\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"message\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"mediumtext\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"extra_data\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"mediumblob\"}],\"xf_rm_category\":[{\"Default\":null,\"Extra\":\"auto_increment\",\"Field\":\"resource_category_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"title\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varchar(100)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"description\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"text\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"parent_category_id\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"display_order\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"lft\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"rgt\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"depth\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"smallint(5) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"breadcrumb_data\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"blob\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"resource_count\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"featured_count\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"smallint(5) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"last_update\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"\",\"Extra\":\"\",\"Field\":\"last_resource_title\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varchar(100)\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"last_resource_id\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"field_cache\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"mediumblob\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"review_field_cache\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"mediumblob\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"prefix_cache\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"mediumblob\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"require_prefix\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"thread_node_id\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"thread_prefix_id\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"allow_local\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"allow_external\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"allow_commercial_external\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"allow_fileless\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"always_moderate_create\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"always_moderate_update\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"min_tags\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"smallint(5) unsigned\"},{\"Default\":\"1\",\"Extra\":\"\",\"Field\":\"enable_versioning\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":\"1\",\"Extra\":\"\",\"Field\":\"enable_support_url\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"auto_feature\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"}],\"xf_rm_category_field\":[{\"Default\":null,\"Extra\":\"\",\"Field\":\"field_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"varbinary(25)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"resource_category_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"}],\"xf_rm_category_prefix\":[{\"Default\":null,\"Extra\":\"\",\"Field\":\"resource_category_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"prefix_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"}],\"xf_rm_resource\":[{\"Default\":null,\"Extra\":\"auto_increment\",\"Field\":\"resource_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"\",\"Extra\":\"\",\"Field\":\"title\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varchar(100)\"},{\"Default\":\"\",\"Extra\":\"\",\"Field\":\"tag_line\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varchar(100)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"user_id\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"\",\"Extra\":\"\",\"Field\":\"username\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varchar(100)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"team_member_user_ids\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"blob\"},{\"Default\":\"visible\",\"Extra\":\"\",\"Field\":\"resource_state\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"enum('visible','moderated','deleted')\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"resource_type\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varchar(25)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"resource_date\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"resource_category_id\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"current_version_id\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"description_update_id\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"discussion_thread_id\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"\",\"Extra\":\"\",\"Field\":\"external_url\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varchar(500)\"},{\"Default\":\"\",\"Extra\":\"\",\"Field\":\"external_purchase_url\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varchar(500)\"},{\"Default\":\"0.00\",\"Extra\":\"\",\"Field\":\"price\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"decimal(10,2) unsigned\"},{\"Default\":\"\",\"Extra\":\"\",\"Field\":\"currency\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varchar(3)\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"view_count\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"download_count\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"rating_count\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"rating_sum\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"rating_avg\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"float unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"rating_weighted\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"float unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"rating_split\",\"Key\":\"\",\"Null\":\"YES\",\"Type\":\"blob\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"update_count\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"review_count\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"last_update\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"\",\"Extra\":\"\",\"Field\":\"alt_support_url\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varchar(500)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"custom_fields\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"mediumblob\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"prefix_id\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"icon_date\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"icon_optimized\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"tags\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"mediumblob\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"featured\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"}],\"xf_rm_resource_field\":[{\"Default\":null,\"Extra\":\"\",\"Field\":\"field_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"varbinary(25)\"},{\"Default\":\"above_info\",\"Extra\":\"\",\"Field\":\"display_group\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"varchar(25)\"},{\"Default\":\"1\",\"Extra\":\"\",\"Field\":\"display_order\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"textbox\",\"Extra\":\"\",\"Field\":\"field_type\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varbinary(25)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"field_choices\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"blob\"},{\"Default\":\"none\",\"Extra\":\"\",\"Field\":\"match_type\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varbinary(25)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"match_params\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"blob\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"max_length\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"required\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"display_template\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"text\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"wrapper_template\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"text\"},{\"Default\":\"1\",\"Extra\":\"\",\"Field\":\"viewable_resource\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"}],\"xf_rm_resource_field_value\":[{\"Default\":null,\"Extra\":\"\",\"Field\":\"resource_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"field_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"varbinary(25)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"field_value\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"mediumtext\"}],\"xf_rm_resource_prefix\":[{\"Default\":null,\"Extra\":\"auto_increment\",\"Field\":\"prefix_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"prefix_group_id\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"display_order\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"materialized_order\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"\",\"Extra\":\"\",\"Field\":\"css_class\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varchar(50)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"allowed_user_group_ids\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"blob\"}],\"xf_tag\":[{\"Default\":null,\"Extra\":\"auto_increment\",\"Field\":\"tag_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"tag\",\"Key\":\"UNI\",\"Null\":\"NO\",\"Type\":\"varchar(100)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"tag_url\",\"Key\":\"UNI\",\"Null\":\"NO\",\"Type\":\"varchar(100)\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"use_count\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"last_use_date\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"permanent\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"}],\"xf_tag_content\":[{\"Default\":null,\"Extra\":\"auto_increment\",\"Field\":\"tag_content_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"content_type\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"varbinary(25)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"content_id\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"tag_id\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"add_user_id\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"add_date\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"visible\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"content_date\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"}]},\"source\":{\"abstract_field_entity\":{\"bytes\":13332,\"hits\":[{\"line\":14,\"text\":\"* COLUMNS\"},{\"line\":15,\"text\":\"* @property string $field_id\"},{\"line\":16,\"text\":\"* @property int $display_order\"},{\"line\":17,\"text\":\"* @property string $field_type\"},{\"line\":18,\"text\":\"* @property array $field_choices\"},{\"line\":19,\"text\":\"* @property string $match_type\"},{\"line\":20,\"text\":\"* @property array $match_params\"},{\"line\":21,\"text\":\"* @property int $max_length\"},{\"line\":22,\"text\":\"* @property bool $required\"},{\"line\":24,\"text\":\"* @property string $display_group\"},{\"line\":25,\"text\":\"* @property string $user_editable\"},{\"line\":49,\"text\":\"return static::getPhrasePrefix() . '_' . ($title ? 'title' : 'desc') . '.' . $this->field_id;\"},{\"line\":91,\"text\":\"if (isset($types[$this->field_type]))\"},{\"line\":93,\"text\":\"$type = $types[$this->field_type]['type'];\"},{\"line\":104,\"text\":\"if (!isset($this->field_choices[$choice]))\"},{\"line\":126,\"text\":\"return static::getPhrasePrefix() . '_' . 'choice' . '.' . $this->field_id . '_' . $choice;\"},{\"line\":156,\"text\":\"$this->error(\\\\XF::phrase('please_enter_text_for_each_choice'), 'field_choices');\"},{\"line\":162,\"text\":\"$this->error(\\\\XF::phrase('please_enter_an_id_using_only_alphanumeric'), 'field_choices');\"},{\"line\":289,\"text\":\"protected function _preSave()\"},{\"line\":291,\"text\":\"if ($this->isUpdate() && $this->isChanged('field_id'))\"},{\"line\":293,\"text\":\"$this->error('The field ID cannot be changed once set.', 'field_id');\"},{\"line\":296,\"text\":\"if ($this->isChanged(['match_type', 'match_params']))\"},{\"line\":298,\"text\":\"$validateMatchTypeMethod = '_validateMatchType' . Php::camelCase($this->get('match_type'));\"},{\"line\":301,\"text\":\"$matchParams = $this->match_params;\"},{\"line\":304,\"text\":\"$this->match_params = $matchParams;\"},{\"line\":308,\"text\":\"$this->error($error, 'match_params');\"},{\"line\":313,\"text\":\"if ($this->isUpdate() && $this->isChanged('field_type'))\"},{\"line\":316,\"text\":\"if ($typeMap[$this->get('field_type')]['compatible'] != $typeMap[$this->getExistingValue('field_type')]['compatible'])\"},{\"line\":318,\"text\":\"$this->error(\\\\XF::phrase('you_may_not_change_field_to_different_type_after_it_has_been_created'), 'field_type');\"},{\"line\":324,\"text\":\"if (($this->isInsert() && !$this->field_choices) || (is_array($this->field_choices) && !$this->field_choices))\"},{\"line\":326,\"text\":\"$this->error(\\\\XF::phrase('please_enter_at_least_one_choice'), 'field_choices', false);\"},{\"line\":331,\"text\":\"protected function _postSave()\"},{\"line\":333,\"text\":\"if ($this->isChanged('field_choices'))\"},{\"line\":338,\"text\":\"$newValues = $this->getValue('field_choices');\"},{\"line\":339,\"text\":\"$oldValues = $this->getExistingValue('field_choices');\"},{\"line\":373,\"text\":\"$phrase->save(true, false);\"},{\"line\":390,\"text\":\"$this->deleteChoicePhrases(array_keys($this->field_choices));\"},{\"line\":411,\"text\":\"\\\\XF::runOnce('rebuildFieldCache' . $this->field_id, function ()\"},{\"line\":422,\"text\":\"* @api-out str $field_id\"},{\"line\":425,\"text\":\"* @api-out int $display_order\"},{\"line\":426,\"text\":\"* @api-out str $field_type\"},{\"line\":427,\"text\":\"* @api-out object $field_choices <cond> For choice types, an ordered list of choices, with \\\"option\\\" and \\\"name\\\" keys for each.\"},{\"line\":428,\"text\":\"* @api-out str $match_type\"},{\"line\":429,\"text\":\"* @api-out array $match_params\"},{\"line\":430,\"text\":\"* @api-out int $max_length\"},{\"line\":431,\"text\":\"* @api-out bool $required\"},{\"line\":432,\"text\":\"* @api-out str $display_group <cond> If this field type supports grouping, the group this field belongs to.\"},{\"line\":446,\"text\":\"foreach ($this->field_choices AS $option => $printable)\"},{\"line\":453,\"text\":\"$result->field_choices = $choices;\"},{\"line\":456,\"text\":\"$result->match_params = (object) $this->match_params;\"},{\"line\":463,\"text\":\"'has_user_editable' => false,\"},{\"line\":464,\"text\":\"'has_user_editable_once' => false,\"},{\"line\":472,\"text\":\"$structure->primaryKey = 'field_id';\"},{\"line\":473,\"text\":\"$structure->columns = [\"},{\"line\":474,\"text\":\"'field_id' => ['type' => self::STR, 'maxLength' => 25,\"},{\"line\":475,\"text\":\"'required' => 'please_enter_valid_field_id',\"},{\"line\":476,\"text\":\"'unique' => 'field_ids_must_be_unique',\"},{\"line\":480,\"text\":\"'display_order' => ['type' => self::UINT, 'default' => 1, 'api' => true],\"},{\"line\":481,\"text\":\"'field_type' => ['type' => self::STR, 'default' => 'textbox',\"},{\"line\":485,\"text\":\"'field_choices' => ['type' => self::JSON_ARRAY, 'default' => []],\"},{\"line\":486,\"text\":\"'match_type' => ['type' => self::STR, 'default' => 'none',\"},{\"line\":490,\"text\":\"'match_params' => ['type' => self::JSON_ARRAY, 'default' => []],\"},{\"line\":491,\"text\":\"'max_length' => ['type' => self::UINT, 'default' => 0, 'api' => true],\"},{\"line\":492,\"text\":\"'required' => ['type' => self::BOOL, 'default' => false, 'api' => true],\"},{\"line\":499,\"text\":\"$structure->columns['display_group'] = ['type' => self::STR, 'default' => $firstOption,\"},{\"line\":504,\"text\":\"if ($options['has_user_editable'])\"},{\"line\":506,\"text\":\"$userEditAllowedValues = $options['has_user_editable_once'] ? ['yes', 'once', 'never'] : ['yes', 'never'];\"},{\"line\":507,\"text\":\"$structure->columns['user_editable'] = ['type' => self::STR, 'default' => 'yes',\"},{\"line\":513,\"text\":\"$structure->columns['moderator_editable'] = ['type' => self::BOOL, 'default' => true];\"},{\"line\":517,\"text\":\"$structure->columns['editable_user_group_ids'] = [\"},{\"line\":529,\"text\":\"$structure->columns['wrapper_template'] = ['type' => self::STR, 'default' => ''];\"},{\"line\":544,\"text\":\"['title', '=', $phrasePrefix . '_title.', '$field_id'],\"},{\"line\":552,\"text\":\"['title', '=', $phrasePrefix . '_desc.', '$field_id'],\"}],\"present\":true,\"sha256\":\"f5a7d03f0b656ecae7a225aafe363eb79a925054a3d2fefdcc0bdf4e6a41695f\"},\"category_admin\":{\"bytes\":5702,\"hits\":[{\"line\":59,\"text\":\"$availableFields = $availableFields->pluckNamed('title', 'field_id');\"},{\"line\":87,\"text\":\"protected function categorySaveProcess(\\\\XFRM\\\\Entity\\\\Category $category)\"},{\"line\":93,\"text\":\"'display_order' => 'uint',\"},{\"line\":100,\"text\":\"'always_moderate_create' => 'bool',\"},{\"line\":101,\"text\":\"'always_moderate_update' => 'bool',\"},{\"line\":102,\"text\":\"'min_tags' => 'uint',\"},{\"line\":110,\"text\":\"$form->basicEntitySave($category, $entityInput);\"},{\"line\":117,\"text\":\"$repo->updateContentAssociations($category->resource_category_id, $prefixIds);\"},{\"line\":120,\"text\":\"$fieldIds = $this->filter('available_fields', 'array-str');\"},{\"line\":125,\"text\":\"$repo->updateContentAssociations($category->resource_category_id, $fieldIds);\"},{\"line\":131,\"text\":\"public function actionSave(ParameterBag $params)\"},{\"line\":144,\"text\":\"$this->categorySaveProcess($category)->run();\"},{\"line\":184,\"text\":\"public function actionPermissionsSave(ParameterBag $params)\"},{\"line\":186,\"text\":\"return $this->getCategoryPermissionPlugin()->actionSave($params);\"}],\"present\":true,\"sha256\":\"4896715a8a0d00b8f4bf09dd0e28458f410ef8b27d1125711a5d1da3bc661ad6\"},\"category_entity\":{\"bytes\":15749,\"hits\":[{\"line\":6,\"text\":\"use XF\\\\Draft;\"},{\"line\":12,\"text\":\"use XF\\\\Entity\\\\ViewableInterface;\"},{\"line\":18,\"text\":\"* COLUMNS\"},{\"line\":38,\"text\":\"* @property bool $always_moderate_create\"},{\"line\":39,\"text\":\"* @property bool $always_moderate_update\"},{\"line\":40,\"text\":\"* @property int $min_tags\"},{\"line\":45,\"text\":\"* @property int $display_order\"},{\"line\":53,\"text\":\"* @property-read Draft $draft_resource\"},{\"line\":58,\"text\":\"* @property-read AbstractCollection<\\\\XF\\\\Entity\\\\Draft> $DraftResources\"},{\"line\":61,\"text\":\"class Category extends AbstractCategoryTree implements LinkableInterface, ViewableInterface\"},{\"line\":63,\"text\":\"protected $_viewableDescendants = [];\"},{\"line\":70,\"text\":\"public function canViewDeletedResources()\"},{\"line\":72,\"text\":\"return $this->hasPermission('viewDeleted');\"},{\"line\":75,\"text\":\"public function canViewModeratedResources()\"},{\"line\":77,\"text\":\"return $this->hasPermission('viewModerated');\"},{\"line\":173,\"text\":\"public function getViewableDescendants()\"},{\"line\":176,\"text\":\"if (!isset($this->_viewableDescendants[$userId]))\"},{\"line\":178,\"text\":\"$viewable = $this->repository('XFRM:Category')->getViewableCategories($this);\"},{\"line\":179,\"text\":\"$this->_viewableDescendants[$userId] = $viewable->toArray();\"},{\"line\":182,\"text\":\"return $this->_viewableDescendants[$userId];\"},{\"line\":185,\"text\":\"public function cacheViewableDescendents(array $descendents, $userId = null)\"},{\"line\":192,\"text\":\"$this->_viewableDescendants[$userId] = $descendents;\"},{\"line\":196,\"text\":\"* @return Draft\"},{\"line\":198,\"text\":\"public function getDraftResource()\"},{\"line\":200,\"text\":\"return Draft::createFromEntity($this, 'DraftResources');\"},{\"line\":309,\"text\":\"return 'visible';\"},{\"line\":314,\"text\":\"return 'moderated';\"},{\"line\":319,\"text\":\"return $this->always_moderate_update ? 'moderated' : 'visible';\"},{\"line\":323,\"text\":\"return $this->always_moderate_create ? 'moderated' : 'visible';\"},{\"line\":405,\"text\":\"AND resource_state = 'visible'\"},{\"line\":417,\"text\":\"AND resource.resource_state = 'visible'\\\",\"},{\"line\":430,\"text\":\"AND resource_state = 'visible'\"},{\"line\":448,\"text\":\"protected function _preSave()\"},{\"line\":547,\"text\":\"public static function getStructure(Structure $structure)\"},{\"line\":553,\"text\":\"$structure->columns = [\"},{\"line\":556,\"text\":\"'required' => 'please_enter_valid_title', 'api' => true,\"},{\"line\":576,\"text\":\"'always_moderate_create' => ['type' => self::BOOL, 'default' => false],\"},{\"line\":577,\"text\":\"'always_moderate_update' => ['type' => self::BOOL, 'default' => false],\"},{\"line\":578,\"text\":\"'min_tags' => ['type' => self::UINT, 'forced' => true, 'default' => 0, 'max' => 100, 'api' => true],\"},{\"line\":585,\"text\":\"'draft_resource' => true,\"},{\"line\":603,\"text\":\"'DraftResources' => [\"},{\"line\":604,\"text\":\"'entity' => 'XF:Draft',\"},{\"line\":607,\"text\":\"['draft_key', '=', 'xfrm-category-', '$resource_category_id'],\"}],\"present\":true,\"sha256\":\"73763c6c3b7d56da646cf04b1f19106b33643daa9bbb6e775141e692b9cf36c2\"},\"category_field_repo\":{\"bytes\":729,\"hits\":[{\"line\":30,\"text\":\"$category->saveIfChanged();\"}],\"present\":true,\"sha256\":\"533bd6390f94189f752059bfa611e53e6ca4711c72a18c7b34322cecc9fe2228\"},\"relevant_files\":[\"src/addons/XFRM/Entity/Category.php\",\"src/addons/XFRM/Entity/CategoryField.php\",\"src/addons/XFRM/Entity/CategoryPrefix.php\",\"src/addons/XFRM/Entity/CategoryReviewField.php\",\"src/addons/XFRM/Entity/CategoryWatch.php\",\"src/addons/XFRM/Entity/ResourceDownload.php\",\"src/addons/XFRM/Entity/ResourceField.php\",\"src/addons/XFRM/Entity/ResourceFieldValue.php\",\"src/addons/XFRM/Entity/ResourceItem.php\",\"src/addons/XFRM/Entity/ResourcePrefix.php\",\"src/addons/XFRM/Entity/ResourcePrefixGroup.php\",\"src/addons/XFRM/Entity/ResourceRating.php\",\"src/addons/XFRM/Entity/ResourceReviewField.php\",\"src/addons/XFRM/Entity/ResourceReviewFieldValue.php\",\"src/addons/XFRM/Entity/ResourceTeamMember.php\",\"src/addons/XFRM/Entity/ResourceUpdate.php\",\"src/addons/XFRM/Entity/ResourceVersion.php\",\"src/addons/XFRM/Entity/ResourceWatch.php\",\"src/addons/XFRM/Repository/Category.php\",\"src/addons/XFRM/Repository/CategoryField.php\",\"src/addons/XFRM/Repository/CategoryPrefix.php\",\"src/addons/XFRM/Repository/CategoryReviewField.php\",\"src/addons/XFRM/Repository/CategoryWatch.php\",\"src/addons/XFRM/Repository/ResourceField.php\",\"src/addons/XFRM/Repository/ResourceItem.php\",\"src/addons/XFRM/Repository/ResourcePrefix.php\",\"src/addons/XFRM/Repository/ResourceRating.php\",\"src/addons/XFRM/Repository/ResourceReviewField.php\",\"src/addons/XFRM/Repository/ResourceUpdate.php\",\"src/addons/XFRM/Repository/ResourceVersion.php\",\"src/addons/XFRM/Repository/ResourceWatch.php\"],\"resource_create_service\":{\"bytes\":9106,\"hits\":[{\"line\":85,\"text\":\"$this->resource->addCascadedSave($this->description);\"},{\"line\":88,\"text\":\"$this->resource->addCascadedSave($this->version);\"},{\"line\":97,\"text\":\"$this->resource->resource_state = $this->category->getNewContentState();\"},{\"line\":98,\"text\":\"$this->description->message_state = 'visible';\"},{\"line\":137,\"text\":\"public function setTitle($title)\"},{\"line\":143,\"text\":\"public function setContent($title, $description, $format = true)\"},{\"line\":145,\"text\":\"$this->setTitle($title);\"},{\"line\":168,\"text\":\"public function setDescriptionAttachmentHash($hash)\"},{\"line\":227,\"text\":\"if ($this->resource->resource_state == 'visible' && \\\\XF::visitor()->isSpamCheckRequired())\"},{\"line\":257,\"text\":\"$resource->preSave();\"},{\"line\":292,\"text\":\"protected function _save()\"},{\"line\":302,\"text\":\"$resource->save(true, false);\"},{\"line\":303,\"text\":\"// update and version will also be saved now\"},{\"line\":316,\"text\":\"->setContentId($resource->resource_id, true)\"},{\"line\":317,\"text\":\"->save($this->performValidations);\"},{\"line\":325,\"text\":\"$thread = $creator->save();\"},{\"line\":344,\"text\":\"$creator->setContent($this->resource->getExpectedThreadTitle(), $this->getThreadMessage(), false);\"},{\"line\":350,\"text\":\"$thread->discussion_state = $this->resource->resource_state;\"},{\"line\":385,\"text\":\"if ($this->resource->isVisible())\"}],\"present\":true,\"sha256\":\"2c72b9811646927b8abc0ffaee0b2d0358576b4b5cfc359da6fc5c7c13d9e66c\"},\"resource_edit_service\":{\"bytes\":5900,\"hits\":[{\"line\":59,\"text\":\"public function setTitle($title)\"},{\"line\":62,\"text\":\"$this->getDescriptionEditor()->setTitle($title);\"},{\"line\":133,\"text\":\"$this->resource->addCascadedSave($currentVersion);\"},{\"line\":148,\"text\":\"$this->resource->addCascadedSave($currentVersion);\"},{\"line\":217,\"text\":\"$resource->preSave();\"},{\"line\":252,\"text\":\"protected function _save()\"},{\"line\":256,\"text\":\"$resource->save(true, false);\"},{\"line\":260,\"text\":\"$this->descriptionEditor->save();\"},{\"line\":265,\"text\":\"$this->tagChanger->save($this->performValidations);\"},{\"line\":268,\"text\":\"if ($resource->isVisible() && $this->alert && $resource->user_id != \\\\XF::visitor()->user_id)\"}],\"present\":true,\"sha256\":\"b837cb9e5883ad74cc46c417bf5f5490506aecc26a3e458c035078e44964931d\"},\"resource_field_admin\":{\"bytes\":1905,\"hits\":[{\"line\":32,\"text\":\"return 'xfrm_resource_field';\"},{\"line\":59,\"text\":\"protected function saveAdditionalData(FormAction $form, \\\\XF\\\\Entity\\\\AbstractField $field)\"},{\"line\":62,\"text\":\"'viewable_resource' => 'bool',\"},{\"line\":65,\"text\":\"$form->basicEntitySave($field, $input);\"}],\"present\":true,\"sha256\":\"70af86b0164a4d9089bf740857557a5d1d26063b7b7496ae78cd7c7e2e64f9c3\"},\"resource_field_entity\":{\"bytes\":2019,\"hits\":[{\"line\":12,\"text\":\"* COLUMNS\"},{\"line\":13,\"text\":\"* @property string $field_id\"},{\"line\":14,\"text\":\"* @property int $display_order\"},{\"line\":15,\"text\":\"* @property string $field_type\"},{\"line\":16,\"text\":\"* @property array|null $field_choices\"},{\"line\":17,\"text\":\"* @property string $match_type\"},{\"line\":18,\"text\":\"* @property array|null $match_params\"},{\"line\":19,\"text\":\"* @property int $max_length\"},{\"line\":20,\"text\":\"* @property bool $required\"},{\"line\":22,\"text\":\"* @property string $display_group\"},{\"line\":24,\"text\":\"* @property bool $viewable_resource\"},{\"line\":44,\"text\":\"return 'xfrm_resource_field';\"},{\"line\":53,\"text\":\"$this->db()->delete('xf_rm_resource_field_value', 'field_id = ?', $this->field_id);\"},{\"line\":58,\"text\":\"public static function getStructure(Structure $structure)\"},{\"line\":62,\"text\":\"'xf_rm_resource_field',\"},{\"line\":73,\"text\":\"$structure->columns += [\"},{\"line\":74,\"text\":\"'viewable_resource' => ['type' => self::BOOL, 'default' => true],\"},{\"line\":80,\"text\":\"'conditions' => 'field_id',\"}],\"present\":true,\"sha256\":\"c4cb2a33b80db12e54a010609140e1c9735b9055812b0d70d64827fe16c34246\"},\"resource_item_controller\":{\"bytes\":49966,\"hits\":[{\"line\":6,\"text\":\"use XF\\\\ControllerPlugin\\\\DraftPlugin;\"},{\"line\":72,\"text\":\"$viewableCategoryIds = $categoryParams['categories']->keys();\"},{\"line\":74,\"text\":\"$listParams = $overviewPlugin->getCoreListData($viewableCategoryIds);\"},{\"line\":103,\"text\":\"$viewableCategoryIds = $this->getCategoryRepo()->getViewableCategoryIds();\"},{\"line\":106,\"text\":\"$finder = $ratingRepo->findLatestReviews($viewableCategoryIds);\"},{\"line\":116,\"text\":\"$reviews = $reviews->filterViewable();\"},{\"line\":140,\"text\":\"$categories = $categoryRepo->getViewableCategories();\"},{\"line\":186,\"text\":\"$resource = $this->assertViewableResource($params->resource_id, $this->getResourceViewExtraWith());\"},{\"line\":230,\"text\":\"$authorOthers = $authorOthers->filterViewable();\"},{\"line\":301,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":316,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":339,\"text\":\"return $this->view('XFRM:ResourceItem\\\\Field', 'xfrm_resource_field', $viewParams);\"},{\"line\":346,\"text\":\"$resource = $this->assertViewableResource($params->resource_id, $this->getResourceViewExtraWith());\"},{\"line\":391,\"text\":\"$resource = $this->assertViewableResource($params->resource_id, $this->getResourceViewExtraWith());\"},{\"line\":510,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":587,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":597,\"text\":\"$resource = $this->assertViewableResource($params->resource_id, $this->getResourceViewExtraWith());\"},{\"line\":638,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":716,\"text\":\"$resource = $this->assertViewableResource($params->resource_id, $extraWith);\"},{\"line\":764,\"text\":\"$rating = $rater->save();\"},{\"line\":851,\"text\":\"$updateCreator->setTitle($this->filter('update_title', 'str'));\"},{\"line\":868,\"text\":\"$updater->getResource()->draft_update->delete();\"},{\"line\":873,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":893,\"text\":\"$teamManager->save();\"},{\"line\":913,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":947,\"text\":\"$teamManager->save();\"},{\"line\":971,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":989,\"text\":\"$updater->save();\"},{\"line\":1006,\"text\":\"$draft = $resource->draft_update;\"},{\"line\":1010,\"text\":\"$updateAttachData = $attachmentRepo->getEditorData('resource_update', $resource, $draft->attachment_hash);\"},{\"line\":1029,\"text\":\"public function actionPostUpdateDraft(ParameterBag $params)\"},{\"line\":1031,\"text\":\"$this->assertDraftsEnabled();\"},{\"line\":1033,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1044,\"text\":\"/** @var DraftPlugin $draftPlugin */\"},{\"line\":1045,\"text\":\"$draftPlugin = $this->plugin('XF:Draft');\"},{\"line\":1046,\"text\":\"return $draftPlugin->actionDraftMessage($resource->draft_update, $extraData, 'update_message');\"},{\"line\":1051,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1062,\"text\":\"$updateCreator->setTitle($this->filter('update_title', 'str'));\"},{\"line\":1108,\"text\":\"$editor->setTitle($this->filter('title', 'str'));\"},{\"line\":1162,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1180,\"text\":\"$editor->save();\"},{\"line\":1229,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1267,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1352,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1367,\"text\":\"$typeChanger->save();\"},{\"line\":1429,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1455,\"text\":\"$categories = $categoryRepo->getViewableCategories();\"},{\"line\":1469,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1486,\"text\":\"$tagger->save();\"},{\"line\":1494,\"text\":\"$reply->setJsonParam('message', \\\\XF::phrase('your_changes_have_been_saved'));\"},{\"line\":1518,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1562,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1600,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1640,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1653,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1700,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1709,\"text\":\"'resource_state'\"},{\"line\":1715,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1732,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1747,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1774,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1828,\"text\":\"protected function assertViewableResource($resourceId, array $extraWith = [])\"},{\"line\":1861,\"text\":\"$this->setContentKey('resource-' . $resource->resource_id);\"},{\"line\":1899,\"text\":\"foreach ($resources->filterViewable() AS $id => $resource)\"}],\"present\":true,\"sha256\":\"78aaaaaf3ad95aedde7b4a1e4d8ec026b9a305dd4a2a23172d28a756244b9f67\"},\"resource_item_entity\":{\"bytes\":55733,\"hits\":[{\"line\":8,\"text\":\"use XF\\\\Draft;\"},{\"line\":24,\"text\":\"use XF\\\\Entity\\\\ViewableInterface;\"},{\"line\":40,\"text\":\"* COLUMNS\"},{\"line\":49,\"text\":\"* @property string $resource_state\"},{\"line\":88,\"text\":\"* @property-read Draft $draft_update\"},{\"line\":102,\"text\":\"* @property-read AbstractCollection<\\\\XF\\\\Entity\\\\Draft> $DraftUpdates\"},{\"line\":106,\"text\":\"class ResourceItem extends Entity implements ContainableInterface, DatableInterface, LinkableInterface, ViewableInterface\"},{\"line\":132,\"text\":\"public function getStructuredData(): array\"},{\"line\":156,\"text\":\"'discussionUrl' => $this->hasViewableDiscussion()\"},{\"line\":265,\"text\":\"if ($this->resource_state == 'moderated')\"},{\"line\":268,\"text\":\"!$this->hasPermission('viewModerated')\"},{\"line\":276,\"text\":\"else if ($this->resource_state == 'deleted')\"},{\"line\":278,\"text\":\"if (!$this->hasPermission('viewDeleted'))\"},{\"line\":288,\"text\":\"public function canViewDeletedContent()\"},{\"line\":290,\"text\":\"return $this->hasPermission('viewDeleted');\"},{\"line\":293,\"text\":\"public function canViewModeratedContent()\"},{\"line\":296,\"text\":\"if ($this->hasPermission('viewModerated'))\"},{\"line\":336,\"text\":\"public function canRate($checkDownloadIfRequired = true, &$error = null)\"},{\"line\":338,\"text\":\"if (!$this->isVisible())\"},{\"line\":355,\"text\":\"if ($checkDownloadIfRequired && $this->isDownloadable() && $this->app()->options()->xfrmRequireDownloadToRate)\"},{\"line\":368,\"text\":\"public function canRatePreReg($checkDownloadIfRequired = true)\"},{\"line\":378,\"text\":\"function () use ($checkDownloadIfRequired) { return $this->canRate($checkDownloadIfRequired); }\"},{\"line\":564,\"text\":\"|| !$this->isVisible()\"},{\"line\":635,\"text\":\"return $this->isVisible();\"},{\"line\":684,\"text\":\"&& $this->resource_state == 'visible'\"},{\"line\":737,\"text\":\"public function isVisible()\"},{\"line\":739,\"text\":\"return ($this->resource_state == 'visible');\"},{\"line\":859,\"text\":\"public function hasViewableDiscussion()\"},{\"line\":923,\"text\":\"$state = $currentValues ? $this->getValue('resource_state') : $this->getExistingValue('resource_state');\"},{\"line\":933,\"text\":\"if ($state != 'visible' && $options->xfrmResourceDeleteThreadAction['update_title'])\"},{\"line\":964,\"text\":\"}, 'save');\"},{\"line\":984,\"text\":\"}, 'save');\"},{\"line\":993,\"text\":\"* @return Draft\"},{\"line\":995,\"text\":\"public function getDraftUpdate()\"},{\"line\":997,\"text\":\"return Draft::createFromEntity($this, 'DraftUpdates');\"},{\"line\":1055,\"text\":\"if (!$this->canViewDeletedContent() && !$this->canViewModeratedContent())\"},{\"line\":1072,\"text\":\"if (!$this->canViewDeletedContent())\"},{\"line\":1139,\"text\":\"AND message_state = 'visible'\"},{\"line\":1160,\"text\":\"AND message_state = 'visible'\"},{\"line\":1173,\"text\":\"AND rating_state = 'visible'\"},{\"line\":1187,\"text\":\"AND rating_state = 'visible'\"},{\"line\":1218,\"text\":\"AND version_state = 'visible'\"},{\"line\":1275,\"text\":\"protected function _preSave()\"},{\"line\":1310,\"text\":\"protected function _postSave()\"},{\"line\":1312,\"text\":\"$visibilityChange = $this->isStateChanged('resource_state', 'visible');\"},{\"line\":1313,\"text\":\"$approvalChange = $this->isStateChanged('resource_state', 'moderated');\"},{\"line\":1314,\"text\":\"$deletionChange = $this->isStateChanged('resource_state', 'deleted');\"},{\"line\":1320,\"text\":\"$this->resourceMadeVisible();\"},{\"line\":1354,\"text\":\"if ($this->resource_state == 'visible')\"},{\"line\":1356,\"text\":\"$this->resourceInsertedVisible();\"},{\"line\":1377,\"text\":\"$oldDiscussion->save(false, false);\"},{\"line\":1388,\"text\":\"$this->Discussion->save(false, false);\"},{\"line\":1401,\"text\":\"$this->Discussion->saveIfChanged($saved, false, false);\"},{\"line\":1410,\"text\":\"$approvalQueue->save();\"},{\"line\":1416,\"text\":\"$delLog->save();\"},{\"line\":1426,\"text\":\"$this->_postSaveBookmarks();\"},{\"line\":1429,\"text\":\"protected function resourceMadeVisible()\"},{\"line\":1440,\"text\":\"$thread->discussion_state = 'visible';\"},{\"line\":1449,\"text\":\"$thread->saveIfChanged($saved, false, false);\"},{\"line\":1468,\"text\":\"$thread->discussion_state = 'deleted';\"},{\"line\":1477,\"text\":\"$thread->saveIfChanged($saved, false, false);\"},{\"line\":1494,\"text\":\"protected function resourceInsertedVisible()\"},{\"line\":1512,\"text\":\"if ($this->resource_state == 'visible')\"},{\"line\":1581,\"text\":\"if ($this->resource_state == 'visible')\"},{\"line\":1584,\"text\":\"$category->save();\"},{\"line\":1587,\"text\":\"if ($this->getExistingValue('resource_state') == 'visible')\"},{\"line\":1594,\"text\":\"$oldCategory->save();\"},{\"line\":1605,\"text\":\"if ($this->resource_state == 'visible' && $thread->discussion_state == 'deleted')\"},{\"line\":1607,\"text\":\"// presumably the thread was soft deleted by being moved to a category without a thread\"},{\"line\":1608,\"text\":\"$thread->discussion_state = 'visible';\"},{\"line\":1614,\"text\":\"$thread->discussion_state = 'deleted';\"},{\"line\":1617,\"text\":\"$thread->saveIfChanged($saved, false, false);\"},{\"line\":1623,\"text\":\"// check for entering/leaving visible\"},{\"line\":1624,\"text\":\"$visibilityChange = $this->isStateChanged('resource_state', 'visible');\"},{\"line\":1628,\"text\":\"$category->save();\"},{\"line\":1633,\"text\":\"$category->save();\"},{\"line\":1635,\"text\":\"else if ($this->isUpdate() && $this->resource_state == 'visible')\"},{\"line\":1638,\"text\":\"$category->save();\"},{\"line\":1644,\"text\":\"if ($this->resource_state == 'visible')\"},{\"line\":1649,\"text\":\"if ($this->Category && $this->resource_state == 'visible')\"},{\"line\":1652,\"text\":\"$this->Category->save();\"},{\"line\":1655,\"text\":\"if ($this->resource_state == 'deleted' && $this->DeletionLog)\"},{\"line\":1660,\"text\":\"if ($this->resource_state == 'moderated' && $this->ApprovalQueue)\"},{\"line\":1744,\"text\":\"if ($this->resource_state == 'deleted')\"},{\"line\":1749,\"text\":\"$this->resource_state = 'deleted';\"},{\"line\":1756,\"text\":\"$this->save();\"},{\"line\":1820,\"text\":\"'discussionUrl' => $this->hasViewableDiscussion()\"},{\"line\":2009,\"text\":\"public static function getStructure(Structure $structure)\"},{\"line\":2015,\"text\":\"$structure->columns = [\"},{\"line\":2018,\"text\":\"'required' => 'please_enter_valid_title',\"},{\"line\":2023,\"text\":\"'required' => 'xfrm_please_enter_valid_tag_line',\"},{\"line\":2027,\"text\":\"'user_id' => ['type' => self::UINT, 'required' => true, 'api' => true],\"},{\"line\":2029,\"text\":\"'required' => 'please_enter_valid_name',\"},{\"line\":2034,\"text\":\"'resource_state' => ['type' => self::STR, 'default' => 'visible',\"},{\"line\":2035,\"text\":\"'allowedValues' => ['visible', 'moderated', 'deleted'], 'api' => true,\"},{\"line\":2037,\"text\":\"'resource_type' => ['type' => self::STR, 'required' => true,\"},{\"line\":2041,\"text\":\"'resource_category_id' => ['type' => self::UINT, 'required' => true, 'api' => true],\"},{\"line\":2084,\"text\":\"'draft_update' => true,\"},{\"line\":2088,\"text\":\"'XF:Taggable' => ['stateField' => 'resource_state'],\"},{\"line\":2090,\"text\":\"'checkForUpdates' => ['title', 'resource_category_id', 'user_id', 'prefix_id', 'tags', 'resource_state'],\"},{\"line\":2096,\"text\":\"'checkForUpdates' => ['resource_category_id', 'resource_state', 'prefix_id'],\"},{\"line\":2103,\"text\":\"'stateField' => 'resource_state',\"},{\"line\":2106,\"text\":\"'valueTable' => 'xf_rm_resource_field_value',\"},{\"line\":2113,\"text\":\"'stateField' => 'resource_state',\"},{\"line\":2189,\"text\":\"'DraftUpdates' => [\"},{\"line\":2190,\"text\":\"'entity' => 'XF:Draft',\"},{\"line\":2193,\"text\":\"['draft_key', '=', 'xfrm-resource-', '$resource_id'],\"}],\"present\":true,\"sha256\":\"703773471dd35c876a0fed578a60dfc51e1dafc9520ad1493282b50fd9e05262\"}},\"tables\":{\"xf_draft\":true,\"xf_rm_category\":true,\"xf_rm_category_field\":true,\"xf_rm_category_prefix\":true,\"xf_rm_resource\":true,\"xf_rm_resource_field\":true,\"xf_rm_resource_field_value\":true,\"xf_rm_resource_prefix\":true,\"xf_tag\":true,\"xf_tag_content\":true},\"user1\":{\"admin_row_count\":1,\"is_staff\":1,\"permission_combination_id\":6,\"user_id\":1,\"user_state\":\"valid\",\"username\":\"NewfiAdmin\"}}\nNEWFI95_PRODUCTION={\"addons\":[{\"active\":1,\"addon_id\":\"XF\",\"title\":\"XenForo\",\"version_id\":2031270,\"version_string\":\"2.3.12\"},{\"active\":1,\"addon_id\":\"XFRM\",\"title\":\"XenForo Resource Manager\",\"version_id\":2031170,\"version_string\":\"2.3.11\"}],\"boardActive\":\"1\",\"counts\":{\"categories\":1,\"category_fields\":0,\"drafts\":0,\"resource_fields\":0,\"resources\":0},\"errors\":{\"count\":0,\"ids\":[],\"new\":[],\"old_fp\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"},\"hostname\":\"newfi-prod\",\"indexRoute\":\"portal/\",\"options\":[{\"option_id\":\"enableTagging\",\"option_value\":\"0\"},{\"option_id\":\"xfrmAllowAnonReview\",\"option_value\":\"0\"},{\"option_id\":\"xfrmAllowIcons\",\"option_value\":\"1\"},{\"option_id\":\"xfrmAuthorOtherResourcesCount\",\"option_value\":\"5\"},{\"option_id\":\"xfrmEnableTeams\",\"option_value\":\"0\"},{\"option_id\":\"xfrmFilelessViewFull\",\"option_value\":\"{\\\"limit\\\":\\\"1\\\",\\\"length\\\":\\\"250\\\"}\"},{\"option_id\":\"xfrmListDefaultOrder\",\"option_value\":\"last_update\"},{\"option_id\":\"xfrmMinimumReviewLength\",\"option_value\":\"0\"},{\"option_id\":\"xfrmPaidResourceThreadTitleTemplate\",\"option_value\":\"{title} [Paid]\"},{\"option_id\":\"xfrmRecentReviewsCount\",\"option_value\":\"10\"},{\"option_id\":\"xfrmRecentUpdatesCount\",\"option_value\":\"3\"},{\"option_id\":\"xfrmRequireDownloadToRate\",\"option_value\":\"1\"},{\"option_id\":\"xfrmResourceCurrencies\",\"option_value\":\"usd\\ncad\\naud\\ngbp\\neur\"},{\"option_id\":\"xfrmResourceDeleteThreadAction\",\"option_value\":\"{\\\"action\\\":\\\"close\\\",\\\"update_title\\\":\\\"1\\\",\\\"title_template\\\":\\\"{title} [Deleted]\\\",\\\"add_post\\\":\\\"1\\\"}\"},{\"option_id\":\"xfrmResourceExtensions\",\"option_value\":\"zip\\ntxt\\npdf\\npng\\njpg\\njpeg\\njpe\\ngif\\npsd\\ntif\\nwebp\"},{\"option_id\":\"xfrmResourceMaxFileSize\",\"option_value\":\"2048\"},{\"option_id\":\"xfrmResourceMaxFiles\",\"option_value\":\"5\"},{\"option_id\":\"xfrmResourcesPerPage\",\"option_value\":\"20\"},{\"option_id\":\"xfrmReviewRequired\",\"option_value\":\"1\"},{\"option_id\":\"xfrmReviewVoting\",\"option_value\":\"yes\"},{\"option_id\":\"xfrmReviewsPerPage\",\"option_value\":\"20\"},{\"option_id\":\"xfrmUpdateMaxLength\",\"option_value\":\"50000\"},{\"option_id\":\"xfrmUpdatesPerPage\",\"option_value\":\"10\"}],\"rows\":{\"xf_rm_category\":[{\"allow_commercial_external\":1,\"allow_external\":1,\"allow_fileless\":1,\"allow_local\":1,\"always_moderate_create\":0,\"always_moderate_update\":0,\"auto_feature\":0,\"breadcrumb_data\":\"[]\",\"depth\":0,\"description\":\"\",\"display_order\":10,\"enable_support_url\":1,\"enable_versioning\":1,\"featured_count\":0,\"field_cache\":\"\",\"last_resource_id\":0,\"last_resource_title\":\"\",\"last_update\":0,\"lft\":1,\"min_tags\":0,\"parent_category_id\":0,\"prefix_cache\":\"\",\"require_prefix\":0,\"resource_category_id\":1,\"resource_count\":0,\"review_field_cache\":\"\",\"rgt\":2,\"thread_node_id\":0,\"thread_prefix_id\":0,\"title\":\"База знаний\"}],\"xf_rm_category_field\":[],\"xf_rm_category_prefix\":[],\"xf_rm_resource_field\":[],\"xf_rm_resource_prefix\":[]},\"schemas\":{\"xf_draft\":[{\"Default\":null,\"Extra\":\"auto_increment\",\"Field\":\"draft_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"draft_key\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"varbinary(75)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"user_id\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"last_update\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"message\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"mediumtext\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"extra_data\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"mediumblob\"}],\"xf_rm_category\":[{\"Default\":null,\"Extra\":\"auto_increment\",\"Field\":\"resource_category_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"title\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varchar(100)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"description\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"text\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"parent_category_id\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"display_order\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"lft\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"rgt\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"depth\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"smallint(5) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"breadcrumb_data\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"blob\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"resource_count\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"featured_count\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"smallint(5) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"last_update\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"\",\"Extra\":\"\",\"Field\":\"last_resource_title\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varchar(100)\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"last_resource_id\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"field_cache\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"mediumblob\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"review_field_cache\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"mediumblob\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"prefix_cache\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"mediumblob\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"require_prefix\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"thread_node_id\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"thread_prefix_id\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"allow_local\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"allow_external\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"allow_commercial_external\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"allow_fileless\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"always_moderate_create\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"always_moderate_update\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"min_tags\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"smallint(5) unsigned\"},{\"Default\":\"1\",\"Extra\":\"\",\"Field\":\"enable_versioning\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":\"1\",\"Extra\":\"\",\"Field\":\"enable_support_url\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"auto_feature\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"}],\"xf_rm_category_field\":[{\"Default\":null,\"Extra\":\"\",\"Field\":\"field_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"varbinary(25)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"resource_category_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"}],\"xf_rm_category_prefix\":[{\"Default\":null,\"Extra\":\"\",\"Field\":\"resource_category_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"prefix_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"}],\"xf_rm_resource\":[{\"Default\":null,\"Extra\":\"auto_increment\",\"Field\":\"resource_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"\",\"Extra\":\"\",\"Field\":\"title\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varchar(100)\"},{\"Default\":\"\",\"Extra\":\"\",\"Field\":\"tag_line\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varchar(100)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"user_id\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"\",\"Extra\":\"\",\"Field\":\"username\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varchar(100)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"team_member_user_ids\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"blob\"},{\"Default\":\"visible\",\"Extra\":\"\",\"Field\":\"resource_state\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"enum('visible','moderated','deleted')\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"resource_type\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varchar(25)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"resource_date\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"resource_category_id\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"current_version_id\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"description_update_id\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"discussion_thread_id\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"\",\"Extra\":\"\",\"Field\":\"external_url\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varchar(500)\"},{\"Default\":\"\",\"Extra\":\"\",\"Field\":\"external_purchase_url\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varchar(500)\"},{\"Default\":\"0.00\",\"Extra\":\"\",\"Field\":\"price\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"decimal(10,2) unsigned\"},{\"Default\":\"\",\"Extra\":\"\",\"Field\":\"currency\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varchar(3)\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"view_count\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"download_count\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"rating_count\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"rating_sum\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"rating_avg\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"float unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"rating_weighted\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"float unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"rating_split\",\"Key\":\"\",\"Null\":\"YES\",\"Type\":\"blob\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"update_count\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"review_count\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"last_update\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"\",\"Extra\":\"\",\"Field\":\"alt_support_url\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varchar(500)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"custom_fields\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"mediumblob\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"prefix_id\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"icon_date\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"icon_optimized\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"tags\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"mediumblob\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"featured\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"}],\"xf_rm_resource_field\":[{\"Default\":null,\"Extra\":\"\",\"Field\":\"field_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"varbinary(25)\"},{\"Default\":\"above_info\",\"Extra\":\"\",\"Field\":\"display_group\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"varchar(25)\"},{\"Default\":\"1\",\"Extra\":\"\",\"Field\":\"display_order\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"textbox\",\"Extra\":\"\",\"Field\":\"field_type\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varbinary(25)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"field_choices\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"blob\"},{\"Default\":\"none\",\"Extra\":\"\",\"Field\":\"match_type\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varbinary(25)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"match_params\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"blob\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"max_length\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"required\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"display_template\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"text\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"wrapper_template\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"text\"},{\"Default\":\"1\",\"Extra\":\"\",\"Field\":\"viewable_resource\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"}],\"xf_rm_resource_field_value\":[{\"Default\":null,\"Extra\":\"\",\"Field\":\"resource_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"field_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"varbinary(25)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"field_value\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"mediumtext\"}],\"xf_rm_resource_prefix\":[{\"Default\":null,\"Extra\":\"auto_increment\",\"Field\":\"prefix_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"prefix_group_id\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"display_order\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"materialized_order\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"\",\"Extra\":\"\",\"Field\":\"css_class\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varchar(50)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"allowed_user_group_ids\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"blob\"}],\"xf_tag\":[{\"Default\":null,\"Extra\":\"auto_increment\",\"Field\":\"tag_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"tag\",\"Key\":\"UNI\",\"Null\":\"NO\",\"Type\":\"varchar(100)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"tag_url\",\"Key\":\"UNI\",\"Null\":\"NO\",\"Type\":\"varchar(100)\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"use_count\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"last_use_date\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"permanent\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"}],\"xf_tag_content\":[{\"Default\":null,\"Extra\":\"auto_increment\",\"Field\":\"tag_content_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"content_type\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"varbinary(25)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"content_id\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"tag_id\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"add_user_id\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"add_date\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"visible\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"content_date\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"}]},\"source\":{\"abstract_field_entity\":{\"bytes\":13332,\"hits\":[{\"line\":14,\"text\":\"* COLUMNS\"},{\"line\":15,\"text\":\"* @property string $field_id\"},{\"line\":16,\"text\":\"* @property int $display_order\"},{\"line\":17,\"text\":\"* @property string $field_type\"},{\"line\":18,\"text\":\"* @property array $field_choices\"},{\"line\":19,\"text\":\"* @property string $match_type\"},{\"line\":20,\"text\":\"* @property array $match_params\"},{\"line\":21,\"text\":\"* @property int $max_length\"},{\"line\":22,\"text\":\"* @property bool $required\"},{\"line\":24,\"text\":\"* @property string $display_group\"},{\"line\":25,\"text\":\"* @property string $user_editable\"},{\"line\":49,\"text\":\"return static::getPhrasePrefix() . '_' . ($title ? 'title' : 'desc') . '.' . $this->field_id;\"},{\"line\":91,\"text\":\"if (isset($types[$this->field_type]))\"},{\"line\":93,\"text\":\"$type = $types[$this->field_type]['type'];\"},{\"line\":104,\"text\":\"if (!isset($this->field_choices[$choice]))\"},{\"line\":126,\"text\":\"return static::getPhrasePrefix() . '_' . 'choice' . '.' . $this->field_id . '_' . $choice;\"},{\"line\":156,\"text\":\"$this->error(\\\\XF::phrase('please_enter_text_for_each_choice'), 'field_choices');\"},{\"line\":162,\"text\":\"$this->error(\\\\XF::phrase('please_enter_an_id_using_only_alphanumeric'), 'field_choices');\"},{\"line\":289,\"text\":\"protected function _preSave()\"},{\"line\":291,\"text\":\"if ($this->isUpdate() && $this->isChanged('field_id'))\"},{\"line\":293,\"text\":\"$this->error('The field ID cannot be changed once set.', 'field_id');\"},{\"line\":296,\"text\":\"if ($this->isChanged(['match_type', 'match_params']))\"},{\"line\":298,\"text\":\"$validateMatchTypeMethod = '_validateMatchType' . Php::camelCase($this->get('match_type'));\"},{\"line\":301,\"text\":\"$matchParams = $this->match_params;\"},{\"line\":304,\"text\":\"$this->match_params = $matchParams;\"},{\"line\":308,\"text\":\"$this->error($error, 'match_params');\"},{\"line\":313,\"text\":\"if ($this->isUpdate() && $this->isChanged('field_type'))\"},{\"line\":316,\"text\":\"if ($typeMap[$this->get('field_type')]['compatible'] != $typeMap[$this->getExistingValue('field_type')]['compatible'])\"},{\"line\":318,\"text\":\"$this->error(\\\\XF::phrase('you_may_not_change_field_to_different_type_after_it_has_been_created'), 'field_type');\"},{\"line\":324,\"text\":\"if (($this->isInsert() && !$this->field_choices) || (is_array($this->field_choices) && !$this->field_choices))\"},{\"line\":326,\"text\":\"$this->error(\\\\XF::phrase('please_enter_at_least_one_choice'), 'field_choices', false);\"},{\"line\":331,\"text\":\"protected function _postSave()\"},{\"line\":333,\"text\":\"if ($this->isChanged('field_choices'))\"},{\"line\":338,\"text\":\"$newValues = $this->getValue('field_choices');\"},{\"line\":339,\"text\":\"$oldValues = $this->getExistingValue('field_choices');\"},{\"line\":373,\"text\":\"$phrase->save(true, false);\"},{\"line\":390,\"text\":\"$this->deleteChoicePhrases(array_keys($this->field_choices));\"},{\"line\":411,\"text\":\"\\\\XF::runOnce('rebuildFieldCache' . $this->field_id, function ()\"},{\"line\":422,\"text\":\"* @api-out str $field_id\"},{\"line\":425,\"text\":\"* @api-out int $display_order\"},{\"line\":426,\"text\":\"* @api-out str $field_type\"},{\"line\":427,\"text\":\"* @api-out object $field_choices <cond> For choice types, an ordered list of choices, with \\\"option\\\" and \\\"name\\\" keys for each.\"},{\"line\":428,\"text\":\"* @api-out str $match_type\"},{\"line\":429,\"text\":\"* @api-out array $match_params\"},{\"line\":430,\"text\":\"* @api-out int $max_length\"},{\"line\":431,\"text\":\"* @api-out bool $required\"},{\"line\":432,\"text\":\"* @api-out str $display_group <cond> If this field type supports grouping, the group this field belongs to.\"},{\"line\":446,\"text\":\"foreach ($this->field_choices AS $option => $printable)\"},{\"line\":453,\"text\":\"$result->field_choices = $choices;\"},{\"line\":456,\"text\":\"$result->match_params = (object) $this->match_params;\"},{\"line\":463,\"text\":\"'has_user_editable' => false,\"},{\"line\":464,\"text\":\"'has_user_editable_once' => false,\"},{\"line\":472,\"text\":\"$structure->primaryKey = 'field_id';\"},{\"line\":473,\"text\":\"$structure->columns = [\"},{\"line\":474,\"text\":\"'field_id' => ['type' => self::STR, 'maxLength' => 25,\"},{\"line\":475,\"text\":\"'required' => 'please_enter_valid_field_id',\"},{\"line\":476,\"text\":\"'unique' => 'field_ids_must_be_unique',\"},{\"line\":480,\"text\":\"'display_order' => ['type' => self::UINT, 'default' => 1, 'api' => true],\"},{\"line\":481,\"text\":\"'field_type' => ['type' => self::STR, 'default' => 'textbox',\"},{\"line\":485,\"text\":\"'field_choices' => ['type' => self::JSON_ARRAY, 'default' => []],\"},{\"line\":486,\"text\":\"'match_type' => ['type' => self::STR, 'default' => 'none',\"},{\"line\":490,\"text\":\"'match_params' => ['type' => self::JSON_ARRAY, 'default' => []],\"},{\"line\":491,\"text\":\"'max_length' => ['type' => self::UINT, 'default' => 0, 'api' => true],\"},{\"line\":492,\"text\":\"'required' => ['type' => self::BOOL, 'default' => false, 'api' => true],\"},{\"line\":499,\"text\":\"$structure->columns['display_group'] = ['type' => self::STR, 'default' => $firstOption,\"},{\"line\":504,\"text\":\"if ($options['has_user_editable'])\"},{\"line\":506,\"text\":\"$userEditAllowedValues = $options['has_user_editable_once'] ? ['yes', 'once', 'never'] : ['yes', 'never'];\"},{\"line\":507,\"text\":\"$structure->columns['user_editable'] = ['type' => self::STR, 'default' => 'yes',\"},{\"line\":513,\"text\":\"$structure->columns['moderator_editable'] = ['type' => self::BOOL, 'default' => true];\"},{\"line\":517,\"text\":\"$structure->columns['editable_user_group_ids'] = [\"},{\"line\":529,\"text\":\"$structure->columns['wrapper_template'] = ['type' => self::STR, 'default' => ''];\"},{\"line\":544,\"text\":\"['title', '=', $phrasePrefix . '_title.', '$field_id'],\"},{\"line\":552,\"text\":\"['title', '=', $phrasePrefix . '_desc.', '$field_id'],\"}],\"present\":true,\"sha256\":\"f5a7d03f0b656ecae7a225aafe363eb79a925054a3d2fefdcc0bdf4e6a41695f\"},\"category_admin\":{\"bytes\":5702,\"hits\":[{\"line\":59,\"text\":\"$availableFields = $availableFields->pluckNamed('title', 'field_id');\"},{\"line\":87,\"text\":\"protected function categorySaveProcess(\\\\XFRM\\\\Entity\\\\Category $category)\"},{\"line\":93,\"text\":\"'display_order' => 'uint',\"},{\"line\":100,\"text\":\"'always_moderate_create' => 'bool',\"},{\"line\":101,\"text\":\"'always_moderate_update' => 'bool',\"},{\"line\":102,\"text\":\"'min_tags' => 'uint',\"},{\"line\":110,\"text\":\"$form->basicEntitySave($category, $entityInput);\"},{\"line\":117,\"text\":\"$repo->updateContentAssociations($category->resource_category_id, $prefixIds);\"},{\"line\":120,\"text\":\"$fieldIds = $this->filter('available_fields', 'array-str');\"},{\"line\":125,\"text\":\"$repo->updateContentAssociations($category->resource_category_id, $fieldIds);\"},{\"line\":131,\"text\":\"public function actionSave(ParameterBag $params)\"},{\"line\":144,\"text\":\"$this->categorySaveProcess($category)->run();\"},{\"line\":184,\"text\":\"public function actionPermissionsSave(ParameterBag $params)\"},{\"line\":186,\"text\":\"return $this->getCategoryPermissionPlugin()->actionSave($params);\"}],\"present\":true,\"sha256\":\"4896715a8a0d00b8f4bf09dd0e28458f410ef8b27d1125711a5d1da3bc661ad6\"},\"category_entity\":{\"bytes\":15749,\"hits\":[{\"line\":6,\"text\":\"use XF\\\\Draft;\"},{\"line\":12,\"text\":\"use XF\\\\Entity\\\\ViewableInterface;\"},{\"line\":18,\"text\":\"* COLUMNS\"},{\"line\":38,\"text\":\"* @property bool $always_moderate_create\"},{\"line\":39,\"text\":\"* @property bool $always_moderate_update\"},{\"line\":40,\"text\":\"* @property int $min_tags\"},{\"line\":45,\"text\":\"* @property int $display_order\"},{\"line\":53,\"text\":\"* @property-read Draft $draft_resource\"},{\"line\":58,\"text\":\"* @property-read AbstractCollection<\\\\XF\\\\Entity\\\\Draft> $DraftResources\"},{\"line\":61,\"text\":\"class Category extends AbstractCategoryTree implements LinkableInterface, ViewableInterface\"},{\"line\":63,\"text\":\"protected $_viewableDescendants = [];\"},{\"line\":70,\"text\":\"public function canViewDeletedResources()\"},{\"line\":72,\"text\":\"return $this->hasPermission('viewDeleted');\"},{\"line\":75,\"text\":\"public function canViewModeratedResources()\"},{\"line\":77,\"text\":\"return $this->hasPermission('viewModerated');\"},{\"line\":173,\"text\":\"public function getViewableDescendants()\"},{\"line\":176,\"text\":\"if (!isset($this->_viewableDescendants[$userId]))\"},{\"line\":178,\"text\":\"$viewable = $this->repository('XFRM:Category')->getViewableCategories($this);\"},{\"line\":179,\"text\":\"$this->_viewableDescendants[$userId] = $viewable->toArray();\"},{\"line\":182,\"text\":\"return $this->_viewableDescendants[$userId];\"},{\"line\":185,\"text\":\"public function cacheViewableDescendents(array $descendents, $userId = null)\"},{\"line\":192,\"text\":\"$this->_viewableDescendants[$userId] = $descendents;\"},{\"line\":196,\"text\":\"* @return Draft\"},{\"line\":198,\"text\":\"public function getDraftResource()\"},{\"line\":200,\"text\":\"return Draft::createFromEntity($this, 'DraftResources');\"},{\"line\":309,\"text\":\"return 'visible';\"},{\"line\":314,\"text\":\"return 'moderated';\"},{\"line\":319,\"text\":\"return $this->always_moderate_update ? 'moderated' : 'visible';\"},{\"line\":323,\"text\":\"return $this->always_moderate_create ? 'moderated' : 'visible';\"},{\"line\":405,\"text\":\"AND resource_state = 'visible'\"},{\"line\":417,\"text\":\"AND resource.resource_state = 'visible'\\\",\"},{\"line\":430,\"text\":\"AND resource_state = 'visible'\"},{\"line\":448,\"text\":\"protected function _preSave()\"},{\"line\":547,\"text\":\"public static function getStructure(Structure $structure)\"},{\"line\":553,\"text\":\"$structure->columns = [\"},{\"line\":556,\"text\":\"'required' => 'please_enter_valid_title', 'api' => true,\"},{\"line\":576,\"text\":\"'always_moderate_create' => ['type' => self::BOOL, 'default' => false],\"},{\"line\":577,\"text\":\"'always_moderate_update' => ['type' => self::BOOL, 'default' => false],\"},{\"line\":578,\"text\":\"'min_tags' => ['type' => self::UINT, 'forced' => true, 'default' => 0, 'max' => 100, 'api' => true],\"},{\"line\":585,\"text\":\"'draft_resource' => true,\"},{\"line\":603,\"text\":\"'DraftResources' => [\"},{\"line\":604,\"text\":\"'entity' => 'XF:Draft',\"},{\"line\":607,\"text\":\"['draft_key', '=', 'xfrm-category-', '$resource_category_id'],\"}],\"present\":true,\"sha256\":\"73763c6c3b7d56da646cf04b1f19106b33643daa9bbb6e775141e692b9cf36c2\"},\"category_field_repo\":{\"bytes\":729,\"hits\":[{\"line\":30,\"text\":\"$category->saveIfChanged();\"}],\"present\":true,\"sha256\":\"533bd6390f94189f752059bfa611e53e6ca4711c72a18c7b34322cecc9fe2228\"},\"relevant_files\":[\"src/addons/XFRM/Entity/Category.php\",\"src/addons/XFRM/Entity/CategoryField.php\",\"src/addons/XFRM/Entity/CategoryPrefix.php\",\"src/addons/XFRM/Entity/CategoryReviewField.php\",\"src/addons/XFRM/Entity/CategoryWatch.php\",\"src/addons/XFRM/Entity/ResourceDownload.php\",\"src/addons/XFRM/Entity/ResourceField.php\",\"src/addons/XFRM/Entity/ResourceFieldValue.php\",\"src/addons/XFRM/Entity/ResourceItem.php\",\"src/addons/XFRM/Entity/ResourcePrefix.php\",\"src/addons/XFRM/Entity/ResourcePrefixGroup.php\",\"src/addons/XFRM/Entity/ResourceRating.php\",\"src/addons/XFRM/Entity/ResourceReviewField.php\",\"src/addons/XFRM/Entity/ResourceReviewFieldValue.php\",\"src/addons/XFRM/Entity/ResourceTeamMember.php\",\"src/addons/XFRM/Entity/ResourceUpdate.php\",\"src/addons/XFRM/Entity/ResourceVersion.php\",\"src/addons/XFRM/Entity/ResourceWatch.php\",\"src/addons/XFRM/Repository/Category.php\",\"src/addons/XFRM/Repository/CategoryField.php\",\"src/addons/XFRM/Repository/CategoryPrefix.php\",\"src/addons/XFRM/Repository/CategoryReviewField.php\",\"src/addons/XFRM/Repository/CategoryWatch.php\",\"src/addons/XFRM/Repository/ResourceField.php\",\"src/addons/XFRM/Repository/ResourceItem.php\",\"src/addons/XFRM/Repository/ResourcePrefix.php\",\"src/addons/XFRM/Repository/ResourceRating.php\",\"src/addons/XFRM/Repository/ResourceReviewField.php\",\"src/addons/XFRM/Repository/ResourceUpdate.php\",\"src/addons/XFRM/Repository/ResourceVersion.php\",\"src/addons/XFRM/Repository/ResourceWatch.php\"],\"resource_create_service\":{\"bytes\":9106,\"hits\":[{\"line\":85,\"text\":\"$this->resource->addCascadedSave($this->description);\"},{\"line\":88,\"text\":\"$this->resource->addCascadedSave($this->version);\"},{\"line\":97,\"text\":\"$this->resource->resource_state = $this->category->getNewContentState();\"},{\"line\":98,\"text\":\"$this->description->message_state = 'visible';\"},{\"line\":137,\"text\":\"public function setTitle($title)\"},{\"line\":143,\"text\":\"public function setContent($title, $description, $format = true)\"},{\"line\":145,\"text\":\"$this->setTitle($title);\"},{\"line\":168,\"text\":\"public function setDescriptionAttachmentHash($hash)\"},{\"line\":227,\"text\":\"if ($this->resource->resource_state == 'visible' && \\\\XF::visitor()->isSpamCheckRequired())\"},{\"line\":257,\"text\":\"$resource->preSave();\"},{\"line\":292,\"text\":\"protected function _save()\"},{\"line\":302,\"text\":\"$resource->save(true, false);\"},{\"line\":303,\"text\":\"// update and version will also be saved now\"},{\"line\":316,\"text\":\"->setContentId($resource->resource_id, true)\"},{\"line\":317,\"text\":\"->save($this->performValidations);\"},{\"line\":325,\"text\":\"$thread = $creator->save();\"},{\"line\":344,\"text\":\"$creator->setContent($this->resource->getExpectedThreadTitle(), $this->getThreadMessage(), false);\"},{\"line\":350,\"text\":\"$thread->discussion_state = $this->resource->resource_state;\"},{\"line\":385,\"text\":\"if ($this->resource->isVisible())\"}],\"present\":true,\"sha256\":\"2c72b9811646927b8abc0ffaee0b2d0358576b4b5cfc359da6fc5c7c13d9e66c\"},\"resource_edit_service\":{\"bytes\":5900,\"hits\":[{\"line\":59,\"text\":\"public function setTitle($title)\"},{\"line\":62,\"text\":\"$this->getDescriptionEditor()->setTitle($title);\"},{\"line\":133,\"text\":\"$this->resource->addCascadedSave($currentVersion);\"},{\"line\":148,\"text\":\"$this->resource->addCascadedSave($currentVersion);\"},{\"line\":217,\"text\":\"$resource->preSave();\"},{\"line\":252,\"text\":\"protected function _save()\"},{\"line\":256,\"text\":\"$resource->save(true, false);\"},{\"line\":260,\"text\":\"$this->descriptionEditor->save();\"},{\"line\":265,\"text\":\"$this->tagChanger->save($this->performValidations);\"},{\"line\":268,\"text\":\"if ($resource->isVisible() && $this->alert && $resource->user_id != \\\\XF::visitor()->user_id)\"}],\"present\":true,\"sha256\":\"b837cb9e5883ad74cc46c417bf5f5490506aecc26a3e458c035078e44964931d\"},\"resource_field_admin\":{\"bytes\":1905,\"hits\":[{\"line\":32,\"text\":\"return 'xfrm_resource_field';\"},{\"line\":59,\"text\":\"protected function saveAdditionalData(FormAction $form, \\\\XF\\\\Entity\\\\AbstractField $field)\"},{\"line\":62,\"text\":\"'viewable_resource' => 'bool',\"},{\"line\":65,\"text\":\"$form->basicEntitySave($field, $input);\"}],\"present\":true,\"sha256\":\"70af86b0164a4d9089bf740857557a5d1d26063b7b7496ae78cd7c7e2e64f9c3\"},\"resource_field_entity\":{\"bytes\":2019,\"hits\":[{\"line\":12,\"text\":\"* COLUMNS\"},{\"line\":13,\"text\":\"* @property string $field_id\"},{\"line\":14,\"text\":\"* @property int $display_order\"},{\"line\":15,\"text\":\"* @property string $field_type\"},{\"line\":16,\"text\":\"* @property array|null $field_choices\"},{\"line\":17,\"text\":\"* @property string $match_type\"},{\"line\":18,\"text\":\"* @property array|null $match_params\"},{\"line\":19,\"text\":\"* @property int $max_length\"},{\"line\":20,\"text\":\"* @property bool $required\"},{\"line\":22,\"text\":\"* @property string $display_group\"},{\"line\":24,\"text\":\"* @property bool $viewable_resource\"},{\"line\":44,\"text\":\"return 'xfrm_resource_field';\"},{\"line\":53,\"text\":\"$this->db()->delete('xf_rm_resource_field_value', 'field_id = ?', $this->field_id);\"},{\"line\":58,\"text\":\"public static function getStructure(Structure $structure)\"},{\"line\":62,\"text\":\"'xf_rm_resource_field',\"},{\"line\":73,\"text\":\"$structure->columns += [\"},{\"line\":74,\"text\":\"'viewable_resource' => ['type' => self::BOOL, 'default' => true],\"},{\"line\":80,\"text\":\"'conditions' => 'field_id',\"}],\"present\":true,\"sha256\":\"c4cb2a33b80db12e54a010609140e1c9735b9055812b0d70d64827fe16c34246\"},\"resource_item_controller\":{\"bytes\":49966,\"hits\":[{\"line\":6,\"text\":\"use XF\\\\ControllerPlugin\\\\DraftPlugin;\"},{\"line\":72,\"text\":\"$viewableCategoryIds = $categoryParams['categories']->keys();\"},{\"line\":74,\"text\":\"$listParams = $overviewPlugin->getCoreListData($viewableCategoryIds);\"},{\"line\":103,\"text\":\"$viewableCategoryIds = $this->getCategoryRepo()->getViewableCategoryIds();\"},{\"line\":106,\"text\":\"$finder = $ratingRepo->findLatestReviews($viewableCategoryIds);\"},{\"line\":116,\"text\":\"$reviews = $reviews->filterViewable();\"},{\"line\":140,\"text\":\"$categories = $categoryRepo->getViewableCategories();\"},{\"line\":186,\"text\":\"$resource = $this->assertViewableResource($params->resource_id, $this->getResourceViewExtraWith());\"},{\"line\":230,\"text\":\"$authorOthers = $authorOthers->filterViewable();\"},{\"line\":301,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":316,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":339,\"text\":\"return $this->view('XFRM:ResourceItem\\\\Field', 'xfrm_resource_field', $viewParams);\"},{\"line\":346,\"text\":\"$resource = $this->assertViewableResource($params->resource_id, $this->getResourceViewExtraWith());\"},{\"line\":391,\"text\":\"$resource = $this->assertViewableResource($params->resource_id, $this->getResourceViewExtraWith());\"},{\"line\":510,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":587,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":597,\"text\":\"$resource = $this->assertViewableResource($params->resource_id, $this->getResourceViewExtraWith());\"},{\"line\":638,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":716,\"text\":\"$resource = $this->assertViewableResource($params->resource_id, $extraWith);\"},{\"line\":764,\"text\":\"$rating = $rater->save();\"},{\"line\":851,\"text\":\"$updateCreator->setTitle($this->filter('update_title', 'str'));\"},{\"line\":868,\"text\":\"$updater->getResource()->draft_update->delete();\"},{\"line\":873,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":893,\"text\":\"$teamManager->save();\"},{\"line\":913,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":947,\"text\":\"$teamManager->save();\"},{\"line\":971,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":989,\"text\":\"$updater->save();\"},{\"line\":1006,\"text\":\"$draft = $resource->draft_update;\"},{\"line\":1010,\"text\":\"$updateAttachData = $attachmentRepo->getEditorData('resource_update', $resource, $draft->attachment_hash);\"},{\"line\":1029,\"text\":\"public function actionPostUpdateDraft(ParameterBag $params)\"},{\"line\":1031,\"text\":\"$this->assertDraftsEnabled();\"},{\"line\":1033,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1044,\"text\":\"/** @var DraftPlugin $draftPlugin */\"},{\"line\":1045,\"text\":\"$draftPlugin = $this->plugin('XF:Draft');\"},{\"line\":1046,\"text\":\"return $draftPlugin->actionDraftMessage($resource->draft_update, $extraData, 'update_message');\"},{\"line\":1051,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1062,\"text\":\"$updateCreator->setTitle($this->filter('update_title', 'str'));\"},{\"line\":1108,\"text\":\"$editor->setTitle($this->filter('title', 'str'));\"},{\"line\":1162,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1180,\"text\":\"$editor->save();\"},{\"line\":1229,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1267,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1352,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1367,\"text\":\"$typeChanger->save();\"},{\"line\":1429,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1455,\"text\":\"$categories = $categoryRepo->getViewableCategories();\"},{\"line\":1469,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1486,\"text\":\"$tagger->save();\"},{\"line\":1494,\"text\":\"$reply->setJsonParam('message', \\\\XF::phrase('your_changes_have_been_saved'));\"},{\"line\":1518,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1562,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1600,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1640,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1653,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1700,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1709,\"text\":\"'resource_state'\"},{\"line\":1715,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1732,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1747,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1774,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1828,\"text\":\"protected function assertViewableResource($resourceId, array $extraWith = [])\"},{\"line\":1861,\"text\":\"$this->setContentKey('resource-' . $resource->resource_id);\"},{\"line\":1899,\"text\":\"foreach ($resources->filterViewable() AS $id => $resource)\"}],\"present\":true,\"sha256\":\"78aaaaaf3ad95aedde7b4a1e4d8ec026b9a305dd4a2a23172d28a756244b9f67\"},\"resource_item_entity\":{\"bytes\":55733,\"hits\":[{\"line\":8,\"text\":\"use XF\\\\Draft;\"},{\"line\":24,\"text\":\"use XF\\\\Entity\\\\ViewableInterface;\"},{\"line\":40,\"text\":\"* COLUMNS\"},{\"line\":49,\"text\":\"* @property string $resource_state\"},{\"line\":88,\"text\":\"* @property-read Draft $draft_update\"},{\"line\":102,\"text\":\"* @property-read AbstractCollection<\\\\XF\\\\Entity\\\\Draft> $DraftUpdates\"},{\"line\":106,\"text\":\"class ResourceItem extends Entity implements ContainableInterface, DatableInterface, LinkableInterface, ViewableInterface\"},{\"line\":132,\"text\":\"public function getStructuredData(): array\"},{\"line\":156,\"text\":\"'discussionUrl' => $this->hasViewableDiscussion()\"},{\"line\":265,\"text\":\"if ($this->resource_state == 'moderated')\"},{\"line\":268,\"text\":\"!$this->hasPermission('viewModerated')\"},{\"line\":276,\"text\":\"else if ($this->resource_state == 'deleted')\"},{\"line\":278,\"text\":\"if (!$this->hasPermission('viewDeleted'))\"},{\"line\":288,\"text\":\"public function canViewDeletedContent()\"},{\"line\":290,\"text\":\"return $this->hasPermission('viewDeleted');\"},{\"line\":293,\"text\":\"public function canViewModeratedContent()\"},{\"line\":296,\"text\":\"if ($this->hasPermission('viewModerated'))\"},{\"line\":336,\"text\":\"public function canRate($checkDownloadIfRequired = true, &$error = null)\"},{\"line\":338,\"text\":\"if (!$this->isVisible())\"},{\"line\":355,\"text\":\"if ($checkDownloadIfRequired && $this->isDownloadable() && $this->app()->options()->xfrmRequireDownloadToRate)\"},{\"line\":368,\"text\":\"public function canRatePreReg($checkDownloadIfRequired = true)\"},{\"line\":378,\"text\":\"function () use ($checkDownloadIfRequired) { return $this->canRate($checkDownloadIfRequired); }\"},{\"line\":564,\"text\":\"|| !$this->isVisible()\"},{\"line\":635,\"text\":\"return $this->isVisible();\"},{\"line\":684,\"text\":\"&& $this->resource_state == 'visible'\"},{\"line\":737,\"text\":\"public function isVisible()\"},{\"line\":739,\"text\":\"return ($this->resource_state == 'visible');\"},{\"line\":859,\"text\":\"public function hasViewableDiscussion()\"},{\"line\":923,\"text\":\"$state = $currentValues ? $this->getValue('resource_state') : $this->getExistingValue('resource_state');\"},{\"line\":933,\"text\":\"if ($state != 'visible' && $options->xfrmResourceDeleteThreadAction['update_title'])\"},{\"line\":964,\"text\":\"}, 'save');\"},{\"line\":984,\"text\":\"}, 'save');\"},{\"line\":993,\"text\":\"* @return Draft\"},{\"line\":995,\"text\":\"public function getDraftUpdate()\"},{\"line\":997,\"text\":\"return Draft::createFromEntity($this, 'DraftUpdates');\"},{\"line\":1055,\"text\":\"if (!$this->canViewDeletedContent() && !$this->canViewModeratedContent())\"},{\"line\":1072,\"text\":\"if (!$this->canViewDeletedContent())\"},{\"line\":1139,\"text\":\"AND message_state = 'visible'\"},{\"line\":1160,\"text\":\"AND message_state = 'visible'\"},{\"line\":1173,\"text\":\"AND rating_state = 'visible'\"},{\"line\":1187,\"text\":\"AND rating_state = 'visible'\"},{\"line\":1218,\"text\":\"AND version_state = 'visible'\"},{\"line\":1275,\"text\":\"protected function _preSave()\"},{\"line\":1310,\"text\":\"protected function _postSave()\"},{\"line\":1312,\"text\":\"$visibilityChange = $this->isStateChanged('resource_state', 'visible');\"},{\"line\":1313,\"text\":\"$approvalChange = $this->isStateChanged('resource_state', 'moderated');\"},{\"line\":1314,\"text\":\"$deletionChange = $this->isStateChanged('resource_state', 'deleted');\"},{\"line\":1320,\"text\":\"$this->resourceMadeVisible();\"},{\"line\":1354,\"text\":\"if ($this->resource_state == 'visible')\"},{\"line\":1356,\"text\":\"$this->resourceInsertedVisible();\"},{\"line\":1377,\"text\":\"$oldDiscussion->save(false, false);\"},{\"line\":1388,\"text\":\"$this->Discussion->save(false, false);\"},{\"line\":1401,\"text\":\"$this->Discussion->saveIfChanged($saved, false, false);\"},{\"line\":1410,\"text\":\"$approvalQueue->save();\"},{\"line\":1416,\"text\":\"$delLog->save();\"},{\"line\":1426,\"text\":\"$this->_postSaveBookmarks();\"},{\"line\":1429,\"text\":\"protected function resourceMadeVisible()\"},{\"line\":1440,\"text\":\"$thread->discussion_state = 'visible';\"},{\"line\":1449,\"text\":\"$thread->saveIfChanged($saved, false, false);\"},{\"line\":1468,\"text\":\"$thread->discussion_state = 'deleted';\"},{\"line\":1477,\"text\":\"$thread->saveIfChanged($saved, false, false);\"},{\"line\":1494,\"text\":\"protected function resourceInsertedVisible()\"},{\"line\":1512,\"text\":\"if ($this->resource_state == 'visible')\"},{\"line\":1581,\"text\":\"if ($this->resource_state == 'visible')\"},{\"line\":1584,\"text\":\"$category->save();\"},{\"line\":1587,\"text\":\"if ($this->getExistingValue('resource_state') == 'visible')\"},{\"line\":1594,\"text\":\"$oldCategory->save();\"},{\"line\":1605,\"text\":\"if ($this->resource_state == 'visible' && $thread->discussion_state == 'deleted')\"},{\"line\":1607,\"text\":\"// presumably the thread was soft deleted by being moved to a category without a thread\"},{\"line\":1608,\"text\":\"$thread->discussion_state = 'visible';\"},{\"line\":1614,\"text\":\"$thread->discussion_state = 'deleted';\"},{\"line\":1617,\"text\":\"$thread->saveIfChanged($saved, false, false);\"},{\"line\":1623,\"text\":\"// check for entering/leaving visible\"},{\"line\":1624,\"text\":\"$visibilityChange = $this->isStateChanged('resource_state', 'visible');\"},{\"line\":1628,\"text\":\"$category->save();\"},{\"line\":1633,\"text\":\"$category->save();\"},{\"line\":1635,\"text\":\"else if ($this->isUpdate() && $this->resource_state == 'visible')\"},{\"line\":1638,\"text\":\"$category->save();\"},{\"line\":1644,\"text\":\"if ($this->resource_state == 'visible')\"},{\"line\":1649,\"text\":\"if ($this->Category && $this->resource_state == 'visible')\"},{\"line\":1652,\"text\":\"$this->Category->save();\"},{\"line\":1655,\"text\":\"if ($this->resource_state == 'deleted' && $this->DeletionLog)\"},{\"line\":1660,\"text\":\"if ($this->resource_state == 'moderated' && $this->ApprovalQueue)\"},{\"line\":1744,\"text\":\"if ($this->resource_state == 'deleted')\"},{\"line\":1749,\"text\":\"$this->resource_state = 'deleted';\"},{\"line\":1756,\"text\":\"$this->save();\"},{\"line\":1820,\"text\":\"'discussionUrl' => $this->hasViewableDiscussion()\"},{\"line\":2009,\"text\":\"public static function getStructure(Structure $structure)\"},{\"line\":2015,\"text\":\"$structure->columns = [\"},{\"line\":2018,\"text\":\"'required' => 'please_enter_valid_title',\"},{\"line\":2023,\"text\":\"'required' => 'xfrm_please_enter_valid_tag_line',\"},{\"line\":2027,\"text\":\"'user_id' => ['type' => self::UINT, 'required' => true, 'api' => true],\"},{\"line\":2029,\"text\":\"'required' => 'please_enter_valid_name',\"},{\"line\":2034,\"text\":\"'resource_state' => ['type' => self::STR, 'default' => 'visible',\"},{\"line\":2035,\"text\":\"'allowedValues' => ['visible', 'moderated', 'deleted'], 'api' => true,\"},{\"line\":2037,\"text\":\"'resource_type' => ['type' => self::STR, 'required' => true,\"},{\"line\":2041,\"text\":\"'resource_category_id' => ['type' => self::UINT, 'required' => true, 'api' => true],\"},{\"line\":2084,\"text\":\"'draft_update' => true,\"},{\"line\":2088,\"text\":\"'XF:Taggable' => ['stateField' => 'resource_state'],\"},{\"line\":2090,\"text\":\"'checkForUpdates' => ['title', 'resource_category_id', 'user_id', 'prefix_id', 'tags', 'resource_state'],\"},{\"line\":2096,\"text\":\"'checkForUpdates' => ['resource_category_id', 'resource_state', 'prefix_id'],\"},{\"line\":2103,\"text\":\"'stateField' => 'resource_state',\"},{\"line\":2106,\"text\":\"'valueTable' => 'xf_rm_resource_field_value',\"},{\"line\":2113,\"text\":\"'stateField' => 'resource_state',\"},{\"line\":2189,\"text\":\"'DraftUpdates' => [\"},{\"line\":2190,\"text\":\"'entity' => 'XF:Draft',\"},{\"line\":2193,\"text\":\"['draft_key', '=', 'xfrm-resource-', '$resource_id'],\"}],\"present\":true,\"sha256\":\"703773471dd35c876a0fed578a60dfc51e1dafc9520ad1493282b50fd9e05262\"}},\"tables\":{\"xf_draft\":true,\"xf_rm_category\":true,\"xf_rm_category_field\":true,\"xf_rm_category_prefix\":true,\"xf_rm_resource\":true,\"xf_rm_resource_field\":true,\"xf_rm_resource_field_value\":true,\"xf_rm_resource_prefix\":true,\"xf_tag\":true,\"xf_tag_content\":true},\"user1\":{\"admin_row_count\":1,\"is_staff\":1,\"permission_combination_id\":6,\"user_id\":1,\"user_state\":\"valid\",\"username\":\"Newfi\"}}\nNEWFI95_PUBLIC_RESOURCE={\"effective\":\"https://newfi.ru/resources/\",\"http\":200}\nNEWFI95_SAFE_REPORT={\"changes_made\":false,\"counts\":{\"categories\":1,\"category_fields\":0,\"drafts\":0,\"resource_fields\":0,\"resources\":0},\"decision\":\"PASS_KB204_XFRM_CONTRACT_AUDIT_CAPTURED\",\"git_head\":\"4a7b85eca9c1d6393dbf15f9c9bfa4703072beb0\",\"options\":[{\"option_id\":\"enableTagging\",\"option_value\":\"0\"},{\"option_id\":\"xfrmAllowAnonReview\",\"option_value\":\"0\"},{\"option_id\":\"xfrmAllowIcons\",\"option_value\":\"1\"},{\"option_id\":\"xfrmAuthorOtherResourcesCount\",\"option_value\":\"5\"},{\"option_id\":\"xfrmEnableTeams\",\"option_value\":\"0\"},{\"option_id\":\"xfrmFilelessViewFull\",\"option_value\":\"{\\\"limit\\\":\\\"1\\\",\\\"length\\\":\\\"250\\\"}\"},{\"option_id\":\"xfrmListDefaultOrder\",\"option_value\":\"last_update\"},{\"option_id\":\"xfrmMinimumReviewLength\",\"option_value\":\"0\"},{\"option_id\":\"xfrmPaidResourceThreadTitleTemplate\",\"option_value\":\"{title} [Paid]\"},{\"option_id\":\"xfrmRecentReviewsCount\",\"option_value\":\"10\"},{\"option_id\":\"xfrmRecentUpdatesCount\",\"option_value\":\"3\"},{\"option_id\":\"xfrmRequireDownloadToRate\",\"option_value\":\"1\"},{\"option_id\":\"xfrmResourceCurrencies\",\"option_value\":\"usd\\ncad\\naud\\ngbp\\neur\"},{\"option_id\":\"xfrmResourceDeleteThreadAction\",\"option_value\":\"{\\\"action\\\":\\\"close\\\",\\\"update_title\\\":\\\"1\\\",\\\"title_template\\\":\\\"{title} [Deleted]\\\",\\\"add_post\\\":\\\"1\\\"}\"},{\"option_id\":\"xfrmResourceExtensions\",\"option_value\":\"zip\\ntxt\\npdf\\npng\\njpg\\njpeg\\njpe\\ngif\\npsd\\ntif\\nwebp\"},{\"option_id\":\"xfrmResourceMaxFileSize\",\"option_value\":\"2048\"},{\"option_id\":\"xfrmResourceMaxFiles\",\"option_value\":\"5\"},{\"option_id\":\"xfrmResourcesPerPage\",\"option_value\":\"20\"},{\"option_id\":\"xfrmReviewRequired\",\"option_value\":\"1\"},{\"option_id\":\"xfrmReviewVoting\",\"option_value\":\"yes\"},{\"option_id\":\"xfrmReviewsPerPage\",\"option_value\":\"20\"},{\"option_id\":\"xfrmUpdateMaxLength\",\"option_value\":\"50000\"},{\"option_id\":\"xfrmUpdatesPerPage\",\"option_value\":\"10\"}],\"public_resource\":{\"effective\":\"https://newfi.ru/resources/\",\"http\":200},\"rows\":{\"xf_rm_category\":[{\"allow_commercial_external\":1,\"allow_external\":1,\"allow_fileless\":1,\"allow_local\":1,\"always_moderate_create\":0,\"always_moderate_update\":0,\"auto_feature\":0,\"breadcrumb_data\":\"[]\",\"depth\":0,\"description\":\"\",\"display_order\":10,\"enable_support_url\":1,\"enable_versioning\":1,\"featured_count\":0,\"field_cache\":\"\",\"last_resource_id\":0,\"last_resource_title\":\"\",\"last_update\":0,\"lft\":1,\"min_tags\":0,\"parent_category_id\":0,\"prefix_cache\":\"\",\"require_prefix\":0,\"resource_category_id\":1,\"resource_count\":0,\"review_field_cache\":\"\",\"rgt\":2,\"thread_node_id\":0,\"thread_prefix_id\":0,\"title\":\"База знаний\"}],\"xf_rm_category_field\":[],\"xf_rm_category_prefix\":[],\"xf_rm_resource_field\":[],\"xf_rm_resource_prefix\":[]},\"schemas\":{\"xf_draft\":[{\"Default\":null,\"Extra\":\"auto_increment\",\"Field\":\"draft_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"draft_key\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"varbinary(75)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"user_id\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"last_update\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"message\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"mediumtext\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"extra_data\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"mediumblob\"}],\"xf_rm_category\":[{\"Default\":null,\"Extra\":\"auto_increment\",\"Field\":\"resource_category_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"title\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varchar(100)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"description\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"text\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"parent_category_id\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"display_order\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"lft\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"rgt\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"depth\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"smallint(5) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"breadcrumb_data\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"blob\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"resource_count\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"featured_count\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"smallint(5) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"last_update\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"\",\"Extra\":\"\",\"Field\":\"last_resource_title\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varchar(100)\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"last_resource_id\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"field_cache\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"mediumblob\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"review_field_cache\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"mediumblob\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"prefix_cache\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"mediumblob\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"require_prefix\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"thread_node_id\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"thread_prefix_id\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"allow_local\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"allow_external\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"allow_commercial_external\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"allow_fileless\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"always_moderate_create\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"always_moderate_update\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"min_tags\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"smallint(5) unsigned\"},{\"Default\":\"1\",\"Extra\":\"\",\"Field\":\"enable_versioning\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":\"1\",\"Extra\":\"\",\"Field\":\"enable_support_url\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"auto_feature\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"}],\"xf_rm_category_field\":[{\"Default\":null,\"Extra\":\"\",\"Field\":\"field_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"varbinary(25)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"resource_category_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"}],\"xf_rm_category_prefix\":[{\"Default\":null,\"Extra\":\"\",\"Field\":\"resource_category_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"prefix_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"}],\"xf_rm_resource\":[{\"Default\":null,\"Extra\":\"auto_increment\",\"Field\":\"resource_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"\",\"Extra\":\"\",\"Field\":\"title\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varchar(100)\"},{\"Default\":\"\",\"Extra\":\"\",\"Field\":\"tag_line\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varchar(100)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"user_id\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"\",\"Extra\":\"\",\"Field\":\"username\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varchar(100)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"team_member_user_ids\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"blob\"},{\"Default\":\"visible\",\"Extra\":\"\",\"Field\":\"resource_state\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"enum('visible','moderated','deleted')\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"resource_type\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varchar(25)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"resource_date\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"resource_category_id\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"current_version_id\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"description_update_id\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"discussion_thread_id\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"\",\"Extra\":\"\",\"Field\":\"external_url\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varchar(500)\"},{\"Default\":\"\",\"Extra\":\"\",\"Field\":\"external_purchase_url\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varchar(500)\"},{\"Default\":\"0.00\",\"Extra\":\"\",\"Field\":\"price\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"decimal(10,2) unsigned\"},{\"Default\":\"\",\"Extra\":\"\",\"Field\":\"currency\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varchar(3)\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"view_count\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"download_count\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"rating_count\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"rating_sum\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"rating_avg\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"float unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"rating_weighted\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"float unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"rating_split\",\"Key\":\"\",\"Null\":\"YES\",\"Type\":\"blob\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"update_count\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"review_count\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"last_update\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"\",\"Extra\":\"\",\"Field\":\"alt_support_url\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varchar(500)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"custom_fields\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"mediumblob\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"prefix_id\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"icon_date\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"icon_optimized\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"tags\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"mediumblob\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"featured\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"}],\"xf_rm_resource_field\":[{\"Default\":null,\"Extra\":\"\",\"Field\":\"field_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"varbinary(25)\"},{\"Default\":\"above_info\",\"Extra\":\"\",\"Field\":\"display_group\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"varchar(25)\"},{\"Default\":\"1\",\"Extra\":\"\",\"Field\":\"display_order\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"textbox\",\"Extra\":\"\",\"Field\":\"field_type\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varbinary(25)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"field_choices\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"blob\"},{\"Default\":\"none\",\"Extra\":\"\",\"Field\":\"match_type\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varbinary(25)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"match_params\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"blob\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"max_length\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"required\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"display_template\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"text\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"wrapper_template\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"text\"},{\"Default\":\"1\",\"Extra\":\"\",\"Field\":\"viewable_resource\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"}],\"xf_rm_resource_field_value\":[{\"Default\":null,\"Extra\":\"\",\"Field\":\"resource_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"field_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"varbinary(25)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"field_value\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"mediumtext\"}],\"xf_rm_resource_prefix\":[{\"Default\":null,\"Extra\":\"auto_increment\",\"Field\":\"prefix_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"prefix_group_id\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"display_order\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"materialized_order\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"\",\"Extra\":\"\",\"Field\":\"css_class\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"varchar(50)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"allowed_user_group_ids\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"blob\"}],\"xf_tag\":[{\"Default\":null,\"Extra\":\"auto_increment\",\"Field\":\"tag_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"tag\",\"Key\":\"UNI\",\"Null\":\"NO\",\"Type\":\"varchar(100)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"tag_url\",\"Key\":\"UNI\",\"Null\":\"NO\",\"Type\":\"varchar(100)\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"use_count\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"last_use_date\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":\"0\",\"Extra\":\"\",\"Field\":\"permanent\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"}],\"xf_tag_content\":[{\"Default\":null,\"Extra\":\"auto_increment\",\"Field\":\"tag_content_id\",\"Key\":\"PRI\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"content_type\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"varbinary(25)\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"content_id\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"tag_id\",\"Key\":\"MUL\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"add_user_id\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"add_date\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"visible\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"tinyint(3) unsigned\"},{\"Default\":null,\"Extra\":\"\",\"Field\":\"content_date\",\"Key\":\"\",\"Null\":\"NO\",\"Type\":\"int(10) unsigned\"}]},\"source\":{\"abstract_field_entity\":{\"bytes\":13332,\"hits\":[{\"line\":14,\"text\":\"* COLUMNS\"},{\"line\":15,\"text\":\"* @property string $field_id\"},{\"line\":16,\"text\":\"* @property int $display_order\"},{\"line\":17,\"text\":\"* @property string $field_type\"},{\"line\":18,\"text\":\"* @property array $field_choices\"},{\"line\":19,\"text\":\"* @property string $match_type\"},{\"line\":20,\"text\":\"* @property array $match_params\"},{\"line\":21,\"text\":\"* @property int $max_length\"},{\"line\":22,\"text\":\"* @property bool $required\"},{\"line\":24,\"text\":\"* @property string $display_group\"},{\"line\":25,\"text\":\"* @property string $user_editable\"},{\"line\":49,\"text\":\"return static::getPhrasePrefix() . '_' . ($title ? 'title' : 'desc') . '.' . $this->field_id;\"},{\"line\":91,\"text\":\"if (isset($types[$this->field_type]))\"},{\"line\":93,\"text\":\"$type = $types[$this->field_type]['type'];\"},{\"line\":104,\"text\":\"if (!isset($this->field_choices[$choice]))\"},{\"line\":126,\"text\":\"return static::getPhrasePrefix() . '_' . 'choice' . '.' . $this->field_id . '_' . $choice;\"},{\"line\":156,\"text\":\"$this->error(\\\\XF::phrase('please_enter_text_for_each_choice'), 'field_choices');\"},{\"line\":162,\"text\":\"$this->error(\\\\XF::phrase('please_enter_an_id_using_only_alphanumeric'), 'field_choices');\"},{\"line\":289,\"text\":\"protected function _preSave()\"},{\"line\":291,\"text\":\"if ($this->isUpdate() && $this->isChanged('field_id'))\"},{\"line\":293,\"text\":\"$this->error('The field ID cannot be changed once set.', 'field_id');\"},{\"line\":296,\"text\":\"if ($this->isChanged(['match_type', 'match_params']))\"},{\"line\":298,\"text\":\"$validateMatchTypeMethod = '_validateMatchType' . Php::camelCase($this->get('match_type'));\"},{\"line\":301,\"text\":\"$matchParams = $this->match_params;\"},{\"line\":304,\"text\":\"$this->match_params = $matchParams;\"},{\"line\":308,\"text\":\"$this->error($error, 'match_params');\"},{\"line\":313,\"text\":\"if ($this->isUpdate() && $this->isChanged('field_type'))\"},{\"line\":316,\"text\":\"if ($typeMap[$this->get('field_type')]['compatible'] != $typeMap[$this->getExistingValue('field_type')]['compatible'])\"},{\"line\":318,\"text\":\"$this->error(\\\\XF::phrase('you_may_not_change_field_to_different_type_after_it_has_been_created'), 'field_type');\"},{\"line\":324,\"text\":\"if (($this->isInsert() && !$this->field_choices) || (is_array($this->field_choices) && !$this->field_choices))\"},{\"line\":326,\"text\":\"$this->error(\\\\XF::phrase('please_enter_at_least_one_choice'), 'field_choices', false);\"},{\"line\":331,\"text\":\"protected function _postSave()\"},{\"line\":333,\"text\":\"if ($this->isChanged('field_choices'))\"},{\"line\":338,\"text\":\"$newValues = $this->getValue('field_choices');\"},{\"line\":339,\"text\":\"$oldValues = $this->getExistingValue('field_choices');\"},{\"line\":373,\"text\":\"$phrase->save(true, false);\"},{\"line\":390,\"text\":\"$this->deleteChoicePhrases(array_keys($this->field_choices));\"},{\"line\":411,\"text\":\"\\\\XF::runOnce('rebuildFieldCache' . $this->field_id, function ()\"},{\"line\":422,\"text\":\"* @api-out str $field_id\"},{\"line\":425,\"text\":\"* @api-out int $display_order\"},{\"line\":426,\"text\":\"* @api-out str $field_type\"},{\"line\":427,\"text\":\"* @api-out object $field_choices <cond> For choice types, an ordered list of choices, with \\\"option\\\" and \\\"name\\\" keys for each.\"},{\"line\":428,\"text\":\"* @api-out str $match_type\"},{\"line\":429,\"text\":\"* @api-out array $match_params\"},{\"line\":430,\"text\":\"* @api-out int $max_length\"},{\"line\":431,\"text\":\"* @api-out bool $required\"},{\"line\":432,\"text\":\"* @api-out str $display_group <cond> If this field type supports grouping, the group this field belongs to.\"},{\"line\":446,\"text\":\"foreach ($this->field_choices AS $option => $printable)\"},{\"line\":453,\"text\":\"$result->field_choices = $choices;\"},{\"line\":456,\"text\":\"$result->match_params = (object) $this->match_params;\"},{\"line\":463,\"text\":\"'has_user_editable' => false,\"},{\"line\":464,\"text\":\"'has_user_editable_once' => false,\"},{\"line\":472,\"text\":\"$structure->primaryKey = 'field_id';\"},{\"line\":473,\"text\":\"$structure->columns = [\"},{\"line\":474,\"text\":\"'field_id' => ['type' => self::STR, 'maxLength' => 25,\"},{\"line\":475,\"text\":\"'required' => 'please_enter_valid_field_id',\"},{\"line\":476,\"text\":\"'unique' => 'field_ids_must_be_unique',\"},{\"line\":480,\"text\":\"'display_order' => ['type' => self::UINT, 'default' => 1, 'api' => true],\"},{\"line\":481,\"text\":\"'field_type' => ['type' => self::STR, 'default' => 'textbox',\"},{\"line\":485,\"text\":\"'field_choices' => ['type' => self::JSON_ARRAY, 'default' => []],\"},{\"line\":486,\"text\":\"'match_type' => ['type' => self::STR, 'default' => 'none',\"},{\"line\":490,\"text\":\"'match_params' => ['type' => self::JSON_ARRAY, 'default' => []],\"},{\"line\":491,\"text\":\"'max_length' => ['type' => self::UINT, 'default' => 0, 'api' => true],\"},{\"line\":492,\"text\":\"'required' => ['type' => self::BOOL, 'default' => false, 'api' => true],\"},{\"line\":499,\"text\":\"$structure->columns['display_group'] = ['type' => self::STR, 'default' => $firstOption,\"},{\"line\":504,\"text\":\"if ($options['has_user_editable'])\"},{\"line\":506,\"text\":\"$userEditAllowedValues = $options['has_user_editable_once'] ? ['yes', 'once', 'never'] : ['yes', 'never'];\"},{\"line\":507,\"text\":\"$structure->columns['user_editable'] = ['type' => self::STR, 'default' => 'yes',\"},{\"line\":513,\"text\":\"$structure->columns['moderator_editable'] = ['type' => self::BOOL, 'default' => true];\"},{\"line\":517,\"text\":\"$structure->columns['editable_user_group_ids'] = [\"},{\"line\":529,\"text\":\"$structure->columns['wrapper_template'] = ['type' => self::STR, 'default' => ''];\"},{\"line\":544,\"text\":\"['title', '=', $phrasePrefix . '_title.', '$field_id'],\"},{\"line\":552,\"text\":\"['title', '=', $phrasePrefix . '_desc.', '$field_id'],\"}],\"present\":true,\"sha256\":\"f5a7d03f0b656ecae7a225aafe363eb79a925054a3d2fefdcc0bdf4e6a41695f\"},\"category_admin\":{\"bytes\":5702,\"hits\":[{\"line\":59,\"text\":\"$availableFields = $availableFields->pluckNamed('title', 'field_id');\"},{\"line\":87,\"text\":\"protected function categorySaveProcess(\\\\XFRM\\\\Entity\\\\Category $category)\"},{\"line\":93,\"text\":\"'display_order' => 'uint',\"},{\"line\":100,\"text\":\"'always_moderate_create' => 'bool',\"},{\"line\":101,\"text\":\"'always_moderate_update' => 'bool',\"},{\"line\":102,\"text\":\"'min_tags' => 'uint',\"},{\"line\":110,\"text\":\"$form->basicEntitySave($category, $entityInput);\"},{\"line\":117,\"text\":\"$repo->updateContentAssociations($category->resource_category_id, $prefixIds);\"},{\"line\":120,\"text\":\"$fieldIds = $this->filter('available_fields', 'array-str');\"},{\"line\":125,\"text\":\"$repo->updateContentAssociations($category->resource_category_id, $fieldIds);\"},{\"line\":131,\"text\":\"public function actionSave(ParameterBag $params)\"},{\"line\":144,\"text\":\"$this->categorySaveProcess($category)->run();\"},{\"line\":184,\"text\":\"public function actionPermissionsSave(ParameterBag $params)\"},{\"line\":186,\"text\":\"return $this->getCategoryPermissionPlugin()->actionSave($params);\"}],\"present\":true,\"sha256\":\"4896715a8a0d00b8f4bf09dd0e28458f410ef8b27d1125711a5d1da3bc661ad6\"},\"category_entity\":{\"bytes\":15749,\"hits\":[{\"line\":6,\"text\":\"use XF\\\\Draft;\"},{\"line\":12,\"text\":\"use XF\\\\Entity\\\\ViewableInterface;\"},{\"line\":18,\"text\":\"* COLUMNS\"},{\"line\":38,\"text\":\"* @property bool $always_moderate_create\"},{\"line\":39,\"text\":\"* @property bool $always_moderate_update\"},{\"line\":40,\"text\":\"* @property int $min_tags\"},{\"line\":45,\"text\":\"* @property int $display_order\"},{\"line\":53,\"text\":\"* @property-read Draft $draft_resource\"},{\"line\":58,\"text\":\"* @property-read AbstractCollection<\\\\XF\\\\Entity\\\\Draft> $DraftResources\"},{\"line\":61,\"text\":\"class Category extends AbstractCategoryTree implements LinkableInterface, ViewableInterface\"},{\"line\":63,\"text\":\"protected $_viewableDescendants = [];\"},{\"line\":70,\"text\":\"public function canViewDeletedResources()\"},{\"line\":72,\"text\":\"return $this->hasPermission('viewDeleted');\"},{\"line\":75,\"text\":\"public function canViewModeratedResources()\"},{\"line\":77,\"text\":\"return $this->hasPermission('viewModerated');\"},{\"line\":173,\"text\":\"public function getViewableDescendants()\"},{\"line\":176,\"text\":\"if (!isset($this->_viewableDescendants[$userId]))\"},{\"line\":178,\"text\":\"$viewable = $this->repository('XFRM:Category')->getViewableCategories($this);\"},{\"line\":179,\"text\":\"$this->_viewableDescendants[$userId] = $viewable->toArray();\"},{\"line\":182,\"text\":\"return $this->_viewableDescendants[$userId];\"},{\"line\":185,\"text\":\"public function cacheViewableDescendents(array $descendents, $userId = null)\"},{\"line\":192,\"text\":\"$this->_viewableDescendants[$userId] = $descendents;\"},{\"line\":196,\"text\":\"* @return Draft\"},{\"line\":198,\"text\":\"public function getDraftResource()\"},{\"line\":200,\"text\":\"return Draft::createFromEntity($this, 'DraftResources');\"},{\"line\":309,\"text\":\"return 'visible';\"},{\"line\":314,\"text\":\"return 'moderated';\"},{\"line\":319,\"text\":\"return $this->always_moderate_update ? 'moderated' : 'visible';\"},{\"line\":323,\"text\":\"return $this->always_moderate_create ? 'moderated' : 'visible';\"},{\"line\":405,\"text\":\"AND resource_state = 'visible'\"},{\"line\":417,\"text\":\"AND resource.resource_state = 'visible'\\\",\"},{\"line\":430,\"text\":\"AND resource_state = 'visible'\"},{\"line\":448,\"text\":\"protected function _preSave()\"},{\"line\":547,\"text\":\"public static function getStructure(Structure $structure)\"},{\"line\":553,\"text\":\"$structure->columns = [\"},{\"line\":556,\"text\":\"'required' => 'please_enter_valid_title', 'api' => true,\"},{\"line\":576,\"text\":\"'always_moderate_create' => ['type' => self::BOOL, 'default' => false],\"},{\"line\":577,\"text\":\"'always_moderate_update' => ['type' => self::BOOL, 'default' => false],\"},{\"line\":578,\"text\":\"'min_tags' => ['type' => self::UINT, 'forced' => true, 'default' => 0, 'max' => 100, 'api' => true],\"},{\"line\":585,\"text\":\"'draft_resource' => true,\"},{\"line\":603,\"text\":\"'DraftResources' => [\"},{\"line\":604,\"text\":\"'entity' => 'XF:Draft',\"},{\"line\":607,\"text\":\"['draft_key', '=', 'xfrm-category-', '$resource_category_id'],\"}],\"present\":true,\"sha256\":\"73763c6c3b7d56da646cf04b1f19106b33643daa9bbb6e775141e692b9cf36c2\"},\"category_field_repo\":{\"bytes\":729,\"hits\":[{\"line\":30,\"text\":\"$category->saveIfChanged();\"}],\"present\":true,\"sha256\":\"533bd6390f94189f752059bfa611e53e6ca4711c72a18c7b34322cecc9fe2228\"},\"relevant_files\":[\"src/addons/XFRM/Entity/Category.php\",\"src/addons/XFRM/Entity/CategoryField.php\",\"src/addons/XFRM/Entity/CategoryPrefix.php\",\"src/addons/XFRM/Entity/CategoryReviewField.php\",\"src/addons/XFRM/Entity/CategoryWatch.php\",\"src/addons/XFRM/Entity/ResourceDownload.php\",\"src/addons/XFRM/Entity/ResourceField.php\",\"src/addons/XFRM/Entity/ResourceFieldValue.php\",\"src/addons/XFRM/Entity/ResourceItem.php\",\"src/addons/XFRM/Entity/ResourcePrefix.php\",\"src/addons/XFRM/Entity/ResourcePrefixGroup.php\",\"src/addons/XFRM/Entity/ResourceRating.php\",\"src/addons/XFRM/Entity/ResourceReviewField.php\",\"src/addons/XFRM/Entity/ResourceReviewFieldValue.php\",\"src/addons/XFRM/Entity/ResourceTeamMember.php\",\"src/addons/XFRM/Entity/ResourceUpdate.php\",\"src/addons/XFRM/Entity/ResourceVersion.php\",\"src/addons/XFRM/Entity/ResourceWatch.php\",\"src/addons/XFRM/Repository/Category.php\",\"src/addons/XFRM/Repository/CategoryField.php\",\"src/addons/XFRM/Repository/CategoryPrefix.php\",\"src/addons/XFRM/Repository/CategoryReviewField.php\",\"src/addons/XFRM/Repository/CategoryWatch.php\",\"src/addons/XFRM/Repository/ResourceField.php\",\"src/addons/XFRM/Repository/ResourceItem.php\",\"src/addons/XFRM/Repository/ResourcePrefix.php\",\"src/addons/XFRM/Repository/ResourceRating.php\",\"src/addons/XFRM/Repository/ResourceReviewField.php\",\"src/addons/XFRM/Repository/ResourceUpdate.php\",\"src/addons/XFRM/Repository/ResourceVersion.php\",\"src/addons/XFRM/Repository/ResourceWatch.php\"],\"resource_create_service\":{\"bytes\":9106,\"hits\":[{\"line\":85,\"text\":\"$this->resource->addCascadedSave($this->description);\"},{\"line\":88,\"text\":\"$this->resource->addCascadedSave($this->version);\"},{\"line\":97,\"text\":\"$this->resource->resource_state = $this->category->getNewContentState();\"},{\"line\":98,\"text\":\"$this->description->message_state = 'visible';\"},{\"line\":137,\"text\":\"public function setTitle($title)\"},{\"line\":143,\"text\":\"public function setContent($title, $description, $format = true)\"},{\"line\":145,\"text\":\"$this->setTitle($title);\"},{\"line\":168,\"text\":\"public function setDescriptionAttachmentHash($hash)\"},{\"line\":227,\"text\":\"if ($this->resource->resource_state == 'visible' && \\\\XF::visitor()->isSpamCheckRequired())\"},{\"line\":257,\"text\":\"$resource->preSave();\"},{\"line\":292,\"text\":\"protected function _save()\"},{\"line\":302,\"text\":\"$resource->save(true, false);\"},{\"line\":303,\"text\":\"// update and version will also be saved now\"},{\"line\":316,\"text\":\"->setContentId($resource->resource_id, true)\"},{\"line\":317,\"text\":\"->save($this->performValidations);\"},{\"line\":325,\"text\":\"$thread = $creator->save();\"},{\"line\":344,\"text\":\"$creator->setContent($this->resource->getExpectedThreadTitle(), $this->getThreadMessage(), false);\"},{\"line\":350,\"text\":\"$thread->discussion_state = $this->resource->resource_state;\"},{\"line\":385,\"text\":\"if ($this->resource->isVisible())\"}],\"present\":true,\"sha256\":\"2c72b9811646927b8abc0ffaee0b2d0358576b4b5cfc359da6fc5c7c13d9e66c\"},\"resource_edit_service\":{\"bytes\":5900,\"hits\":[{\"line\":59,\"text\":\"public function setTitle($title)\"},{\"line\":62,\"text\":\"$this->getDescriptionEditor()->setTitle($title);\"},{\"line\":133,\"text\":\"$this->resource->addCascadedSave($currentVersion);\"},{\"line\":148,\"text\":\"$this->resource->addCascadedSave($currentVersion);\"},{\"line\":217,\"text\":\"$resource->preSave();\"},{\"line\":252,\"text\":\"protected function _save()\"},{\"line\":256,\"text\":\"$resource->save(true, false);\"},{\"line\":260,\"text\":\"$this->descriptionEditor->save();\"},{\"line\":265,\"text\":\"$this->tagChanger->save($this->performValidations);\"},{\"line\":268,\"text\":\"if ($resource->isVisible() && $this->alert && $resource->user_id != \\\\XF::visitor()->user_id)\"}],\"present\":true,\"sha256\":\"b837cb9e5883ad74cc46c417bf5f5490506aecc26a3e458c035078e44964931d\"},\"resource_field_admin\":{\"bytes\":1905,\"hits\":[{\"line\":32,\"text\":\"return 'xfrm_resource_field';\"},{\"line\":59,\"text\":\"protected function saveAdditionalData(FormAction $form, \\\\XF\\\\Entity\\\\AbstractField $field)\"},{\"line\":62,\"text\":\"'viewable_resource' => 'bool',\"},{\"line\":65,\"text\":\"$form->basicEntitySave($field, $input);\"}],\"present\":true,\"sha256\":\"70af86b0164a4d9089bf740857557a5d1d26063b7b7496ae78cd7c7e2e64f9c3\"},\"resource_field_entity\":{\"bytes\":2019,\"hits\":[{\"line\":12,\"text\":\"* COLUMNS\"},{\"line\":13,\"text\":\"* @property string $field_id\"},{\"line\":14,\"text\":\"* @property int $display_order\"},{\"line\":15,\"text\":\"* @property string $field_type\"},{\"line\":16,\"text\":\"* @property array|null $field_choices\"},{\"line\":17,\"text\":\"* @property string $match_type\"},{\"line\":18,\"text\":\"* @property array|null $match_params\"},{\"line\":19,\"text\":\"* @property int $max_length\"},{\"line\":20,\"text\":\"* @property bool $required\"},{\"line\":22,\"text\":\"* @property string $display_group\"},{\"line\":24,\"text\":\"* @property bool $viewable_resource\"},{\"line\":44,\"text\":\"return 'xfrm_resource_field';\"},{\"line\":53,\"text\":\"$this->db()->delete('xf_rm_resource_field_value', 'field_id = ?', $this->field_id);\"},{\"line\":58,\"text\":\"public static function getStructure(Structure $structure)\"},{\"line\":62,\"text\":\"'xf_rm_resource_field',\"},{\"line\":73,\"text\":\"$structure->columns += [\"},{\"line\":74,\"text\":\"'viewable_resource' => ['type' => self::BOOL, 'default' => true],\"},{\"line\":80,\"text\":\"'conditions' => 'field_id',\"}],\"present\":true,\"sha256\":\"c4cb2a33b80db12e54a010609140e1c9735b9055812b0d70d64827fe16c34246\"},\"resource_item_controller\":{\"bytes\":49966,\"hits\":[{\"line\":6,\"text\":\"use XF\\\\ControllerPlugin\\\\DraftPlugin;\"},{\"line\":72,\"text\":\"$viewableCategoryIds = $categoryParams['categories']->keys();\"},{\"line\":74,\"text\":\"$listParams = $overviewPlugin->getCoreListData($viewableCategoryIds);\"},{\"line\":103,\"text\":\"$viewableCategoryIds = $this->getCategoryRepo()->getViewableCategoryIds();\"},{\"line\":106,\"text\":\"$finder = $ratingRepo->findLatestReviews($viewableCategoryIds);\"},{\"line\":116,\"text\":\"$reviews = $reviews->filterViewable();\"},{\"line\":140,\"text\":\"$categories = $categoryRepo->getViewableCategories();\"},{\"line\":186,\"text\":\"$resource = $this->assertViewableResource($params->resource_id, $this->getResourceViewExtraWith());\"},{\"line\":230,\"text\":\"$authorOthers = $authorOthers->filterViewable();\"},{\"line\":301,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":316,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":339,\"text\":\"return $this->view('XFRM:ResourceItem\\\\Field', 'xfrm_resource_field', $viewParams);\"},{\"line\":346,\"text\":\"$resource = $this->assertViewableResource($params->resource_id, $this->getResourceViewExtraWith());\"},{\"line\":391,\"text\":\"$resource = $this->assertViewableResource($params->resource_id, $this->getResourceViewExtraWith());\"},{\"line\":510,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":587,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":597,\"text\":\"$resource = $this->assertViewableResource($params->resource_id, $this->getResourceViewExtraWith());\"},{\"line\":638,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":716,\"text\":\"$resource = $this->assertViewableResource($params->resource_id, $extraWith);\"},{\"line\":764,\"text\":\"$rating = $rater->save();\"},{\"line\":851,\"text\":\"$updateCreator->setTitle($this->filter('update_title', 'str'));\"},{\"line\":868,\"text\":\"$updater->getResource()->draft_update->delete();\"},{\"line\":873,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":893,\"text\":\"$teamManager->save();\"},{\"line\":913,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":947,\"text\":\"$teamManager->save();\"},{\"line\":971,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":989,\"text\":\"$updater->save();\"},{\"line\":1006,\"text\":\"$draft = $resource->draft_update;\"},{\"line\":1010,\"text\":\"$updateAttachData = $attachmentRepo->getEditorData('resource_update', $resource, $draft->attachment_hash);\"},{\"line\":1029,\"text\":\"public function actionPostUpdateDraft(ParameterBag $params)\"},{\"line\":1031,\"text\":\"$this->assertDraftsEnabled();\"},{\"line\":1033,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1044,\"text\":\"/** @var DraftPlugin $draftPlugin */\"},{\"line\":1045,\"text\":\"$draftPlugin = $this->plugin('XF:Draft');\"},{\"line\":1046,\"text\":\"return $draftPlugin->actionDraftMessage($resource->draft_update, $extraData, 'update_message');\"},{\"line\":1051,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1062,\"text\":\"$updateCreator->setTitle($this->filter('update_title', 'str'));\"},{\"line\":1108,\"text\":\"$editor->setTitle($this->filter('title', 'str'));\"},{\"line\":1162,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1180,\"text\":\"$editor->save();\"},{\"line\":1229,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1267,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1352,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1367,\"text\":\"$typeChanger->save();\"},{\"line\":1429,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1455,\"text\":\"$categories = $categoryRepo->getViewableCategories();\"},{\"line\":1469,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1486,\"text\":\"$tagger->save();\"},{\"line\":1494,\"text\":\"$reply->setJsonParam('message', \\\\XF::phrase('your_changes_have_been_saved'));\"},{\"line\":1518,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1562,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1600,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1640,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1653,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1700,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1709,\"text\":\"'resource_state'\"},{\"line\":1715,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1732,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1747,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1774,\"text\":\"$resource = $this->assertViewableResource($params->resource_id);\"},{\"line\":1828,\"text\":\"protected function assertViewableResource($resourceId, array $extraWith = [])\"},{\"line\":1861,\"text\":\"$this->setContentKey('resource-' . $resource->resource_id);\"},{\"line\":1899,\"text\":\"foreach ($resources->filterViewable() AS $id => $resource)\"}],\"present\":true,\"sha256\":\"78aaaaaf3ad95aedde7b4a1e4d8ec026b9a305dd4a2a23172d28a756244b9f67\"},\"resource_item_entity\":{\"bytes\":55733,\"hits\":[{\"line\":8,\"text\":\"use XF\\\\Draft;\"},{\"line\":24,\"text\":\"use XF\\\\Entity\\\\ViewableInterface;\"},{\"line\":40,\"text\":\"* COLUMNS\"},{\"line\":49,\"text\":\"* @property string $resource_state\"},{\"line\":88,\"text\":\"* @property-read Draft $draft_update\"},{\"line\":102,\"text\":\"* @property-read AbstractCollection<\\\\XF\\\\Entity\\\\Draft> $DraftUpdates\"},{\"line\":106,\"text\":\"class ResourceItem extends Entity implements ContainableInterface, DatableInterface, LinkableInterface, ViewableInterface\"},{\"line\":132,\"text\":\"public function getStructuredData(): array\"},{\"line\":156,\"text\":\"'discussionUrl' => $this->hasViewableDiscussion()\"},{\"line\":265,\"text\":\"if ($this->resource_state == 'moderated')\"},{\"line\":268,\"text\":\"!$this->hasPermission('viewModerated')\"},{\"line\":276,\"text\":\"else if ($this->resource_state == 'deleted')\"},{\"line\":278,\"text\":\"if (!$this->hasPermission('viewDeleted'))\"},{\"line\":288,\"text\":\"public function canViewDeletedContent()\"},{\"line\":290,\"text\":\"return $this->hasPermission('viewDeleted');\"},{\"line\":293,\"text\":\"public function canViewModeratedContent()\"},{\"line\":296,\"text\":\"if ($this->hasPermission('viewModerated'))\"},{\"line\":336,\"text\":\"public function canRate($checkDownloadIfRequired = true, &$error = null)\"},{\"line\":338,\"text\":\"if (!$this->isVisible())\"},{\"line\":355,\"text\":\"if ($checkDownloadIfRequired && $this->isDownloadable() && $this->app()->options()->xfrmRequireDownloadToRate)\"},{\"line\":368,\"text\":\"public function canRatePreReg($checkDownloadIfRequired = true)\"},{\"line\":378,\"text\":\"function () use ($checkDownloadIfRequired) { return $this->canRate($checkDownloadIfRequired); }\"},{\"line\":564,\"text\":\"|| !$this->isVisible()\"},{\"line\":635,\"text\":\"return $this->isVisible();\"},{\"line\":684,\"text\":\"&& $this->resource_state == 'visible'\"},{\"line\":737,\"text\":\"public function isVisible()\"},{\"line\":739,\"text\":\"return ($this->resource_state == 'visible');\"},{\"line\":859,\"text\":\"public function hasViewableDiscussion()\"},{\"line\":923,\"text\":\"$state = $currentValues ? $this->getValue('resource_state') : $this->getExistingValue('resource_state');\"},{\"line\":933,\"text\":\"if ($state != 'visible' && $options->xfrmResourceDeleteThreadAction['update_title'])\"},{\"line\":964,\"text\":\"}, 'save');\"},{\"line\":984,\"text\":\"}, 'save');\"},{\"line\":993,\"text\":\"* @return Draft\"},{\"line\":995,\"text\":\"public function getDraftUpdate()\"},{\"line\":997,\"text\":\"return Draft::createFromEntity($this, 'DraftUpdates');\"},{\"line\":1055,\"text\":\"if (!$this->canViewDeletedContent() && !$this->canViewModeratedContent())\"},{\"line\":1072,\"text\":\"if (!$this->canViewDeletedContent())\"},{\"line\":1139,\"text\":\"AND message_state = 'visible'\"},{\"line\":1160,\"text\":\"AND message_state = 'visible'\"},{\"line\":1173,\"text\":\"AND rating_state = 'visible'\"},{\"line\":1187,\"text\":\"AND rating_state = 'visible'\"},{\"line\":1218,\"text\":\"AND version_state = 'visible'\"},{\"line\":1275,\"text\":\"protected function _preSave()\"},{\"line\":1310,\"text\":\"protected function _postSave()\"},{\"line\":1312,\"text\":\"$visibilityChange = $this->isStateChanged('resource_state', 'visible');\"},{\"line\":1313,\"text\":\"$approvalChange = $this->isStateChanged('resource_state', 'moderated');\"},{\"line\":1314,\"text\":\"$deletionChange = $this->isStateChanged('resource_state', 'deleted');\"},{\"line\":1320,\"text\":\"$this->resourceMadeVisible();\"},{\"line\":1354,\"text\":\"if ($this->resource_state == 'visible')\"},{\"line\":1356,\"text\":\"$this->resourceInsertedVisible();\"},{\"line\":1377,\"text\":\"$oldDiscussion->save(false, false);\"},{\"line\":1388,\"text\":\"$this->Discussion->save(false, false);\"},{\"line\":1401,\"text\":\"$this->Discussion->saveIfChanged($saved, false, false);\"},{\"line\":1410,\"text\":\"$approvalQueue->save();\"},{\"line\":1416,\"text\":\"$delLog->save();\"},{\"line\":1426,\"text\":\"$this->_postSaveBookmarks();\"},{\"line\":1429,\"text\":\"protected function resourceMadeVisible()\"},{\"line\":1440,\"text\":\"$thread->discussion_state = 'visible';\"},{\"line\":1449,\"text\":\"$thread->saveIfChanged($saved, false, false);\"},{\"line\":1468,\"text\":\"$thread->discussion_state = 'deleted';\"},{\"line\":1477,\"text\":\"$thread->saveIfChanged($saved, false, false);\"},{\"line\":1494,\"text\":\"protected function resourceInsertedVisible()\"},{\"line\":1512,\"text\":\"if ($this->resource_state == 'visible')\"},{\"line\":1581,\"text\":\"if ($this->resource_state == 'visible')\"},{\"line\":1584,\"text\":\"$category->save();\"},{\"line\":1587,\"text\":\"if ($this->getExistingValue('resource_state') == 'visible')\"},{\"line\":1594,\"text\":\"$oldCategory->save();\"},{\"line\":1605,\"text\":\"if ($this->resource_state == 'visible' && $thread->discussion_state == 'deleted')\"},{\"line\":1607,\"text\":\"// presumably the thread was soft deleted by being moved to a category without a thread\"},{\"line\":1608,\"text\":\"$thread->discussion_state = 'visible';\"},{\"line\":1614,\"text\":\"$thread->discussion_state = 'deleted';\"},{\"line\":1617,\"text\":\"$thread->saveIfChanged($saved, false, false);\"},{\"line\":1623,\"text\":\"// check for entering/leaving visible\"},{\"line\":1624,\"text\":\"$visibilityChange = $this->isStateChanged('resource_state', 'visible');\"},{\"line\":1628,\"text\":\"$category->save();\"},{\"line\":1633,\"text\":\"$category->save();\"},{\"line\":1635,\"text\":\"else if ($this->isUpdate() && $this->resource_state == 'visible')\"},{\"line\":1638,\"text\":\"$category->save();\"},{\"line\":1644,\"text\":\"if ($this->resource_state == 'visible')\"},{\"line\":1649,\"text\":\"if ($this->Category && $this->resource_state == 'visible')\"},{\"line\":1652,\"text\":\"$this->Category->save();\"},{\"line\":1655,\"text\":\"if ($this->resource_state == 'deleted' && $this->DeletionLog)\"},{\"line\":1660,\"text\":\"if ($this->resource_state == 'moderated' && $this->ApprovalQueue)\"},{\"line\":1744,\"text\":\"if ($this->resource_state == 'deleted')\"},{\"line\":1749,\"text\":\"$this->resource_state = 'deleted';\"},{\"line\":1756,\"text\":\"$this->save();\"},{\"line\":1820,\"text\":\"'discussionUrl' => $this->hasViewableDiscussion()\"},{\"line\":2009,\"text\":\"public static function getStructure(Structure $structure)\"},{\"line\":2015,\"text\":\"$structure->columns = [\"},{\"line\":2018,\"text\":\"'required' => 'please_enter_valid_title',\"},{\"line\":2023,\"text\":\"'required' => 'xfrm_please_enter_valid_tag_line',\"},{\"line\":2027,\"text\":\"'user_id' => ['type' => self::UINT, 'required' => true, 'api' => true],\"},{\"line\":2029,\"text\":\"'required' => 'please_enter_valid_name',\"},{\"line\":2034,\"text\":\"'resource_state' => ['type' => self::STR, 'default' => 'visible',\"},{\"line\":2035,\"text\":\"'allowedValues' => ['visible', 'moderated', 'deleted'], 'api' => true,\"},{\"line\":2037,\"text\":\"'resource_type' => ['type' => self::STR, 'required' => true,\"},{\"line\":2041,\"text\":\"'resource_category_id' => ['type' => self::UINT, 'required' => true, 'api' => true],\"},{\"line\":2084,\"text\":\"'draft_update' => true,\"},{\"line\":2088,\"text\":\"'XF:Taggable' => ['stateField' => 'resource_state'],\"},{\"line\":2090,\"text\":\"'checkForUpdates' => ['title', 'resource_category_id', 'user_id', 'prefix_id', 'tags', 'resource_state'],\"},{\"line\":2096,\"text\":\"'checkForUpdates' => ['resource_category_id', 'resource_state', 'prefix_id'],\"},{\"line\":2103,\"text\":\"'stateField' => 'resource_state',\"},{\"line\":2106,\"text\":\"'valueTable' => 'xf_rm_resource_field_value',\"},{\"line\":2113,\"text\":\"'stateField' => 'resource_state',\"},{\"line\":2189,\"text\":\"'DraftUpdates' => [\"},{\"line\":2190,\"text\":\"'entity' => 'XF:Draft',\"},{\"line\":2193,\"text\":\"['draft_key', '=', 'xfrm-resource-', '$resource_id'],\"}],\"present\":true,\"sha256\":\"703773471dd35c876a0fed578a60dfc51e1dafc9520ad1493282b50fd9e05262\"}},\"xfrm_tables\":{\"xf_draft\":true,\"xf_rm_category\":true,\"xf_rm_category_field\":true,\"xf_rm_category_prefix\":true,\"xf_rm_resource\":true,\"xf_rm_resource_field\":true,\"xf_rm_resource_field_value\":true,\"xf_rm_resource_prefix\":true,\"xf_tag\":true,\"xf_tag_content\":true}}\nNEWFI95_DECISION=PASS_KB204_XFRM_CONTRACT_AUDIT_CAPTURED\nNEWFI95_NEXT_GATE=BUILD_KB204_TAXONOMY_EDITORIAL_CHANGE_FROM_EXACT_XFRM_CONTRACT\n"
}