diff -r 490d5cc509ed -r cf61fcea0001 wp/wp-admin/press-this.php --- a/wp/wp-admin/press-this.php Tue Jun 09 11:14:17 2015 +0000 +++ b/wp/wp-admin/press-this.php Mon Oct 14 17:39:30 2019 +0200 @@ -6,16 +6,70 @@ * @subpackage Press_This */ -define('IFRAME_REQUEST' , true); +define( 'IFRAME_REQUEST' , true ); /** WordPress Administration Bootstrap */ require_once( dirname( __FILE__ ) . '/admin.php' ); -if ( ! current_user_can( 'edit_posts' ) || ! current_user_can( get_post_type_object( 'post' )->cap->create_posts ) ) - wp_die( __( 'Cheatin’ uh?' ), 403 ); +function wp_load_press_this() { + $plugin_slug = 'press-this'; + $plugin_file = 'press-this/press-this-plugin.php'; -if ( empty( $GLOBALS['wp_press_this'] ) ) { - include( ABSPATH . 'wp-admin/includes/class-wp-press-this.php' ); + if ( ! current_user_can( 'edit_posts' ) || ! current_user_can( get_post_type_object( 'post' )->cap->create_posts ) ) { + wp_die( + __( 'Sorry, you are not allowed to create posts as this user.' ), + __( 'You need a higher level of permission.' ), + 403 + ); + } elseif ( is_plugin_active( $plugin_file ) ) { + include( WP_PLUGIN_DIR . '/press-this/class-wp-press-this-plugin.php' ); + $wp_press_this = new WP_Press_This_Plugin(); + $wp_press_this->html(); + } elseif ( current_user_can( 'activate_plugins' ) ) { + if ( file_exists( WP_PLUGIN_DIR . '/' . $plugin_file ) ) { + $url = wp_nonce_url( add_query_arg( array( + 'action' => 'activate', + 'plugin' => $plugin_file, + 'from' => 'press-this', + ), admin_url( 'plugins.php' ) ), 'activate-plugin_' . $plugin_file ); + $action = sprintf( + '%2$s', + esc_url( $url ), + __( 'Activate Press This' ) + ); + } else { + if ( is_main_site() ) { + $url = wp_nonce_url( add_query_arg( array( + 'action' => 'install-plugin', + 'plugin' => $plugin_slug, + 'from' => 'press-this', + ), self_admin_url( 'update.php' ) ), 'install-plugin_' . $plugin_slug ); + $action = sprintf( + '%3$s', + esc_url( $url ), + esc_attr( $plugin_slug ), + __( 'Install Now' ) + ); + } else { + $action = sprintf( + /* translators: URL to wp-admin/press-this.php */ + __( 'Press This is not installed. Please install Press This from the main site.' ), + get_admin_url( get_current_network_id(), 'press-this.php' ) + ); + } + } + wp_die( + __( 'The Press This plugin is required.' ) . '
' . $action, + __( 'Installation Required' ), + 200 + ); + } else { + wp_die( + __( 'Press This is not available. Please contact your site administrator.' ), + __( 'Installation Required' ), + 200 + ); + } } -$GLOBALS['wp_press_this']->html(); +wp_load_press_this();