Ticket #30594: 30594.diff
| File 30594.diff, 7.3 KB (added by , 11 years ago) |
|---|
-
src/wp-admin/network/themes.php
29 29 $referer = remove_query_arg( $temp_args, wp_get_referer() ); 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_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' ) ); 40 38 else … … 42 40 exit; 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_network_disable_theme( $_GET['theme'] ); 47 44 wp_safe_redirect( add_query_arg( 'disabled', '1', $referer ) ); 48 45 exit; 49 46 case 'enable-selected': … … 53 50 wp_safe_redirect( add_query_arg( 'error', 'none', $referer ) ); 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_network_enable_theme( (array) $themes ); 59 54 wp_safe_redirect( add_query_arg( 'enabled', count( $themes ), $referer ) ); 60 55 exit; 61 56 case 'disable-selected': … … 65 60 wp_safe_redirect( add_query_arg( 'error', 'none', $referer ) ); 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_network_disable_theme( (array) $themes ); 71 64 wp_safe_redirect( add_query_arg( 'disabled', count( $themes ), $referer ) ); 72 65 exit; 73 66 case 'update-selected' : -
src/wp-includes/class-wp-theme.php
1283 1283 } 1284 1284 1285 1285 /** 1286 * Enable a theme for a whole network 1287 * 1288 * @param mixed $stylesheet Stylesheet name or array of stylesheets 1289 * @access public 1290 */ 1291 public static function network_enable_theme( $stylesheets ) { 1292 if ( ! is_array( $stylesheets ) ) 1293 $stylesheets = array( $stylesheets ); 1294 1295 $allowed_themes = get_site_option( 'allowedthemes' ); 1296 1297 foreach ( $stylesheets as $stylesheet ) 1298 $allowed_themes[ $stylesheet ] = true; 1299 1300 update_site_option( 'allowedthemes', $allowed_themes ); 1301 } 1302 1303 /** 1304 * Disable a theme for a whole network 1305 * 1306 * @param mixed $stylesheet Stylesheet name or array of stylesheets 1307 * @access public 1308 */ 1309 public static function network_disable_theme( $stylesheets ) { 1310 if ( ! is_array( $stylesheets ) ) 1311 $stylesheets = array( $stylesheets ); 1312 1313 $allowed_themes = get_site_option( 'allowedthemes' ); 1314 1315 foreach ( $stylesheets as $stylesheet ) { 1316 if ( isset( $allowed_themes[ $stylesheet ] ) ) 1317 unset( $allowed_themes[ $stylesheet ] ); 1318 } 1319 1320 update_site_option( 'allowedthemes', $allowed_themes ); 1321 } 1322 1323 /** 1286 1324 * Sort themes by name. 1287 1325 * 1288 1326 * @since 3.4.0 -
src/wp-includes/ms-functions.php
2506 2506 */ 2507 2507 return apply_filters( 'subdirectory_reserved_names', $names ); 2508 2508 } 2509 2510 2511 /** 2512 * Enable a theme for a whole network 2513 * 2514 * @uses WP_Theme::network_enable_theme() 2515 * 2516 * @param mixed $stylesheet Stylesheet name or array of stylesheets 2517 */ 2518 function wp_network_enable_theme( $stylesheets ) { 2519 2520 WP_Theme::network_enable_theme( $stylesheets ); 2521 2522 } 2523 2524 /** 2525 * Disable a theme network wide 2526 * 2527 * @uses WP_Theme::network_disable_theme() 2528 * 2529 * @param mixed $stylesheet Stylesheet name or array of stylesheets 2530 */ 2531 function wp_network_disable_theme( $stylesheets ) { 2532 2533 WP_Theme::network_disable_theme( $stylesheets ); 2534 2535 } 2536 No newline at end of file -
tests/phpunit/tests/multisite/network.php
249 249 $dashboard_blog = get_dashboard_blog(); 250 250 $this->assertEquals( $blog_id, $dashboard_blog->blog_id ); 251 251 } 252 253 /** 254 * @ticket 30594 255 */ 256 function test_network_enable_themes() { 257 // Test one theme 258 $theme = 'testtheme-1'; 259 wp_network_enable_theme( $theme ); 260 $enabled = get_site_option( 'allowedthemes' ); 261 $this->assertArrayHasKey( 'testtheme-1', $enabled ); 262 263 // And enable again 264 wp_network_enable_theme( $theme ); 265 $enabled = get_site_option( 'allowedthemes' ); 266 $this->assertArrayHasKey( 'testtheme-1', $enabled ); 267 268 // Test an array of themes 269 $themes = array( 'testtheme-2', 'testtheme-3' ); 270 wp_network_enable_theme( $themes ); 271 $enabled = get_site_option( 'allowedthemes' ); 272 $this->assertArrayHasKey( 'testtheme-1', $enabled ); 273 $this->assertArrayHasKey( 'testtheme-2', $enabled ); 274 $this->assertArrayHasKey( 'testtheme-3', $enabled ); 275 276 // And enable again 277 wp_network_enable_theme( $themes ); 278 $enabled = get_site_option( 'allowedthemes' ); 279 $this->assertArrayHasKey( 'testtheme-1', $enabled ); 280 $this->assertArrayHasKey( 'testtheme-2', $enabled ); 281 $this->assertArrayHasKey( 'testtheme-3', $enabled ); 282 283 } 284 285 /** 286 * @ticket 30594 287 */ 288 function test_network_disable_theme() { 289 // First, enable a few themes 290 $themes = array( 'testtheme-1', 'testtheme-2', 'testtheme-3', 'testtheme-4' ); 291 wp_network_enable_theme( $themes ); 292 293 // Disable one only theme 294 wp_network_disable_theme( 'testtheme-2' ); 295 $enabled = get_site_option( 'allowedthemes' ); 296 297 $this->assertArrayHasKey( 'testtheme-1', $enabled ); 298 $this->assertArrayHasKey( 'testtheme-3', $enabled ); 299 $this->assertArrayHasKey( 'testtheme-4', $enabled ); 300 $this->assertFalse( isset( $enabled['testtheme-2'] ) ); 301 302 // And disable again 303 wp_network_disable_theme( 'testtheme-2' ); 304 $enabled = get_site_option( 'allowedthemes' ); 305 $this->assertArrayHasKey( 'testtheme-1', $enabled ); 306 $this->assertArrayHasKey( 'testtheme-3', $enabled ); 307 $this->assertArrayHasKey( 'testtheme-4', $enabled ); 308 $this->assertFalse( isset( $enabled['testtheme-2'] ) ); 309 310 311 // Disable an array of themes 312 $remove = array( 'testtheme-1', 'testtheme-3' ); 313 wp_network_disable_theme( $remove ); 314 $enabled = get_site_option( 'allowedthemes' ); 315 $this->assertArrayHasKey( 'testtheme-4', $enabled ); 316 $this->assertFalse( isset( $enabled['testtheme-1'] ) ); 317 $this->assertFalse( isset( $enabled['testtheme-2'] ) ); 318 $this->assertFalse( isset( $enabled['testtheme-3'] ) ); 319 320 // And disable again 321 wp_network_disable_theme( $remove ); 322 $enabled = get_site_option( 'allowedthemes' ); 323 $this->assertArrayHasKey( 'testtheme-4', $enabled ); 324 $this->assertFalse( isset( $enabled['testtheme-1'] ) ); 325 $this->assertFalse( isset( $enabled['testtheme-2'] ) ); 326 $this->assertFalse( isset( $enabled['testtheme-3'] ) ); 327 } 252 328 } 253 329 254 330 endif;
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)