Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Check update: take #1 (disabled)

  • Loading branch information...
commit 0814c641ca3d7d730ab7ce25ed6e1df7cb9f1acb 1 parent 3b2bb88
@kucrut authored
Showing with 148 additions and 1 deletion.
  1. +139 −0 kc-essentials-inc/_update.php
  2. +9 −1 kc-essentials.php
View
139 kc-essentials-inc/_update.php
@@ -0,0 +1,139 @@
+<?php
+
+/*
+ * Plugin update handler
+ * Based on http://wp.tutsplus.com/tutorials/plugins/a-guide-to-the-wordpress-http-api-automatic-plugin-updates/
+ */
+
+class kcUpdate {
+ /**
+ * The plugin current version
+ * @var string
+ */
+ public $current_version;
+
+ /**
+ * The plugin remote update path
+ * @var string
+ */
+ public $update_path;
+
+ /**
+ * Plugin Slug (plugin_directory/plugin_file.php)
+ * @var string
+ */
+ public $plugin_slug;
+
+ /**
+ * Plugin name (plugin_file)
+ * @var string
+ */
+ public $slug;
+
+
+ /**
+ * Initialize a new instance of the WordPress Auto-Update class
+ * @param string $current_version
+ * @param string $update_path
+ * @param string $plugin_slug
+ */
+ function __construct( $current_version, $update_path, $plugin_slug ) {
+ // Set the class public variables
+ $this->current_version = $current_version;
+ $this->update_path = $update_path;
+ $this->plugin_slug = $plugin_slug;
+ list ($t1, $t2) = explode('/', $plugin_slug);
+ $this->slug = str_replace('.php', '', $t2);
+
+ // define the alternative API for updating checking
+ add_filter('pre_set_site_transient_update_plugins', array($this, 'check_update'));
+
+ // Define the alternative response for information checking
+ add_filter('plugins_api', array($this, 'check_info'), 10, 3);
+ }
+
+
+ /**
+ * Add our self-hosted autoupdate plugin to the filter transient
+ *
+ * @param $transient
+ * @return object $ transient
+ */
+ public function check_update( $transient ) {
+ if (empty($transient->checked)) {
+ return $transient;
+ }
+
+ // Get the remote version
+ $remote_version = $this->getRemote_version();
+
+ // If a newer version is available, add the update
+ if (version_compare($this->current_version, $remote_version, '<')) {
+ $obj = new stdClass();
+ $obj->slug = $this->slug;
+ $obj->new_version = $remote_version;
+ $obj->url = $this->update_path;
+ $obj->package = $this->update_path;
+ $transient->response[$this->plugin_slug] = $obj;
+ }
+ return $transient;
+ }
+
+
+ /**
+ * Add our self-hosted description to the filter
+ *
+ * @param boolean $false
+ * @param array $action
+ * @param object $arg
+ * @return bool|object
+ */
+ public function check_info( $false, $action, $arg ) {
+ if ($arg->slug === $this->slug) {
+ $information = $this->getRemote_information();
+ return $information;
+ }
+ return false;
+ }
+
+
+ /**
+ * Return the remote version
+ * @return string $remote_version
+ */
+ public function getRemote_version() {
+ $request = wp_remote_post($this->update_path, array('body' => array('action' => 'version')));
+ if (!is_wp_error($request) || wp_remote_retrieve_response_code($request) === 200) {
+ return $request['body'];
+ }
+ return false;
+ }
+
+
+ /**
+ * Get information about the remote version
+ * @return bool|object
+ */
+ public function getRemote_information() {
+ $request = wp_remote_post($this->update_path, array('body' => array('action' => 'info')));
+ if (!is_wp_error($request) || wp_remote_retrieve_response_code($request) === 200) {
+ return unserialize($request['body']);
+ }
+ return false;
+ }
+
+
+ /**
+ * Return the status of the plugin licensing
+ * @return boolean $remote_license
+ */
+ public function getRemote_license() {
+ $request = wp_remote_post($this->update_path, array('body' => array('action' => 'license')));
+ if (!is_wp_error($request) || wp_remote_retrieve_response_code($request) === 200) {
+ return $request['body'];
+ }
+ return false;
+ }
+}
+
+?>
View
10 kc-essentials.php
@@ -43,6 +43,9 @@ static function init() {
if ( file_exists("{$paths['inc']}/{$component}.php") )
require_once "{$paths['inc']}/{$component}.php";
+ # Auto update
+ //self::check_update();
+
# Scripts n styles
self::_sns();
}
@@ -90,9 +93,14 @@ public static function _deactivate() {
unset( $kcs['kids']['kc_essentials'] );
update_option( 'kc_settings', $kcs );
}
-}
+ public static function check_update() {
+ if ( !class_exists('kcUpdate') )
+ require_once self::$pdata['paths']['inc'] . '/_update.php';
+ new kcUpdate( '0.1', 'http://repo.kucrut.org/api.php', self::$pdata['paths']['p_file'] );
+ }
+}
require_once dirname(__FILE__) . '/kc-essentials-inc/_options.php';
add_action( 'init', array('kcEssentials', 'init'), 100 );

0 comments on commit 0814c64

Please sign in to comment.
Something went wrong with that request. Please try again.