From b1a68e6c8a2d9fb43e37f2a99c7e1f743d26ab45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bjo=CC=88rn=20Folbert?= Date: Tue, 18 Feb 2020 16:24:41 +0100 Subject: [PATCH] Bump version to 2.0.0-alpha3 --- CHANGELOG.md | 7 ++- DEVELOPER-NOTES.md | 11 +++- fewbricks.php | 34 +++++++---- src/Fewbricks.php | 2 +- src/WP_AutoUpdate.php | 135 ++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 170 insertions(+), 19 deletions(-) create mode 100644 src/WP_AutoUpdate.php diff --git a/CHANGELOG.md b/CHANGELOG.md index e6b6201..55401fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,10 @@ # Fewbricks changelog +An incomplete log of changes. ## 1.6 - March 19, 2017 * Added function `get_field_values()`to `brick` * Added function `get_get_html_arg()` to `brick` -* Added ability to pass $post_id to `have_rows()` in `brick` +* Added ability to pass $post_id to `have_rows()` in `brick` ## 1.5.1 - February 13, 2017 * Changed name on filter for project files base path @@ -29,7 +30,7 @@ * Added support for placing fewbricks in child theme ## 1.1.1 - April 24, 2016 -* Hotfix for Timber dependency in demo +* Hotfix for Timber dependency in demo ## 1.1.0 - April 23, 2016 * Added autoupdate functionality when viewing the plugin in plugins list. @@ -41,4 +42,4 @@ * Updates to the Readme file ## 1.0 - April 22, 2016 -* First stable release \ No newline at end of file +* First stable release diff --git a/DEVELOPER-NOTES.md b/DEVELOPER-NOTES.md index 85d2741..02d9e59 100644 --- a/DEVELOPER-NOTES.md +++ b/DEVELOPER-NOTES.md @@ -77,9 +77,16 @@ These are notes to make sure that I don't forget anything when creating a new re Version numbering follows [Semantic Versioning](http://semver.org/). -1. Describe new version in changelog.md +1. Describe new version in CHANGELOG.md 2. Change version nr in comment in fewbricks.php -3. Change version nr for $plugin_current_version in fewbricks.php +3. Change FEWBRICKS_VERSION in lib/Fewbricks.php +3. Change version nr in readme.txt + +Create release locally and push. After master has been pushed, create release on GitHub. +Start version number with a "v". + +Update https://version.fewbricks2.folbert.com/version-info.php with the correct data + diff --git a/fewbricks.php b/fewbricks.php index 6bdfa5e..3b8bb32 100644 --- a/fewbricks.php +++ b/fewbricks.php @@ -5,7 +5,7 @@ Plugin URI: https://github.com/folbert/fewbricks Description: A module extension to Advanced Custom Fields Author: Björn Folbert -Version: 2.0-beta1 +Version: 2.0.0-alpha2 Author URI: https://folbert.com License: GPLv3 */ @@ -29,7 +29,7 @@ && $namespaceParts[0] === 'Fewbricks' ) { - // First item will always be "Febwricks" and we don't need that when building the path + // First item will always be "Fewbricks" and we don't need that when building the path // Yes, by not checking of the file exists, we do get ugly error messages but we save some execution time. /** @noinspection PhpIncludeInspection */ include __DIR__ . '/src/' . implode('/', array_slice($namespaceParts, 1)) . '.php'; @@ -40,18 +40,26 @@ } -if(class_exists('Puc_v4_Factory')) { +add_action('acf/init', function () { + \Fewbricks\Fewbricks::run(); +}); - $update_checker = Puc_v4_Factory::buildUpdateChecker( - 'https://github.com/folbert/fewbricks', - __FILE__, - 'fewbricks' - ); +if(!function_exists('fewbricks_check_version')) { - //dump($update_checker); + add_action('init', 'fewbricks_check_version'); -} + function fewbricks_check_version() + { -add_action('acf/init', function () { - \Fewbricks\Fewbricks::run(); -}); + require_once 'src/WP_AutoUpdate.php'; + + // set auto-update params + $plugin_current_version = \Fewbricks\Fewbricks::FEWBRICKS_VERSION; + $plugin_remote_path = 'https://version.fewbricks2.folbert.com/version-info.php'; + $plugin_slug = plugin_basename(__FILE__); + + new WP_AutoUpdate($plugin_current_version, $plugin_remote_path, $plugin_slug); + + } + +} diff --git a/src/Fewbricks.php b/src/Fewbricks.php index 09bf528..19d61b4 100644 --- a/src/Fewbricks.php +++ b/src/Fewbricks.php @@ -15,7 +15,7 @@ class Fewbricks /** * */ - const FEWBRICKS_VERSION = '2.0.0-alpha'; + const FEWBRICKS_VERSION = '2.0.0-alpha2'; /** * diff --git a/src/WP_AutoUpdate.php b/src/WP_AutoUpdate.php new file mode 100644 index 0000000..73c2ce7 --- /dev/null +++ b/src/WP_AutoUpdate.php @@ -0,0 +1,135 @@ +current_version = $current_version; + $this->update_path = $update_path; + + // Set the Plugin Slug + $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) || !isset($transient->checked) || empty( $transient->checked ) ) { + return $transient; + } + + // Get the remote version + $remote_version = $this->getRemote('version'); + + if(empty($remote_version)) { + return $transient; + } + + // If a newer version is available, add the update + if ( version_compare( $this->current_version, $remote_version->new_version, '<' ) ) { + $obj = new stdClass(); + $obj->slug = $this->slug; + $obj->new_version = $remote_version->new_version; + $obj->url = $remote_version->url; + $obj->plugin = $this->plugin_slug; + //$obj->package = $remote_version->package; + + if(isset($remote_version->tested)) { + $obj->tested = $remote_version->tested; + } + + $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($obj, $action, $arg) + { + if (($action=='query_plugins' || $action=='plugin_information') && + isset($arg->slug) && $arg->slug === $this->slug) { + return $this->getRemote('info'); + } + + return $obj; + } + + /** + * Return the remote version + * + * @return string $remote_version + */ + public function getRemote($action = '') + { + + $params = array( + 'body' => array( + 'action' => $action, + ), + ); + + // Make the POST request + $request = wp_remote_post($this->update_path, $params ); + + // Check if response is valid + if ( !is_wp_error( $request ) || wp_remote_retrieve_response_code( $request ) === 200 ) { + return @unserialize( $request['body'] ); + } + + return false; + } +}