From 177b03d5028b5d74cebc063c49ec6693d74cc7d0 Mon Sep 17 00:00:00 2001 From: CosmicAlpha Date: Wed, 19 Mar 2025 11:33:12 -0600 Subject: [PATCH 01/22] Add a CreateWikiSetContainersAccessFailed hook --- maintenance/SetContainersAccess.php | 38 +++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/maintenance/SetContainersAccess.php b/maintenance/SetContainersAccess.php index d366d9e514..8396d2ec9c 100644 --- a/maintenance/SetContainersAccess.php +++ b/maintenance/SetContainersAccess.php @@ -9,6 +9,8 @@ class SetContainersAccess extends Maintenance { + private bool $retrying = false; + public function __construct() { parent::__construct(); @@ -35,13 +37,14 @@ public function execute(): void { $secure = ( $private || ( $publicPrivate && $isPrivate ) ) ? [ 'noAccess' => true, 'noListing' => true ] : []; - $this->prepareDirectory( $backend, $dir, $secure ); + $this->prepareDirectory( $backend, $dir, $zone, $secure ); } } - protected function prepareDirectory( + private function prepareDirectory( FileBackend $backend, string $dir, + string $zone, array $secure ): void { // Create zone if it doesn't exist... @@ -50,7 +53,8 @@ protected function prepareDirectory( $status = $backend->prepare( [ 'dir' => $dir ] + $secure ); if ( !$status->isOK() ) { - $this->output( 'failed...' ); + $this->handleFailure( $dir, $zone, $status->getMessages( 'error' ) ); + return; } // Make sure zone has the right ACLs... @@ -64,11 +68,31 @@ protected function prepareDirectory( $status->merge( $backend->publish( [ 'dir' => $dir, 'access' => true ] ) ); } - if ( $status->isOK() ) { - $this->output( "done.\n" ); + if ( !$status->isOK() ) { + $this->handleFailure( $dir, $zone, $status->getMessages( 'error' ) ); } else { - $this->output( "failed.\n" ); - print_r( $status->getMessages( 'error' ) ); + $this->output( "done.\n" ); + } + } + + private function handleFailure( + string $dir, + string $zone, + array $errors + ): void { + $this->output( "failed.\n" ); + print_r( $errors ); + + if ( $this->retrying ) { + $this->fatalError( 'Something still went wrong after retrying.' ); + } + + $hookRunner = $this->getServiceContainer()->get( 'CreateWikiHookRunner' ); + if ( $hookRunner->onCreateWikiSetContainersAccessFailed( $dir, $zone, $errors ) ) { + // If the hook returned true, we can try this script one time. + $this->output( "retrying.\n" ); + $this->retrying = true; + $this->execute(); } } } From a2b4a31fa90f8f6e1cb111a6340689289b31070b Mon Sep 17 00:00:00 2001 From: CosmicAlpha Date: Wed, 19 Mar 2025 11:45:08 -0600 Subject: [PATCH 02/22] Add --- .../CreateWikiSetContainersAccessFailedHook.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 includes/Hooks/CreateWikiSetContainersAccessFailedHook.php diff --git a/includes/Hooks/CreateWikiSetContainersAccessFailedHook.php b/includes/Hooks/CreateWikiSetContainersAccessFailedHook.php new file mode 100644 index 0000000000..a17a1789c4 --- /dev/null +++ b/includes/Hooks/CreateWikiSetContainersAccessFailedHook.php @@ -0,0 +1,16 @@ + Date: Wed, 19 Mar 2025 11:47:21 -0600 Subject: [PATCH 03/22] Add --- includes/Hooks/CreateWikiHookRunner.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/includes/Hooks/CreateWikiHookRunner.php b/includes/Hooks/CreateWikiHookRunner.php index a99b72aaf6..ef2dd9bd2b 100644 --- a/includes/Hooks/CreateWikiHookRunner.php +++ b/includes/Hooks/CreateWikiHookRunner.php @@ -16,6 +16,7 @@ class CreateWikiHookRunner implements CreateWikiGenerateDatabaseListsHook, CreateWikiReadPersistentModelHook, CreateWikiRenameHook, + CreateWikiSetContainersAccessFailedHook, CreateWikiStateClosedHook, CreateWikiStateOpenHook, CreateWikiStatePrivateHook, @@ -98,6 +99,18 @@ public function onCreateWikiRename( ); } + /** @inheritDoc */ + public function onCreateWikiSetContainersAccessFailed( + string $dir, + string $zone, + array $errors + ): bool { + $this->hookContainer->run( + 'CreateWikiSetContainersAccessFailed', + [ $dir, $zone, $errors ] + ); + } + /** @inheritDoc */ public function onCreateWikiStateClosed( string $dbname ): void { $this->hookContainer->run( From 7f9a7e927e175d7a1e5f70cc28c3ffc056c7bd59 Mon Sep 17 00:00:00 2001 From: CosmicAlpha Date: Wed, 19 Mar 2025 11:47:46 -0600 Subject: [PATCH 04/22] Split lines --- includes/Hooks/CreateWikiSetContainersAccessFailedHook.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/includes/Hooks/CreateWikiSetContainersAccessFailedHook.php b/includes/Hooks/CreateWikiSetContainersAccessFailedHook.php index a17a1789c4..30ef94493e 100644 --- a/includes/Hooks/CreateWikiSetContainersAccessFailedHook.php +++ b/includes/Hooks/CreateWikiSetContainersAccessFailedHook.php @@ -11,6 +11,8 @@ interface CreateWikiSetContainersAccessFailedHook { * @return bool */ public function onCreateWikiSetContainersAccessFailed( - string $dir, string $zone, array $errors + string $dir, + string $zone, + array $errors ): bool; } From 6972c92280e68021cca285232348b6576f66114c Mon Sep 17 00:00:00 2001 From: CosmicAlpha Date: Wed, 19 Mar 2025 11:53:06 -0600 Subject: [PATCH 05/22] Fix --- includes/Hooks/CreateWikiHookRunner.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/Hooks/CreateWikiHookRunner.php b/includes/Hooks/CreateWikiHookRunner.php index ef2dd9bd2b..353f78592f 100644 --- a/includes/Hooks/CreateWikiHookRunner.php +++ b/includes/Hooks/CreateWikiHookRunner.php @@ -105,7 +105,7 @@ public function onCreateWikiSetContainersAccessFailed( string $zone, array $errors ): bool { - $this->hookContainer->run( + return $this->hookContainer->run( 'CreateWikiSetContainersAccessFailed', [ $dir, $zone, $errors ] ); From 04312a52f68afe95067289c1b5f09272e38ac16a Mon Sep 17 00:00:00 2001 From: CosmicAlpha Date: Wed, 19 Mar 2025 12:26:07 -0600 Subject: [PATCH 06/22] Fix --- maintenance/SetContainersAccess.php | 33 ++++++++++++++++++----------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/maintenance/SetContainersAccess.php b/maintenance/SetContainersAccess.php index 8396d2ec9c..27d134ebe1 100644 --- a/maintenance/SetContainersAccess.php +++ b/maintenance/SetContainersAccess.php @@ -5,11 +5,13 @@ use MediaWiki\MainConfigNames; use MediaWiki\Maintenance\Maintenance; use Miraheze\CreateWiki\ConfigNames; +use StatusValue; use Wikimedia\FileBackend\FileBackend; class SetContainersAccess extends Maintenance { - private bool $retrying = false; + private bool $isRetrying = false; + private bool $needsRetry = false; public function __construct() { parent::__construct(); @@ -39,6 +41,12 @@ public function execute(): void { $this->prepareDirectory( $backend, $dir, $zone, $secure ); } + + if ( $this->needsRetry && !$this->isRetrying ) { + $this->isRetrying = true; + $this->needsRetry = false; + $this->execute(); + } } private function prepareDirectory( @@ -53,7 +61,7 @@ private function prepareDirectory( $status = $backend->prepare( [ 'dir' => $dir ] + $secure ); if ( !$status->isOK() ) { - $this->handleFailure( $dir, $zone, $status->getMessages( 'error' ) ); + $this->handleFailure( $dir, $zone, $status ); return; } @@ -69,7 +77,7 @@ private function prepareDirectory( } if ( !$status->isOK() ) { - $this->handleFailure( $dir, $zone, $status->getMessages( 'error' ) ); + $this->handleFailure( $dir, $zone, $status ); } else { $this->output( "done.\n" ); } @@ -78,21 +86,22 @@ private function prepareDirectory( private function handleFailure( string $dir, string $zone, - array $errors + StatusValue $status ): void { - $this->output( "failed.\n" ); - print_r( $errors ); - - if ( $this->retrying ) { - $this->fatalError( 'Something still went wrong after retrying.' ); + if ( $this->isRetrying ) { + $this->output( "retry failed.\n" ); + $this->error( $status ); + return; } + $this->output( "failed.\n" ); + $this->error( $status ); + $hookRunner = $this->getServiceContainer()->get( 'CreateWikiHookRunner' ); - if ( $hookRunner->onCreateWikiSetContainersAccessFailed( $dir, $zone, $errors ) ) { + if ( $hookRunner->onCreateWikiSetContainersAccessFailed( $dir, $zone ) ) { // If the hook returned true, we can try this script one time. $this->output( "retrying.\n" ); - $this->retrying = true; - $this->execute(); + $this->needsRetry = true; } } } From 83de27d339080f4c75c85f6cb32c73069a870434 Mon Sep 17 00:00:00 2001 From: CosmicAlpha Date: Wed, 19 Mar 2025 12:26:44 -0600 Subject: [PATCH 07/22] Fix --- includes/Hooks/CreateWikiSetContainersAccessFailedHook.php | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/includes/Hooks/CreateWikiSetContainersAccessFailedHook.php b/includes/Hooks/CreateWikiSetContainersAccessFailedHook.php index 30ef94493e..52950f9989 100644 --- a/includes/Hooks/CreateWikiSetContainersAccessFailedHook.php +++ b/includes/Hooks/CreateWikiSetContainersAccessFailedHook.php @@ -7,12 +7,7 @@ interface CreateWikiSetContainersAccessFailedHook { /** * @param string $dir * @param string $zone - * @param array $errors * @return bool */ - public function onCreateWikiSetContainersAccessFailed( - string $dir, - string $zone, - array $errors - ): bool; + public function onCreateWikiSetContainersAccessFailed( string $dir, string $zone ): bool; } From e60c983826ee69fd87fe9030f5a0af2be0da4eba Mon Sep 17 00:00:00 2001 From: CosmicAlpha Date: Wed, 19 Mar 2025 12:28:04 -0600 Subject: [PATCH 08/22] Fix --- includes/Hooks/CreateWikiHookRunner.php | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/includes/Hooks/CreateWikiHookRunner.php b/includes/Hooks/CreateWikiHookRunner.php index 353f78592f..8e9d3b5ceb 100644 --- a/includes/Hooks/CreateWikiHookRunner.php +++ b/includes/Hooks/CreateWikiHookRunner.php @@ -100,14 +100,10 @@ public function onCreateWikiRename( } /** @inheritDoc */ - public function onCreateWikiSetContainersAccessFailed( - string $dir, - string $zone, - array $errors - ): bool { + public function onCreateWikiSetContainersAccessFailed( string $dir, string $zone ): bool { return $this->hookContainer->run( 'CreateWikiSetContainersAccessFailed', - [ $dir, $zone, $errors ] + [ $dir, $zone ] ); } From 139f68fce985127be4087e4f9b1b1cf41b7937bb Mon Sep 17 00:00:00 2001 From: CosmicAlpha Date: Wed, 19 Mar 2025 12:53:28 -0600 Subject: [PATCH 09/22] Fix --- maintenance/SetContainersAccess.php | 49 +++++++++++++++++++++-------- 1 file changed, 36 insertions(+), 13 deletions(-) diff --git a/maintenance/SetContainersAccess.php b/maintenance/SetContainersAccess.php index 27d134ebe1..47a3a71049 100644 --- a/maintenance/SetContainersAccess.php +++ b/maintenance/SetContainersAccess.php @@ -10,6 +10,8 @@ class SetContainersAccess extends Maintenance { + private array $failedZones = []; + private bool $isRetrying = false; private bool $needsRetry = false; @@ -23,6 +25,16 @@ public function __construct() { } public function execute(): void { + $this->processContainers(); + + if ( $this->needsRetry && !$this->isRetrying ) { + $this->retryExecution(); + } + + $this->handleFinalFailures(); + } + + private function processContainers(): void { $repo = $this->getServiceContainer()->getRepoGroup()->getLocalRepo(); $backend = $repo->getBackend(); @@ -41,12 +53,17 @@ public function execute(): void { $this->prepareDirectory( $backend, $dir, $zone, $secure ); } + } - if ( $this->needsRetry && !$this->isRetrying ) { - $this->isRetrying = true; - $this->needsRetry = false; - $this->execute(); + private function retryExecution(): void { + if ( $this->isRetrying || !$this->needsRetry ) { + return; } + + $this->isRetrying = true; + $this->needsRetry = false; + + $this->processContainers(); } private function prepareDirectory( @@ -88,20 +105,26 @@ private function handleFailure( string $zone, StatusValue $status ): void { + $this->output( $this->isRetrying ? + "retry failed.\n" : "failed.\n" + ); + + $this->error( $status ); + if ( $this->isRetrying ) { - $this->output( "retry failed.\n" ); - $this->error( $status ); + $this->failedZones[$zone] = $dir; return; } - $this->output( "failed.\n" ); - $this->error( $status ); + $this->needsRetry = true; + } - $hookRunner = $this->getServiceContainer()->get( 'CreateWikiHookRunner' ); - if ( $hookRunner->onCreateWikiSetContainersAccessFailed( $dir, $zone ) ) { - // If the hook returned true, we can try this script one time. - $this->output( "retrying.\n" ); - $this->needsRetry = true; + private function handleFinalFailures(): void { + if ( $this->failedZones ) { + $hookRunner = $this->getServiceContainer()->get( 'CreateWikiHookRunner' ); + foreach ( $this->failedZones as $zone => $dir ) { + $hookRunner->onCreateWikiSetContainersAccessFailed( $dir, $zone ); + } } } } From 5683ff59ee682b0df2e4e9306ba152f42c0717fe Mon Sep 17 00:00:00 2001 From: CosmicAlpha Date: Wed, 19 Mar 2025 12:54:43 -0600 Subject: [PATCH 10/22] Fix --- includes/Hooks/CreateWikiHookRunner.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/Hooks/CreateWikiHookRunner.php b/includes/Hooks/CreateWikiHookRunner.php index 8e9d3b5ceb..a325044646 100644 --- a/includes/Hooks/CreateWikiHookRunner.php +++ b/includes/Hooks/CreateWikiHookRunner.php @@ -100,7 +100,7 @@ public function onCreateWikiRename( } /** @inheritDoc */ - public function onCreateWikiSetContainersAccessFailed( string $dir, string $zone ): bool { + public function onCreateWikiSetContainersAccessFailed( string $dir, string $zone ): void { return $this->hookContainer->run( 'CreateWikiSetContainersAccessFailed', [ $dir, $zone ] From a2ca9404dde889c4a6d09e35125ab4984ea7c871 Mon Sep 17 00:00:00 2001 From: CosmicAlpha Date: Wed, 19 Mar 2025 12:55:22 -0600 Subject: [PATCH 11/22] Fix --- includes/Hooks/CreateWikiSetContainersAccessFailedHook.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/includes/Hooks/CreateWikiSetContainersAccessFailedHook.php b/includes/Hooks/CreateWikiSetContainersAccessFailedHook.php index 52950f9989..4ea1a50a03 100644 --- a/includes/Hooks/CreateWikiSetContainersAccessFailedHook.php +++ b/includes/Hooks/CreateWikiSetContainersAccessFailedHook.php @@ -7,7 +7,7 @@ interface CreateWikiSetContainersAccessFailedHook { /** * @param string $dir * @param string $zone - * @return bool + * @return void */ - public function onCreateWikiSetContainersAccessFailed( string $dir, string $zone ): bool; + public function onCreateWikiSetContainersAccessFailed( string $dir, string $zone ): void; } From 6e71e91fa41beb16a7c71dde7e0f74b16962f787 Mon Sep 17 00:00:00 2001 From: CosmicAlpha Date: Wed, 19 Mar 2025 13:04:17 -0600 Subject: [PATCH 12/22] Fix hook --- maintenance/SetContainersAccess.php | 41 +++++++++-------------------- 1 file changed, 13 insertions(+), 28 deletions(-) diff --git a/maintenance/SetContainersAccess.php b/maintenance/SetContainersAccess.php index 47a3a71049..a9fa7af58e 100644 --- a/maintenance/SetContainersAccess.php +++ b/maintenance/SetContainersAccess.php @@ -10,8 +10,6 @@ class SetContainersAccess extends Maintenance { - private array $failedZones = []; - private bool $isRetrying = false; private bool $needsRetry = false; @@ -28,10 +26,11 @@ public function execute(): void { $this->processContainers(); if ( $this->needsRetry && !$this->isRetrying ) { - $this->retryExecution(); - } + $this->isRetrying = true; + $this->needsRetry = false; - $this->handleFinalFailures(); + $this->processContainers(); + } } private function processContainers(): void { @@ -56,14 +55,6 @@ private function processContainers(): void { } private function retryExecution(): void { - if ( $this->isRetrying || !$this->needsRetry ) { - return; - } - - $this->isRetrying = true; - $this->needsRetry = false; - - $this->processContainers(); } private function prepareDirectory( @@ -105,26 +96,20 @@ private function handleFailure( string $zone, StatusValue $status ): void { - $this->output( $this->isRetrying ? - "retry failed.\n" : "failed.\n" - ); - - $this->error( $status ); - if ( $this->isRetrying ) { - $this->failedZones[$zone] = $dir; + $this->output( "retry failed.\n" ); + $this->error( $status ); return; } - $this->needsRetry = true; - } + $this->output( "failed.\n" ); + $this->error( $status ); - private function handleFinalFailures(): void { - if ( $this->failedZones ) { - $hookRunner = $this->getServiceContainer()->get( 'CreateWikiHookRunner' ); - foreach ( $this->failedZones as $zone => $dir ) { - $hookRunner->onCreateWikiSetContainersAccessFailed( $dir, $zone ); - } + $hookRunner = $this->getServiceContainer()->get( 'CreateWikiHookRunner' ); + if ( $hookRunner->onCreateWikiSetContainersAccessFailed( $dir, $zone ) ) { + // If the hook returned true, we can try this script one time. + $this->output( "retrying.\n" ); + $this->needsRetry = true; } } } From 3c06e118c60feea839fbc8c5eee9a5fb26096cf9 Mon Sep 17 00:00:00 2001 From: CosmicAlpha Date: Wed, 19 Mar 2025 13:04:51 -0600 Subject: [PATCH 13/22] Fix --- includes/Hooks/CreateWikiHookRunner.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/Hooks/CreateWikiHookRunner.php b/includes/Hooks/CreateWikiHookRunner.php index a325044646..8e9d3b5ceb 100644 --- a/includes/Hooks/CreateWikiHookRunner.php +++ b/includes/Hooks/CreateWikiHookRunner.php @@ -100,7 +100,7 @@ public function onCreateWikiRename( } /** @inheritDoc */ - public function onCreateWikiSetContainersAccessFailed( string $dir, string $zone ): void { + public function onCreateWikiSetContainersAccessFailed( string $dir, string $zone ): bool { return $this->hookContainer->run( 'CreateWikiSetContainersAccessFailed', [ $dir, $zone ] From 64edc8eeddeedbd29421e3da2d5370caf9aee671 Mon Sep 17 00:00:00 2001 From: CosmicAlpha Date: Wed, 19 Mar 2025 13:05:11 -0600 Subject: [PATCH 14/22] Fix --- includes/Hooks/CreateWikiSetContainersAccessFailedHook.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/includes/Hooks/CreateWikiSetContainersAccessFailedHook.php b/includes/Hooks/CreateWikiSetContainersAccessFailedHook.php index 4ea1a50a03..52950f9989 100644 --- a/includes/Hooks/CreateWikiSetContainersAccessFailedHook.php +++ b/includes/Hooks/CreateWikiSetContainersAccessFailedHook.php @@ -7,7 +7,7 @@ interface CreateWikiSetContainersAccessFailedHook { /** * @param string $dir * @param string $zone - * @return void + * @return bool */ - public function onCreateWikiSetContainersAccessFailed( string $dir, string $zone ): void; + public function onCreateWikiSetContainersAccessFailed( string $dir, string $zone ): bool; } From bf018311267154dda7fb9f774a902fa95650845b Mon Sep 17 00:00:00 2001 From: CosmicAlpha Date: Wed, 19 Mar 2025 13:05:40 -0600 Subject: [PATCH 15/22] Remove --- maintenance/SetContainersAccess.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/maintenance/SetContainersAccess.php b/maintenance/SetContainersAccess.php index a9fa7af58e..36d50b85ba 100644 --- a/maintenance/SetContainersAccess.php +++ b/maintenance/SetContainersAccess.php @@ -54,9 +54,6 @@ private function processContainers(): void { } } - private function retryExecution(): void { - } - private function prepareDirectory( FileBackend $backend, string $dir, From f653cc4793edcd4f296cf5f4f7f1c040cc412327 Mon Sep 17 00:00:00 2001 From: CosmicAlpha Date: Wed, 19 Mar 2025 13:07:34 -0600 Subject: [PATCH 16/22] Order --- maintenance/SetContainersAccess.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/maintenance/SetContainersAccess.php b/maintenance/SetContainersAccess.php index 36d50b85ba..2de02d3750 100644 --- a/maintenance/SetContainersAccess.php +++ b/maintenance/SetContainersAccess.php @@ -66,7 +66,7 @@ private function prepareDirectory( $status = $backend->prepare( [ 'dir' => $dir ] + $secure ); if ( !$status->isOK() ) { - $this->handleFailure( $dir, $zone, $status ); + $this->handleFailure( $status, $dir, $zone ); return; } @@ -82,16 +82,16 @@ private function prepareDirectory( } if ( !$status->isOK() ) { - $this->handleFailure( $dir, $zone, $status ); + $this->handleFailure( $status, $dir, $zone ); } else { $this->output( "done.\n" ); } } private function handleFailure( + StatusValue $status, string $dir, - string $zone, - StatusValue $status + string $zone ): void { if ( $this->isRetrying ) { $this->output( "retry failed.\n" ); From e4b4e2fac402cd00c755ed3357c34a7b672df835 Mon Sep 17 00:00:00 2001 From: CosmicAlpha Date: Wed, 19 Mar 2025 13:08:52 -0600 Subject: [PATCH 17/22] Early return --- maintenance/SetContainersAccess.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/maintenance/SetContainersAccess.php b/maintenance/SetContainersAccess.php index 2de02d3750..83c60e0612 100644 --- a/maintenance/SetContainersAccess.php +++ b/maintenance/SetContainersAccess.php @@ -83,9 +83,10 @@ private function prepareDirectory( if ( !$status->isOK() ) { $this->handleFailure( $status, $dir, $zone ); - } else { - $this->output( "done.\n" ); + return; } + + $this->output( "done.\n" ); } private function handleFailure( From 45999547f6833c16c2cbb701666e5c9120eae574 Mon Sep 17 00:00:00 2001 From: CosmicAlpha Date: Wed, 19 Mar 2025 15:46:40 -0600 Subject: [PATCH 18/22] Add --- includes/Hooks/CreateWikiSetContainersAccessFailedHook.php | 1 + 1 file changed, 1 insertion(+) diff --git a/includes/Hooks/CreateWikiSetContainersAccessFailedHook.php b/includes/Hooks/CreateWikiSetContainersAccessFailedHook.php index 52950f9989..d42dbdfb84 100644 --- a/includes/Hooks/CreateWikiSetContainersAccessFailedHook.php +++ b/includes/Hooks/CreateWikiSetContainersAccessFailedHook.php @@ -8,6 +8,7 @@ interface CreateWikiSetContainersAccessFailedHook { * @param string $dir * @param string $zone * @return bool + * @codeCoverageIgnore Cannot be annotated as covered. */ public function onCreateWikiSetContainersAccessFailed( string $dir, string $zone ): bool; } From 4f9331cc53b26c61745de45917a2f691d548bc02 Mon Sep 17 00:00:00 2001 From: CosmicAlpha Date: Wed, 19 Mar 2025 18:59:01 -0600 Subject: [PATCH 19/22] Cleanup --- maintenance/SetContainersAccess.php | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/maintenance/SetContainersAccess.php b/maintenance/SetContainersAccess.php index 83c60e0612..f4ed28af10 100644 --- a/maintenance/SetContainersAccess.php +++ b/maintenance/SetContainersAccess.php @@ -34,31 +34,33 @@ public function execute(): void { } private function processContainers(): void { + $remoteWikiFactory = $this->getServiceContainer()->get( 'RemoteWikiFactory' ); $repo = $this->getServiceContainer()->getRepoGroup()->getLocalRepo(); - $backend = $repo->getBackend(); - $remoteWiki = $this->getServiceContainer()->get( 'RemoteWikiFactory' )->newInstance( + $backend = $repo->getBackend(); + $remoteWiki = $remoteWikiFactory->newInstance( $this->getConfig()->get( MainConfigNames::DBname ) ); $isPrivate = $remoteWiki->isPrivate(); - - foreach ( $this->getConfig()->get( ConfigNames::Containers ) as $zone => $status ) { + foreach ( $this->getConfig()->get( ConfigNames::Containers ) as $zone => $state ) { $dir = $backend->getContainerStoragePath( $zone ); - $private = $status === 'private'; - $publicPrivate = $status === 'public-private'; + + $private = $state === 'private'; + $publicPrivate = $state === 'public-private'; + $secure = ( $private || ( $publicPrivate && $isPrivate ) ) ? [ 'noAccess' => true, 'noListing' => true ] : []; - $this->prepareDirectory( $backend, $dir, $zone, $secure ); + $this->prepareDirectory( $backend, $secure, $dir, $zone ); } } private function prepareDirectory( FileBackend $backend, + array $secure, string $dir, - string $zone, - array $secure + string $zone ): void { // Create zone if it doesn't exist... $this->output( "Making sure '$dir' exists..." ); From 3d8ac676c5e2425326de4de09b3e9aa13db98ad1 Mon Sep 17 00:00:00 2001 From: CosmicAlpha Date: Sat, 31 May 2025 23:43:22 -0600 Subject: [PATCH 20/22] Fix --- maintenance/SetContainersAccess.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/maintenance/SetContainersAccess.php b/maintenance/SetContainersAccess.php index 0ed93da104..0c025ba439 100644 --- a/maintenance/SetContainersAccess.php +++ b/maintenance/SetContainersAccess.php @@ -5,12 +5,14 @@ use MediaWiki\MainConfigNames; use MediaWiki\Maintenance\Maintenance; use Miraheze\CreateWiki\ConfigNames; +use Miraheze\CreateWiki\Hooks\CreateWikiHookRunner; use Miraheze\CreateWiki\Services\RemoteWikiFactory; use StatusValue; use Wikimedia\FileBackend\FileBackend; class SetContainersAccess extends Maintenance { + private CreateWikiHookRunner $hookRunner; private RemoteWikiFactory $remoteWikiFactory; private bool $isRetrying = false; @@ -27,6 +29,7 @@ public function __construct() { private function initServices(): void { $services = $this->getServiceContainer(); + $this->hookRunner = $services->get( 'CreateWikiHookRunner' ); $this->remoteWikiFactory = $services->get( 'RemoteWikiFactory' ); } @@ -113,8 +116,7 @@ private function handleFailure( $this->output( "failed.\n" ); $this->error( $status ); - $hookRunner = $this->getServiceContainer()->get( 'CreateWikiHookRunner' ); - if ( $hookRunner->onCreateWikiSetContainersAccessFailed( $dir, $zone ) ) { + if ( $this->hookRunner->onCreateWikiSetContainersAccessFailed( $dir, $zone ) ) { // If the hook returned true, we can try this script one time. $this->output( "retrying.\n" ); $this->needsRetry = true; From 26babfc3037b9f4e3ea76b488383199ce622d3f4 Mon Sep 17 00:00:00 2001 From: CosmicAlpha Date: Sun, 1 Jun 2025 03:24:37 -0600 Subject: [PATCH 21/22] Add comment --- includes/Hooks/CreateWikiSetContainersAccessFailedHook.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/Hooks/CreateWikiSetContainersAccessFailedHook.php b/includes/Hooks/CreateWikiSetContainersAccessFailedHook.php index d42dbdfb84..1ae45d66c2 100644 --- a/includes/Hooks/CreateWikiSetContainersAccessFailedHook.php +++ b/includes/Hooks/CreateWikiSetContainersAccessFailedHook.php @@ -7,7 +7,7 @@ interface CreateWikiSetContainersAccessFailedHook { /** * @param string $dir * @param string $zone - * @return bool + * @return bool Whether to retry the script again after running this hook. * @codeCoverageIgnore Cannot be annotated as covered. */ public function onCreateWikiSetContainersAccessFailed( string $dir, string $zone ): bool; From 1347d7ac3f6639e0e08c3183e2e46a0a2327b3ef Mon Sep 17 00:00:00 2001 From: CosmicAlpha Date: Thu, 7 Aug 2025 13:48:02 -0600 Subject: [PATCH 22/22] Update --- includes/Hooks/CreateWikiSetContainersAccessFailedHook.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/includes/Hooks/CreateWikiSetContainersAccessFailedHook.php b/includes/Hooks/CreateWikiSetContainersAccessFailedHook.php index 1ae45d66c2..9a5edd5586 100644 --- a/includes/Hooks/CreateWikiSetContainersAccessFailedHook.php +++ b/includes/Hooks/CreateWikiSetContainersAccessFailedHook.php @@ -5,8 +5,8 @@ interface CreateWikiSetContainersAccessFailedHook { /** - * @param string $dir - * @param string $zone + * @param string $dir The current storage directory. + * @param string $zone The current zone. * @return bool Whether to retry the script again after running this hook. * @codeCoverageIgnore Cannot be annotated as covered. */