Changeset 37202
- Timestamp:
- 04/14/2016 03:39:45 AM (9 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-admin/network/themes.php
r36770 r37202 30 30 31 31 if ( $action ) { 32 $allowed_themes = get_site_option( 'allowedthemes' );33 32 switch ( $action ) { 34 33 case 'enable': 35 34 check_admin_referer('enable-theme_' . $_GET['theme']); 36 $allowed_themes[ $_GET['theme'] ] = true; 37 update_site_option( 'allowedthemes', $allowed_themes ); 35 WP_Theme::network_enable_theme( $_GET['theme'] ); 38 36 if ( false === strpos( $referer, '/network/themes.php' ) ) 39 37 wp_redirect( network_admin_url( 'themes.php?enabled=1' ) ); … … 43 41 case 'disable': 44 42 check_admin_referer('disable-theme_' . $_GET['theme']); 45 unset( $allowed_themes[ $_GET['theme'] ] ); 46 update_site_option( 'allowedthemes', $allowed_themes ); 43 WP_Theme::network_disable_theme( $_GET['theme'] ); 47 44 wp_safe_redirect( add_query_arg( 'disabled', '1', $referer ) ); 48 45 exit; … … 54 51 exit; 55 52 } 56 foreach ( (array) $themes as $theme ) 57 $allowed_themes[ $theme ] = true; 58 update_site_option( 'allowedthemes', $allowed_themes ); 53 WP_Theme::network_enable_theme( (array) $themes ); 59 54 wp_safe_redirect( add_query_arg( 'enabled', count( $themes ), $referer ) ); 60 55 exit; … … 66 61 exit; 67 62 } 68 foreach ( (array) $themes as $theme ) 69 unset( $allowed_themes[ $theme ] ); 70 update_site_option( 'allowedthemes', $allowed_themes ); 63 WP_Theme::network_disable_theme( (array) $themes ); 71 64 wp_safe_redirect( add_query_arg( 'disabled', count( $themes ), $referer ) ); 72 65 exit; -
trunk/src/wp-includes/class-wp-theme.php
r36739 r37202 1317 1317 1318 1318 /** 1319 * Enable a theme for all sites on the current network. 1320 * 1321 * @since 4.6.0 1322 * 1323 * @static 1324 * @access public 1325 * 1326 * @param string|array $stylesheets Stylesheet name or array of stylesheet names. 1327 */ 1328 public static function network_enable_theme( $stylesheets ) { 1329 if ( ! is_multisite() ) { 1330 return; 1331 } 1332 1333 if ( ! is_array( $stylesheets ) ) { 1334 $stylesheets = array( $stylesheets ); 1335 } 1336 1337 $allowed_themes = get_site_option( 'allowedthemes' ); 1338 foreach ( $stylesheets as $stylesheet ) { 1339 $allowed_themes[ $stylesheet ] = true; 1340 } 1341 1342 update_site_option( 'allowedthemes', $allowed_themes ); 1343 } 1344 1345 /** 1346 * Disable a theme for all sites on the current network. 1347 * 1348 * @since 4.6.0 1349 * 1350 * @static 1351 * @access public 1352 * 1353 * @param string|array $stylesheets Stylesheet name or array of stylesheet names. 1354 */ 1355 public static function network_disable_theme( $stylesheets ) { 1356 if ( ! is_multisite() ) { 1357 return; 1358 } 1359 1360 if ( ! is_array( $stylesheets ) ) { 1361 $stylesheets = array( $stylesheets ); 1362 } 1363 1364 $allowed_themes = get_site_option( 'allowedthemes' ); 1365 foreach ( $stylesheets as $stylesheet ) { 1366 if ( isset( $allowed_themes[ $stylesheet ] ) ) { 1367 unset( $allowed_themes[ $stylesheet ] ); 1368 } 1369 } 1370 1371 update_site_option( 'allowedthemes', $allowed_themes ); 1372 } 1373 1374 /** 1319 1375 * Sorts themes by name. 1320 1376 * -
trunk/tests/phpunit/tests/theme/WPTheme.php
r27915 r37202 140 140 $this->assertFalse( $theme->display( 'Tags' ) ); 141 141 } 142 143 144 /** 145 * Enable a single theme on a network. 146 * 147 * @ticket 30594 148 */ 149 function test_wp_theme_network_enable_single_theme() { 150 if ( ! is_multisite() ) { 151 $this->markTestSkipped( 'This test requires multisite' ); 152 } 153 154 $theme = 'testtheme-1'; 155 $current_allowed_themes = get_site_option( 'allowedthemes' ); 156 WP_Theme::network_enable_theme( $theme ); 157 $new_allowed_themes = get_site_option( 'allowedthemes' ); 158 update_site_option( 'allowedthemes', $current_allowed_themes ); // reset previous value. 159 $current_allowed_themes['testtheme-1'] = true; // Add the new theme to the previous set. 160 161 $this->assertEqualSetsWithIndex( $current_allowed_themes, $new_allowed_themes ); 162 } 163 164 /** 165 * Enable multiple themes on a network. 166 * 167 * @ticket 30594 168 */ 169 function test_wp_theme_network_enable_multiple_themes() { 170 if ( ! is_multisite() ) { 171 $this->markTestSkipped( 'This test requires multisite' ); 172 } 173 174 $themes = array( 'testtheme-2', 'testtheme-3' ); 175 $current_allowed_themes = get_site_option( 'allowedthemes' ); 176 WP_Theme::network_enable_theme( $themes ); 177 $new_allowed_themes = get_site_option( 'allowedthemes' ); 178 update_site_option( 'allowedthemes', $current_allowed_themes ); // reset previous value. 179 $current_allowed_themes = array_merge( $current_allowed_themes, array( 'testtheme-2' => true, 'testtheme-3' => true ) ); 180 181 $this->assertEqualSetsWithIndex( $current_allowed_themes, $new_allowed_themes ); 182 } 183 184 /** 185 * Disable a single theme on a network. 186 * 187 * @ticket 30594 188 */ 189 function test_network_disable_single_theme() { 190 if ( ! is_multisite() ) { 191 $this->markTestSkipped( 'This test requires multisite' ); 192 } 193 194 $current_allowed_themes = get_site_option( 'allowedthemes' ); 195 196 $allowed_themes = array( 'existing-1' => true, 'existing-2' => true, 'existing-3' => true ); 197 update_site_option( 'allowedthemes', $allowed_themes ); 198 199 $disable_theme = 'existing-2'; 200 WP_Theme::network_disable_theme( $disable_theme ); 201 $new_allowed_themes = get_site_option( 'allowedthemes' ); 202 update_site_option( 'allowedthemes', $current_allowed_themes ); // reset previous value. 203 unset( $allowed_themes[ $disable_theme ] ); // Remove deleted theme from initial set. 204 205 $this->assertEqualSetsWithIndex( $allowed_themes, $new_allowed_themes ); 206 } 207 208 /** 209 * Disable multiple themes on a network. 210 * 211 * @ticket 30594 212 */ 213 function test_network_disable_multiple_themes() { 214 if ( ! is_multisite() ) { 215 $this->markTestSkipped( 'This test requires multisite' ); 216 } 217 218 $current_allowed_themes = get_site_option( 'allowedthemes' ); 219 220 $allowed_themes = array( 'existing-4' => true, 'existing-5' => true, 'existing-6' => true ); 221 update_site_option( 'allowedthemes', $allowed_themes ); 222 223 $disable_themes = array( 'existing-4', 'existing-5' ); 224 WP_Theme::network_disable_theme( $disable_themes ); 225 $new_allowed_themes = get_site_option( 'allowedthemes' ); 226 update_site_option( 'allowedthemes', $current_allowed_themes ); // reset previous value. 227 unset( $allowed_themes['existing-4'] ); 228 unset( $allowed_themes['existing-5'] ); 229 230 $this->assertEqualSetsWithIndex( $allowed_themes, $new_allowed_themes ); 231 } 142 232 }
Note: See TracChangeset
for help on using the changeset viewer.