CHAT_OUTPUT_BEGIN
COMMAND_ID=NEWFI-260907-A-PORTAL200-APPLY4FIX1-RCA7
STATUS=OK
RC=0
HOST=pve01
MODE=read-only
COMPONENT=newfi-portal200-consolidated-final-template-rca
REFERENCE_REGISTER_CHECK=OK
REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
COMMAND_SHA256=c5f396b50e88cd61820fa8cdbca3f34d37dc259b18372b37317ac6fdb2a7c1ae
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=37e75015b9a9ff7b1ac27197d0b089cd3e006cd0027cfdfbbb2c85bd17160273
SANITIZED_OUTPUT_SHA256=37e75015b9a9ff7b1ac27197d0b089cd3e006cd0027cfdfbbb2c85bd17160273
OUTPUT_BEGIN
RCA7_BEGIN=true
COMMAND_ID=NEWFI-260907-A-PORTAL200-APPLY4FIX1-RCA7
MUTATION_SCOPE=NONE_READ_ONLY
MUTATIONS_PERFORMED=NO
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
REFERENCE_CHECK=OK
REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
AUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED
NEWFI_260907_A_PORTAL200_APPLY4FIX1_HISTORY_SHA256=18232adf6297087543f368e45e70f705eb529a09d4c392443d9b28b6376df394
NEWFI_260907_A_PORTAL200_APPLY4FIX1_STATUS=FAIL
FAILED_CHANGES_MADE=true
FAILED_ROLLBACK_STARTED=true
FAILED_ROLLBACK_RESTORED=false
FAILED_MUTATION_OUTCOME=ROLLBACK_FAILED
FAILED_FINAL_DECISION=FAIL_PORTAL200_APPLY4_ROLLBACK_INCOMPLETE
NEWFI_260907_A_PORTAL200_APPLY4FIX1_RCA6_HISTORY_SHA256=76f74a798da08cdfa0e1545961b58ffb293b33c15868510c915c3dbb261bac34
NEWFI_260907_A_PORTAL200_APPLY4FIX1_RCA6_STATUS=OK
GIT_HEAD={"err":"","out":"06bab5acd124e768f70305b3d7eca2f595871890","rc":0}
GIT_STATUS={"err":"","out":"","rc":0}
GIT_LOG3={"err":"","out":"06bab5a (HEAD -> implementation/newfi-closed-mvp-20260906, origin/implementation/newfi-closed-mvp-20260906) style: apply Big Water XenForo theme [NEWFI-260907-STYLE199B]\n4ade504 brand: add Newfi technical identity assets\n9f7e0ca ops: authorize final Newfi public cutover","rc":0}
GIT_REMOTE_HEAD=06bab5acd124e768f70305b3d7eca2f595871890
CANDIDATE_XML_BYTES=10977
CANDIDATE_XML_SHA256=1650c3d868d4bc47703f1b75f1f179cd25309b2d3b20a2b848e81a4423c00861
CANDIDATE_CHILDREN=[{"attrib":{"title":"newfi_portal","type":"public","version_id":"1000010","version_string":"1.0.0 Alpha 1"},"i":0,"tag":"template","text_bytes":7027,"text_sha256":"2a7b332223b7fb0af18cfb9659d1698603faa79d5d0f63c49359dd6a1c8fbf7a"},{"attrib":{"title":"newfi_portal.less","type":"public","version_id":"1000010","version_string":"1.0.0 Alpha 1"},"i":1,"tag":"template","text_bytes":3634,"text_sha256":"25b1dc49e89ef7615a11cd1023876c4ab9b5f96f90b1fca52a4815bb5992fbe8"}]
TEMPLATE_DATATYPE={"err":"","path":"/var/www/forums/newfi/public/src/XF/AddOn/DataType/Template.php","rc":0,"text":"    35\t\t\t\t$this->exportMappedAttributes($node, $entry);\n    36\t\t\t\t$this->exportCdata($node, $entry->template);\n    37\t\n    38\t\t\t\t$container->appendChild($node);\n    39\t\t\t}\n    40\t\n    41\t\t\treturn $entries->count() ? true : false;\n    42\t\t}\n    43\t\n    44\t\tpublic function importAddOnData($addOnId, \\SimpleXMLElement $container, $start = 0, $maxRunTime = 0)\n    45\t\t{\n    46\t\t\t$startTime = microtime(true);\n    47\t\n    48\t\t\t$entries = $this->getEntries($container, $start);\n    49\t\t\tif (!$entries)\n    50\t\t\t{\n    51\t\t\t\treturn false;\n    52\t\t\t}\n    53\t\n    54\t\t\t$conditions = [];\n    55\t\t\tforeach ($entries AS $entry)\n    56\t\t\t{\n    57\t\t\t\t$conditions[] = [\n    58\t\t\t\t\t'type' => (string) $entry['type'],\n    59\t\t\t\t\t'title' => (string) $entry['title'],\n    60\t\t\t\t];\n    61\t\t\t}\n    62\t\t\tif ($conditions)\n    63\t\t\t{\n    64\t\t\t\t$existing = $this->finder()\n    65\t\t\t\t\t->whereOr($conditions)\n    66\t\t\t\t\t->where('style_id', 0)\n    67\t\t\t\t\t->fetch()\n    68\t\t\t\t\t->groupBy('type', 'title');\n    69\t\t\t}\n    70\t\t\telse\n    71\t\t\t{\n    72\t\t\t\t$existing = [];\n    73\t\t\t}\n    74\t\n    75\t\t\t$i = 0;\n    76\t\t\t$last = 0;\n    77\t\n    78\t\t\tforeach ($entries AS $entry)\n    79\t\t\t{\n    80\t\t\t\t$i++;\n    81\t\n    82\t\t\t\tif ($i <= $start)\n    83\t\t\t\t{\n    84\t\t\t\t\tcontinue;\n    85\t\t\t\t}\n    86\t\n    87\t\t\t\t$type = (string) $entry['type'];\n    88\t\t\t\t$title = (string) $entry['title'];\n    89\t\t\t\t$entity = $existing[$type][$title] ?? $this->create();\n    90\t\t\t\t$entity->setOption('check_duplicate', false);\n    91\t\t\t\t$entity->setOption('report_modification_errors', false);\n    92\t\t\t\t$entity->getBehavior(DevOutputWritable::class)->setOption('write_dev_output', false);\n    93\t\n    94\t\t\t\t$this->importMappedAttributes($entry, $entity);\n    95\t\t\t\t$entity->style_id = 0;\n    96\t\t\t\t$entity->template = $this->getCdataValue($entry);\n    97\t\t\t\t$entity->addon_id = $addOnId;\n    98\t\t\t\t$entity->save(true, false);\n    99\t\n   100\t\t\t\t\\XF::dequeueRunOnce('styleLastModifiedDate');\n   101\t\n   102\t\t\t\tif ($this->resume($maxRunTime, $startTime))\n   103\t\t\t\t{\n   104\t\t\t\t\t$last = $i;\n   105\t\t\t\t\tbreak;\n   106\t\t\t\t}\n   107\t\t\t}\n   108\t\t\treturn ($last ?: false);\n   109\t\t}\n   110\t\n   111\t\tpublic function deleteOrphanedAddOnData($addOnId, \\SimpleXMLElement $container)\n   112\t\t{\n   113\t\t\t$existing = $this->findAllForType($addOnId)->where('style_id', 0)->fetch()->groupBy('type', 'title');\n   114\t\t\tif (!$existing)\n   115\t\t\t{\n"}
ABSTRACT_DATATYPE={"err":"","path":"/var/www/forums/newfi/public/src/XF/AddOn/DataType/AbstractDataType.php","rc":0,"text":"   220\t\t\t\t\t// CURRENTLY NOT USED DUE TO BC ISSUES WITH 2.0.x < 2.0.4\n   221\t\t\t\t\tif (self::USE_AUTO_CDATA && is_string($value) && !preg_match('/^[^<>&\"]*$/si', $value))\n   222\t\t\t\t\t{\n   223\t\t\t\t\t\t// This exports CDATA, but does not escape `]]>` like \\XF\\Util\\XML::createDomCdataSection(),\n   224\t\t\t\t\t\t// because it needs to be transparently importable.\n   225\t\t\t\t\t\t// If you need to export values containing `]]>`, use exportCdataToNewNode()\n   226\t\t\t\t\t\t// and remove this attribute from exportMappedAttributes()\n   227\t\n   228\t\t\t\t\t\t$newNode = $tag->ownerDocument->createElement($attr);\n   229\t\n   230\t\t\t\t\t\t$newNode->appendChild(\n   231\t\t\t\t\t\t\t$newNode->ownerDocument->createCDATASection($entity->{$attr})\n   232\t\t\t\t\t\t);\n   233\t\n   234\t\t\t\t\t\t$tag->appendChild($newNode);\n   235\t\t\t\t\t}\n   236\t\t\t\t\telse\n   237\t\t\t\t\t{\n   238\t\t\t\t\t\t$tag->setAttribute($attr, $value);\n   239\t\t\t\t\t}\n   240\t\t\t\t}\n   241\t\t\t}\n   242\t\t}\n   243\t\n   244\t\tprotected function importMappedAttributes(\\SimpleXMLElement $el, Entity $entity, $allowMaintained = true)\n   245\t\t{\n   246\t\t\tif ($entity->exists() && $allowMaintained)\n   247\t\t\t{\n   248\t\t\t\t$maintained = $this->getMaintainedAttributes();\n   249\t\t\t}\n   250\t\t\telse\n   251\t\t\t{\n   252\t\t\t\t$maintained = [];\n   253\t\t\t}\n   254\t\n   255\t\t\tforeach ($this->getMappedAttributes() AS $attr)\n   256\t\t\t{\n   257\t\t\t\tif (in_array($attr, $maintained))\n   258\t\t\t\t{\n   259\t\t\t\t\tcontinue;\n   260\t\t\t\t}\n   261\t\n   262\t\t\t\tif (self::USE_AUTO_CDATA)\n   263\t\t\t\t{\n   264\t\t\t\t\tif (isset($el[$attr]))\n   265\t\t\t\t\t{\n   266\t\t\t\t\t\t$entity->$attr = (string) $el[$attr];\n   267\t\t\t\t\t}\n   268\t\t\t\t\telse if (isset($el->{$attr}))\n   269\t\t\t\t\t{\n   270\t\t\t\t\t\t$entity->$attr = (string) $el->{$attr};\n   271\t\t\t\t\t}\n   272\t\t\t\t}\n   273\t\t\t\telse\n   274\t\t\t\t{\n   275\t\t\t\t\t$entity->$attr = (string) $el[$attr];\n   276\t\t\t\t}\n   277\t\t\t}\n   278\t\t}\n   279\t\n   280\t\tprotected function pluckXmlAttribute(\\SimpleXMLElement $els, $key)\n   281\t\t{\n   282\t\t\t$values = [];\n   283\t\t\t$i = 0;\n   284\t\t\tforeach ($els AS $el)\n   285\t\t\t{\n   286\t\t\t\t$values[$i++] = (string) $el[$key];\n   287\t\t\t}\n   288\t\n   289\t\t\treturn $values;\n   290\t\t}\n   291\t\n   292\t\tprotected function getSimpleAttributes(\\SimpleXMLElement $el)\n   293\t\t{\n   294\t\t\t$output = [];\n   295\t\t\tforeach ($el->attributes() AS $key => $val)\n   296\t\t\t{\n   297\t\t\t\t$output[$key] = (string) $val;\n   298\t\t\t}\n   299\t\t\treturn $output;\n   300\t\t}\n"}
ADDON_DATA_JOB={"err":"","path":"/var/www/forums/newfi/public/src/XF/Job/AddOnData.php","rc":0,"text":"     1\t<?php\n     2\t\n     3\tnamespace XF\\Job;\n     4\t\n     5\tuse XF\\Repository\\StyleRepository;\n     6\t\n     7\tclass AddOnData extends AbstractJob\n     8\t{\n     9\t\tprotected $defaultData = [\n    10\t\t\t'addon_id' => null,\n    11\t\t\t'data_dir' => null,\n    12\t\n    13\t\t\t'data_types' => null,\n    14\t\t\t'current_type' => null,\n    15\t\n    16\t\t\t'start' => 0,\n    17\t\t];\n    18\t\n    19\t\tprotected $currentType = null;\n    20\t\tprotected $lastIndex = 0;\n    21\t\tprotected $totalEntries = 0;\n    22\t\n    23\t\tpublic function run($maxRunTime)\n    24\t\t{\n    25\t\t\tif ($this->data['addon_id'] != 'XF')\n    26\t\t\t{\n    27\t\t\t\t$addOnManager = $this->app->addOnManager();\n    28\t\t\t\t$addOn = $addOnManager->getById($this->data['addon_id']);\n    29\t\t\t\tif (!$addOn)\n    30\t\t\t\t{\n    31\t\t\t\t\t// add-on isn't installed, can't do anything\n    32\t\t\t\t\treturn $this->complete();\n    33\t\t\t\t}\n    34\t\n    35\t\t\t\tif ($this->data['data_dir'] === null)\n    36\t\t\t\t{\n    37\t\t\t\t\t$this->data['data_dir'] = $addOn->getDataDirectory();\n    38\t\t\t\t}\n    39\t\t\t}\n    40\t\t\telse\n    41\t\t\t{\n    42\t\t\t\t$addOn = null; // don't populate this for XF since it wouldn't be the same type of object\n    43\t\n    44\t\t\t\tif ($this->data['data_dir'] === null)\n    45\t\t\t\t{\n    46\t\t\t\t\t$ds = \\XF::$DS;\n    47\t\t\t\t\t$this->data['data_dir'] = \\XF::getAddOnDirectory() . $ds . 'XF' . $ds . '_data';\n    48\t\t\t\t}\n    49\t\t\t}\n    50\t\n    51\t\t\t$dataManager = $this->app->addOnDataManager();\n    52\t\n    53\t\t\t$addOnId = $this->data['addon_id'];\n    54\t\t\t$dataDir = $this->data['data_dir'];\n    55\t\n    56\t\t\tif ($this->data['data_types'] === null)\n    57\t\t\t{\n    58\t\t\t\t$dataTypes = $dataManager->getDataTypeClasses();\n    59\t\t\t\tforeach ($dataTypes AS $key => $dataType)\n    60\t\t\t\t{\n    61\t\t\t\t\t$handler = $dataManager->getDataTypeHandler($dataType);\n    62\t\t\t\t\t$xml = $handler->openTypeFile($dataDir);\n    63\t\t\t\t\tif (!$xml || !$xml->count())\n    64\t\t\t\t\t{\n    65\t\t\t\t\t\t// We can skip this type entirely, but clean up any existing data first\n    66\t\t\t\t\t\t$handler->deleteAddOnData($addOnId);\n    67\t\t\t\t\t\tunset($dataTypes[$key]);\n    68\t\t\t\t\t}\n    69\t\t\t\t}\n    70\t\t\t\t$this->data['data_types'] = $dataTypes;\n    71\t\t\t}\n    72\t\n    73\t\t\tif (!$this->data['current_type'])\n    74\t\t\t{\n    75\t\t\t\t$this->data['current_type'] = array_shift($this->data['data_types']);\n    76\t\t\t\tif (!$this->data['current_type'])\n    77\t\t\t\t{\n    78\t\t\t\t\tif ($addOn)\n    79\t\t\t\t\t{\n    80\t\t\t\t\t\t$addOn->postDataImport();\n    81\t\t\t\t\t}\n    82\t\n    83\t\t\t\t\t$repo = $this->app->repository(StyleRepository::class);\n    84\t\t\t\t\t$repo->updateAllStylesLastModifiedDateLater();\n    85\t\n    86\t\t\t\t\treturn $this->complete();\n    87\t\t\t\t}\n    88\t\n    89\t\t\t\t$this->data['start'] = 0;\n    90\t\t\t}\n    91\t\n    92\t\t\t$start = $this->data['start'];\n    93\t\t\t$type = $this->data['current_type'];\n    94\t\n    95\t\t\t$handler = $dataManager->getDataTypeHandler($type);\n    96\t\n    97\t\t\t$this->currentType = $handler->getContainerTag();\n    98\t\t\t$this->lastIndex = $start;\n    99\t\n   100\t\t\t$xml = $handler->openTypeFile($dataDir);\n   101\t\t\tif (!$xml || !$xml->count())\n   102\t\t\t{\n   103\t\t\t\t// No data so skip and delete existing data for type (if any)\n   104\t\t\t\t$this->data['current_type'] = null;\n   105\t\t\t\t$handler->deleteAddOnData($addOnId);\n   106\t\t\t\treturn $this->resume();\n   107\t\t\t}\n   108\t\n   109\t\t\t$this->totalEntries = $xml->count();\n   110\t\n   111\t\t\t$last = $handler->importAddOnData($addOnId, $xml, $start, $maxRunTime);\n   112\t\t\tif (!$last)\n   113\t\t\t{\n   114\t\t\t\t// finished type, delete any existing data not in the XML file for this type\n   115\t\t\t\t$handler->deleteOrphanedAddOnData($addOnId, $xml);\n   116\t\n   117\t\t\t\t\\XF::triggerRunOnce();\n   118\t\t\t\t$this->data['current_type'] = null;\n   119\t\t\t\treturn $this->resume();\n   120\t\t\t}\n   121\t\n   122\t\t\t$this->data['start'] = $last;\n   123\t\t\treturn $this->resume();\n   124\t\t}\n   125\t\n   126\t\tpublic function getStatusMessage()\n   127\t\t{\n   128\t\t\t// TODO: These (and the types) probably should be phrased\n   129\t\t\t$actionPhrase = 'Importing';\n   130\t\t\tif ($this->data['addon_id'] == 'XF')\n   131\t\t\t{\n   132\t\t\t\t$typePhrase = 'Master data';\n   133\t\t\t}\n   134\t\t\telse\n   135\t\t\t{\n   136\t\t\t\t$typePhrase = 'Add-on data';\n   137\t\t\t}\n   138\t\n   139\t\t\t$currentType = null;\n   140\t\t\tif ($this->currentType)\n   141\t\t\t{\n   142\t\t\t\t$currentType = ucfirst(str_replace('_', ' ', $this->currentType));\n   143\t\t\t}\n   144\t\n   145\t\t\tif ($currentType && $this->lastIndex)\n   146\t\t\t{\n   147\t\t\t\t$percentage = $this->app->language()->numberFormat(($this->lastIndex / $this->totalEntries) * 100, 1);\n   148\t\t\t\treturn sprintf('%s... %s (%s: %s%%)', $actionPhrase, $typePhrase, $currentType, $percentage);\n   149\t\t\t}\n   150\t\t\telse if ($currentType)\n   151\t\t\t{\n   152\t\t\t\treturn sprintf('%s... %s (%s)', $actionPhrase, $typePhrase, $currentType);\n   153\t\t\t}\n   154\t\t\telse\n   155\t\t\t{\n   156\t\t\t\treturn sprintf('%s... %s', $actionPhrase, $typePhrase);\n   157\t\t\t}\n   158\t\t}\n   159\t\n   160\t\tpublic function canCancel()\n   161\t\t{\n   162\t\t\treturn false;\n   163\t\t}\n   164\t\n   165\t\tpublic function canTriggerByChoice()\n   166\t\t{\n   167\t\t\treturn false;\n   168\t\t}\n   169\t}\n"}
ENTITY_CORE={"err":"","path":"/var/www/forums/newfi/public/src/XF/Mvc/Entity/Entity.php","rc":0,"text":"   520\t\t\t\t{\n   521\t\t\t\t\tthrow new \\InvalidArgumentException(\"To many relations must be hydrated with collections\");\n   522\t\t\t\t}\n   523\t\t\t}\n   524\t\t\telse\n   525\t\t\t{\n   526\t\t\t\tif ($value !== null && !($value instanceof Entity))\n   527\t\t\t\t{\n   528\t\t\t\t\tthrow new \\InvalidArgumentException(\"To one relations must be hydrated with entities or null\");\n   529\t\t\t\t}\n   530\t\t\t}\n   531\t\n   532\t\t\t$this->_relations[$key] = $value;\n   533\t\t}\n   534\t\n   535\t\tpublic function getExistingRelation($key)\n   536\t\t{\n   537\t\t\t$relations = $this->_structure->relations;\n   538\t\n   539\t\t\tif (empty($relations[$key]))\n   540\t\t\t{\n   541\t\t\t\tthrow new \\InvalidArgumentException(\"Unknown relation $key\");\n   542\t\t\t}\n   543\t\n   544\t\t\treturn $this->_em->getRelation($relations[$key], $this, 'existing');\n   545\t\t}\n   546\t\n   547\t\tpublic function getRelationFinder($key, $type = 'current')\n   548\t\t{\n   549\t\t\t$relations = $this->_structure->relations;\n   550\t\n   551\t\t\tif (empty($relations[$key]))\n   552\t\t\t{\n   553\t\t\t\tthrow new \\InvalidArgumentException(\"Unknown relation $key\");\n   554\t\t\t}\n   555\t\n   556\t\t\treturn $this->_em->getRelationFinder($relations[$key], $this, $type);\n   557\t\t}\n   558\t\n   559\t\tpublic function toArray($allowGetters = true)\n   560\t\t{\n   561\t\t\t$output = [];\n   562\t\t\tforeach ($this->_structure->columns AS $key => $null)\n   563\t\t\t{\n   564\t\t\t\t$output[$key] = $allowGetters ? $this->get($key) : $this->getValue($key);\n   565\t\t\t}\n   566\t\n   567\t\t\treturn $output;\n   568\t\t}\n   569\t\n   570\t\tfinal public function toApiResult($verbosity = self::VERBOSITY_NORMAL, array $options = [])\n   571\t\t{\n   572\t\t\t$result = new EntityResult($this);\n   573\t\t\t$subResult = $this->setupApiResultData($result, $verbosity, $options);\n   574\t\n   575\t\t\tif ($subResult instanceof EntityResultInterface)\n   576\t\t\t{\n   577\t\t\t\treturn $subResult;\n   578\t\t\t}\n   579\t\t\telse\n   580\t\t\t{\n   581\t\t\t\treturn $result;\n   582\t\t\t}\n   583\t\t}\n   584\t\n   585\t\tfinal public function toWebhookResult($verbosity = self::VERBOSITY_NORMAL, array $options = [])\n   586\t\t{\n   587\t\t\t$result = new EntityResult($this, EntityResultInterface::TYPE_WEBHOOK);\n   588\t\t\t$subResult = $this->setupApiResultData($result, $verbosity, $options);\n   589\t\n   590\t\t\tif ($subResult instanceof EntityResultInterface)\n   591\t\t\t{\n   592\t\t\t\treturn $subResult;\n   593\t\t\t}\n   594\t\n   595\t\t\treturn $result;\n   596\t\t}\n   597\t\n   598\t\t/**\n   599\t\t * This method must be overridden to enable API access to this entity.\n   600\t\t *\n   601\t\t * @param EntityResult $result\n   602\t\t * @param int $verbosity\n   603\t\t * @param array $options\n   604\t\t */\n   605\t\tprotected function setupApiResultData(\n   606\t\t\tEntityResult $result,\n   607\t\t\t$verbosity = self::VERBOSITY_NORMAL,\n   608\t\t\tarray $options = []\n   609\t\t)\n   610\t\t{\n   611\t\t\tthrow new \\LogicException(\n   612\t\t\t\t\"API result rules not defined by \" . $this->_structure->shortName . '. Override setupApiResultData().'\n   613\t\t\t);\n   614\t\t}\n   615\t\n   616\t\tpublic function __set($key, $value)\n   617\t\t{\n   618\t\t\t$this->set($key, $value);\n   619\t\t}\n   620\t\n   621\t\tpublic function offsetSet($key, $value): void\n   622\t\t{\n   623\t\t\t$this->set($key, $value);\n   624\t\t}\n   625\t\n   626\t\tpublic function set($key, $value, array $options = [])\n   627\t\t{\n   628\t\t\tif ($this->_readOnly)\n   629\t\t\t{\n   630\t\t\t\tthrow new \\LogicException(\"Entity is read only\");\n   631\t\t\t}\n   632\t\n   633\t\t\tif ($this->_deleted)\n   634\t\t\t{\n   635\t\t\t\tthrow new \\LogicException(\"Attempted to set '$key' on a deleted entity\");\n   636\t\t\t}\n   637\t\n   638\t\t\tif ($this->_writePending == 'delete')\n   639\t\t\t{\n   640\t\t\t\tthrow new \\LogicException(\"Attempted to set '$key' while a deletion was pending\");\n   641\t\t\t}\n   642\t\n   643\t\t\tif ($this->_writePending && empty($options['forceSet']))\n   644\t\t\t{\n   645\t\t\t\tthrow new \\LogicException(\"Attempted to set '$key' while a save was pending without forceSet\");\n   646\t\t\t}\n   647\t\n   648\t\t\tif (!isset($this->_structure->columns[$key]))\n   649\t\t\t{\n   650\t\t\t\tif (empty($options['skipInvalid']))\n   651\t\t\t\t{\n   652\t\t\t\t\tthrow new \\InvalidArgumentException(\"Column '$key' is unknown\");\n   653\t\t\t\t}\n   654\t\t\t\treturn false;\n   655\t\t\t}\n   656\t\n   657\t\t\t$column = $this->_structure->columns[$key];\n   658\t\n   659\t\t\tif ((!empty($column['readOnly']) || !empty($column['autoIncrement'])) && empty($options['forceSet']))\n   660\t\t\t{\n   661\t\t\t\tif (empty($options['skipInvalid']))\n   662\t\t\t\t{\n   663\t\t\t\t\tthrow new \\InvalidArgumentException(\"Column '$key' is read only, can only be set with forceSet\");\n   664\t\t\t\t}\n   665\t\t\t\treturn false;\n   666\t\t\t}\n   667\t\n   668\t\t\tif (!empty($column['writeOnce']) && $this->isUpdate() && empty($options['forceSet']))\n   669\t\t\t{\n   670\t\t\t\tif (empty($options['skipInvalid']))\n   671\t\t\t\t{\n   672\t\t\t\t\tthrow new \\InvalidArgumentException(\"Column '$key' can only be written on insert or set with forceSet\");\n   673\t\t\t\t}\n   674\t\t\t\treturn false;\n   675\t\t\t}\n   676\t\n   677\t\t\tif ($value instanceof DeferredValue)\n   678\t\t\t{\n   679\t\t\t\t$this->_setInternal($key, $value);\n   680\t\t\t\treturn true;\n   681\t\t\t}\n   682\t\n   683\t\t\tif (!$this->_verifyValueCustom($value, $key, $column['type'], $column))\n   684\t\t\t{\n   685\t\t\t\treturn false;\n   686\t\t\t}\n   687\t\n   688\t\t\t$value = $this->_castValueToType($value, $key, $column['type'], $column);\n   689\t\n   690\t\t\tif (!$this->_em->getValueFormatter()->applyValueConstraints(\n   691\t\t\t\t$value,\n   692\t\t\t\t$column['type'],\n   693\t\t\t\t$column,\n   694\t\t\t\t$constraintError,\n   695\t\t\t\t!empty($options['forceConstraint'])\n   696\t\t\t))\n   697\t\t\t{\n   698\t\t\t\tif ($constraintError)\n   699\t\t\t\t{\n   700\t\t\t\t\t$this->error($constraintError, $key, false);\n   701\t\t\t\t}\n   702\t\n   703\t\t\t\treturn false;\n   704\t\t\t}\n   705\t\n   706\t\t\tif ($this->_columnValueIsDifferent($key, $value, $column) && $value !== null)\n   707\t\t\t{\n   708\t\t\t\tif (!empty($column['unique']))\n   709\t\t\t\t{\n   710\t\t\t\t\tif (!$this->_verifyUniqueValue($value, $key, $column['unique']))\n   711\t\t\t\t\t{\n   712\t\t\t\t\t\treturn false;\n   713\t\t\t\t\t}\n   714\t\t\t\t}\n   715\t\t\t\telse if (!empty($column['autoIncrement']) || $this->_structure->primaryKey === $key)\n   716\t\t\t\t{\n   717\t\t\t\t\tif (!$this->_verifyUniqueValue($value, $key, true))\n   718\t\t\t\t\t{\n   719\t\t\t\t\t\treturn false;\n   720\t\t\t\t\t}\n   721\t\t\t\t}\n   722\t\t\t}\n   723\t\n   724\t\t\t$this->_setInternal($key, $value);\n   725\t\t\treturn true;\n   726\t\t}\n   727\t\n   728\t\tpublic function setTrusted($key, $value)\n   729\t\t{\n   730\t\t\tif (!isset($this->_structure->columns[$key]))\n   731\t\t\t{\n   732\t\t\t\tthrow new \\InvalidArgumentException(\"Column '$key' is unknown\");\n   733\t\t\t}\n   734\t\n   735\t\t\t$column = $this->_structure->columns[$key];\n   736\t\t\t$value = $this->_castValueToType($value, $key, $column['type'], $column);\n   737\t\n   738\t\t\t$this->_setInternal($key, $value);\n   739\t\t\treturn true;\n   740\t\t}\n   741\t\n   742\t\tpublic function setFromEncoded($key, $value, array $options = [])\n   743\t\t{\n   744\t\t\tif (!isset($this->_structure->columns[$key]))\n   745\t\t\t{\n   746\t\t\t\tthrow new \\InvalidArgumentException(\"Column '$key' is unknown\");\n   747\t\t\t}\n   748\t\n   749\t\t\t$column = $this->_structure->columns[$key];\n   750\t\n   751\t\t\t$value = $this->_em->decodeValueFromSourceExtended($column['type'], $value, $column);\n   752\t\t\treturn $this->set($key, $value, $options);\n   753\t\t}\n   754\t\n   755\t\tpublic function setAsSaved($key, $value)\n   756\t\t{\n   757\t\t\tif (!$this->exists() && !$this->_writeRunning)\n   758\t\t\t{\n   759\t\t\t\tthrow new \\LogicException(\"Can only set an already saved value on a saved entity\");\n   760\t\t\t}\n"}
TEMPLATE_ENTITY={"err":"","path":"/var/www/forums/newfi/public/src/XF/Entity/Template.php","rc":0,"text":"     1\t<?php\n     2\t\n     3\tnamespace XF\\Entity;\n     4\t\n     5\tuse XF\\Finder\\TemplateFinder;\n     6\tuse XF\\Finder\\TemplateMapFinder;\n     7\tuse XF\\Mvc\\Entity\\AbstractCollection;\n     8\tuse XF\\Mvc\\Entity\\Entity;\n     9\tuse XF\\Mvc\\Entity\\Structure;\n    10\tuse XF\\Repository\\AddOnRepository;\n    11\tuse XF\\Repository\\IconRepository;\n    12\tuse XF\\Repository\\StyleRepository;\n    13\tuse XF\\Repository\\TemplateModificationRepository;\n    14\tuse XF\\Repository\\TemplateRepository;\n    15\tuse XF\\Service\\Template\\CompileService;\n    16\tuse XF\\Service\\Template\\RebuildService;\n    17\tuse XF\\Template\\Compiler\\Ast;\n    18\tuse XF\\Template\\Compiler\\Exception;\n    19\t\n    20\tuse function is_array, is_int, strval;\n    21\t\n    22\t/**\n    23\t * COLUMNS\n    24\t * @property int|null $template_id\n    25\t * @property string $type\n    26\t * @property string $title\n    27\t * @property int $style_id\n    28\t * @property string $template\n    29\t * @property array|bool $template_parsed\n    30\t * @property string $addon_id\n    31\t * @property int $version_id\n    32\t * @property string $version_string\n    33\t * @property int $last_edit_date\n    34\t *\n    35\t * GETTERS\n    36\t * @property-read string $combined_title\n    37\t * @property-read array $phrasesUsed\n    38\t * @property-read Style $Style\n    39\t * @property-read Template|null $ParentTemplate\n    40\t *\n    41\t * RELATIONS\n    42\t * @property-read AddOn|null $AddOn\n    43\t * @property-read AbstractCollection<TemplateHistory> $History\n    44\t * @property-read Style|null $Style_\n    45\t */\n    46\tclass Template extends Entity\n    47\t{\n    48\t\tprotected $modificationStatuses = null;\n    49\t\n    50\t\t/**\n    51\t\t * @return string\n    52\t\t */\n    53\t\tpublic function getCombinedTitle()\n    54\t\t{\n    55\t\t\treturn \"{$this->type}:{$this->title}\";\n    56\t\t}\n    57\t\n    58\t\t/**\n    59\t\t * @return Style\n    60\t\t */\n    61\t\tpublic function getStyle()\n    62\t\t{\n    63\t\t\tif ($this->style_id == 0)\n    64\t\t\t{\n    65\t\t\t\treturn $this->getStyleRepo()->getMasterStyle();\n    66\t\t\t}\n    67\t\t\telse\n    68\t\t\t{\n    69\t\t\t\treturn $this->getRelation('Style');\n    70\t\t\t}\n    71\t\t}\n    72\t\n    73\t\t/**\n    74\t\t * @return Template|null\n    75\t\t */\n    76\t\tpublic function getParentTemplate()\n    77\t\t{\n    78\t\t\tif (!$this->style_id)\n    79\t\t\t{\n    80\t\t\t\treturn null;\n    81\t\t\t}\n    82\t\n    83\t\t\t$style = $this->Style;\n    84\t\t\tif (!$style)\n    85\t\t\t{\n    86\t\t\t\treturn null;\n    87\t\t\t}\n    88\t\n    89\t\t\t$templateMap = $this->finder(TemplateMapFinder::class)\n    90\t\t\t\t->where([\n    91\t\t\t\t\t'style_id' => $style->parent_id,\n    92\t\t\t\t\t'type' => $this->type,\n    93\t\t\t\t\t'title' => $this->title,\n    94\t\t\t\t])\n    95\t\t\t\t->with('Template', true)\n    96\t\t\t\t->with('Template.Style', false)\n    97\t\t\t\t->fetchOne();\n    98\t\t\tif (!$templateMap)\n    99\t\t\t{\n   100\t\t\t\treturn null;\n   101\t\t\t}\n   102\t\n   103\t\t\treturn $templateMap->Template;\n   104\t\t}\n   105\t\n   106\t\tpublic function getAbstractedCompiledTemplatePath($languageId, $styleId, $new = true)\n   107\t\t{\n   108\t\t\t$title = $new ? $this->getValue('title') : $this->getExistingValue('title');\n   109\t\t\t$type = $new ? $this->getValue('type') : $this->getExistingValue('type');\n   110\t\n   111\t\t\treturn 'code-cache://templates/l' . $languageId . '/s' . $styleId . '/' . $type . '/' . $title . '.php';\n   112\t\t}\n   113\t\n   114\t\tpublic function getHash()\n   115\t\t{\n   116\t\t\t$contents = str_replace(\"\\r\", '', $this->template);\n   117\t\t\treturn md5($contents);\n   118\t\t}\n   119\t\n   120\t\t/**\n   121\t\t * @return array\n   122\t\t */\n   123\t\tpublic function getPhrasesUsed()\n   124\t\t{\n   125\t\t\treturn $this->db()->fetchAllColumn(\"\n   126\t\t\t\tSELECT phrase_title\n   127\t\t\t\tFROM xf_template_phrase\n   128\t\t\t\tWHERE template_id = ?\n   129\t\t\t\", $this->template_id);\n   130\t\t}\n   131\t\n   132\t\tpublic function reparseTemplate($forceValid = false, &$error = null)\n   133\t\t{\n   134\t\t\t$valid = $this->validateTemplateText($this->template, $forceValid, $ast, $error);\n   135\t\t\tif ($valid && $ast != $this->template_parsed)\n   136\t\t\t{\n   137\t\t\t\t$this->template_parsed = $ast;\n   138\t\t\t\treturn true;\n   139\t\t\t}\n   140\t\t\tif (!$valid)\n   141\t\t\t{\n   142\t\t\t\t$this->error($error, 'template');\n   143\t\t\t\treturn true;\n   144\t\t\t}\n   145\t\n   146\t\t\treturn false;\n   147\t\t}\n   148\t\n   149\t\tpublic function setTemplateUnchecked($template)\n   150\t\t{\n   151\t\t\t$template = strval($template);\n   152\t\t\t$this->_setInternal('template', $template);\n   153\t\t\t$this->validateTemplateText($template, true, $ast);\n   154\t\n   155\t\t\t$this->template_parsed = $ast;\n   156\t\n   157\t\t\treturn true;\n   158\t\t}\n   159\t\n   160\t\tprotected function verifyTitle($title)\n   161\t\t{\n   162\t\t\tif (substr($title, 0, 1) == '.' || strpos($title, '..') !== false)\n   163\t\t\t{\n   164\t\t\t\t$this->error(\\XF::phrase('please_enter_title_using_only_alphanumeric_dot'), 'title');\n   165\t\t\t\treturn false;\n   166\t\t\t}\n   167\t\n   168\t\t\tif (preg_match('/\\.html$/i', $title))\n   169\t\t\t{\n   170\t\t\t\t$this->error(\\XF::phrase('template_titles_may_not_end_in_html'), 'title');\n   171\t\t\t\treturn false;\n   172\t\t\t}\n   173\t\n   174\t\t\treturn true;\n   175\t\t}\n   176\t\n   177\t\tprotected function verifyTemplate($template)\n   178\t\t{\n   179\t\t\t$valid = $this->validateTemplateText($template, false, $ast, $error);\n   180\t\t\tif (!$valid)\n   181\t\t\t{\n   182\t\t\t\t$this->error($error, 'template');\n   183\t\t\t\treturn false;\n   184\t\t\t}\n   185\t\n   186\t\t\t$this->template_parsed = $ast;\n   187\t\n   188\t\t\treturn true;\n   189\t\t}\n   190\t\n   191\t\tprotected function validateTemplateText($template, $forceValid = false, &$ast = null, &$error = null)\n   192\t\t{\n   193\t\t\t$compiler = $this->app()->templateCompiler();\n   194\t\n   195\t\t\t$templateModRepo = $this->repository(TemplateModificationRepository::class);\n   196\t\t\t$templateWithModifications = $templateModRepo->applyModificationsToTemplate(\n   197\t\t\t\t$this->type,\n   198\t\t\t\t$this->title,\n   199\t\t\t\t$template,\n   200\t\t\t\t$modificationStatuses\n   201\t\t\t);\n   202\t\n   203\t\t\t$standardParse = true;\n   204\t\t\t$error = null;\n   205\t\n   206\t\t\tif ($modificationStatuses)\n   207\t\t\t{\n   208\t\t\t\ttry\n   209\t\t\t\t{\n   210\t\t\t\t\t$ast = $compiler->compileToAst($templateWithModifications);\n   211\t\n   212\t\t\t\t\tif ($this->getOption('test_compile'))\n   213\t\t\t\t\t{\n   214\t\t\t\t\t\t$compiler->compileAst($ast);\n   215\t\t\t\t\t}\n   216\t\t\t\t\t$standardParse = false;\n   217\t\t\t\t}\n   218\t\t\t\tcatch (Exception $e)\n   219\t\t\t\t{\n   220\t\t\t\t\t$error = $e->getMessage() . ' - ' . \\XF::phrase('template_modifications:') . ' ' . \"{$this->type}:{$this->title}\";\n   221\t\t\t\t\tforeach ($modificationStatuses AS &$status)\n   222\t\t\t\t\t{\n   223\t\t\t\t\t\tif (is_int($status))\n   224\t\t\t\t\t\t{\n   225\t\t\t\t\t\t\t$status = 'error_compile';\n   226\t\t\t\t\t\t}\n   227\t\t\t\t\t}\n   228\t\t\t\t}\n   229\t\t\t}\n   230\t\n   231\t\t\tif ($standardParse)\n   232\t\t\t{\n   233\t\t\t\ttry\n   234\t\t\t\t{\n   235\t\t\t\t\t$ast = $compiler->compileToAst($template);\n   236\t\n   237\t\t\t\t\tif ($this->getOption('test_compile'))\n   238\t\t\t\t\t{\n   239\t\t\t\t\t\t$compiler->compileAst($ast);\n   240\t\t\t\t\t}\n   241\t\n   242\t\t\t\t\tif ($forceValid || !$this->getOption('report_modification_errors'))\n   243\t\t\t\t\t{\n   244\t\t\t\t\t\t$error = null;\n   245\t\t\t\t\t}\n   246\t\t\t\t}\n   247\t\t\t\tcatch (Exception $e)\n   248\t\t\t\t{\n   249\t\t\t\t\t$error = $e->getMessage() . ' - ' . \\XF::phrase('template_name:') . ' ' . \"{$this->type}:{$this->title}\";\n   250\t\t\t\t}\n   251\t\t\t}\n   252\t\n   253\t\t\tif ($forceValid && $error)\n   254\t\t\t{\n   255\t\t\t\t$error = null;\n   256\t\t\t\t$ast = $compiler->stringAst($template);\n   257\t\t\t}\n   258\t\n   259\t\t\tif ($error)\n   260\t\t\t{\n"}
ENTITY_WRITE_PENDING_ALL={"err":"","rc":0,"text":"76-\n77-\tprotected $_options = [];\n78-\n79-\tprotected $_deleted = false;\n80-\n81-\tprotected $_readOnly = false;\n82:\tprotected $_writePending = false;\n83-\tprotected $_writeRunning = false;\n84-\tprotected $_errors = [];\n85-\n86-\t/**\n87-\t * @var \\Closure[]\n88-\t */\n--\n632-\n633-\t\tif ($this->_deleted)\n634-\t\t{\n635-\t\t\tthrow new \\LogicException(\"Attempted to set '$key' on a deleted entity\");\n636-\t\t}\n637-\n638:\t\tif ($this->_writePending == 'delete')\n639-\t\t{\n640-\t\t\tthrow new \\LogicException(\"Attempted to set '$key' while a deletion was pending\");\n641-\t\t}\n642-\n643:\t\tif ($this->_writePending && empty($options['forceSet']))\n644-\t\t{\n645-\t\t\tthrow new \\LogicException(\"Attempted to set '$key' while a save was pending without forceSet\");\n646-\t\t}\n647-\n648-\t\tif (!isset($this->_structure->columns[$key]))\n649-\t\t{\n--\n1365-\t}\n1366-\n1367-\tfinal public function saveIfChanged(&$saved = null, $throw = true, $newTransaction = true)\n1368-\t{\n1369-\t\tif (!$this->_newValues && $this->isUpdate())\n1370-\t\t{\n1371:\t\t\t$this->_writePending = false;\n1372-\n1373-\t\t\t$saved = false;\n1374-\t\t\treturn true;\n1375-\t\t}\n1376-\n1377-\t\t$saved = true;\n--\n1412-\t\t$this->db()->update($this->_structure->table, $dbUpdate, $condition);\n1413-\t}\n1414-\n1415-\tfinal public function preSave()\n1416-\t{\n1417-\t\t// write will be pending after calling this; this means call it only once\n1418:\t\tif ($this->_writePending != 'save')\n1419-\t\t{\n1420-\t\t\t$this->_fillDeferredValues('preSave');\n1421-\t\t\t$this->_preSave();\n1422-\n1423-\t\t\tforeach ($this->getBehaviors() AS $behavior)\n1424-\t\t\t{\n--\n1453-\t\t\tif ($this->isInsert())\n1454-\t\t\t{\n1455-\t\t\t\t$this->_fillInsertDefaults();\n1456-\t\t\t}\n1457-\t\t\t$this->_validateRequirements();\n1458-\n1459:\t\t\t$this->_writePending = 'save';\n1460-\t\t}\n1461-\n1462-\t\treturn count($this->_errors) == 0;\n1463-\t}\n1464-\n1465-\tprotected function _preSave()\n--\n1610-\tprotected function _postSave()\n1611-\t{\n1612-\t}\n1613-\n1614-\tprotected function _saveCleanUp(array $newDbValues)\n1615-\t{\n1616:\t\t$this->_writePending = false;\n1617-\t\t$this->_writeRunning = false;\n1618-\t\t$this->_previousValues = $this->_values;\n1619-\t\t$this->_values = array_merge($this->_values, $newDbValues);\n1620-\t\t$this->_newValues = [];\n1621-\t\t$this->_errors = [];\n1622-\t\t$this->_cascadeSave = [];\n--\n1633-\t\t\t$fn($this);\n1634-\t\t}\n1635-\t}\n1636-\n1637-\tpublic function reset()\n1638-\t{\n1639:\t\t$this->_writePending = false;\n1640-\t\t$this->_newValues = [];\n1641-\t\t$this->_errors = [];\n1642-\t\t$this->_getterCache = [];\n1643-\t\t$this->_valueCache = [];\n1644-\t\t$this->_options = [];\n1645-\t\t$this->_cascadeSave = [];\n--\n1736-\t\tif ($newTransaction)\n1737-\t\t{\n1738-\t\t\t$db->commit();\n1739-\t\t}\n1740-\n1741-\t\t$this->_em->detachEntity($this);\n1742:\t\t$this->_writePending = false;\n1743-\t\t$this->_writeRunning = false;\n1744-\n1745-\t\treturn true;\n1746-\t}\n1747-\n1748-\tfinal public function preDelete()\n1749-\t{\n1750-\t\tif ($this->_deleted)\n1751-\t\t{\n1752-\t\t\treturn true;\n1753-\t\t}\n1754-\n1755:\t\tif ($this->_writePending != 'delete')\n1756-\t\t{\n1757-\t\t\t$this->_preDelete();\n1758-\n1759-\t\t\tforeach ($this->getBehaviors() AS $behavior)\n1760-\t\t\t{\n1761-\t\t\t\t$behavior->preDelete();\n--\n1804-\t\t\t\t\t\t}\n1805-\t\t\t\t\t}\n1806-\t\t\t\t}\n1807-\t\t\t}\n1808-\n1809-\t\t\t$this->_em->finishCascadeEvent('preDelete');\n1810:\t\t\t$this->_writePending = 'delete';\n1811-\t\t}\n1812-\n1813-\t\treturn count($this->_errors) == 0;\n1814-\t}\n1815-\n1816-\tpublic function isDeleted()\n"}
DB_SCHEMAS=["xf_newfi"]
TEMPLATE_INDEXES={"err":"","rc":0,"rows":["xf_template\t0\tPRIMARY\t1\ttemplate_id\tA\t1307\tNULL\tNULL\t\tBTREE\t\t\tNO","xf_template\t0\ttype_title_style_id\t1\ttype\tA\t6\tNULL\tNULL\t\tBTREE\t\t\tNO","xf_template\t0\ttype_title_style_id\t2\ttitle\tA\t1307\tNULL\tNULL\t\tBTREE\t\t\tNO","xf_template\t0\ttype_title_style_id\t3\tstyle_id\tA\t1307\tNULL\tNULL\t\tBTREE\t\t\tNO"]}
TEMPLATE_ROWS={"err":"","rc":0,"rows":["1610\t0\tpublic\tnewfi_portal\tNewfi/Portal\t1f484c8cf6bdeda8fda2974abf8a57f8cc7453fe2a779af7c735afa3b73aa741"]}
ADDON_ROW={"err":"","rc":0,"rows":["Newfi/Portal\t1000010\t1.0.0 Alpha 1\t1\t0\tNULL"]}
ERROR42={"err":"","rc":0,"rows":["42\tLogicException\tAttempted to set 'type' while a save was pending without forceSet\tsrc/XF/Mvc/Entity/Entity.php\t645\t#0 src/XF/Mvc/Entity/Entity.php(618): XF\\\\Mvc\\\\Entity\\\\Entity->set('type', 'public')\\n#1 src/XF/AddOn/DataType/AbstractDataType.php(275): XF\\\\Mvc\\\\Entity\\\\Entity->__set('type', 'public')\\n#2 src/XF/AddOn/DataType/Template.php(94): XF\\\\AddOn\\\\DataType\\\\AbstractDataType->importMappedAttributes(Object(SimpleXMLElement), Object(XF\\\\Entity\\\\Template))\\n#3 src/XF/Job/AddOnData.php(111): XF\\\\AddOn\\\\DataType\\\\Template->importAddOnData('Newfi/Portal', Object(SimpleXMLElement), 0, 8)\\n#4 src/XF/Job/Manager.php(275): XF\\\\Job\\\\AddOnData->run(8)\\n#5 src/XF/Job/Manager.php(205): XF\\\\Job\\\\Manager->runJobInternal(Array, 8)\\n#6 src/XF/Job/Manager.php(174): XF\\\\Job\\\\Manager->runJobEntry(Array, 8)\\n#7 src/XF/Cli/Runner.php(228): XF\\\\Job\\\\Manager->runById(530, 8)\\n#8 src/XF/Cli/Runner.php(116): XF\\\\Cli\\\\Runner->postExecutionCleanUp(Object(Symfony\\\\Component\\\\Console\\\\Output\\\\ConsoleOutput))\\n#9 cmd.php(17): XF\\\\Cli\\\\Runner->run()\\n#10 {main}"]}
IN_MEMORY_ENTITY_PROBE={"err":"","rc":0,"rows":["{\"label\":\"initial\",\"writePending\":false,\"type\":\"public\",\"title\":\"newfi_portal\",\"style_id\":0,\"addon_id\":\"Newfi/Portal\"}","{\"label\":\"after_check_duplicate_option\",\"writePending\":false,\"type\":\"public\",\"title\":\"newfi_portal\",\"style_id\":0,\"addon_id\":\"Newfi/Portal\"}","{\"label\":\"after_report_modification_option\",\"writePending\":false,\"type\":\"public\",\"title\":\"newfi_portal\",\"style_id\":0,\"addon_id\":\"Newfi/Portal\"}","{\"label\":\"after_behavior_option\",\"writePending\":false,\"type\":\"public\",\"title\":\"newfi_portal\",\"style_id\":0,\"addon_id\":\"Newfi/Portal\"}","{\"label\":\"after_title\",\"writePending\":false,\"type\":\"public\",\"title\":\"newfi_portal\",\"style_id\":0,\"addon_id\":\"Newfi/Portal\"}","{\"label\":\"after_type\",\"writePending\":false,\"type\":\"public\",\"title\":\"newfi_portal\",\"style_id\":0,\"addon_id\":\"Newfi/Portal\"}","{\"label\":\"after_version_id\",\"writePending\":false,\"type\":\"public\",\"title\":\"newfi_portal\",\"style_id\":0,\"addon_id\":\"Newfi/Portal\"}","{\"label\":\"after_version_string\",\"writePending\":false,\"type\":\"public\",\"title\":\"newfi_portal\",\"style_id\":0,\"addon_id\":\"Newfi/Portal\"}","{\"label\":\"after_style_id\",\"writePending\":false,\"type\":\"public\",\"title\":\"newfi_portal\",\"style_id\":0,\"addon_id\":\"Newfi/Portal\"}","{\"label\":\"after_addon_id\",\"writePending\":false,\"type\":\"public\",\"title\":\"newfi_portal\",\"style_id\":0,\"addon_id\":\"Newfi/Portal\"}"]}
NATIVE_REBUILD_IMPLEMENTATION_GREP={"err":"","rc":0,"text":"/var/www/forums/newfi/public/src/XF/Cli/Command/AddOnActionTrait.php:16:use XF\\Job\\AddOnData;\n/var/www/forums/newfi/public/src/XF/Cli/Command/AddOnActionTrait.php:150:\tprotected function importAddOnData(InputInterface $input, OutputInterface $output, AddOn $addOn)\n/var/www/forums/newfi/public/src/XF/Cli/Command/AddOnActionTrait.php:171:\t\t\t\t'xfAddOnData-' . $addOn->addon_id,\n/var/www/forums/newfi/public/src/XF/Cli/Command/AddOnActionTrait.php:172:\t\t\t\tAddOnData::class,\n/var/www/forums/newfi/public/src/XF/Cli/Command/AddOnActionTrait.php:219:\t\t\t'xf:addon-sub-action',\n/var/www/forums/newfi/public/src/XF/Cli/Command/Designer/RebuildMetadata.php:11:class RebuildMetadata extends AbstractCommand\n/var/www/forums/newfi/public/src/XF/Cli/Command/Rebuild/RebuildUsers.php:7:class RebuildUsers extends AbstractRebuildCommand\n/var/www/forums/newfi/public/src/XF/Cli/Command/Rebuild/RebuildSearch.php:8:class RebuildSearch extends AbstractRebuildCommand\n/var/www/forums/newfi/public/src/XF/Cli/Command/Rebuild/AbstractRebuildCommand.php:11:abstract class AbstractRebuildCommand extends AbstractCommand\n/var/www/forums/newfi/public/src/XF/Cli/Command/Rebuild/RebuildAttachmentThumbs.php:7:class RebuildAttachmentThumbs extends AbstractRebuildCommand\n/var/www/forums/newfi/public/src/XF/Cli/Command/Rebuild/RebuildForums.php:7:class RebuildForums extends AbstractRebuildCommand\n/var/www/forums/newfi/public/src/XF/Cli/Command/Rebuild/RebuildThreads.php:8:class RebuildThreads extends AbstractRebuildCommand\n/var/www/forums/newfi/public/src/XF/Cli/Command/Rebuild/RebuildStats.php:8:class RebuildStats extends AbstractRebuildCommand\n/var/www/forums/newfi/public/src/XF/Cli/Command/Rebuild/RebuildReactionScore.php:7:class RebuildReactionScore extends AbstractRebuildCommand\n/var/www/forums/newfi/public/src/XF/Cli/Command/Rebuild/RebuildIconUsage.php:7:class RebuildIconUsage extends AbstractRebuildCommand\n/var/www/forums/newfi/public/src/XF/Cli/Command/Rebuild/RebuildMessageCounts.php:7:class RebuildMessageCounts extends AbstractRebuildCommand\n/var/www/forums/newfi/public/src/XF/Cli/Command/Rebuild/RebuildSitemap.php:7:class RebuildSitemap extends AbstractRebuildCommand\n/var/www/forums/newfi/public/src/XF/Cli/Command/Rebuild/AbstractImageOptimizationCommand.php:7:abstract class AbstractImageOptimizationCommand extends AbstractRebuildCommand\n/var/www/forums/newfi/public/src/XF/Cli/Command/RebuildMasterData.php:10:class RebuildMasterData extends AbstractCommand implements CustomAppCommandInterface\n/var/www/forums/newfi/public/src/XF/Cli/Command/AddOnSubAction.php:18:\t\t\t->setName('xf:addon-sub-action')\n/var/www/forums/newfi/public/src/XF/Cli/Command/AddOnSubAction.php:66:\t\t\t\t\t$this->importAddOnData($input, $output, $addOn);\n/var/www/forums/newfi/public/src/XF/Cli/Command/AddOnRebuild.php:12:class AddOnRebuild extends AbstractCommand\n/var/www/forums/newfi/public/src/XF/Cli/Command/AddOnRebuild.php:20:\t\t\t->setName('xf:addon-rebuild')\n/var/www/forums/newfi/public/src/XF/Cli/Command/Development/AbstractImportCommand.php:87:\t\t$installedAddOns = \\XF::repository(AddOnRepository::class)->getInstalledAddOnData();\n/var/www/forums/newfi/public/src/XF/Cli/Command/Development/LintTemplates.php:39:\t\t$installedAddOns = \\XF::repository(AddOnRepository::class)->getInstalledAddOnData();\n/var/www/forums/newfi/public/src/XF/Cli/Command/Development/GeneratePhpStormMeta.php:145:\t\t\t'AddOnDataType' => [\n/var/www/forums/newfi/public/src/XF/Cli/Command/Development/RebuildMetadata.php:9:class RebuildMetadata extends AbstractCommand\n/var/www/forums/newfi/public/src/XF/Cli/Command/Development/RebuildCaches.php:11:class RebuildCaches extends AbstractCommand\n/var/www/forums/newfi/public/src/XF/Cli/Command/Development/SyncTemplates.php:37:\t\t$installedAddOns = \\XF::repository(AddOnRepository::class)->getInstalledAddOnData();\n/var/www/forums/newfi/public/src/XF/Cli/Command/EmbedMetadata/RebuildPosts.php:7:class RebuildPosts extends AbstractEmbedMetadataCommand\n/var/www/forums/newfi/public/src/XF/Cli/Command/EmbedMetadata/RebuildProfilePosts.php:7:class RebuildProfilePosts extends AbstractEmbedMetadataCommand\n/var/www/forums/newfi/public/src/XF/Cli/Command/EmbedMetadata/RebuildConversationMessages.php:7:class RebuildConversationMessages extends AbstractEmbedMetadataCommand\n/var/www/forums/newfi/public/src/XF/Cli/Command/EmbedMetadata/RebuildProfilePostComments.php:7:class RebuildProfilePostComments extends AbstractEmbedMetadataCommand\n/var/www/forums/newfi/public/src/XF/Job/AddOnUninstallData.php:40:\t\t\t\t\t$dataManager->finalizeRemoveAddOnData($addOnId);\n/var/www/forums/newfi/public/src/XF/Job/AddOnUninstallData.php:52:\t\t\t$isComplete = $handler->deleteAddOnData($addOnId, $timeLeft);\n/var/www/forums/newfi/public/src/XF/Job/Poll.php:7:class Poll extends AbstractRebuildJob\n/var/www/forums/newfi/public/src/XF/Job/SearchRebuild.php:9:class SearchRebuild extends AbstractJob\n/var/www/forums/newfi/public/src/XF/Job/AttachmentThumb.php:10:class AttachmentThumb extends AbstractRebuildJob\n/var/www/forums/newfi/public/src/XF/Job/StylePropertyRebuild.php:7:class StylePropertyRebuild extends AbstractJob\n/var/www/forums/newfi/public/src/XF/Job/MessageCount.php:8:class MessageCount extends AbstractRebuildJob\n/var/www/forums/newfi/public/src/XF/Job/Thread.php:7:class Thread extends AbstractRebuildJob\n/var/www/forums/newfi/public/src/XF/Job/PermissionRebuildPartial.php:7:class PermissionRebuildPartial extends AbstractJob\n/var/www/forums/newfi/public/src/XF/Job/AbstractImageOptimizationJob.php:7:abstract class AbstractImageOptimizationJob extends AbstractRebuildJob\n/var/www/forums/newfi/public/src/XF/Job/SearchForum.php:8:class SearchForum extends AbstractRebuildJob\n/var/www/forums/newfi/public/src/XF/Job/Forum.php:5:class Forum extends AbstractRebuildJob\n/var/www/forums/newfi/public/src/XF/Job/PermissionRebuild.php:9:class PermissionRebuild extends AbstractRebuildJob\n/var/www/forums/newfi/public/src/XF/Job/AbstractRebuildJob.php:5:abstract class AbstractRebuildJob extends AbstractJob\n/var/www/forums/newfi/public/src/XF/Job/ProfilePost.php:5:class ProfilePost extends AbstractRebuildJob\n/var/www/forums/newfi/public/src/XF/Job/CoreCacheRebuild.php:31:class CoreCacheRebuild extends AbstractJob\n/var/www/forums/newfi/public/src/XF/Job/StyleAssetRebuild.php:7:class StyleAssetRebuild extends AbstractJob\n/var/www/forums/newfi/public/src/XF/Job/PhraseRebuild.php:12:class PhraseRebuild extends AbstractJob\n/var/www/forums/newfi/public/src/XF/Job/AddOnData.php:7:class AddOnData extends AbstractJob\n/var/www/forums/newfi/public/src/XF/Job/AddOnData.php:66:\t\t\t\t\t$handler->deleteAddOnData($addOnId);\n/var/www/forums/newfi/public/src/XF/Job/AddOnData.php:105:\t\t\t$handler->deleteAddOnData($addOnId);\n/var/www/forums/newfi/public/src/XF/Job/AddOnData.php:111:\t\t$last = $handler->importAddOnData($addOnId, $xml, $start, $maxRunTime);\n/var/www/forums/newfi/public/src/XF/Job/AddOnData.php:115:\t\t\t$handler->deleteOrphanedAddOnData($addOnId, $xml);\n/var/www/forums/newfi/public/src/XF/Job/Gravatar.php:10:class Gravatar extends AbstractRebuildJob\n/var/www/forums/newfi/public/src/XF/Job/Conversation.php:7:class Conversation extends AbstractRebuildJob\n/var/www/forums/newfi/public/src/XF/Job/TemplateRebuild.php:12:class TemplateRebuild extends AbstractJob\n/var/www/forums/newfi/public/src/XF/Job/User.php:9:class User extends AbstractRebuildJob\n/var/www/forums/newfi/public/src/XF/Job/AddOnInstallBatch.php:341:\t\t$job = $this->app->job(AddOnData::class, 0, $params['data']);\n/var/www/forums/newfi/public/src/XF/Job/ReactionScore.php:7:class ReactionScore extends AbstractRebuildJob\n"}
STAGING_QGA={"err":"","hostname":"newfi-staging","rc":0}
PRODUCTION_QGA={"err":"","hostname":"newfi-prod","rc":0}
PRODUCTION_PUBLIC_HTTP={"err":"","http":"200","rc":0}
STAGING_LOCAL_HTTP={"err":"","http":"503","rc":0}
FINAL_DECISION=RCA7_COMPLETE_NO_MUTATION_ALL_REMAINING_TEMPLATE_IMPORT_EVIDENCE_READY
RCA7_END=true

OUTPUT_END
CHAT_OUTPUT_END
