CHAT_OUTPUT_BEGIN
COMMAND_ID=SUPPORT-260918-XENFORO-TEMPLATE-NATIVE-HISTORY-RCA-495T3R2
STATUS=OK
RC=0
HOST=pve01
MODE=read-only
COMPONENT=xenforo-template-native-history-rca
REFERENCE_REGISTER_CHECK=OK
REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
COMMAND_SHA256=dbced2707f675a917f31874231b4f3fbb05350f4bade851f4affe06d3dda7940
DUPLICATE_FAILED_COMMAND_BLOCKED=false
EXECUTION_STARTED=true
CHANGE_DECLARED=false
RESULT_CONTRACT_VALID=true
RESULT_CONTRACT_STATUS=NOT_APPLICABLE
RESULT_CONTRACT_ERROR=NONE
COMMAND_RC=0
CHANGES_MADE=false
ROLLBACK_STARTED=false
ROLLBACK_RESTORED=null
MUTATION_OUTCOME=NO_MUTATION
SANITIZED=yes
SECRETS_INCLUDED=no
PRIVATE_ADDRESSES_INCLUDED=no
RAW_EVIDENCE_SHA256=521f12b02c1a8371365c9ac87693c3280b9c9d393d97d5a51dcf6d807e37c9b1
SANITIZED_OUTPUT_SHA256=521f12b02c1a8371365c9ac87693c3280b9c9d393d97d5a51dcf6d807e37c9b1
OUTPUT_BEGIN
TPL495T3R2_WRAPPER_BEGIN=true
ERROR_REGISTER_CHECK=OK
REFERENCE_CHECK=OK
AUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED
TPL495T3R2_BEGIN=true
MODE=READ_ONLY_NATIVE_HISTORY_RCA
VM211_EXCLUDED=true
TPL495T3R2_SAFE_REPORT={"affected_sites":5,"affected_site_names":["codevipe.ru","dsmods.ru","gamevipe.ru","hkmods.ru","zakrutim.ru"],"outdated_total":5,"xf_error_rows_total":0,"public_http_200":7,"sites":[{"site":"codevipe.ru","root":"/var/www/forums/codevipe/public","xf_error_rows":0,"board_active":"1","default_style_id":"2","outdated_count_repo":1,"outdated":[{"meta":{"template_id":1401,"parent_version_string":"2.0.0 Alpha","parent_last_edit_date":1721849139,"outdated_by_version":1,"outdated_by_date":0},"template":{"class":"XF\\Entity\\Template","template_id":1401,"type":"public","title":"extra.less","style_id":2,"addon_id":"","version_id":0,"version_string":"","last_edit_date":1784195301,"body":{"sha256":"ca051810957679432c36024c18f3adbf3a087c7a034cd46d72edfffbd4564b6c","bytes":2396,"lines":131}},"style":{"style_id":2,"parent_id":1,"title":"Default style 2","last_modified_date":1789648610},"parent":{"class":"XF\\Entity\\Template","template_id":850,"type":"public","title":"extra.less","style_id":0,"addon_id":"XF","version_id":2000010,"version_string":"2.0.0 Alpha","last_edit_date":1721849139,"body":{"sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","bytes":0,"lines":1}},"master":{"template_id":850,"type":"public","title":"extra.less","style_id":0,"addon_id":"XF","version_id":2000010,"version_string":"2.0.0 Alpha","last_edit_date":1721849139,"body":{"sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","bytes":0,"lines":1}},"history":[],"template_method":{"exists":false},"repo_method":{"exists":false},"template_call":{"exists":false},"repo_call":{"exists":false}}],"controller_methods":{"getHistoryForMerge":{"exists":false},"actionMergeOutdated":{"exists":true,"class":"XF\\Admin\\Controller\\TemplateController","public":true,"protected":false,"private":false,"static":false,"required":1,"total":1,"params":[{"name":"params","optional":false,"variadic":false,"type":"XF\\Mvc\\ParameterBag"}],"file":"src/XF/Admin/Controller/TemplateController.php","start":439,"end":492,"source_sha256":"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61","token_skeleton":"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( <str> ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\XF :: phrase ( <str> ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\XF :: phrase ( <str> ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( <str> , <str> ) ; $final = implode ( <str> , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( <str> ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( <str> ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ <str> => $template , <str> => $parentTemplate , <str> => $previousVersion , <str> => $diffs , ] ; return $this -> view ( <str> , <str> , $viewParams ) ; } }"},"actionAutoMerge":{"exists":true,"class":"XF\\Admin\\Controller\\TemplateController","public":true,"protected":false,"private":false,"static":false,"required":0,"total":0,"params":[],"file":"src/XF/Admin/Controller/TemplateController.php","start":494,"end":511,"source_sha256":"dafc6ff3ebb435f50860ed1de3d0569dcbb95771b88898885be8f56c01986a0c","token_skeleton":"public function actionAutoMerge ( ) { if ( $this -> isPost ( ) ) { $templateRepo = $this -> getTemplateRepo ( ) ; $templateIds = array_keys ( $templateRepo -> getOutdatedTemplates ( ) ) ; $this -> app -> jobManager ( ) -> enqueueUnique ( <str> , TemplateMerge :: class , [ <str> => $templateIds , ] ) ; return $this -> redirect ( $this -> buildLink ( <str> , null , [ <str> => <num> ] ) ) ; } else { return $this -> view ( <str> , <str> ) ; } }"}},"repo_methods":{"getHistoryForMerge":{"exists":false},"getOutdatedTemplates":{"exists":true,"class":"XF\\Repository\\TemplateRepository","public":true,"protected":false,"private":false,"static":false,"required":0,"total":0,"params":[],"file":"src/XF/Repository/TemplateRepository.php","start":85,"end":110,"source_sha256":"d78b3772d6aa9d553902a10b90d692f184d3f56d08f3255defc88a9ce5b65b16","token_skeleton":"public function getOutdatedTemplates ( ) { $data = $this -> getBaseOutdatedTemplateData ( ) ; $templateIds = array_keys ( $data ) ; if ( ! $templateIds ) { return [ ] ; } $templates = $this -> em -> findByIds ( Template :: class , $templateIds ) ; $output = [ ] ; foreach ( $data AS $templateId => $outdated ) { if ( ! isset ( $templates [ $templateId ] ) ) { continue ; } $outdated [ <str> ] = $templates [ $templateId ] ; $output [ $templateId ] = $outdated ; } return $output ; }"},"getBaseOutdatedTemplateData":{"exists":true,"class":"XF\\Repository\\TemplateRepository","public":false,"protected":true,"private":false,"static":false,"required":0,"total":0,"params":[],"file":"src/XF/Repository/TemplateRepository.php","start":112,"end":138,"source_sha256":"d5dc4e81e1834a500f3c5064cad55ee2eb03399d85a7c7a16561321039b2e6f2","token_skeleton":"protected function getBaseOutdatedTemplateData ( ) { $db = $this -> db ( ) ; return $db -> fetchAllKeyed ( <str> , <str> ) ; }"}}},{"site":"dsmods.ru","root":"/var/www/forums/dsmods/public","xf_error_rows":0,"board_active":"1","default_style_id":"2","outdated_count_repo":1,"outdated":[{"meta":{"template_id":1317,"parent_version_string":"2.0.0 Alpha","parent_last_edit_date":1728727128,"outdated_by_version":1,"outdated_by_date":0},"template":{"class":"XF\\Entity\\Template","template_id":1317,"type":"public","title":"extra.less","style_id":2,"addon_id":"","version_id":0,"version_string":"","last_edit_date":1784195301,"body":{"sha256":"3898034b75b561c774b41f6e1d8dce66a171fe30c7c210d543b41a8133e42fa2","bytes":2402,"lines":131}},"style":{"style_id":2,"parent_id":1,"title":"Default style 2","last_modified_date":1789649311},"parent":{"class":"XF\\Entity\\Template","template_id":850,"type":"public","title":"extra.less","style_id":0,"addon_id":"XF","version_id":2000010,"version_string":"2.0.0 Alpha","last_edit_date":1728727128,"body":{"sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","bytes":0,"lines":1}},"master":{"template_id":850,"type":"public","title":"extra.less","style_id":0,"addon_id":"XF","version_id":2000010,"version_string":"2.0.0 Alpha","last_edit_date":1728727128,"body":{"sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","bytes":0,"lines":1}},"history":[],"template_method":{"exists":false},"repo_method":{"exists":false},"template_call":{"exists":false},"repo_call":{"exists":false}}],"controller_methods":{"getHistoryForMerge":{"exists":false},"actionMergeOutdated":{"exists":true,"class":"XF\\Admin\\Controller\\TemplateController","public":true,"protected":false,"private":false,"static":false,"required":1,"total":1,"params":[{"name":"params","optional":false,"variadic":false,"type":"XF\\Mvc\\ParameterBag"}],"file":"src/XF/Admin/Controller/TemplateController.php","start":439,"end":492,"source_sha256":"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61","token_skeleton":"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( <str> ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\XF :: phrase ( <str> ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\XF :: phrase ( <str> ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( <str> , <str> ) ; $final = implode ( <str> , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( <str> ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( <str> ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ <str> => $template , <str> => $parentTemplate , <str> => $previousVersion , <str> => $diffs , ] ; return $this -> view ( <str> , <str> , $viewParams ) ; } }"},"actionAutoMerge":{"exists":true,"class":"XF\\Admin\\Controller\\TemplateController","public":true,"protected":false,"private":false,"static":false,"required":0,"total":0,"params":[],"file":"src/XF/Admin/Controller/TemplateController.php","start":494,"end":511,"source_sha256":"dafc6ff3ebb435f50860ed1de3d0569dcbb95771b88898885be8f56c01986a0c","token_skeleton":"public function actionAutoMerge ( ) { if ( $this -> isPost ( ) ) { $templateRepo = $this -> getTemplateRepo ( ) ; $templateIds = array_keys ( $templateRepo -> getOutdatedTemplates ( ) ) ; $this -> app -> jobManager ( ) -> enqueueUnique ( <str> , TemplateMerge :: class , [ <str> => $templateIds , ] ) ; return $this -> redirect ( $this -> buildLink ( <str> , null , [ <str> => <num> ] ) ) ; } else { return $this -> view ( <str> , <str> ) ; } }"}},"repo_methods":{"getHistoryForMerge":{"exists":false},"getOutdatedTemplates":{"exists":true,"class":"XF\\Repository\\TemplateRepository","public":true,"protected":false,"private":false,"static":false,"required":0,"total":0,"params":[],"file":"src/XF/Repository/TemplateRepository.php","start":85,"end":110,"source_sha256":"d78b3772d6aa9d553902a10b90d692f184d3f56d08f3255defc88a9ce5b65b16","token_skeleton":"public function getOutdatedTemplates ( ) { $data = $this -> getBaseOutdatedTemplateData ( ) ; $templateIds = array_keys ( $data ) ; if ( ! $templateIds ) { return [ ] ; } $templates = $this -> em -> findByIds ( Template :: class , $templateIds ) ; $output = [ ] ; foreach ( $data AS $templateId => $outdated ) { if ( ! isset ( $templates [ $templateId ] ) ) { continue ; } $outdated [ <str> ] = $templates [ $templateId ] ; $output [ $templateId ] = $outdated ; } return $output ; }"},"getBaseOutdatedTemplateData":{"exists":true,"class":"XF\\Repository\\TemplateRepository","public":false,"protected":true,"private":false,"static":false,"required":0,"total":0,"params":[],"file":"src/XF/Repository/TemplateRepository.php","start":112,"end":138,"source_sha256":"d5dc4e81e1834a500f3c5064cad55ee2eb03399d85a7c7a16561321039b2e6f2","token_skeleton":"protected function getBaseOutdatedTemplateData ( ) { $db = $this -> db ( ) ; return $db -> fetchAllKeyed ( <str> , <str> ) ; }"}}},{"site":"gamevipe.ru","root":"/var/www/forums/gamevipe/public","xf_error_rows":0,"board_active":"1","default_style_id":"2","outdated_count_repo":1,"outdated":[{"meta":{"template_id":1696,"parent_version_string":"2.0.0 Alpha","parent_last_edit_date":1720986507,"outdated_by_version":1,"outdated_by_date":0},"template":{"class":"XF\\Entity\\Template","template_id":1696,"type":"public","title":"extra.less","style_id":2,"addon_id":"","version_id":0,"version_string":"","last_edit_date":1784195301,"body":{"sha256":"fde07ae7d5f65a3cdee23b7f90834229c95495fb69db44727345b550441646ab","bytes":2410,"lines":131}},"style":{"style_id":2,"parent_id":1,"title":"Default style 2","last_modified_date":1789649315},"parent":{"class":"XF\\Entity\\Template","template_id":803,"type":"public","title":"extra.less","style_id":0,"addon_id":"XF","version_id":2000010,"version_string":"2.0.0 Alpha","last_edit_date":1720986507,"body":{"sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","bytes":0,"lines":1}},"master":{"template_id":803,"type":"public","title":"extra.less","style_id":0,"addon_id":"XF","version_id":2000010,"version_string":"2.0.0 Alpha","last_edit_date":1720986507,"body":{"sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","bytes":0,"lines":1}},"history":[],"template_method":{"exists":false},"repo_method":{"exists":false},"template_call":{"exists":false},"repo_call":{"exists":false}}],"controller_methods":{"getHistoryForMerge":{"exists":false},"actionMergeOutdated":{"exists":true,"class":"XF\\Admin\\Controller\\TemplateController","public":true,"protected":false,"private":false,"static":false,"required":1,"total":1,"params":[{"name":"params","optional":false,"variadic":false,"type":"XF\\Mvc\\ParameterBag"}],"file":"src/XF/Admin/Controller/TemplateController.php","start":439,"end":492,"source_sha256":"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61","token_skeleton":"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( <str> ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\XF :: phrase ( <str> ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\XF :: phrase ( <str> ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( <str> , <str> ) ; $final = implode ( <str> , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( <str> ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( <str> ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ <str> => $template , <str> => $parentTemplate , <str> => $previousVersion , <str> => $diffs , ] ; return $this -> view ( <str> , <str> , $viewParams ) ; } }"},"actionAutoMerge":{"exists":true,"class":"XF\\Admin\\Controller\\TemplateController","public":true,"protected":false,"private":false,"static":false,"required":0,"total":0,"params":[],"file":"src/XF/Admin/Controller/TemplateController.php","start":494,"end":511,"source_sha256":"dafc6ff3ebb435f50860ed1de3d0569dcbb95771b88898885be8f56c01986a0c","token_skeleton":"public function actionAutoMerge ( ) { if ( $this -> isPost ( ) ) { $templateRepo = $this -> getTemplateRepo ( ) ; $templateIds = array_keys ( $templateRepo -> getOutdatedTemplates ( ) ) ; $this -> app -> jobManager ( ) -> enqueueUnique ( <str> , TemplateMerge :: class , [ <str> => $templateIds , ] ) ; return $this -> redirect ( $this -> buildLink ( <str> , null , [ <str> => <num> ] ) ) ; } else { return $this -> view ( <str> , <str> ) ; } }"}},"repo_methods":{"getHistoryForMerge":{"exists":false},"getOutdatedTemplates":{"exists":true,"class":"XF\\Repository\\TemplateRepository","public":true,"protected":false,"private":false,"static":false,"required":0,"total":0,"params":[],"file":"src/XF/Repository/TemplateRepository.php","start":85,"end":110,"source_sha256":"d78b3772d6aa9d553902a10b90d692f184d3f56d08f3255defc88a9ce5b65b16","token_skeleton":"public function getOutdatedTemplates ( ) { $data = $this -> getBaseOutdatedTemplateData ( ) ; $templateIds = array_keys ( $data ) ; if ( ! $templateIds ) { return [ ] ; } $templates = $this -> em -> findByIds ( Template :: class , $templateIds ) ; $output = [ ] ; foreach ( $data AS $templateId => $outdated ) { if ( ! isset ( $templates [ $templateId ] ) ) { continue ; } $outdated [ <str> ] = $templates [ $templateId ] ; $output [ $templateId ] = $outdated ; } return $output ; }"},"getBaseOutdatedTemplateData":{"exists":true,"class":"XF\\Repository\\TemplateRepository","public":false,"protected":true,"private":false,"static":false,"required":0,"total":0,"params":[],"file":"src/XF/Repository/TemplateRepository.php","start":112,"end":138,"source_sha256":"d5dc4e81e1834a500f3c5064cad55ee2eb03399d85a7c7a16561321039b2e6f2","token_skeleton":"protected function getBaseOutdatedTemplateData ( ) { $db = $this -> db ( ) ; return $db -> fetchAllKeyed ( <str> , <str> ) ; }"}}},{"site":"hkmods.ru","root":"/var/www/forums/hkmods/public","xf_error_rows":0,"board_active":"1","default_style_id":"2","outdated_count_repo":1,"outdated":[{"meta":{"template_id":2021,"parent_version_string":"2.0.0 Alpha","parent_last_edit_date":1691944582,"outdated_by_version":1,"outdated_by_date":0},"template":{"class":"XF\\Entity\\Template","template_id":2021,"type":"public","title":"extra.less","style_id":2,"addon_id":"","version_id":0,"version_string":"","last_edit_date":1784195301,"body":{"sha256":"2339326596eb8f77111df70fa4336809e67615942b4b7b1afb2777d8ee447bd3","bytes":2422,"lines":131}},"style":{"style_id":2,"parent_id":1,"title":"Default style 2","last_modified_date":1789649318},"parent":{"class":"XF\\Entity\\Template","template_id":798,"type":"public","title":"extra.less","style_id":0,"addon_id":"XF","version_id":2000010,"version_string":"2.0.0 Alpha","last_edit_date":1691944582,"body":{"sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","bytes":0,"lines":1}},"master":{"template_id":798,"type":"public","title":"extra.less","style_id":0,"addon_id":"XF","version_id":2000010,"version_string":"2.0.0 Alpha","last_edit_date":1691944582,"body":{"sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","bytes":0,"lines":1}},"history":[],"template_method":{"exists":false},"repo_method":{"exists":false},"template_call":{"exists":false},"repo_call":{"exists":false}}],"controller_methods":{"getHistoryForMerge":{"exists":false},"actionMergeOutdated":{"exists":true,"class":"XF\\Admin\\Controller\\TemplateController","public":true,"protected":false,"private":false,"static":false,"required":1,"total":1,"params":[{"name":"params","optional":false,"variadic":false,"type":"XF\\Mvc\\ParameterBag"}],"file":"src/XF/Admin/Controller/TemplateController.php","start":439,"end":492,"source_sha256":"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61","token_skeleton":"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( <str> ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\XF :: phrase ( <str> ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\XF :: phrase ( <str> ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( <str> , <str> ) ; $final = implode ( <str> , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( <str> ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( <str> ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ <str> => $template , <str> => $parentTemplate , <str> => $previousVersion , <str> => $diffs , ] ; return $this -> view ( <str> , <str> , $viewParams ) ; } }"},"actionAutoMerge":{"exists":true,"class":"XF\\Admin\\Controller\\TemplateController","public":true,"protected":false,"private":false,"static":false,"required":0,"total":0,"params":[],"file":"src/XF/Admin/Controller/TemplateController.php","start":494,"end":511,"source_sha256":"dafc6ff3ebb435f50860ed1de3d0569dcbb95771b88898885be8f56c01986a0c","token_skeleton":"public function actionAutoMerge ( ) { if ( $this -> isPost ( ) ) { $templateRepo = $this -> getTemplateRepo ( ) ; $templateIds = array_keys ( $templateRepo -> getOutdatedTemplates ( ) ) ; $this -> app -> jobManager ( ) -> enqueueUnique ( <str> , TemplateMerge :: class , [ <str> => $templateIds , ] ) ; return $this -> redirect ( $this -> buildLink ( <str> , null , [ <str> => <num> ] ) ) ; } else { return $this -> view ( <str> , <str> ) ; } }"}},"repo_methods":{"getHistoryForMerge":{"exists":false},"getOutdatedTemplates":{"exists":true,"class":"XF\\Repository\\TemplateRepository","public":true,"protected":false,"private":false,"static":false,"required":0,"total":0,"params":[],"file":"src/XF/Repository/TemplateRepository.php","start":85,"end":110,"source_sha256":"d78b3772d6aa9d553902a10b90d692f184d3f56d08f3255defc88a9ce5b65b16","token_skeleton":"public function getOutdatedTemplates ( ) { $data = $this -> getBaseOutdatedTemplateData ( ) ; $templateIds = array_keys ( $data ) ; if ( ! $templateIds ) { return [ ] ; } $templates = $this -> em -> findByIds ( Template :: class , $templateIds ) ; $output = [ ] ; foreach ( $data AS $templateId => $outdated ) { if ( ! isset ( $templates [ $templateId ] ) ) { continue ; } $outdated [ <str> ] = $templates [ $templateId ] ; $output [ $templateId ] = $outdated ; } return $output ; }"},"getBaseOutdatedTemplateData":{"exists":true,"class":"XF\\Repository\\TemplateRepository","public":false,"protected":true,"private":false,"static":false,"required":0,"total":0,"params":[],"file":"src/XF/Repository/TemplateRepository.php","start":112,"end":138,"source_sha256":"d5dc4e81e1834a500f3c5064cad55ee2eb03399d85a7c7a16561321039b2e6f2","token_skeleton":"protected function getBaseOutdatedTemplateData ( ) { $db = $this -> db ( ) ; return $db -> fetchAllKeyed ( <str> , <str> ) ; }"}}},{"site":"kingofwolk.ru","root":"/var/www/forums/kingofwolk/public","xf_error_rows":0,"board_active":"1","default_style_id":"2","outdated_count_repo":0,"outdated":[],"controller_methods":{"getHistoryForMerge":{"exists":false},"actionMergeOutdated":{"exists":true,"class":"XF\\Admin\\Controller\\TemplateController","public":true,"protected":false,"private":false,"static":false,"required":1,"total":1,"params":[{"name":"params","optional":false,"variadic":false,"type":"XF\\Mvc\\ParameterBag"}],"file":"src/XF/Admin/Controller/TemplateController.php","start":439,"end":492,"source_sha256":"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61","token_skeleton":"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( <str> ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\XF :: phrase ( <str> ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\XF :: phrase ( <str> ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( <str> , <str> ) ; $final = implode ( <str> , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( <str> ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( <str> ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ <str> => $template , <str> => $parentTemplate , <str> => $previousVersion , <str> => $diffs , ] ; return $this -> view ( <str> , <str> , $viewParams ) ; } }"},"actionAutoMerge":{"exists":true,"class":"XF\\Admin\\Controller\\TemplateController","public":true,"protected":false,"private":false,"static":false,"required":0,"total":0,"params":[],"file":"src/XF/Admin/Controller/TemplateController.php","start":494,"end":511,"source_sha256":"dafc6ff3ebb435f50860ed1de3d0569dcbb95771b88898885be8f56c01986a0c","token_skeleton":"public function actionAutoMerge ( ) { if ( $this -> isPost ( ) ) { $templateRepo = $this -> getTemplateRepo ( ) ; $templateIds = array_keys ( $templateRepo -> getOutdatedTemplates ( ) ) ; $this -> app -> jobManager ( ) -> enqueueUnique ( <str> , TemplateMerge :: class , [ <str> => $templateIds , ] ) ; return $this -> redirect ( $this -> buildLink ( <str> , null , [ <str> => <num> ] ) ) ; } else { return $this -> view ( <str> , <str> ) ; } }"}},"repo_methods":{"getHistoryForMerge":{"exists":false},"getOutdatedTemplates":{"exists":true,"class":"XF\\Repository\\TemplateRepository","public":true,"protected":false,"private":false,"static":false,"required":0,"total":0,"params":[],"file":"src/XF/Repository/TemplateRepository.php","start":85,"end":110,"source_sha256":"d78b3772d6aa9d553902a10b90d692f184d3f56d08f3255defc88a9ce5b65b16","token_skeleton":"public function getOutdatedTemplates ( ) { $data = $this -> getBaseOutdatedTemplateData ( ) ; $templateIds = array_keys ( $data ) ; if ( ! $templateIds ) { return [ ] ; } $templates = $this -> em -> findByIds ( Template :: class , $templateIds ) ; $output = [ ] ; foreach ( $data AS $templateId => $outdated ) { if ( ! isset ( $templates [ $templateId ] ) ) { continue ; } $outdated [ <str> ] = $templates [ $templateId ] ; $output [ $templateId ] = $outdated ; } return $output ; }"},"getBaseOutdatedTemplateData":{"exists":true,"class":"XF\\Repository\\TemplateRepository","public":false,"protected":true,"private":false,"static":false,"required":0,"total":0,"params":[],"file":"src/XF/Repository/TemplateRepository.php","start":112,"end":138,"source_sha256":"d5dc4e81e1834a500f3c5064cad55ee2eb03399d85a7c7a16561321039b2e6f2","token_skeleton":"protected function getBaseOutdatedTemplateData ( ) { $db = $this -> db ( ) ; return $db -> fetchAllKeyed ( <str> , <str> ) ; }"}}},{"site":"zakrutim.ru","root":"/var/www/forums/zakrutim/public","xf_error_rows":0,"board_active":"1","default_style_id":"2","outdated_count_repo":1,"outdated":[{"meta":{"template_id":1921,"parent_version_string":"2.0.0 Alpha","parent_last_edit_date":1692264832,"outdated_by_version":1,"outdated_by_date":0},"template":{"class":"XF\\Entity\\Template","template_id":1921,"type":"public","title":"extra.less","style_id":2,"addon_id":"","version_id":0,"version_string":"","last_edit_date":1784195301,"body":{"sha256":"9662d1b57f5f6fcd2992fd9d150aeb887c242f792eb750cf6cb458d65b99a12d","bytes":2435,"lines":131}},"style":{"style_id":2,"parent_id":1,"title":"Default style 2","last_modified_date":1789649326},"parent":{"class":"XF\\Entity\\Template","template_id":803,"type":"public","title":"extra.less","style_id":0,"addon_id":"XF","version_id":2000010,"version_string":"2.0.0 Alpha","last_edit_date":1692264832,"body":{"sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","bytes":0,"lines":1}},"master":{"template_id":803,"type":"public","title":"extra.less","style_id":0,"addon_id":"XF","version_id":2000010,"version_string":"2.0.0 Alpha","last_edit_date":1692264832,"body":{"sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","bytes":0,"lines":1}},"history":[],"template_method":{"exists":false},"repo_method":{"exists":false},"template_call":{"exists":false},"repo_call":{"exists":false}}],"controller_methods":{"getHistoryForMerge":{"exists":false},"actionMergeOutdated":{"exists":true,"class":"XF\\Admin\\Controller\\TemplateController","public":true,"protected":false,"private":false,"static":false,"required":1,"total":1,"params":[{"name":"params","optional":false,"variadic":false,"type":"XF\\Mvc\\ParameterBag"}],"file":"src/XF/Admin/Controller/TemplateController.php","start":439,"end":492,"source_sha256":"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61","token_skeleton":"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( <str> ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\XF :: phrase ( <str> ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\XF :: phrase ( <str> ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( <str> , <str> ) ; $final = implode ( <str> , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( <str> ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( <str> ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ <str> => $template , <str> => $parentTemplate , <str> => $previousVersion , <str> => $diffs , ] ; return $this -> view ( <str> , <str> , $viewParams ) ; } }"},"actionAutoMerge":{"exists":true,"class":"XF\\Admin\\Controller\\TemplateController","public":true,"protected":false,"private":false,"static":false,"required":0,"total":0,"params":[],"file":"src/XF/Admin/Controller/TemplateController.php","start":494,"end":511,"source_sha256":"dafc6ff3ebb435f50860ed1de3d0569dcbb95771b88898885be8f56c01986a0c","token_skeleton":"public function actionAutoMerge ( ) { if ( $this -> isPost ( ) ) { $templateRepo = $this -> getTemplateRepo ( ) ; $templateIds = array_keys ( $templateRepo -> getOutdatedTemplates ( ) ) ; $this -> app -> jobManager ( ) -> enqueueUnique ( <str> , TemplateMerge :: class , [ <str> => $templateIds , ] ) ; return $this -> redirect ( $this -> buildLink ( <str> , null , [ <str> => <num> ] ) ) ; } else { return $this -> view ( <str> , <str> ) ; } }"}},"repo_methods":{"getHistoryForMerge":{"exists":false},"getOutdatedTemplates":{"exists":true,"class":"XF\\Repository\\TemplateRepository","public":true,"protected":false,"private":false,"static":false,"required":0,"total":0,"params":[],"file":"src/XF/Repository/TemplateRepository.php","start":85,"end":110,"source_sha256":"d78b3772d6aa9d553902a10b90d692f184d3f56d08f3255defc88a9ce5b65b16","token_skeleton":"public function getOutdatedTemplates ( ) { $data = $this -> getBaseOutdatedTemplateData ( ) ; $templateIds = array_keys ( $data ) ; if ( ! $templateIds ) { return [ ] ; } $templates = $this -> em -> findByIds ( Template :: class , $templateIds ) ; $output = [ ] ; foreach ( $data AS $templateId => $outdated ) { if ( ! isset ( $templates [ $templateId ] ) ) { continue ; } $outdated [ <str> ] = $templates [ $templateId ] ; $output [ $templateId ] = $outdated ; } return $output ; }"},"getBaseOutdatedTemplateData":{"exists":true,"class":"XF\\Repository\\TemplateRepository","public":false,"protected":true,"private":false,"static":false,"required":0,"total":0,"params":[],"file":"src/XF/Repository/TemplateRepository.php","start":112,"end":138,"source_sha256":"d5dc4e81e1834a500f3c5064cad55ee2eb03399d85a7c7a16561321039b2e6f2","token_skeleton":"protected function getBaseOutdatedTemplateData ( ) { $db = $this -> db ( ) ; return $db -> fetchAllKeyed ( <str> , <str> ) ; }"}}},{"site":"newfi.ru","root":"/var/www/forums/newfi/public","xf_error_rows":0,"board_active":"1","default_style_id":"4","outdated_count_repo":0,"outdated":[],"controller_methods":{"getHistoryForMerge":{"exists":false},"actionMergeOutdated":{"exists":true,"class":"XF\\Admin\\Controller\\TemplateController","public":true,"protected":false,"private":false,"static":false,"required":1,"total":1,"params":[{"name":"params","optional":false,"variadic":false,"type":"XF\\Mvc\\ParameterBag"}],"file":"src/XF/Admin/Controller/TemplateController.php","start":439,"end":492,"source_sha256":"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61","token_skeleton":"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( <str> ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\XF :: phrase ( <str> ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\XF :: phrase ( <str> ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( <str> , <str> ) ; $final = implode ( <str> , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( <str> ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( <str> ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ <str> => $template , <str> => $parentTemplate , <str> => $previousVersion , <str> => $diffs , ] ; return $this -> view ( <str> , <str> , $viewParams ) ; } }"},"actionAutoMerge":{"exists":true,"class":"XF\\Admin\\Controller\\TemplateController","public":true,"protected":false,"private":false,"static":false,"required":0,"total":0,"params":[],"file":"src/XF/Admin/Controller/TemplateController.php","start":494,"end":511,"source_sha256":"dafc6ff3ebb435f50860ed1de3d0569dcbb95771b88898885be8f56c01986a0c","token_skeleton":"public function actionAutoMerge ( ) { if ( $this -> isPost ( ) ) { $templateRepo = $this -> getTemplateRepo ( ) ; $templateIds = array_keys ( $templateRepo -> getOutdatedTemplates ( ) ) ; $this -> app -> jobManager ( ) -> enqueueUnique ( <str> , TemplateMerge :: class , [ <str> => $templateIds , ] ) ; return $this -> redirect ( $this -> buildLink ( <str> , null , [ <str> => <num> ] ) ) ; } else { return $this -> view ( <str> , <str> ) ; } }"}},"repo_methods":{"getHistoryForMerge":{"exists":false},"getOutdatedTemplates":{"exists":true,"class":"XF\\Repository\\TemplateRepository","public":true,"protected":false,"private":false,"static":false,"required":0,"total":0,"params":[],"file":"src/XF/Repository/TemplateRepository.php","start":85,"end":110,"source_sha256":"d78b3772d6aa9d553902a10b90d692f184d3f56d08f3255defc88a9ce5b65b16","token_skeleton":"public function getOutdatedTemplates ( ) { $data = $this -> getBaseOutdatedTemplateData ( ) ; $templateIds = array_keys ( $data ) ; if ( ! $templateIds ) { return [ ] ; } $templates = $this -> em -> findByIds ( Template :: class , $templateIds ) ; $output = [ ] ; foreach ( $data AS $templateId => $outdated ) { if ( ! isset ( $templates [ $templateId ] ) ) { continue ; } $outdated [ <str> ] = $templates [ $templateId ] ; $output [ $templateId ] = $outdated ; } return $output ; }"},"getBaseOutdatedTemplateData":{"exists":true,"class":"XF\\Repository\\TemplateRepository","public":false,"protected":true,"private":false,"static":false,"required":0,"total":0,"params":[],"file":"src/XF/Repository/TemplateRepository.php","start":112,"end":138,"source_sha256":"d5dc4e81e1834a500f3c5064cad55ee2eb03399d85a7c7a16561321039b2e6f2","token_skeleton":"protected function getBaseOutdatedTemplateData ( ) { $db = $this -> db ( ) ; return $db -> fetchAllKeyed ( <str> , <str> ) ; }"}}}],"http":[{"domain":"codevipe.ru","rc":0,"http_code":"200"},{"domain":"dsmods.ru","rc":0,"http_code":"200"},{"domain":"gamevipe.ru","rc":0,"http_code":"200"},{"domain":"hkmods.ru","rc":0,"http_code":"200"},{"domain":"kingofwolk.ru","rc":0,"http_code":"200"},{"domain":"zakrutim.ru","rc":0,"http_code":"200"},{"domain":"newfi.ru","rc":0,"http_code":"200"}],"vm211_excluded":true,"scope":"READ_ONLY_NO_XENFORO_MUTATION"}
TPL495T3R2_DECISION=PASS_NATIVE_HISTORY_RCA_CAPTURE
TPL495T3R2_NEXT_GATE=READY_FOR_OFFLINE_EXACT_BASE_ANALYSIS_THEN_BOUNDED_REPAIR_495T4
HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SUPPORT-260918-XENFORO-TEMPLATE-NATIVE-HISTORY-RCA-495T3R2","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null}

OUTPUT_END
CHAT_OUTPUT_END
