CHAT_OUTPUT_BEGIN
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
REFERENCE_REGISTER_CHECK=OK
REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
COMMAND_SHA256=8785f2a354ef4d5cab3d5dc4f901a21a579b611ce80b845a568c501bb02168e3
DUPLICATE_FAILED_COMMAND_BLOCKED=false
EXECUTION_STARTED=true
CHANGE_DECLARED=false
RESULT_CONTRACT_VALID=true
RESULT_CONTRACT_STATUS=NOT_APPLICABLE
RESULT_CONTRACT_ERROR=NONE
COMMAND_RC=0
CHANGES_MADE=false
ROLLBACK_STARTED=false
ROLLBACK_RESTORED=null
MUTATION_OUTCOME=NO_MUTATION
SANITIZED=yes
SECRETS_INCLUDED=no
PRIVATE_ADDRESSES_INCLUDED=no
RAW_EVIDENCE_SHA256=6789d0a730d8fcb56a708b3df769f18f8db8820c30f35edade22f93f61f863d9
SANITIZED_OUTPUT_SHA256=6789d0a730d8fcb56a708b3df769f18f8db8820c30f35edade22f93f61f863d9
OUTPUT_BEGIN
NEWFI95_BEGIN
COMMAND_ID=NEWFI-260918-NEWFDOM-KB204-AUDIT95
NEWFI95_GIT={"branch":"implementation/newfi-closed-mvp-20260906","clean":true,"head":"4a7b85eca9c1d6393dbf15f9c9bfa4703072beb0","remote":"origin","remote_head":"4a7b85eca9c1d6393dbf15f9c9bfa4703072beb0"}
NEWFI95_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"}}
NEWFI95_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"}}
NEWFI95_PUBLIC_RESOURCE={"effective":"https://newfi.ru/resources/","http":200}
NEWFI95_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}}
NEWFI95_DECISION=PASS_KB204_XFRM_CONTRACT_AUDIT_CAPTURED
NEWFI95_NEXT_GATE=BUILD_KB204_TAXONOMY_EDITORIAL_CHANGE_FROM_EXACT_XFRM_CONTRACT

OUTPUT_END
CHAT_OUTPUT_END
