Ticket #5210: extract_plugin_activation_logic.diff
File extract_plugin_activation_logic.diff, 3.8 KB (added by , 16 years ago) |
---|
-
wp-admin/includes/plugin.php
86 86 return $wp_plugins; 87 87 } 88 88 89 function activate_plugin($plugin) { 90 $current = get_option('active_plugins'); 91 $plugin = trim($plugin); 92 $retval = null; 93 if ( validate_file($plugin) ) 94 $retval = new WP_Error('plugin_invalid', __('Invalid plugin.')); 95 if ( ! file_exists(ABSPATH . PLUGINDIR . '/' . $plugin) ) 96 $retval = new WP_Error('plugin_not_found', __('Plugin file does not exist.')); 97 if (!in_array($plugin, $current)) { 98 wp_redirect(add_query_arg('_error_nonce', wp_create_nonce('plugin-activation-error_' . $plugin), 'plugins.php?error=true&plugin=' . $plugin)); // we'll override this later if the plugin can be included without fatal error 99 ob_start(); 100 @include(ABSPATH . PLUGINDIR . '/' . $plugin); 101 $current[] = $plugin; 102 sort($current); 103 update_option('active_plugins', $current); 104 do_action('activate_' . $plugin); 105 ob_end_clean(); 106 } 107 108 return $retval; 109 } 110 111 function deactivate_plugins($plugins) { 112 $current = get_option('active_plugins'); 113 114 if(!is_array($plugins)) 115 $plugins = array($plugins); 116 117 foreach($plugins as $plugin) { 118 array_splice($current, array_search( $plugin, $current), 1 ); // Array-fu! 119 do_action('deactivate_' . trim( $plugin )); 120 } 121 122 update_option('active_plugins', $current); 123 } 124 125 function deactivate_all_plugins() { 126 $current = get_option('active_plugins'); 127 deactivate_plugins($current); 128 } 129 89 130 // 90 131 // Menu 91 132 // -
wp-admin/plugins.php
4 4 if ( isset($_GET['action']) ) { 5 5 if ('activate' == $_GET['action']) { 6 6 check_admin_referer('activate-plugin_' . $_GET['plugin']); 7 $current = get_option('active_plugins'); 8 $plugin = trim($_GET['plugin']); 9 if ( validate_file($plugin) ) 10 wp_die(__('Invalid plugin.')); 11 if ( ! file_exists(ABSPATH . PLUGINDIR . '/' . $plugin) ) 12 wp_die(__('Plugin file does not exist.')); 13 if (!in_array($plugin, $current)) { 14 wp_redirect(add_query_arg('_error_nonce', wp_create_nonce('plugin-activation-error_' . $plugin), 'plugins.php?error=true&plugin=' . $plugin)); // we'll override this later if the plugin can be included without fatal error 15 ob_start(); 16 @include(ABSPATH . PLUGINDIR . '/' . $plugin); 17 $current[] = $plugin; 18 sort($current); 19 update_option('active_plugins', $current); 20 do_action('activate_' . $plugin); 21 ob_end_clean(); 22 } 7 $result = activate_plugin($_GET['plugin']); 8 if( is_wp_error( $result ) ) 9 wp_die( $result->get_error_message() ); 23 10 wp_redirect('plugins.php?activate=true'); // overrides the ?error=true one above 24 11 } elseif ('error_scrape' == $_GET['action']) { 25 12 $plugin = trim($_GET['plugin']); … … 31 18 include(ABSPATH . PLUGINDIR . '/' . $plugin); 32 19 } elseif ('deactivate' == $_GET['action']) { 33 20 check_admin_referer('deactivate-plugin_' . $_GET['plugin']); 34 $current = get_option('active_plugins'); 35 array_splice($current, array_search( $_GET['plugin'], $current), 1 ); // Array-fu! 36 update_option('active_plugins', $current); 37 do_action('deactivate_' . trim( $_GET['plugin'] )); 21 deactivate_plugins($_GET['plugin']); 38 22 wp_redirect('plugins.php?deactivate=true'); 39 23 } elseif ($_GET['action'] == 'deactivate-all') { 40 24 check_admin_referer('deactivate-all'); 41 $current = get_option('active_plugins'); 42 43 foreach ($current as $plugin) { 44 array_splice($current, array_search($plugin, $current), 1); 45 do_action('deactivate_' . $plugin); 46 } 47 48 update_option('active_plugins', array()); 25 deactivate_all_plugins(); 49 26 wp_redirect('plugins.php?deactivate-all=true'); 50 27 } 51 28 exit;