]> scripts.mit.edu Git - autoinstalls/wordpress.git/blobdiff - wp-admin/plugins.php
WordPress 3.4.2-scripts
[autoinstalls/wordpress.git] / wp-admin / plugins.php
index 00b53afe6e31d2b6f4b892b91197af20d5a2b2b6..e9fb3b16d9c0482b1422bc134df7d13a5a795bb7 100644 (file)
@@ -12,7 +12,7 @@ require_once('./admin.php');
 if ( is_multisite() ) {
        $menu_perms = get_site_option( 'menu_items', array() );
 
-       if ( empty( $menu_perms['plugins'] ) && ! is_super_admin() )
+       if ( empty( $menu_perms['plugins'] ) && ! current_user_can( 'manage_network_plugins' ) )
                wp_die( __( 'Cheatin’ uh?' ) );
 }
 
@@ -31,9 +31,6 @@ $s = isset($_REQUEST['s']) ? urlencode($_REQUEST['s']) : '';
 $_SERVER['REQUEST_URI'] = remove_query_arg(array('error', 'deleted', 'activate', 'activate-multi', 'deactivate', 'deactivate-multi', '_error_nonce'), $_SERVER['REQUEST_URI']);
 
 if ( $action ) {
-       $network_wide = false;
-       if ( ( isset( $_GET['networkwide'] ) || 'network-activate-selected' == $action ) && is_multisite() && current_user_can( 'manage_network_plugins' ) )
-               $network_wide = true;
 
        switch ( $action ) {
                case 'activate':
@@ -42,7 +39,7 @@ if ( $action ) {
 
                        check_admin_referer('activate-plugin_' . $plugin);
 
-                       $result = activate_plugin($plugin, self_admin_url('plugins.php?error=true&plugin=' . $plugin), $network_wide);
+                       $result = activate_plugin($plugin, self_admin_url('plugins.php?error=true&plugin=' . $plugin), is_network_admin() );
                        if ( is_wp_error( $result ) ) {
                                if ( 'unexpected_output' == $result->get_error_code() ) {
                                        $redirect = self_admin_url('plugins.php?error=true&charsout=' . strlen($result->get_error_data()) . '&plugin=' . $plugin . "&plugin_status=$status&paged=$page&s=$s");
@@ -53,11 +50,17 @@ if ( $action ) {
                                }
                        }
 
-                       $recent = (array)get_option('recently_activated');
-                       if ( isset($recent[ $plugin ]) ) {
-                               unset($recent[ $plugin ]);
-                               update_option('recently_activated', $recent);
+                       if ( ! is_network_admin() ) {
+                               if ( is_network_only_plugin( $plugin ) ) {
+                                       wp_redirect( self_admin_url("plugins.php?plugin_status=$status&paged=$page&s=$s") );
+                                       exit;
+                               }
+
+                               $recent = (array) get_option( 'recently_activated' );
+                               unset( $recent[ $plugin ] );
+                               update_option( 'recently_activated', $recent );
                        }
+
                        if ( isset($_GET['from']) && 'import' == $_GET['from'] ) {
                                wp_redirect( self_admin_url("import.php?import=" . str_replace('-importer', '', dirname($plugin))) ); // overrides the ?error=true one above and redirects to the Imports page, stripping the -importer suffix
                        } else {
@@ -66,7 +69,6 @@ if ( $action ) {
                        exit;
                        break;
                case 'activate-selected':
-               case 'network-activate-selected':
                        if ( ! current_user_can('activate_plugins') )
                                wp_die(__('You do not have sufficient permissions to activate plugins for this site.'));
 
@@ -75,24 +77,31 @@ if ( $action ) {
                        $plugins = isset( $_POST['checked'] ) ? (array) $_POST['checked'] : array();
 
                        // Only activate plugins which are not already active.
-                       $check = $network_wide ? 'is_plugin_active_for_network' : 'is_plugin_active';
-                       foreach ( $plugins as $i => $plugin )
-                               if ( $check( $plugin ) )
-                                       unset( $plugins[ $i ] );
+                       if ( is_network_admin() ) {
+                               foreach ( $plugins as $i => $plugin ) {
+                                       if ( is_plugin_active_for_network( $plugin ) )
+                                               unset( $plugins[ $i ] );
+                               }
+                       } else {
+                               foreach ( $plugins as $i => $plugin ) {
+                                       if ( is_plugin_active( $plugin ) || is_network_only_plugin( $plugin ) )
+                                               unset( $plugins[ $i ] );
+                               }
+                       }
 
                        if ( empty($plugins) ) {
                                wp_redirect( self_admin_url("plugins.php?plugin_status=$status&paged=$page&s=$s") );
                                exit;
                        }
 
-                       activate_plugins($plugins, self_admin_url('plugins.php?error=true'), $network_wide);
+                       activate_plugins($plugins, self_admin_url('plugins.php?error=true'), is_network_admin() );
 
-                       $recent = (array)get_option('recently_activated');
-                       foreach ( $plugins as $plugin => $time)
-                               if ( isset($recent[ $plugin ]) )
-                                       unset($recent[ $plugin ]);
-
-                       update_option('recently_activated', $recent);
+                       if ( ! is_network_admin() ) {
+                               $recent = (array) get_option('recently_activated' );
+                               foreach ( $plugins as $plugin )
+                                       unset( $recent[ $plugin ] );
+                               update_option( 'recently_activated', $recent );
+                       }
 
                        wp_redirect( self_admin_url("plugins.php?activate-multi=true&plugin_status=$status&paged=$page&s=$s") );
                        exit;
@@ -117,7 +126,6 @@ if ( $action ) {
                        screen_icon();
                        echo '<h2>' . esc_html( $title ) . '</h2>';
 
-
                        $url = self_admin_url('update.php?action=update-selected&amp;plugins=' . urlencode( join(',', $plugins) ));
                        $url = wp_nonce_url($url, 'bulk-update-plugins');
 
@@ -154,8 +162,15 @@ if ( $action ) {
                                wp_die(__('You do not have sufficient permissions to deactivate plugins for this site.'));
 
                        check_admin_referer('deactivate-plugin_' . $plugin);
-                       deactivate_plugins($plugin);
-                       update_option('recently_activated', array($plugin => time()) + (array)get_option('recently_activated'));
+
+                       if ( ! is_network_admin() && is_plugin_active_for_network( $plugin ) ) {
+                               wp_redirect( self_admin_url("plugins.php?plugin_status=$status&paged=$page&s=$s") );
+                               exit;
+                       }
+
+                       deactivate_plugins( $plugin, false, is_network_admin() );
+                       if ( ! is_network_admin() )
+                               update_option( 'recently_activated', array( $plugin => time() ) + (array) get_option( 'recently_activated' ) );
                        if ( headers_sent() )
                                echo "<meta http-equiv='refresh' content='" . esc_attr( "0;url=plugins.php?deactivate=true&plugin_status=$status&paged=$page&s=$s" ) . "' />";
                        else
@@ -169,19 +184,27 @@ if ( $action ) {
                        check_admin_referer('bulk-plugins');
 
                        $plugins = isset( $_POST['checked'] ) ? (array) $_POST['checked'] : array();
-                       $plugins = array_filter($plugins, 'is_plugin_active'); //Do not deactivate plugins which are already deactivated.
+                       // Do not deactivate plugins which are already deactivated.
+                       if ( is_network_admin() ) {
+                               $plugins = array_filter( $plugins, 'is_plugin_active_for_network' );
+                       } else {
+                               $plugins = array_filter( $plugins, 'is_plugin_active' );
+                               $plugins = array_diff( $plugins, array_filter( $plugins, 'is_plugin_active_for_network' ) );
+                       }
                        if ( empty($plugins) ) {
                                wp_redirect( self_admin_url("plugins.php?plugin_status=$status&paged=$page&s=$s") );
                                exit;
                        }
 
-                       deactivate_plugins($plugins);
+                       deactivate_plugins( $plugins, false, is_network_admin() );
 
-                       $deactivated = array();
-                       foreach ( $plugins as $plugin )
-                               $deactivated[ $plugin ] = time();
+                       if ( ! is_network_admin() ) {
+                               $deactivated = array();
+                               foreach ( $plugins as $plugin )
+                                       $deactivated[ $plugin ] = time();
+                               update_option( 'recently_activated', $deactivated + (array) get_option( 'recently_activated' ) );
+                       }
 
-                       update_option('recently_activated', $deactivated + (array)get_option('recently_activated'));
                        wp_redirect( self_admin_url("plugins.php?deactivate-multi=true&plugin_status=$status&paged=$page&s=$s") );
                        exit;
                        break;
@@ -306,7 +329,8 @@ if ( $action ) {
                        exit;
                        break;
                case 'clear-recent-list':
-                       update_option('recently_activated', array());
+                       if ( ! is_network_admin() )
+                               update_option( 'recently_activated', array() );
                        break;
        }
 }
@@ -355,7 +379,7 @@ if ( !empty($invalid) )
        if ( isset( $_GET['main'] ) )
                $errmsg = __( 'You cannot delete a plugin while it is active on the main site.' );
        elseif ( isset($_GET['charsout']) )
-               $errmsg = sprintf(__('The plugin generated %d characters of <strong>unexpected output</strong> during activation.  If you notice &#8220;headers already sent&#8221; messages, problems with syndication feeds or other issues, try deactivating or removing this plugin.'), $_GET['charsout']);
+               $errmsg = sprintf(__('The plugin generated %d characters of <strong>unexpected output</strong> during activation. If you notice &#8220;headers already sent&#8221; messages, problems with syndication feeds or other issues, try deactivating or removing this plugin.'), $_GET['charsout']);
        else
                $errmsg = __('Plugin could not be activated because it triggered a <strong>fatal error</strong>.');
        ?>
@@ -392,7 +416,7 @@ if ( !empty($invalid) )
 <?php screen_icon(); ?>
 <h2><?php echo esc_html( $title );
 if ( ( ! is_multisite() || is_network_admin() ) && current_user_can('install_plugins') ) { ?>
-<a href="<?php echo self_admin_url( 'plugin-install.php' ); ?>" class="add-new-h2"><?php echo esc_html_x('Add New', 'plugin'); ?></a>
+ <a href="<?php echo self_admin_url( 'plugin-install.php' ); ?>" class="add-new-h2"><?php echo esc_html_x('Add New', 'plugin'); ?></a>
 <?php }
 if ( $s )
        printf( '<span class="subtitle">' . __('Search results for &#8220;%s&#8221;') . '</span>', esc_html( $s ) ); ?>