Version Description
Download this release
Release Info
| Developer | willmot |
| Plugin | |
| Version | 0.3 |
| Comparing to | |
| See all releases | |
Code changes from version 0.2 to 0.3
- plugin.php +4 -69
- readme.txt +2 -2
- wpr.api.php +40 -0
- wpr.extend-xmlrpc.php +74 -0
- wpr.plugin.php +54 -0
plugin.php
CHANGED
|
@@ -3,77 +3,12 @@
|
|
| 3 |
/*
|
| 4 |
Plugin Name: WP Remote
|
| 5 |
Description: Extends the functionality of <a href="http://www.wpremote.com">WP Remote</a>.
|
| 6 |
-
Version: 0.
|
| 7 |
Author: willmot
|
| 8 |
Author URI: http://humanmade.co.uk/
|
| 9 |
*/
|
| 10 |
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
if( !isset( $methods['wp.getPluginList'] ) ) {
|
| 14 |
-
$methods['wp.getPluginList'] = 'wpr_get_plugin_list';
|
| 15 |
-
}
|
| 16 |
-
|
| 17 |
-
return $methods;
|
| 18 |
-
}
|
| 19 |
-
|
| 20 |
-
add_action('xmlrpc_methods', 'wpr_attach_new_xmlrpc');
|
| 21 |
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
$blog_id = (int) $args[0];
|
| 25 |
-
$username = $args[1];
|
| 26 |
-
$password = $args[2];
|
| 27 |
-
|
| 28 |
-
//check if xmlrpc is enabled
|
| 29 |
-
if ( !get_option( 'enable_xmlrpc' ) ) {
|
| 30 |
-
return new IXR_Error( 405, sprintf( __( 'XML-RPC services are disabled on this blog. An admin user can enable them at %s'), admin_url('options-writing.php') ) );
|
| 31 |
-
}
|
| 32 |
-
|
| 33 |
-
//authenticate the user
|
| 34 |
-
$user = wp_authenticate($username, $password);
|
| 35 |
-
|
| 36 |
-
if (is_wp_error($user)) {
|
| 37 |
-
return new IXR_Error(403, __('Bad login/pass combination.'));
|
| 38 |
-
}
|
| 39 |
-
|
| 40 |
-
set_current_user( $user->ID );
|
| 41 |
-
|
| 42 |
-
//don't allow anyone to get them via xml rpc
|
| 43 |
-
if ( !current_user_can( 'activate_plugins' ) ) {
|
| 44 |
-
return new IXR_Error( 401, __( 'Sorry, you cannot manage plugins.' ) );
|
| 45 |
-
}
|
| 46 |
-
|
| 47 |
-
do_action( 'xmlrpc_call', 'wp.getPluginList' );
|
| 48 |
-
|
| 49 |
-
$plugins = get_plugins( );
|
| 50 |
-
|
| 51 |
-
if( function_exists( 'get_site_transient' ) )
|
| 52 |
-
$current = get_site_transient( 'update_plugins' );
|
| 53 |
-
else
|
| 54 |
-
$current = get_transient( 'update_plugins' );
|
| 55 |
-
|
| 56 |
-
foreach ( (array) $plugins as $plugin_file => $plugin ) {
|
| 57 |
-
|
| 58 |
-
$new_version = $current->response[$plugin_file]->new_version;
|
| 59 |
-
|
| 60 |
-
if ( is_plugin_active( $plugin_file ) ) {
|
| 61 |
-
$plugins[$plugin_file]['active'] = true;
|
| 62 |
-
} else {
|
| 63 |
-
$plugins[$plugin_file]['active'] = false;
|
| 64 |
-
}
|
| 65 |
-
|
| 66 |
-
if ( $new_version ) {
|
| 67 |
-
$plugins[$plugin_file]['latest_version'] = $new_version;
|
| 68 |
-
} else {
|
| 69 |
-
$plugins[$plugin_file]['latest_version'] = $plugin['Version'];
|
| 70 |
-
}
|
| 71 |
-
}
|
| 72 |
-
|
| 73 |
-
return $plugins;
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
}
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
?>
|
| 3 |
/*
|
| 4 |
Plugin Name: WP Remote
|
| 5 |
Description: Extends the functionality of <a href="http://www.wpremote.com">WP Remote</a>.
|
| 6 |
+
Version: 0.3
|
| 7 |
Author: willmot
|
| 8 |
Author URI: http://humanmade.co.uk/
|
| 9 |
*/
|
| 10 |
|
| 11 |
+
require_once( 'wpr.extend-xmlrpc.php' );
|
| 12 |
+
require_once( 'wpr.plugin.php' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 13 |
|
| 14 |
+
tj_add_rewrite_rule( 'wpremote-api', null, dirname( __FILE__ ) . '/wpr.api.php' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
readme.txt
CHANGED
|
@@ -3,10 +3,10 @@ Contributors: willmot, joehoyle
|
|
| 3 |
Tags: wpremote, remote, xmlrpc
|
| 4 |
Requires at least: 2.7
|
| 5 |
Tested up to: 3.0
|
| 6 |
-
Stable tag: 0.
|
| 7 |
|
| 8 |
Adds extra functionality for use with WP Remote
|
| 9 |
|
| 10 |
== Description ==
|
| 11 |
|
| 12 |
-
The WP Remote WordPress Plugin
|
| 3 |
Tags: wpremote, remote, xmlrpc
|
| 4 |
Requires at least: 2.7
|
| 5 |
Tested up to: 3.0
|
| 6 |
+
Stable tag: 0.3
|
| 7 |
|
| 8 |
Adds extra functionality for use with WP Remote
|
| 9 |
|
| 10 |
== Description ==
|
| 11 |
|
| 12 |
+
The WP Remote WordPress Plugin if required for the use with [WP Remote](http://www.wpremote.com/)
|
wpr.api.php
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
if( !urlencode( $_GET['api_key'] ) || urlencode( $_GET['api_key'] ) !== get_option( 'wpr_api_key' ) || !isset( $_GET['actions'] ) ) {
|
| 4 |
+
echo json_encode( 'bad-api-key' );
|
| 5 |
+
exit;
|
| 6 |
+
}
|
| 7 |
+
|
| 8 |
+
$actions = explode( ',', $_GET['actions'] );
|
| 9 |
+
$actions = array_flip( $actions );
|
| 10 |
+
|
| 11 |
+
wp_set_current_user( 1 );
|
| 12 |
+
|
| 13 |
+
foreach( $actions as $action => $value ) :
|
| 14 |
+
|
| 15 |
+
switch( $action ) :
|
| 16 |
+
|
| 17 |
+
//Plugin version
|
| 18 |
+
case 'get_plugin_version' :
|
| 19 |
+
$actions[$action] = '1.1';
|
| 20 |
+
break;
|
| 21 |
+
|
| 22 |
+
case 'get_wp_version' :
|
| 23 |
+
|
| 24 |
+
global $wp_version;
|
| 25 |
+
$actions[$action] = (string) $wp_version;
|
| 26 |
+
|
| 27 |
+
break;
|
| 28 |
+
|
| 29 |
+
case 'get_plugins' :
|
| 30 |
+
$actions[$action] = _wpr_get_plugins();
|
| 31 |
+
break;
|
| 32 |
+
|
| 33 |
+
default :
|
| 34 |
+
$actions[$action] = 'not-implemented';
|
| 35 |
+
|
| 36 |
+
endswitch;
|
| 37 |
+
|
| 38 |
+
endforeach;
|
| 39 |
+
|
| 40 |
+
echo json_encode( $actions );
|
wpr.extend-xmlrpc.php
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
function wpr_attach_new_xmlrpc($methods) {
|
| 4 |
+
|
| 5 |
+
if( !isset( $methods['wp.getPluginList'] ) ) {
|
| 6 |
+
$methods['wp.getPluginList'] = 'wpr_get_plugin_list';
|
| 7 |
+
}
|
| 8 |
+
|
| 9 |
+
return $methods;
|
| 10 |
+
}
|
| 11 |
+
|
| 12 |
+
add_action('xmlrpc_methods', 'wpr_attach_new_xmlrpc');
|
| 13 |
+
|
| 14 |
+
function wpr_get_plugin_list( $args ) {
|
| 15 |
+
|
| 16 |
+
$blog_id = (int) $args[0];
|
| 17 |
+
$username = $args[1];
|
| 18 |
+
$password = $args[2];
|
| 19 |
+
|
| 20 |
+
//check if xmlrpc is enabled
|
| 21 |
+
if ( !get_option( 'enable_xmlrpc' ) ) {
|
| 22 |
+
return new IXR_Error( 405, sprintf( __( 'XML-RPC services are disabled on this blog. An admin user can enable them at %s'), admin_url('options-writing.php') ) );
|
| 23 |
+
}
|
| 24 |
+
|
| 25 |
+
//authenticate the user
|
| 26 |
+
$user = wp_authenticate($username, $password);
|
| 27 |
+
|
| 28 |
+
if (is_wp_error($user)) {
|
| 29 |
+
return new IXR_Error(403, __('Bad login/pass combination.'));
|
| 30 |
+
}
|
| 31 |
+
|
| 32 |
+
set_current_user( $user->ID );
|
| 33 |
+
|
| 34 |
+
//don't allow anyone to get them via xml rpc
|
| 35 |
+
if ( !current_user_can( 'activate_plugins' ) ) {
|
| 36 |
+
return new IXR_Error( 401, __( 'Sorry, you cannot manage plugins.' ) );
|
| 37 |
+
}
|
| 38 |
+
|
| 39 |
+
do_action( 'xmlrpc_call', 'wp.getPluginList' );
|
| 40 |
+
|
| 41 |
+
return _wpr_get_plugins();
|
| 42 |
+
|
| 43 |
+
}
|
| 44 |
+
|
| 45 |
+
function _wpr_get_plugins() {
|
| 46 |
+
|
| 47 |
+
require_once( ABSPATH . '/wp-admin/includes/plugin.php' );
|
| 48 |
+
|
| 49 |
+
$plugins = get_plugins( );
|
| 50 |
+
|
| 51 |
+
if( function_exists( 'get_site_transient' ) )
|
| 52 |
+
$current = get_site_transient( 'update_plugins' );
|
| 53 |
+
else
|
| 54 |
+
$current = get_transient( 'update_plugins' );
|
| 55 |
+
|
| 56 |
+
foreach ( (array) $plugins as $plugin_file => $plugin ) {
|
| 57 |
+
|
| 58 |
+
$new_version = $current->response[$plugin_file]->new_version;
|
| 59 |
+
|
| 60 |
+
if ( is_plugin_active( $plugin_file ) ) {
|
| 61 |
+
$plugins[$plugin_file]['active'] = true;
|
| 62 |
+
} else {
|
| 63 |
+
$plugins[$plugin_file]['active'] = false;
|
| 64 |
+
}
|
| 65 |
+
|
| 66 |
+
if ( $new_version ) {
|
| 67 |
+
$plugins[$plugin_file]['latest_version'] = $new_version;
|
| 68 |
+
} else {
|
| 69 |
+
$plugins[$plugin_file]['latest_version'] = $plugin['Version'];
|
| 70 |
+
}
|
| 71 |
+
}
|
| 72 |
+
|
| 73 |
+
return $plugins;
|
| 74 |
+
}
|
wpr.plugin.php
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
function wpr_setup_admin() {
|
| 4 |
+
|
| 5 |
+
//register the options page
|
| 6 |
+
wpr_register_settings();
|
| 7 |
+
add_options_page('WP Remote Settings', 'WP Remote', 'manage_options', 'wp-remote-options', 'wpr_options_page');
|
| 8 |
+
|
| 9 |
+
}
|
| 10 |
+
add_action('admin_menu', 'wpr_setup_admin');
|
| 11 |
+
|
| 12 |
+
function wpr_register_settings() {
|
| 13 |
+
|
| 14 |
+
register_setting( 'wpr-settings', 'wpr_api_key' );
|
| 15 |
+
}
|
| 16 |
+
|
| 17 |
+
function wpr_options_page() {
|
| 18 |
+
|
| 19 |
+
?>
|
| 20 |
+
|
| 21 |
+
<div class="wrap">
|
| 22 |
+
<h2>WP Remote Settings</h2>
|
| 23 |
+
|
| 24 |
+
<form method="post" action="options.php">
|
| 25 |
+
<table class="form-table">
|
| 26 |
+
|
| 27 |
+
<tr valign="top">
|
| 28 |
+
<th scope="row"><strong>API Key</strong></th>
|
| 29 |
+
<td>
|
| 30 |
+
<input type="text" name="wpr_api_key" class="regular-text" value="<?php echo get_option('wpr_api_key', ''); ?>" /><br />
|
| 31 |
+
<span class="description">If you don't want to use XML-RPC authentication, you can enter your WP Remote API Key</span>
|
| 32 |
+
</td>
|
| 33 |
+
</tr>
|
| 34 |
+
|
| 35 |
+
</table>
|
| 36 |
+
|
| 37 |
+
<input type="hidden" name="action" value="update" />
|
| 38 |
+
|
| 39 |
+
<p class="submit">
|
| 40 |
+
<input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />
|
| 41 |
+
</p>
|
| 42 |
+
|
| 43 |
+
<?php
|
| 44 |
+
settings_fields( 'wpr-settings' );
|
| 45 |
+
|
| 46 |
+
// Output any sections defined for page sl-settings
|
| 47 |
+
do_settings_sections('wpr-settings');
|
| 48 |
+
?>
|
| 49 |
+
</form>
|
| 50 |
+
|
| 51 |
+
</div>
|
| 52 |
+
<?php
|
| 53 |
+
|
| 54 |
+
}
|
