From 1c74939e7e1f9c86b1b6b4de9be576567eab95ef Mon Sep 17 00:00:00 2001 From: Chuck Scott Date: Tue, 27 Sep 2016 15:23:12 -0400 Subject: [PATCH] Changed some info in the update support code to use defines. --- index.php | 8 +- lib/glmUpdater/README.md | 68 ------- lib/glmUpdater/glmUpdaterClass.php | 314 ----------------------------- 3 files changed, 3 insertions(+), 387 deletions(-) delete mode 100644 lib/glmUpdater/README.md delete mode 100644 lib/glmUpdater/glmUpdaterClass.php diff --git a/index.php b/index.php index 4fdbd7c..11e9926 100644 --- a/index.php +++ b/index.php @@ -159,17 +159,15 @@ function serverStatsController($model) /* - * Plugin Update Support + * Plugin Update Support - uses Gaslight Media update server */ require GLM_SERVERSTATS_PLUGIN_LIB_PATH.'/plugin-update-checker/plugin-update-checker.php'; $MyUpdateChecker = PucFactory::buildUpdateChecker( - 'http://gaslightmedia.gaslightmedia.com/update_server/?action=get_metadata&slug=glm-serverstats', + 'http://gaslightmedia.gaslightmedia.com/update_server/?action=get_metadata&slug='.GLM_SERVERSTATS_PLUGIN_SLUG, __FILE__, - 'glm-serverstats' + GLM_SERVERSTATS_PLUGIN_SLUG ); - - /* * * Activate and Deactivate hooks diff --git a/lib/glmUpdater/README.md b/lib/glmUpdater/README.md deleted file mode 100644 index 256ed5b..0000000 --- a/lib/glmUpdater/README.md +++ /dev/null @@ -1,68 +0,0 @@ -TGM Updater -=========== - -Note: Use the glmUpdaterClass.php as that's taylored to use with GLM plugins. - -**** NEED TO UPDATE THIS TO REFLECT CHANGES FOR GLM **** - -Here we go, world. A first-class premium plugin updater class that has been battle-tested and approved. It has been tested, refined, used and abused on over 10,000 WordPress installs. To put it short - **this class simply works.** Just follow the instructions correctly and you will be up and running with your own automatic plugin updates in no time flat! - -This class has been tested and works with both regular and Multisite installs, and it even works with services like ManageWP! - -### Usage ### - -Drop the following code somewhere inside your main plugin file. Adjust the commented settings with your own plugin information. - -```php -add_action( 'init', 'tgm_updater_plugin_load' ); -/** - * Loads the updater file and initializes the updater. - * - * IMPORTANT: Namespace this function. - * - * @since 1.0.0 - * - * @package Test TGM Updater Plugin - * @author Thomas Griffin - */ -function tgm_updater_plugin_load() { - - // Return early if not in the admin. - if ( ! is_admin() ) { - return; - } - - // Load the updater file. - if ( ! class_exists( 'TGM_Updater' ) ) { - require plugin_dir_path( __FILE__ ) . 'class-tgm-updater.php'; - } - - // Prepare updater args and initialize the updater. - $args = array( - 'plugin_name' => 'Your Plugin Name', // Your plugin name goes here. - 'plugin_slug' => 'your-plugin-slug', // Your plugin slug goes here. - 'plugin_path' => plugin_basename( __FILE__ ), - 'plugin_url' => trailingslashit( WP_PLUGIN_URL ) . 'your-plugin-slug', - 'remote_url' => 'http://yourdomain.com', // Set to the domain that should receive update requests. - 'version' => '1.0.0', // Adjust to your latest plugin version. - 'key' => 'license_key_here_if_needed' // Optionally, you can set this to false if you don't want to verify updates. - ); - $tgm_updater = new TGM_Updater( $args ); - -} -``` - -**That's it.** You've now integrated the updater class into your plugin. - -### License ### -The TGM Updater class is released under the GPL v2 license. - -### Issues ### -Got bugs? Make sure to [report them as an issue](https://github.com/thomasgriffin/TGM-Updater/issues) so they can be squashed. - -### Credits ### -This class was developed and is maintained by [Thomas Griffin](https://thomasgriffin.io). - -### Update JSON Fields ### - -https://docs.google.com/spreadsheets/d/1eOBbW7Go2qEQXReOOCdidMTf_tDYRq4JfegcO1CBPIs/pub?authkey=CK7h9toK&hl=en&single=true&gid=0&output=html diff --git a/lib/glmUpdater/glmUpdaterClass.php b/lib/glmUpdater/glmUpdaterClass.php deleted file mode 100644 index 0972db5..0000000 --- a/lib/glmUpdater/glmUpdaterClass.php +++ /dev/null @@ -1,314 +0,0 @@ -. - */ -class glmPluginUpdater { - - /** - * Plugin name. - * - * @since 1.0.0 - * - * @var bool|string - */ - public $plugin_name = false; - - /** - * Plugin slug. - * - * @since 1.0.0 - * - * @var bool|string - */ - public $plugin_slug = false; - - /** - * Plugin path. - * - * @since 1.0.0 - * - * @var bool|string - */ - public $plugin_path = false; - - /** - * URL of the plugin. - * - * @since 1.0.0 - * - * @var bool|string - */ - public $plugin_url = false; - - /** - * Remote URL for getting plugin updates. - * - * @since 1.0.0 - * - * @var bool|string - */ - public $remote_url = false; - - /** - * Version number of the plugin. - * - * @since 1.0.0 - * - * @var bool|int - */ - public $version = false; - - /** - * License key for the plugin. - * - * @since 1.0.0 - * - * @var bool|string - */ - public $key = false; - - /** - * Holds the update data returned from the API. - * - * @since 1.0.0 - * - * @var bool|object - */ - public $update = false; - - /** - * Holds the plugin info details for the update. - * - * @since 1.0.0 - * - * @var bool|object - */ - public $info = false; - - /** - * Primary class constructor. - * - * @since 1.0.0 - * - * @param array $config Array of updater config args. - */ - public function __construct( array $config ) { - - // Set class properties. - $accepted_args = array( - 'plugin_name', - 'plugin_slug', - 'plugin_path', - 'plugin_url', - 'remote_url', - 'version', - 'key' - ); - foreach ( $accepted_args as $arg ) { - $this->$arg = $config[$arg]; - } - - // If the user cannot update plugins, stop processing here. - if ( ! current_user_can( 'update_plugins' ) ) { - return; - } - - // Load the updater hooks and filters. - add_filter( 'pre_set_site_transient_update_plugins', array( $this, 'update_plugins_filter' ) ); - add_filter( 'http_request_args', array( $this, 'http_request_args' ), 10, 2 ); - add_filter( 'plugins_api', array( $this, 'plugins_api' ), 10, 3 ); - - } - - /** - * Infuse plugin update details when WordPress runs its update checker. - * - * @since 1.0.0 - * - * @param object $value The WordPress update object. - * @return object $value Amended WordPress update object on success, default if object is empty. - */ - public function update_plugins_filter( $value ) { - - // If no update object exists, return early. - if ( empty( $value ) ) { - return $value; - } - - // Run update check by pinging the external API. If it fails, return the default update object. - if ( ! $this->update ) { - $this->update = $this->perform_remote_request( 'get-plugin-update', array( 'tgm-updater-plugin' => $this->plugin_slug ) ); - if ( ! $this->update || ! empty( $this->update->error ) ) { - $this->update = false; - return $value; - } - } - - // Infuse the update object with our data if the version from the remote API is newer. - if ( isset( $this->update->new_version ) && version_compare( $this->version, $this->update->new_version, '<' ) ) { - // The $plugin_update object contains new_version, package, slug and last_update keys. - $value->response[$this->plugin_path] = $this->update; - } - - // Return the update object. - return $value; - - } - - /** - * Disables SSL verification to prevent download package failures. - * - * @since 1.0.0 - * - * @param array $args Array of request args. - * @param string $url The URL to be pinged. - * @return array $args Amended array of request args. - */ - public function http_request_args( $args, $url ) { - - // If this is an SSL request and we are performing an upgrade routine, disable SSL verification. - if ( strpos( $url, 'https://' ) !== false && strpos( $url, 'tgm-updater-action=get-plugin-update' ) ) { - $args['sslverify'] = false; - } - - return $args; - - } - - /** - * Filters the plugins_api function to get our own custom plugin information - * from our private repo. - * - * @since 1.0.0 - * - * @param object $api The original plugins_api object. - * @param string $action The action sent by plugins_api. - * @param array $args Additional args to send to plugins_api. - * @return object $api New stdClass with plugin information on success, default response on failure. - */ - public function plugins_api( $api, $action = '', $args = null ) { - - $plugin = ( 'plugin_information' == $action ) && isset( $args->slug ) && ( $this->plugin_slug == $args->slug ); - - // If our plugin matches the request, set our own plugin data, else return the default response. - if ( $plugin ) { - return $this->set_plugins_api( $api ); - } else { - return $api; - } - - } - - /** - * Pings a remote API to retrieve plugin information for WordPress to display. - * - * @since 1.0.0 - * - * @param object $default_api The default API object. - * @return object $api Return custom plugin information to plugins_api. - */ - public function set_plugins_api( $default_api ) { - - // Perform the remote request to retrieve our plugin information. If it fails, return the default object. - if ( ! $this->info ) { - $this->info = $this->perform_remote_request( 'get-plugin-info', array( 'tgm-updater-plugin' => $this->plugin_slug ) ); - if ( ! $this->info || ! empty( $this->info->error ) ) { - $this->info = false; - return $default_api; - } - } - - // Create a new stdClass object and populate it with our plugin information. - $api = new stdClass; - $api->name = isset( $this->info->name ) ? $this->info->name : ''; - $api->slug = isset( $this->info->slug ) ? $this->info->slug : ''; - $api->version = isset( $this->info->version ) ? $this->info->version : ''; - $api->author = isset( $this->info->author ) ? $this->info->author : ''; - $api->author_profile = isset( $this->info->author_profile ) ? $this->info->author_profile : ''; - $api->requires = isset( $this->info->requires ) ? $this->info->requires : ''; - $api->tested = isset( $this->info->tested ) ? $this->info->tested : ''; - $api->last_updated = isset( $this->info->last_updated ) ? $this->info->last_updated : ''; - $api->homepage = isset( $this->info->homepage ) ? $this->info->homepage : ''; - $api->sections['changelog'] = isset( $this->info->changelog ) ? $this->info->changelog : ''; - $api->download_link = isset( $this->info->download_link ) ? $this->info->download_link : ''; - - // Return the new API object with our custom data. - return $api; - - } - - /** - * Queries the remote URL via wp_remote_post and returns a json decoded response. - * - * @since 1.0.0 - * - * @param string $action The name of the $_POST action var. - * @param array $body The content to retrieve from the remote URL. - * @param array $headers The headers to send to the remote URL. - * @param string $return_format The format for returning content from the remote URL. - * @return string|bool Json decoded response on success, false on failure. - */ - public function perform_remote_request( $action, $body = array(), $headers = array(), $return_format = 'json' ) { - - // Build the body of the request. - $body = wp_parse_args( - $body, - array( - 'tgm-updater-action' => $action, - 'tgm-updater-key' => $this->key, - 'tgm-updater-wp-version' => get_bloginfo( 'version' ), - 'tgm-updater-referer' => site_url() - ) - ); - $body = http_build_query( $body, '', '&' ); - - // Build the headers of the request. - $headers = wp_parse_args( - $headers, - array( - 'Content-Type' => 'application/x-www-form-urlencoded', - 'Content-Length' => strlen( $body ) - ) - ); - - // Setup variable for wp_remote_post. - $post = array( - 'headers' => $headers, - 'body' => $body - ); - - // Perform the query and retrieve the response. - $response = wp_remote_post( esc_url_raw( $this->remote_url ), $post ); - $response_code = wp_remote_retrieve_response_code( $response ); - $response_body = wp_remote_retrieve_body( $response ); - - // Bail out early if there are any errors. - if ( 200 != $response_code || is_wp_error( $response_body ) ) { - return false; - } - - // Return the json decoded content. - return json_decode( $response_body ); - - } - -} \ No newline at end of file -- 2.17.1