2004-03-25 07:05:52 +00:00
< ? php
2008-08-16 07:27:34 +00:00
/**
* Plugins administration panel .
*
* @ package WordPress
* @ subpackage Administration
*/
/** WordPress Administration Bootstrap */
2004-10-19 03:03:06 +00:00
require_once ( 'admin.php' );
2004-03-25 07:05:52 +00:00
2009-08-01 21:12:17 +00:00
if ( ! current_user_can ( 'activate_plugins' ) )
wp_die ( __ ( 'You do not have sufficient permissions to manage plugins for this blog.' ));
2009-04-04 11:15:39 +00:00
if ( isset ( $_POST [ 'clear-recent-list' ]) )
$action = 'clear-recent-list' ;
2009-05-28 11:02:16 +00:00
elseif ( ! empty ( $_REQUEST [ 'action' ]) )
2009-05-17 09:39:32 +00:00
$action = $_REQUEST [ 'action' ];
2009-05-28 11:02:16 +00:00
elseif ( ! empty ( $_REQUEST [ 'action2' ]) )
$action = $_REQUEST [ 'action2' ];
2009-04-04 11:15:39 +00:00
else
$action = false ;
2008-06-04 18:09:31 +00:00
2008-08-14 17:00:37 +00:00
$plugin = isset ( $_REQUEST [ 'plugin' ]) ? $_REQUEST [ 'plugin' ] : '' ;
2008-06-04 18:09:31 +00:00
2009-04-21 20:38:17 +00:00
$default_status = get_user_option ( 'plugins_last_view' );
if ( empty ( $default_status ) )
$default_status = 'all' ;
$status = isset ( $_REQUEST [ 'plugin_status' ]) ? $_REQUEST [ 'plugin_status' ] : $default_status ;
2010-02-19 21:16:14 +00:00
if ( ! in_array ( $status , array ( 'all' , 'active' , 'inactive' , 'recent' , 'upgrade' , 'network' , 'mustuse' , 'dropins' , 'search' )) )
2009-04-21 19:17:44 +00:00
$status = 'all' ;
2009-04-22 17:56:38 +00:00
if ( $status != $default_status && 'search' != $status )
2010-02-22 21:25:32 +00:00
update_user_meta ( $current_user -> ID , 'plugins_last_view' , $status );
2009-04-21 19:17:44 +00:00
$page = isset ( $_REQUEST [ 'paged' ]) ? $_REQUEST [ 'paged' ] : 1 ;
2009-05-17 09:39:32 +00:00
//Clean up request URI from temporary args for screen options/paging uri's to work as expected.
$_SERVER [ 'REQUEST_URI' ] = remove_query_arg ( array ( 'error' , 'deleted' , 'activate' , 'activate-multi' , 'deactivate' , 'deactivate-multi' , '_error_nonce' ), $_SERVER [ 'REQUEST_URI' ]);
2009-04-21 19:17:44 +00:00
if ( ! empty ( $action ) ) {
2010-01-29 21:45:32 +00:00
$network_wide = false ;
2010-02-14 14:46:38 +00:00
if ( ( isset ( $_GET [ 'networkwide' ] ) || 'network-activate-selected' == $action ) && is_multisite () && is_super_admin () )
2010-01-29 21:45:32 +00:00
$network_wide = true ;
2009-04-21 19:17:44 +00:00
switch ( $action ) {
2008-06-04 18:09:31 +00:00
case 'activate' :
2009-08-01 21:12:17 +00:00
if ( ! current_user_can ( 'activate_plugins' ) )
wp_die ( __ ( 'You do not have sufficient permissions to activate plugins for this blog.' ));
2008-06-04 18:09:31 +00:00
check_admin_referer ( 'activate-plugin_' . $plugin );
2009-05-28 11:02:16 +00:00
2010-01-29 21:45:32 +00:00
$result = activate_plugin ( $plugin , 'plugins.php?error=true&plugin=' . $plugin , $network_wide );
2010-02-16 03:44:20 +00:00
if ( is_wp_error ( $result ) ) {
if ( 'unexpected_output' == $result -> get_error_code ()) {
$redirect = 'plugins.php?error=true&charsout=' . strlen ( $result -> get_error_data ()) . '&plugin=' . $plugin ;
wp_redirect ( add_query_arg ( '_error_nonce' , wp_create_nonce ( 'plugin-activation-error_' . $plugin ), $redirect ));
exit ;
} else {
wp_die ( $result );
}
}
2009-05-28 11:02:16 +00:00
2008-06-04 18:09:31 +00:00
$recent = ( array ) get_option ( 'recently_activated' );
2008-10-24 05:47:55 +00:00
if ( isset ( $recent [ $plugin ]) ) {
2008-06-04 18:09:31 +00:00
unset ( $recent [ $plugin ]);
update_option ( 'recently_activated' , $recent );
}
2009-05-28 11:02:16 +00:00
2009-04-21 19:17:44 +00:00
wp_redirect ( " plugins.php?activate=true&plugin_status= $status &paged= $page " ); // overrides the ?error=true one above
2008-06-04 18:09:31 +00:00
exit ;
break ;
case 'activate-selected' :
2010-02-14 14:46:38 +00:00
case 'network-activate-selected' :
2009-08-01 21:12:17 +00:00
if ( ! current_user_can ( 'activate_plugins' ) )
wp_die ( __ ( 'You do not have sufficient permissions to activate plugins for this blog.' ));
2009-09-14 14:03:32 +00:00
2008-06-16 18:35:48 +00:00
check_admin_referer ( 'bulk-manage-plugins' );
2009-05-28 11:02:16 +00:00
2009-12-03 01:43:49 +00:00
$plugins = isset ( $_POST [ 'checked' ] ) ? ( array ) $_POST [ 'checked' ] : array ();
2010-02-14 14:46:38 +00:00
$plugins = array_filter ( $plugins , create_function ( '$plugin' , 'return !is_plugin_active($plugin);' ) ); // Only activate plugins which are not already active.
2009-05-28 11:02:16 +00:00
if ( empty ( $plugins ) ) {
wp_redirect ( " plugins.php?plugin_status= $status &paged= $page " );
exit ;
}
2010-01-29 21:45:32 +00:00
activate_plugins ( $plugins , 'plugins.php?error=true' , $network_wide );
2008-06-04 18:09:31 +00:00
$recent = ( array ) get_option ( 'recently_activated' );
2009-05-28 11:02:16 +00:00
foreach ( $plugins as $plugin => $time )
2008-10-24 05:47:55 +00:00
if ( isset ( $recent [ $plugin ]) )
2008-06-04 18:09:31 +00:00
unset ( $recent [ $plugin ]);
2009-05-28 11:02:16 +00:00
update_option ( 'recently_activated' , $recent );
2008-01-09 09:37:27 +00:00
2009-04-21 19:17:44 +00:00
wp_redirect ( " plugins.php?activate-multi=true&plugin_status= $status &paged= $page " );
2008-06-04 18:09:31 +00:00
exit ;
break ;
2010-01-26 06:53:47 +00:00
case 'update-selected' :
if ( ! current_user_can ( 'update_plugins' ) )
wp_die ( __ ( 'You do not have sufficient permissions to update plugins for this blog.' ) );
check_admin_referer ( 'bulk-manage-plugins' );
if ( isset ( $_GET [ 'plugins' ] ) )
$plugins = explode ( ',' , $_GET [ 'plugins' ] );
elseif ( isset ( $_POST [ 'checked' ] ) )
$plugins = ( array ) $_POST [ 'checked' ];
else
break ;
if ( empty ( $plugins ) )
break ;
// We'll be passing all checked plugins as long as at least one is out of date.
$_plugins = $plugins ;
$current = get_site_transient ( 'update_plugins' );
foreach ( $_plugins as $k => $v ) {
if ( ! isset ( $current -> response [ $v ] ) )
unset ( $_plugins [ $k ] );
}
unset ( $current );
// If all checked plugins are up to date
if ( empty ( $_plugins ) )
break ;
require_once ( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' );
require_once ( 'admin-header.php' );
2010-01-26 18:39:12 +00:00
2010-01-26 06:53:47 +00:00
$url = 'plugins.php?action=upgrade-selected&plugins=' . urlencode ( join ( ',' , $plugins ) );
$title = __ ( 'Upgrade Plugins' );
$nonce = 'bulk-manage-plugins' ;
$parent_file = 'plugins.php' ;
$upgrader = new Plugin_Upgrader ( new Plugin_Upgrader_Skin ( compact ( 'title' , 'nonce' , 'url' ) ) );
$upgrader -> bulk_upgrade ( $plugins );
require_once ( 'admin-footer.php' );
exit ;
break ;
2008-06-04 18:09:31 +00:00
case 'error_scrape' :
2009-08-01 21:12:17 +00:00
if ( ! current_user_can ( 'activate_plugins' ) )
wp_die ( __ ( 'You do not have sufficient permissions to activate plugins for this blog.' ));
2008-06-04 18:09:31 +00:00
check_admin_referer ( 'plugin-activation-error_' . $plugin );
2009-05-28 11:02:16 +00:00
2008-06-04 18:09:31 +00:00
$valid = validate_plugin ( $plugin );
if ( is_wp_error ( $valid ) )
wp_die ( $valid );
2009-05-28 11:02:16 +00:00
2010-02-16 03:44:20 +00:00
if ( ! WP_DEBUG ) {
if ( defined ( 'E_RECOVERABLE_ERROR' ) )
error_reporting ( E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR );
else
error_reporting ( E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING );
}
2009-12-12 09:20:07 +00:00
2008-06-04 18:09:31 +00:00
@ ini_set ( 'display_errors' , true ); //Ensure that Fatal errors are displayed.
2010-02-27 07:24:41 +00:00
// Go back to "sandbox" scope so we get the same errors as before
function plugin_sandbox_scrape ( $plugin ) {
include ( WP_PLUGIN_DIR . '/' . $plugin );
}
plugin_sandbox_scrape ( $plugin );
2008-10-26 06:33:33 +00:00
do_action ( 'activate_' . $plugin );
2008-06-04 18:09:31 +00:00
exit ;
break ;
case 'deactivate' :
2009-08-01 21:12:17 +00:00
if ( ! current_user_can ( 'activate_plugins' ) )
wp_die ( __ ( 'You do not have sufficient permissions to deactivate plugins for this blog.' ));
2008-06-04 18:09:31 +00:00
check_admin_referer ( 'deactivate-plugin_' . $plugin );
deactivate_plugins ( $plugin );
update_option ( 'recently_activated' , array ( $plugin => time ()) + ( array ) get_option ( 'recently_activated' ));
2010-02-16 03:44:20 +00:00
if ( headers_sent ())
echo " <meta http-equiv='refresh' content=' " . esc_attr ( " 0;url=plugins.php?deactivate=true&plugin_status= $status &paged= $page " ) . " ' /> " ;
else
wp_redirect ( " plugins.php?deactivate=true&plugin_status= $status &paged= $page " );
2008-06-04 18:09:31 +00:00
exit ;
break ;
case 'deactivate-selected' :
2009-08-01 21:12:17 +00:00
if ( ! current_user_can ( 'activate_plugins' ) )
wp_die ( __ ( 'You do not have sufficient permissions to deactivate plugins for this blog.' ));
2008-06-16 18:35:48 +00:00
check_admin_referer ( 'bulk-manage-plugins' );
2009-05-28 11:02:16 +00:00
2009-12-03 01:43:49 +00:00
$plugins = isset ( $_POST [ 'checked' ] ) ? ( array ) $_POST [ 'checked' ] : array ();
2009-05-28 11:02:16 +00:00
$plugins = array_filter ( $plugins , 'is_plugin_active' ); //Do not deactivate plugins which are already deactivated.
if ( empty ( $plugins ) ) {
wp_redirect ( " plugins.php?plugin_status= $status &paged= $page " );
exit ;
}
deactivate_plugins ( $plugins );
2008-06-04 18:09:31 +00:00
$deactivated = array ();
2009-05-28 11:02:16 +00:00
foreach ( $plugins as $plugin )
2008-06-04 18:09:31 +00:00
$deactivated [ $plugin ] = time ();
2009-05-28 11:02:16 +00:00
2008-06-04 18:09:31 +00:00
update_option ( 'recently_activated' , $deactivated + ( array ) get_option ( 'recently_activated' ));
2009-04-21 19:17:44 +00:00
wp_redirect ( " plugins.php?deactivate-multi=true&plugin_status= $status &paged= $page " );
2008-06-04 18:09:31 +00:00
exit ;
break ;
case 'delete-selected' :
2008-10-24 05:47:55 +00:00
if ( ! current_user_can ( 'delete_plugins' ) )
2008-06-06 19:21:35 +00:00
wp_die ( __ ( 'You do not have sufficient permissions to delete plugins for this blog.' ));
2008-08-09 05:36:14 +00:00
2008-06-16 18:35:48 +00:00
check_admin_referer ( 'bulk-manage-plugins' );
2008-08-09 05:36:14 +00:00
2009-12-03 01:43:49 +00:00
//$_POST = from the plugin form; $_GET = from the FTP details screen.
$plugins = isset ( $_REQUEST [ 'checked' ] ) ? ( array ) $_REQUEST [ 'checked' ] : array ();
2009-05-28 11:02:16 +00:00
$plugins = array_filter ( $plugins , create_function ( '$plugin' , 'return !is_plugin_active($plugin);' ) ); //Do not allow to delete Activated plugins.
if ( empty ( $plugins ) ) {
wp_redirect ( " plugins.php?plugin_status= $status &paged= $page " );
exit ;
}
2008-06-04 18:09:31 +00:00
include ( ABSPATH . 'wp-admin/update.php' );
$parent_file = 'plugins.php' ;
2008-08-09 05:36:14 +00:00
2008-10-24 05:47:55 +00:00
if ( ! isset ( $_REQUEST [ 'verify-delete' ]) ) {
2008-06-16 18:35:48 +00:00
wp_enqueue_script ( 'jquery' );
require_once ( 'admin-header.php' );
?>
< div class = " wrap " >
< ? php
$files_to_delete = $plugin_info = array ();
2008-10-24 05:47:55 +00:00
foreach ( ( array ) $plugins as $plugin ) {
if ( '.' == dirname ( $plugin ) ) {
2008-06-16 18:35:48 +00:00
$files_to_delete [] = WP_PLUGIN_DIR . '/' . $plugin ;
2010-02-27 22:01:22 +00:00
if ( $data = get_plugin_data ( WP_PLUGIN_DIR . '/' . $plugin ) ) {
2008-06-16 18:35:48 +00:00
$plugin_info [ $plugin ] = $data ;
2010-02-27 22:01:22 +00:00
$plugin_info [ $plugin ][ 'is_uninstallable' ] = is_uninstallable_plugin ( $plugin );
}
2008-06-16 18:35:48 +00:00
} else {
//Locate all the files in that folder:
$files = list_files ( WP_PLUGIN_DIR . '/' . dirname ( $plugin ) );
2010-01-18 20:34:48 +00:00
if ( $files ) {
2008-06-16 18:35:48 +00:00
$files_to_delete = array_merge ( $files_to_delete , $files );
}
//Get plugins list from that folder
2010-02-27 22:01:22 +00:00
if ( $folder_plugins = get_plugins ( '/' . dirname ( $plugin )) ) {
foreach ( $folder_plugins as $plugin_file => $data ) {
$plugin_info [ $plugin_file ] = $data ;
$plugin_info [ $plugin_file ][ 'is_uninstallable' ] = is_uninstallable_plugin ( $plugin );
}
}
2008-06-16 18:35:48 +00:00
}
}
2010-02-27 22:01:22 +00:00
screen_icon ();
$plugins_to_delete = count ( $plugin_info );
echo '<h2>' . _n ( 'Delete Plugin' , 'Delete Plugins' , $plugins_to_delete ) . '</h2>' ;
2008-06-16 18:35:48 +00:00
?>
2010-02-27 22:01:22 +00:00
< p >< ? php echo _n ( 'Deleting the selected plugin will remove the following plugin and its files:' , 'Deleting the selected plugins will remove the following plugins and their files:' , $plugins_to_delete ); ?> </p>
2009-05-16 07:09:03 +00:00
< ul class = " ul-disc " >
2008-08-09 05:36:14 +00:00
< ? php
2010-02-27 22:01:22 +00:00
$data_to_delete = false ;
foreach ( $plugin_info as $plugin ) {
if ( $plugin [ 'is_uninstallable' ] ) {
/* translators: 1: plugin name, 2: plugin author */
echo '<li>' , sprintf ( __ ( '<strong>%1$s</strong> by <em>%2$s</em> (will also <strong>delete its data</strong>)' ), $plugin [ 'Name' ], $plugin [ 'Author' ] ), '</li>' ;
$data_to_delete = true ;
} else {
/* translators: 1: plugin name, 2: plugin author */
echo '<li>' , sprintf ( __ ( '<strong>%1$s</strong> by <em>%2$s</em>' ), $plugin [ 'Name' ], $plugin [ 'Author' ] ), '</li>' ;
}
}
2008-06-16 18:35:48 +00:00
?>
</ ul >
2010-02-27 22:01:22 +00:00
< p >< ? php
if ( $data_to_delete )
_e ( 'Are you sure you wish to delete these files and data?' );
else
_e ( 'Are you sure you wish to delete these files?' );
?> </p>
2009-05-18 16:00:33 +00:00
< form method = " post " action = " <?php echo esc_url( $_SERVER['REQUEST_URI'] ); ?> " style = " display:inline; " >
2008-06-16 18:35:48 +00:00
< input type = " hidden " name = " verify-delete " value = " 1 " />
2009-04-04 11:15:39 +00:00
< input type = " hidden " name = " action " value = " delete-selected " />
2008-06-16 18:35:48 +00:00
< ? php
2008-10-24 05:47:55 +00:00
foreach ( ( array ) $plugins as $plugin )
2009-05-05 19:43:53 +00:00
echo '<input type="hidden" name="checked[]" value="' . esc_attr ( $plugin ) . '" />' ;
2008-06-16 18:35:48 +00:00
?>
< ? php wp_nonce_field ( 'bulk-manage-plugins' ) ?>
2010-02-27 22:01:22 +00:00
< input type = " submit " name = " submit " value = " <?php $data_to_delete ? esc_attr_e('Yes, Delete these files and data') : esc_attr_e('Yes, Delete these files') ?> " class = " button " />
2008-06-16 18:35:48 +00:00
</ form >
2009-05-18 16:00:33 +00:00
< form method = " post " action = " <?php echo esc_url(wp_get_referer()); ?> " style = " display:inline; " >
2009-05-05 19:43:53 +00:00
< input type = " submit " name = " submit " value = " <?php esc_attr_e('No, Return me to the plugin list') ?> " class = " button " />
2008-06-16 18:35:48 +00:00
</ form >
< p >< a href = " # " onclick = " jQuery('#files-list').toggle(); return false; " >< ? php _e ( 'Click to view entire list of files which will be deleted' ); ?> </a></p>
< div id = " files-list " style = " display:none; " >
2009-05-16 07:09:03 +00:00
< ul class = " code " >
2008-06-16 18:35:48 +00:00
< ? php
2008-10-24 05:47:55 +00:00
foreach ( ( array ) $files_to_delete as $file )
2008-08-04 21:01:09 +00:00
echo '<li>' . str_replace ( WP_PLUGIN_DIR , '' , $file ) . '</li>' ;
2008-06-16 18:35:48 +00:00
?>
</ ul >
2008-08-09 05:36:14 +00:00
</ div >
2008-06-16 18:35:48 +00:00
</ div >
< ? php
require_once ( 'admin-footer.php' );
exit ;
2008-06-30 23:12:18 +00:00
} //Endif verify-delete
2008-06-04 18:09:31 +00:00
$delete_result = delete_plugins ( $plugins );
2008-06-10 16:57:33 +00:00
2009-05-17 09:39:32 +00:00
set_transient ( 'plugins_delete_result_' . $user_ID , $delete_result ); //Store the result in a cache rather than a URL param due to object type & length
wp_redirect ( " plugins.php?deleted=true&plugin_status= $status &paged= $page " );
exit ;
2008-06-30 23:12:18 +00:00
break ;
case 'clear-recent-list' :
update_option ( 'recently_activated' , array ());
2008-06-04 18:09:31 +00:00
break ;
}
2004-03-25 21:04:36 +00:00
}
2008-08-04 21:01:09 +00:00
wp_enqueue_script ( 'plugin-install' );
2008-11-07 22:11:14 +00:00
add_thickbox ();
2008-06-04 18:09:31 +00:00
2009-04-19 01:27:18 +00:00
$help = '<p>' . __ ( 'Plugins extend and expand the functionality of WordPress. Once a plugin is installed, you may activate it or deactivate it here.' ) . '</p>' ;
2010-01-18 22:21:36 +00:00
if ( current_user_can ( 'edit_plugins' ) ) {
2009-04-19 01:27:18 +00:00
$help .= '<p>' . sprintf ( __ ( 'If something goes wrong with a plugin and you can’t use WordPress, delete or rename that file in the <code>%s</code> directory and it will be automatically deactivated.' ), WP_PLUGIN_DIR ) . '</p>' ;
2009-04-19 01:11:13 +00:00
$help .= '<p>' . sprintf ( __ ( 'You can find additional plugins for your site by using the new <a href="%1$s">Plugin Browser/Installer</a> functionality or by browsing the <a href="http://wordpress.org/extend/plugins/">WordPress Plugin Directory</a> directly and installing manually. To <em>manually</em> install a plugin you generally just need to upload the plugin file into your <code>%2$s</code> directory. Once a plugin has been installed, you may activate it here.' ), 'plugin-install.php' , WP_PLUGIN_DIR ) . '</p>' ;
2010-01-14 02:02:19 +00:00
}
2009-04-19 01:11:13 +00:00
2010-01-15 16:58:36 +00:00
add_contextual_help ( $current_screen , $help );
2009-04-19 01:11:13 +00:00
2010-01-07 00:17:13 +00:00
if ( is_multisite () && is_super_admin () ) {
$menu_perms = get_site_option ( 'menu_items' , array ());
2010-01-26 18:39:12 +00:00
if ( empty ( $menu_perms [ 'plugins' ]) )
2010-01-07 07:41:13 +00:00
add_action ( 'admin_notices' , '_admin_notice_multisite_activate_plugins_page' );
2010-01-26 18:39:12 +00:00
unset ( $menu_perms );
2010-01-07 00:17:13 +00:00
}
2006-11-18 07:31:29 +00:00
$title = __ ( 'Manage Plugins' );
2004-03-25 07:05:52 +00:00
require_once ( 'admin-header.php' );
2008-07-29 23:10:12 +00:00
$invalid = validate_active_plugins ();
2008-10-24 05:47:55 +00:00
if ( ! empty ( $invalid ) )
foreach ( $invalid as $plugin_file => $error )
2009-05-18 15:11:07 +00:00
echo '<div id="message" class="error"><p>' . sprintf ( __ ( 'The plugin <code>%s</code> has been <strong>deactivated</strong> due to an error: %s' ), esc_html ( $plugin_file ), $error -> get_error_message ()) . '</p></div>' ;
2004-03-25 07:05:52 +00:00
?>
2004-04-14 19:04:14 +00:00
2010-02-16 03:44:20 +00:00
< ? php if ( isset ( $_GET [ 'error' ]) ) :
if ( isset ( $_GET [ 'charsout' ]))
$errmsg = sprintf ( __ ( 'Plugin could not be activated because it generated %d characters of <strong>unexpected output</strong>.' ), $_GET [ 'charsout' ]);
else
$errmsg = __ ( 'Plugin could not be activated because it triggered a <strong>fatal error</strong>.' );
?>
< div id = " message " class = " updated " >< p >< ? php echo $errmsg ; ?> </p>
2007-06-25 18:57:54 +00:00
< ? php
2008-01-16 16:46:49 +00:00
if ( wp_verify_nonce ( $_GET [ '_error_nonce' ], 'plugin-activation-error_' . $plugin ) ) { ?>
2009-05-05 19:43:53 +00:00
< iframe style = " border:0 " width = " 100% " height = " 70px " src = " <?php echo admin_url('plugins.php?action=error_scrape&plugin=' . esc_attr( $plugin ) . '&_wpnonce=' . esc_attr( $_GET['_error_nonce'] )); ?> " ></ iframe >
2007-06-25 18:57:54 +00:00
< ? php
}
?>
</ div >
2009-05-17 09:39:32 +00:00
< ? php elseif ( isset ( $_GET [ 'deleted' ]) ) :
$delete_result = get_transient ( 'plugins_delete_result_' . $user_ID );
delete_transient ( 'plugins_delete_result' ); //Delete it once we're done.
2008-06-04 18:09:31 +00:00
if ( is_wp_error ( $delete_result ) ) : ?>
2009-12-26 09:00:58 +00:00
< div id = " message " class = " updated " >< p >< ? php printf ( __ ( 'Plugin could not be deleted due to an error: %s' ), $delete_result -> get_error_message () ); ?> </p></div>
2008-06-04 18:09:31 +00:00
< ? php else : ?>
2009-12-26 09:00:58 +00:00
< div id = " message " class = " updated " >< p >< ? php _e ( 'The selected plugins have been <strong>deleted</strong>.' ); ?> </p></div>
2008-06-04 18:09:31 +00:00
< ? php endif ; ?>
2007-01-25 20:45:20 +00:00
< ? php elseif ( isset ( $_GET [ 'activate' ]) ) : ?>
2009-12-26 09:00:58 +00:00
< div id = " message " class = " updated " >< p >< ? php _e ( 'Plugin <strong>activated</strong>.' ) ?> </p></div>
2008-06-04 18:09:31 +00:00
< ? php elseif ( isset ( $_GET [ 'activate-multi' ])) : ?>
2009-12-26 09:00:58 +00:00
< div id = " message " class = " updated " >< p >< ? php _e ( 'Selected plugins <strong>activated</strong>.' ); ?> </p></div>
2007-01-25 20:45:20 +00:00
< ? php elseif ( isset ( $_GET [ 'deactivate' ]) ) : ?>
2009-12-26 09:00:58 +00:00
< div id = " message " class = " updated " >< p >< ? php _e ( 'Plugin <strong>deactivated</strong>.' ) ?> </p></div>
2008-06-04 18:09:31 +00:00
< ? php elseif ( isset ( $_GET [ 'deactivate-multi' ])) : ?>
2009-12-26 09:00:58 +00:00
< div id = " message " class = " updated " >< p >< ? php _e ( 'Selected plugins <strong>deactivated</strong>.' ); ?> </p></div>
2010-01-26 06:53:47 +00:00
< ? php elseif ( 'update-selected' == $action ) : ?>
< div id = " message " class = " updated " >< p >< ? php _e ( 'No out of date plugins were selected.' ); ?> </p></div>
2004-04-14 19:04:14 +00:00
< ? php endif ; ?>
2004-03-25 07:05:52 +00:00
< div class = " wrap " >
2008-11-26 13:51:25 +00:00
< ? php screen_icon (); ?>
2010-01-18 22:21:36 +00:00
< h2 >< ? php echo esc_html ( $title ); if ( current_user_can ( 'install_plugins' ) ) { ?> <a href="plugin-install.php" class="button add-new-h2"><?php echo esc_html_x('Add New', 'plugin'); ?></a><?php } ?></h2>
2009-04-21 06:49:53 +00:00
2004-03-25 07:05:52 +00:00
< ? php
2010-01-14 02:02:19 +00:00
$all_plugins = apply_filters ( 'all_plugins' , get_plugins () );
2009-04-19 18:50:22 +00:00
$search_plugins = array ();
2008-06-04 18:09:31 +00:00
$active_plugins = array ();
2008-06-30 23:12:18 +00:00
$inactive_plugins = array ();
2008-06-04 18:09:31 +00:00
$recent_plugins = array ();
2009-04-19 18:50:22 +00:00
$recently_activated = get_option ( 'recently_activated' , array ());
2009-04-19 01:22:02 +00:00
$upgrade_plugins = array ();
2010-01-29 21:45:32 +00:00
$network_plugins = array ();
2010-02-22 19:37:26 +00:00
$mustuse_plugins = $dropins_plugins = array ();
if ( ! is_multisite () || ( is_multisite () && current_user_can ( 'manage_network_plugins' ) ) ) {
if ( apply_filters ( 'show_advanced_plugins' , true , 'mustuse' ) )
$mustuse_plugins = get_mu_plugins ();
if ( apply_filters ( 'show_advanced_plugins' , true , 'dropins' ) )
$dropins_plugins = get_dropins ();
}
2009-04-19 01:22:02 +00:00
2009-03-07 02:07:24 +00:00
set_transient ( 'plugin_slugs' , array_keys ( $all_plugins ), 86400 );
2004-11-26 02:29:45 +00:00
2009-03-07 02:07:24 +00:00
// Clean out any plugins which were deactivated over a week ago.
2008-10-24 05:47:55 +00:00
foreach ( $recently_activated as $key => $time )
if ( $time + ( 7 * 24 * 60 * 60 ) < time () ) //1 week
2008-06-04 18:09:31 +00:00
unset ( $recently_activated [ $key ]);
2008-10-24 05:47:55 +00:00
if ( $recently_activated != get_option ( 'recently_activated' ) ) //If array changed, update it.
2008-06-04 18:09:31 +00:00
update_option ( 'recently_activated' , $recently_activated );
2010-01-08 20:49:55 +00:00
$current = get_site_transient ( 'update_plugins' );
2008-02-27 19:18:21 +00:00
2010-02-19 21:16:14 +00:00
foreach ( array ( 'all_plugins' , 'mustuse_plugins' , 'dropins_plugins' ) as $plugin_array_name ) {
foreach ( ( array ) $$plugin_array_name as $plugin_file => $plugin_data ) {
// Translate, Apply Markup, Sanitize HTML
$plugin_data = _get_plugin_data_markup_translate ( $plugin_file , $plugin_data , false , true );
$$plugin_array_name [ $plugin_file ] = $plugin_data ;
}
}
unset ( $plugin_array_name );
2008-06-04 18:09:31 +00:00
2010-02-19 21:16:14 +00:00
foreach ( ( array ) $all_plugins as $plugin_file => $plugin_data ) {
2010-01-29 21:45:32 +00:00
// Filter into individual sections
2010-02-19 21:53:24 +00:00
if ( is_plugin_active_for_network ( $plugin_file ) ) {
if ( is_super_admin () )
$network_plugins [ $plugin_file ] = $plugin_data ;
2010-01-29 21:45:32 +00:00
} elseif ( is_plugin_active ( $plugin_file ) ) {
2008-06-04 18:09:31 +00:00
$active_plugins [ $plugin_file ] = $plugin_data ;
} else {
2009-04-19 01:11:13 +00:00
if ( isset ( $recently_activated [ $plugin_file ] ) ) // Was the plugin recently activated?
2008-06-04 18:09:31 +00:00
$recent_plugins [ $plugin_file ] = $plugin_data ;
2009-04-19 01:11:13 +00:00
$inactive_plugins [ $plugin_file ] = $plugin_data ;
2008-06-04 18:09:31 +00:00
}
2009-04-19 01:22:02 +00:00
2010-02-19 21:53:24 +00:00
if ( isset ( $current -> response [ $plugin_file ] ) )
$upgrade_plugins [ $plugin_file ] = $plugin_data ;
2008-06-04 18:09:31 +00:00
}
2010-01-18 22:21:36 +00:00
if ( ! current_user_can ( 'update_plugins' ) )
$upgrade_plugins = array ();
2010-01-14 02:02:19 +00:00
2009-04-19 18:50:22 +00:00
$total_all_plugins = count ( $all_plugins );
2009-04-19 01:11:13 +00:00
$total_inactive_plugins = count ( $inactive_plugins );
$total_active_plugins = count ( $active_plugins );
$total_recent_plugins = count ( $recent_plugins );
2009-04-19 01:22:02 +00:00
$total_upgrade_plugins = count ( $upgrade_plugins );
2010-01-29 21:45:32 +00:00
$total_network_plugins = count ( $network_plugins );
2010-02-19 21:16:14 +00:00
$total_mustuse_plugins = count ( $mustuse_plugins );
$total_dropins_plugins = count ( $dropins_plugins );
2009-04-19 01:11:13 +00:00
2009-04-19 18:50:22 +00:00
//Searching.
if ( isset ( $_GET [ 's' ]) ) {
function _search_plugins_filter_callback ( $plugin ) {
static $term ;
if ( is_null ( $term ) )
$term = stripslashes ( $_GET [ 's' ]);
if ( stripos ( $plugin [ 'Name' ], $term ) !== false ||
stripos ( $plugin [ 'Description' ], $term ) !== false ||
stripos ( $plugin [ 'Author' ], $term ) !== false ||
stripos ( $plugin [ 'PluginURI' ], $term ) !== false ||
stripos ( $plugin [ 'AuthorURI' ], $term ) !== false ||
stripos ( $plugin [ 'Version' ], $term ) !== false )
return true ;
else
return false ;
}
2009-04-21 19:17:44 +00:00
$status = 'search' ;
2009-04-19 18:50:22 +00:00
$search_plugins = array_filter ( $all_plugins , '_search_plugins_filter_callback' );
$total_search_plugins = count ( $search_plugins );
}
2009-04-19 01:11:13 +00:00
$plugin_array_name = " ${ status } _plugins " ;
2009-05-17 09:39:32 +00:00
if ( empty ( $$plugin_array_name ) && $status != 'all' ) {
$status = 'all' ;
$plugin_array_name = " ${ status } _plugins " ;
}
2009-04-19 01:11:13 +00:00
$plugins = & $$plugin_array_name ;
2008-02-27 19:18:21 +00:00
2010-01-29 21:45:32 +00:00
// Paging.
2009-04-19 18:50:22 +00:00
$total_this_page = " total_ { $status } _plugins " ;
$total_this_page = $$total_this_page ;
2010-01-07 00:01:52 +00:00
$plugins_per_page = ( int ) get_user_option ( 'plugins_per_page' );
2009-12-11 23:14:43 +00:00
if ( empty ( $plugins_per_page ) || $plugins_per_page < 1 )
2009-05-13 04:26:40 +00:00
$plugins_per_page = 999 ;
2009-12-11 23:14:43 +00:00
$plugins_per_page = apply_filters ( 'plugins_per_page' , $plugins_per_page );
2009-04-19 18:50:22 +00:00
$start = ( $page - 1 ) * $plugins_per_page ;
$page_links = paginate_links ( array (
'base' => add_query_arg ( 'paged' , '%#%' ),
'format' => '' ,
'prev_text' => __ ( '«' ),
'next_text' => __ ( '»' ),
'total' => ceil ( $total_this_page / $plugins_per_page ),
'current' => $page
));
$page_links_text = sprintf ( '<span class="displaying-num">' . __ ( 'Displaying %s–%s of %s' ) . '</span>%s' ,
number_format_i18n ( $start + 1 ),
number_format_i18n ( min ( $page * $plugins_per_page , $total_this_page ) ),
'<span class="total-type-count">' . number_format_i18n ( $total_this_page ) . '</span>' ,
$page_links
);
2008-10-10 18:21:16 +00:00
/**
* @ ignore
*
* @ param array $plugins
* @ param string $context
*/
2008-06-04 18:09:31 +00:00
function print_plugins_table ( $plugins , $context = '' ) {
2009-04-21 19:17:44 +00:00
global $page ;
2010-02-19 21:16:14 +00:00
$checkbox = ! in_array ( $context , array ( 'mustuse' , 'dropins' ) ) ? '<input type="checkbox" />' : '' ;
2008-06-04 18:09:31 +00:00
?>
2008-11-17 18:01:00 +00:00
< table class = " widefat " cellspacing = " 0 " id = " <?php echo $context ?>-plugins-table " >
2006-05-10 20:35:10 +00:00
< thead >
2004-03-25 07:05:52 +00:00
< tr >
2010-02-19 21:16:14 +00:00
< th scope = " col " class = " manage-column check-column " >< ? php echo $checkbox ; ?> </th>
2009-04-17 05:30:09 +00:00
< th scope = " col " class = " manage-column " >< ? php _e ( 'Plugin' ); ?> </th>
< th scope = " col " class = " manage-column " >< ? php _e ( 'Description' ); ?> </th>
2004-03-25 07:05:52 +00:00
</ tr >
2006-05-10 20:35:10 +00:00
</ thead >
2008-12-09 18:03:31 +00:00
2008-09-29 09:26:21 +00:00
< tfoot >
< tr >
2010-02-19 21:16:14 +00:00
< th scope = " col " class = " manage-column check-column " >< ? php echo $checkbox ; ?> </th>
2009-04-17 05:30:09 +00:00
< th scope = " col " class = " manage-column " >< ? php _e ( 'Plugin' ); ?> </th>
< th scope = " col " class = " manage-column " >< ? php _e ( 'Description' ); ?> </th>
2008-09-29 09:26:21 +00:00
</ tr >
</ tfoot >
2008-12-09 18:03:31 +00:00
2008-06-04 18:09:31 +00:00
< tbody class = " plugins " >
2004-03-25 07:05:52 +00:00
< ? php
2006-11-29 09:22:49 +00:00
2008-10-24 05:47:55 +00:00
if ( empty ( $plugins ) ) {
2008-06-04 18:09:31 +00:00
echo ' < tr >
2009-05-19 01:27:34 +00:00
< td colspan = " 3 " > ' . __(' No plugins to show ') . ' </ td >
2008-06-04 18:09:31 +00:00
</ tr > ' ;
}
2008-10-24 05:47:55 +00:00
foreach ( ( array ) $plugins as $plugin_file => $plugin_data ) {
2009-04-17 05:30:09 +00:00
$actions = array ();
2010-02-19 21:16:14 +00:00
if ( 'mustuse' == $context ) {
$is_active = true ;
} elseif ( 'dropins' == $context ) {
$dropins = _get_dropins ();
$plugin_name = $plugin_file ;
if ( $plugin_file != $plugin_data [ 'Name' ] )
$plugin_name .= '<br/>' . $plugin_data [ 'Name' ];
if ( true === ( $dropins [ $plugin_file ][ 1 ] ) ) { // Doesn't require a constant
$is_active = true ;
$description = '<p><strong>' . $dropins [ $plugin_file ][ 0 ] . '</strong></p>' ;
} elseif ( constant ( $dropins [ $plugin_file ][ 1 ] ) ) { // Constant is true
$is_active = true ;
$description = '<p><strong>' . $dropins [ $plugin_file ][ 0 ] . '</strong></p>' ;
2010-01-29 21:45:32 +00:00
} else {
2010-02-19 21:16:14 +00:00
$is_active = false ;
$description = '<strong>' . $dropins [ $plugin_file ][ 0 ] . ' <span class="attention">' . __ ( 'Inactive:' ) . '</span></strong> ' . sprintf ( __ ( 'Requires <code>%s</code> in <code>wp-config.php</code>.' ), " define(' " . $dropins [ $plugin_file ][ 1 ] . " ', true); " ) . '</p>' ;
2010-01-29 21:45:32 +00:00
}
2010-02-19 21:16:14 +00:00
$description .= '<p>' . $plugin_data [ 'Description' ] . '</p>' ;
2010-01-29 21:45:32 +00:00
} else {
2010-02-19 21:16:14 +00:00
$is_active_for_network = is_plugin_active_for_network ( $plugin_file );
$is_active = $is_active_for_network || is_plugin_active ( $plugin_file );
if ( $is_active_for_network && ! is_super_admin () )
continue ;
if ( $is_active ) {
if ( $is_active_for_network ) {
if ( is_super_admin () )
$actions [] = '<a href="' . wp_nonce_url ( 'plugins.php?action=deactivate&networkwide=1&plugin=' . $plugin_file . '&plugin_status=' . $context . '&paged=' . $page , 'deactivate-plugin_' . $plugin_file ) . '" title="' . __ ( 'Deactivate this plugin' ) . '">' . __ ( 'Network Deactivate' ) . '</a>' ;
} else {
$actions [] = '<a href="' . wp_nonce_url ( 'plugins.php?action=deactivate&plugin=' . $plugin_file . '&plugin_status=' . $context . '&paged=' . $page , 'deactivate-plugin_' . $plugin_file ) . '" title="' . __ ( 'Deactivate this plugin' ) . '">' . __ ( 'Deactivate' ) . '</a>' ;
}
} else {
2010-02-19 21:53:24 +00:00
if ( is_multisite () && is_network_only_plugin ( $plugin_file ) )
$actions [] = '<span title="' . __ ( 'This plugin can only be activated for all sites in a network' ) . '">' . __ ( 'Network Only' ) . '</span>' ;
else
$actions [] = '<a href="' . wp_nonce_url ( 'plugins.php?action=activate&plugin=' . $plugin_file . '&plugin_status=' . $context . '&paged=' . $page , 'activate-plugin_' . $plugin_file ) . '" title="' . __ ( 'Activate this plugin' ) . '" class="edit">' . __ ( 'Activate' ) . '</a>' ;
2010-02-19 21:16:14 +00:00
if ( is_multisite () && is_super_admin () )
$actions [] = '<a href="' . wp_nonce_url ( 'plugins.php?action=activate&networkwide=1&plugin=' . $plugin_file . '&plugin_status=' . $context . '&paged=' . $page , 'activate-plugin_' . $plugin_file ) . '" title="' . __ ( 'Activate this plugin for all sites in this network' ) . '" class="edit">' . __ ( 'Network Activate' ) . '</a>' ;
2010-02-21 00:03:42 +00:00
2010-02-19 21:53:24 +00:00
if ( ! is_multisite () && current_user_can ( 'edit_plugins' ) && is_writable ( WP_PLUGIN_DIR . '/' . $plugin_file ) )
$actions [] = '<a href="plugin-editor.php?file=' . $plugin_file . '" title="' . __ ( 'Open this file in the Plugin Editor' ) . '" class="edit">' . __ ( 'Edit' ) . '</a>' ;
2010-02-21 00:03:42 +00:00
2010-02-19 21:53:24 +00:00
if ( ! $is_active && current_user_can ( 'delete_plugins' ) )
$actions [] = '<a href="' . wp_nonce_url ( 'plugins.php?action=delete-selected&checked[]=' . $plugin_file . '&plugin_status=' . $context . '&paged=' . $page , 'bulk-manage-plugins' ) . '" title="' . __ ( 'Delete this plugin' ) . '" class="delete">' . __ ( 'Delete' ) . '</a>' ;
2010-02-19 21:16:14 +00:00
}
}
2009-05-17 09:39:32 +00:00
2009-04-17 05:30:09 +00:00
$actions = apply_filters ( 'plugin_action_links' , $actions , $plugin_file , $plugin_data , $context );
$actions = apply_filters ( " plugin_action_links_ $plugin_file " , $actions , $plugin_file , $plugin_data , $context );
2010-02-19 21:16:14 +00:00
2009-04-19 18:53:05 +00:00
$class = $is_active ? 'active' : 'inactive' ;
2010-02-19 21:16:14 +00:00
$checkbox = in_array ( $context , array ( 'mustuse' , 'dropins' ) ) ? '' : " <input type='checkbox' name='checked[]' value=' " . esc_attr ( $plugin_file ) . " ' /> " ;
if ( 'dropins' != $context ) {
$description = '<p>' . $plugin_data [ 'Description' ] . '</p>' ;
$plugin_name = $plugin_data [ 'Name' ];
}
2004-03-25 07:05:52 +00:00
echo "
2009-04-19 01:11:13 +00:00
< tr class = '$class' >
2010-02-19 21:16:14 +00:00
< th scope = 'row' class = 'check-column' > $checkbox </ th >
< td class = 'plugin-title' >< strong > $plugin_name </ strong ></ td >
< td class = 'desc' > $description </ td >
2009-05-21 09:40:11 +00:00
</ tr >
2009-05-19 01:27:34 +00:00
< tr class = '$class second' >
< td ></ td >
< td class = 'plugin-title' > " ;
2009-05-16 19:30:08 +00:00
echo '<div class="row-actions-visible">' ;
2009-04-17 05:30:09 +00:00
foreach ( $actions as $action => $link ) {
2009-05-28 11:02:16 +00:00
$sep = end ( $actions ) == $link ? '' : ' | ' ;
2009-04-17 05:30:09 +00:00
echo " <span class=' $action '> $link $sep </span> " ;
}
2009-05-19 01:27:34 +00:00
echo " </div></td>
< td class = 'desc' > " ;
2009-05-18 16:56:42 +00:00
$plugin_meta = array ();
if ( ! empty ( $plugin_data [ 'Version' ]) )
2009-05-18 22:17:58 +00:00
$plugin_meta [] = sprintf ( __ ( 'Version %s' ), $plugin_data [ 'Version' ]);
2009-05-16 19:30:08 +00:00
if ( ! empty ( $plugin_data [ 'Author' ]) ) {
$author = $plugin_data [ 'Author' ];
if ( ! empty ( $plugin_data [ 'AuthorURI' ]) )
$author = '<a href="' . $plugin_data [ 'AuthorURI' ] . '" title="' . __ ( 'Visit author homepage' ) . '">' . $plugin_data [ 'Author' ] . '</a>' ;
2009-05-18 22:17:58 +00:00
$plugin_meta [] = sprintf ( __ ( 'By %s' ), $author );
}
2009-05-28 11:02:16 +00:00
if ( ! empty ( $plugin_data [ 'PluginURI' ]) )
2009-05-18 22:17:58 +00:00
$plugin_meta [] = '<a href="' . $plugin_data [ 'PluginURI' ] . '" title="' . __ ( 'Visit plugin site' ) . '">' . __ ( 'Visit plugin site' ) . '</a>' ;
2009-05-28 11:02:16 +00:00
2009-05-18 16:56:42 +00:00
$plugin_meta = apply_filters ( 'plugin_row_meta' , $plugin_meta , $plugin_file , $plugin_data , $context );
2009-05-18 22:17:58 +00:00
echo implode ( ' | ' , $plugin_meta );
2009-06-06 14:39:34 +00:00
echo " </td>
2009-05-19 01:27:34 +00:00
</ tr > \n " ;
2009-05-24 23:47:49 +00:00
2009-05-21 09:40:11 +00:00
do_action ( 'after_plugin_row' , $plugin_file , $plugin_data , $context );
do_action ( " after_plugin_row_ $plugin_file " , $plugin_file , $plugin_data , $context );
2004-03-25 07:05:52 +00:00
}
?>
2008-02-27 19:18:21 +00:00
</ tbody >
2004-03-25 07:05:52 +00:00
</ table >
2008-08-09 05:36:14 +00:00
< ? php
2008-06-04 18:09:31 +00:00
} //End print_plugins_table()
2008-10-25 19:14:47 +00:00
/**
* @ ignore
*
* @ param string $context
*/
2009-05-28 11:02:16 +00:00
function print_plugin_actions ( $context , $field_name = 'action' ) {
2010-02-19 21:16:14 +00:00
if ( in_array ( $context , array ( 'mustuse' , 'dropins' ) ) )
return ;
2008-10-25 19:14:47 +00:00
?>
< div class = " alignleft actions " >
2009-05-28 11:02:16 +00:00
< select name = " <?php echo $field_name ; ?> " >
2008-12-04 21:57:56 +00:00
< option value = " " selected = " selected " >< ? php _e ( 'Bulk Actions' ); ?> </option>
2009-04-20 19:23:33 +00:00
< ? php if ( 'active' != $context ) : ?>
2008-10-25 19:14:47 +00:00
< option value = " activate-selected " >< ? php _e ( 'Activate' ); ?> </option>
< ? php endif ; ?>
2010-02-14 14:46:38 +00:00
< ? php if ( is_multisite () && 'network' != $context ) : ?>
< option value = " network-activate-selected " >< ? php _e ( 'Network Activate' ); ?> </option>
< ? php endif ; ?>
2009-04-20 19:23:33 +00:00
< ? php if ( 'inactive' != $context && 'recent' != $context ) : ?>
2008-10-25 19:14:47 +00:00
< option value = " deactivate-selected " >< ? php _e ( 'Deactivate' ); ?> </option>
2008-10-26 22:06:58 +00:00
< ? php endif ; ?>
2010-01-26 06:53:47 +00:00
< ? php if ( current_user_can ( 'update_plugins' ) ) : ?>
< option value = " update-selected " >< ? php _e ( 'Upgrade' ); ?> </option>
< ? php endif ; ?>
2009-04-20 19:23:33 +00:00
< ? php if ( current_user_can ( 'delete_plugins' ) && ( 'active' != $context ) ) : ?>
2008-10-25 19:14:47 +00:00
< option value = " delete-selected " >< ? php _e ( 'Delete' ); ?> </option>
< ? php endif ; ?>
</ select >
2009-05-05 19:43:53 +00:00
< input type = " submit " name = " doaction_active " value = " <?php esc_attr_e('Apply'); ?> " class = " button-secondary action " />
2010-01-18 20:34:48 +00:00
< ? php if ( 'recent' == $context ) : ?>
2009-05-05 19:43:53 +00:00
< input type = " submit " name = " clear-recent-list " value = " <?php esc_attr_e('Clear List') ?> " class = " button-secondary " />
2008-10-25 19:14:47 +00:00
< ? php endif ; ?>
2008-12-09 18:03:31 +00:00
</ div >
2008-10-25 19:14:47 +00:00
< ? php
}
2004-03-25 07:05:52 +00:00
?>
2005-05-09 11:37:36 +00:00
2009-04-19 18:50:22 +00:00
< form method = " get " action = " " >
< p class = " search-box " >
2009-05-12 22:40:56 +00:00
< label class = " screen-reader-text " for = " plugin-search-input " >< ? php _e ( 'Search Plugins' ); ?> :</label>
2009-04-19 18:50:22 +00:00
< input type = " text " id = " plugin-search-input " name = " s " value = " <?php _admin_search_query(); ?> " />
2009-05-05 19:43:53 +00:00
< input type = " submit " value = " <?php esc_attr_e( 'Search Plugins' ); ?> " class = " button " />
2009-04-19 18:50:22 +00:00
</ p >
</ form >
2010-01-14 02:02:19 +00:00
< ? php do_action ( 'pre_current_active_plugins' , $all_plugins ) ?>
2008-06-04 18:09:31 +00:00
< form method = " post " action = " <?php echo admin_url('plugins.php') ?> " >
2008-06-16 18:35:48 +00:00
< ? php wp_nonce_field ( 'bulk-manage-plugins' ) ?>
2009-05-05 19:43:53 +00:00
< input type = " hidden " name = " plugin_status " value = " <?php echo esc_attr( $status ) ?> " />
< input type = " hidden " name = " paged " value = " <?php echo esc_attr( $page ) ?> " />
2008-06-04 18:09:31 +00:00
2009-04-19 01:11:13 +00:00
< ul class = " subsubsub " >
< ? php
$status_links = array ();
$class = ( 'all' == $status ) ? ' class="current"' : '' ;
2009-04-30 16:22:14 +00:00
$status_links [] = " <li><a href='plugins.php?plugin_status=all' $class > " . sprintf ( _nx ( 'All <span class="count">(%s)</span>' , 'All <span class="count">(%s)</span>' , $total_all_plugins , 'plugins' ), number_format_i18n ( $total_all_plugins ) ) . '</a>' ;
2009-04-19 01:11:13 +00:00
if ( ! empty ( $active_plugins ) ) {
$class = ( 'active' == $status ) ? ' class="current"' : '' ;
$status_links [] = " <li><a href='plugins.php?plugin_status=active' $class > " . sprintf ( _n ( 'Active <span class="count">(%s)</span>' , 'Active <span class="count">(%s)</span>' , $total_active_plugins ), number_format_i18n ( $total_active_plugins ) ) . '</a>' ;
}
if ( ! empty ( $recent_plugins ) ) {
$class = ( 'recent' == $status ) ? ' class="current"' : '' ;
$status_links [] = " <li><a href='plugins.php?plugin_status=recent' $class > " . sprintf ( _n ( 'Recently Active <span class="count">(%s)</span>' , 'Recently Active <span class="count">(%s)</span>' , $total_recent_plugins ), number_format_i18n ( $total_recent_plugins ) ) . '</a>' ;
}
if ( ! empty ( $inactive_plugins ) ) {
$class = ( 'inactive' == $status ) ? ' class="current"' : '' ;
$status_links [] = " <li><a href='plugins.php?plugin_status=inactive' $class > " . sprintf ( _n ( 'Inactive <span class="count">(%s)</span>' , 'Inactive <span class="count">(%s)</span>' , $total_inactive_plugins ), number_format_i18n ( $total_inactive_plugins ) ) . '</a>' ;
}
2010-01-29 21:45:32 +00:00
if ( ! empty ( $network_plugins ) ) {
$class = ( 'network' == $status ) ? ' class="current"' : '' ;
$status_links [] = " <li><a href='plugins.php?plugin_status=network' $class > " . sprintf ( _n ( 'Network <span class="count">(%s)</span>' , 'Network <span class="count">(%s)</span>' , $total_network_plugins ), number_format_i18n ( $total_network_plugins ) ) . '</a>' ;
}
2010-02-19 21:16:14 +00:00
if ( ! empty ( $mustuse_plugins ) ) {
$class = ( 'mustuse' == $status ) ? ' class="current"' : '' ;
$status_links [] = " <li><a href='plugins.php?plugin_status=mustuse' $class > " . sprintf ( _n ( 'Must-Use <span class="count">(%s)</span>' , 'Must-Use <span class="count">(%s)</span>' , $total_mustuse_plugins ), number_format_i18n ( $total_mustuse_plugins ) ) . '</a>' ;
}
if ( ! empty ( $dropins_plugins ) ) {
$class = ( 'dropins' == $status ) ? ' class="current"' : '' ;
$status_links [] = " <li><a href='plugins.php?plugin_status=dropins' $class > " . sprintf ( _n ( 'Drop-ins <span class="count">(%s)</span>' , 'Drop-ins <span class="count">(%s)</span>' , $total_dropins_plugins ), number_format_i18n ( $total_dropins_plugins ) ) . '</a>' ;
}
2009-04-19 01:22:02 +00:00
if ( ! empty ( $upgrade_plugins ) ) {
$class = ( 'upgrade' == $status ) ? ' class="current"' : '' ;
$status_links [] = " <li><a href='plugins.php?plugin_status=upgrade' $class > " . sprintf ( _n ( 'Upgrade Available <span class="count">(%s)</span>' , 'Upgrade Available <span class="count">(%s)</span>' , $total_upgrade_plugins ), number_format_i18n ( $total_upgrade_plugins ) ) . '</a>' ;
}
2009-04-19 18:50:22 +00:00
if ( ! empty ( $search_plugins ) ) {
$class = ( 'search' == $status ) ? ' class="current"' : '' ;
$term = isset ( $_REQUEST [ 's' ]) ? urlencode ( stripslashes ( $_REQUEST [ 's' ])) : '' ;
$status_links [] = " <li><a href='plugins.php?s= $term ' $class > " . sprintf ( _n ( 'Search Results <span class="count">(%s)</span>' , 'Search Results <span class="count">(%s)</span>' , $total_search_plugins ), number_format_i18n ( $total_search_plugins ) ) . '</a>' ;
}
2009-04-19 01:11:13 +00:00
echo implode ( " |</li> \n " , $status_links ) . '</li>' ;
unset ( $status_links );
?>
</ ul >
2008-06-04 18:09:31 +00:00
2010-02-19 21:16:14 +00:00
< ? php
if ( 'mustuse' == $status )
echo '<div class="clear"><p>' . __ ( 'Files in the <code>wp-content/mu-plugins</code> directory are executed automatically.' ) . '</p>' ;
elseif ( 'dropins' == $status )
echo '<div class="clear"><p>' . __ ( 'Drop-ins are advanced plugins in the <code>wp-content</code> directory that replace WordPress functionality when present.' ) . '</p>' ;
2010-02-13 08:49:27 +00:00
2010-02-19 21:16:14 +00:00
if ( ! empty ( $plugins ) && ( ! in_array ( $status , array ( 'mustuse' , 'dropins' ) ) || $page_links ) ) :
?>
2008-06-04 18:09:31 +00:00
< div class = " tablenav " >
2009-04-19 18:50:22 +00:00
< ? php
if ( $page_links )
echo '<div class="tablenav-pages">' , $page_links_text , '</div>' ;
print_plugin_actions ( $status );
?>
2008-06-04 18:09:31 +00:00
</ div >
2008-10-03 00:13:12 +00:00
< div class = " clear " ></ div >
2009-04-19 18:50:22 +00:00
< ? php
2010-02-19 21:16:14 +00:00
endif ;
if ( $total_this_page > $plugins_per_page )
$plugins = array_slice ( $plugins , $start , $plugins_per_page );
print_plugins_table ( $plugins , $status );
2009-04-20 18:18:39 +00:00
2010-02-19 21:16:14 +00:00
if ( ! empty ( $plugins ) && ! in_array ( $status , array ( 'mustuse' , 'dropins' ) ) || $page_links ) {
2009-04-19 18:50:22 +00:00
?>
< div class = " tablenav " >
< ? php
if ( $page_links )
echo " <div class='tablenav-pages'> $page_links_text </div> " ;
2009-05-28 11:02:16 +00:00
print_plugin_actions ( $status , " action2 " );
2009-04-19 18:50:22 +00:00
?>
</ div >
2010-02-13 08:49:27 +00:00
< ? php } elseif ( ! empty ( $all_plugins ) ) { ?>
< p >< ? php __ ( 'No plugins found.' ); ?> </p>
< ? php } ?>
2008-06-04 18:09:31 +00:00
</ form >
2008-06-30 23:12:18 +00:00
< ? php if ( empty ( $all_plugins ) ) : ?>
2010-02-13 08:49:27 +00:00
< br class = " clear " />
2008-06-30 23:12:18 +00:00
< p >< ? php _e ( 'You do not appear to have any plugins available at this time.' ) ?> </p>
< ? php endif ; ?>
2004-03-25 07:05:52 +00:00
</ div >
< ? php
include ( 'admin-footer.php' );
2009-04-17 05:30:09 +00:00
?>