1
0
Files
homelab-public-context/runtime/latest.json
T
2026-09-19 21:42:35 +00:00

39 lines
169 KiB
JSON

{
"schema_version": 1,
"channel": "homelab-runtime",
"command_id": "NEWFI-260919-NEWFDOM-NOTIFY213-CONTRACT172",
"status": "OK",
"rc": 0,
"host": "pve01",
"mode": "read-only",
"component": "newfi-newfdom-notify213-xenforo-alert-push-signatures-readonly",
"started_at_utc": "2026-09-19T21:42:32Z",
"finished_at_utc": "2026-09-19T21:42:34Z",
"reference_register_checked": true,
"reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66",
"error_register_checked": true,
"error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0",
"command_sha256": "bda1140816eec82827d7d14464a8f4c170a8a77387d53dd4265102ee7c2c6b4c",
"duplicate_failed_command_blocked": false,
"block_reason": null,
"execution_started": true,
"change_declared": false,
"result_contract_valid": true,
"result_contract_status": null,
"result_contract_error": null,
"command_rc": 0,
"changes_made": false,
"rollback_started": false,
"rollback_restored": null,
"mutation_outcome": "NO_MUTATION",
"sanitized": true,
"secrets_included": false,
"private_addresses_included": false,
"raw_evidence_retained_locally": true,
"raw_evidence_sha256": "5a429f5a36df397f1561ab9cf5a3ef10db191d7e304e6f9a7705cd2e7a703034",
"sanitized_output_sha256": "5a429f5a36df397f1561ab9cf5a3ef10db191d7e304e6f9a7705cd2e7a703034",
"output_truncated_in_json": false,
"full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
"output": "NEWFI172_BEGIN=true\nCOMMAND_ID=NEWFI-260919-NEWFDOM-NOTIFY213-CONTRACT172\nNEWFI172_FRAMEWORK={\"command_id\":\"NEWFI-260919-NEWFDOM-NOTIFY213-CONTRACT172\",\"controller_details\":{\"src/XF/Pub/Controller/AccountConfirmationController.php\":{\"bytes\":2043,\"matches\":[{\"context\":[{\"line\":13,\"text\":\"{\"},{\"line\":14,\"text\":\"\\tpublic function actionEmail(ParameterBag $params)\"},{\"line\":15,\"text\":\"\\t{\"},{\"line\":16,\"text\":\"\\t\\t/** @var User $user */\"},{\"line\":17,\"text\":\"\\t\\t$user = $this->assertRecordExists(User::class, $params->user_id);\"},{\"line\":18,\"text\":\"\"}],\"line\":14,\"text\":\"\\tpublic function actionEmail(ParameterBag $params)\"},{\"context\":[{\"line\":49,\"text\":\"\"},{\"line\":50,\"text\":\"\\tpublic function actionResend()\"},{\"line\":51,\"text\":\"\\t{\"},{\"line\":52,\"text\":\"\\t\\t$visitor = \\\\XF::visitor();\"},{\"line\":53,\"text\":\"\\t\\tif (!$visitor->user_id)\"},{\"line\":54,\"text\":\"\\t\\t{\"}],\"line\":50,\"text\":\"\\tpublic function actionResend()\"}],\"path\":\"/var/www/forums/newfi/public/src/XF/Pub/Controller/AccountConfirmationController.php\",\"present\":true,\"sha256\":\"f9c19473d2620ec0e20ab435871f296af90d85daf49fb8211ad7dde7af08781d\"},\"src/XF/Pub/Controller/AccountController.php\":{\"bytes\":54974,\"matches\":[{\"context\":[{\"line\":17,\"text\":\"use XF\\\\Entity\\\\User;\"},{\"line\":18,\"text\":\"use XF\\\\Entity\\\\UserAlert;\"},{\"line\":19,\"text\":\"use XF\\\\Entity\\\\UserConnectedAccount;\"},{\"line\":20,\"text\":\"use XF\\\\Entity\\\\UsernameChange;\"},{\"line\":21,\"text\":\"use XF\\\\Entity\\\\UserProfile;\"},{\"line\":22,\"text\":\"use XF\\\\Entity\\\\UserTfa;\"}],\"line\":18,\"text\":\"use XF\\\\Entity\\\\UserAlert;\"},{\"context\":[{\"line\":40,\"text\":\"use XF\\\\Repository\\\\TfaRepository;\"},{\"line\":41,\"text\":\"use XF\\\\Repository\\\\UserAlertRepository;\"},{\"line\":42,\"text\":\"use XF\\\\Repository\\\\UserTfaTrustedRepository;\"},{\"line\":43,\"text\":\"use XF\\\\Repository\\\\UserUpgradeRepository;\"},{\"line\":44,\"text\":\"use XF\\\\Service\\\\Passkey\\\\ManagerService;\"},{\"line\":45,\"text\":\"use XF\\\\Service\\\\User\\\\AvatarService;\"}],\"line\":41,\"text\":\"use XF\\\\Repository\\\\UserAlertRepository;\"},{\"context\":[{\"line\":66,\"text\":\"\"},{\"line\":67,\"text\":\"\\tpublic function actionIndex()\"},{\"line\":68,\"text\":\"\\t{\"},{\"line\":69,\"text\":\"\\t\\treturn $this->rerouteController(self::class, 'account-details');\"},{\"line\":70,\"text\":\"\\t}\"},{\"line\":71,\"text\":\"\"}],\"line\":67,\"text\":\"\\tpublic function actionIndex()\"},{\"context\":[{\"line\":77,\"text\":\"\"},{\"line\":78,\"text\":\"\\tpublic function actionAccountDetails()\"},{\"line\":79,\"text\":\"\\t{\"},{\"line\":80,\"text\":\"\\t\\t$visitor = \\\\XF::visitor();\"},{\"line\":81,\"text\":\"\"},{\"line\":82,\"text\":\"\\t\\tif ($this->isPost())\"}],\"line\":78,\"text\":\"\\tpublic function actionAccountDetails()\"},{\"context\":[{\"line\":200,\"text\":\"\"},{\"line\":201,\"text\":\"\\tpublic function actionUsername()\"},{\"line\":202,\"text\":\"\\t{\"},{\"line\":203,\"text\":\"\\t\\t$visitor = \\\\XF::visitor();\"},{\"line\":204,\"text\":\"\"},{\"line\":205,\"text\":\"\\t\\tif (!$visitor->canChangeUsername($error))\"}],\"line\":201,\"text\":\"\\tpublic function actionUsername()\"},{\"context\":[{\"line\":243,\"text\":\"\"},{\"line\":244,\"text\":\"\\tpublic function actionEmail()\"},{\"line\":245,\"text\":\"\\t{\"},{\"line\":246,\"text\":\"\\t\\t$visitor = \\\\XF::visitor();\"},{\"line\":247,\"text\":\"\\t\\t$auth = $visitor->Auth->getAuthenticationHandler();\"},{\"line\":248,\"text\":\"\\t\\tif (!$auth)\"}],\"line\":244,\"text\":\"\\tpublic function actionEmail()\"},{\"context\":[{\"line\":319,\"text\":\"\"},{\"line\":320,\"text\":\"\\tpublic function actionSignature()\"},{\"line\":321,\"text\":\"\\t{\"},{\"line\":322,\"text\":\"\\t\\t$visitor = \\\\XF::visitor();\"},{\"line\":323,\"text\":\"\\t\\tif (!$visitor->canEditSignature())\"},{\"line\":324,\"text\":\"\\t\\t{\"}],\"line\":320,\"text\":\"\\tpublic function actionSignature()\"},{\"context\":[{\"line\":372,\"text\":\"\"},{\"line\":373,\"text\":\"\\tpublic function actionPrivacy()\"},{\"line\":374,\"text\":\"\\t{\"},{\"line\":375,\"text\":\"\\t\\tif ($this->isPost())\"},{\"line\":376,\"text\":\"\\t\\t{\"},{\"line\":377,\"text\":\"\\t\\t\\t$this->savePrivacyProcess(\\\\XF::visitor())->run();\"}],\"line\":373,\"text\":\"\\tpublic function actionPrivacy()\"},{\"context\":[{\"line\":376,\"text\":\"\\t\\t{\"},{\"line\":377,\"text\":\"\\t\\t\\t$this->savePrivacyProcess(\\\\XF::visitor())->run();\"},{\"line\":378,\"text\":\"\\t\\t\\treturn $this->redirect($this->buildLink('account/privacy'));\"},{\"line\":379,\"text\":\"\\t\\t}\"},{\"line\":380,\"text\":\"\\t\\telse\"},{\"line\":381,\"text\":\"\\t\\t{\"}],\"line\":377,\"text\":\"\\t\\t\\t$this->savePrivacyProcess(\\\\XF::visitor())->run();\"},{\"context\":[{\"line\":377,\"text\":\"\\t\\t\\t$this->savePrivacyProcess(\\\\XF::visitor())->run();\"},{\"line\":378,\"text\":\"\\t\\t\\treturn $this->redirect($this->buildLink('account/privacy'));\"},{\"line\":379,\"text\":\"\\t\\t}\"},{\"line\":380,\"text\":\"\\t\\telse\"},{\"line\":381,\"text\":\"\\t\\t{\"},{\"line\":382,\"text\":\"\\t\\t\\t$view = $this->view('XF:Account\\\\Privacy', 'account_privacy');\"}],\"line\":378,\"text\":\"\\t\\t\\treturn $this->redirect($this->buildLink('account/privacy'));\"},{\"context\":[{\"line\":381,\"text\":\"\\t\\t{\"},{\"line\":382,\"text\":\"\\t\\t\\t$view = $this->view('XF:Account\\\\Privacy', 'account_privacy');\"},{\"line\":383,\"text\":\"\\t\\t\\treturn $this->addAccountWrapperParams($view, 'privacy');\"},{\"line\":384,\"text\":\"\\t\\t}\"},{\"line\":385,\"text\":\"\\t}\"},{\"line\":386,\"text\":\"\"}],\"line\":382,\"text\":\"\\t\\t\\t$view = $this->view('XF:Account\\\\Privacy', 'account_privacy');\"},{\"context\":[{\"line\":382,\"text\":\"\\t\\t\\t$view = $this->view('XF:Account\\\\Privacy', 'account_privacy');\"},{\"line\":383,\"text\":\"\\t\\t\\treturn $this->addAccountWrapperParams($view, 'privacy');\"},{\"line\":384,\"text\":\"\\t\\t}\"},{\"line\":385,\"text\":\"\\t}\"},{\"line\":386,\"text\":\"\"},{\"line\":387,\"text\":\"\\tprotected function savePrivacyProcess(User $visitor)\"}],\"line\":383,\"text\":\"\\t\\t\\treturn $this->addAccountWrapperParams($view, 'privacy');\"},{\"context\":[{\"line\":386,\"text\":\"\"},{\"line\":387,\"text\":\"\\tprotected function savePrivacyProcess(User $visitor)\"},{\"line\":388,\"text\":\"\\t{\"},{\"line\":389,\"text\":\"\\t\\t$form = $this->formAction();\"},{\"line\":390,\"text\":\"\"},{\"line\":391,\"text\":\"\\t\\t$input = $this->filter([\"}],\"line\":387,\"text\":\"\\tprotected function savePrivacyProcess(User $visitor)\"},{\"context\":[{\"line\":400,\"text\":\"\\t\\t\\t],\"},{\"line\":401,\"text\":\"\\t\\t\\t'privacy' => [\"},{\"line\":402,\"text\":\"\\t\\t\\t\\t'allow_view_profile' => 'str',\"},{\"line\":403,\"text\":\"\\t\\t\\t\\t'allow_post_profile' => 'str',\"},{\"line\":404,\"text\":\"\\t\\t\\t\\t'allow_receive_news_feed' => 'str',\"},{\"line\":405,\"text\":\"\\t\\t\\t\\t'allow_send_personal_conversation' => 'str',\"}],\"line\":401,\"text\":\"\\t\\t\\t'privacy' => [\"},{\"context\":[{\"line\":419,\"text\":\"\"},{\"line\":420,\"text\":\"\\t\\t$userPrivacy = $visitor->getRelationOrDefault('Privacy');\"},{\"line\":421,\"text\":\"\\t\\t$form->setupEntityInput($userPrivacy, $input['privacy']);\"},{\"line\":422,\"text\":\"\"},{\"line\":423,\"text\":\"\\t\\t$form->complete(function () use ($visitor)\"},{\"line\":424,\"text\":\"\\t\\t{\"}],\"line\":420,\"text\":\"\\t\\t$userPrivacy = $visitor->getRelationOrDefault('Privacy');\"},{\"context\":[{\"line\":420,\"text\":\"\\t\\t$userPrivacy = $visitor->getRelationOrDefault('Privacy');\"},{\"line\":421,\"text\":\"\\t\\t$form->setupEntityInput($userPrivacy, $input['privacy']);\"},{\"line\":422,\"text\":\"\"},{\"line\":423,\"text\":\"\\t\\t$form->complete(function () use ($visitor)\"},{\"line\":424,\"text\":\"\\t\\t{\"},{\"line\":425,\"text\":\"\\t\\t\\t$ipRepo = $this->repository(IpRepository::class);\"}],\"line\":421,\"text\":\"\\t\\t$form->setupEntityInput($userPrivacy, $input['privacy']);\"},{\"context\":[{\"line\":425,\"text\":\"\\t\\t\\t$ipRepo = $this->repository(IpRepository::class);\"},{\"line\":426,\"text\":\"\\t\\t\\t$ipRepo->logIp($visitor->user_id, $this->request->getIp(), 'user', $visitor->user_id, 'privacy_edit');\"},{\"line\":427,\"text\":\"\\t\\t});\"},{\"line\":428,\"text\":\"\"},{\"line\":429,\"text\":\"\\t\\treturn $form;\"},{\"line\":430,\"text\":\"\\t}\"}],\"line\":426,\"text\":\"\\t\\t\\t$ipRepo->logIp($visitor->user_id, $this->request->getIp(), 'user', $visitor->user_id, 'privacy_edit');\"},{\"context\":[{\"line\":431,\"text\":\"\"},{\"line\":432,\"text\":\"\\tpublic function actionPreferences()\"},{\"line\":433,\"text\":\"\\t{\"},{\"line\":434,\"text\":\"\\t\\tif ($this->isPost())\"},{\"line\":435,\"text\":\"\\t\\t{\"},{\"line\":436,\"text\":\"\\t\\t\\t$this->preferencesSaveProcess(\\\\XF::visitor())->run();\"}],\"line\":432,\"text\":\"\\tpublic function actionPreferences()\"},{\"context\":[{\"line\":435,\"text\":\"\\t\\t{\"},{\"line\":436,\"text\":\"\\t\\t\\t$this->preferencesSaveProcess(\\\\XF::visitor())->run();\"},{\"line\":437,\"text\":\"\\t\\t\\treturn $this->redirect($this->buildLink('account/preferences'));\"},{\"line\":438,\"text\":\"\\t\\t}\"},{\"line\":439,\"text\":\"\\t\\telse\"},{\"line\":440,\"text\":\"\\t\\t{\"}],\"line\":436,\"text\":\"\\t\\t\\t$this->preferencesSaveProcess(\\\\XF::visitor())->run();\"},{\"context\":[{\"line\":436,\"text\":\"\\t\\t\\t$this->preferencesSaveProcess(\\\\XF::visitor())->run();\"},{\"line\":437,\"text\":\"\\t\\t\\treturn $this->redirect($this->buildLink('account/preferences'));\"},{\"line\":438,\"text\":\"\\t\\t}\"},{\"line\":439,\"text\":\"\\t\\telse\"},{\"line\":440,\"text\":\"\\t\\t{\"},{\"line\":441,\"text\":\"\\t\\t\\t$styles = $this->repository(StyleRepository::class)->getUserSelectableStyles();\"}],\"line\":437,\"text\":\"\\t\\t\\treturn $this->redirect($this->buildLink('account/preferences'));\"},{\"context\":[{\"line\":447,\"text\":\"\"},{\"line\":448,\"text\":\"\\t\\t\\t$alertRepo = $this->repository(UserAlertRepository::class);\"},{\"line\":449,\"text\":\"\"},{\"line\":450,\"text\":\"\\t\\t\\t$viewParams = [\"},{\"line\":451,\"text\":\"\\t\\t\\t\\t'styles' => $styles,\"},{\"line\":452,\"text\":\"\\t\\t\\t\\t'defaultStyle' => $styles[$this->app->options()->defaultStyleId] ?? [],\"}],\"line\":448,\"text\":\"\\t\\t\\t$alertRepo = $this->repository(UserAlertRepository::class);\"},{\"context\":[{\"line\":457,\"text\":\"\"},{\"line\":458,\"text\":\"\\t\\t\\t\\t'alertOptOuts' => $alertRepo->getAlertOptOuts(),\"},{\"line\":459,\"text\":\"\\t\\t\\t];\"},{\"line\":460,\"text\":\"\"},{\"line\":461,\"text\":\"\\t\\t\\t$view = $this->view('XF:Account\\\\Preferences', 'account_preferences', $viewParams);\"},{\"line\":462,\"text\":\"\\t\\t\\treturn $this->addAccountWrapperParams($view, 'preferences');\"}],\"line\":458,\"text\":\"\\t\\t\\t\\t'alertOptOuts' => $alertRepo->getAlertOptOuts(),\"},{\"context\":[{\"line\":460,\"text\":\"\"},{\"line\":461,\"text\":\"\\t\\t\\t$view = $this->view('XF:Account\\\\Preferences', 'account_preferences', $viewParams);\"},{\"line\":462,\"text\":\"\\t\\t\\treturn $this->addAccountWrapperParams($view, 'preferences');\"},{\"line\":463,\"text\":\"\\t\\t}\"},{\"line\":464,\"text\":\"\\t}\"},{\"line\":465,\"text\":\"\"}],\"line\":461,\"text\":\"\\t\\t\\t$view = $this->view('XF:Account\\\\Preferences', 'account_preferences', $viewParams);\"},{\"context\":[{\"line\":461,\"text\":\"\\t\\t\\t$view = $this->view('XF:Account\\\\Preferences', 'account_preferences', $viewParams);\"},{\"line\":462,\"text\":\"\\t\\t\\treturn $this->addAccountWrapperParams($view, 'preferences');\"},{\"line\":463,\"text\":\"\\t\\t}\"},{\"line\":464,\"text\":\"\\t}\"},{\"line\":465,\"text\":\"\"},{\"line\":466,\"text\":\"\\tprotected function preferencesSaveProcess(User $visitor)\"}],\"line\":462,\"text\":\"\\t\\t\\treturn $this->addAccountWrapperParams($view, 'preferences');\"},{\"context\":[{\"line\":465,\"text\":\"\"},{\"line\":466,\"text\":\"\\tprotected function preferencesSaveProcess(User $visitor)\"},{\"line\":467,\"text\":\"\\t{\"},{\"line\":468,\"text\":\"\\t\\t$form = $this->formAction();\"},{\"line\":469,\"text\":\"\"},{\"line\":470,\"text\":\"\\t\\t$input = $this->filter([\"}],\"line\":466,\"text\":\"\\tprotected function preferencesSaveProcess(User $visitor)\"},{\"context\":[{\"line\":484,\"text\":\"\\t\\t\\t\\t'email_on_conversation' => 'bool',\"},{\"line\":485,\"text\":\"\\t\\t\\t\\t'push_on_conversation' => 'bool',\"},{\"line\":486,\"text\":\"\\t\\t\\t],\"},{\"line\":487,\"text\":\"\\t\\t\\t'moderator' => [\"},{\"line\":488,\"text\":\"\\t\\t\\t\\t'notify_report' => 'bool',\"},{\"line\":489,\"text\":\"\\t\\t\\t\\t'notify_approval' => 'bool',\"}],\"line\":485,\"text\":\"\\t\\t\\t\\t'push_on_conversation' => 'bool',\"},{\"context\":[{\"line\":494,\"text\":\"\"},{\"line\":495,\"text\":\"\\t\\t$alertRepo = $this->repository(UserAlertRepository::class);\"},{\"line\":496,\"text\":\"\\t\\t$optOutActions = $alertRepo->getAlertOptOutActions();\"},{\"line\":497,\"text\":\"\\t\\t$alert = $this->filter('alert', 'array-bool');\"},{\"line\":498,\"text\":\"\\t\\t$push = $this->filter('push', 'array-bool');\"},{\"line\":499,\"text\":\"\\t\\t$pushShown = $this->filter('push_shown', 'array-bool');\"}],\"line\":495,\"text\":\"\\t\\t$alertRepo = $this->repository(UserAlertRepository::class);\"},{\"context\":[{\"line\":495,\"text\":\"\\t\\t$alertRepo = $this->repository(UserAlertRepository::class);\"},{\"line\":496,\"text\":\"\\t\\t$optOutActions = $alertRepo->getAlertOptOutActions();\"},{\"line\":497,\"text\":\"\\t\\t$alert = $this->filter('alert', 'array-bool');\"},{\"line\":498,\"text\":\"\\t\\t$push = $this->filter('push', 'array-bool');\"},{\"line\":499,\"text\":\"\\t\\t$pushShown = $this->filter('push_shown', 'array-bool');\"},{\"line\":500,\"text\":\"\"}],\"line\":496,\"text\":\"\\t\\t$optOutActions = $alertRepo->getAlertOptOutActions();\"},{\"context\":[{\"line\":496,\"text\":\"\\t\\t$optOutActions = $alertRepo->getAlertOptOutActions();\"},{\"line\":497,\"text\":\"\\t\\t$alert = $this->filter('alert', 'array-bool');\"},{\"line\":498,\"text\":\"\\t\\t$push = $this->filter('push', 'array-bool');\"},{\"line\":499,\"text\":\"\\t\\t$pushShown = $this->filter('push_shown', 'array-bool');\"},{\"line\":500,\"text\":\"\"},{\"line\":501,\"text\":\"\\t\\t$alertOptOuts = [];\"}],\"line\":497,\"text\":\"\\t\\t$alert = $this->filter('alert', 'array-bool');\"},{\"context\":[{\"line\":497,\"text\":\"\\t\\t$alert = $this->filter('alert', 'array-bool');\"},{\"line\":498,\"text\":\"\\t\\t$push = $this->filter('push', 'array-bool');\"},{\"line\":499,\"text\":\"\\t\\t$pushShown = $this->filter('push_shown', 'array-bool');\"},{\"line\":500,\"text\":\"\"},{\"line\":501,\"text\":\"\\t\\t$alertOptOuts = [];\"},{\"line\":502,\"text\":\"\\t\\t$pushOptOuts = [];\"}],\"line\":498,\"text\":\"\\t\\t$push = $this->filter('push', 'array-bool');\"},{\"context\":[{\"line\":498,\"text\":\"\\t\\t$push = $this->filter('push', 'array-bool');\"},{\"line\":499,\"text\":\"\\t\\t$pushShown = $this->filter('push_shown', 'array-bool');\"},{\"line\":500,\"text\":\"\"},{\"line\":501,\"text\":\"\\t\\t$alertOptOuts = [];\"},{\"line\":502,\"text\":\"\\t\\t$pushOptOuts = [];\"},{\"line\":503,\"text\":\"\\t\\tforeach (array_keys($optOutActions) AS $optOut)\"}],\"line\":499,\"text\":\"\\t\\t$pushShown = $this->filter('push_shown', 'array-bool');\"},{\"context\":[{\"line\":500,\"text\":\"\"},{\"line\":501,\"text\":\"\\t\\t$alertOptOuts = [];\"},{\"line\":502,\"text\":\"\\t\\t$pushOptOuts = [];\"},{\"line\":503,\"text\":\"\\t\\tforeach (array_keys($optOutActions) AS $optOut)\"},{\"line\":504,\"text\":\"\\t\\t{\"},{\"line\":505,\"text\":\"\\t\\t\\tif (empty($alert[$optOut]))\"}],\"line\":501,\"text\":\"\\t\\t$alertOptOuts = [];\"},{\"context\":[{\"line\":501,\"text\":\"\\t\\t$alertOptOuts = [];\"},{\"line\":502,\"text\":\"\\t\\t$pushOptOuts = [];\"},{\"line\":503,\"text\":\"\\t\\tforeach (array_keys($optOutActions) AS $optOut)\"},{\"line\":504,\"text\":\"\\t\\t{\"},{\"line\":505,\"text\":\"\\t\\t\\tif (empty($alert[$optOut]))\"},{\"line\":506,\"text\":\"\\t\\t\\t{\"}],\"line\":502,\"text\":\"\\t\\t$pushOptOuts = [];\"},{\"context\":[{\"line\":504,\"text\":\"\\t\\t{\"},{\"line\":505,\"text\":\"\\t\\t\\tif (empty($alert[$optOut]))\"},{\"line\":506,\"text\":\"\\t\\t\\t{\"},{\"line\":507,\"text\":\"\\t\\t\\t\\t$alertOptOuts[$optOut] = $optOut;\"},{\"line\":508,\"text\":\"\\t\\t\\t}\"},{\"line\":509,\"text\":\"\\t\\t\\tif (empty($push[$optOut]) && isset($pushShown[$optOut]))\"}],\"line\":505,\"text\":\"\\t\\t\\tif (empty($alert[$optOut]))\"},{\"context\":[{\"line\":506,\"text\":\"\\t\\t\\t{\"},{\"line\":507,\"text\":\"\\t\\t\\t\\t$alertOptOuts[$optOut] = $optOut;\"},{\"line\":508,\"text\":\"\\t\\t\\t}\"},{\"line\":509,\"text\":\"\\t\\t\\tif (empty($push[$optOut]) && isset($pushShown[$optOut]))\"},{\"line\":510,\"text\":\"\\t\\t\\t{\"},{\"line\":511,\"text\":\"\\t\\t\\t\\t$pushOptOuts[$optOut] = $optOut;\"}],\"line\":507,\"text\":\"\\t\\t\\t\\t$alertOptOuts[$optOut] = $optOut;\"},{\"context\":[{\"line\":508,\"text\":\"\\t\\t\\t}\"},{\"line\":509,\"text\":\"\\t\\t\\tif (empty($push[$optOut]) && isset($pushShown[$optOut]))\"},{\"line\":510,\"text\":\"\\t\\t\\t{\"},{\"line\":511,\"text\":\"\\t\\t\\t\\t$pushOptOuts[$optOut] = $optOut;\"},{\"line\":512,\"text\":\"\\t\\t\\t}\"},{\"line\":513,\"text\":\"\\t\\t}\"}],\"line\":509,\"text\":\"\\t\\t\\tif (empty($push[$optOut]) && isset($pushShown[$optOut]))\"},{\"context\":[{\"line\":510,\"text\":\"\\t\\t\\t{\"},{\"line\":511,\"text\":\"\\t\\t\\t\\t$pushOptOuts[$optOut] = $optOut;\"},{\"line\":512,\"text\":\"\\t\\t\\t}\"},{\"line\":513,\"text\":\"\\t\\t}\"},{\"line\":514,\"text\":\"\"},{\"line\":515,\"text\":\"\\t\\t$input['option']['alert_optout'] = $alertOptOuts;\"}],\"line\":511,\"text\":\"\\t\\t\\t\\t$pushOptOuts[$optOut] = $optOut;\"},{\"context\":[{\"line\":514,\"text\":\"\"},{\"line\":515,\"text\":\"\\t\\t$input['option']['alert_optout'] = $alertOptOuts;\"},{\"line\":516,\"text\":\"\"},{\"line\":517,\"text\":\"\\t\\tif ($visitor->canUsePushNotifications())\"},{\"line\":518,\"text\":\"\\t\\t{\"},{\"line\":519,\"text\":\"\\t\\t\\t$input['option']['push_optout'] = $pushOptOuts;\"}],\"line\":515,\"text\":\"\\t\\t$input['option']['alert_optout'] = $alertOptOuts;\"},{\"context\":[{\"line\":516,\"text\":\"\"},{\"line\":517,\"text\":\"\\t\\tif ($visitor->canUsePushNotifications())\"},{\"line\":518,\"text\":\"\\t\\t{\"},{\"line\":519,\"text\":\"\\t\\t\\t$input['option']['push_optout'] = $pushOptOuts;\"},{\"line\":520,\"text\":\"\\t\\t}\"},{\"line\":521,\"text\":\"\"}],\"line\":517,\"text\":\"\\t\\tif ($visitor->canUsePushNotifications())\"},{\"context\":[{\"line\":518,\"text\":\"\\t\\t{\"},{\"line\":519,\"text\":\"\\t\\t\\t$input['option']['push_optout'] = $pushOptOuts;\"},{\"line\":520,\"text\":\"\\t\\t}\"},{\"line\":521,\"text\":\"\"},{\"line\":522,\"text\":\"\\t\\t$form->setup(function () use ($visitor, $input)\"},{\"line\":523,\"text\":\"\\t\\t{\"}],\"line\":519,\"text\":\"\\t\\t\\t$input['option']['push_optout'] = $pushOptOuts;\"},{\"context\":[{\"line\":542,\"text\":\"\"},{\"line\":543,\"text\":\"\\t\\t$this->customFieldsSaveProcess($form, 'preferences');\"},{\"line\":544,\"text\":\"\"},{\"line\":545,\"text\":\"\\t\\t$form->apply(function () use ($input, $visitor)\"},{\"line\":546,\"text\":\"\\t\\t{\"},{\"line\":547,\"text\":\"\\t\\t\\tif ($input['restore_notices'])\"}],\"line\":543,\"text\":\"\\t\\t$this->customFieldsSaveProcess($form, 'preferences');\"},{\"context\":[{\"line\":555,\"text\":\"\\t\\t\\t$ipRepo = $this->repository(IpRepository::class);\"},{\"line\":556,\"text\":\"\\t\\t\\t$ipRepo->logIp($visitor->user_id, $this->request->getIp(), 'user', $visitor->user_id, 'preferences_edit');\"},{\"line\":557,\"text\":\"\\t\\t});\"},{\"line\":558,\"text\":\"\"},{\"line\":559,\"text\":\"\\t\\treturn $form;\"},{\"line\":560,\"text\":\"\\t}\"}],\"line\":556,\"text\":\"\\t\\t\\t$ipRepo->logIp($visitor->user_id, $this->request->getIp(), 'user', $visitor->user_id, 'preferences_edit');\"},{\"context\":[{\"line\":561,\"text\":\"\"},{\"line\":562,\"text\":\"\\tpublic function actionDismissNotice()\"},{\"line\":563,\"text\":\"\\t{\"},{\"line\":564,\"text\":\"\\t\\t/** @var Notice $notice */\"},{\"line\":565,\"text\":\"\\t\\t$notice = $this->assertRecordExists(Notice::class, $this->filter('notice_id', 'uint'));\"},{\"line\":566,\"text\":\"\"}],\"line\":562,\"text\":\"\\tpublic function actionDismissNotice()\"},{\"context\":[{\"line\":583,\"text\":\"\"},{\"line\":584,\"text\":\"\\tpublic function actionAvatar()\"},{\"line\":585,\"text\":\"\\t{\"},{\"line\":586,\"text\":\"\\t\\t$visitor = \\\\XF::visitor();\"},{\"line\":587,\"text\":\"\\t\\tif (!$visitor->canUploadAvatar())\"},{\"line\":588,\"text\":\"\\t\\t{\"}],\"line\":584,\"text\":\"\\tpublic function actionAvatar()\"},{\"context\":[{\"line\":685,\"text\":\"\"},{\"line\":686,\"text\":\"\\tpublic function actionBanner()\"},{\"line\":687,\"text\":\"\\t{\"},{\"line\":688,\"text\":\"\\t\\t$visitor = \\\\XF::visitor();\"},{\"line\":689,\"text\":\"\\t\\tif (!$visitor->canUploadProfileBanner())\"},{\"line\":690,\"text\":\"\\t\\t{\"}],\"line\":686,\"text\":\"\\tpublic function actionBanner()\"},{\"context\":[{\"line\":747,\"text\":\"\"},{\"line\":748,\"text\":\"\\tpublic function actionFollowing()\"},{\"line\":749,\"text\":\"\\t{\"},{\"line\":750,\"text\":\"\\t\\t$followingUsers = [];\"},{\"line\":751,\"text\":\"\\t\\t$visitor = \\\\XF::visitor();\"},{\"line\":752,\"text\":\"\\t\\tif ($following = $visitor->Profile->following)\"}],\"line\":748,\"text\":\"\\tpublic function actionFollowing()\"},{\"context\":[{\"line\":766,\"text\":\"\"},{\"line\":767,\"text\":\"\\tpublic function actionIgnored()\"},{\"line\":768,\"text\":\"\\t{\"},{\"line\":769,\"text\":\"\\t\\t$visitor = \\\\XF::visitor();\"},{\"line\":770,\"text\":\"\\t\\tif ($ignored = $visitor->Profile->ignored)\"},{\"line\":771,\"text\":\"\\t\\t{\"}],\"line\":767,\"text\":\"\\tpublic function actionIgnored()\"},{\"context\":[{\"line\":788,\"text\":\"\"},{\"line\":789,\"text\":\"\\tpublic function actionReactions()\"},{\"line\":790,\"text\":\"\\t{\"},{\"line\":791,\"text\":\"\\t\\t$this->assertNotEmbeddedImageRequest();\"},{\"line\":792,\"text\":\"\"},{\"line\":793,\"text\":\"\\t\\t$visitor = \\\\XF::visitor();\"}],\"line\":789,\"text\":\"\\tpublic function actionReactions()\"},{\"context\":[{\"line\":844,\"text\":\"\"},{\"line\":845,\"text\":\"\\tpublic function actionSecurity()\"},{\"line\":846,\"text\":\"\\t{\"},{\"line\":847,\"text\":\"\\t\\t$visitor = \\\\XF::visitor();\"},{\"line\":848,\"text\":\"\\t\\t$auth = $visitor->Auth->getAuthenticationHandler();\"},{\"line\":849,\"text\":\"\\t\\tif (!$auth)\"}],\"line\":845,\"text\":\"\\tpublic function actionSecurity()\"},{\"context\":[{\"line\":937,\"text\":\"\"},{\"line\":938,\"text\":\"\\tpublic function actionPasskeyAdd()\"},{\"line\":939,\"text\":\"\\t{\"},{\"line\":940,\"text\":\"\\t\\tif (!$this->request->isSecure() && !$this->request->isHostLocal())\"},{\"line\":941,\"text\":\"\\t\\t{\"},{\"line\":942,\"text\":\"\\t\\t\\treturn $this->notFound();\"}],\"line\":938,\"text\":\"\\tpublic function actionPasskeyAdd()\"},{\"context\":[{\"line\":989,\"text\":\"\"},{\"line\":990,\"text\":\"\\tpublic function actionPasskeyEdit(ParameterBag $params)\"},{\"line\":991,\"text\":\"\\t{\"},{\"line\":992,\"text\":\"\\t\\t$this->assertPasswordVerified(3600);\"},{\"line\":993,\"text\":\"\"},{\"line\":994,\"text\":\"\\t\\t$passkey = $this->assertPasskeyExists($params->passkey_id);\"}],\"line\":990,\"text\":\"\\tpublic function actionPasskeyEdit(ParameterBag $params)\"},{\"context\":[{\"line\":1016,\"text\":\"\"},{\"line\":1017,\"text\":\"\\tpublic function actionPasskeyDelete(ParameterBag $params)\"},{\"line\":1018,\"text\":\"\\t{\"},{\"line\":1019,\"text\":\"\\t\\t$this->assertPasswordVerified(3600);\"},{\"line\":1020,\"text\":\"\"},{\"line\":1021,\"text\":\"\\t\\t$passkey = $this->assertPasskeyExists($params->passkey_id);\"}],\"line\":1017,\"text\":\"\\tpublic function actionPasskeyDelete(ParameterBag $params)\"},{\"context\":[{\"line\":1036,\"text\":\"\"},{\"line\":1037,\"text\":\"\\tpublic function actionConnectedAccount()\"},{\"line\":1038,\"text\":\"\\t{\"},{\"line\":1039,\"text\":\"\\t\\t$visitor = \\\\XF::visitor();\"},{\"line\":1040,\"text\":\"\\t\\t$auth = $visitor->Auth->getAuthenticationHandler();\"},{\"line\":1041,\"text\":\"\"}],\"line\":1037,\"text\":\"\\tpublic function actionConnectedAccount()\"},{\"context\":[{\"line\":1051,\"text\":\"\"},{\"line\":1052,\"text\":\"\\tpublic function actionConnectedAccountDisassociate(ParameterBag $params)\"},{\"line\":1053,\"text\":\"\\t{\"},{\"line\":1054,\"text\":\"\\t\\t$this->assertPostOnly();\"},{\"line\":1055,\"text\":\"\"},{\"line\":1056,\"text\":\"\\t\\t$visitor = \\\\XF::visitor();\"}],\"line\":1052,\"text\":\"\\tpublic function actionConnectedAccountDisassociate(ParameterBag $params)\"},{\"context\":[{\"line\":1105,\"text\":\"\"},{\"line\":1106,\"text\":\"\\tpublic function actionRequestPassword()\"},{\"line\":1107,\"text\":\"\\t{\"},{\"line\":1108,\"text\":\"\\t\\t$visitor = \\\\XF::visitor();\"},{\"line\":1109,\"text\":\"\\t\\t$auth = $visitor->Auth->getAuthenticationHandler();\"},{\"line\":1110,\"text\":\"\\t\\tif (!$auth)\"}],\"line\":1106,\"text\":\"\\tpublic function actionRequestPassword()\"},{\"context\":[{\"line\":1138,\"text\":\"\"},{\"line\":1139,\"text\":\"\\tpublic function actionTwoStep()\"},{\"line\":1140,\"text\":\"\\t{\"},{\"line\":1141,\"text\":\"\\t\\t$this->assertTfaEnabled();\"},{\"line\":1142,\"text\":\"\\t\\t$this->assertTwoStepPasswordVerified();\"},{\"line\":1143,\"text\":\"\"}],\"line\":1139,\"text\":\"\\tpublic function actionTwoStep()\"},{\"context\":[{\"line\":1176,\"text\":\"\"},{\"line\":1177,\"text\":\"\\tpublic function actionTwoStepBackupCodes()\"},{\"line\":1178,\"text\":\"\\t{\"},{\"line\":1179,\"text\":\"\\t\\t$this->assertTfaEnabled();\"},{\"line\":1180,\"text\":\"\\t\\t$this->assertTwoStepPasswordVerified();\"},{\"line\":1181,\"text\":\"\"}],\"line\":1177,\"text\":\"\\tpublic function actionTwoStepBackupCodes()\"},{\"context\":[{\"line\":1203,\"text\":\"\"},{\"line\":1204,\"text\":\"\\tpublic function actionTwoStepAdd(ParameterBag $params)\"},{\"line\":1205,\"text\":\"\\t{\"},{\"line\":1206,\"text\":\"\\t\\t$this->assertTfaEnabled();\"},{\"line\":1207,\"text\":\"\\t\\t$this->assertTwoStepPasswordVerified();\"},{\"line\":1208,\"text\":\"\\t\\t$this->assertPostOnly();\"}],\"line\":1204,\"text\":\"\\tpublic function actionTwoStepAdd(ParameterBag $params)\"},{\"context\":[{\"line\":1287,\"text\":\"\"},{\"line\":1288,\"text\":\"\\tpublic function actionTwoStepEnable(ParameterBag $params)\"},{\"line\":1289,\"text\":\"\\t{\"},{\"line\":1290,\"text\":\"\\t\\t$this->assertTfaEnabled();\"},{\"line\":1291,\"text\":\"\\t\\t$this->assertTwoStepPasswordVerified();\"},{\"line\":1292,\"text\":\"\\t\\t$this->assertPostOnly();\"}],\"line\":1288,\"text\":\"\\tpublic function actionTwoStepEnable(ParameterBag $params)\"},{\"context\":[{\"line\":1368,\"text\":\"\"},{\"line\":1369,\"text\":\"\\tpublic function actionTwoStepDisable(ParameterBag $params)\"},{\"line\":1370,\"text\":\"\\t{\"},{\"line\":1371,\"text\":\"\\t\\t$this->assertTfaEnabled();\"},{\"line\":1372,\"text\":\"\\t\\t$this->assertTwoStepPasswordVerified();\"},{\"line\":1373,\"text\":\"\"}],\"line\":1369,\"text\":\"\\tpublic function actionTwoStepDisable(ParameterBag $params)\"}],\"path\":\"/var/www/forums/newfi/public/src/XF/Pub/Controller/AccountController.php\",\"present\":true,\"sha256\":\"73e755ef485d737f1a74e576827af1a127ec95c153f3a818eb20b344f5243270\"}},\"controller_scan\":[\"src/XF/Pub/Controller/AccountConfirmationController.php\",\"src/XF/Pub/Controller/AccountController.php\"],\"exact\":{\"abstract_handler\":{\"bytes\":4761,\"matches\":[{\"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\":69,\"text\":\"\\t * @param string $action\"}],\"line\":63,\"text\":\"\\tpublic function getPushTemplateName($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\":79,\"text\":\"\\t * @param string $action\"}],\"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\":95,\"text\":\"\"}],\"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\":115,\"text\":\"\\t\\t\\t{\"}],\"line\":109,\"text\":\"\\tpublic function render(UserAlert $alert, ?Entity $content = null)\"},{\"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\":148,\"text\":\"\\t\\t\\treturn null;\"}],\"line\":142,\"text\":\"\\tpublic function getApiOutput(UserAlert $alert)\"},{\"context\":[{\"line\":192,\"text\":\"\\t * @return T|AbstractCollection<T>\"},{\"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\":200,\"text\":\"\\t * @return string\"}],\"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\":208,\"text\":\"\\t * An array of alert actions which can be opted out of for this type.\"}],\"line\":202,\"text\":\"\\tpublic function getContentType()\"},{\"context\":[{\"line\":210,\"text\":\"\\t * @return list<string>\"},{\"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\":218,\"text\":\"\\t * The display order of this type's alert opt outs.\"}],\"line\":212,\"text\":\"\\tpublic function getOptOutActions()\"}],\"path\":\"/var/www/forums/newfi/public/src/XF/Alert/AbstractHandler.php\",\"present\":true,\"sha256\":\"1d48488be1e561809a8d53ea9f43a3de2f04e70c5cc7c7e9a334fe12abcd2992\"},\"post_handler\":{\"bytes\":504,\"matches\":[{\"context\":[{\"line\":6,\"text\":\" * @extends AbstractHandler<\\\\XF\\\\Entity\\\\Post>\"},{\"line\":7,\"text\":\" */\"},{\"line\":8,\"text\":\"class PostHandler extends AbstractHandler\"},{\"line\":9,\"text\":\"{\"},{\"line\":10,\"text\":\"\\tpublic function getEntityWith()\"},{\"line\":11,\"text\":\"\\t{\"},{\"line\":12,\"text\":\"\\t\\t$visitor = \\\\XF::visitor();\"},{\"line\":13,\"text\":\"\"},{\"line\":14,\"text\":\"\\t\\treturn ['Thread', 'Thread.Forum', 'Thread.Forum.Node.Permissions|' . $visitor->permission_combination_id];\"}],\"line\":8,\"text\":\"class PostHandler extends AbstractHandler\"},{\"context\":[{\"line\":8,\"text\":\"class PostHandler extends AbstractHandler\"},{\"line\":9,\"text\":\"{\"},{\"line\":10,\"text\":\"\\tpublic function getEntityWith()\"},{\"line\":11,\"text\":\"\\t{\"},{\"line\":12,\"text\":\"\\t\\t$visitor = \\\\XF::visitor();\"},{\"line\":13,\"text\":\"\"},{\"line\":14,\"text\":\"\\t\\treturn ['Thread', 'Thread.Forum', 'Thread.Forum.Node.Permissions|' . $visitor->permission_combination_id];\"},{\"line\":15,\"text\":\"\\t}\"},{\"line\":16,\"text\":\"\"}],\"line\":10,\"text\":\"\\tpublic function getEntityWith()\"},{\"context\":[{\"line\":15,\"text\":\"\\t}\"},{\"line\":16,\"text\":\"\"},{\"line\":17,\"text\":\"\\tpublic function getOptOutActions()\"},{\"line\":18,\"text\":\"\\t{\"},{\"line\":19,\"text\":\"\\t\\treturn [\"},{\"line\":20,\"text\":\"\\t\\t\\t'forumwatch_insert',\"},{\"line\":21,\"text\":\"\\t\\t\\t'insert',\"},{\"line\":22,\"text\":\"\\t\\t\\t'quote',\"},{\"line\":23,\"text\":\"\\t\\t\\t'mention',\"}],\"line\":17,\"text\":\"\\tpublic function getOptOutActions()\"},{\"context\":[{\"line\":26,\"text\":\"\\t}\"},{\"line\":27,\"text\":\"\"},{\"line\":28,\"text\":\"\\tpublic function getOptOutDisplayOrder()\"},{\"line\":29,\"text\":\"\\t{\"},{\"line\":30,\"text\":\"\\t\\treturn 100;\"},{\"line\":31,\"text\":\"\\t}\"},{\"line\":32,\"text\":\"}\"}],\"line\":28,\"text\":\"\\tpublic function getOptOutDisplayOrder()\"}],\"path\":\"/var/www/forums/newfi/public/src/XF/Alert/PostHandler.php\",\"present\":true,\"sha256\":\"d74153b3b727580b34214db2d787695b04d7969a2f251d3575f5fad1389013b1\"},\"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\":46,\"text\":\"\"}],\"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\":91,\"text\":\"\"}],\"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\":102,\"text\":\"\\t\\treturn\"}],\"line\":96,\"text\":\"\\t\\tdata = event.data.json()\"},{\"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\":107,\"text\":\"\\t\\tconsole.warn('Received push notification but no payload data or required fields missing.', data)\"}],\"line\":101,\"text\":\"\\t\\tconsole.warn('Received data:', event.data.text())\"},{\"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\":131,\"text\":\"\\t\\tif (newCount)\"}],\"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\":150,\"text\":\"\\tif (!url)\"}],\"line\":144,\"text\":\"self.addEventListener('notificationclick', event =>\"},{\"context\":[{\"line\":147,\"text\":\"\\tnotification.close()\"},{\"line\":148,\"text\":\"\"},{\"line\":149,\"text\":\"\\tconst url = notification.data.url\"},{\"line\":150,\"text\":\"\\tif (!url)\"},{\"line\":151,\"text\":\"\\t{\"},{\"line\":152,\"text\":\"\\t\\treturn\"},{\"line\":153,\"text\":\"\\t}\"},{\"line\":154,\"text\":\"\"},{\"line\":155,\"text\":\"\\tconst urlToOpen = new URL(url, self.location.origin).href\"}],\"line\":149,\"text\":\"\\tconst url = notification.data.url\"}],\"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\":22,\"text\":\" * @property bool $auto_read\"}],\"line\":16,\"text\":\" * @property string $content_type\"},{\"context\":[{\"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\":22,\"text\":\" * @property bool $auto_read\"},{\"line\":23,\"text\":\" * @property array|null $extra_data\"}],\"line\":17,\"text\":\" * @property int $content_id\"},{\"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\":24,\"text\":\" * @property string $depends_on_addon_id\"}],\"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\":29,\"text\":\" * RELATIONS\"}],\"line\":23,\"text\":\" * @property array|null $extra_data\"},{\"context\":[{\"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\":29,\"text\":\" * RELATIONS\"},{\"line\":30,\"text\":\" * @property-read User|null $User\"}],\"line\":24,\"text\":\" * @property string $depends_on_addon_id\"},{\"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\":57,\"text\":\"\\t * @return Entity|null\"}],\"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\":59,\"text\":\"\\tpublic function getContent()\"}],\"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\":65,\"text\":\"\\tpublic function setContent(?Entity $content = null)\"}],\"line\":59,\"text\":\"\\tpublic function getContent()\"},{\"context\":[{\"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\":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\":62,\"text\":\"\\t\\treturn $handler ? $handler->getContent($this->content_id) : 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\":76,\"text\":\"\\tpublic function isAlertRenderable()\"}],\"line\":70,\"text\":\"\\tpublic function render()\"},{\"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\":217,\"text\":\"\\t\\t\\t'alert_id' => ['type' => self::UINT, 'autoIncrement' => true, 'nullable' => true],\"}],\"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\":227,\"text\":\"\\t\\t\\t'auto_read' => ['type' => self::BOOL, 'default' => true, 'api' => true],\"}],\"line\":221,\"text\":\"\\t\\t\\t'content_type' => ['type' => self::STR, 'maxLength' => 25, 'required' => true, 'api' => true],\"},{\"context\":[{\"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\":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\":222,\"text\":\"\\t\\t\\t'content_id' => ['type' => self::UINT, '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\":229,\"text\":\"\\t\\t\\t'depends_on_addon_id' => ['type' => self::BINARY, 'maxLength' => 50, '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\":234,\"text\":\"\\t\\t$structure->relations = [\"}],\"line\":228,\"text\":\"\\t\\t\\t'extra_data' => ['type' => self::JSON_ARRAY, 'default' => []],\"},{\"context\":[{\"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\":234,\"text\":\"\\t\\t$structure->relations = [\"},{\"line\":235,\"text\":\"\\t\\t\\t'User' => [\"}],\"line\":229,\"text\":\"\\t\\t\\t'depends_on_addon_id' => ['type' => self::BINARY, 'maxLength' => 50, 'default' => ''],\"},{\"context\":[{\"line\":249,\"text\":\"\\t\\t\\t\\t'entity' => 'XF:AddOn',\"},{\"line\":250,\"text\":\"\\t\\t\\t\\t'type' => self::TO_ONE,\"},{\"line\":251,\"text\":\"\\t\\t\\t\\t'conditions' => [['addon_id', '=', '$depends_on_addon_id']],\"},{\"line\":252,\"text\":\"\\t\\t\\t\\t'primary' => true,\"},{\"line\":253,\"text\":\"\\t\\t\\t],\"},{\"line\":254,\"text\":\"\\t\\t];\"},{\"line\":255,\"text\":\"\\t\\t$structure->options = [\"},{\"line\":256,\"text\":\"\\t\\t\\t'force_unread_in_ui' => false,\"},{\"line\":257,\"text\":\"\\t\\t];\"}],\"line\":251,\"text\":\"\\t\\t\\t\\t'conditions' => [['addon_id', '=', '$depends_on_addon_id']],\"}],\"path\":\"/var/www/forums/newfi/public/src/XF/Entity/UserAlert.php\",\"present\":true,\"sha256\":\"a749d5470269ec4fa9cc9fe419b9e4446208d8914e905ce5d8442292494a5cd2\"},\"user_alert_repo\":{\"bytes\":21675,\"matches\":[{\"context\":[{\"line\":12,\"text\":\"use XF\\\\Mvc\\\\Entity\\\\Finder;\"},{\"line\":13,\"text\":\"use XF\\\\Mvc\\\\Entity\\\\Repository;\"},{\"line\":14,\"text\":\"use XF\\\\Service\\\\Alert\\\\PusherService;\"},{\"line\":15,\"text\":\"\"},{\"line\":16,\"text\":\"use function count, is_array;\"},{\"line\":17,\"text\":\"\"},{\"line\":18,\"text\":\"class UserAlertRepository extends Repository\"},{\"line\":19,\"text\":\"{\"},{\"line\":20,\"text\":\"\\t/**\"}],\"line\":14,\"text\":\"use XF\\\\Service\\\\Alert\\\\PusherService;\"},{\"context\":[{\"line\":24,\"text\":\"\\t * @return UserAlertFinder\"},{\"line\":25,\"text\":\"\\t */\"},{\"line\":26,\"text\":\"\\tpublic function findAlertsForUser($userId, $cutOff = null)\"},{\"line\":27,\"text\":\"\\t{\"},{\"line\":28,\"text\":\"\\t\\t$finder = $this->finder(UserAlertFinder::class)\"},{\"line\":29,\"text\":\"\\t\\t\\t->where('alerted_user_id', $userId)\"},{\"line\":30,\"text\":\"\\t\\t\\t->whereAddOnActive([\"},{\"line\":31,\"text\":\"\\t\\t\\t\\t'column' => 'depends_on_addon_id',\"},{\"line\":32,\"text\":\"\\t\\t\\t])\"}],\"line\":26,\"text\":\"\\tpublic function findAlertsForUser($userId, $cutOff = null)\"},{\"context\":[{\"line\":55,\"text\":\"\\t * @return bool\"},{\"line\":56,\"text\":\"\\t */\"},{\"line\":57,\"text\":\"\\tpublic function userReceivesAlert(User $receiver, $senderId, $contentType, $action)\"},{\"line\":58,\"text\":\"\\t{\"},{\"line\":59,\"text\":\"\\t\\tif (!$receiver->user_id || $receiver->is_banned)\"},{\"line\":60,\"text\":\"\\t\\t{\"},{\"line\":61,\"text\":\"\\t\\t\\treturn false;\"},{\"line\":62,\"text\":\"\\t\\t}\"},{\"line\":63,\"text\":\"\"}],\"line\":57,\"text\":\"\\tpublic function userReceivesAlert(User $receiver, $senderId, $contentType, $action)\"},{\"context\":[{\"line\":73,\"text\":\"\"},{\"line\":74,\"text\":\"\\t\\t$userOption = $receiver->Option;\"},{\"line\":75,\"text\":\"\\t\\treturn $userOption->doesReceiveAlert($contentType, $action);\"},{\"line\":76,\"text\":\"\\t}\"},{\"line\":77,\"text\":\"\"},{\"line\":78,\"text\":\"\\t/**\"},{\"line\":79,\"text\":\"\\t * @param int $senderId\"},{\"line\":80,\"text\":\"\\t * @param string $contentType\"},{\"line\":81,\"text\":\"\\t * @param string $action\"}],\"line\":75,\"text\":\"\\t\\treturn $userOption->doesReceiveAlert($contentType, $action);\"},{\"context\":[{\"line\":83,\"text\":\"\\t * @return bool\"},{\"line\":84,\"text\":\"\\t */\"},{\"line\":85,\"text\":\"\\tpublic function userReceivesPush(User $receiver, $senderId, $contentType, $action)\"},{\"line\":86,\"text\":\"\\t{\"},{\"line\":87,\"text\":\"\\t\\tif (!$receiver->user_id || $receiver->is_banned)\"},{\"line\":88,\"text\":\"\\t\\t{\"},{\"line\":89,\"text\":\"\\t\\t\\treturn false;\"},{\"line\":90,\"text\":\"\\t\\t}\"},{\"line\":91,\"text\":\"\"}],\"line\":85,\"text\":\"\\tpublic function userReceivesPush(User $receiver, $senderId, $contentType, $action)\"},{\"context\":[{\"line\":101,\"text\":\"\"},{\"line\":102,\"text\":\"\\t\\t$userOption = $receiver->Option;\"},{\"line\":103,\"text\":\"\\t\\treturn $userOption->doesReceivePush($contentType, $action);\"},{\"line\":104,\"text\":\"\\t}\"},{\"line\":105,\"text\":\"\"},{\"line\":106,\"text\":\"\\t/**\"},{\"line\":107,\"text\":\"\\t * @param string $contentType\"},{\"line\":108,\"text\":\"\\t * @param int $contentId\"},{\"line\":109,\"text\":\"\\t * @param string $action\"}],\"line\":103,\"text\":\"\\t\\treturn $userOption->doesReceivePush($contentType, $action);\"},{\"context\":[{\"line\":113,\"text\":\"\\t * @return bool\"},{\"line\":114,\"text\":\"\\t */\"},{\"line\":115,\"text\":\"\\tpublic function alertFromUser(\"},{\"line\":116,\"text\":\"\\t\\tUser $receiver,\"},{\"line\":117,\"text\":\"\\t\\t?User $sender,\"},{\"line\":118,\"text\":\"\\t\\t$contentType,\"},{\"line\":119,\"text\":\"\\t\\t$contentId,\"},{\"line\":120,\"text\":\"\\t\\t$action,\"},{\"line\":121,\"text\":\"\\t\\tarray $extra = [],\"}],\"line\":115,\"text\":\"\\tpublic function alertFromUser(\"},{\"context\":[{\"line\":126,\"text\":\"\\t\\t$senderName = $sender ? $sender->username : '';\"},{\"line\":127,\"text\":\"\"},{\"line\":128,\"text\":\"\\t\\tif (!$this->userReceivesAlert($receiver, $senderId, $contentType, $action))\"},{\"line\":129,\"text\":\"\\t\\t{\"},{\"line\":130,\"text\":\"\\t\\t\\treturn false;\"},{\"line\":131,\"text\":\"\\t\\t}\"},{\"line\":132,\"text\":\"\"},{\"line\":133,\"text\":\"\\t\\treturn $this->insertAlert($receiver->user_id, $senderId, $senderName, $contentType, $contentId, $action, $extra, $options);\"},{\"line\":134,\"text\":\"\\t}\"}],\"line\":128,\"text\":\"\\t\\tif (!$this->userReceivesAlert($receiver, $senderId, $contentType, $action))\"},{\"context\":[{\"line\":131,\"text\":\"\\t\\t}\"},{\"line\":132,\"text\":\"\"},{\"line\":133,\"text\":\"\\t\\treturn $this->insertAlert($receiver->user_id, $senderId, $senderName, $contentType, $contentId, $action, $extra, $options);\"},{\"line\":134,\"text\":\"\\t}\"},{\"line\":135,\"text\":\"\"},{\"line\":136,\"text\":\"\\t/**\"},{\"line\":137,\"text\":\"\\t * @param int $senderId\"},{\"line\":138,\"text\":\"\\t * @param string $senderName\"},{\"line\":139,\"text\":\"\\t * @param string $contentType\"}],\"line\":133,\"text\":\"\\t\\treturn $this->insertAlert($receiver->user_id, $senderId, $senderName, $contentType, $contentId, $action, $extra, $options);\"},{\"context\":[{\"line\":145,\"text\":\"\\t * @return bool\"},{\"line\":146,\"text\":\"\\t */\"},{\"line\":147,\"text\":\"\\tpublic function alert(\"},{\"line\":148,\"text\":\"\\t\\tUser $receiver,\"},{\"line\":149,\"text\":\"\\t\\t$senderId,\"},{\"line\":150,\"text\":\"\\t\\t$senderName,\"},{\"line\":151,\"text\":\"\\t\\t$contentType,\"},{\"line\":152,\"text\":\"\\t\\t$contentId,\"},{\"line\":153,\"text\":\"\\t\\t$action,\"}],\"line\":147,\"text\":\"\\tpublic function alert(\"},{\"context\":[{\"line\":156,\"text\":\"\\t)\"},{\"line\":157,\"text\":\"\\t{\"},{\"line\":158,\"text\":\"\\t\\tif (!$this->userReceivesAlert($receiver, $senderId, $contentType, $action))\"},{\"line\":159,\"text\":\"\\t\\t{\"},{\"line\":160,\"text\":\"\\t\\t\\treturn false;\"},{\"line\":161,\"text\":\"\\t\\t}\"},{\"line\":162,\"text\":\"\"},{\"line\":163,\"text\":\"\\t\\treturn $this->insertAlert($receiver->user_id, $senderId, $senderName, $contentType, $contentId, $action, $extra, $options);\"},{\"line\":164,\"text\":\"\\t}\"}],\"line\":158,\"text\":\"\\t\\tif (!$this->userReceivesAlert($receiver, $senderId, $contentType, $action))\"},{\"context\":[{\"line\":161,\"text\":\"\\t\\t}\"},{\"line\":162,\"text\":\"\"},{\"line\":163,\"text\":\"\\t\\treturn $this->insertAlert($receiver->user_id, $senderId, $senderName, $contentType, $contentId, $action, $extra, $options);\"},{\"line\":164,\"text\":\"\\t}\"},{\"line\":165,\"text\":\"\"},{\"line\":166,\"text\":\"\\t/**\"},{\"line\":167,\"text\":\"\\t * @param int $receiverId\"},{\"line\":168,\"text\":\"\\t * @param int $senderId\"},{\"line\":169,\"text\":\"\\t * @param string $senderName\"}],\"line\":163,\"text\":\"\\t\\treturn $this->insertAlert($receiver->user_id, $senderId, $senderName, $contentType, $contentId, $action, $extra, $options);\"},{\"context\":[{\"line\":176,\"text\":\"\\t * @return bool\"},{\"line\":177,\"text\":\"\\t */\"},{\"line\":178,\"text\":\"\\tpublic function insertAlert(\"},{\"line\":179,\"text\":\"\\t\\t$receiverId,\"},{\"line\":180,\"text\":\"\\t\\t$senderId,\"},{\"line\":181,\"text\":\"\\t\\t$senderName,\"},{\"line\":182,\"text\":\"\\t\\t$contentType,\"},{\"line\":183,\"text\":\"\\t\\t$contentId,\"},{\"line\":184,\"text\":\"\\t\\t$action,\"}],\"line\":178,\"text\":\"\\tpublic function insertAlert(\"},{\"context\":[{\"line\":210,\"text\":\"\\t\\t}\"},{\"line\":211,\"text\":\"\"},{\"line\":212,\"text\":\"\\t\\t$alert = $this->em->create(UserAlert::class);\"},{\"line\":213,\"text\":\"\\t\\t$alert->alerted_user_id = $receiverId;\"},{\"line\":214,\"text\":\"\\t\\t$alert->user_id = $senderId;\"},{\"line\":215,\"text\":\"\\t\\t$alert->username = $senderName;\"},{\"line\":216,\"text\":\"\\t\\t$alert->content_type = $contentType;\"},{\"line\":217,\"text\":\"\\t\\t$alert->content_id = $contentId;\"},{\"line\":218,\"text\":\"\\t\\t$alert->action = $action;\"}],\"line\":212,\"text\":\"\\t\\t$alert = $this->em->create(UserAlert::class);\"},{\"context\":[{\"line\":223,\"text\":\"\\t\\t$alert->save();\"},{\"line\":224,\"text\":\"\"},{\"line\":225,\"text\":\"\\t\\tif ($alert->Receiver && $this->userReceivesPush($alert->Receiver, $senderId, $contentType, $action))\"},{\"line\":226,\"text\":\"\\t\\t{\"},{\"line\":227,\"text\":\"\\t\\t\\t$pusher = $this->app()->service(PusherService::class, $alert->Receiver, $alert);\"},{\"line\":228,\"text\":\"\\t\\t\\t$pusher->push();\"},{\"line\":229,\"text\":\"\\t\\t}\"},{\"line\":230,\"text\":\"\"},{\"line\":231,\"text\":\"\\t\\treturn true;\"}],\"line\":225,\"text\":\"\\t\\tif ($alert->Receiver && $this->userReceivesPush($alert->Receiver, $senderId, $contentType, $action))\"},{\"context\":[{\"line\":225,\"text\":\"\\t\\tif ($alert->Receiver && $this->userReceivesPush($alert->Receiver, $senderId, $contentType, $action))\"},{\"line\":226,\"text\":\"\\t\\t{\"},{\"line\":227,\"text\":\"\\t\\t\\t$pusher = $this->app()->service(PusherService::class, $alert->Receiver, $alert);\"},{\"line\":228,\"text\":\"\\t\\t\\t$pusher->push();\"},{\"line\":229,\"text\":\"\\t\\t}\"},{\"line\":230,\"text\":\"\"},{\"line\":231,\"text\":\"\\t\\treturn true;\"},{\"line\":232,\"text\":\"\\t}\"},{\"line\":233,\"text\":\"\"}],\"line\":227,\"text\":\"\\t\\t\\t$pusher = $this->app()->service(PusherService::class, $alert->Receiver, $alert);\"},{\"context\":[{\"line\":226,\"text\":\"\\t\\t{\"},{\"line\":227,\"text\":\"\\t\\t\\t$pusher = $this->app()->service(PusherService::class, $alert->Receiver, $alert);\"},{\"line\":228,\"text\":\"\\t\\t\\t$pusher->push();\"},{\"line\":229,\"text\":\"\\t\\t}\"},{\"line\":230,\"text\":\"\"},{\"line\":231,\"text\":\"\\t\\treturn true;\"},{\"line\":232,\"text\":\"\\t}\"},{\"line\":233,\"text\":\"\"},{\"line\":234,\"text\":\"\\t/**\"}],\"line\":228,\"text\":\"\\t\\t\\t$pusher->push();\"},{\"context\":[{\"line\":238,\"text\":\"\\t * @param string $action\"},{\"line\":239,\"text\":\"\\t */\"},{\"line\":240,\"text\":\"\\tpublic function fastDeleteAlertsToUser($toUserId, $contentType, $contentId, $action)\"},{\"line\":241,\"text\":\"\\t{\"},{\"line\":242,\"text\":\"\\t\\t$finder = $this->finder(UserAlertFinder::class)\"},{\"line\":243,\"text\":\"\\t\\t\\t->where([\"},{\"line\":244,\"text\":\"\\t\\t\\t\\t'content_type' => $contentType,\"},{\"line\":245,\"text\":\"\\t\\t\\t\\t'content_id' => $contentId,\"},{\"line\":246,\"text\":\"\\t\\t\\t\\t'action' => $action,\"}],\"line\":240,\"text\":\"\\tpublic function fastDeleteAlertsToUser($toUserId, $contentType, $contentId, $action)\"},{\"context\":[{\"line\":258,\"text\":\"\\t * @param string $action\"},{\"line\":259,\"text\":\"\\t */\"},{\"line\":260,\"text\":\"\\tpublic function fastDeleteAlertsFromUser($fromUserId, $contentType, $contentId, $action)\"},{\"line\":261,\"text\":\"\\t{\"},{\"line\":262,\"text\":\"\\t\\t$finder = $this->finder(UserAlertFinder::class)\"},{\"line\":263,\"text\":\"\\t\\t\\t->where([\"},{\"line\":264,\"text\":\"\\t\\t\\t\\t'content_type' => $contentType,\"},{\"line\":265,\"text\":\"\\t\\t\\t\\t'content_id' => $contentId,\"},{\"line\":266,\"text\":\"\\t\\t\\t\\t'action' => $action,\"}],\"line\":260,\"text\":\"\\tpublic function fastDeleteAlertsFromUser($fromUserId, $contentType, $contentId, $action)\"},{\"context\":[{\"line\":276,\"text\":\"\\t * @param int[]|int $contentId\"},{\"line\":277,\"text\":\"\\t */\"},{\"line\":278,\"text\":\"\\tpublic function fastDeleteAlertsForContent($contentType, $contentId)\"},{\"line\":279,\"text\":\"\\t{\"},{\"line\":280,\"text\":\"\\t\\t$finder = $this->finder(UserAlertFinder::class)\"},{\"line\":281,\"text\":\"\\t\\t\\t->where([\"},{\"line\":282,\"text\":\"\\t\\t\\t\\t'content_type' => $contentType,\"},{\"line\":283,\"text\":\"\\t\\t\\t\\t'content_id' => $contentId,\"},{\"line\":284,\"text\":\"\\t\\t\\t]);\"}],\"line\":278,\"text\":\"\\tpublic function fastDeleteAlertsForContent($contentType, $contentId)\"},{\"context\":[{\"line\":292,\"text\":\"\\t * @return int Number of alerts deleted\"},{\"line\":293,\"text\":\"\\t */\"},{\"line\":294,\"text\":\"\\tprotected function deleteAlertsInternal(Finder $matches)\"},{\"line\":295,\"text\":\"\\t{\"},{\"line\":296,\"text\":\"\\t\\t$results = $matches->fetchColumns('alert_id', 'alerted_user_id', 'view_date', 'read_date');\"},{\"line\":297,\"text\":\"\\t\\tif (!$results)\"},{\"line\":298,\"text\":\"\\t\\t{\"},{\"line\":299,\"text\":\"\\t\\t\\treturn 0;\"},{\"line\":300,\"text\":\"\\t\\t}\"}],\"line\":294,\"text\":\"\\tprotected function deleteAlertsInternal(Finder $matches)\"},{\"context\":[{\"line\":362,\"text\":\"\\t * @param int|null $viewDate\"},{\"line\":363,\"text\":\"\\t */\"},{\"line\":364,\"text\":\"\\tpublic function markUserAlertsViewed(User $user, $viewDate = null)\"},{\"line\":365,\"text\":\"\\t{\"},{\"line\":366,\"text\":\"\\t\\t$this->markAllUserAlertsViewedOrRead($user, $viewDate);\"},{\"line\":367,\"text\":\"\\t}\"},{\"line\":368,\"text\":\"\"},{\"line\":369,\"text\":\"\\t/**\"},{\"line\":370,\"text\":\"\\t * @param int|null $viewDate\"}],\"line\":364,\"text\":\"\\tpublic function markUserAlertsViewed(User $user, $viewDate = null)\"},{\"context\":[{\"line\":370,\"text\":\"\\t * @param int|null $viewDate\"},{\"line\":371,\"text\":\"\\t */\"},{\"line\":372,\"text\":\"\\tpublic function markUserAlertViewed(UserAlert $alert, $viewDate = null)\"},{\"line\":373,\"text\":\"\\t{\"},{\"line\":374,\"text\":\"\\t\\tif (!$alert->Receiver || !$alert->isUnviewed())\"},{\"line\":375,\"text\":\"\\t\\t{\"},{\"line\":376,\"text\":\"\\t\\t\\treturn;\"},{\"line\":377,\"text\":\"\\t\\t}\"},{\"line\":378,\"text\":\"\"}],\"line\":372,\"text\":\"\\tpublic function markUserAlertViewed(UserAlert $alert, $viewDate = null)\"},{\"context\":[{\"line\":387,\"text\":\"\\t * @param int|null $readDate\"},{\"line\":388,\"text\":\"\\t */\"},{\"line\":389,\"text\":\"\\tpublic function markUserAlertsRead(User $user, $readDate = null)\"},{\"line\":390,\"text\":\"\\t{\"},{\"line\":391,\"text\":\"\\t\\t$this->markAllUserAlertsViewedOrRead($user, $readDate, true);\"},{\"line\":392,\"text\":\"\\t}\"},{\"line\":393,\"text\":\"\"},{\"line\":394,\"text\":\"\\t/**\"},{\"line\":395,\"text\":\"\\t * @param AbstractCollection<UserAlert> $alerts\"}],\"line\":389,\"text\":\"\\tpublic function markUserAlertsRead(User $user, $readDate = null)\"},{\"context\":[{\"line\":396,\"text\":\"\\t * @param int|null $readDate\"},{\"line\":397,\"text\":\"\\t */\"},{\"line\":398,\"text\":\"\\tpublic function autoMarkUserAlertsRead(\"},{\"line\":399,\"text\":\"\\t\\tAbstractCollection $alerts,\"},{\"line\":400,\"text\":\"\\t\\tUser $user,\"},{\"line\":401,\"text\":\"\\t\\t$readDate = null\"},{\"line\":402,\"text\":\"\\t)\"},{\"line\":403,\"text\":\"\\t{\"},{\"line\":404,\"text\":\"\\t\\t$alerts = $alerts->filter(function (UserAlert $alert): bool\"}],\"line\":398,\"text\":\"\\tpublic function autoMarkUserAlertsRead(\"},{\"context\":[{\"line\":413,\"text\":\"\\t * @param AbstractCollection<UserAlert> $alerts\"},{\"line\":414,\"text\":\"\\t */\"},{\"line\":415,\"text\":\"\\tprotected function markSpecificUserAlertsRead(\"},{\"line\":416,\"text\":\"\\t\\tAbstractCollection $alerts,\"},{\"line\":417,\"text\":\"\\t\\tUser $user,\"},{\"line\":418,\"text\":\"\\t\\t?int $readDate = null\"},{\"line\":419,\"text\":\"\\t)\"},{\"line\":420,\"text\":\"\\t{\"},{\"line\":421,\"text\":\"\\t\\tif (!$user->user_id)\"}],\"line\":415,\"text\":\"\\tprotected function markSpecificUserAlertsRead(\"},{\"context\":[{\"line\":455,\"text\":\"\\t * @param int|null $readDate\"},{\"line\":456,\"text\":\"\\t */\"},{\"line\":457,\"text\":\"\\tpublic function markUserAlertsReadForContent(\"},{\"line\":458,\"text\":\"\\t\\t$contentType,\"},{\"line\":459,\"text\":\"\\t\\t$contentIds,\"},{\"line\":460,\"text\":\"\\t\\t$onlyActions = null,\"},{\"line\":461,\"text\":\"\\t\\t?User $user = null,\"},{\"line\":462,\"text\":\"\\t\\t$readDate = null\"},{\"line\":463,\"text\":\"\\t)\"}],\"line\":457,\"text\":\"\\tpublic function markUserAlertsReadForContent(\"},{\"context\":[{\"line\":517,\"text\":\"\\t * @param int|null $readDate\"},{\"line\":518,\"text\":\"\\t */\"},{\"line\":519,\"text\":\"\\tpublic function markUserAlertRead(UserAlert $alert, $readDate = null)\"},{\"line\":520,\"text\":\"\\t{\"},{\"line\":521,\"text\":\"\\t\\tif (!$alert->Receiver || !$alert->isUnread())\"},{\"line\":522,\"text\":\"\\t\\t{\"},{\"line\":523,\"text\":\"\\t\\t\\treturn;\"},{\"line\":524,\"text\":\"\\t\\t}\"},{\"line\":525,\"text\":\"\"}],\"line\":519,\"text\":\"\\tpublic function markUserAlertRead(UserAlert $alert, $readDate = null)\"},{\"context\":[{\"line\":532,\"text\":\"\\t}\"},{\"line\":533,\"text\":\"\"},{\"line\":534,\"text\":\"\\tpublic function markUserAlertUnread(\"},{\"line\":535,\"text\":\"\\t\\tUserAlert $alert,\"},{\"line\":536,\"text\":\"\\t\\tbool $disableAutoRead = true\"},{\"line\":537,\"text\":\"\\t)\"},{\"line\":538,\"text\":\"\\t{\"},{\"line\":539,\"text\":\"\\t\\tif (!$alert->Receiver || $alert->isUnread())\"},{\"line\":540,\"text\":\"\\t\\t{\"}],\"line\":534,\"text\":\"\\tpublic function markUserAlertUnread(\"},{\"context\":[{\"line\":555,\"text\":\"\\t * not viewable.\"},{\"line\":556,\"text\":\"\\t */\"},{\"line\":557,\"text\":\"\\tpublic function markInaccessibleAlertsRead(User $user)\"},{\"line\":558,\"text\":\"\\t{\"},{\"line\":559,\"text\":\"\\t\\t$unreadAlerts = $this->finder(UserAlertFinder::class)\"},{\"line\":560,\"text\":\"\\t\\t\\t->where([\"},{\"line\":561,\"text\":\"\\t\\t\\t\\t'alerted_user_id' => $user->user_id,\"},{\"line\":562,\"text\":\"\\t\\t\\t\\t'read_date' => 0,\"},{\"line\":563,\"text\":\"\\t\\t\\t])\"}],\"line\":557,\"text\":\"\\tpublic function markInaccessibleAlertsRead(User $user)\"},{\"context\":[{\"line\":582,\"text\":\"\\t}\"},{\"line\":583,\"text\":\"\"},{\"line\":584,\"text\":\"\\tprotected function markAllUserAlertsViewedOrRead(\"},{\"line\":585,\"text\":\"\\t\\tUser $user,\"},{\"line\":586,\"text\":\"\\t\\t?int $viewDate = null,\"},{\"line\":587,\"text\":\"\\t\\tbool $markRead = false\"},{\"line\":588,\"text\":\"\\t): void\"},{\"line\":589,\"text\":\"\\t{\"},{\"line\":590,\"text\":\"\\t\\tif ($this->app()->request()->isPrefetch())\"}],\"line\":584,\"text\":\"\\tprotected function markAllUserAlertsViewedOrRead(\"},{\"context\":[{\"line\":652,\"text\":\"\\t * @param list<int> $alertIds\"},{\"line\":653,\"text\":\"\\t */\"},{\"line\":654,\"text\":\"\\tprotected function markUserAlertsViewedOrRead(\"},{\"line\":655,\"text\":\"\\t\\tUser $user,\"},{\"line\":656,\"text\":\"\\t\\tarray $alertIds,\"},{\"line\":657,\"text\":\"\\t\\t?int $viewDate = null,\"},{\"line\":658,\"text\":\"\\t\\tbool $markRead = false,\"},{\"line\":659,\"text\":\"\\t\\tbool $updateAlertEntities = false\"},{\"line\":660,\"text\":\"\\t): void\"}],\"line\":654,\"text\":\"\\tprotected function markUserAlertsViewedOrRead(\"},{\"context\":[{\"line\":774,\"text\":\"\\t * @param list<int> $alertIds\"},{\"line\":775,\"text\":\"\\t */\"},{\"line\":776,\"text\":\"\\tprotected function markUserAlertsUnread(\"},{\"line\":777,\"text\":\"\\t\\tUser $user,\"},{\"line\":778,\"text\":\"\\t\\tarray $alertIds,\"},{\"line\":779,\"text\":\"\\t\\tbool $disableAutoRead = true,\"},{\"line\":780,\"text\":\"\\t\\tbool $updateAlertEntities = false\"},{\"line\":781,\"text\":\"\\t): void\"},{\"line\":782,\"text\":\"\\t{\"}],\"line\":776,\"text\":\"\\tprotected function markUserAlertsUnread(\"},{\"context\":[{\"line\":884,\"text\":\"\\t * @return int Number of alerts deleted\"},{\"line\":885,\"text\":\"\\t */\"},{\"line\":886,\"text\":\"\\tpublic function pruneViewedAlerts($cutOff = null)\"},{\"line\":887,\"text\":\"\\t{\"},{\"line\":888,\"text\":\"\\t\\t$cutOff = $cutOff ?? \\\\XF::$time - $this->options()->alertExpiryDays * 86400;\"},{\"line\":889,\"text\":\"\"},{\"line\":890,\"text\":\"\\t\\t$finder = $this->finder(UserAlertFinder::class)\"},{\"line\":891,\"text\":\"\\t\\t\\t->where('view_date', '>', 0)\"},{\"line\":892,\"text\":\"\\t\\t\\t->where('view_date', '<', $cutOff)\"}],\"line\":886,\"text\":\"\\tpublic function pruneViewedAlerts($cutOff = null)\"},{\"context\":[{\"line\":901,\"text\":\"\\t * @return int Number of alerts deleted\"},{\"line\":902,\"text\":\"\\t */\"},{\"line\":903,\"text\":\"\\tpublic function pruneUnviewedAlerts($cutOff = null)\"},{\"line\":904,\"text\":\"\\t{\"},{\"line\":905,\"text\":\"\\t\\t$cutOff = $cutOff ?? \\\\XF::$time - 30 * 86400;\"},{\"line\":906,\"text\":\"\"},{\"line\":907,\"text\":\"\\t\\t$finder = $this->finder(UserAlertFinder::class)\"},{\"line\":908,\"text\":\"\\t\\t\\t->where('view_date', 0)\"},{\"line\":909,\"text\":\"\\t\\t\\t->where('event_date', '<', $cutOff)\"}],\"line\":903,\"text\":\"\\tpublic function pruneUnviewedAlerts($cutOff = null)\"},{\"context\":[{\"line\":916,\"text\":\"\\t * @return bool\"},{\"line\":917,\"text\":\"\\t */\"},{\"line\":918,\"text\":\"\\tpublic function updateUnviewedCountForUser(User $user)\"},{\"line\":919,\"text\":\"\\t{\"},{\"line\":920,\"text\":\"\\t\\tif (!$user->user_id)\"},{\"line\":921,\"text\":\"\\t\\t{\"},{\"line\":922,\"text\":\"\\t\\t\\treturn false;\"},{\"line\":923,\"text\":\"\\t\\t}\"},{\"line\":924,\"text\":\"\"}],\"line\":918,\"text\":\"\\tpublic function updateUnviewedCountForUser(User $user)\"},{\"context\":[{\"line\":936,\"text\":\"\\t * @return bool\"},{\"line\":937,\"text\":\"\\t */\"},{\"line\":938,\"text\":\"\\tpublic function updateUnreadCountForUser(User $user)\"},{\"line\":939,\"text\":\"\\t{\"},{\"line\":940,\"text\":\"\\t\\tif (!$user->user_id)\"},{\"line\":941,\"text\":\"\\t\\t{\"},{\"line\":942,\"text\":\"\\t\\t\\treturn false;\"},{\"line\":943,\"text\":\"\\t\\t}\"},{\"line\":944,\"text\":\"\"}],\"line\":938,\"text\":\"\\tpublic function updateUnreadCountForUser(User $user)\"},{\"context\":[{\"line\":956,\"text\":\"\\t * @return array<string, AbstractHandler>\"},{\"line\":957,\"text\":\"\\t */\"},{\"line\":958,\"text\":\"\\tpublic function getAlertHandlers()\"},{\"line\":959,\"text\":\"\\t{\"},{\"line\":960,\"text\":\"\\t\\t$handlers = [];\"},{\"line\":961,\"text\":\"\"},{\"line\":962,\"text\":\"\\t\\tforeach (\\\\XF::app()->getContentTypeField('alert_handler_class') AS $contentType => $handlerClass)\"},{\"line\":963,\"text\":\"\\t\\t{\"},{\"line\":964,\"text\":\"\\t\\t\\tif (!class_exists($handlerClass))\"}],\"line\":958,\"text\":\"\\tpublic function getAlertHandlers()\"},{\"context\":[{\"line\":980,\"text\":\"\\t * @return AbstractHandler|null\"},{\"line\":981,\"text\":\"\\t */\"},{\"line\":982,\"text\":\"\\tpublic function getAlertHandler($type, $throw = false)\"},{\"line\":983,\"text\":\"\\t{\"},{\"line\":984,\"text\":\"\\t\\t$handlerClass = \\\\XF::app()->getContentTypeFieldValue($type, 'alert_handler_class');\"},{\"line\":985,\"text\":\"\\t\\tif (!$handlerClass)\"},{\"line\":986,\"text\":\"\\t\\t{\"},{\"line\":987,\"text\":\"\\t\\t\\tif ($throw)\"},{\"line\":988,\"text\":\"\\t\\t\\t{\"}],\"line\":982,\"text\":\"\\tpublic function getAlertHandler($type, $throw = false)\"},{\"context\":[{\"line\":1010,\"text\":\"\\t * @param AbstractCollection<UserAlert> $alerts\"},{\"line\":1011,\"text\":\"\\t */\"},{\"line\":1012,\"text\":\"\\tpublic function addContentToAlerts($alerts)\"},{\"line\":1013,\"text\":\"\\t{\"},{\"line\":1014,\"text\":\"\\t\\t$contentMap = [];\"},{\"line\":1015,\"text\":\"\\t\\tforeach ($alerts AS $key => $alert)\"},{\"line\":1016,\"text\":\"\\t\\t{\"},{\"line\":1017,\"text\":\"\\t\\t\\t$contentType = $alert->content_type;\"},{\"line\":1018,\"text\":\"\\t\\t\\tif (!isset($contentMap[$contentType]))\"}],\"line\":1012,\"text\":\"\\tpublic function addContentToAlerts($alerts)\"},{\"context\":[{\"line\":1026,\"text\":\"\\t\\tforeach ($contentMap AS $contentType => $contentIds)\"},{\"line\":1027,\"text\":\"\\t\\t{\"},{\"line\":1028,\"text\":\"\\t\\t\\t$handler = $this->getAlertHandler($contentType);\"},{\"line\":1029,\"text\":\"\\t\\t\\tif (!$handler)\"},{\"line\":1030,\"text\":\"\\t\\t\\t{\"},{\"line\":1031,\"text\":\"\\t\\t\\t\\tcontinue;\"},{\"line\":1032,\"text\":\"\\t\\t\\t}\"},{\"line\":1033,\"text\":\"\"},{\"line\":1034,\"text\":\"\\t\\t\\t$data = $handler->getContent($contentIds);\"}],\"line\":1028,\"text\":\"\\t\\t\\t$handler = $this->getAlertHandler($contentType);\"},{\"context\":[{\"line\":1044,\"text\":\"\\t * @return array<string, array<string, string|\\\\Stringable>>\"},{\"line\":1045,\"text\":\"\\t */\"},{\"line\":1046,\"text\":\"\\tpublic function getAlertOptOuts()\"},{\"line\":1047,\"text\":\"\\t{\"},{\"line\":1048,\"text\":\"\\t\\t$handlers = $this->getAlertHandlers();\"},{\"line\":1049,\"text\":\"\"},{\"line\":1050,\"text\":\"\\t\\t$alertOptOuts = [];\"},{\"line\":1051,\"text\":\"\\t\\t$orderedTypes = [];\"},{\"line\":1052,\"text\":\"\"}],\"line\":1046,\"text\":\"\\tpublic function getAlertOptOuts()\"},{\"context\":[{\"line\":1046,\"text\":\"\\tpublic function getAlertOptOuts()\"},{\"line\":1047,\"text\":\"\\t{\"},{\"line\":1048,\"text\":\"\\t\\t$handlers = $this->getAlertHandlers();\"},{\"line\":1049,\"text\":\"\"},{\"line\":1050,\"text\":\"\\t\\t$alertOptOuts = [];\"},{\"line\":1051,\"text\":\"\\t\\t$orderedTypes = [];\"},{\"line\":1052,\"text\":\"\"},{\"line\":1053,\"text\":\"\\t\\tforeach ($handlers AS $contentType => $handler)\"},{\"line\":1054,\"text\":\"\\t\\t{\"}],\"line\":1048,\"text\":\"\\t\\t$handlers = $this->getAlertHandlers();\"},{\"context\":[{\"line\":1053,\"text\":\"\\t\\tforeach ($handlers AS $contentType => $handler)\"},{\"line\":1054,\"text\":\"\\t\\t{\"},{\"line\":1055,\"text\":\"\\t\\t\\t$optOuts = $handler->getOptOutsMap();\"},{\"line\":1056,\"text\":\"\\t\\t\\tif (!$optOuts)\"},{\"line\":1057,\"text\":\"\\t\\t\\t{\"},{\"line\":1058,\"text\":\"\\t\\t\\t\\tcontinue;\"},{\"line\":1059,\"text\":\"\\t\\t\\t}\"},{\"line\":1060,\"text\":\"\"},{\"line\":1061,\"text\":\"\\t\\t\\t$alertOptOuts[$contentType] = $optOuts;\"}],\"line\":1055,\"text\":\"\\t\\t\\t$optOuts = $handler->getOptOutsMap();\"},{\"context\":[{\"line\":1060,\"text\":\"\"},{\"line\":1061,\"text\":\"\\t\\t\\t$alertOptOuts[$contentType] = $optOuts;\"},{\"line\":1062,\"text\":\"\\t\\t\\t$orderedTypes[$contentType] = $handler->getOptOutDisplayOrder();\"},{\"line\":1063,\"text\":\"\\t\\t}\"},{\"line\":1064,\"text\":\"\\t\\tasort($orderedTypes);\"},{\"line\":1065,\"text\":\"\"},{\"line\":1066,\"text\":\"\\t\\t$orderedOptOuts = [];\"},{\"line\":1067,\"text\":\"\\t\\tforeach ($orderedTypes AS $contentType => $null)\"},{\"line\":1068,\"text\":\"\\t\\t{\"}],\"line\":1062,\"text\":\"\\t\\t\\t$orderedTypes[$contentType] = $handler->getOptOutDisplayOrder();\"},{\"context\":[{\"line\":1076,\"text\":\"\\t * @return array<string, true>\"},{\"line\":1077,\"text\":\"\\t */\"},{\"line\":1078,\"text\":\"\\tpublic function getAlertOptOutActions()\"},{\"line\":1079,\"text\":\"\\t{\"},{\"line\":1080,\"text\":\"\\t\\t$handlers = $this->getAlertHandlers();\"},{\"line\":1081,\"text\":\"\"},{\"line\":1082,\"text\":\"\\t\\t$actions = [];\"},{\"line\":1083,\"text\":\"\\t\\tforeach ($handlers AS $contentType => $handler)\"},{\"line\":1084,\"text\":\"\\t\\t{\"}],\"line\":1078,\"text\":\"\\tpublic function getAlertOptOutActions()\"},{\"context\":[{\"line\":1078,\"text\":\"\\tpublic function getAlertOptOutActions()\"},{\"line\":1079,\"text\":\"\\t{\"},{\"line\":1080,\"text\":\"\\t\\t$handlers = $this->getAlertHandlers();\"},{\"line\":1081,\"text\":\"\"},{\"line\":1082,\"text\":\"\\t\\t$actions = [];\"},{\"line\":1083,\"text\":\"\\t\\tforeach ($handlers AS $contentType => $handler)\"},{\"line\":1084,\"text\":\"\\t\\t{\"},{\"line\":1085,\"text\":\"\\t\\t\\tforeach ($handler->getOptOutActions() AS $action)\"},{\"line\":1086,\"text\":\"\\t\\t\\t{\"}],\"line\":1080,\"text\":\"\\t\\t$handlers = $this->getAlertHandlers();\"},{\"context\":[{\"line\":1083,\"text\":\"\\t\\tforeach ($handlers AS $contentType => $handler)\"},{\"line\":1084,\"text\":\"\\t\\t{\"},{\"line\":1085,\"text\":\"\\t\\t\\tforeach ($handler->getOptOutActions() AS $action)\"},{\"line\":1086,\"text\":\"\\t\\t\\t{\"},{\"line\":1087,\"text\":\"\\t\\t\\t\\t$actions[$contentType . '_' . $action] = true;\"},{\"line\":1088,\"text\":\"\\t\\t\\t}\"},{\"line\":1089,\"text\":\"\\t\\t}\"},{\"line\":1090,\"text\":\"\"},{\"line\":1091,\"text\":\"\\t\\treturn $actions;\"}],\"line\":1085,\"text\":\"\\t\\t\\tforeach ($handler->getOptOutActions() AS $action)\"}],\"path\":\"/var/www/forums/newfi/public/src/XF/Repository/UserAlertRepository.php\",\"present\":true,\"sha256\":\"5efd6dac58b2a42da3a64db6bc36aaee2cefea1394105aa872b672b835590cd9\"},\"user_entity_push\":{\"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\":1059,\"text\":\"\"}],\"line\":1053,\"text\":\"\\tpublic function canUsePushNotifications()\"},{\"context\":[{\"line\":1882,\"text\":\"\\t * @api-out <perm> bool $activity_visible\"},{\"line\":1883,\"text\":\"\\t * @api-out <cond> int $age The user's current age. Only included if available.\"},{\"line\":1884,\"text\":\"\\t * @api-out <perm|verbose> array $alert_optout\"},{\"line\":1885,\"text\":\"\\t * @api-out <perm|verbose> string $allow_post_profile\"},{\"line\":1886,\"text\":\"\\t * @api-out <perm|verbose> string $allow_receive_news_feed\"},{\"line\":1887,\"text\":\"\\t * @api-out <perm|verbose> string $allow_send_personal_conversation\"},{\"line\":1888,\"text\":\"\\t * @api-out <perm|verbose> string $allow_view_identities\"},{\"line\":1889,\"text\":\"\\t * @api-out <perm|verbose> string $allow_view_profile\"},{\"line\":1890,\"text\":\"\\t * @api-out object $avatar_urls Maps from size types to URL.\"}],\"line\":1884,\"text\":\"\\t * @api-out <perm|verbose> array $alert_optout\"},{\"context\":[{\"line\":1917,\"text\":\"\\t * @api-out <perm> 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 <perm|verbose> bool $push_on_conversation\"},{\"line\":1920,\"text\":\"\\t * @api-out <perm|verbose> array $push_optout\"},{\"line\":1921,\"text\":\"\\t * @api-out <perm|verbose> bool $receive_admin_email\"},{\"line\":1922,\"text\":\"\\t * @api-out <perm> array $secondary_group_ids\"},{\"line\":1923,\"text\":\"\\t * @api-out <perm|verbose> bool $show_dob_date\"},{\"line\":1924,\"text\":\"\\t * @api-out <perm|verbose> bool $show_dob_year\"},{\"line\":1925,\"text\":\"\\t * @api-out str $signature\"}],\"line\":1919,\"text\":\"\\t * @api-out <perm|verbose> bool $push_on_conversation\"},{\"context\":[{\"line\":1918,\"text\":\"\\t * @api-out str $location\"},{\"line\":1919,\"text\":\"\\t * @api-out <perm|verbose> bool $push_on_conversation\"},{\"line\":1920,\"text\":\"\\t * @api-out <perm|verbose> array $push_optout\"},{\"line\":1921,\"text\":\"\\t * @api-out <perm|verbose> bool $receive_admin_email\"},{\"line\":1922,\"text\":\"\\t * @api-out <perm> array $secondary_group_ids\"},{\"line\":1923,\"text\":\"\\t * @api-out <perm|verbose> bool $show_dob_date\"},{\"line\":1924,\"text\":\"\\t * @api-out <perm|verbose> bool $show_dob_year\"},{\"line\":1925,\"text\":\"\\t * @api-out str $signature\"},{\"line\":1926,\"text\":\"\\t * @api-out <perm|verbose> string $timezone\"}],\"line\":1920,\"text\":\"\\t * @api-out <perm|verbose> 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\":2084,\"text\":\"\\t\\t\\t\\t\\t]);\"}],\"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\":2087,\"text\":\"\\t\\t\\t\\t\\t\\t'allow_post_profile' => $privacy->allow_post_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\":2088,\"text\":\"\\t\\t\\t\\t\\t\\t'allow_send_personal_conversation' => $privacy->allow_send_personal_conversation,\"}],\"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\":2133,\"text\":\"\\t\\t\\t]);\"}],\"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\":2136,\"text\":\"\\t\\t\\t$result->custom_fields = (object) $fieldValues;\"}],\"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\":2137,\"text\":\"\\t\\t}\"}],\"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\"},\"user_push_repo\":{\"bytes\":3366,\"matches\":[{\"context\":[{\"line\":8,\"text\":\"use function intval, strlen;\"},{\"line\":9,\"text\":\"\"},{\"line\":10,\"text\":\"class UserPushRepository extends Repository\"},{\"line\":11,\"text\":\"{\"},{\"line\":12,\"text\":\"\\tpublic function validateSubscriptionDetails(array $subscription, &$error = null)\"},{\"line\":13,\"text\":\"\\t{\"},{\"line\":14,\"text\":\"\\t\\t$endpoint = $subscription['endpoint'] ?? null;\"},{\"line\":15,\"text\":\"\\t\\tif ($endpoint === null)\"},{\"line\":16,\"text\":\"\\t\\t{\"}],\"line\":10,\"text\":\"class UserPushRepository extends Repository\"},{\"context\":[{\"line\":10,\"text\":\"class UserPushRepository extends Repository\"},{\"line\":11,\"text\":\"{\"},{\"line\":12,\"text\":\"\\tpublic function validateSubscriptionDetails(array $subscription, &$error = null)\"},{\"line\":13,\"text\":\"\\t{\"},{\"line\":14,\"text\":\"\\t\\t$endpoint = $subscription['endpoint'] ?? null;\"},{\"line\":15,\"text\":\"\\t\\tif ($endpoint === null)\"},{\"line\":16,\"text\":\"\\t\\t{\"},{\"line\":17,\"text\":\"\\t\\t\\treturn false;\"},{\"line\":18,\"text\":\"\\t\\t}\"}],\"line\":12,\"text\":\"\\tpublic function validateSubscriptionDetails(array $subscription, &$error = null)\"},{\"context\":[{\"line\":12,\"text\":\"\\tpublic function validateSubscriptionDetails(array $subscription, &$error = null)\"},{\"line\":13,\"text\":\"\\t{\"},{\"line\":14,\"text\":\"\\t\\t$endpoint = $subscription['endpoint'] ?? null;\"},{\"line\":15,\"text\":\"\\t\\tif ($endpoint === null)\"},{\"line\":16,\"text\":\"\\t\\t{\"},{\"line\":17,\"text\":\"\\t\\t\\treturn false;\"},{\"line\":18,\"text\":\"\\t\\t}\"},{\"line\":19,\"text\":\"\"},{\"line\":20,\"text\":\"\\t\\tif (!$this->isValidEndpoint($endpoint))\"}],\"line\":14,\"text\":\"\\t\\t$endpoint = $subscription['endpoint'] ?? null;\"},{\"context\":[{\"line\":23,\"text\":\"\\t\\t}\"},{\"line\":24,\"text\":\"\"},{\"line\":25,\"text\":\"\\t\\tif (empty($subscription['key']) || empty($subscription['token']) || empty($subscription['encoding']))\"},{\"line\":26,\"text\":\"\\t\\t{\"},{\"line\":27,\"text\":\"\\t\\t\\treturn false;\"},{\"line\":28,\"text\":\"\\t\\t}\"},{\"line\":29,\"text\":\"\"},{\"line\":30,\"text\":\"\\t\\tif (\"},{\"line\":31,\"text\":\"\\t\\t\\tstrlen($subscription['key']) > 1024\"}],\"line\":25,\"text\":\"\\t\\tif (empty($subscription['key']) || empty($subscription['token']) || empty($subscription['encoding']))\"},{\"context\":[{\"line\":29,\"text\":\"\"},{\"line\":30,\"text\":\"\\t\\tif (\"},{\"line\":31,\"text\":\"\\t\\t\\tstrlen($subscription['key']) > 1024\"},{\"line\":32,\"text\":\"\\t\\t\\t|| strlen($subscription['token']) > 256\"},{\"line\":33,\"text\":\"\\t\\t\\t|| strlen($subscription['encoding']) > 64\"},{\"line\":34,\"text\":\"\\t\\t)\"},{\"line\":35,\"text\":\"\\t\\t{\"},{\"line\":36,\"text\":\"\\t\\t\\treturn false;\"},{\"line\":37,\"text\":\"\\t\\t}\"}],\"line\":31,\"text\":\"\\t\\t\\tstrlen($subscription['key']) > 1024\"},{\"context\":[{\"line\":30,\"text\":\"\\t\\tif (\"},{\"line\":31,\"text\":\"\\t\\t\\tstrlen($subscription['key']) > 1024\"},{\"line\":32,\"text\":\"\\t\\t\\t|| strlen($subscription['token']) > 256\"},{\"line\":33,\"text\":\"\\t\\t\\t|| strlen($subscription['encoding']) > 64\"},{\"line\":34,\"text\":\"\\t\\t)\"},{\"line\":35,\"text\":\"\\t\\t{\"},{\"line\":36,\"text\":\"\\t\\t\\treturn false;\"},{\"line\":37,\"text\":\"\\t\\t}\"},{\"line\":38,\"text\":\"\"}],\"line\":32,\"text\":\"\\t\\t\\t|| strlen($subscription['token']) > 256\"},{\"context\":[{\"line\":31,\"text\":\"\\t\\t\\tstrlen($subscription['key']) > 1024\"},{\"line\":32,\"text\":\"\\t\\t\\t|| strlen($subscription['token']) > 256\"},{\"line\":33,\"text\":\"\\t\\t\\t|| strlen($subscription['encoding']) > 64\"},{\"line\":34,\"text\":\"\\t\\t)\"},{\"line\":35,\"text\":\"\\t\\t{\"},{\"line\":36,\"text\":\"\\t\\t\\treturn false;\"},{\"line\":37,\"text\":\"\\t\\t}\"},{\"line\":38,\"text\":\"\"},{\"line\":39,\"text\":\"\\t\\treturn true;\"}],\"line\":33,\"text\":\"\\t\\t\\t|| strlen($subscription['encoding']) > 64\"},{\"context\":[{\"line\":40,\"text\":\"\\t}\"},{\"line\":41,\"text\":\"\"},{\"line\":42,\"text\":\"\\tpublic function insertUserPushSubscription(User $user, array $subscription)\"},{\"line\":43,\"text\":\"\\t{\"},{\"line\":44,\"text\":\"\\t\\t$db = $this->db();\"},{\"line\":45,\"text\":\"\"},{\"line\":46,\"text\":\"\\t\\t$endpointHash = $this->getEndpointHash($subscription['endpoint']);\"},{\"line\":47,\"text\":\"\"},{\"line\":48,\"text\":\"\\t\\treturn $db->insert('xf_user_push_subscription', [\"}],\"line\":42,\"text\":\"\\tpublic function insertUserPushSubscription(User $user, array $subscription)\"},{\"context\":[{\"line\":44,\"text\":\"\\t\\t$db = $this->db();\"},{\"line\":45,\"text\":\"\"},{\"line\":46,\"text\":\"\\t\\t$endpointHash = $this->getEndpointHash($subscription['endpoint']);\"},{\"line\":47,\"text\":\"\"},{\"line\":48,\"text\":\"\\t\\treturn $db->insert('xf_user_push_subscription', [\"},{\"line\":49,\"text\":\"\\t\\t\\t'endpoint_hash' => $endpointHash,\"},{\"line\":50,\"text\":\"\\t\\t\\t'endpoint' => $subscription['endpoint'],\"},{\"line\":51,\"text\":\"\\t\\t\\t'user_id' => $user->user_id,\"},{\"line\":52,\"text\":\"\\t\\t\\t'data' => json_encode([\"}],\"line\":46,\"text\":\"\\t\\t$endpointHash = $this->getEndpointHash($subscription['endpoint']);\"},{\"context\":[{\"line\":46,\"text\":\"\\t\\t$endpointHash = $this->getEndpointHash($subscription['endpoint']);\"},{\"line\":47,\"text\":\"\"},{\"line\":48,\"text\":\"\\t\\treturn $db->insert('xf_user_push_subscription', [\"},{\"line\":49,\"text\":\"\\t\\t\\t'endpoint_hash' => $endpointHash,\"},{\"line\":50,\"text\":\"\\t\\t\\t'endpoint' => $subscription['endpoint'],\"},{\"line\":51,\"text\":\"\\t\\t\\t'user_id' => $user->user_id,\"},{\"line\":52,\"text\":\"\\t\\t\\t'data' => json_encode([\"},{\"line\":53,\"text\":\"\\t\\t\\t\\t'key' => $subscription['key'],\"},{\"line\":54,\"text\":\"\\t\\t\\t\\t'token' => $subscription['token'],\"}],\"line\":48,\"text\":\"\\t\\treturn $db->insert('xf_user_push_subscription', [\"},{\"context\":[{\"line\":48,\"text\":\"\\t\\treturn $db->insert('xf_user_push_subscription', [\"},{\"line\":49,\"text\":\"\\t\\t\\t'endpoint_hash' => $endpointHash,\"},{\"line\":50,\"text\":\"\\t\\t\\t'endpoint' => $subscription['endpoint'],\"},{\"line\":51,\"text\":\"\\t\\t\\t'user_id' => $user->user_id,\"},{\"line\":52,\"text\":\"\\t\\t\\t'data' => json_encode([\"},{\"line\":53,\"text\":\"\\t\\t\\t\\t'key' => $subscription['key'],\"},{\"line\":54,\"text\":\"\\t\\t\\t\\t'token' => $subscription['token'],\"},{\"line\":55,\"text\":\"\\t\\t\\t\\t'encoding' => $subscription['encoding'],\"},{\"line\":56,\"text\":\"\\t\\t\\t]),\"}],\"line\":50,\"text\":\"\\t\\t\\t'endpoint' => $subscription['endpoint'],\"},{\"context\":[{\"line\":51,\"text\":\"\\t\\t\\t'user_id' => $user->user_id,\"},{\"line\":52,\"text\":\"\\t\\t\\t'data' => json_encode([\"},{\"line\":53,\"text\":\"\\t\\t\\t\\t'key' => $subscription['key'],\"},{\"line\":54,\"text\":\"\\t\\t\\t\\t'token' => $subscription['token'],\"},{\"line\":55,\"text\":\"\\t\\t\\t\\t'encoding' => $subscription['encoding'],\"},{\"line\":56,\"text\":\"\\t\\t\\t]),\"},{\"line\":57,\"text\":\"\\t\\t\\t'last_seen' => time(),\"},{\"line\":58,\"text\":\"\\t\\t], false, '\"},{\"line\":59,\"text\":\"\\t\\t\\tuser_id = VALUES(user_id),\"}],\"line\":53,\"text\":\"\\t\\t\\t\\t'key' => $subscription['key'],\"},{\"context\":[{\"line\":52,\"text\":\"\\t\\t\\t'data' => json_encode([\"},{\"line\":53,\"text\":\"\\t\\t\\t\\t'key' => $subscription['key'],\"},{\"line\":54,\"text\":\"\\t\\t\\t\\t'token' => $subscription['token'],\"},{\"line\":55,\"text\":\"\\t\\t\\t\\t'encoding' => $subscription['encoding'],\"},{\"line\":56,\"text\":\"\\t\\t\\t]),\"},{\"line\":57,\"text\":\"\\t\\t\\t'last_seen' => time(),\"},{\"line\":58,\"text\":\"\\t\\t], false, '\"},{\"line\":59,\"text\":\"\\t\\t\\tuser_id = VALUES(user_id),\"},{\"line\":60,\"text\":\"\\t\\t\\tdata = VALUES(data),\"}],\"line\":54,\"text\":\"\\t\\t\\t\\t'token' => $subscription['token'],\"},{\"context\":[{\"line\":53,\"text\":\"\\t\\t\\t\\t'key' => $subscription['key'],\"},{\"line\":54,\"text\":\"\\t\\t\\t\\t'token' => $subscription['token'],\"},{\"line\":55,\"text\":\"\\t\\t\\t\\t'encoding' => $subscription['encoding'],\"},{\"line\":56,\"text\":\"\\t\\t\\t]),\"},{\"line\":57,\"text\":\"\\t\\t\\t'last_seen' => time(),\"},{\"line\":58,\"text\":\"\\t\\t], false, '\"},{\"line\":59,\"text\":\"\\t\\t\\tuser_id = VALUES(user_id),\"},{\"line\":60,\"text\":\"\\t\\t\\tdata = VALUES(data),\"},{\"line\":61,\"text\":\"\\t\\t\\tlast_seen = VALUES(last_seen)\"}],\"line\":55,\"text\":\"\\t\\t\\t\\t'encoding' => $subscription['encoding'],\"},{\"context\":[{\"line\":63,\"text\":\"\\t}\"},{\"line\":64,\"text\":\"\"},{\"line\":65,\"text\":\"\\tpublic function deletePushSubscription(array $subscription)\"},{\"line\":66,\"text\":\"\\t{\"},{\"line\":67,\"text\":\"\\t\\t$db = $this->db();\"},{\"line\":68,\"text\":\"\\t\\t$endpointHash = $this->getEndpointHash($subscription['endpoint']);\"},{\"line\":69,\"text\":\"\\t\\treturn $db->delete('xf_user_push_subscription', 'endpoint_hash = ?', $endpointHash);\"},{\"line\":70,\"text\":\"\\t}\"},{\"line\":71,\"text\":\"\"}],\"line\":65,\"text\":\"\\tpublic function deletePushSubscription(array $subscription)\"},{\"context\":[{\"line\":66,\"text\":\"\\t{\"},{\"line\":67,\"text\":\"\\t\\t$db = $this->db();\"},{\"line\":68,\"text\":\"\\t\\t$endpointHash = $this->getEndpointHash($subscription['endpoint']);\"},{\"line\":69,\"text\":\"\\t\\treturn $db->delete('xf_user_push_subscription', 'endpoint_hash = ?', $endpointHash);\"},{\"line\":70,\"text\":\"\\t}\"},{\"line\":71,\"text\":\"\"},{\"line\":72,\"text\":\"\\tpublic function deleteUserPushSubscription(User $user, array $subscription)\"},{\"line\":73,\"text\":\"\\t{\"},{\"line\":74,\"text\":\"\\t\\t$db = $this->db();\"}],\"line\":68,\"text\":\"\\t\\t$endpointHash = $this->getEndpointHash($subscription['endpoint']);\"},{\"context\":[{\"line\":67,\"text\":\"\\t\\t$db = $this->db();\"},{\"line\":68,\"text\":\"\\t\\t$endpointHash = $this->getEndpointHash($subscription['endpoint']);\"},{\"line\":69,\"text\":\"\\t\\treturn $db->delete('xf_user_push_subscription', 'endpoint_hash = ?', $endpointHash);\"},{\"line\":70,\"text\":\"\\t}\"},{\"line\":71,\"text\":\"\"},{\"line\":72,\"text\":\"\\tpublic function deleteUserPushSubscription(User $user, array $subscription)\"},{\"line\":73,\"text\":\"\\t{\"},{\"line\":74,\"text\":\"\\t\\t$db = $this->db();\"},{\"line\":75,\"text\":\"\\t\\t$endpointHash = $this->getEndpointHash($subscription['endpoint']);\"}],\"line\":69,\"text\":\"\\t\\treturn $db->delete('xf_user_push_subscription', 'endpoint_hash = ?', $endpointHash);\"},{\"context\":[{\"line\":70,\"text\":\"\\t}\"},{\"line\":71,\"text\":\"\"},{\"line\":72,\"text\":\"\\tpublic function deleteUserPushSubscription(User $user, array $subscription)\"},{\"line\":73,\"text\":\"\\t{\"},{\"line\":74,\"text\":\"\\t\\t$db = $this->db();\"},{\"line\":75,\"text\":\"\\t\\t$endpointHash = $this->getEndpointHash($subscription['endpoint']);\"},{\"line\":76,\"text\":\"\\t\\treturn $db->delete('xf_user_push_subscription', 'endpoint_hash = ? AND user_id = ?', [\"},{\"line\":77,\"text\":\"\\t\\t\\t$endpointHash, $user->user_id,\"},{\"line\":78,\"text\":\"\\t\\t]);\"}],\"line\":72,\"text\":\"\\tpublic function deleteUserPushSubscription(User $user, array $subscription)\"},{\"context\":[{\"line\":73,\"text\":\"\\t{\"},{\"line\":74,\"text\":\"\\t\\t$db = $this->db();\"},{\"line\":75,\"text\":\"\\t\\t$endpointHash = $this->getEndpointHash($subscription['endpoint']);\"},{\"line\":76,\"text\":\"\\t\\treturn $db->delete('xf_user_push_subscription', 'endpoint_hash = ? AND user_id = ?', [\"},{\"line\":77,\"text\":\"\\t\\t\\t$endpointHash, $user->user_id,\"},{\"line\":78,\"text\":\"\\t\\t]);\"},{\"line\":79,\"text\":\"\\t}\"},{\"line\":80,\"text\":\"\"},{\"line\":81,\"text\":\"\\tpublic function limitUserPushSubscriptionCount(User $user, $maxAllowed)\"}],\"line\":75,\"text\":\"\\t\\t$endpointHash = $this->getEndpointHash($subscription['endpoint']);\"},{\"context\":[{\"line\":74,\"text\":\"\\t\\t$db = $this->db();\"},{\"line\":75,\"text\":\"\\t\\t$endpointHash = $this->getEndpointHash($subscription['endpoint']);\"},{\"line\":76,\"text\":\"\\t\\treturn $db->delete('xf_user_push_subscription', 'endpoint_hash = ? AND user_id = ?', [\"},{\"line\":77,\"text\":\"\\t\\t\\t$endpointHash, $user->user_id,\"},{\"line\":78,\"text\":\"\\t\\t]);\"},{\"line\":79,\"text\":\"\\t}\"},{\"line\":80,\"text\":\"\"},{\"line\":81,\"text\":\"\\tpublic function limitUserPushSubscriptionCount(User $user, $maxAllowed)\"},{\"line\":82,\"text\":\"\\t{\"}],\"line\":76,\"text\":\"\\t\\treturn $db->delete('xf_user_push_subscription', 'endpoint_hash = ? AND user_id = ?', [\"},{\"context\":[{\"line\":79,\"text\":\"\\t}\"},{\"line\":80,\"text\":\"\"},{\"line\":81,\"text\":\"\\tpublic function limitUserPushSubscriptionCount(User $user, $maxAllowed)\"},{\"line\":82,\"text\":\"\\t{\"},{\"line\":83,\"text\":\"\\t\\t$cutOff = max(0, intval($maxAllowed)); // offset is 0 based, so this will give the max+1 row\"},{\"line\":84,\"text\":\"\"},{\"line\":85,\"text\":\"\\t\\t$lastSeenCutOff = $this->db()->fetchOne(\\\"\"},{\"line\":86,\"text\":\"\\t\\t\\tSELECT last_seen\"},{\"line\":87,\"text\":\"\\t\\t\\tFROM xf_user_push_subscription\"}],\"line\":81,\"text\":\"\\tpublic function limitUserPushSubscriptionCount(User $user, $maxAllowed)\"},{\"context\":[{\"line\":85,\"text\":\"\\t\\t$lastSeenCutOff = $this->db()->fetchOne(\\\"\"},{\"line\":86,\"text\":\"\\t\\t\\tSELECT last_seen\"},{\"line\":87,\"text\":\"\\t\\t\\tFROM xf_user_push_subscription\"},{\"line\":88,\"text\":\"\\t\\t\\tWHERE user_id = ?\"},{\"line\":89,\"text\":\"\\t\\t\\tORDER BY last_seen DESC\"},{\"line\":90,\"text\":\"\\t\\t\\tLIMIT ?, 1\"},{\"line\":91,\"text\":\"\\t\\t\\\", [$user->user_id, $cutOff]);\"},{\"line\":92,\"text\":\"\\t\\tif ($lastSeenCutOff)\"},{\"line\":93,\"text\":\"\\t\\t{\"}],\"line\":87,\"text\":\"\\t\\t\\tFROM xf_user_push_subscription\"},{\"context\":[{\"line\":93,\"text\":\"\\t\\t{\"},{\"line\":94,\"text\":\"\\t\\t\\t$this->db()->delete(\"},{\"line\":95,\"text\":\"\\t\\t\\t\\t'xf_user_push_subscription',\"},{\"line\":96,\"text\":\"\\t\\t\\t\\t'user_id = ? AND last_seen <= ?',\"},{\"line\":97,\"text\":\"\\t\\t\\t\\t[$user->user_id, $lastSeenCutOff]\"},{\"line\":98,\"text\":\"\\t\\t\\t);\"},{\"line\":99,\"text\":\"\\t\\t}\"},{\"line\":100,\"text\":\"\\t}\"},{\"line\":101,\"text\":\"\"}],\"line\":95,\"text\":\"\\t\\t\\t\\t'xf_user_push_subscription',\"},{\"context\":[{\"line\":100,\"text\":\"\\t}\"},{\"line\":101,\"text\":\"\"},{\"line\":102,\"text\":\"\\tpublic function getUserSubscriptions(User $user)\"},{\"line\":103,\"text\":\"\\t{\"},{\"line\":104,\"text\":\"\\t\\treturn $this->db()->fetchAllKeyed(\"},{\"line\":105,\"text\":\"\\t\\t\\t'SELECT *\"},{\"line\":106,\"text\":\"\\t\\t\\t\\tFROM xf_user_push_subscription\"},{\"line\":107,\"text\":\"\\t\\t\\t\\tWHERE user_id = ?\"},{\"line\":108,\"text\":\"\\t\\t\\t\\tORDER BY endpoint_id',\"}],\"line\":102,\"text\":\"\\tpublic function getUserSubscriptions(User $user)\"},{\"context\":[{\"line\":104,\"text\":\"\\t\\treturn $this->db()->fetchAllKeyed(\"},{\"line\":105,\"text\":\"\\t\\t\\t'SELECT *\"},{\"line\":106,\"text\":\"\\t\\t\\t\\tFROM xf_user_push_subscription\"},{\"line\":107,\"text\":\"\\t\\t\\t\\tWHERE user_id = ?\"},{\"line\":108,\"text\":\"\\t\\t\\t\\tORDER BY endpoint_id',\"},{\"line\":109,\"text\":\"\\t\\t\\t'endpoint_hash',\"},{\"line\":110,\"text\":\"\\t\\t\\t[$user->user_id]\"},{\"line\":111,\"text\":\"\\t\\t);\"},{\"line\":112,\"text\":\"\\t}\"}],\"line\":106,\"text\":\"\\t\\t\\t\\tFROM xf_user_push_subscription\"},{\"context\":[{\"line\":112,\"text\":\"\\t}\"},{\"line\":113,\"text\":\"\"},{\"line\":114,\"text\":\"\\tpublic function getEndpointHash($endpoint)\"},{\"line\":115,\"text\":\"\\t{\"},{\"line\":116,\"text\":\"\\t\\treturn md5($endpoint);\"},{\"line\":117,\"text\":\"\\t}\"},{\"line\":118,\"text\":\"\"},{\"line\":119,\"text\":\"\\tpublic function isValidEndpoint(string $endpoint): bool\"},{\"line\":120,\"text\":\"\\t{\"}],\"line\":114,\"text\":\"\\tpublic function getEndpointHash($endpoint)\"},{\"context\":[{\"line\":117,\"text\":\"\\t}\"},{\"line\":118,\"text\":\"\"},{\"line\":119,\"text\":\"\\tpublic function isValidEndpoint(string $endpoint): bool\"},{\"line\":120,\"text\":\"\\t{\"},{\"line\":121,\"text\":\"\\t\\tif (!preg_match('#https?://#i', $endpoint) || strlen($endpoint) > 2048)\"},{\"line\":122,\"text\":\"\\t\\t{\"},{\"line\":123,\"text\":\"\\t\\t\\treturn false;\"},{\"line\":124,\"text\":\"\\t\\t}\"},{\"line\":125,\"text\":\"\"}],\"line\":119,\"text\":\"\\tpublic function isValidEndpoint(string $endpoint): bool\"},{\"context\":[{\"line\":141,\"text\":\"\\t * @return list<string>\"},{\"line\":142,\"text\":\"\\t */\"},{\"line\":143,\"text\":\"\\tpublic function getInvalidEndpoints(): array\"},{\"line\":144,\"text\":\"\\t{\"},{\"line\":145,\"text\":\"\\t\\treturn [\"},{\"line\":146,\"text\":\"\\t\\t\\t'https://android.googleapis.com/gcm/send', // GCM\"},{\"line\":147,\"text\":\"\\t\\t\\t'https://permanently-removed.invalid/fcm/send', // Chrome (XF-234461)\"},{\"line\":148,\"text\":\"\\t\\t];\"},{\"line\":149,\"text\":\"\\t}\"}],\"line\":143,\"text\":\"\\tpublic function getInvalidEndpoints(): array\"},{\"context\":[{\"line\":144,\"text\":\"\\t{\"},{\"line\":145,\"text\":\"\\t\\treturn [\"},{\"line\":146,\"text\":\"\\t\\t\\t'https://android.googleapis.com/gcm/send', // GCM\"},{\"line\":147,\"text\":\"\\t\\t\\t'https://permanently-removed.invalid/fcm/send', // Chrome (XF-234461)\"},{\"line\":148,\"text\":\"\\t\\t];\"},{\"line\":149,\"text\":\"\\t}\"},{\"line\":150,\"text\":\"}\"}],\"line\":146,\"text\":\"\\t\\t\\t'https://android.googleapis.com/gcm/send', // GCM\"},{\"context\":[{\"line\":145,\"text\":\"\\t\\treturn [\"},{\"line\":146,\"text\":\"\\t\\t\\t'https://android.googleapis.com/gcm/send', // GCM\"},{\"line\":147,\"text\":\"\\t\\t\\t'https://permanently-removed.invalid/fcm/send', // Chrome (XF-234461)\"},{\"line\":148,\"text\":\"\\t\\t];\"},{\"line\":149,\"text\":\"\\t}\"},{\"line\":150,\"text\":\"}\"}],\"line\":147,\"text\":\"\\t\\t\\t'https://permanently-removed.invalid/fcm/send', // Chrome (XF-234461)\"}],\"path\":\"/var/www/forums/newfi/public/src/XF/Repository/UserPushRepository.php\",\"present\":true,\"sha256\":\"19cd962e33aa63af754b4c72953d8545e197183e93e6e834e3d71d823cd0b6c6\"},\"xfrm_alert_handler\":{\"bytes\":280,\"matches\":[{\"context\":[{\"line\":5,\"text\":\"use XF\\\\Alert\\\\AbstractHandler;\"},{\"line\":6,\"text\":\"\"},{\"line\":7,\"text\":\"class ResourceItem extends AbstractHandler\"},{\"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\":13,\"text\":\"\\t\\treturn [\"}],\"line\":7,\"text\":\"class ResourceItem extends AbstractHandler\"},{\"context\":[{\"line\":7,\"text\":\"class ResourceItem extends AbstractHandler\"},{\"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\":13,\"text\":\"\\t\\treturn [\"},{\"line\":14,\"text\":\"\\t\\t\\t'Category',\"},{\"line\":15,\"text\":\"\\t\\t\\t\\\"Category.Permissions|{$visitor->permission_combination_id}\\\",\"}],\"line\":9,\"text\":\"\\tpublic function getEntityWith(): array\"}],\"path\":\"/var/www/forums/newfi/public/src/addons/XFRM/Alert/ResourceItem.php\",\"present\":true,\"sha256\":\"6c57bdaba8e5fa2a943222faf41c1f7acf9ffedc36427018707944226d7225a3\"},\"xfrm_alert_templates\":{\"bytes\":244652,\"matches\":[{\"context\":[{\"line\":778,\"text\":\" <template type=\\\"public\\\" title=\\\"alert_resource_rating_pre_reg\\\" version_id=\\\"2020270\\\" version_string=\\\"2.2.2\\\"><![CDATA[<xf:if is=\\\"$extra.welcome\\\">\"},{\"line\":779,\"text\":\"\\t{{ phrase('welcome_to_boardtitle', {'boardTitle': $xf.options.boardTitle}) }}\"}],\"line\":778,\"text\":\" <template type=\\\"public\\\" title=\\\"alert_resource_rating_pre_reg\\\" version_id=\\\"2020270\\\" version_string=\\\"2.2.2\\\"><![CDATA[<xf:if is=\\\"$extra.welcome\\\">\"},{\"context\":[{\"line\":784,\"text\":\" <template type=\\\"public\\\" title=\\\"alert_resource_rating_reply\\\" version_id=\\\"2000010\\\" version_string=\\\"2.0.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_x_replied_review_resource_y', {\"},{\"line\":785,\"text\":\"\\t'name': username_link($user, false, {'defaultname': $alert.username}),\"}],\"line\":784,\"text\":\" <template type=\\\"public\\\" title=\\\"alert_resource_rating_reply\\\" version_id=\\\"2000010\\\" version_string=\\\"2.0.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_x_replied_review_resource_y', {\"},{\"context\":[{\"line\":788,\"text\":\" <template type=\\\"public\\\" title=\\\"alert_resource_rating_review\\\" version_id=\\\"2000010\\\" version_string=\\\"2.0.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_x_reviewed_resource_y', {\"},{\"line\":789,\"text\":\"\\t'username': username_link($user, false, {'defaultname': $alert.username}),\"}],\"line\":788,\"text\":\" <template type=\\\"public\\\" title=\\\"alert_resource_rating_review\\\" version_id=\\\"2000010\\\" version_string=\\\"2.0.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_x_reviewed_resource_y', {\"},{\"context\":[{\"line\":792,\"text\":\" <template type=\\\"public\\\" title=\\\"alert_resource_team_member_add\\\" version_id=\\\"2020010\\\" version_string=\\\"2.2.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_x_added_you_as_team_member_for_resource_y', {\"},{\"line\":793,\"text\":\"\\t'name': username_link($user, false, {'defaultname': $alert.username}),\"}],\"line\":792,\"text\":\" <template type=\\\"public\\\" title=\\\"alert_resource_team_member_add\\\" version_id=\\\"2020010\\\" version_string=\\\"2.2.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_x_added_you_as_team_member_for_resource_y', {\"},{\"context\":[{\"line\":796,\"text\":\" <template type=\\\"public\\\" title=\\\"alert_resource_team_member_leave\\\" version_id=\\\"2020010\\\" version_string=\\\"2.2.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_x_left_resource_team_for_resource_y', {\"},{\"line\":797,\"text\":\"\\t'name': username_link($user, false, {'defaultname': $alert.username}),\"}],\"line\":796,\"text\":\" <template type=\\\"public\\\" title=\\\"alert_resource_team_member_leave\\\" version_id=\\\"2020010\\\" version_string=\\\"2.2.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_x_left_resource_team_for_resource_y', {\"},{\"context\":[{\"line\":800,\"text\":\" <template type=\\\"public\\\" title=\\\"alert_resource_update_insert\\\" version_id=\\\"2000010\\\" version_string=\\\"2.0.0 Alpha\\\"><![CDATA[<xf:if is=\\\"$content.isDescription()\\\">\"},{\"line\":801,\"text\":\"\\t{{ phrase('xfrm_x_created_resource_y', {\"}],\"line\":800,\"text\":\" <template type=\\\"public\\\" title=\\\"alert_resource_update_insert\\\" version_id=\\\"2000010\\\" version_string=\\\"2.0.0 Alpha\\\"><![CDATA[<xf:if is=\\\"$content.isDescription()\\\">\"},{\"context\":[{\"line\":811,\"text\":\" <template type=\\\"public\\\" title=\\\"alert_resource_update_mention\\\" version_id=\\\"2000010\\\" version_string=\\\"2.0.0 Alpha\\\"><![CDATA[<xf:if is=\\\"$content.isDescription()\\\">\"},{\"line\":812,\"text\":\"\\t{{ phrase('xfrm_x_mentioned_you_in_resource_y', {\"}],\"line\":811,\"text\":\" <template type=\\\"public\\\" title=\\\"alert_resource_update_mention\\\" version_id=\\\"2000010\\\" version_string=\\\"2.0.0 Alpha\\\"><![CDATA[<xf:if is=\\\"$content.isDescription()\\\">\"},{\"context\":[{\"line\":822,\"text\":\" <template type=\\\"public\\\" title=\\\"alert_resource_update_reaction\\\" version_id=\\\"2010010\\\" version_string=\\\"2.1.0 Alpha\\\"><![CDATA[<xf:if is=\\\"$content.isDescription()\\\">\"},{\"line\":823,\"text\":\"\\t{{ phrase('xfrm_x_reacted_to_your_resource_y', {\"}],\"line\":822,\"text\":\" <template type=\\\"public\\\" title=\\\"alert_resource_update_reaction\\\" version_id=\\\"2010010\\\" version_string=\\\"2.1.0 Alpha\\\"><![CDATA[<xf:if is=\\\"$content.isDescription()\\\">\"},{\"context\":[{\"line\":835,\"text\":\" <template type=\\\"public\\\" title=\\\"alert_user_resource_delete\\\" version_id=\\\"2000010\\\" version_string=\\\"2.0.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_your_resource_x_was_deleted', {\"},{\"line\":836,\"text\":\"\\t'title': prefix('resource', $extra.prefix_id) . $extra.title\"}],\"line\":835,\"text\":\" <template type=\\\"public\\\" title=\\\"alert_user_resource_delete\\\" version_id=\\\"2000010\\\" version_string=\\\"2.0.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_your_resource_x_was_deleted', {\"},{\"context\":[{\"line\":839,\"text\":\" <template type=\\\"public\\\" title=\\\"alert_user_resource_edit\\\" version_id=\\\"2000010\\\" version_string=\\\"2.0.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_your_resource_x_was_edited', {\"},{\"line\":840,\"text\":\"\\t'title': '<a href=\\\"' . base_url($extra.link) . '\\\" class=\\\"fauxBlockLink-blockLink\\\">' . prefix('resource', $extra.prefix_id) . $extra.title . '</a>'\"}],\"line\":839,\"text\":\" <template type=\\\"public\\\" title=\\\"alert_user_resource_edit\\\" version_id=\\\"2000010\\\" version_string=\\\"2.0.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_your_resource_x_was_edited', {\"},{\"context\":[{\"line\":843,\"text\":\" <template type=\\\"public\\\" title=\\\"alert_user_resource_move\\\" version_id=\\\"2000010\\\" version_string=\\\"2.0.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_your_resource_x_was_moved', {\"},{\"line\":844,\"text\":\"\\t'title': '<a href=\\\"' . base_url($extra.link) . '\\\" class=\\\"fauxBlockLink-blockLink\\\">' . prefix('resource', $extra.prefix_id) . $extra.title . '</a>'\"}],\"line\":843,\"text\":\" <template type=\\\"public\\\" title=\\\"alert_user_resource_move\\\" version_id=\\\"2000010\\\" version_string=\\\"2.0.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_your_resource_x_was_moved', {\"},{\"context\":[{\"line\":847,\"text\":\" <template type=\\\"public\\\" title=\\\"alert_user_resource_rating_delete\\\" version_id=\\\"2000010\\\" version_string=\\\"2.0.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_your_review_for_x_was_deleted', {\"},{\"line\":848,\"text\":\"\\t'title': prefix('resource', $extra.prefix_id) . $extra.title\"}],\"line\":847,\"text\":\" <template type=\\\"public\\\" title=\\\"alert_user_resource_rating_delete\\\" version_id=\\\"2000010\\\" version_string=\\\"2.0.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_your_review_for_x_was_deleted', {\"},{\"context\":[{\"line\":851,\"text\":\" <template type=\\\"public\\\" title=\\\"alert_user_resource_reassign_from\\\" version_id=\\\"2000010\\\" version_string=\\\"2.0.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_your_resource_x_was_reassigned_to_y', {\"},{\"line\":852,\"text\":\"\\t'title': '<a href=\\\"' . base_url($extra.link) . '\\\" class=\\\"fauxBlockLink-blockLink\\\">' . prefix('resource', $extra.prefix_id) . $extra.title . '</a>',\"}],\"line\":851,\"text\":\" <template type=\\\"public\\\" title=\\\"alert_user_resource_reassign_from\\\" version_id=\\\"2000010\\\" version_string=\\\"2.0.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_your_resource_x_was_reassigned_to_y', {\"},{\"context\":[{\"line\":856,\"text\":\" <template type=\\\"public\\\" title=\\\"alert_user_resource_reassign_to\\\" version_id=\\\"2000010\\\" version_string=\\\"2.0.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_resource_x_was_reassigned_to_you', {\"},{\"line\":857,\"text\":\"\\t'title': '<a href=\\\"' . base_url($extra.link) . '\\\" class=\\\"fauxBlockLink-blockLink\\\">' . prefix('resource', $extra.prefix_id) . $extra.title . '</a>'\"}],\"line\":856,\"text\":\" <template type=\\\"public\\\" title=\\\"alert_user_resource_reassign_to\\\" version_id=\\\"2000010\\\" version_string=\\\"2.0.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_resource_x_was_reassigned_to_you', {\"},{\"context\":[{\"line\":860,\"text\":\" <template type=\\\"public\\\" title=\\\"alert_user_resource_update_delete\\\" version_id=\\\"2000010\\\" version_string=\\\"2.0.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_your_update_x_for_y_was_deleted', {\"},{\"line\":861,\"text\":\"\\t'update': $extra.update,\"}],\"line\":860,\"text\":\" <template type=\\\"public\\\" title=\\\"alert_user_resource_update_delete\\\" version_id=\\\"2000010\\\" version_string=\\\"2.0.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_your_update_x_for_y_was_deleted', {\"},{\"context\":[{\"line\":865,\"text\":\" <template type=\\\"public\\\" title=\\\"alert_user_resource_update_edit\\\" version_id=\\\"2000010\\\" version_string=\\\"2.0.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_your_update_x_for_y_was_edited', {\"},{\"line\":866,\"text\":\"\\t'update': $extra.update,\"}],\"line\":865,\"text\":\" <template type=\\\"public\\\" title=\\\"alert_user_resource_update_edit\\\" version_id=\\\"2000010\\\" version_string=\\\"2.0.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_your_update_x_for_y_was_edited', {\"},{\"context\":[{\"line\":1351,\"text\":\" <template type=\\\"public\\\" title=\\\"push_resource_rating_pre_reg\\\" version_id=\\\"2020270\\\" version_string=\\\"2.2.2\\\"><![CDATA[<xf:if is=\\\"$extra.welcome\\\">\"},{\"line\":1352,\"text\":\"\\t{{ phrase('welcome_to_boardtitle', {'boardTitle': $xf.options.boardTitle}) }}\"}],\"line\":1351,\"text\":\" <template type=\\\"public\\\" title=\\\"push_resource_rating_pre_reg\\\" version_id=\\\"2020270\\\" version_string=\\\"2.2.2\\\"><![CDATA[<xf:if is=\\\"$extra.welcome\\\">\"},{\"context\":[{\"line\":1358,\"text\":\" <template type=\\\"public\\\" title=\\\"push_resource_rating_reply\\\" version_id=\\\"2010010\\\" version_string=\\\"2.1.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_x_replied_review_resource_y', {\"},{\"line\":1359,\"text\":\"\\t'name': $user.username ?: $alert.username,\"}],\"line\":1358,\"text\":\" <template type=\\\"public\\\" title=\\\"push_resource_rating_reply\\\" version_id=\\\"2010010\\\" version_string=\\\"2.1.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_x_replied_review_resource_y', {\"},{\"context\":[{\"line\":1363,\"text\":\" <template type=\\\"public\\\" title=\\\"push_resource_rating_review\\\" version_id=\\\"2010010\\\" version_string=\\\"2.1.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_x_reviewed_resource_y', {\"},{\"line\":1364,\"text\":\"\\t'username': $user.username ?: $alert.username,\"}],\"line\":1363,\"text\":\" <template type=\\\"public\\\" title=\\\"push_resource_rating_review\\\" version_id=\\\"2010010\\\" version_string=\\\"2.1.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_x_reviewed_resource_y', {\"},{\"context\":[{\"line\":1368,\"text\":\" <template type=\\\"public\\\" title=\\\"push_resource_team_member_add\\\" version_id=\\\"2020010\\\" version_string=\\\"2.2.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_x_added_you_as_team_member_for_resource_y', {\"},{\"line\":1369,\"text\":\"\\t'name': $user.username ?: $alert.username,\"}],\"line\":1368,\"text\":\" <template type=\\\"public\\\" title=\\\"push_resource_team_member_add\\\" version_id=\\\"2020010\\\" version_string=\\\"2.2.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_x_added_you_as_team_member_for_resource_y', {\"},{\"context\":[{\"line\":1373,\"text\":\" <template type=\\\"public\\\" title=\\\"push_resource_team_member_leave\\\" version_id=\\\"2020010\\\" version_string=\\\"2.2.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_x_left_resource_team_for_resource_y', {\"},{\"line\":1374,\"text\":\"\\t'name': $user.username ?: $alert.username,\"}],\"line\":1373,\"text\":\" <template type=\\\"public\\\" title=\\\"push_resource_team_member_leave\\\" version_id=\\\"2020010\\\" version_string=\\\"2.2.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_x_left_resource_team_for_resource_y', {\"},{\"context\":[{\"line\":1378,\"text\":\" <template type=\\\"public\\\" title=\\\"push_resource_update_insert\\\" version_id=\\\"2010010\\\" version_string=\\\"2.1.0 Alpha\\\"><![CDATA[<xf:if is=\\\"$content.isDescription()\\\">\"},{\"line\":1379,\"text\":\"\\t{{ phrase('xfrm_x_created_resource_y', {\"}],\"line\":1378,\"text\":\" <template type=\\\"public\\\" title=\\\"push_resource_update_insert\\\" version_id=\\\"2010010\\\" version_string=\\\"2.1.0 Alpha\\\"><![CDATA[<xf:if is=\\\"$content.isDescription()\\\">\"},{\"context\":[{\"line\":1391,\"text\":\" <template type=\\\"public\\\" title=\\\"push_resource_update_mention\\\" version_id=\\\"2010010\\\" version_string=\\\"2.1.0 Alpha\\\"><![CDATA[<xf:if is=\\\"$content.isDescription()\\\">\"},{\"line\":1392,\"text\":\"\\t{{ phrase('xfrm_x_mentioned_you_in_resource_y', {\"}],\"line\":1391,\"text\":\" <template type=\\\"public\\\" title=\\\"push_resource_update_mention\\\" version_id=\\\"2010010\\\" version_string=\\\"2.1.0 Alpha\\\"><![CDATA[<xf:if is=\\\"$content.isDescription()\\\">\"},{\"context\":[{\"line\":1404,\"text\":\" <template type=\\\"public\\\" title=\\\"push_resource_update_reaction\\\" version_id=\\\"2020010\\\" version_string=\\\"2.2.0 Alpha\\\"><![CDATA[<xf:if is=\\\"$content.isDescription()\\\">\"},{\"line\":1405,\"text\":\"\\t{{ phrase('xfrm_x_reacted_to_your_resource_y', {\"}],\"line\":1404,\"text\":\" <template type=\\\"public\\\" title=\\\"push_resource_update_reaction\\\" version_id=\\\"2020010\\\" version_string=\\\"2.2.0 Alpha\\\"><![CDATA[<xf:if is=\\\"$content.isDescription()\\\">\"},{\"context\":[{\"line\":1423,\"text\":\" <template type=\\\"public\\\" title=\\\"push_user_resource_delete\\\" version_id=\\\"2010010\\\" version_string=\\\"2.1.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_your_resource_x_was_deleted', {\"},{\"line\":1424,\"text\":\"\\t'title': prefix('resource', $extra.prefix_id, 'plain') . $extra.title\"}],\"line\":1423,\"text\":\" <template type=\\\"public\\\" title=\\\"push_user_resource_delete\\\" version_id=\\\"2010010\\\" version_string=\\\"2.1.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_your_resource_x_was_deleted', {\"},{\"context\":[{\"line\":1427,\"text\":\" <template type=\\\"public\\\" title=\\\"push_user_resource_edit\\\" version_id=\\\"2010010\\\" version_string=\\\"2.1.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_your_resource_x_was_edited', {\"},{\"line\":1428,\"text\":\"\\t'title': prefix('resource', $extra.prefix_id, 'plain') . $extra.title\"}],\"line\":1427,\"text\":\" <template type=\\\"public\\\" title=\\\"push_user_resource_edit\\\" version_id=\\\"2010010\\\" version_string=\\\"2.1.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_your_resource_x_was_edited', {\"},{\"context\":[{\"line\":1432,\"text\":\" <template type=\\\"public\\\" title=\\\"push_user_resource_move\\\" version_id=\\\"2010010\\\" version_string=\\\"2.1.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_your_resource_x_was_moved', {\"},{\"line\":1433,\"text\":\"\\t'title': prefix('resource', $extra.prefix_id, 'plain') . $extra.title\"}],\"line\":1432,\"text\":\" <template type=\\\"public\\\" title=\\\"push_user_resource_move\\\" version_id=\\\"2010010\\\" version_string=\\\"2.1.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_your_resource_x_was_moved', {\"},{\"context\":[{\"line\":1437,\"text\":\" <template type=\\\"public\\\" title=\\\"push_user_resource_rating_delete\\\" version_id=\\\"2010010\\\" version_string=\\\"2.1.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_your_review_for_x_was_deleted', {\"},{\"line\":1438,\"text\":\"\\t'title': prefix('resource', $extra.prefix_id, 'plain') . $extra.title\"}],\"line\":1437,\"text\":\" <template type=\\\"public\\\" title=\\\"push_user_resource_rating_delete\\\" version_id=\\\"2010010\\\" version_string=\\\"2.1.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_your_review_for_x_was_deleted', {\"},{\"context\":[{\"line\":1441,\"text\":\" <template type=\\\"public\\\" title=\\\"push_user_resource_reassign_from\\\" version_id=\\\"2010010\\\" version_string=\\\"2.1.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_your_resource_x_was_reassigned_to_y', {\"},{\"line\":1442,\"text\":\"\\t'title': prefix('resource', $extra.prefix_id, 'plain') . $extra.title,\"}],\"line\":1441,\"text\":\" <template type=\\\"public\\\" title=\\\"push_user_resource_reassign_from\\\" version_id=\\\"2010010\\\" version_string=\\\"2.1.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_your_resource_x_was_reassigned_to_y', {\"},{\"context\":[{\"line\":1447,\"text\":\" <template type=\\\"public\\\" title=\\\"push_user_resource_reassign_to\\\" version_id=\\\"2010010\\\" version_string=\\\"2.1.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_resource_x_was_reassigned_to_you', {\"},{\"line\":1448,\"text\":\"\\t'title': prefix('resource', $extra.prefix_id, 'plain') . $extra.title\"}],\"line\":1447,\"text\":\" <template type=\\\"public\\\" title=\\\"push_user_resource_reassign_to\\\" version_id=\\\"2010010\\\" version_string=\\\"2.1.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_resource_x_was_reassigned_to_you', {\"},{\"context\":[{\"line\":1452,\"text\":\" <template type=\\\"public\\\" title=\\\"push_user_resource_update_delete\\\" version_id=\\\"2010010\\\" version_string=\\\"2.1.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_your_update_x_for_y_was_deleted', {\"},{\"line\":1453,\"text\":\"\\t'update': $extra.update,\"}],\"line\":1452,\"text\":\" <template type=\\\"public\\\" title=\\\"push_user_resource_update_delete\\\" version_id=\\\"2010010\\\" version_string=\\\"2.1.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_your_update_x_for_y_was_deleted', {\"},{\"context\":[{\"line\":1457,\"text\":\" <template type=\\\"public\\\" title=\\\"push_user_resource_update_edit\\\" version_id=\\\"2010010\\\" version_string=\\\"2.1.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_your_update_x_for_y_was_edited', {\"},{\"line\":1458,\"text\":\"\\t'update': $extra.update,\"}],\"line\":1457,\"text\":\" <template type=\\\"public\\\" title=\\\"push_user_resource_update_edit\\\" version_id=\\\"2010010\\\" version_string=\\\"2.1.0 Alpha\\\"><![CDATA[{{ phrase('xfrm_your_update_x_for_y_was_edited', {\"}],\"path\":\"/var/www/forums/newfi/public/src/addons/XFRM/_data/templates.xml\",\"present\":true,\"sha256\":\"50950be731ba43367357081cd603c5d16caa8ba1a4155f8e4aa1cfb306d71ead\"},\"xfrm_content_type_fields\":{\"bytes\":6442,\"matches\":[{\"context\":[{\"line\":2,\"text\":\"<content_type_fields>\"},{\"line\":3,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"activity_log_handler_class\\\">XFRM\\\\ActivityLog\\\\ResourceItemHandler</field>\"},{\"line\":4,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"alert_handler_class\\\">XFRM\\\\Alert\\\\ResourceItem</field>\"},{\"line\":5,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"approval_queue_handler_class\\\">XFRM\\\\ApprovalQueue\\\\ResourceItem</field>\"}],\"line\":3,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"activity_log_handler_class\\\">XFRM\\\\ActivityLog\\\\ResourceItemHandler</field>\"},{\"context\":[{\"line\":3,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"activity_log_handler_class\\\">XFRM\\\\ActivityLog\\\\ResourceItemHandler</field>\"},{\"line\":4,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"alert_handler_class\\\">XFRM\\\\Alert\\\\ResourceItem</field>\"},{\"line\":5,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"approval_queue_handler_class\\\">XFRM\\\\ApprovalQueue\\\\ResourceItem</field>\"},{\"line\":6,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"bookmark_handler_class\\\">XFRM\\\\Bookmark\\\\ResourceItem</field>\"}],\"line\":4,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"alert_handler_class\\\">XFRM\\\\Alert\\\\ResourceItem</field>\"},{\"context\":[{\"line\":4,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"alert_handler_class\\\">XFRM\\\\Alert\\\\ResourceItem</field>\"},{\"line\":5,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"approval_queue_handler_class\\\">XFRM\\\\ApprovalQueue\\\\ResourceItem</field>\"},{\"line\":6,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"bookmark_handler_class\\\">XFRM\\\\Bookmark\\\\ResourceItem</field>\"},{\"line\":7,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"email_stop_class\\\">XFRM\\\\EmailStop\\\\ResourceItem</field>\"}],\"line\":5,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"approval_queue_handler_class\\\">XFRM\\\\ApprovalQueue\\\\ResourceItem</field>\"},{\"context\":[{\"line\":5,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"approval_queue_handler_class\\\">XFRM\\\\ApprovalQueue\\\\ResourceItem</field>\"},{\"line\":6,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"bookmark_handler_class\\\">XFRM\\\\Bookmark\\\\ResourceItem</field>\"},{\"line\":7,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"email_stop_class\\\">XFRM\\\\EmailStop\\\\ResourceItem</field>\"},{\"line\":8,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"embed_resolver_class\\\">XFRM\\\\EmbedResolver\\\\ResourceItem</field>\"}],\"line\":6,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"bookmark_handler_class\\\">XFRM\\\\Bookmark\\\\ResourceItem</field>\"},{\"context\":[{\"line\":6,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"bookmark_handler_class\\\">XFRM\\\\Bookmark\\\\ResourceItem</field>\"},{\"line\":7,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"email_stop_class\\\">XFRM\\\\EmailStop\\\\ResourceItem</field>\"},{\"line\":8,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"embed_resolver_class\\\">XFRM\\\\EmbedResolver\\\\ResourceItem</field>\"},{\"line\":9,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"entity\\\">XFRM:ResourceItem</field>\"}],\"line\":7,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"email_stop_class\\\">XFRM\\\\EmailStop\\\\ResourceItem</field>\"},{\"context\":[{\"line\":7,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"email_stop_class\\\">XFRM\\\\EmailStop\\\\ResourceItem</field>\"},{\"line\":8,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"embed_resolver_class\\\">XFRM\\\\EmbedResolver\\\\ResourceItem</field>\"},{\"line\":9,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"entity\\\">XFRM:ResourceItem</field>\"},{\"line\":10,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"featured_content_handler_class\\\">XFRM\\\\FeaturedContent\\\\ResourceItem</field>\"}],\"line\":8,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"embed_resolver_class\\\">XFRM\\\\EmbedResolver\\\\ResourceItem</field>\"},{\"context\":[{\"line\":8,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"embed_resolver_class\\\">XFRM\\\\EmbedResolver\\\\ResourceItem</field>\"},{\"line\":9,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"entity\\\">XFRM:ResourceItem</field>\"},{\"line\":10,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"featured_content_handler_class\\\">XFRM\\\\FeaturedContent\\\\ResourceItem</field>\"},{\"line\":11,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"find_new_handler_class\\\">XFRM\\\\FindNew\\\\ResourceItem</field>\"}],\"line\":9,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"entity\\\">XFRM:ResourceItem</field>\"},{\"context\":[{\"line\":9,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"entity\\\">XFRM:ResourceItem</field>\"},{\"line\":10,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"featured_content_handler_class\\\">XFRM\\\\FeaturedContent\\\\ResourceItem</field>\"},{\"line\":11,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"find_new_handler_class\\\">XFRM\\\\FindNew\\\\ResourceItem</field>\"},{\"line\":12,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"inline_mod_handler_class\\\">XFRM\\\\InlineMod\\\\ResourceItem</field>\"}],\"line\":10,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"featured_content_handler_class\\\">XFRM\\\\FeaturedContent\\\\ResourceItem</field>\"},{\"context\":[{\"line\":10,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"featured_content_handler_class\\\">XFRM\\\\FeaturedContent\\\\ResourceItem</field>\"},{\"line\":11,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"find_new_handler_class\\\">XFRM\\\\FindNew\\\\ResourceItem</field>\"},{\"line\":12,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"inline_mod_handler_class\\\">XFRM\\\\InlineMod\\\\ResourceItem</field>\"},{\"line\":13,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"moderator_log_handler_class\\\">XFRM\\\\ModeratorLog\\\\ResourceItem</field>\"}],\"line\":11,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"find_new_handler_class\\\">XFRM\\\\FindNew\\\\ResourceItem</field>\"},{\"context\":[{\"line\":11,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"find_new_handler_class\\\">XFRM\\\\FindNew\\\\ResourceItem</field>\"},{\"line\":12,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"inline_mod_handler_class\\\">XFRM\\\\InlineMod\\\\ResourceItem</field>\"},{\"line\":13,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"moderator_log_handler_class\\\">XFRM\\\\ModeratorLog\\\\ResourceItem</field>\"},{\"line\":14,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"news_feed_handler_class\\\">XFRM\\\\NewsFeed\\\\ResourceItem</field>\"}],\"line\":12,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"inline_mod_handler_class\\\">XFRM\\\\InlineMod\\\\ResourceItem</field>\"},{\"context\":[{\"line\":12,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"inline_mod_handler_class\\\">XFRM\\\\InlineMod\\\\ResourceItem</field>\"},{\"line\":13,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"moderator_log_handler_class\\\">XFRM\\\\ModeratorLog\\\\ResourceItem</field>\"},{\"line\":14,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"news_feed_handler_class\\\">XFRM\\\\NewsFeed\\\\ResourceItem</field>\"},{\"line\":15,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"phrase\\\">xfrm_resource</field>\"}],\"line\":13,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"moderator_log_handler_class\\\">XFRM\\\\ModeratorLog\\\\ResourceItem</field>\"},{\"context\":[{\"line\":13,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"moderator_log_handler_class\\\">XFRM\\\\ModeratorLog\\\\ResourceItem</field>\"},{\"line\":14,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"news_feed_handler_class\\\">XFRM\\\\NewsFeed\\\\ResourceItem</field>\"},{\"line\":15,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"phrase\\\">xfrm_resource</field>\"},{\"line\":16,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"phrase_plural\\\">xfrm_resources</field>\"}],\"line\":14,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"news_feed_handler_class\\\">XFRM\\\\NewsFeed\\\\ResourceItem</field>\"},{\"context\":[{\"line\":14,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"news_feed_handler_class\\\">XFRM\\\\NewsFeed\\\\ResourceItem</field>\"},{\"line\":15,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"phrase\\\">xfrm_resource</field>\"},{\"line\":16,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"phrase_plural\\\">xfrm_resources</field>\"},{\"line\":17,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"search_handler_class\\\">XFRM\\\\Search\\\\Data\\\\ResourceItem</field>\"}],\"line\":15,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"phrase\\\">xfrm_resource</field>\"},{\"context\":[{\"line\":15,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"phrase\\\">xfrm_resource</field>\"},{\"line\":16,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"phrase_plural\\\">xfrm_resources</field>\"},{\"line\":17,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"search_handler_class\\\">XFRM\\\\Search\\\\Data\\\\ResourceItem</field>\"},{\"line\":18,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"sitemap_handler_class\\\">XFRM\\\\Sitemap\\\\ResourceItem</field>\"}],\"line\":16,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"phrase_plural\\\">xfrm_resources</field>\"},{\"context\":[{\"line\":16,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"phrase_plural\\\">xfrm_resources</field>\"},{\"line\":17,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"search_handler_class\\\">XFRM\\\\Search\\\\Data\\\\ResourceItem</field>\"},{\"line\":18,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"sitemap_handler_class\\\">XFRM\\\\Sitemap\\\\ResourceItem</field>\"},{\"line\":19,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"spam_handler_class\\\">XFRM\\\\Spam\\\\Cleaner\\\\ResourceItem</field>\"}],\"line\":17,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"search_handler_class\\\">XFRM\\\\Search\\\\Data\\\\ResourceItem</field>\"},{\"context\":[{\"line\":17,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"search_handler_class\\\">XFRM\\\\Search\\\\Data\\\\ResourceItem</field>\"},{\"line\":18,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"sitemap_handler_class\\\">XFRM\\\\Sitemap\\\\ResourceItem</field>\"},{\"line\":19,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"spam_handler_class\\\">XFRM\\\\Spam\\\\Cleaner\\\\ResourceItem</field>\"},{\"line\":20,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"stats_handler_class\\\">XFRM\\\\Stats\\\\ResourceItem</field>\"}],\"line\":18,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"sitemap_handler_class\\\">XFRM\\\\Sitemap\\\\ResourceItem</field>\"},{\"context\":[{\"line\":18,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"sitemap_handler_class\\\">XFRM\\\\Sitemap\\\\ResourceItem</field>\"},{\"line\":19,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"spam_handler_class\\\">XFRM\\\\Spam\\\\Cleaner\\\\ResourceItem</field>\"},{\"line\":20,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"stats_handler_class\\\">XFRM\\\\Stats\\\\ResourceItem</field>\"},{\"line\":21,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"tag_handler_class\\\">XFRM\\\\Tag\\\\ResourceItem</field>\"}],\"line\":19,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"spam_handler_class\\\">XFRM\\\\Spam\\\\Cleaner\\\\ResourceItem</field>\"},{\"context\":[{\"line\":19,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"spam_handler_class\\\">XFRM\\\\Spam\\\\Cleaner\\\\ResourceItem</field>\"},{\"line\":20,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"stats_handler_class\\\">XFRM\\\\Stats\\\\ResourceItem</field>\"},{\"line\":21,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"tag_handler_class\\\">XFRM\\\\Tag\\\\ResourceItem</field>\"},{\"line\":22,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"trending_content_handler_class\\\">XFRM\\\\TrendingContent\\\\ResourceItemHandler</field>\"}],\"line\":20,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"stats_handler_class\\\">XFRM\\\\Stats\\\\ResourceItem</field>\"},{\"context\":[{\"line\":20,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"stats_handler_class\\\">XFRM\\\\Stats\\\\ResourceItem</field>\"},{\"line\":21,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"tag_handler_class\\\">XFRM\\\\Tag\\\\ResourceItem</field>\"},{\"line\":22,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"trending_content_handler_class\\\">XFRM\\\\TrendingContent\\\\ResourceItemHandler</field>\"},{\"line\":23,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"webhook_handler_class\\\">XFRM\\\\Webhook\\\\Event\\\\ResourceItem</field>\"}],\"line\":21,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"tag_handler_class\\\">XFRM\\\\Tag\\\\ResourceItem</field>\"},{\"context\":[{\"line\":21,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"tag_handler_class\\\">XFRM\\\\Tag\\\\ResourceItem</field>\"},{\"line\":22,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"trending_content_handler_class\\\">XFRM\\\\TrendingContent\\\\ResourceItemHandler</field>\"},{\"line\":23,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"webhook_handler_class\\\">XFRM\\\\Webhook\\\\Event\\\\ResourceItem</field>\"},{\"line\":24,\"text\":\" <field content_type=\\\"resource_category\\\" field_name=\\\"email_stop_class\\\">XFRM\\\\EmailStop\\\\Category</field>\"}],\"line\":22,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"trending_content_handler_class\\\">XFRM\\\\TrendingContent\\\\ResourceItemHandler</field>\"},{\"context\":[{\"line\":22,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"trending_content_handler_class\\\">XFRM\\\\TrendingContent\\\\ResourceItemHandler</field>\"},{\"line\":23,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"webhook_handler_class\\\">XFRM\\\\Webhook\\\\Event\\\\ResourceItem</field>\"},{\"line\":24,\"text\":\" <field content_type=\\\"resource_category\\\" field_name=\\\"email_stop_class\\\">XFRM\\\\EmailStop\\\\Category</field>\"},{\"line\":25,\"text\":\" <field content_type=\\\"resource_category\\\" field_name=\\\"permission_handler_class\\\">XFRM\\\\Permission\\\\CategoryPermissions</field>\"}],\"line\":23,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"webhook_handler_class\\\">XFRM\\\\Webhook\\\\Event\\\\ResourceItem</field>\"},{\"context\":[{\"line\":23,\"text\":\" <field content_type=\\\"resource\\\" field_name=\\\"webhook_handler_class\\\">XFRM\\\\Webhook\\\\Event\\\\ResourceItem</field>\"},{\"line\":24,\"text\":\" <field content_type=\\\"resource_category\\\" field_name=\\\"email_stop_class\\\">XFRM\\\\EmailStop\\\\Category</field>\"},{\"line\":25,\"text\":\" <field content_type=\\\"resource_category\\\" field_name=\\\"permission_handler_class\\\">XFRM\\\\Permission\\\\CategoryPermissions</field>\"},{\"line\":26,\"text\":\" <field content_type=\\\"resource_category\\\" field_name=\\\"phrase\\\">xfrm_resource_category</field>\"}],\"line\":24,\"text\":\" <field content_type=\\\"resource_category\\\" field_name=\\\"email_stop_class\\\">XFRM\\\\EmailStop\\\\Category</field>\"},{\"context\":[{\"line\":24,\"text\":\" <field content_type=\\\"resource_category\\\" field_name=\\\"email_stop_class\\\">XFRM\\\\EmailStop\\\\Category</field>\"},{\"line\":25,\"text\":\" <field content_type=\\\"resource_category\\\" field_name=\\\"permission_handler_class\\\">XFRM\\\\Permission\\\\CategoryPermissions</field>\"},{\"line\":26,\"text\":\" <field content_type=\\\"resource_category\\\" field_name=\\\"phrase\\\">xfrm_resource_category</field>\"},{\"line\":27,\"text\":\" <field content_type=\\\"resource_category\\\" field_name=\\\"phrase_plural\\\">xfrm_resource_categories</field>\"}],\"line\":25,\"text\":\" <field content_type=\\\"resource_category\\\" field_name=\\\"permission_handler_class\\\">XFRM\\\\Permission\\\\CategoryPermissions</field>\"},{\"context\":[{\"line\":25,\"text\":\" <field content_type=\\\"resource_category\\\" field_name=\\\"permission_handler_class\\\">XFRM\\\\Permission\\\\CategoryPermissions</field>\"},{\"line\":26,\"text\":\" <field content_type=\\\"resource_category\\\" field_name=\\\"phrase\\\">xfrm_resource_category</field>\"},{\"line\":27,\"text\":\" <field content_type=\\\"resource_category\\\" field_name=\\\"phrase_plural\\\">xfrm_resource_categories</field>\"},{\"line\":28,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"alert_handler_class\\\">XFRM\\\\Alert\\\\ResourceRating</field>\"}],\"line\":26,\"text\":\" <field content_type=\\\"resource_category\\\" field_name=\\\"phrase\\\">xfrm_resource_category</field>\"},{\"context\":[{\"line\":26,\"text\":\" <field content_type=\\\"resource_category\\\" field_name=\\\"phrase\\\">xfrm_resource_category</field>\"},{\"line\":27,\"text\":\" <field content_type=\\\"resource_category\\\" field_name=\\\"phrase_plural\\\">xfrm_resource_categories</field>\"},{\"line\":28,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"alert_handler_class\\\">XFRM\\\\Alert\\\\ResourceRating</field>\"},{\"line\":29,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"content_vote_handler_class\\\">XFRM\\\\ContentVote\\\\ResourceRating</field>\"}],\"line\":27,\"text\":\" <field content_type=\\\"resource_category\\\" field_name=\\\"phrase_plural\\\">xfrm_resource_categories</field>\"},{\"context\":[{\"line\":27,\"text\":\" <field content_type=\\\"resource_category\\\" field_name=\\\"phrase_plural\\\">xfrm_resource_categories</field>\"},{\"line\":28,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"alert_handler_class\\\">XFRM\\\\Alert\\\\ResourceRating</field>\"},{\"line\":29,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"content_vote_handler_class\\\">XFRM\\\\ContentVote\\\\ResourceRating</field>\"},{\"line\":30,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"embed_resolver_class\\\">XFRM\\\\EmbedResolver\\\\ResourceRating</field>\"}],\"line\":28,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"alert_handler_class\\\">XFRM\\\\Alert\\\\ResourceRating</field>\"},{\"context\":[{\"line\":28,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"alert_handler_class\\\">XFRM\\\\Alert\\\\ResourceRating</field>\"},{\"line\":29,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"content_vote_handler_class\\\">XFRM\\\\ContentVote\\\\ResourceRating</field>\"},{\"line\":30,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"embed_resolver_class\\\">XFRM\\\\EmbedResolver\\\\ResourceRating</field>\"},{\"line\":31,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"entity\\\">XFRM:ResourceRating</field>\"}],\"line\":29,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"content_vote_handler_class\\\">XFRM\\\\ContentVote\\\\ResourceRating</field>\"},{\"context\":[{\"line\":29,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"content_vote_handler_class\\\">XFRM\\\\ContentVote\\\\ResourceRating</field>\"},{\"line\":30,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"embed_resolver_class\\\">XFRM\\\\EmbedResolver\\\\ResourceRating</field>\"},{\"line\":31,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"entity\\\">XFRM:ResourceRating</field>\"},{\"line\":32,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"moderator_log_handler_class\\\">XFRM\\\\ModeratorLog\\\\ResourceRating</field>\"}],\"line\":30,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"embed_resolver_class\\\">XFRM\\\\EmbedResolver\\\\ResourceRating</field>\"},{\"context\":[{\"line\":30,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"embed_resolver_class\\\">XFRM\\\\EmbedResolver\\\\ResourceRating</field>\"},{\"line\":31,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"entity\\\">XFRM:ResourceRating</field>\"},{\"line\":32,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"moderator_log_handler_class\\\">XFRM\\\\ModeratorLog\\\\ResourceRating</field>\"},{\"line\":33,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"news_feed_handler_class\\\">XFRM\\\\NewsFeed\\\\ResourceRating</field>\"}],\"line\":31,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"entity\\\">XFRM:ResourceRating</field>\"},{\"context\":[{\"line\":31,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"entity\\\">XFRM:ResourceRating</field>\"},{\"line\":32,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"moderator_log_handler_class\\\">XFRM\\\\ModeratorLog\\\\ResourceRating</field>\"},{\"line\":33,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"news_feed_handler_class\\\">XFRM\\\\NewsFeed\\\\ResourceRating</field>\"},{\"line\":34,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"phrase\\\">xfrm_resource_rating</field>\"}],\"line\":32,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"moderator_log_handler_class\\\">XFRM\\\\ModeratorLog\\\\ResourceRating</field>\"},{\"context\":[{\"line\":32,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"moderator_log_handler_class\\\">XFRM\\\\ModeratorLog\\\\ResourceRating</field>\"},{\"line\":33,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"news_feed_handler_class\\\">XFRM\\\\NewsFeed\\\\ResourceRating</field>\"},{\"line\":34,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"phrase\\\">xfrm_resource_rating</field>\"},{\"line\":35,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"report_handler_class\\\">XFRM\\\\Report\\\\ResourceRating</field>\"}],\"line\":33,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"news_feed_handler_class\\\">XFRM\\\\NewsFeed\\\\ResourceRating</field>\"},{\"context\":[{\"line\":33,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"news_feed_handler_class\\\">XFRM\\\\NewsFeed\\\\ResourceRating</field>\"},{\"line\":34,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"phrase\\\">xfrm_resource_rating</field>\"},{\"line\":35,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"report_handler_class\\\">XFRM\\\\Report\\\\ResourceRating</field>\"},{\"line\":36,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"spam_handler_class\\\">XFRM\\\\Spam\\\\Cleaner\\\\ResourceRating</field>\"}],\"line\":34,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"phrase\\\">xfrm_resource_rating</field>\"},{\"context\":[{\"line\":34,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"phrase\\\">xfrm_resource_rating</field>\"},{\"line\":35,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"report_handler_class\\\">XFRM\\\\Report\\\\ResourceRating</field>\"},{\"line\":36,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"spam_handler_class\\\">XFRM\\\\Spam\\\\Cleaner\\\\ResourceRating</field>\"},{\"line\":37,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"warning_handler_class\\\">XFRM\\\\Warning\\\\ResourceRating</field>\"}],\"line\":35,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"report_handler_class\\\">XFRM\\\\Report\\\\ResourceRating</field>\"},{\"context\":[{\"line\":35,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"report_handler_class\\\">XFRM\\\\Report\\\\ResourceRating</field>\"},{\"line\":36,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"spam_handler_class\\\">XFRM\\\\Spam\\\\Cleaner\\\\ResourceRating</field>\"},{\"line\":37,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"warning_handler_class\\\">XFRM\\\\Warning\\\\ResourceRating</field>\"},{\"line\":38,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"webhook_handler_class\\\">XFRM\\\\Webhook\\\\Event\\\\ResourceRating</field>\"}],\"line\":36,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"spam_handler_class\\\">XFRM\\\\Spam\\\\Cleaner\\\\ResourceRating</field>\"},{\"context\":[{\"line\":36,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"spam_handler_class\\\">XFRM\\\\Spam\\\\Cleaner\\\\ResourceRating</field>\"},{\"line\":37,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"warning_handler_class\\\">XFRM\\\\Warning\\\\ResourceRating</field>\"},{\"line\":38,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"webhook_handler_class\\\">XFRM\\\\Webhook\\\\Event\\\\ResourceRating</field>\"},{\"line\":39,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"activity_log_handler_class\\\">XFRM\\\\ActivityLog\\\\ResourceUpdateHandler</field>\"}],\"line\":37,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"warning_handler_class\\\">XFRM\\\\Warning\\\\ResourceRating</field>\"},{\"context\":[{\"line\":37,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"warning_handler_class\\\">XFRM\\\\Warning\\\\ResourceRating</field>\"},{\"line\":38,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"webhook_handler_class\\\">XFRM\\\\Webhook\\\\Event\\\\ResourceRating</field>\"},{\"line\":39,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"activity_log_handler_class\\\">XFRM\\\\ActivityLog\\\\ResourceUpdateHandler</field>\"},{\"line\":40,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"alert_handler_class\\\">XFRM\\\\Alert\\\\ResourceUpdate</field>\"}],\"line\":38,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"webhook_handler_class\\\">XFRM\\\\Webhook\\\\Event\\\\ResourceRating</field>\"},{\"context\":[{\"line\":38,\"text\":\" <field content_type=\\\"resource_rating\\\" field_name=\\\"webhook_handler_class\\\">XFRM\\\\Webhook\\\\Event\\\\ResourceRating</field>\"},{\"line\":39,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"activity_log_handler_class\\\">XFRM\\\\ActivityLog\\\\ResourceUpdateHandler</field>\"},{\"line\":40,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"alert_handler_class\\\">XFRM\\\\Alert\\\\ResourceUpdate</field>\"},{\"line\":41,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"approval_queue_handler_class\\\">XFRM\\\\ApprovalQueue\\\\ResourceUpdate</field>\"}],\"line\":39,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"activity_log_handler_class\\\">XFRM\\\\ActivityLog\\\\ResourceUpdateHandler</field>\"},{\"context\":[{\"line\":39,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"activity_log_handler_class\\\">XFRM\\\\ActivityLog\\\\ResourceUpdateHandler</field>\"},{\"line\":40,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"alert_handler_class\\\">XFRM\\\\Alert\\\\ResourceUpdate</field>\"},{\"line\":41,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"approval_queue_handler_class\\\">XFRM\\\\ApprovalQueue\\\\ResourceUpdate</field>\"},{\"line\":42,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"attachment_handler_class\\\">XFRM\\\\Attachment\\\\ResourceUpdate</field>\"}],\"line\":40,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"alert_handler_class\\\">XFRM\\\\Alert\\\\ResourceUpdate</field>\"},{\"context\":[{\"line\":40,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"alert_handler_class\\\">XFRM\\\\Alert\\\\ResourceUpdate</field>\"},{\"line\":41,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"approval_queue_handler_class\\\">XFRM\\\\ApprovalQueue\\\\ResourceUpdate</field>\"},{\"line\":42,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"attachment_handler_class\\\">XFRM\\\\Attachment\\\\ResourceUpdate</field>\"},{\"line\":43,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"bookmark_handler_class\\\">XFRM\\\\Bookmark\\\\ResourceUpdate</field>\"}],\"line\":41,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"approval_queue_handler_class\\\">XFRM\\\\ApprovalQueue\\\\ResourceUpdate</field>\"},{\"context\":[{\"line\":41,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"approval_queue_handler_class\\\">XFRM\\\\ApprovalQueue\\\\ResourceUpdate</field>\"},{\"line\":42,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"attachment_handler_class\\\">XFRM\\\\Attachment\\\\ResourceUpdate</field>\"},{\"line\":43,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"bookmark_handler_class\\\">XFRM\\\\Bookmark\\\\ResourceUpdate</field>\"},{\"line\":44,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"edit_history_handler_class\\\">XFRM\\\\EditHistory\\\\ResourceUpdate</field>\"}],\"line\":42,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"attachment_handler_class\\\">XFRM\\\\Attachment\\\\ResourceUpdate</field>\"},{\"context\":[{\"line\":42,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"attachment_handler_class\\\">XFRM\\\\Attachment\\\\ResourceUpdate</field>\"},{\"line\":43,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"bookmark_handler_class\\\">XFRM\\\\Bookmark\\\\ResourceUpdate</field>\"},{\"line\":44,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"edit_history_handler_class\\\">XFRM\\\\EditHistory\\\\ResourceUpdate</field>\"},{\"line\":45,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"embed_resolver_class\\\">XFRM\\\\EmbedResolver\\\\ResourceUpdate</field>\"}],\"line\":43,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"bookmark_handler_class\\\">XFRM\\\\Bookmark\\\\ResourceUpdate</field>\"},{\"context\":[{\"line\":43,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"bookmark_handler_class\\\">XFRM\\\\Bookmark\\\\ResourceUpdate</field>\"},{\"line\":44,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"edit_history_handler_class\\\">XFRM\\\\EditHistory\\\\ResourceUpdate</field>\"},{\"line\":45,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"embed_resolver_class\\\">XFRM\\\\EmbedResolver\\\\ResourceUpdate</field>\"},{\"line\":46,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"entity\\\">XFRM:ResourceUpdate</field>\"}],\"line\":44,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"edit_history_handler_class\\\">XFRM\\\\EditHistory\\\\ResourceUpdate</field>\"},{\"context\":[{\"line\":44,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"edit_history_handler_class\\\">XFRM\\\\EditHistory\\\\ResourceUpdate</field>\"},{\"line\":45,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"embed_resolver_class\\\">XFRM\\\\EmbedResolver\\\\ResourceUpdate</field>\"},{\"line\":46,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"entity\\\">XFRM:ResourceUpdate</field>\"},{\"line\":47,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"moderator_log_handler_class\\\">XFRM\\\\ModeratorLog\\\\ResourceUpdate</field>\"}],\"line\":45,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"embed_resolver_class\\\">XFRM\\\\EmbedResolver\\\\ResourceUpdate</field>\"},{\"context\":[{\"line\":45,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"embed_resolver_class\\\">XFRM\\\\EmbedResolver\\\\ResourceUpdate</field>\"},{\"line\":46,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"entity\\\">XFRM:ResourceUpdate</field>\"},{\"line\":47,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"moderator_log_handler_class\\\">XFRM\\\\ModeratorLog\\\\ResourceUpdate</field>\"},{\"line\":48,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"news_feed_handler_class\\\">XFRM\\\\NewsFeed\\\\ResourceUpdate</field>\"}],\"line\":46,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"entity\\\">XFRM:ResourceUpdate</field>\"},{\"context\":[{\"line\":46,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"entity\\\">XFRM:ResourceUpdate</field>\"},{\"line\":47,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"moderator_log_handler_class\\\">XFRM\\\\ModeratorLog\\\\ResourceUpdate</field>\"},{\"line\":48,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"news_feed_handler_class\\\">XFRM\\\\NewsFeed\\\\ResourceUpdate</field>\"},{\"line\":49,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"phrase\\\">xfrm_resource_update</field>\"}],\"line\":47,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"moderator_log_handler_class\\\">XFRM\\\\ModeratorLog\\\\ResourceUpdate</field>\"},{\"context\":[{\"line\":47,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"moderator_log_handler_class\\\">XFRM\\\\ModeratorLog\\\\ResourceUpdate</field>\"},{\"line\":48,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"news_feed_handler_class\\\">XFRM\\\\NewsFeed\\\\ResourceUpdate</field>\"},{\"line\":49,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"phrase\\\">xfrm_resource_update</field>\"},{\"line\":50,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"phrase_plural\\\">xfrm_resource_updates</field>\"}],\"line\":48,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"news_feed_handler_class\\\">XFRM\\\\NewsFeed\\\\ResourceUpdate</field>\"},{\"context\":[{\"line\":48,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"news_feed_handler_class\\\">XFRM\\\\NewsFeed\\\\ResourceUpdate</field>\"},{\"line\":49,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"phrase\\\">xfrm_resource_update</field>\"},{\"line\":50,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"phrase_plural\\\">xfrm_resource_updates</field>\"},{\"line\":51,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"reaction_handler_class\\\">XFRM\\\\Reaction\\\\ResourceUpdate</field>\"}],\"line\":49,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"phrase\\\">xfrm_resource_update</field>\"},{\"context\":[{\"line\":49,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"phrase\\\">xfrm_resource_update</field>\"},{\"line\":50,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"phrase_plural\\\">xfrm_resource_updates</field>\"},{\"line\":51,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"reaction_handler_class\\\">XFRM\\\\Reaction\\\\ResourceUpdate</field>\"},{\"line\":52,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"report_handler_class\\\">XFRM\\\\Report\\\\ResourceUpdate</field>\"}],\"line\":50,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"phrase_plural\\\">xfrm_resource_updates</field>\"},{\"context\":[{\"line\":50,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"phrase_plural\\\">xfrm_resource_updates</field>\"},{\"line\":51,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"reaction_handler_class\\\">XFRM\\\\Reaction\\\\ResourceUpdate</field>\"},{\"line\":52,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"report_handler_class\\\">XFRM\\\\Report\\\\ResourceUpdate</field>\"},{\"line\":53,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"search_handler_class\\\">XFRM\\\\Search\\\\Data\\\\ResourceUpdate</field>\"}],\"line\":51,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"reaction_handler_class\\\">XFRM\\\\Reaction\\\\ResourceUpdate</field>\"},{\"context\":[{\"line\":51,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"reaction_handler_class\\\">XFRM\\\\Reaction\\\\ResourceUpdate</field>\"},{\"line\":52,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"report_handler_class\\\">XFRM\\\\Report\\\\ResourceUpdate</field>\"},{\"line\":53,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"search_handler_class\\\">XFRM\\\\Search\\\\Data\\\\ResourceUpdate</field>\"},{\"line\":54,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"warning_handler_class\\\">XFRM\\\\Warning\\\\ResourceUpdate</field>\"}],\"line\":52,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"report_handler_class\\\">XFRM\\\\Report\\\\ResourceUpdate</field>\"},{\"context\":[{\"line\":52,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"report_handler_class\\\">XFRM\\\\Report\\\\ResourceUpdate</field>\"},{\"line\":53,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"search_handler_class\\\">XFRM\\\\Search\\\\Data\\\\ResourceUpdate</field>\"},{\"line\":54,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"warning_handler_class\\\">XFRM\\\\Warning\\\\ResourceUpdate</field>\"},{\"line\":55,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"webhook_handler_class\\\">XFRM\\\\Webhook\\\\Event\\\\ResourceUpdate</field>\"}],\"line\":53,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"search_handler_class\\\">XFRM\\\\Search\\\\Data\\\\ResourceUpdate</field>\"},{\"context\":[{\"line\":53,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"search_handler_class\\\">XFRM\\\\Search\\\\Data\\\\ResourceUpdate</field>\"},{\"line\":54,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"warning_handler_class\\\">XFRM\\\\Warning\\\\ResourceUpdate</field>\"},{\"line\":55,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"webhook_handler_class\\\">XFRM\\\\Webhook\\\\Event\\\\ResourceUpdate</field>\"},{\"line\":56,\"text\":\" <field content_type=\\\"resource_version\\\" field_name=\\\"approval_queue_handler_class\\\">XFRM\\\\ApprovalQueue\\\\ResourceVersion</field>\"}],\"line\":54,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"warning_handler_class\\\">XFRM\\\\Warning\\\\ResourceUpdate</field>\"},{\"context\":[{\"line\":54,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"warning_handler_class\\\">XFRM\\\\Warning\\\\ResourceUpdate</field>\"},{\"line\":55,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"webhook_handler_class\\\">XFRM\\\\Webhook\\\\Event\\\\ResourceUpdate</field>\"},{\"line\":56,\"text\":\" <field content_type=\\\"resource_version\\\" field_name=\\\"approval_queue_handler_class\\\">XFRM\\\\ApprovalQueue\\\\ResourceVersion</field>\"},{\"line\":57,\"text\":\" <field content_type=\\\"resource_version\\\" field_name=\\\"attachment_handler_class\\\">XFRM\\\\Attachment\\\\ResourceVersion</field>\"}],\"line\":55,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"webhook_handler_class\\\">XFRM\\\\Webhook\\\\Event\\\\ResourceUpdate</field>\"},{\"context\":[{\"line\":55,\"text\":\" <field content_type=\\\"resource_update\\\" field_name=\\\"webhook_handler_class\\\">XFRM\\\\Webhook\\\\Event\\\\ResourceUpdate</field>\"},{\"line\":56,\"text\":\" <field content_type=\\\"resource_version\\\" field_name=\\\"approval_queue_handler_class\\\">XFRM\\\\ApprovalQueue\\\\ResourceVersion</field>\"},{\"line\":57,\"text\":\" <field content_type=\\\"resource_version\\\" field_name=\\\"attachment_handler_class\\\">XFRM\\\\Attachment\\\\ResourceVersion</field>\"},{\"line\":58,\"text\":\" <field content_type=\\\"resource_version\\\" field_name=\\\"entity\\\">XFRM:ResourceVersion</field>\"}],\"line\":56,\"text\":\" <field content_type=\\\"resource_version\\\" field_name=\\\"approval_queue_handler_class\\\">XFRM\\\\ApprovalQueue\\\\ResourceVersion</field>\"},{\"context\":[{\"line\":56,\"text\":\" <field content_type=\\\"resource_version\\\" field_name=\\\"approval_queue_handler_class\\\">XFRM\\\\ApprovalQueue\\\\ResourceVersion</field>\"},{\"line\":57,\"text\":\" <field content_type=\\\"resource_version\\\" field_name=\\\"attachment_handler_class\\\">XFRM\\\\Attachment\\\\ResourceVersion</field>\"},{\"line\":58,\"text\":\" <field content_type=\\\"resource_version\\\" field_name=\\\"entity\\\">XFRM:ResourceVersion</field>\"},{\"line\":59,\"text\":\" <field content_type=\\\"resource_version\\\" field_name=\\\"moderator_log_handler_class\\\">XFRM\\\\ModeratorLog\\\\ResourceVersion</field>\"}],\"line\":57,\"text\":\" <field content_type=\\\"resource_version\\\" field_name=\\\"attachment_handler_class\\\">XFRM\\\\Attachment\\\\ResourceVersion</field>\"},{\"context\":[{\"line\":57,\"text\":\" <field content_type=\\\"resource_version\\\" field_name=\\\"attachment_handler_class\\\">XFRM\\\\Attachment\\\\ResourceVersion</field>\"},{\"line\":58,\"text\":\" <field content_type=\\\"resource_version\\\" field_name=\\\"entity\\\">XFRM:ResourceVersion</field>\"},{\"line\":59,\"text\":\" <field content_type=\\\"resource_version\\\" field_name=\\\"moderator_log_handler_class\\\">XFRM\\\\ModeratorLog\\\\ResourceVersion</field>\"},{\"line\":60,\"text\":\" <field content_type=\\\"resource_version\\\" field_name=\\\"phrase\\\">xfrm_resource_version</field>\"}],\"line\":58,\"text\":\" <field content_type=\\\"resource_version\\\" field_name=\\\"entity\\\">XFRM:ResourceVersion</field>\"},{\"context\":[{\"line\":58,\"text\":\" <field content_type=\\\"resource_version\\\" field_name=\\\"entity\\\">XFRM:ResourceVersion</field>\"},{\"line\":59,\"text\":\" <field content_type=\\\"resource_version\\\" field_name=\\\"moderator_log_handler_class\\\">XFRM\\\\ModeratorLog\\\\ResourceVersion</field>\"},{\"line\":60,\"text\":\" <field content_type=\\\"resource_version\\\" field_name=\\\"phrase\\\">xfrm_resource_version</field>\"},{\"line\":61,\"text\":\" <field content_type=\\\"resource_version\\\" field_name=\\\"webhook_handler_class\\\">XFRM\\\\Webhook\\\\Event\\\\ResourceVersion</field>\"}],\"line\":59,\"text\":\" <field content_type=\\\"resource_version\\\" field_name=\\\"moderator_log_handler_class\\\">XFRM\\\\ModeratorLog\\\\ResourceVersion</field>\"},{\"context\":[{\"line\":59,\"text\":\" <field content_type=\\\"resource_version\\\" field_name=\\\"moderator_log_handler_class\\\">XFRM\\\\ModeratorLog\\\\ResourceVersion</field>\"},{\"line\":60,\"text\":\" <field content_type=\\\"resource_version\\\" field_name=\\\"phrase\\\">xfrm_resource_version</field>\"},{\"line\":61,\"text\":\" <field content_type=\\\"resource_version\\\" field_name=\\\"webhook_handler_class\\\">XFRM\\\\Webhook\\\\Event\\\\ResourceVersion</field>\"},{\"line\":62,\"text\":\"</content_type_fields>\"}],\"line\":60,\"text\":\" <field content_type=\\\"resource_version\\\" field_name=\\\"phrase\\\">xfrm_resource_version</field>\"},{\"context\":[{\"line\":60,\"text\":\" <field content_type=\\\"resource_version\\\" field_name=\\\"phrase\\\">xfrm_resource_version</field>\"},{\"line\":61,\"text\":\" <field content_type=\\\"resource_version\\\" field_name=\\\"webhook_handler_class\\\">XFRM\\\\Webhook\\\\Event\\\\ResourceVersion</field>\"},{\"line\":62,\"text\":\"</content_type_fields>\"}],\"line\":61,\"text\":\" <field content_type=\\\"resource_version\\\" field_name=\\\"webhook_handler_class\\\">XFRM\\\\Webhook\\\\Event\\\\ResourceVersion</field>\"}],\"path\":\"/var/www/forums/newfi/public/src/addons/XFRM/_data/content_type_fields.xml\",\"present\":true,\"sha256\":\"0c55319843d04701f1f6fa7fdfeb1ae8883b6d3bb95fceb6e0cf245638543474\"}},\"role\":\"staging\",\"status\":\"OK\"}\nNEWFI172_DECISION=PASS_NOTIFY213_EXACT_ALERT_PUSH_SIGNATURES\nNEWFI172_NEXT_GATE=BUILD_NOTIFY213_STAGING_CANDIDATE\nHOMELAB_RESULT_CONTRACT={\"changes_made\":false,\"command_id\":\"NEWFI-260919-NEWFDOM-NOTIFY213-CONTRACT172\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"OK\",\"version\":1}\n"
}