PluginProbe
Redirection / 5.2
Redirection v5.2
5.10.0 5.9.0 5.8.1 5.8.0 3.7.2 3.7.3 4.0 4.0.1 4.1 4.1.1 4.2 4.2.1 4.2.2 4.2.3 4.3 4.3.1 4.3.2 4.3.3 4.4 4.4.1 4.4.2 4.5 4.5.1 4.6.2 4.7.1 All 130 releases
← All changes | database/database.php +26 -10 4.05.2 View file →
@@ -1,8 +1,8 @@
1 1 <?php
2 2
3 -include_once dirname( __FILE__ ) . '/database-status.php';
4 -include_once dirname( __FILE__ ) . '/database-upgrader.php';
3 +require_once __DIR__ . '/database-status.php';
4 +require_once __DIR__ . '/database-upgrader.php';
5 5
6 6 class Red_Database {
7 7 /**
8 8 * Get all upgrades for a database version
@@ -9,9 +9,9 @@
9 9 *
10 10 * @return array Array of versions from self::get_upgrades()
11 11 */
12 12 public function get_upgrades_for_version( $current_version, $current_stage ) {
13 - if ( $current_version === '' ) {
13 + if ( empty( $current_version ) ) {
14 14 return [
15 15 [
16 16 'version' => REDIRECTION_DB_VERSION,
17 17 'file' => 'latest.php',
@@ -27,9 +27,9 @@
27 27 if ( ! $found ) {
28 28 $upgrader = Red_Database_Upgrader::get( $upgrade );
29 29
30 30 $stage_present = in_array( $current_stage, array_keys( $upgrader->get_stages() ), true );
31 - $same_version = $current_stage === false && version_compare( $upgrade['version'], $current_version, 'g' );
31 + $same_version = $current_stage === false && version_compare( $upgrade['version'], $current_version, 'gt' );
32 32
33 33 if ( $stage_present || $same_version ) {
34 34 $found = true;
35 35 }
@@ -75,17 +75,23 @@
75 75 }
76 76 }
77 77
78 78 public static function apply_to_sites( $callback ) {
79 - if ( is_network_admin() ) {
80 - array_map( function( $site ) use ( $callback ) {
81 - switch_to_blog( $site->blog_id );
79 + if ( is_multisite() && ( is_network_admin() || defined( 'WP_CLI' ) && WP_CLI ) ) {
80 + $total = get_sites( [ 'count' => true ] );
81 + $per_page = 100;
82 82
83 - $callback();
83 + // Paginate through all sites and apply the callback
84 + for ( $offset = 0; $offset < $total; $offset += $per_page ) {
85 + array_map( function( $site ) use ( $callback ) {
86 + switch_to_blog( $site->blog_id );
84 87
85 - restore_current_blog();
86 - }, get_sites() );
88 + $callback();
87 89
90 + restore_current_blog();
91 + }, get_sites( [ 'number' => $per_page, 'offset' => $offset ] ) );
92 + }
93 +
88 94 return;
89 95 }
90 96
91 97 $callback();
@@ -147,8 +153,18 @@
147 153 [
148 154 'version' => '4.0',
149 155 'file' => '400.php',
150 156 'class' => 'Red_Database_400',
157 + ],
158 + [
159 + 'version' => '4.1',
160 + 'file' => '410.php',
161 + 'class' => 'Red_Database_410',
162 + ],
163 + [
164 + 'version' => '4.2',
165 + 'file' => '420.php',
166 + 'class' => 'Red_Database_420',
151 167 ],
152 168 ];
153 169 }
154 170 }