\"},{\"line\":672,\"text\":\"\\t\\t\"}],\"line\":669,\"text\":\" \"},{\"context\":[{\"line\":702,\"text\":\"]]>\"},{\"line\":703,\"text\":\" \"},{\"line\":704,\"text\":\"\\t{{ phrase('xfrm_resource_x_new_watched_category', {\"},{\"line\":705,\"text\":\"\\t\\t'resource': prefix('resource', $resource, 'escaped') . $resource.title\"},{\"line\":706,\"text\":\"\\t}) }}\"}],\"line\":703,\"text\":\" \"},{\"context\":[{\"line\":724,\"text\":\"]]>\"},{\"line\":725,\"text\":\" \"},{\"line\":726,\"text\":\"\\t{{ phrase('xfrm_resource_x_updated_y', {\"},{\"line\":727,\"text\":\"\\t\\t'resource': prefix('resource', $resource, 'escaped') . $resource.title,\"},{\"line\":728,\"text\":\"\\t\\t'update': $update.title\"}],\"line\":725,\"text\":\" \"},{\"context\":[{\"line\":751,\"text\":\"]]>\"},{\"line\":752,\"text\":\" \"},{\"line\":753,\"text\":\"\\t{{ phrase('xfrm_resource_x_updated_y', {\"},{\"line\":754,\"text\":\"\\t\\t'resource': prefix('resource', $resource, 'escaped') . $resource.title,\"},{\"line\":755,\"text\":\"\\t\\t'update': $update.title\"}],\"line\":752,\"text\":\" \"},{\"context\":[{\"line\":777,\"text\":\"]]>\"},{\"line\":778,\"text\":\" \"},{\"line\":779,\"text\":\"\\t{{ phrase('welcome_to_boardtitle', {'boardTitle': $xf.options.boardTitle}) }}\"},{\"line\":780,\"text\":\"\"},{\"line\":781,\"text\":\"{{ phrase('xfrm_your_review_to_resource_x_was_submitted', {\"}],\"line\":778,\"text\":\" \"},{\"context\":[{\"line\":783,\"text\":\"}) }}]]>\"},{\"line\":784,\"text\":\" ' . prefix('resource', $content.Resource) . $content.Resource.title . ''\"},{\"line\":787,\"text\":\"}) }}]]>\"}],\"line\":784,\"text\":\" ' . prefix('resource', $content.Resource) . $content.Resource.title . ''\"},{\"line\":787,\"text\":\"}) }}]]>\"},{\"line\":788,\"text\":\" \"},{\"line\":788,\"text\":\" ' . prefix('resource', $content.Resource) . $content.Resource.title . ''\"},{\"line\":791,\"text\":\"}) }}]]>\"}],\"line\":788,\"text\":\" ' . prefix('resource', $content.Resource) . $content.Resource.title . ''\"},{\"line\":791,\"text\":\"}) }}]]>\"},{\"line\":792,\"text\":\" \"},{\"line\":792,\"text\":\" ' . prefix('resource', $content) . $content.title . ''\"},{\"line\":795,\"text\":\"}) }}]]>\"}],\"line\":792,\"text\":\" ' . prefix('resource', $content) . $content.title . ''\"},{\"line\":795,\"text\":\"}) }}]]>\"},{\"line\":796,\"text\":\" \"},{\"line\":796,\"text\":\" ' . prefix('resource', $content) . $content.title . ''\"},{\"line\":799,\"text\":\"}) }}]]>\"}],\"line\":796,\"text\":\" ' . prefix('resource', $content) . $content.title . ''\"},{\"line\":799,\"text\":\"}) }}]]>\"},{\"line\":800,\"text\":\" \"}],\"line\":797,\"text\":\"\\t'name': username_link($user, false, {'defaultname': $alert.username}),\"},{\"context\":[{\"line\":799,\"text\":\"}) }}]]>\"},{\"line\":800,\"text\":\" \"},{\"line\":801,\"text\":\"\\t{{ phrase('xfrm_x_created_resource_y', {\"},{\"line\":802,\"text\":\"\\t\\t'name': username_link($user, false, {'defaultname': $alert.username}),\"},{\"line\":803,\"text\":\"\\t\\t'title': '' . prefix('resource', $content.Resource) . $content.Resource.title . ''\"}],\"line\":800,\"text\":\" \"},{\"context\":[{\"line\":801,\"text\":\"\\t{{ phrase('xfrm_x_created_resource_y', {\"},{\"line\":802,\"text\":\"\\t\\t'name': username_link($user, false, {'defaultname': $alert.username}),\"},{\"line\":803,\"text\":\"\\t\\t'title': '' . prefix('resource', $content.Resource) . $content.Resource.title . ''\"},{\"line\":804,\"text\":\"\\t}) }}\"},{\"line\":805,\"text\":\"\"}],\"line\":802,\"text\":\"\\t\\t'name': username_link($user, false, {'defaultname': $alert.username}),\"},{\"context\":[{\"line\":806,\"text\":\"\\t{{ phrase('xfrm_x_updated_resource_y', {\"},{\"line\":807,\"text\":\"\\t\\t'name': username_link($user, false, {'defaultname': $alert.username}),\"},{\"line\":808,\"text\":\"\\t\\t'title': '' . prefix('resource', $content.Resource) . $content.Resource.title . ''\"},{\"line\":809,\"text\":\"\\t}) }}\"},{\"line\":810,\"text\":\"]]>\"}],\"line\":807,\"text\":\"\\t\\t'name': username_link($user, false, {'defaultname': $alert.username}),\"},{\"context\":[{\"line\":810,\"text\":\"]]>\"},{\"line\":811,\"text\":\" \"},{\"line\":812,\"text\":\"\\t{{ phrase('xfrm_x_mentioned_you_in_resource_y', {\"},{\"line\":813,\"text\":\"\\t\\t'name': username_link($user, false, {'defaultname': $alert.username}),\"},{\"line\":814,\"text\":\"\\t\\t'title': '' . prefix('resource', $content.Resource) . $content.Resource.title . ''\"}],\"line\":811,\"text\":\" \"},{\"context\":[{\"line\":812,\"text\":\"\\t{{ phrase('xfrm_x_mentioned_you_in_resource_y', {\"},{\"line\":813,\"text\":\"\\t\\t'name': username_link($user, false, {'defaultname': $alert.username}),\"},{\"line\":814,\"text\":\"\\t\\t'title': '' . prefix('resource', $content.Resource) . $content.Resource.title . ''\"},{\"line\":815,\"text\":\"\\t}) }}\"},{\"line\":816,\"text\":\"\"}],\"line\":813,\"text\":\"\\t\\t'name': username_link($user, false, {'defaultname': $alert.username}),\"},{\"context\":[{\"line\":817,\"text\":\"\\t{{ phrase('xfrm_x_mentioned_you_in_update_resource_y', {\"},{\"line\":818,\"text\":\"\\t\\t'name': username_link($user, false, {'defaultname': $alert.username}),\"},{\"line\":819,\"text\":\"\\t\\t'title': '' . prefix('resource', $content.Resource) . $content.Resource.title . ''\"},{\"line\":820,\"text\":\"\\t}) }}\"},{\"line\":821,\"text\":\"]]>\"}],\"line\":818,\"text\":\"\\t\\t'name': username_link($user, false, {'defaultname': $alert.username}),\"},{\"context\":[{\"line\":821,\"text\":\"]]>\"},{\"line\":822,\"text\":\" \"},{\"line\":823,\"text\":\"\\t{{ phrase('xfrm_x_reacted_to_your_resource_y', {\"},{\"line\":824,\"text\":\"\\t\\t'name': username_link($user, false, {'defaultname': $alert.username}),\"},{\"line\":825,\"text\":\"\\t\\t'title': '' . prefix('resource', $content.Resource) . $content.Resource.title . '',\"}],\"line\":822,\"text\":\" \"},{\"context\":[{\"line\":823,\"text\":\"\\t{{ phrase('xfrm_x_reacted_to_your_resource_y', {\"},{\"line\":824,\"text\":\"\\t\\t'name': username_link($user, false, {'defaultname': $alert.username}),\"},{\"line\":825,\"text\":\"\\t\\t'title': '' . prefix('resource', $content.Resource) . $content.Resource.title . '',\"},{\"line\":826,\"text\":\"\\t\\t'reaction': alert_reaction($extra.reaction_id)|preescaped\"},{\"line\":827,\"text\":\"\\t}) }}\"}],\"line\":824,\"text\":\"\\t\\t'name': username_link($user, false, {'defaultname': $alert.username}),\"},{\"context\":[{\"line\":825,\"text\":\"\\t\\t'title': '' . prefix('resource', $content.Resource) . $content.Resource.title . '',\"},{\"line\":826,\"text\":\"\\t\\t'reaction': alert_reaction($extra.reaction_id)|preescaped\"},{\"line\":827,\"text\":\"\\t}) }}\"},{\"line\":828,\"text\":\"\"},{\"line\":829,\"text\":\"\\t{{ phrase('xfrm_x_reacted_to_your_update_resource_y', {\"}],\"line\":826,\"text\":\"\\t\\t'reaction': alert_reaction($extra.reaction_id)|preescaped\"},{\"context\":[{\"line\":829,\"text\":\"\\t{{ phrase('xfrm_x_reacted_to_your_update_resource_y', {\"},{\"line\":830,\"text\":\"\\t\\t'name': username_link($user, false, {'defaultname': $alert.username}),\"},{\"line\":831,\"text\":\"\\t\\t'title': '' . prefix('resource', $content.Resource) . $content.Resource.title . '',\"},{\"line\":832,\"text\":\"\\t\\t'reaction': alert_reaction($extra.reaction_id)|preescaped\"},{\"line\":833,\"text\":\"\\t}) }}\"}],\"line\":830,\"text\":\"\\t\\t'name': username_link($user, false, {'defaultname': $alert.username}),\"},{\"context\":[{\"line\":831,\"text\":\"\\t\\t'title': '' . prefix('resource', $content.Resource) . $content.Resource.title . '',\"},{\"line\":832,\"text\":\"\\t\\t'reaction': alert_reaction($extra.reaction_id)|preescaped\"},{\"line\":833,\"text\":\"\\t}) }}\"},{\"line\":834,\"text\":\"]]>\"},{\"line\":835,\"text\":\" ]]>\"},{\"line\":835,\"text\":\" {{ phrase('reason:') }} {$extra.reason}]]>\"}],\"line\":835,\"text\":\" contentType = $contentType;\"},{\"line\":26,\"text\":\"\\t}\"},{\"line\":27,\"text\":\"\"},{\"line\":28,\"text\":\"\\t/**\"}],\"line\":23,\"text\":\"\\tpublic function __construct($contentType)\"},{\"context\":[{\"line\":32,\"text\":\"\\t * @return bool\"},{\"line\":33,\"text\":\"\\t */\"},{\"line\":34,\"text\":\"\\tpublic function canViewContent(Entity $entity, &$error = null)\"},{\"line\":35,\"text\":\"\\t{\"},{\"line\":36,\"text\":\"\\t\\tif (method_exists($entity, 'canView'))\"},{\"line\":37,\"text\":\"\\t\\t{\"},{\"line\":38,\"text\":\"\\t\\t\\treturn $entity->canView($error);\"},{\"line\":39,\"text\":\"\\t\\t}\"}],\"line\":34,\"text\":\"\\tpublic function canViewContent(Entity $entity, &$error = null)\"},{\"context\":[{\"line\":47,\"text\":\"\\t * @return bool\"},{\"line\":48,\"text\":\"\\t */\"},{\"line\":49,\"text\":\"\\tpublic function canViewAlert(UserAlert $alert, &$error = null)\"},{\"line\":50,\"text\":\"\\t{\"},{\"line\":51,\"text\":\"\\t\\treturn true;\"},{\"line\":52,\"text\":\"\\t}\"},{\"line\":53,\"text\":\"\"},{\"line\":54,\"text\":\"\\t/**\"}],\"line\":49,\"text\":\"\\tpublic function canViewAlert(UserAlert $alert, &$error = null)\"},{\"context\":[{\"line\":53,\"text\":\"\"},{\"line\":54,\"text\":\"\\t/**\"},{\"line\":55,\"text\":\"\\t * For alerts which are pushed, you can create a push specific template which should be text only.\"},{\"line\":56,\"text\":\"\\t * If no value is provided or the template does not exist, the push contents will come from a\"},{\"line\":57,\"text\":\"\\t * rendered version of the normal alert template with HTML tags stripped.\"},{\"line\":58,\"text\":\"\\t *\"},{\"line\":59,\"text\":\"\\t * @param string $action\"},{\"line\":60,\"text\":\"\\t *\"}],\"line\":55,\"text\":\"\\t * For alerts which are pushed, you can create a push specific template which should be text only.\"},{\"context\":[{\"line\":54,\"text\":\"\\t/**\"},{\"line\":55,\"text\":\"\\t * For alerts which are pushed, you can create a push specific template which should be text only.\"},{\"line\":56,\"text\":\"\\t * If no value is provided or the template does not exist, the push contents will come from a\"},{\"line\":57,\"text\":\"\\t * rendered version of the normal alert template with HTML tags stripped.\"},{\"line\":58,\"text\":\"\\t *\"},{\"line\":59,\"text\":\"\\t * @param string $action\"},{\"line\":60,\"text\":\"\\t *\"},{\"line\":61,\"text\":\"\\t * @return string|null\"}],\"line\":56,\"text\":\"\\t * If no value is provided or the template does not exist, the push contents will come from a\"},{\"context\":[{\"line\":55,\"text\":\"\\t * For alerts which are pushed, you can create a push specific template which should be text only.\"},{\"line\":56,\"text\":\"\\t * If no value is provided or the template does not exist, the push contents will come from a\"},{\"line\":57,\"text\":\"\\t * rendered version of the normal alert template with HTML tags stripped.\"},{\"line\":58,\"text\":\"\\t *\"},{\"line\":59,\"text\":\"\\t * @param string $action\"},{\"line\":60,\"text\":\"\\t *\"},{\"line\":61,\"text\":\"\\t * @return string|null\"},{\"line\":62,\"text\":\"\\t */\"}],\"line\":57,\"text\":\"\\t * rendered version of the normal alert template with HTML tags stripped.\"},{\"context\":[{\"line\":61,\"text\":\"\\t * @return string|null\"},{\"line\":62,\"text\":\"\\t */\"},{\"line\":63,\"text\":\"\\tpublic function getPushTemplateName($action)\"},{\"line\":64,\"text\":\"\\t{\"},{\"line\":65,\"text\":\"\\t\\treturn 'public:push_' . $this->contentType . '_' . $action;\"},{\"line\":66,\"text\":\"\\t}\"},{\"line\":67,\"text\":\"\"},{\"line\":68,\"text\":\"\\t/**\"}],\"line\":63,\"text\":\"\\tpublic function getPushTemplateName($action)\"},{\"context\":[{\"line\":63,\"text\":\"\\tpublic function getPushTemplateName($action)\"},{\"line\":64,\"text\":\"\\t{\"},{\"line\":65,\"text\":\"\\t\\treturn 'public:push_' . $this->contentType . '_' . $action;\"},{\"line\":66,\"text\":\"\\t}\"},{\"line\":67,\"text\":\"\"},{\"line\":68,\"text\":\"\\t/**\"},{\"line\":69,\"text\":\"\\t * @param string $action\"},{\"line\":70,\"text\":\"\\t *\"}],\"line\":65,\"text\":\"\\t\\treturn 'public:push_' . $this->contentType . '_' . $action;\"},{\"context\":[{\"line\":71,\"text\":\"\\t * @return string\"},{\"line\":72,\"text\":\"\\t */\"},{\"line\":73,\"text\":\"\\tpublic function getTemplateName($action)\"},{\"line\":74,\"text\":\"\\t{\"},{\"line\":75,\"text\":\"\\t\\treturn 'public:alert_' . $this->contentType . '_' . $action;\"},{\"line\":76,\"text\":\"\\t}\"},{\"line\":77,\"text\":\"\"},{\"line\":78,\"text\":\"\\t/**\"}],\"line\":73,\"text\":\"\\tpublic function getTemplateName($action)\"},{\"context\":[{\"line\":87,\"text\":\"\\t * }\"},{\"line\":88,\"text\":\"\\t */\"},{\"line\":89,\"text\":\"\\tpublic function getTemplateData($action, UserAlert $alert, ?Entity $content = null)\"},{\"line\":90,\"text\":\"\\t{\"},{\"line\":91,\"text\":\"\\t\\tif (!$content)\"},{\"line\":92,\"text\":\"\\t\\t{\"},{\"line\":93,\"text\":\"\\t\\t\\t$content = $alert->Content;\"},{\"line\":94,\"text\":\"\\t\\t}\"}],\"line\":89,\"text\":\"\\tpublic function getTemplateData($action, UserAlert $alert, ?Entity $content = null)\"},{\"context\":[{\"line\":107,\"text\":\"\\t * @return string\"},{\"line\":108,\"text\":\"\\t */\"},{\"line\":109,\"text\":\"\\tpublic function render(UserAlert $alert, ?Entity $content = null)\"},{\"line\":110,\"text\":\"\\t{\"},{\"line\":111,\"text\":\"\\t\\tif (!$content)\"},{\"line\":112,\"text\":\"\\t\\t{\"},{\"line\":113,\"text\":\"\\t\\t\\t$content = $alert->Content;\"},{\"line\":114,\"text\":\"\\t\\t\\tif (!$content)\"}],\"line\":109,\"text\":\"\\tpublic function render(UserAlert $alert, ?Entity $content = null)\"},{\"context\":[{\"line\":122,\"text\":\"\\t\\t$data = $this->getTemplateData($action, $alert, $content);\"},{\"line\":123,\"text\":\"\"},{\"line\":124,\"text\":\"\\t\\treturn \\\\XF::app()->templater()->renderTemplate($template, $data);\"},{\"line\":125,\"text\":\"\\t}\"},{\"line\":126,\"text\":\"\"},{\"line\":127,\"text\":\"\\t/**\"},{\"line\":128,\"text\":\"\\t * @return bool\"},{\"line\":129,\"text\":\"\\t */\"}],\"line\":124,\"text\":\"\\t\\treturn \\\\XF::app()->templater()->renderTemplate($template, $data);\"},{\"context\":[{\"line\":128,\"text\":\"\\t * @return bool\"},{\"line\":129,\"text\":\"\\t */\"},{\"line\":130,\"text\":\"\\tpublic function isAlertRenderable(UserAlert $alert)\"},{\"line\":131,\"text\":\"\\t{\"},{\"line\":132,\"text\":\"\\t\\t$template = $this->getTemplateName($alert->action);\"},{\"line\":133,\"text\":\"\\t\\treturn \\\\XF::app()->templater()->isKnownTemplate($template);\"},{\"line\":134,\"text\":\"\\t}\"},{\"line\":135,\"text\":\"\"}],\"line\":130,\"text\":\"\\tpublic function isAlertRenderable(UserAlert $alert)\"},{\"context\":[{\"line\":140,\"text\":\"\\t * }\"},{\"line\":141,\"text\":\"\\t */\"},{\"line\":142,\"text\":\"\\tpublic function getApiOutput(UserAlert $alert)\"},{\"line\":143,\"text\":\"\\t{\"},{\"line\":144,\"text\":\"\\t\\t$templater = \\\\XF::app()->templater();\"},{\"line\":145,\"text\":\"\\t\\t$content = $alert->Content;\"},{\"line\":146,\"text\":\"\\t\\tif (!$content)\"},{\"line\":147,\"text\":\"\\t\\t{\"}],\"line\":142,\"text\":\"\\tpublic function getApiOutput(UserAlert $alert)\"},{\"context\":[{\"line\":149,\"text\":\"\\t\\t}\"},{\"line\":150,\"text\":\"\"},{\"line\":151,\"text\":\"\\t\\t$templateName = $this->getPushTemplateName($alert->action);\"},{\"line\":152,\"text\":\"\\t\\tif (!$templater->isKnownTemplate($templateName))\"},{\"line\":153,\"text\":\"\\t\\t{\"},{\"line\":154,\"text\":\"\\t\\t\\t$templateName = $this->getTemplateName($alert->action);\"},{\"line\":155,\"text\":\"\\t\\t}\"},{\"line\":156,\"text\":\"\\t\\t$templateData = $this->getTemplateData($alert->action, $alert, $content);\"}],\"line\":151,\"text\":\"\\t\\t$templateName = $this->getPushTemplateName($alert->action);\"},{\"context\":[{\"line\":156,\"text\":\"\\t\\t$templateData = $this->getTemplateData($alert->action, $alert, $content);\"},{\"line\":157,\"text\":\"\"},{\"line\":158,\"text\":\"\\t\\t$pushContent = $templater->renderTemplate($templateName, $templateData);\"},{\"line\":159,\"text\":\"\"},{\"line\":160,\"text\":\"\\t\\tif (preg_match('#(.*)#siU', $pushContent, $match))\"},{\"line\":161,\"text\":\"\\t\\t{\"},{\"line\":162,\"text\":\"\\t\\t\\t$alertUrl = trim(htmlspecialchars_decode($match[1], ENT_QUOTES));\"},{\"line\":163,\"text\":\"\\t\\t\\t$alertUrl = \\\\XF::canonicalizeUrl($alertUrl);\"}],\"line\":158,\"text\":\"\\t\\t$pushContent = $templater->renderTemplate($templateName, $templateData);\"},{\"context\":[{\"line\":158,\"text\":\"\\t\\t$pushContent = $templater->renderTemplate($templateName, $templateData);\"},{\"line\":159,\"text\":\"\"},{\"line\":160,\"text\":\"\\t\\tif (preg_match('#(.*)#siU', $pushContent, $match))\"},{\"line\":161,\"text\":\"\\t\\t{\"},{\"line\":162,\"text\":\"\\t\\t\\t$alertUrl = trim(htmlspecialchars_decode($match[1], ENT_QUOTES));\"},{\"line\":163,\"text\":\"\\t\\t\\t$alertUrl = \\\\XF::canonicalizeUrl($alertUrl);\"},{\"line\":164,\"text\":\"\\t\\t}\"},{\"line\":165,\"text\":\"\\t\\telse\"}],\"line\":160,\"text\":\"\\t\\tif (preg_match('#(.*)#siU', $pushContent, $match))\"},{\"context\":[{\"line\":168,\"text\":\"\\t\\t}\"},{\"line\":169,\"text\":\"\"},{\"line\":170,\"text\":\"\\t\\t$pushContent = preg_replace('#<(push:[a-z0-9_]+)>.*\\\\\\\\1>#siU', '', $pushContent);\"},{\"line\":171,\"text\":\"\\t\\t$pushContent = strip_tags($pushContent);\"},{\"line\":172,\"text\":\"\\t\\t$pushContent = html_entity_decode($pushContent, ENT_QUOTES);\"},{\"line\":173,\"text\":\"\\t\\t$pushContent = trim($pushContent);\"},{\"line\":174,\"text\":\"\"},{\"line\":175,\"text\":\"\\t\\treturn [\"}],\"line\":170,\"text\":\"\\t\\t$pushContent = preg_replace('#<(push:[a-z0-9_]+)>.*\\\\\\\\1>#siU', '', $pushContent);\"},{\"context\":[{\"line\":169,\"text\":\"\"},{\"line\":170,\"text\":\"\\t\\t$pushContent = preg_replace('#<(push:[a-z0-9_]+)>.*\\\\\\\\1>#siU', '', $pushContent);\"},{\"line\":171,\"text\":\"\\t\\t$pushContent = strip_tags($pushContent);\"},{\"line\":172,\"text\":\"\\t\\t$pushContent = html_entity_decode($pushContent, ENT_QUOTES);\"},{\"line\":173,\"text\":\"\\t\\t$pushContent = trim($pushContent);\"},{\"line\":174,\"text\":\"\"},{\"line\":175,\"text\":\"\\t\\treturn [\"},{\"line\":176,\"text\":\"\\t\\t\\t'text' => $pushContent,\"}],\"line\":171,\"text\":\"\\t\\t$pushContent = strip_tags($pushContent);\"},{\"context\":[{\"line\":170,\"text\":\"\\t\\t$pushContent = preg_replace('#<(push:[a-z0-9_]+)>.*\\\\\\\\1>#siU', '', $pushContent);\"},{\"line\":171,\"text\":\"\\t\\t$pushContent = strip_tags($pushContent);\"},{\"line\":172,\"text\":\"\\t\\t$pushContent = html_entity_decode($pushContent, ENT_QUOTES);\"},{\"line\":173,\"text\":\"\\t\\t$pushContent = trim($pushContent);\"},{\"line\":174,\"text\":\"\"},{\"line\":175,\"text\":\"\\t\\treturn [\"},{\"line\":176,\"text\":\"\\t\\t\\t'text' => $pushContent,\"},{\"line\":177,\"text\":\"\\t\\t\\t'url' => $alertUrl,\"}],\"line\":172,\"text\":\"\\t\\t$pushContent = html_entity_decode($pushContent, ENT_QUOTES);\"},{\"context\":[{\"line\":171,\"text\":\"\\t\\t$pushContent = strip_tags($pushContent);\"},{\"line\":172,\"text\":\"\\t\\t$pushContent = html_entity_decode($pushContent, ENT_QUOTES);\"},{\"line\":173,\"text\":\"\\t\\t$pushContent = trim($pushContent);\"},{\"line\":174,\"text\":\"\"},{\"line\":175,\"text\":\"\\t\\treturn [\"},{\"line\":176,\"text\":\"\\t\\t\\t'text' => $pushContent,\"},{\"line\":177,\"text\":\"\\t\\t\\t'url' => $alertUrl,\"},{\"line\":178,\"text\":\"\\t\\t];\"}],\"line\":173,\"text\":\"\\t\\t$pushContent = trim($pushContent);\"},{\"context\":[{\"line\":174,\"text\":\"\"},{\"line\":175,\"text\":\"\\t\\treturn [\"},{\"line\":176,\"text\":\"\\t\\t\\t'text' => $pushContent,\"},{\"line\":177,\"text\":\"\\t\\t\\t'url' => $alertUrl,\"},{\"line\":178,\"text\":\"\\t\\t];\"},{\"line\":179,\"text\":\"\\t}\"},{\"line\":180,\"text\":\"\"},{\"line\":181,\"text\":\"\\t/**\"}],\"line\":176,\"text\":\"\\t\\t\\t'text' => $pushContent,\"},{\"context\":[{\"line\":182,\"text\":\"\\t * @return list\"},{\"line\":183,\"text\":\"\\t */\"},{\"line\":184,\"text\":\"\\tpublic function getEntityWith()\"},{\"line\":185,\"text\":\"\\t{\"},{\"line\":186,\"text\":\"\\t\\treturn [];\"},{\"line\":187,\"text\":\"\\t}\"},{\"line\":188,\"text\":\"\"},{\"line\":189,\"text\":\"\\t/**\"}],\"line\":184,\"text\":\"\\tpublic function getEntityWith()\"},{\"context\":[{\"line\":190,\"text\":\"\\t * @param int|list $id\"},{\"line\":191,\"text\":\"\\t *\"},{\"line\":192,\"text\":\"\\t * @return T|AbstractCollection\"},{\"line\":193,\"text\":\"\\t */\"},{\"line\":194,\"text\":\"\\tpublic function getContent($id)\"},{\"line\":195,\"text\":\"\\t{\"},{\"line\":196,\"text\":\"\\t\\treturn \\\\XF::app()->findByContentType($this->contentType, $id, $this->getEntityWith());\"},{\"line\":197,\"text\":\"\\t}\"}],\"line\":192,\"text\":\"\\t * @return T|AbstractCollection\"},{\"context\":[{\"line\":192,\"text\":\"\\t * @return T|AbstractCollection\"},{\"line\":193,\"text\":\"\\t */\"},{\"line\":194,\"text\":\"\\tpublic function getContent($id)\"},{\"line\":195,\"text\":\"\\t{\"},{\"line\":196,\"text\":\"\\t\\treturn \\\\XF::app()->findByContentType($this->contentType, $id, $this->getEntityWith());\"},{\"line\":197,\"text\":\"\\t}\"},{\"line\":198,\"text\":\"\"},{\"line\":199,\"text\":\"\\t/**\"}],\"line\":194,\"text\":\"\\tpublic function getContent($id)\"},{\"context\":[{\"line\":200,\"text\":\"\\t * @return string\"},{\"line\":201,\"text\":\"\\t */\"},{\"line\":202,\"text\":\"\\tpublic function getContentType()\"},{\"line\":203,\"text\":\"\\t{\"},{\"line\":204,\"text\":\"\\t\\treturn $this->contentType;\"},{\"line\":205,\"text\":\"\\t}\"},{\"line\":206,\"text\":\"\"},{\"line\":207,\"text\":\"\\t/**\"}],\"line\":202,\"text\":\"\\tpublic function getContentType()\"},{\"context\":[{\"line\":210,\"text\":\"\\t * @return list\"},{\"line\":211,\"text\":\"\\t */\"},{\"line\":212,\"text\":\"\\tpublic function getOptOutActions()\"},{\"line\":213,\"text\":\"\\t{\"},{\"line\":214,\"text\":\"\\t\\treturn [];\"},{\"line\":215,\"text\":\"\\t}\"},{\"line\":216,\"text\":\"\"},{\"line\":217,\"text\":\"\\t/**\"}],\"line\":212,\"text\":\"\\tpublic function getOptOutActions()\"},{\"context\":[{\"line\":220,\"text\":\"\\t * @return int\"},{\"line\":221,\"text\":\"\\t */\"},{\"line\":222,\"text\":\"\\tpublic function getOptOutDisplayOrder()\"},{\"line\":223,\"text\":\"\\t{\"},{\"line\":224,\"text\":\"\\t\\treturn 0;\"},{\"line\":225,\"text\":\"\\t}\"},{\"line\":226,\"text\":\"\"},{\"line\":227,\"text\":\"\\t/**\"}],\"line\":222,\"text\":\"\\tpublic function getOptOutDisplayOrder()\"},{\"context\":[{\"line\":228,\"text\":\"\\t * @return array\"},{\"line\":229,\"text\":\"\\t */\"},{\"line\":230,\"text\":\"\\tpublic function getOptOutsMap()\"},{\"line\":231,\"text\":\"\\t{\"},{\"line\":232,\"text\":\"\\t\\t$optOuts = $this->getOptOutActions();\"},{\"line\":233,\"text\":\"\\t\\tif (!$optOuts)\"},{\"line\":234,\"text\":\"\\t\\t{\"},{\"line\":235,\"text\":\"\\t\\t\\treturn [];\"}],\"line\":230,\"text\":\"\\tpublic function getOptOutsMap()\"},{\"context\":[{\"line\":230,\"text\":\"\\tpublic function getOptOutsMap()\"},{\"line\":231,\"text\":\"\\t{\"},{\"line\":232,\"text\":\"\\t\\t$optOuts = $this->getOptOutActions();\"},{\"line\":233,\"text\":\"\\t\\tif (!$optOuts)\"},{\"line\":234,\"text\":\"\\t\\t{\"},{\"line\":235,\"text\":\"\\t\\t\\treturn [];\"},{\"line\":236,\"text\":\"\\t\\t}\"},{\"line\":237,\"text\":\"\"}],\"line\":232,\"text\":\"\\t\\t$optOuts = $this->getOptOutActions();\"}],\"path\":\"/var/www/forums/newfi/public/src/XF/Alert/AbstractHandler.php\",\"present\":true,\"sha256\":\"1d48488be1e561809a8d53ea9f43a3de2f04e70c5cc7c7e9a334fe12abcd2992\"},\"alert_handler_scan\":[\"src/XF/Alert/ConversationMessageHandler.php\",\"src/XF/Alert/PostHandler.php\",\"src/XF/Alert/ProfilePostCommentHandler.php\",\"src/XF/Alert/ProfilePostHandler.php\",\"src/XF/Alert/ThreadHandler.php\",\"src/XF/Alert/UserHandler.php\"],\"alert_post_handler\":{\"bytes\":null,\"matches\":[],\"path\":\"/var/www/forums/newfi/public/src/XF/Alert/Post.php\",\"present\":false,\"sha256\":null},\"push_subscription_entity\":{\"bytes\":null,\"matches\":[],\"path\":\"/var/www/forums/newfi/public/src/XF/Entity/UserPushSubscription.php\",\"present\":false,\"sha256\":null},\"repository_name_scan\":[\"src/XF/Repository/UserAlertRepository.php\",\"src/XF/Repository/UserPushRepository.php\"],\"service_worker\":{\"bytes\":6000,\"matches\":[{\"context\":[{\"line\":38,\"text\":\"{\"},{\"line\":39,\"text\":\"\\tconst clientId = event.source.id\"},{\"line\":40,\"text\":\"\\tconst message = event.data\"},{\"line\":41,\"text\":\"\\tif (typeof message !== 'object' || message === null)\"},{\"line\":42,\"text\":\"\\t{\"},{\"line\":43,\"text\":\"\\t\\tconsole.error('Invalid message:', message)\"},{\"line\":44,\"text\":\"\\t\\treturn\"},{\"line\":45,\"text\":\"\\t}\"}],\"line\":40,\"text\":\"\\tconst message = event.data\"},{\"context\":[{\"line\":83,\"text\":\"})\"},{\"line\":84,\"text\":\"\"},{\"line\":85,\"text\":\"self.addEventListener('push', event =>\"},{\"line\":86,\"text\":\"{\"},{\"line\":87,\"text\":\"\\tif (!(self.Notification && self.Notification.permission === 'granted'))\"},{\"line\":88,\"text\":\"\\t{\"},{\"line\":89,\"text\":\"\\t\\treturn\"},{\"line\":90,\"text\":\"\\t}\"}],\"line\":85,\"text\":\"self.addEventListener('push', event =>\"},{\"context\":[{\"line\":94,\"text\":\"\\ttry\"},{\"line\":95,\"text\":\"\\t{\"},{\"line\":96,\"text\":\"\\t\\tdata = event.data.json()\"},{\"line\":97,\"text\":\"\\t}\"},{\"line\":98,\"text\":\"\\tcatch (e)\"},{\"line\":99,\"text\":\"\\t{\"},{\"line\":100,\"text\":\"\\t\\tconsole.warn('Received push notification but payload not in the expected format.', e)\"},{\"line\":101,\"text\":\"\\t\\tconsole.warn('Received data:', event.data.text())\"}],\"line\":96,\"text\":\"\\t\\tdata = event.data.json()\"},{\"context\":[{\"line\":98,\"text\":\"\\tcatch (e)\"},{\"line\":99,\"text\":\"\\t{\"},{\"line\":100,\"text\":\"\\t\\tconsole.warn('Received push notification but payload not in the expected format.', e)\"},{\"line\":101,\"text\":\"\\t\\tconsole.warn('Received data:', event.data.text())\"},{\"line\":102,\"text\":\"\\t\\treturn\"},{\"line\":103,\"text\":\"\\t}\"},{\"line\":104,\"text\":\"\"},{\"line\":105,\"text\":\"\\tif (!data || !data.title || !data.body)\"}],\"line\":100,\"text\":\"\\t\\tconsole.warn('Received push notification but payload not in the expected format.', e)\"},{\"context\":[{\"line\":99,\"text\":\"\\t{\"},{\"line\":100,\"text\":\"\\t\\tconsole.warn('Received push notification but payload not in the expected format.', e)\"},{\"line\":101,\"text\":\"\\t\\tconsole.warn('Received data:', event.data.text())\"},{\"line\":102,\"text\":\"\\t\\treturn\"},{\"line\":103,\"text\":\"\\t}\"},{\"line\":104,\"text\":\"\"},{\"line\":105,\"text\":\"\\tif (!data || !data.title || !data.body)\"},{\"line\":106,\"text\":\"\\t{\"}],\"line\":101,\"text\":\"\\t\\tconsole.warn('Received data:', event.data.text())\"},{\"context\":[{\"line\":105,\"text\":\"\\tif (!data || !data.title || !data.body)\"},{\"line\":106,\"text\":\"\\t{\"},{\"line\":107,\"text\":\"\\t\\tconsole.warn('Received push notification but no payload data or required fields missing.', data)\"},{\"line\":108,\"text\":\"\\t\\treturn\"},{\"line\":109,\"text\":\"\\t}\"},{\"line\":110,\"text\":\"\"},{\"line\":111,\"text\":\"\\tconst options = {\"},{\"line\":112,\"text\":\"\\t\\tbody: data.body,\"}],\"line\":107,\"text\":\"\\t\\tconsole.warn('Received push notification but no payload data or required fields missing.', data)\"},{\"context\":[{\"line\":123,\"text\":\"\\t}\"},{\"line\":124,\"text\":\"\"},{\"line\":125,\"text\":\"\\tconst notificationPromise = self.registration.showNotification(data.title, options)\"},{\"line\":126,\"text\":\"\"},{\"line\":127,\"text\":\"\\tif ('setAppBadge' in self.navigator && 'clearAppBadge' in self.navigator)\"},{\"line\":128,\"text\":\"\\t{\"},{\"line\":129,\"text\":\"\\t\\tlet newCount = parseInt(String(data.total_unread).replace(/[,. ]/g, ''))\"},{\"line\":130,\"text\":\"\"}],\"line\":125,\"text\":\"\\tconst notificationPromise = self.registration.showNotification(data.title, options)\"},{\"context\":[{\"line\":142,\"text\":\"})\"},{\"line\":143,\"text\":\"\"},{\"line\":144,\"text\":\"self.addEventListener('notificationclick', event =>\"},{\"line\":145,\"text\":\"{\"},{\"line\":146,\"text\":\"\\tconst notification = event.notification\"},{\"line\":147,\"text\":\"\\tnotification.close()\"},{\"line\":148,\"text\":\"\"},{\"line\":149,\"text\":\"\\tconst url = notification.data.url\"}],\"line\":144,\"text\":\"self.addEventListener('notificationclick', event =>\"},{\"context\":[{\"line\":286,\"text\":\"\\t\\t\\t\\tconst key = response.key || null\"},{\"line\":287,\"text\":\"\\t\\t\\t\\tconst files = response.files || []\"},{\"line\":288,\"text\":\"\\t\\t\\t\\tfiles.push(OFFLINE_ROUTE)\"},{\"line\":289,\"text\":\"\"},{\"line\":290,\"text\":\"\\t\\t\\t\\treturn cache.addAll(files)\"},{\"line\":291,\"text\":\"\\t\\t\\t\\t\\t.then(() => key)\"},{\"line\":292,\"text\":\"\\t\\t\\t}))\"},{\"line\":293,\"text\":\"\\t\\t.catch(error =>\"}],\"line\":288,\"text\":\"\\t\\t\\t\\tfiles.push(OFFLINE_ROUTE)\"}],\"path\":\"/var/www/forums/newfi/public/service_worker.js\",\"present\":true,\"sha256\":\"e422cd54e00c05c4e7a7a803894b95826f2ada4a2e3e5129eba742d95dcfa4f9\"},\"user_alert_entity\":{\"bytes\":6367,\"matches\":[{\"context\":[{\"line\":14,\"text\":\" * @property int $user_id\"},{\"line\":15,\"text\":\" * @property string $username\"},{\"line\":16,\"text\":\" * @property string $content_type\"},{\"line\":17,\"text\":\" * @property int $content_id\"},{\"line\":18,\"text\":\" * @property string $action\"},{\"line\":19,\"text\":\" * @property int $event_date\"},{\"line\":20,\"text\":\" * @property int $view_date\"},{\"line\":21,\"text\":\" * @property int $read_date\"}],\"line\":16,\"text\":\" * @property string $content_type\"},{\"context\":[{\"line\":16,\"text\":\" * @property string $content_type\"},{\"line\":17,\"text\":\" * @property int $content_id\"},{\"line\":18,\"text\":\" * @property string $action\"},{\"line\":19,\"text\":\" * @property int $event_date\"},{\"line\":20,\"text\":\" * @property int $view_date\"},{\"line\":21,\"text\":\" * @property int $read_date\"},{\"line\":22,\"text\":\" * @property bool $auto_read\"},{\"line\":23,\"text\":\" * @property array|null $extra_data\"}],\"line\":18,\"text\":\" * @property string $action\"},{\"context\":[{\"line\":21,\"text\":\" * @property int $read_date\"},{\"line\":22,\"text\":\" * @property bool $auto_read\"},{\"line\":23,\"text\":\" * @property array|null $extra_data\"},{\"line\":24,\"text\":\" * @property string $depends_on_addon_id\"},{\"line\":25,\"text\":\" *\"},{\"line\":26,\"text\":\" * GETTERS\"},{\"line\":27,\"text\":\" * @property-read Entity|null $Content\"},{\"line\":28,\"text\":\" *\"}],\"line\":23,\"text\":\" * @property array|null $extra_data\"},{\"context\":[{\"line\":34,\"text\":\"class UserAlert extends Entity implements ViewableInterface\"},{\"line\":35,\"text\":\"{\"},{\"line\":36,\"text\":\"\\tpublic function canView(&$error = null)\"},{\"line\":37,\"text\":\"\\t{\"},{\"line\":38,\"text\":\"\\t\\t$handler = $this->getHandler();\"},{\"line\":39,\"text\":\"\\t\\t$content = $this->Content;\"},{\"line\":40,\"text\":\"\"},{\"line\":41,\"text\":\"\\t\\tif ($handler && $content)\"}],\"line\":36,\"text\":\"\\tpublic function canView(&$error = null)\"},{\"context\":[{\"line\":49,\"text\":\"\\t}\"},{\"line\":50,\"text\":\"\"},{\"line\":51,\"text\":\"\\tpublic function getHandler()\"},{\"line\":52,\"text\":\"\\t{\"},{\"line\":53,\"text\":\"\\t\\treturn $this->getAlertRepo()->getAlertHandler($this->content_type);\"},{\"line\":54,\"text\":\"\\t}\"},{\"line\":55,\"text\":\"\"},{\"line\":56,\"text\":\"\\t/**\"}],\"line\":51,\"text\":\"\\tpublic function getHandler()\"},{\"context\":[{\"line\":51,\"text\":\"\\tpublic function getHandler()\"},{\"line\":52,\"text\":\"\\t{\"},{\"line\":53,\"text\":\"\\t\\treturn $this->getAlertRepo()->getAlertHandler($this->content_type);\"},{\"line\":54,\"text\":\"\\t}\"},{\"line\":55,\"text\":\"\"},{\"line\":56,\"text\":\"\\t/**\"},{\"line\":57,\"text\":\"\\t * @return Entity|null\"},{\"line\":58,\"text\":\"\\t */\"}],\"line\":53,\"text\":\"\\t\\treturn $this->getAlertRepo()->getAlertHandler($this->content_type);\"},{\"context\":[{\"line\":57,\"text\":\"\\t * @return Entity|null\"},{\"line\":58,\"text\":\"\\t */\"},{\"line\":59,\"text\":\"\\tpublic function getContent()\"},{\"line\":60,\"text\":\"\\t{\"},{\"line\":61,\"text\":\"\\t\\t$handler = $this->getHandler();\"},{\"line\":62,\"text\":\"\\t\\treturn $handler ? $handler->getContent($this->content_id) : null;\"},{\"line\":63,\"text\":\"\\t}\"},{\"line\":64,\"text\":\"\"}],\"line\":59,\"text\":\"\\tpublic function getContent()\"},{\"context\":[{\"line\":63,\"text\":\"\\t}\"},{\"line\":64,\"text\":\"\"},{\"line\":65,\"text\":\"\\tpublic function setContent(?Entity $content = null)\"},{\"line\":66,\"text\":\"\\t{\"},{\"line\":67,\"text\":\"\\t\\t$this->_getterCache['Content'] = $content;\"},{\"line\":68,\"text\":\"\\t}\"},{\"line\":69,\"text\":\"\"},{\"line\":70,\"text\":\"\\tpublic function render()\"}],\"line\":65,\"text\":\"\\tpublic function setContent(?Entity $content = null)\"},{\"context\":[{\"line\":68,\"text\":\"\\t}\"},{\"line\":69,\"text\":\"\"},{\"line\":70,\"text\":\"\\tpublic function render()\"},{\"line\":71,\"text\":\"\\t{\"},{\"line\":72,\"text\":\"\\t\\t$handler = $this->getHandler();\"},{\"line\":73,\"text\":\"\\t\\treturn $handler ? $handler->render($this) : '';\"},{\"line\":74,\"text\":\"\\t}\"},{\"line\":75,\"text\":\"\"}],\"line\":70,\"text\":\"\\tpublic function render()\"},{\"context\":[{\"line\":74,\"text\":\"\\t}\"},{\"line\":75,\"text\":\"\"},{\"line\":76,\"text\":\"\\tpublic function isAlertRenderable()\"},{\"line\":77,\"text\":\"\\t{\"},{\"line\":78,\"text\":\"\\t\\t$handler = $this->getHandler();\"},{\"line\":79,\"text\":\"\\t\\treturn $handler ? $handler->isAlertRenderable($this) : false;\"},{\"line\":80,\"text\":\"\\t}\"},{\"line\":81,\"text\":\"\"}],\"line\":76,\"text\":\"\\tpublic function isAlertRenderable()\"},{\"context\":[{\"line\":83,\"text\":\"\\t * @return bool\"},{\"line\":84,\"text\":\"\\t */\"},{\"line\":85,\"text\":\"\\tpublic function isUnviewed()\"},{\"line\":86,\"text\":\"\\t{\"},{\"line\":87,\"text\":\"\\t\\treturn !$this->view_date;\"},{\"line\":88,\"text\":\"\\t}\"},{\"line\":89,\"text\":\"\"},{\"line\":90,\"text\":\"\\t/**\"}],\"line\":85,\"text\":\"\\tpublic function isUnviewed()\"},{\"context\":[{\"line\":91,\"text\":\"\\t * @return bool\"},{\"line\":92,\"text\":\"\\t */\"},{\"line\":93,\"text\":\"\\tpublic function isUnread()\"},{\"line\":94,\"text\":\"\\t{\"},{\"line\":95,\"text\":\"\\t\\treturn !$this->read_date;\"},{\"line\":96,\"text\":\"\\t}\"},{\"line\":97,\"text\":\"\"},{\"line\":98,\"text\":\"\\t/**\"}],\"line\":93,\"text\":\"\\tpublic function isUnread()\"},{\"context\":[{\"line\":99,\"text\":\"\\t * @return bool\"},{\"line\":100,\"text\":\"\\t */\"},{\"line\":101,\"text\":\"\\tpublic function isUnreadInUi(): bool\"},{\"line\":102,\"text\":\"\\t{\"},{\"line\":103,\"text\":\"\\t\\tif ($this->getOption('force_unread_in_ui'))\"},{\"line\":104,\"text\":\"\\t\\t{\"},{\"line\":105,\"text\":\"\\t\\t\\treturn true;\"},{\"line\":106,\"text\":\"\\t\\t}\"}],\"line\":101,\"text\":\"\\tpublic function isUnreadInUi(): bool\"},{\"context\":[{\"line\":109,\"text\":\"\\t}\"},{\"line\":110,\"text\":\"\"},{\"line\":111,\"text\":\"\\tpublic function isRecentlyRead()\"},{\"line\":112,\"text\":\"\\t{\"},{\"line\":113,\"text\":\"\\t\\treturn ($this->read_date && $this->read_date >= \\\\XF::$time - 900);\"},{\"line\":114,\"text\":\"\\t}\"},{\"line\":115,\"text\":\"\"},{\"line\":116,\"text\":\"\\tprotected function _saveToSource()\"}],\"line\":111,\"text\":\"\\tpublic function isRecentlyRead()\"},{\"context\":[{\"line\":209,\"text\":\"\\t}\"},{\"line\":210,\"text\":\"\"},{\"line\":211,\"text\":\"\\tpublic static function getStructure(Structure $structure)\"},{\"line\":212,\"text\":\"\\t{\"},{\"line\":213,\"text\":\"\\t\\t$structure->table = 'xf_user_alert';\"},{\"line\":214,\"text\":\"\\t\\t$structure->shortName = 'XF:UserAlert';\"},{\"line\":215,\"text\":\"\\t\\t$structure->primaryKey = 'alert_id';\"},{\"line\":216,\"text\":\"\\t\\t$structure->columns = [\"}],\"line\":211,\"text\":\"\\tpublic static function getStructure(Structure $structure)\"},{\"context\":[{\"line\":219,\"text\":\"\\t\\t\\t'user_id' => ['type' => self::UINT, 'default' => 0, 'api' => true],\"},{\"line\":220,\"text\":\"\\t\\t\\t'username' => ['type' => self::STR, 'maxLength' => 50, 'default' => '', 'api' => true],\"},{\"line\":221,\"text\":\"\\t\\t\\t'content_type' => ['type' => self::STR, 'maxLength' => 25, 'required' => true, 'api' => true],\"},{\"line\":222,\"text\":\"\\t\\t\\t'content_id' => ['type' => self::UINT, 'required' => true, 'api' => true],\"},{\"line\":223,\"text\":\"\\t\\t\\t'action' => ['type' => self::STR, 'maxLength' => 30, 'required' => true, 'api' => true],\"},{\"line\":224,\"text\":\"\\t\\t\\t'event_date' => ['type' => self::UINT, 'default' => \\\\XF::$time, 'api' => true],\"},{\"line\":225,\"text\":\"\\t\\t\\t'view_date' => ['type' => self::UINT, 'default' => 0, 'api' => true],\"},{\"line\":226,\"text\":\"\\t\\t\\t'read_date' => ['type' => self::UINT, 'default' => 0, 'api' => true],\"}],\"line\":221,\"text\":\"\\t\\t\\t'content_type' => ['type' => self::STR, 'maxLength' => 25, 'required' => true, 'api' => true],\"},{\"context\":[{\"line\":221,\"text\":\"\\t\\t\\t'content_type' => ['type' => self::STR, 'maxLength' => 25, 'required' => true, 'api' => true],\"},{\"line\":222,\"text\":\"\\t\\t\\t'content_id' => ['type' => self::UINT, 'required' => true, 'api' => true],\"},{\"line\":223,\"text\":\"\\t\\t\\t'action' => ['type' => self::STR, 'maxLength' => 30, 'required' => true, 'api' => true],\"},{\"line\":224,\"text\":\"\\t\\t\\t'event_date' => ['type' => self::UINT, 'default' => \\\\XF::$time, 'api' => true],\"},{\"line\":225,\"text\":\"\\t\\t\\t'view_date' => ['type' => self::UINT, 'default' => 0, 'api' => true],\"},{\"line\":226,\"text\":\"\\t\\t\\t'read_date' => ['type' => self::UINT, 'default' => 0, 'api' => true],\"},{\"line\":227,\"text\":\"\\t\\t\\t'auto_read' => ['type' => self::BOOL, 'default' => true, 'api' => true],\"},{\"line\":228,\"text\":\"\\t\\t\\t'extra_data' => ['type' => self::JSON_ARRAY, 'default' => []],\"}],\"line\":223,\"text\":\"\\t\\t\\t'action' => ['type' => self::STR, 'maxLength' => 30, 'required' => true, 'api' => true],\"},{\"context\":[{\"line\":226,\"text\":\"\\t\\t\\t'read_date' => ['type' => self::UINT, 'default' => 0, 'api' => true],\"},{\"line\":227,\"text\":\"\\t\\t\\t'auto_read' => ['type' => self::BOOL, 'default' => true, 'api' => true],\"},{\"line\":228,\"text\":\"\\t\\t\\t'extra_data' => ['type' => self::JSON_ARRAY, 'default' => []],\"},{\"line\":229,\"text\":\"\\t\\t\\t'depends_on_addon_id' => ['type' => self::BINARY, 'maxLength' => 50, 'default' => ''],\"},{\"line\":230,\"text\":\"\\t\\t];\"},{\"line\":231,\"text\":\"\\t\\t$structure->getters = [\"},{\"line\":232,\"text\":\"\\t\\t\\t'Content' => true,\"},{\"line\":233,\"text\":\"\\t\\t];\"}],\"line\":228,\"text\":\"\\t\\t\\t'extra_data' => ['type' => self::JSON_ARRAY, 'default' => []],\"}],\"path\":\"/var/www/forums/newfi/public/src/XF/Entity/UserAlert.php\",\"present\":true,\"sha256\":\"a749d5470269ec4fa9cc9fe419b9e4446208d8914e905ce5d8442292494a5cd2\"},\"user_alert_repo\":{\"bytes\":null,\"matches\":[],\"path\":\"/var/www/forums/newfi/public/src/XF/Repository/UserAlert.php\",\"present\":false,\"sha256\":null},\"user_entity\":{\"bytes\":65143,\"matches\":[{\"context\":[{\"line\":1051,\"text\":\"\\t}\"},{\"line\":1052,\"text\":\"\"},{\"line\":1053,\"text\":\"\\tpublic function canUsePushNotifications()\"},{\"line\":1054,\"text\":\"\\t{\"},{\"line\":1055,\"text\":\"\\t\\tif (!\\\\XF::isPushUsable())\"},{\"line\":1056,\"text\":\"\\t\\t{\"},{\"line\":1057,\"text\":\"\\t\\t\\treturn false;\"},{\"line\":1058,\"text\":\"\\t\\t}\"}],\"line\":1053,\"text\":\"\\tpublic function canUsePushNotifications()\"},{\"context\":[{\"line\":1882,\"text\":\"\\t * @api-out bool $activity_visible\"},{\"line\":1883,\"text\":\"\\t * @api-out int $age The user's current age. Only included if available.\"},{\"line\":1884,\"text\":\"\\t * @api-out array $alert_optout\"},{\"line\":1885,\"text\":\"\\t * @api-out string $allow_post_profile\"},{\"line\":1886,\"text\":\"\\t * @api-out string $allow_receive_news_feed\"},{\"line\":1887,\"text\":\"\\t * @api-out string $allow_send_personal_conversation\"},{\"line\":1888,\"text\":\"\\t * @api-out string $allow_view_identities\"},{\"line\":1889,\"text\":\"\\t * @api-out string $allow_view_profile\"}],\"line\":1884,\"text\":\"\\t * @api-out array $alert_optout\"},{\"context\":[{\"line\":1917,\"text\":\"\\t * @api-out int $last_activity Unix timestamp of user's last activity, if available.\"},{\"line\":1918,\"text\":\"\\t * @api-out str $location\"},{\"line\":1919,\"text\":\"\\t * @api-out bool $push_on_conversation\"},{\"line\":1920,\"text\":\"\\t * @api-out array $push_optout\"},{\"line\":1921,\"text\":\"\\t * @api-out bool $receive_admin_email\"},{\"line\":1922,\"text\":\"\\t * @api-out array $secondary_group_ids\"},{\"line\":1923,\"text\":\"\\t * @api-out bool $show_dob_date\"},{\"line\":1924,\"text\":\"\\t * @api-out bool $show_dob_year\"}],\"line\":1919,\"text\":\"\\t * @api-out bool $push_on_conversation\"},{\"context\":[{\"line\":1918,\"text\":\"\\t * @api-out str $location\"},{\"line\":1919,\"text\":\"\\t * @api-out bool $push_on_conversation\"},{\"line\":1920,\"text\":\"\\t * @api-out array $push_optout\"},{\"line\":1921,\"text\":\"\\t * @api-out bool $receive_admin_email\"},{\"line\":1922,\"text\":\"\\t * @api-out array $secondary_group_ids\"},{\"line\":1923,\"text\":\"\\t * @api-out bool $show_dob_date\"},{\"line\":1924,\"text\":\"\\t * @api-out bool $show_dob_year\"},{\"line\":1925,\"text\":\"\\t * @api-out str $signature\"}],\"line\":1920,\"text\":\"\\t * @api-out array $push_optout\"},{\"context\":[{\"line\":2076,\"text\":\"\\t\\t\\t\\t\\t\\t'receive_admin_email' => $option->receive_admin_email,\"},{\"line\":2077,\"text\":\"\\t\\t\\t\\t\\t\\t'email_on_conversation' => $option->email_on_conversation,\"},{\"line\":2078,\"text\":\"\\t\\t\\t\\t\\t\\t'push_on_conversation' => $option->push_on_conversation,\"},{\"line\":2079,\"text\":\"\\t\\t\\t\\t\\t\\t'creation_watch_state' => $option->creation_watch_state,\"},{\"line\":2080,\"text\":\"\\t\\t\\t\\t\\t\\t'interaction_watch_state' => $option->interaction_watch_state,\"},{\"line\":2081,\"text\":\"\\t\\t\\t\\t\\t\\t'alert_optout' => $option->alert_optout,\"},{\"line\":2082,\"text\":\"\\t\\t\\t\\t\\t\\t'push_optout' => $option->push_optout,\"},{\"line\":2083,\"text\":\"\\t\\t\\t\\t\\t\\t'use_tfa' => $option->use_tfa,\"}],\"line\":2078,\"text\":\"\\t\\t\\t\\t\\t\\t'push_on_conversation' => $option->push_on_conversation,\"},{\"context\":[{\"line\":2079,\"text\":\"\\t\\t\\t\\t\\t\\t'creation_watch_state' => $option->creation_watch_state,\"},{\"line\":2080,\"text\":\"\\t\\t\\t\\t\\t\\t'interaction_watch_state' => $option->interaction_watch_state,\"},{\"line\":2081,\"text\":\"\\t\\t\\t\\t\\t\\t'alert_optout' => $option->alert_optout,\"},{\"line\":2082,\"text\":\"\\t\\t\\t\\t\\t\\t'push_optout' => $option->push_optout,\"},{\"line\":2083,\"text\":\"\\t\\t\\t\\t\\t\\t'use_tfa' => $option->use_tfa,\"},{\"line\":2084,\"text\":\"\\t\\t\\t\\t\\t]);\"},{\"line\":2085,\"text\":\"\\t\\t\\t\\t\\t$result->includeExtra([\"},{\"line\":2086,\"text\":\"\\t\\t\\t\\t\\t\\t'allow_view_profile' => $privacy->allow_view_profile,\"}],\"line\":2081,\"text\":\"\\t\\t\\t\\t\\t\\t'alert_optout' => $option->alert_optout,\"},{\"context\":[{\"line\":2080,\"text\":\"\\t\\t\\t\\t\\t\\t'interaction_watch_state' => $option->interaction_watch_state,\"},{\"line\":2081,\"text\":\"\\t\\t\\t\\t\\t\\t'alert_optout' => $option->alert_optout,\"},{\"line\":2082,\"text\":\"\\t\\t\\t\\t\\t\\t'push_optout' => $option->push_optout,\"},{\"line\":2083,\"text\":\"\\t\\t\\t\\t\\t\\t'use_tfa' => $option->use_tfa,\"},{\"line\":2084,\"text\":\"\\t\\t\\t\\t\\t]);\"},{\"line\":2085,\"text\":\"\\t\\t\\t\\t\\t$result->includeExtra([\"},{\"line\":2086,\"text\":\"\\t\\t\\t\\t\\t\\t'allow_view_profile' => $privacy->allow_view_profile,\"},{\"line\":2087,\"text\":\"\\t\\t\\t\\t\\t\\t'allow_post_profile' => $privacy->allow_post_profile,\"}],\"line\":2082,\"text\":\"\\t\\t\\t\\t\\t\\t'push_optout' => $option->push_optout,\"},{\"context\":[{\"line\":2125,\"text\":\"\\t\\t\\t\\t'receive_admin_email' => $option->receive_admin_email,\"},{\"line\":2126,\"text\":\"\\t\\t\\t\\t'email_on_conversation' => $option->email_on_conversation,\"},{\"line\":2127,\"text\":\"\\t\\t\\t\\t'push_on_conversation' => $option->push_on_conversation,\"},{\"line\":2128,\"text\":\"\\t\\t\\t\\t'creation_watch_state' => $option->creation_watch_state,\"},{\"line\":2129,\"text\":\"\\t\\t\\t\\t'interaction_watch_state' => $option->interaction_watch_state,\"},{\"line\":2130,\"text\":\"\\t\\t\\t\\t'alert_optout' => $option->alert_optout,\"},{\"line\":2131,\"text\":\"\\t\\t\\t\\t'push_optout' => $option->push_optout,\"},{\"line\":2132,\"text\":\"\\t\\t\\t\\t'use_tfa' => $option->use_tfa,\"}],\"line\":2127,\"text\":\"\\t\\t\\t\\t'push_on_conversation' => $option->push_on_conversation,\"},{\"context\":[{\"line\":2128,\"text\":\"\\t\\t\\t\\t'creation_watch_state' => $option->creation_watch_state,\"},{\"line\":2129,\"text\":\"\\t\\t\\t\\t'interaction_watch_state' => $option->interaction_watch_state,\"},{\"line\":2130,\"text\":\"\\t\\t\\t\\t'alert_optout' => $option->alert_optout,\"},{\"line\":2131,\"text\":\"\\t\\t\\t\\t'push_optout' => $option->push_optout,\"},{\"line\":2132,\"text\":\"\\t\\t\\t\\t'use_tfa' => $option->use_tfa,\"},{\"line\":2133,\"text\":\"\\t\\t\\t]);\"},{\"line\":2134,\"text\":\"\"},{\"line\":2135,\"text\":\"\\t\\t\\t$fieldValues = $profile->custom_fields->getFieldValues();\"}],\"line\":2130,\"text\":\"\\t\\t\\t\\t'alert_optout' => $option->alert_optout,\"},{\"context\":[{\"line\":2129,\"text\":\"\\t\\t\\t\\t'interaction_watch_state' => $option->interaction_watch_state,\"},{\"line\":2130,\"text\":\"\\t\\t\\t\\t'alert_optout' => $option->alert_optout,\"},{\"line\":2131,\"text\":\"\\t\\t\\t\\t'push_optout' => $option->push_optout,\"},{\"line\":2132,\"text\":\"\\t\\t\\t\\t'use_tfa' => $option->use_tfa,\"},{\"line\":2133,\"text\":\"\\t\\t\\t]);\"},{\"line\":2134,\"text\":\"\"},{\"line\":2135,\"text\":\"\\t\\t\\t$fieldValues = $profile->custom_fields->getFieldValues();\"},{\"line\":2136,\"text\":\"\\t\\t\\t$result->custom_fields = (object) $fieldValues;\"}],\"line\":2131,\"text\":\"\\t\\t\\t\\t'push_optout' => $option->push_optout,\"}],\"path\":\"/var/www/forums/newfi/public/src/XF/Entity/User.php\",\"present\":true,\"sha256\":\"1ea738d44993ad4cb7f5db12e8b2ee06c37bd2b2c7ae1714b068fb64bbb82758\"}},\"role\":\"staging\",\"status\":\"OK\"}\nNEWFI171_DECISION=PASS_NOTIFY213_EXACT_FRAMEWORK_SOURCE_CONTRACT\nNEWFI171_NEXT_GATE=BUILD_NOTIFY213_STAGING_CANDIDATE_FROM_EXACT_CONTRACT\nHOMELAB_RESULT_CONTRACT={\"changes_made\":false,\"command_id\":\"NEWFI-260919-NEWFDOM-NOTIFY213-CONTRACT171\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"OK\",\"version\":1}\n"
+ "output": "CORE_TEMPLATES_PRESTATE_OK=true\nCORE_TEMPLATES_CHANGE_TRANSPORT_RC=0\nCORE_TEMPLATES_CHANGE_EXITCODE=0\nCORE_TEMPLATES_CHANGE_OUTPUT_BEGIN\nSTAGE=TEMPLATE_1\nTHREADPROC_RC=0\nTHREADPROC_FORUM_SHA256=5c73f9d4f59bf3a29421b1d4fce6ae91c9cd8b9ab76f21b8df1a11f1f904968e\nTHREADPROC_TITLE_SHA256=cb584462c399e4a78bdaad641610e48e2725c81a3afce87264267ddc465da76c\nTHREADPROC_THREAD_ID=1\nTHREADPROC_POST_ID=1\nTHREADPROC_AUTHOR_ID=1\nTHREADPROC_FORUM_ID=9\nTHREADPROC_MESSAGE_SHA256=191b9f294672f2cab32e8364c308e80c7f8aa46a648e37773b5cd5831f63e792\nSTAGE=TEMPLATE_2\nTHREADPROC_RC=0\nTHREADPROC_FORUM_SHA256=6bd71f919c80e0378aa0dda1d50f26cf3c7855b01dc2067f88400da806081ff3\nTHREADPROC_TITLE_SHA256=5bd43994e1de2fd19c29ce1ab85c56a8a9d98856f8ac5ffb4d932009d411b7b1\nTHREADPROC_THREAD_ID=2\nTHREADPROC_POST_ID=2\nTHREADPROC_AUTHOR_ID=1\nTHREADPROC_FORUM_ID=11\nTHREADPROC_MESSAGE_SHA256=599e966fbb46d738717961267e4e3c2f66c6395f0d394013cc48ca2687e665ec\nSTAGE=TEMPLATE_3\nTHREADPROC_RC=0\nTHREADPROC_FORUM_SHA256=9b27b27566a22e98a5e45f3f2491da8088b341875293f7614d8caa2d263679b4\nTHREADPROC_TITLE_SHA256=23b77f6e50178280abda24d9b47afd6bb597a1a99774ec76202d37adb2f6e75c\nTHREADPROC_THREAD_ID=3\nTHREADPROC_POST_ID=3\nTHREADPROC_AUTHOR_ID=1\nTHREADPROC_FORUM_ID=12\nTHREADPROC_MESSAGE_SHA256=6bdc469569b82c59cd79523d499b37edfc14d34353fa6302ccb3c6bd46c2b95b\nSTAGE=TEMPLATE_4\nTHREADPROC_RC=0\nTHREADPROC_FORUM_SHA256=37e868790a460ad844632d79141f073c5a1b83ee78ef0a0e764250fdec279304\nTHREADPROC_TITLE_SHA256=5db8c9e7cad1f69c3993052977458e76f47d09e880ae39aa0745a7bd5b6ef25f\nTHREADPROC_THREAD_ID=4\nTHREADPROC_POST_ID=4\nTHREADPROC_AUTHOR_ID=1\nTHREADPROC_FORUM_ID=13\nTHREADPROC_MESSAGE_SHA256=666a4f3ad6d3f97b4e61ea0ccdcc9a834c5f924ffe1fdf02c9b01d49e6e998ff\nSTAGE=TEMPLATE_5\nTHREADPROC_RC=0\nTHREADPROC_FORUM_SHA256=d90121745924a07f5d0c48f07698b2e9d2100b54324f69edfa7fc67485983762\nTHREADPROC_TITLE_SHA256=79dcefa41f03ba8e67efae62e181056d32195a78899931ef2ace639e2f6f0fba\nTHREADPROC_THREAD_ID=5\nTHREADPROC_POST_ID=5\nTHREADPROC_AUTHOR_ID=1\nTHREADPROC_FORUM_ID=14\nTHREADPROC_MESSAGE_SHA256=6671884720fb17171cc150c6211d5580e8a62843578e465418ce4e516d0acb83\nSTAGE=TEMPLATE_6\nTHREADPROC_RC=0\nTHREADPROC_FORUM_SHA256=e8ff716848b6ee42579bbd6fb1890a66f24d9c41b3a8eaa433b420a992d75a8a\nTHREADPROC_TITLE_SHA256=b19f68c358c75a7ec65216a00724968c9b241611cf6ed72b25d9c7f1c2ba83e7\nTHREADPROC_THREAD_ID=6\nTHREADPROC_POST_ID=6\nTHREADPROC_AUTHOR_ID=1\nTHREADPROC_FORUM_ID=15\nTHREADPROC_MESSAGE_SHA256=a6d2bfe6ff00410020265298455b045801bf6a4413ffc3bc6da05a3cdfe53d00\nSTAGE=TEMPLATE_7\nTHREADPROC_RC=0\nTHREADPROC_FORUM_SHA256=b1d06e7a6bcca44649a56c1d1d8b012a577a5404802d7e1821a2df7d4c597526\nTHREADPROC_TITLE_SHA256=324254e802da9cfefc93c59d2c001227d9f1e1228a5b4ef440611e42af828d8a\nTHREADPROC_THREAD_ID=7\nTHREADPROC_POST_ID=7\nTHREADPROC_AUTHOR_ID=1\nTHREADPROC_FORUM_ID=10\nTHREADPROC_MESSAGE_SHA256=e68b51653a45f342b42d20a6bbd5690eff408984a4ece5780bd8a042dfad5252\nSTAGE=TEMPLATE_8\nTHREADPROC_RC=0\nTHREADPROC_FORUM_SHA256=0be540e44c858e8d2ec7f18f1d01a991031319a201e785e24893f9b984f008f9\nTHREADPROC_TITLE_SHA256=83c458eac55f47cd6fc0746e6847f39af0049b32926df581e8fa1fb027532a0d\nTHREADPROC_THREAD_ID=8\nTHREADPROC_POST_ID=8\nTHREADPROC_AUTHOR_ID=1\nTHREADPROC_FORUM_ID=17\nTHREADPROC_MESSAGE_SHA256=d0007661a8f64295244d164b63dd006af97d54149c72f3d9e1414b87c519b788\nSTAGE=TEMPLATE_9\nTHREADPROC_RC=0\nTHREADPROC_FORUM_SHA256=b59e23fe3f6cffd0eebd12a55c547129bc4ff0f781158b8d847dbe43daadd23b\nTHREADPROC_TITLE_SHA256=1219b7bc110b40b848171bbd7813a1025275f733f79913732d95395e59d122bc\nTHREADPROC_THREAD_ID=9\nTHREADPROC_POST_ID=9\nTHREADPROC_AUTHOR_ID=1\nTHREADPROC_FORUM_ID=18\nTHREADPROC_MESSAGE_SHA256=f68c4920277e57f62b2d9ef2995690477603c2b73c39e4a2e2be368fed8a62c8\nTEMPLATES_CREATED=9\nAUTHOR_CONTEXT=XF_asVisitor_Admin\nCORE_TEMPLATES_CHANGE_OUTPUT_END\nPOSTCHECK_OUTPUT_BEGIN\nXF_SHA=d0c10d91d743e0a541d9a1b201080491dae0a8b1757866f113ef707b83403219\nNODE_COUNT=18\nFORUM_COUNT=12\nTHREAD_COUNT=9\nPOST_COUNT=9\nZERO_REPLY_THREAD_COUNT=9\nPHP_VERIFY_RC=0\nVERIFY_THREAD_ENTITIES=9\nVERIFY_FORUM_ASSOC=9\nVERIFY_AUTHOR_MATCH=9\nVERIFY_CONTENT_HASH=9\nREG_ENABLED=0\nTITLE=PVEPro\nDESC_SHA=3748f06ab8cd9f32c7d3541e7193c478a47bbe69e383dd842ea6a3c9a65c0f57\nNODELIST_COUNT=18\nTABLES=224\nADMINS=1\nSVC_QEMU_GUEST_AGENT=active\nSVC_NGINX=active\nSVC_PHP8_3_FPM=active\nSVC_MARIADB=active\nMARIADB_SOCKET_ENABLED=masked\nPOSTCHECK_OUTPUT_END\nCORE_TEMPLATES_POSTCHECK_OK=true\nTASK_COMPLETE=true\nTASK_RESULT=PASS_PVEPRO_CORE_TEMPLATES_FINAL\nTEMPLATE_THREAD_COUNT=9\nPUBLIC_CUTOVER=false\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"SUPPORT-260920-PVEPRO-CORE-TEMPLATES-FINAL-701R1\",\"status\":\"OK\",\"changes_made\":true,\"rollback_started\":false,\"rollback_restored\":null}\n"
}
diff --git a/runtime/latest.txt b/runtime/latest.txt
index 2940cfec..f566f8f3 100644
--- a/runtime/latest.txt
+++ b/runtime/latest.txt
@@ -1,40 +1,150 @@
CHAT_OUTPUT_BEGIN
-COMMAND_ID=NEWFI-260919-NEWFDOM-NOTIFY213-CONTRACT171
+COMMAND_ID=SUPPORT-260920-PVEPRO-CORE-TEMPLATES-FINAL-701R1
STATUS=OK
RC=0
HOST=pve01
-MODE=read-only
-COMPONENT=newfi-newfdom-notify213-xenforo-alert-push-contract-readonly
+MODE=change
+COMPONENT=pvepro-core-templates-final
REFERENCE_REGISTER_CHECK=OK
REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
-COMMAND_SHA256=c263a21ba533a05176ca6a52559628095df424d4edac189fe188176f8333894e
+COMMAND_SHA256=ca0a003ae7f0b273655af19a97e0c2801286b246d5d0b445d5c32fd4251db97b
DUPLICATE_FAILED_COMMAND_BLOCKED=false
EXECUTION_STARTED=true
-CHANGE_DECLARED=false
+CHANGE_DECLARED=true
RESULT_CONTRACT_VALID=true
-RESULT_CONTRACT_STATUS=NOT_APPLICABLE
+RESULT_CONTRACT_STATUS=OK
RESULT_CONTRACT_ERROR=NONE
COMMAND_RC=0
-CHANGES_MADE=false
+CHANGES_MADE=true
ROLLBACK_STARTED=false
ROLLBACK_RESTORED=null
-MUTATION_OUTCOME=NO_MUTATION
+MUTATION_OUTCOME=MUTATED
SANITIZED=yes
SECRETS_INCLUDED=no
PRIVATE_ADDRESSES_INCLUDED=no
-RAW_EVIDENCE_SHA256=788c33605da51d3a968984b95b4cc5a8f394a11e22d6105b9cfa73dcfd7aebea
-SANITIZED_OUTPUT_SHA256=788c33605da51d3a968984b95b4cc5a8f394a11e22d6105b9cfa73dcfd7aebea
+RAW_EVIDENCE_SHA256=d50eb57618e68599dd52d4e65bd81919fdd4922fab2beea0c04811eafafad6fe
+SANITIZED_OUTPUT_SHA256=d50eb57618e68599dd52d4e65bd81919fdd4922fab2beea0c04811eafafad6fe
OUTPUT_BEGIN
-NEWFI171_BEGIN=true
-COMMAND_ID=NEWFI-260919-NEWFDOM-NOTIFY213-CONTRACT171
-NEWFI171_GIT={"branch":"implementation/newfi-closed-mvp-20260906","clean":true,"head":"92de706841be89597b4b6d9738c64780e9f940e5","remote_head":"92de706841be89597b4b6d9738c64780e9f940e5"}
-NEWFI171_GIT_SOURCE={"src/addons/Newfi/AutoContent/Entity/EditorialItem.php":{"bytes":1677,"sha256":"57ef31a09736773b1ce05394f741145b0290b1e58be5e25e2605802e4fa140ab","text":"table='xf_newfi_autocontent_item';\n $s->shortName='Newfi\\AutoContent:EditorialItem';\n $s->primaryKey='item_id';\n $s->columns=[\n 'item_id'=>['type'=>self::UINT,'autoIncrement'=>true,'nullable'=>true],\n 'source_id'=>['type'=>self::UINT,'required'=>true],\n 'source_identity'=>['type'=>self::BINARY,'maxLength'=>190,'required'=>true],\n 'fingerprint'=>['type'=>self::BINARY,'maxLength'=>64,'required'=>true],\n 'event_id'=>['type'=>self::UINT,'default'=>0],\n 'editorial_state'=>['type'=>self::BINARY,'maxLength'=>25,'default'=>'draft','allowedValues'=>['draft','review','published','rejected']],\n 'title'=>['type'=>self::STR,'maxLength'=>100,'required'=>true],\n 'starts_at'=>['type'=>self::UINT,'required'=>true],\n 'ends_at'=>['type'=>self::UINT,'default'=>0],\n 'region'=>['type'=>self::STR,'maxLength'=>100,'default'=>''],\n 'location'=>['type'=>self::STR,'maxLength'=>255,'default'=>''],\n 'description'=>['type'=>self::STR,'default'=>''],\n 'source_url'=>['type'=>self::STR,'maxLength'=>500,'required'=>true],\n 'cancelled'=>['type'=>self::BOOL,'default'=>false],\n 'first_seen_at'=>['type'=>self::UINT,'required'=>true],\n 'last_seen_at'=>['type'=>self::UINT,'required'=>true],\n 'updated_at'=>['type'=>self::UINT,'required'=>true],\n ];\n return $s;\n }\n}\n"},"src/addons/Newfi/AutoContent/Service/Monitor.php":{"bytes":8213,"sha256":"af8a30b1bb0dd53bd9e8283fb515ed2b336288354227080e4bc504b4c0751754","text":"app->service(Collector::class)->isEnabled();}\n private function lock(int $id): bool{return (int)$this->db()->fetchOne('SELECT GET_LOCK(?, 0)',Policy::monitorJobKey($id))===1;}\n private function unlock(int $id): void{$this->db()->fetchOne('SELECT RELEASE_LOCK(?)',Policy::monitorJobKey($id));}\n public function scheduleDue(): int\n {\n if(!$this->enabled())return 0;$queued=0;$now=time();\n foreach($this->finder(MonitorState::class)->order('source_id')->fetch() as $m){$id=(int)$m->source_id;if((int)$m->next_attempt_at>$now)continue;$state=$this->em()->find(SourceState::class,$id);$source=$this->em()->find(SourceRegistry::class,$id);if(!$state||!$source||!$source->enabled)continue;try{$policy=Policy::source($source->toArray());}catch(\\InvalidArgumentException $e){continue;}if((string)$state->snapshot_url!==$policy['url']||(string)$state->body_sha256===''||(string)$m->last_snapshot_sha256===(string)$state->body_sha256)continue;\n $jobs=$this->app->jobManager();$key=Policy::monitorJobKey($id);if($jobs->getUniqueJob($key))continue;if($jobs->enqueueUnique($key,MonitorSource::class,['source_id'=>$id],false)!==null)++$queued;\n }return $queued;\n }\n public function runSource(int $id,float $budgetSeconds): string\n {\n $start=microtime(true);if(!$this->enabled())return 'disabled';if($budgetSeconds<3)return 'budget';if(!$this->lock($id))return 'busy';\n try{$source=$this->em()->find(SourceRegistry::class,$id);$state=$this->em()->find(SourceState::class,$id);$monitor=$this->em()->find(MonitorState::class,$id);if(!$source||!$state||!$monitor)return 'disabled';$policy=Policy::source($source->toArray());if((string)$state->snapshot_url!==$policy['url']||(string)$state->body_sha256==='')return 'no_snapshot';if((string)$monitor->last_snapshot_sha256===(string)$state->body_sha256)return 'current';if($budgetSeconds-(microtime(true)-$start)<2)return 'budget';\n try{$parsed=$this->parse((string)$source->parser_strategy,(string)$state->snapshot,$id);$records=MonitorPolicy::window($parsed['events']??[],time());$this->apply($source,$state,$monitor,$records,count($parsed['discoveries']??[]));return 'ok';}\n catch(\\Throwable $e){$this->failed($monitor,$this->code($e),time());return 'retry';}\n }finally{$this->unlock($id);}\n }\n private function parse(string $strategy,string $body,int $id): array\n {\n if($strategy==='html_fci_show_schedule_v1')return (new FciShowSchedule())->parse($body,$id);\n if($strategy==='html_rkf_exhibition_activity_v1')return (new RkfExhibitionActivity())->parse($body);\n throw new \\RuntimeException('MONITOR_PARSER');\n }\n private function apply(SourceRegistry $source,SourceState $state,MonitorState $monitor,array $records,int $discoveries): void\n {\n $now=time();$db=$this->db();$oldFailures=(int)$monitor->failures;$db->beginTransaction();\n try{$existing=[];foreach($this->finder(Observation::class)->where('source_id',(int)$source->source_id)->fetch() as $o)$existing[]=$this->obsArray($o);\n if(!$monitor->baseline_ready){foreach($records as $r)$this->createObservation((int)$source->source_id,$r,$now,(string)$state->body_sha256);$counts=['new'=>0,'changed'=>0,'cancelled'=>0];}\n else{$plan=MonitorPolicy::plan($existing,$records,$now);$ingestor=$this->app->service(Ingestor::class);foreach($plan['unchanged'] as $r)$this->upsertObservation((int)$source->source_id,$r,$now,(string)$state->body_sha256);foreach($plan['changed'] as $r){$ingestor->ingest($r,$now);$this->upsertObservation((int)$source->source_id,$r,$now,(string)$state->body_sha256);}foreach($plan['new'] as $r){$ingestor->ingest($r,$now);$this->createObservation((int)$source->source_id,$r,$now,(string)$state->body_sha256);}foreach($plan['missing'] as $r)$this->upsertObservation((int)$source->source_id,$r,$now,(string)$state->body_sha256,false);foreach($plan['cancelled'] as $r){$ingestor->ingest($r,$now);$this->upsertObservation((int)$source->source_id,$r,$now,(string)$state->body_sha256,false);}$counts=['new'=>count($plan['new']),'changed'=>count($plan['changed']),'cancelled'=>count($plan['cancelled'])];}\n $history=is_array($monitor->history)?$monitor->history:[];$history[]=['checked_at'=>$now,'snapshot_sha256'=>(string)$state->body_sha256,'observed'=>count($records),'discoveries'=>$discoveries,'new'=>$counts['new'],'changed'=>$counts['changed'],'cancelled'=>$counts['cancelled'],'status'=>'OK'];$monitor->bulkSet(['baseline_ready'=>true,'last_snapshot_sha256'=>(string)$state->body_sha256,'last_run_at'=>$now,'last_success_at'=>$now,'next_attempt_at'=>0,'failures'=>0,'last_error'=>'','observed_count'=>count($records),'new_count'=>$counts['new'],'changed_count'=>$counts['changed'],'cancelled_count'=>$counts['cancelled'],'history'=>array_slice($history,-32)]);$monitor->save();$db->commit();\n }catch(\\Throwable $e){$db->rollback();throw $e;}\n }\n private function failed(MonitorState $m,string $code,int $now): void\n {\n $fail=min(1000000,(int)$m->failures+1);$history=is_array($m->history)?$m->history:[];$history[]=['checked_at'=>$now,'snapshot_sha256'=>(string)$m->last_snapshot_sha256,'observed'=>0,'discoveries'=>0,'new'=>0,'changed'=>0,'cancelled'=>0,'status'=>$code];$alert=in_array($fail,[1,3,6],true);$m->bulkSet(['last_run_at'=>$now,'last_failure_at'=>$now,'next_attempt_at'=>$now+MonitorPolicy::retryDelay($fail),'failures'=>$fail,'last_error'=>$code,'last_alert_at'=>$alert?$now:(int)$m->last_alert_at,'history'=>array_slice($history,-32)]);$m->save();if($alert)$this->alert((int)$m->source_id,$code,$fail);\n }\n private function alert(int $id,string $code,int $count): void{\\XF::logError('[Newfi EventBot] source='.$id.' code='.$code.' count='.$count);}\n private function code(\\Throwable $e): string{$c=$e->getMessage();return in_array($c,['DOM_EXTENSION','FCI_HTML','RKF_HTML','MONITOR_RECORD_LIMIT','MONITOR_RECORD','MONITOR_PARSER','INGEST_REQUIRED','INGEST_ENDS_BEFORE_START','INGEST_LENGTH','INGEST_SOURCE_URL'],true)?$c:'MONITOR_ERROR';}\n private function createObservation(int $sourceId,array $r,int $now,string $sha): Observation{$o=$this->em()->create(Observation::class);$o->bulkSet($this->obsData($sourceId,$r)+['first_seen_at'=>$now,'last_seen_at'=>$now,'evidence_sha256'=>$sha]);$o->save();return $o;}\n private function upsertObservation(int $sourceId,array $r,int $now,string $sha,bool $seen=true): Observation{$o=$this->finder(Observation::class)->where('source_id',$sourceId)->where('source_identity',$r['source_identity'])->fetchOne();if(!$o)return $this->createObservation($sourceId,$r,$now,$sha);$o->bulkSet($this->obsData($sourceId,$r));if($seen)$o->last_seen_at=$now;$o->evidence_sha256=$sha;$o->save();return $o;}\n private function obsData(int $sourceId,array $r): array{return ['source_id'=>$sourceId,'source_identity'=>$r['source_identity'],'match_key'=>$r['match_key'],'fingerprint'=>$r['fingerprint'],'title'=>$r['title'],'starts_at'=>$r['starts_at'],'ends_at'=>$r['ends_at']??0,'region'=>$r['region'],'location'=>$r['location'],'source_url'=>$r['source_url'],'cancelled'=>!empty($r['cancelled']),'missing_count'=>(int)($r['missing_count']??0)];}\n private function obsArray(Observation $o): array{return ['source_id'=>(int)$o->source_id,'source_identity'=>(string)$o->source_identity,'match_key'=>(string)$o->match_key,'fingerprint'=>(string)$o->fingerprint,'title'=>(string)$o->title,'starts_at'=>(int)$o->starts_at,'ends_at'=>(int)$o->ends_at,'region'=>(string)$o->region,'location'=>(string)$o->location,'source_url'=>(string)$o->source_url,'cancelled'=>(bool)$o->cancelled,'missing_count'=>(int)$o->missing_count];}\n}\n"},"src/addons/Newfi/Events/Entity/Event.php":{"bytes":1449,"sha256":"8c2c6caf42390df552e64c7d95d225c394a27005ebcaaf7f8ebe2cb7f2e7bdf0","text":"table = 'xf_newfi_event';\n $structure->shortName = 'Newfi\\\\Events:Event';\n $structure->primaryKey = 'event_id';\n $structure->columns = [\n 'event_id' => ['type' => self::UINT, 'autoIncrement' => true, 'nullable' => true],\n 'title' => ['type' => self::STR, 'maxLength' => 100, 'required' => true],\n 'starts_at' => ['type' => self::UINT, 'required' => true],\n 'ends_at' => ['type' => self::UINT, 'default' => 0],\n 'region' => ['type' => self::STR, 'maxLength' => 100, 'default' => ''],\n 'location' => ['type' => self::STR, 'maxLength' => 255, 'default' => ''],\n 'description' => ['type' => self::STR, 'maxLength' => 10000, 'default' => ''],\n 'state' => [\n 'type' => self::STR,\n 'maxLength' => 25,\n 'default' => 'draft',\n 'allowedValues' => ['draft', 'published', 'cancelled']\n ],\n 'fingerprint' => ['type' => self::STR, 'maxLength' => 64, 'required' => true],\n 'created_at' => ['type' => self::UINT, 'required' => true],\n 'updated_at' => ['type' => self::UINT, 'required' => true]\n ];\n return $structure;\n }\n}\n"},"src/addons/Newfi/Events/Entity/EventChange.php":{"bytes":777,"sha256":"c9743f22eedbd43a2a6231b34301d43d42fefbca9ce4898ee0d2a59eb455e602","text":"table = 'xf_newfi_event_change';\n $structure->shortName = 'Newfi\\Events:EventChange';\n $structure->primaryKey = 'event_change_id';\n $structure->columns = [\n 'event_change_id' => ['type' => self::UINT, 'autoIncrement' => true, 'nullable' => true],\n 'event_id' => ['type' => self::UINT, 'required' => true],\n 'changed_at' => ['type' => self::UINT, 'required' => true],\n 'change_note' => ['type' => self::STR, 'maxLength' => 1000, 'required' => true]\n ];\n return $structure;\n }\n}\n"},"src/addons/Newfi/Events/Setup.php":{"bytes":5005,"sha256":"d644a93ec86ff75d9325564c9f0d9ecd36a8059cab4437df62e8be0c561efef0","text":"schemaManager();\n\n $sm->createTable('xf_newfi_event', function (Create $table)\n {\n $table->addColumn('event_id', 'int')->autoIncrement();\n $table->addColumn('title', 'varchar', 100);\n $table->addColumn('starts_at', 'int');\n $table->addColumn('ends_at', 'int')->setDefault(0);\n $table->addColumn('region', 'varchar', 100)->setDefault('');\n $table->addColumn('location', 'varchar', 255)->setDefault('');\n $table->addColumn('description', 'text');\n $table->addColumn('state', 'varbinary', 25)->setDefault('draft');\n $table->addColumn('fingerprint', 'varbinary', 64);\n $table->addColumn('created_at', 'int');\n $table->addColumn('updated_at', 'int');\n $table->addPrimaryKey('event_id');\n $table->addKey('starts_at');\n $table->addKey('state');\n $table->addKey('fingerprint');\n $table->addKey('region');\n });\n\n $sm->createTable('xf_newfi_event_source', function (Create $table)\n {\n $table->addColumn('event_source_id', 'int')->autoIncrement();\n $table->addColumn('event_id', 'int');\n $table->addColumn('source_url', 'varchar', 500);\n $table->addColumn('checked_at', 'int');\n $table->addPrimaryKey('event_source_id');\n $table->addKey('event_id');\n });\n\n $sm->createTable('xf_newfi_event_change', function (Create $table)\n {\n $table->addColumn('event_change_id', 'int')->autoIncrement();\n $table->addColumn('event_id', 'int');\n $table->addColumn('changed_at', 'int');\n $table->addColumn('change_note', 'text');\n $table->addPrimaryKey('event_change_id');\n $table->addKey('event_id');\n });\n\n\n $sm->createTable('xf_newfi_source_registry', function (Create $table)\n {\n $table->addColumn('source_id', 'int')->autoIncrement();\n $table->addColumn('source_key', 'varbinary', 64);\n $table->addColumn('title', 'varchar', 150);\n $table->addColumn('base_url', 'varchar', 500);\n $table->addColumn('source_type', 'varbinary', 50);\n $table->addColumn('locale', 'varbinary', 20);\n $table->addColumn('region', 'varbinary', 50);\n $table->addColumn('parser_strategy', 'varbinary', 100);\n $table->addColumn('poll_interval_seconds', 'int')->unsigned();\n $table->addColumn('last_success_at', 'int')->unsigned()->setDefault(0);\n $table->addColumn('last_failure_at', 'int')->unsigned()->setDefault(0);\n $table->addColumn('failure_count', 'int')->unsigned()->setDefault(0);\n $table->addColumn('last_error', 'varchar', 500)->setDefault('');\n $table->addColumn('provenance_policy', 'varchar', 500);\n $table->addColumn('enabled', 'tinyint')->unsigned()->setDefault(1);\n $table->addColumn('created_at', 'int')->unsigned();\n $table->addColumn('updated_at', 'int')->unsigned();\n $table->addPrimaryKey('source_id');\n $table->addUniqueKey('source_key');\n $table->addKey('enabled');\n $table->addKey('source_type');\n $table->addKey('region');\n });\n\n $seedPath = __DIR__ . '/public_sources.json';\n $seedRows = json_decode((string)file_get_contents($seedPath), true, 512, JSON_THROW_ON_ERROR);\n $now = time();\n foreach ($seedRows as $row)\n {\n $db = \\XF::db();\n $db->insert('xf_newfi_source_registry', [\n 'source_key' => $row['source_key'],\n 'title' => $row['title'],\n 'base_url' => $row['base_url'],\n 'source_type' => $row['source_type'],\n 'locale' => $row['locale'],\n 'region' => $row['region'],\n 'parser_strategy' => $row['parser_strategy'],\n 'poll_interval_seconds' => (int)$row['poll_interval_seconds'],\n 'last_success_at' => 0,\n 'last_failure_at' => 0,\n 'failure_count' => 0,\n 'last_error' => '',\n 'provenance_policy' => $row['provenance_policy'],\n 'enabled' => !empty($row['enabled']) ? 1 : 0,\n 'created_at' => $now,\n 'updated_at' => $now\n ]);\n }\n\n return null;\n }\n\n public function uninstall(array $stepParams = [])\n {\n $sm = $this->schemaManager();\n $sm->dropTable('xf_newfi_source_registry');\n $sm->dropTable('xf_newfi_event_change');\n $sm->dropTable('xf_newfi_event_source');\n $sm->dropTable('xf_newfi_event');\n return null;\n }\n}\n"},"src/addons/Newfi/Events/_data/routes.xml":{"bytes":144,"sha256":"7fefbb03c4c8b0bcd3e1dc1cd8f3f0e44460aa3b1fc09f5e63ee394e56c61309","text":"\n\n \n\n"},"src/addons/Newfi/Events/_data/templates.xml":{"bytes":12199,"sha256":"7d14721613e241c5e6718c92fe035a8208364a926417a6b75264e98cf5413b4b","text":"\n\n \u0421\u043e\u0431\u044b\u0442\u0438\u044f\n\n\n\n \n \n \u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c \u041d\u044c\u044e\u0444\u0414\u043e\u043c\u0430\n \u0421\u043e\u0431\u044b\u0442\u0438\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430\n \u0412\u044b\u0441\u0442\u0430\u0432\u043a\u0438, \u0432\u0441\u0442\u0440\u0435\u0447\u0438, \u0432\u043e\u0434\u043d\u044b\u0435 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f. \u0414\u0430\u043d\u043d\u044b\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430. \n \n \n \n\n \n \u0424\u0438\u043b\u044c\u0442\u0440\u044b\n \n \n\n \n \n \u041f\u043d\u0412\u0442\u0421\u0440\u0427\u0442\u041f\u0442\u0421\u0431\u0412\u0441 \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \u0421\u043e\u0431\u044b\u0442\u0438\u0439 \u043f\u043e\u043a\u0430 \u043d\u0435\u0442\n \u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c \u0433\u043e\u0442\u043e\u0432. \u041f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u0437\u0434\u0435\u0441\u044c \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432. \n \n \n \n \n]]>\n {$event.title}\n\n\n\n \u2190 \u0412\u0441\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\n \n \n \u0421\u043e\u0431\u044b\u0442\u0438\u0435 \u043e\u0442\u043c\u0435\u043d\u0435\u043d\u043e. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0438 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a. \n \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435{$event.description} \n \n \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438\n \n \n \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u043f\u043e\u043a\u0430 \u043d\u0435 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d. \n \n \n \u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439\n \n - {$change.change_note}
\n \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043f\u043e\u0441\u043b\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u043e\u043a\u0430 \u043d\u0435\u0442. \n \n \n \n]]>\n \n\n"},"src/addons/Newfi/Events/addon.json":{"bytes":397,"sha256":"cc60d5f949db176004f603e42cfb160aefd7ed4d8d7fff30101f4ebb2c502dc3","text":"{\n \"title\": \"Newfi Events\",\n \"description\": \"Minimal private-staging events/calendar component for the Newfi closed MVP.\",\n \"version_id\": 1000010,\n \"version_string\": \"1.0.0 Alpha 1\",\n \"dev\": \"Newfi\",\n \"dev_url\": \"\",\n \"faq_url\": \"\",\n \"support_url\": \"\",\n \"extra_urls\": [],\n \"require\": {\n \"XF\": [\n 2031270,\n \"XenForo 2.3.12+\"\n ]\n },\n \"icon\": \"\",\n \"legacy_addon_id\": \"\"\n}\n"}}
-NEWFI171_FRAMEWORK={"addon_samples":{"addons/XFRM/Alert/ResourceItem.php":{"bytes":280,"matches":[{"context":[{"line":2,"text":""},{"line":3,"text":"namespace XFRM\\Alert;"},{"line":4,"text":""},{"line":5,"text":"use XF\\Alert\\AbstractHandler;"},{"line":6,"text":""}],"line":3,"text":"namespace XFRM\\Alert;"},{"context":[{"line":4,"text":""},{"line":5,"text":"use XF\\Alert\\AbstractHandler;"},{"line":6,"text":""},{"line":7,"text":"class ResourceItem extends AbstractHandler"},{"line":8,"text":"{"}],"line":5,"text":"use XF\\Alert\\AbstractHandler;"},{"context":[{"line":8,"text":"{"},{"line":9,"text":"\tpublic function getEntityWith(): array"},{"line":10,"text":"\t{"},{"line":11,"text":"\t\t$visitor = \\XF::visitor();"},{"line":12,"text":""}],"line":9,"text":"\tpublic function getEntityWith(): array"}],"path":"/var/www/forums/newfi/public/src/addons/XFRM/Alert/ResourceItem.php","present":true,"sha256":"6c57bdaba8e5fa2a943222faf41c1f7acf9ffedc36427018707944226d7225a3"},"addons/XFRM/Repository/ResourceWatch.php":{"bytes":2771,"matches":[{"context":[{"line":11,"text":"{"},{"line":12,"text":"\tpublic function autoWatchResource(ResourceItem $resource, User $user, $onCreation = false)"},{"line":13,"text":"\t{"},{"line":14,"text":"\t\t$userField = $onCreation ? 'creation_watch_state' : 'interaction_watch_state';"},{"line":15,"text":""}],"line":12,"text":"\tpublic function autoWatchResource(ResourceItem $resource, User $user, $onCreation = false)"},{"context":[{"line":46,"text":""},{"line":47,"text":"\tpublic function setWatchState(ResourceItem $resource, User $user, $action, array $config = [])"},{"line":48,"text":"\t{"},{"line":49,"text":"\t\tif (!$resource->resource_id || !$user->user_id)"},{"line":50,"text":"\t\t{"}],"line":47,"text":"\tpublic function setWatchState(ResourceItem $resource, User $user, $action, array $config = [])"},{"context":[{"line":95,"text":""},{"line":96,"text":"\tpublic function setWatchStateForAll(User $user, $action, array $updates = [])"},{"line":97,"text":"\t{"},{"line":98,"text":"\t\tif (!$user->user_id)"},{"line":99,"text":"\t\t{"}],"line":96,"text":"\tpublic function setWatchStateForAll(User $user, $action, array $updates = [])"},{"context":[{"line":118,"text":""},{"line":119,"text":"\tpublic function isValidWatchState($state)"},{"line":120,"text":"\t{"},{"line":121,"text":"\t\tswitch ($state)"},{"line":122,"text":"\t\t{"}],"line":119,"text":"\tpublic function isValidWatchState($state)"}],"path":"/var/www/forums/newfi/public/src/addons/XFRM/Repository/ResourceWatch.php","present":true,"sha256":"dd9e4aabfe7a62402cec3b02df18dbecf1c21e12021930b27f176e04c75dcd76"},"addons/XFRM/_data/content_type_fields.xml":{"bytes":6442,"matches":[{"context":[{"line":1,"text":""},{"line":2,"text":""},{"line":3,"text":" XFRM\\ActivityLog\\ResourceItemHandler"},{"line":4,"text":" XFRM\\Alert\\ResourceItem"},{"line":5,"text":" XFRM\\ApprovalQueue\\ResourceItem"}],"line":2,"text":""},{"context":[{"line":2,"text":""},{"line":3,"text":" XFRM\\ActivityLog\\ResourceItemHandler"},{"line":4,"text":" XFRM\\Alert\\ResourceItem"},{"line":5,"text":" XFRM\\ApprovalQueue\\ResourceItem"},{"line":6,"text":" XFRM\\Bookmark\\ResourceItem"}],"line":3,"text":" XFRM\\ActivityLog\\ResourceItemHandler"},{"context":[{"line":3,"text":" XFRM\\ActivityLog\\ResourceItemHandler"},{"line":4,"text":" XFRM\\Alert\\ResourceItem"},{"line":5,"text":" XFRM\\ApprovalQueue\\ResourceItem"},{"line":6,"text":" XFRM\\Bookmark\\ResourceItem"},{"line":7,"text":" XFRM\\EmailStop\\ResourceItem"}],"line":4,"text":" XFRM\\Alert\\ResourceItem"},{"context":[{"line":4,"text":" XFRM\\Alert\\ResourceItem"},{"line":5,"text":" XFRM\\ApprovalQueue\\ResourceItem"},{"line":6,"text":" XFRM\\Bookmark\\ResourceItem"},{"line":7,"text":" XFRM\\EmailStop\\ResourceItem"},{"line":8,"text":" XFRM\\EmbedResolver\\ResourceItem"}],"line":5,"text":" XFRM\\ApprovalQueue\\ResourceItem"},{"context":[{"line":5,"text":" XFRM\\ApprovalQueue\\ResourceItem"},{"line":6,"text":" XFRM\\Bookmark\\ResourceItem"},{"line":7,"text":" XFRM\\EmailStop\\ResourceItem"},{"line":8,"text":" XFRM\\EmbedResolver\\ResourceItem"},{"line":9,"text":" XFRM:ResourceItem"}],"line":6,"text":" XFRM\\Bookmark\\ResourceItem"},{"context":[{"line":6,"text":" XFRM\\Bookmark\\ResourceItem"},{"line":7,"text":" XFRM\\EmailStop\\ResourceItem"},{"line":8,"text":" XFRM\\EmbedResolver\\ResourceItem"},{"line":9,"text":" XFRM:ResourceItem"},{"line":10,"text":" XFRM\\FeaturedContent\\ResourceItem"}],"line":7,"text":" XFRM\\EmailStop\\ResourceItem"},{"context":[{"line":7,"text":" XFRM\\EmailStop\\ResourceItem"},{"line":8,"text":" XFRM\\EmbedResolver\\ResourceItem"},{"line":9,"text":" XFRM:ResourceItem"},{"line":10,"text":" XFRM\\FeaturedContent\\ResourceItem"},{"line":11,"text":" XFRM\\FindNew\\ResourceItem"}],"line":8,"text":" XFRM\\EmbedResolver\\ResourceItem"},{"context":[{"line":8,"text":" XFRM\\EmbedResolver\\ResourceItem"},{"line":9,"text":" XFRM:ResourceItem"},{"line":10,"text":" XFRM\\FeaturedContent\\ResourceItem"},{"line":11,"text":" XFRM\\FindNew\\ResourceItem"},{"line":12,"text":" XFRM\\InlineMod\\ResourceItem"}],"line":9,"text":" XFRM:ResourceItem"},{"context":[{"line":9,"text":" XFRM:ResourceItem"},{"line":10,"text":" XFRM\\FeaturedContent\\ResourceItem"},{"line":11,"text":" XFRM\\FindNew\\ResourceItem"},{"line":12,"text":" XFRM\\InlineMod\\ResourceItem"},{"line":13,"text":" XFRM\\ModeratorLog\\ResourceItem"}],"line":10,"text":" XFRM\\FeaturedContent\\ResourceItem"},{"context":[{"line":10,"text":" XFRM\\FeaturedContent\\ResourceItem"},{"line":11,"text":" XFRM\\FindNew\\ResourceItem"},{"line":12,"text":" XFRM\\InlineMod\\ResourceItem"},{"line":13,"text":" XFRM\\ModeratorLog\\ResourceItem"},{"line":14,"text":" XFRM\\NewsFeed\\ResourceItem"}],"line":11,"text":" XFRM\\FindNew\\ResourceItem"},{"context":[{"line":11,"text":" XFRM\\FindNew\\ResourceItem"},{"line":12,"text":" XFRM\\InlineMod\\ResourceItem"},{"line":13,"text":" XFRM\\ModeratorLog\\ResourceItem"},{"line":14,"text":" XFRM\\NewsFeed\\ResourceItem"},{"line":15,"text":" xfrm_resource"}],"line":12,"text":" XFRM\\InlineMod\\ResourceItem"},{"context":[{"line":12,"text":" XFRM\\InlineMod\\ResourceItem"},{"line":13,"text":" XFRM\\ModeratorLog\\ResourceItem"},{"line":14,"text":" XFRM\\NewsFeed\\ResourceItem"},{"line":15,"text":" xfrm_resource"},{"line":16,"text":" xfrm_resources"}],"line":13,"text":" XFRM\\ModeratorLog\\ResourceItem"},{"context":[{"line":13,"text":" XFRM\\ModeratorLog\\ResourceItem"},{"line":14,"text":" XFRM\\NewsFeed\\ResourceItem"},{"line":15,"text":" xfrm_resource"},{"line":16,"text":" xfrm_resources"},{"line":17,"text":" XFRM\\Search\\Data\\ResourceItem"}],"line":14,"text":" XFRM\\NewsFeed\\ResourceItem"},{"context":[{"line":14,"text":" XFRM\\NewsFeed\\ResourceItem"},{"line":15,"text":" xfrm_resource"},{"line":16,"text":" xfrm_resources"},{"line":17,"text":" XFRM\\Search\\Data\\ResourceItem"},{"line":18,"text":" XFRM\\Sitemap\\ResourceItem"}],"line":15,"text":" xfrm_resource"},{"context":[{"line":15,"text":" xfrm_resource"},{"line":16,"text":" xfrm_resources"},{"line":17,"text":" XFRM\\Search\\Data\\ResourceItem"},{"line":18,"text":" XFRM\\Sitemap\\ResourceItem"},{"line":19,"text":" XFRM\\Spam\\Cleaner\\ResourceItem"}],"line":16,"text":" xfrm_resources"},{"context":[{"line":16,"text":" xfrm_resources"},{"line":17,"text":" XFRM\\Search\\Data\\ResourceItem"},{"line":18,"text":" XFRM\\Sitemap\\ResourceItem"},{"line":19,"text":" XFRM\\Spam\\Cleaner\\ResourceItem"},{"line":20,"text":" XFRM\\Stats\\ResourceItem"}],"line":17,"text":" XFRM\\Search\\Data\\ResourceItem"},{"context":[{"line":17,"text":" XFRM\\Search\\Data\\ResourceItem"},{"line":18,"text":" XFRM\\Sitemap\\ResourceItem"},{"line":19,"text":" XFRM\\Spam\\Cleaner\\ResourceItem"},{"line":20,"text":" XFRM\\Stats\\ResourceItem"},{"line":21,"text":" XFRM\\Tag\\ResourceItem"}],"line":18,"text":" XFRM\\Sitemap\\ResourceItem"},{"context":[{"line":18,"text":" XFRM\\Sitemap\\ResourceItem"},{"line":19,"text":" XFRM\\Spam\\Cleaner\\ResourceItem"},{"line":20,"text":" XFRM\\Stats\\ResourceItem"},{"line":21,"text":" XFRM\\Tag\\ResourceItem"},{"line":22,"text":" XFRM\\TrendingContent\\ResourceItemHandler"}],"line":19,"text":" XFRM\\Spam\\Cleaner\\ResourceItem"},{"context":[{"line":19,"text":" XFRM\\Spam\\Cleaner\\ResourceItem"},{"line":20,"text":" XFRM\\Stats\\ResourceItem"},{"line":21,"text":" XFRM\\Tag\\ResourceItem"},{"line":22,"text":" XFRM\\TrendingContent\\ResourceItemHandler"},{"line":23,"text":" XFRM\\Webhook\\Event\\ResourceItem"}],"line":20,"text":" XFRM\\Stats\\ResourceItem"},{"context":[{"line":20,"text":" XFRM\\Stats\\ResourceItem"},{"line":21,"text":" XFRM\\Tag\\ResourceItem"},{"line":22,"text":" XFRM\\TrendingContent\\ResourceItemHandler"},{"line":23,"text":" XFRM\\Webhook\\Event\\ResourceItem"},{"line":24,"text":" XFRM\\EmailStop\\Category"}],"line":21,"text":" XFRM\\Tag\\ResourceItem"},{"context":[{"line":21,"text":" XFRM\\Tag\\ResourceItem"},{"line":22,"text":" XFRM\\TrendingContent\\ResourceItemHandler"},{"line":23,"text":" XFRM\\Webhook\\Event\\ResourceItem"},{"line":24,"text":" XFRM\\EmailStop\\Category"},{"line":25,"text":" XFRM\\Permission\\CategoryPermissions"}],"line":22,"text":" XFRM\\TrendingContent\\ResourceItemHandler"},{"context":[{"line":22,"text":" XFRM\\TrendingContent\\ResourceItemHandler"},{"line":23,"text":" XFRM\\Webhook\\Event\\ResourceItem"},{"line":24,"text":" XFRM\\EmailStop\\Category"},{"line":25,"text":" XFRM\\Permission\\CategoryPermissions"},{"line":26,"text":" xfrm_resource_category"}],"line":23,"text":" XFRM\\Webhook\\Event\\ResourceItem"},{"context":[{"line":23,"text":" XFRM\\Webhook\\Event\\ResourceItem"},{"line":24,"text":" XFRM\\EmailStop\\Category"},{"line":25,"text":" XFRM\\Permission\\CategoryPermissions"},{"line":26,"text":" xfrm_resource_category"},{"line":27,"text":" xfrm_resource_categories"}],"line":24,"text":" XFRM\\EmailStop\\Category"},{"context":[{"line":24,"text":" XFRM\\EmailStop\\Category"},{"line":25,"text":" XFRM\\Permission\\CategoryPermissions"},{"line":26,"text":" xfrm_resource_category"},{"line":27,"text":" xfrm_resource_categories"},{"line":28,"text":" XFRM\\Alert\\ResourceRating"}],"line":25,"text":" XFRM\\Permission\\CategoryPermissions"},{"context":[{"line":25,"text":" XFRM\\Permission\\CategoryPermissions"},{"line":26,"text":" xfrm_resource_category"},{"line":27,"text":" xfrm_resource_categories"},{"line":28,"text":" XFRM\\Alert\\ResourceRating"},{"line":29,"text":" XFRM\\ContentVote\\ResourceRating"}],"line":26,"text":" xfrm_resource_category"},{"context":[{"line":26,"text":" xfrm_resource_category"},{"line":27,"text":" xfrm_resource_categories"},{"line":28,"text":" XFRM\\Alert\\ResourceRating"},{"line":29,"text":" XFRM\\ContentVote\\ResourceRating"},{"line":30,"text":" XFRM\\EmbedResolver\\ResourceRating"}],"line":27,"text":" xfrm_resource_categories"},{"context":[{"line":27,"text":" xfrm_resource_categories"},{"line":28,"text":" XFRM\\Alert\\ResourceRating"},{"line":29,"text":" XFRM\\ContentVote\\ResourceRating"},{"line":30,"text":" XFRM\\EmbedResolver\\ResourceRating"},{"line":31,"text":" XFRM:ResourceRating"}],"line":28,"text":" XFRM\\Alert\\ResourceRating"},{"context":[{"line":28,"text":" XFRM\\Alert\\ResourceRating"},{"line":29,"text":" XFRM\\ContentVote\\ResourceRating"},{"line":30,"text":" XFRM\\EmbedResolver\\ResourceRating"},{"line":31,"text":" XFRM:ResourceRating"},{"line":32,"text":" XFRM\\ModeratorLog\\ResourceRating"}],"line":29,"text":" XFRM\\ContentVote\\ResourceRating"},{"context":[{"line":29,"text":" XFRM\\ContentVote\\ResourceRating"},{"line":30,"text":" XFRM\\EmbedResolver\\ResourceRating"},{"line":31,"text":" XFRM:ResourceRating"},{"line":32,"text":" XFRM\\ModeratorLog\\ResourceRating"},{"line":33,"text":" XFRM\\NewsFeed\\ResourceRating"}],"line":30,"text":" XFRM\\EmbedResolver\\ResourceRating"},{"context":[{"line":30,"text":" XFRM\\EmbedResolver\\ResourceRating"},{"line":31,"text":" XFRM:ResourceRating"},{"line":32,"text":" XFRM\\ModeratorLog\\ResourceRating"},{"line":33,"text":" XFRM\\NewsFeed\\ResourceRating"},{"line":34,"text":" xfrm_resource_rating"}],"line":31,"text":" XFRM:ResourceRating"},{"context":[{"line":31,"text":" XFRM:ResourceRating"},{"line":32,"text":" XFRM\\ModeratorLog\\ResourceRating"},{"line":33,"text":" XFRM\\NewsFeed\\ResourceRating"},{"line":34,"text":" xfrm_resource_rating"},{"line":35,"text":" XFRM\\Report\\ResourceRating"}],"line":32,"text":" XFRM\\ModeratorLog\\ResourceRating"},{"context":[{"line":32,"text":" XFRM\\ModeratorLog\\ResourceRating"},{"line":33,"text":" XFRM\\NewsFeed\\ResourceRating"},{"line":34,"text":" xfrm_resource_rating"},{"line":35,"text":" XFRM\\Report\\ResourceRating"},{"line":36,"text":" XFRM\\Spam\\Cleaner\\ResourceRating"}],"line":33,"text":" XFRM\\NewsFeed\\ResourceRating"},{"context":[{"line":33,"text":" XFRM\\NewsFeed\\ResourceRating"},{"line":34,"text":" xfrm_resource_rating"},{"line":35,"text":" XFRM\\Report\\ResourceRating"},{"line":36,"text":" XFRM\\Spam\\Cleaner\\ResourceRating"},{"line":37,"text":" XFRM\\Warning\\ResourceRating"}],"line":34,"text":" xfrm_resource_rating"},{"context":[{"line":34,"text":" xfrm_resource_rating"},{"line":35,"text":" XFRM\\Report\\ResourceRating"},{"line":36,"text":" XFRM\\Spam\\Cleaner\\ResourceRating"},{"line":37,"text":" XFRM\\Warning\\ResourceRating"},{"line":38,"text":" XFRM\\Webhook\\Event\\ResourceRating"}],"line":35,"text":" XFRM\\Report\\ResourceRating"},{"context":[{"line":35,"text":" XFRM\\Report\\ResourceRating"},{"line":36,"text":" XFRM\\Spam\\Cleaner\\ResourceRating"},{"line":37,"text":" XFRM\\Warning\\ResourceRating"},{"line":38,"text":" XFRM\\Webhook\\Event\\ResourceRating"},{"line":39,"text":" XFRM\\ActivityLog\\ResourceUpdateHandler"}],"line":36,"text":" XFRM\\Spam\\Cleaner\\ResourceRating"},{"context":[{"line":36,"text":" XFRM\\Spam\\Cleaner\\ResourceRating"},{"line":37,"text":" XFRM\\Warning\\ResourceRating"},{"line":38,"text":" XFRM\\Webhook\\Event\\ResourceRating"},{"line":39,"text":" XFRM\\ActivityLog\\ResourceUpdateHandler"},{"line":40,"text":" XFRM\\Alert\\ResourceUpdate"}],"line":37,"text":" XFRM\\Warning\\ResourceRating"},{"context":[{"line":37,"text":" XFRM\\Warning\\ResourceRating"},{"line":38,"text":" XFRM\\Webhook\\Event\\ResourceRating"},{"line":39,"text":" XFRM\\ActivityLog\\ResourceUpdateHandler"},{"line":40,"text":" XFRM\\Alert\\ResourceUpdate"},{"line":41,"text":" XFRM\\ApprovalQueue\\ResourceUpdate"}],"line":38,"text":" XFRM\\Webhook\\Event\\ResourceRating"},{"context":[{"line":38,"text":" XFRM\\Webhook\\Event\\ResourceRating"},{"line":39,"text":" XFRM\\ActivityLog\\ResourceUpdateHandler"},{"line":40,"text":" XFRM\\Alert\\ResourceUpdate"},{"line":41,"text":" XFRM\\ApprovalQueue\\ResourceUpdate"},{"line":42,"text":" XFRM\\Attachment\\ResourceUpdate"}],"line":39,"text":" XFRM\\ActivityLog\\ResourceUpdateHandler"},{"context":[{"line":39,"text":" XFRM\\ActivityLog\\ResourceUpdateHandler"},{"line":40,"text":" XFRM\\Alert\\ResourceUpdate"},{"line":41,"text":" XFRM\\ApprovalQueue\\ResourceUpdate"},{"line":42,"text":" XFRM\\Attachment\\ResourceUpdate"},{"line":43,"text":" XFRM\\Bookmark\\ResourceUpdate"}],"line":40,"text":" XFRM\\Alert\\ResourceUpdate"},{"context":[{"line":40,"text":" XFRM\\Alert\\ResourceUpdate"},{"line":41,"text":" XFRM\\ApprovalQueue\\ResourceUpdate"},{"line":42,"text":" XFRM\\Attachment\\ResourceUpdate"},{"line":43,"text":" XFRM\\Bookmark\\ResourceUpdate"},{"line":44,"text":" XFRM\\EditHistory\\ResourceUpdate"}],"line":41,"text":" XFRM\\ApprovalQueue\\ResourceUpdate"},{"context":[{"line":41,"text":" XFRM\\ApprovalQueue\\ResourceUpdate"},{"line":42,"text":" XFRM\\Attachment\\ResourceUpdate"},{"line":43,"text":" XFRM\\Bookmark\\ResourceUpdate"},{"line":44,"text":" XFRM\\EditHistory\\ResourceUpdate"},{"line":45,"text":" XFRM\\EmbedResolver\\ResourceUpdate"}],"line":42,"text":" XFRM\\Attachment\\ResourceUpdate"},{"context":[{"line":42,"text":" XFRM\\Attachment\\ResourceUpdate"},{"line":43,"text":" XFRM\\Bookmark\\ResourceUpdate"},{"line":44,"text":" XFRM\\EditHistory\\ResourceUpdate"},{"line":45,"text":" XFRM\\EmbedResolver\\ResourceUpdate"},{"line":46,"text":" XFRM:ResourceUpdate"}],"line":43,"text":" XFRM\\Bookmark\\ResourceUpdate"},{"context":[{"line":43,"text":" XFRM\\Bookmark\\ResourceUpdate"},{"line":44,"text":" XFRM\\EditHistory\\ResourceUpdate"},{"line":45,"text":" XFRM\\EmbedResolver\\ResourceUpdate"},{"line":46,"text":" XFRM:ResourceUpdate"},{"line":47,"text":" XFRM\\ModeratorLog\\ResourceUpdate"}],"line":44,"text":" XFRM\\EditHistory\\ResourceUpdate"},{"context":[{"line":44,"text":" XFRM\\EditHistory\\ResourceUpdate"},{"line":45,"text":" XFRM\\EmbedResolver\\ResourceUpdate"},{"line":46,"text":" XFRM:ResourceUpdate"},{"line":47,"text":" XFRM\\ModeratorLog\\ResourceUpdate"},{"line":48,"text":" XFRM\\NewsFeed\\ResourceUpdate"}],"line":45,"text":" XFRM\\EmbedResolver\\ResourceUpdate"},{"context":[{"line":45,"text":" XFRM\\EmbedResolver\\ResourceUpdate"},{"line":46,"text":" XFRM:ResourceUpdate"},{"line":47,"text":" XFRM\\ModeratorLog\\ResourceUpdate"},{"line":48,"text":" XFRM\\NewsFeed\\ResourceUpdate"},{"line":49,"text":" xfrm_resource_update"}],"line":46,"text":" XFRM:ResourceUpdate"},{"context":[{"line":46,"text":" XFRM:ResourceUpdate"},{"line":47,"text":" XFRM\\ModeratorLog\\ResourceUpdate"},{"line":48,"text":" XFRM\\NewsFeed\\ResourceUpdate"},{"line":49,"text":" xfrm_resource_update"},{"line":50,"text":" xfrm_resource_updates"}],"line":47,"text":" XFRM\\ModeratorLog\\ResourceUpdate"},{"context":[{"line":47,"text":" XFRM\\ModeratorLog\\ResourceUpdate"},{"line":48,"text":" XFRM\\NewsFeed\\ResourceUpdate"},{"line":49,"text":" xfrm_resource_update"},{"line":50,"text":" xfrm_resource_updates"},{"line":51,"text":" XFRM\\Reaction\\ResourceUpdate"}],"line":48,"text":" XFRM\\NewsFeed\\ResourceUpdate"},{"context":[{"line":48,"text":" XFRM\\NewsFeed\\ResourceUpdate"},{"line":49,"text":" xfrm_resource_update"},{"line":50,"text":" xfrm_resource_updates"},{"line":51,"text":" XFRM\\Reaction\\ResourceUpdate"},{"line":52,"text":" XFRM\\Report\\ResourceUpdate"}],"line":49,"text":" xfrm_resource_update"},{"context":[{"line":49,"text":" xfrm_resource_update"},{"line":50,"text":" xfrm_resource_updates"},{"line":51,"text":" XFRM\\Reaction\\ResourceUpdate"},{"line":52,"text":" XFRM\\Report\\ResourceUpdate"},{"line":53,"text":" XFRM\\Search\\Data\\ResourceUpdate"}],"line":50,"text":" xfrm_resource_updates"},{"context":[{"line":50,"text":" xfrm_resource_updates"},{"line":51,"text":" XFRM\\Reaction\\ResourceUpdate"},{"line":52,"text":" XFRM\\Report\\ResourceUpdate"},{"line":53,"text":" XFRM\\Search\\Data\\ResourceUpdate"},{"line":54,"text":" XFRM\\Warning\\ResourceUpdate"}],"line":51,"text":" XFRM\\Reaction\\ResourceUpdate"},{"context":[{"line":51,"text":" XFRM\\Reaction\\ResourceUpdate"},{"line":52,"text":" XFRM\\Report\\ResourceUpdate"},{"line":53,"text":" XFRM\\Search\\Data\\ResourceUpdate"},{"line":54,"text":" XFRM\\Warning\\ResourceUpdate"},{"line":55,"text":" XFRM\\Webhook\\Event\\ResourceUpdate"}],"line":52,"text":" XFRM\\Report\\ResourceUpdate"},{"context":[{"line":52,"text":" XFRM\\Report\\ResourceUpdate"},{"line":53,"text":" XFRM\\Search\\Data\\ResourceUpdate"},{"line":54,"text":" XFRM\\Warning\\ResourceUpdate"},{"line":55,"text":" XFRM\\Webhook\\Event\\ResourceUpdate"},{"line":56,"text":" XFRM\\ApprovalQueue\\ResourceVersion"}],"line":53,"text":" XFRM\\Search\\Data\\ResourceUpdate"},{"context":[{"line":53,"text":" XFRM\\Search\\Data\\ResourceUpdate"},{"line":54,"text":" XFRM\\Warning\\ResourceUpdate"},{"line":55,"text":" XFRM\\Webhook\\Event\\ResourceUpdate"},{"line":56,"text":" XFRM\\ApprovalQueue\\ResourceVersion"},{"line":57,"text":" XFRM\\Attachment\\ResourceVersion"}],"line":54,"text":" XFRM\\Warning\\ResourceUpdate"},{"context":[{"line":54,"text":" XFRM\\Warning\\ResourceUpdate"},{"line":55,"text":" XFRM\\Webhook\\Event\\ResourceUpdate"},{"line":56,"text":" XFRM\\ApprovalQueue\\ResourceVersion"},{"line":57,"text":" XFRM\\Attachment\\ResourceVersion"},{"line":58,"text":" XFRM:ResourceVersion"}],"line":55,"text":" XFRM\\Webhook\\Event\\ResourceUpdate"},{"context":[{"line":55,"text":" XFRM\\Webhook\\Event\\ResourceUpdate"},{"line":56,"text":" XFRM\\ApprovalQueue\\ResourceVersion"},{"line":57,"text":" XFRM\\Attachment\\ResourceVersion"},{"line":58,"text":" XFRM:ResourceVersion"},{"line":59,"text":" XFRM\\ModeratorLog\\ResourceVersion"}],"line":56,"text":" XFRM\\ApprovalQueue\\ResourceVersion"},{"context":[{"line":56,"text":" XFRM\\ApprovalQueue\\ResourceVersion"},{"line":57,"text":" XFRM\\Attachment\\ResourceVersion"},{"line":58,"text":" XFRM:ResourceVersion"},{"line":59,"text":" XFRM\\ModeratorLog\\ResourceVersion"},{"line":60,"text":" xfrm_resource_version"}],"line":57,"text":" XFRM\\Attachment\\ResourceVersion"},{"context":[{"line":57,"text":" XFRM\\Attachment\\ResourceVersion"},{"line":58,"text":" XFRM:ResourceVersion"},{"line":59,"text":" XFRM\\ModeratorLog\\ResourceVersion"},{"line":60,"text":" xfrm_resource_version"},{"line":61,"text":" XFRM\\Webhook\\Event\\ResourceVersion"}],"line":58,"text":" XFRM:ResourceVersion"},{"context":[{"line":58,"text":" XFRM:ResourceVersion"},{"line":59,"text":" XFRM\\ModeratorLog\\ResourceVersion"},{"line":60,"text":" xfrm_resource_version"},{"line":61,"text":" XFRM\\Webhook\\Event\\ResourceVersion"},{"line":62,"text":""}],"line":59,"text":" XFRM\\ModeratorLog\\ResourceVersion"},{"context":[{"line":59,"text":" XFRM\\ModeratorLog\\ResourceVersion"},{"line":60,"text":" xfrm_resource_version"},{"line":61,"text":" XFRM\\Webhook\\Event\\ResourceVersion"},{"line":62,"text":""}],"line":60,"text":" xfrm_resource_version"},{"context":[{"line":60,"text":" xfrm_resource_version"},{"line":61,"text":" XFRM\\Webhook\\Event\\ResourceVersion"},{"line":62,"text":""}],"line":61,"text":" XFRM\\Webhook\\Event\\ResourceVersion"}],"path":"/var/www/forums/newfi/public/src/addons/XFRM/_data/content_type_fields.xml","present":true,"sha256":"0c55319843d04701f1f6fa7fdfeb1ae8883b6d3bb95fceb6e0cf245638543474"},"addons/XFRM/_data/routes.xml":{"bytes":3869,"matches":[{"context":[{"line":2,"text":""},{"line":3,"text":" "},{"line":4,"text":" "},{"line":5,"text":" "},{"line":6,"text":" "}],"line":3,"text":" "},{"context":[{"line":3,"text":" "},{"line":4,"text":" "},{"line":5,"text":" "},{"line":6,"text":" "},{"line":7,"text":" "}],"line":4,"text":" "},{"context":[{"line":4,"text":" "},{"line":5,"text":" "},{"line":6,"text":" "},{"line":7,"text":" "},{"line":8,"text":" "}],"line":5,"text":" "},{"context":[{"line":5,"text":" "},{"line":6,"text":" "},{"line":7,"text":" "},{"line":8,"text":" "},{"line":9,"text":" "}],"line":6,"text":" "},{"context":[{"line":6,"text":" "},{"line":7,"text":" "},{"line":8,"text":" "},{"line":9,"text":" "},{"line":10,"text":" "}],"line":7,"text":" "},{"context":[{"line":7,"text":" "},{"line":8,"text":" "},{"line":9,"text":" "},{"line":10,"text":" "},{"line":11,"text":" "}],"line":8,"text":" "},{"context":[{"line":8,"text":" "},{"line":9,"text":" "},{"line":10,"text":" "},{"line":11,"text":" "},{"line":12,"text":" "}],"line":9,"text":" "},{"context":[{"line":9,"text":" "},{"line":10,"text":" "},{"line":11,"text":" "},{"line":12,"text":" "},{"line":13,"text":" "}],"line":10,"text":" "},{"context":[{"line":10,"text":" "},{"line":11,"text":" "},{"line":12,"text":" "},{"line":13,"text":" "},{"line":14,"text":" "}],"line":11,"text":" "},{"context":[{"line":11,"text":" "},{"line":12,"text":" "},{"line":13,"text":" "},{"line":14,"text":" "},{"line":15,"text":" "}],"line":12,"text":" "},{"context":[{"line":12,"text":" "},{"line":13,"text":" "},{"line":14,"text":" "},{"line":15,"text":" "},{"line":16,"text":" "}],"line":13,"text":" "},{"context":[{"line":13,"text":" "},{"line":14,"text":" "},{"line":15,"text":" "},{"line":16,"text":" "},{"line":17,"text":" "}],"line":14,"text":" "},{"context":[{"line":14,"text":" "},{"line":15,"text":" "},{"line":16,"text":" "},{"line":17,"text":" "},{"line":18,"text":" "}],"line":15,"text":" "},{"context":[{"line":15,"text":" "},{"line":16,"text":" "},{"line":17,"text":" "},{"line":18,"text":" "},{"line":19,"text":" "}],"line":16,"text":" "},{"context":[{"line":16,"text":" "},{"line":17,"text":" "},{"line":18,"text":" "},{"line":19,"text":" "},{"line":20,"text":" "}],"line":17,"text":" "},{"context":[{"line":17,"text":" "},{"line":18,"text":" "},{"line":19,"text":" "},{"line":20,"text":" "},{"line":21,"text":" "}],"line":18,"text":" "},{"context":[{"line":18,"text":" "},{"line":19,"text":" "},{"line":20,"text":" "},{"line":21,"text":" "},{"line":22,"text":" "}],"line":19,"text":" "},{"context":[{"line":19,"text":" "},{"line":20,"text":" "},{"line":21,"text":" "},{"line":22,"text":" "},{"line":23,"text":" "}],"line":20,"text":" "},{"context":[{"line":20,"text":" "},{"line":21,"text":" "},{"line":22,"text":" "},{"line":23,"text":" "},{"line":24,"text":" "}],"line":21,"text":" "},{"context":[{"line":21,"text":" "},{"line":22,"text":" "},{"line":23,"text":" "},{"line":24,"text":" "},{"line":25,"text":" "}],"line":22,"text":" "},{"context":[{"line":22,"text":" "},{"line":23,"text":" "},{"line":24,"text":" "},{"line":25,"text":" "},{"line":26,"text":" "}],"line":23,"text":" "},{"context":[{"line":23,"text":" "},{"line":24,"text":" "},{"line":25,"text":" "},{"line":26,"text":" "},{"line":27,"text":""}],"line":24,"text":" "},{"context":[{"line":24,"text":" "},{"line":25,"text":" "},{"line":26,"text":" "},{"line":27,"text":""}],"line":25,"text":" "},{"context":[{"line":25,"text":" "},{"line":26,"text":" "},{"line":27,"text":""}],"line":26,"text":" "}],"path":"/var/www/forums/newfi/public/src/addons/XFRM/_data/routes.xml","present":true,"sha256":"254372f8f417cada060151063edda30884694a4d0a07eaca959674a80ae078be"},"addons/XFRM/_data/templates.xml":{"bytes":244652,"matches":[{"context":[{"line":2,"text":""},{"line":3,"text":" "},{"line":4,"text":""},{"line":5,"text":""}],"line":3,"text":" "},{"context":[{"line":42,"text":"]]>"},{"line":43,"text":" "},{"line":44,"text":""},{"line":45,"text":""}],"line":43,"text":" "},{"context":[{"line":57,"text":"]]>"},{"line":58,"text":" "}],"line":58,"text":" ]]>"},{"line":84,"text":" "},{"line":85,"text":""},{"line":86,"text":"]]>"}],"line":84,"text":" "},{"context":[{"line":87,"text":"\tlabel=\"{{ phrase('maximum_entries') }}\" />]]>"},{"line":88,"text":" "},{"line":89,"text":""},{"line":90,"text":""}],"line":88,"text":" "},{"context":[{"line":113,"text":"]]>"},{"line":114,"text":" "},{"line":115,"text":""},{"line":116,"text":""}],"line":114,"text":" "},{"context":[{"line":140,"text":"]]>"},{"line":141,"text":" {{ phrase('confirm_action') }}"},{"line":142,"text":""},{"line":143,"text":"{{ phrase('confirm_action') }}"},{"context":[{"line":145,"text":"\targ-category=\"{$category}\" />]]>"},{"line":146,"text":" "},{"line":147,"text":"\t{{ phrase('add_category') }}"},{"line":148,"text":""},{"line":149,"text":"\t{{ phrase('edit_category:') }} {$category.title}"}],"line":146,"text":" "},{"context":[{"line":282,"text":"]]>"},{"line":283,"text":" {{ phrase('xfrm_resource_categories') }}"},{"line":284,"text":""},{"line":285,"text":""}],"line":283,"text":" {{ phrase('xfrm_resource_categories') }}"},{"context":[{"line":293,"text":"/>]]>"},{"line":294,"text":" "},{"line":295,"text":"\t{$userGroup.title}"},{"line":296,"text":""},{"line":297,"text":"\t{$user.username}"}],"line":294,"text":" "},{"context":[{"line":314,"text":"]]>"},{"line":315,"text":" {{ phrase('permissions:') }} {$record.title}"},{"line":316,"text":""},{"line":317,"text":"{{ phrase('permissions:') }} {$record.title}"},{"context":[{"line":324,"text":"]]>"},{"line":325,"text":" {{ phrase('sort_categories') }}"},{"line":326,"text":""},{"line":327,"text":"{{ phrase('sort_categories') }}"},{"context":[{"line":329,"text":"\targ-linkPrefix=\"resource-manager/categories\" />]]>"},{"line":330,"text":" "},{"line":331,"text":"\t{$userGroup.title}"},{"line":332,"text":""},{"line":333,"text":"\t{$user.username}"}],"line":330,"text":" "},{"context":[{"line":350,"text":"]]>"},{"line":351,"text":" {$record.title}"},{"line":352,"text":""},{"line":353,"text":"{$record.title}"},{"context":[{"line":360,"text":"]]>"},{"line":361,"text":" {{ phrase('xfrm_resource_category_permissions') }}"},{"line":362,"text":""},{"line":363,"text":""},{"line":364,"text":"\t"}],"line":361,"text":" {{ phrase('xfrm_resource_category_permissions') }}"},{"context":[{"line":390,"text":"]]>"},{"line":391,"text":" ]]>"},{"line":392,"text":" "},{"line":393,"text":"\t"},{"line":394,"text":"\t\t]]>"},{"context":[{"line":391,"text":" ]]>"},{"line":392,"text":" "},{"line":393,"text":"\t"},{"line":394,"text":"\t\t"}],"line":392,"text":" "},{"context":[{"line":413,"text":"]]>"},{"line":414,"text":" {{ phrase('xfrm_resource_fields') }}"},{"line":415,"text":""},{"line":416,"text":"]]>"},{"line":417,"text":" ]]>"}],"line":414,"text":" {{ phrase('xfrm_resource_fields') }}"},{"context":[{"line":416,"text":"]]>"},{"line":417,"text":" ]]>"},{"line":418,"text":" "},{"line":419,"text":"\t"},{"line":420,"text":"\t\t]]>"},{"context":[{"line":417,"text":" ]]>"},{"line":418,"text":" "},{"line":419,"text":"\t"},{"line":420,"text":"\t\t"},{"context":[{"line":424,"text":"]]>"},{"line":425,"text":" "},{"line":426,"text":"\t"},{"line":427,"text":"\t\t |