Commit Graph

214 Commits

Author SHA1 Message Date
Yahnis Elsts 385ecf8df4 Fix pre-WP 4.7 compatibility.
get_user_locale() is not available in older WordPress versions. Also, according to WP docs, load_plugin_textdomain (and, presumably, its siblings) should be called in `init` or later.
2017-01-12 11:36:35 +02:00
Yahnis Elsts 0d5de0d4cc Fix zip error when installing update from a private BitBucket repository.
The code that updates the OAuth signature didn't account for the fact that the oauth_signature query parameter would end up in the wrong place. Instead of being sorted alphabetically with the rest of parameters, it must be the *last* one.
2017-01-11 22:17:49 +02:00
Yahnis Elsts 5d60e87cb6 Fix version number parsing.
The code that checks if the first character is a number was just plain wrong. It checked if the whole string is numeric.
2017-01-11 22:15:37 +02:00
Yahnis Elsts e1be09dc44 Move blog post link down to the "resources" because it's outdated 2017-01-11 11:19:20 +02:00
Yahnis Elsts 911d4cf7a0 Minor documentation updates 2017-01-10 18:08:25 +02:00
Yahnis Elsts 6ba1aeb362 Minor: Move condition so that the fixDirectoryName filter never gets called if there's no valid directory name. 2017-01-10 17:05:07 +02:00
Yahnis Elsts d71578067d Minor: Rename parameter to $collection because it accepts both arrays and objects 2017-01-10 16:20:33 +02:00
Yahnis Elsts 4f1ec59f98 Remove unused property 2017-01-10 16:20:01 +02:00
Yahnis Elsts 57df68d407 Extract state storage as a new class.
Lazy-loading is a bit messy. Could it be improved with magic __get() and __set()?
2017-01-10 15:25:36 +02:00
Yahnis Elsts 844516d1f5 Treat null entries as non-existent. Add a startsWith() method.
This is necessary to avoid fatal errors when trying to retrieve existing but inaccessible properties (i.e. private or protected).
2017-01-10 13:13:01 +02:00
Yahnis Elsts aeeda3c330 Reduce code duplication by moving most similar code from requestUpdate and requestInfo into a new method: requestMetadata. 2017-01-06 10:40:42 +02:00
Yahnis Elsts 1905ed84dd Add API client class name to the debug panel. 2017-01-03 13:37:43 +02:00
Yahnis Elsts 1e709c6199 Add branch name and authentication state (on/off) to the Debug Bar panel.
There's some code duplication here. Unpleasant.
2017-01-03 13:22:38 +02:00
Yahnis Elsts 06eba37b27 Remove unused parameter.
Move stable tag detection to a method.
Make null-comparison explicit in the factory.
2017-01-01 14:25:18 +02:00
Yahnis Elsts b74182cb47 Minor: Simplify maybeCheckForUpdates.
We don't need to check if $state is empty; isset() suffices.
2016-12-31 21:10:48 +02:00
Yahnis Elsts b1fce3c2f4 Minor: Update PHPDoc to show that $update can be null (i.e. no update available). 2016-12-31 14:19:10 +02:00
Yahnis Elsts 13ca09ed1c Explicitly allow null input to Utils::get(). It just returns $default. 2016-12-31 14:17:24 +02:00
Yahnis Elsts e9b377e999 Simplify VCS-based theme checker. 2016-12-31 14:12:17 +02:00
Yahnis Elsts 870901b1f2 Let themes hosted on BitBucket use the "Stable tag" header to specify the latest version. 2016-12-31 13:46:10 +02:00
Yahnis Elsts 0e67e4c588 Extract VCS service detection as a method 2016-12-30 21:08:50 +02:00
Yahnis Elsts 36ef731e4f Remove redundant if condition.
is_object(null) is false, so we don't need a separate empty($state) condition.
2016-12-30 19:44:00 +02:00
Yahnis Elsts 8e5bc8c321 Extract translation filter as a method. 2016-12-30 19:29:28 +02:00
Yahnis Elsts fd78fc9250 Fix spacing of code examples 2016-12-30 15:53:13 +02:00
Yahnis Elsts 635ca65604 Add table of contents and rename some headings 2016-12-30 15:51:11 +02:00
Yahnis Elsts 592453cffb Update description and add JSON examples 2016-12-30 13:28:13 +02:00
Yahnis Elsts 6e31d27187 Minor: Rename and comment.
Apparently "latest compatible version" is a more common expression than "greatest compatible version". Also, lets move away from the idea of using the factory class to build anything other than update checker instances; it's probably not necessary.
2016-12-28 22:12:32 +02:00
Yahnis Elsts 35a04faee6 Apparently BitBucket downloads only work over HTTPS.
Lest build the download URL from scratch to ensure that the correct protocol is used.
2016-12-28 18:17:11 +02:00
Yahnis Elsts 3004e10f75 Add a way to filter the HTTP options used when making GitHub/BitBucket API requests.
Example: 
 
 $updateChecker->addHttpRequestArgFilter('my_callback');
 
 function my_callback($options) {
     $options['timeout'] = 30;
     return $options;
 }
2016-12-28 17:15:42 +02:00
Yahnis Elsts f41dc30d28 Minor fixes and some comments 2016-12-28 16:09:28 +02:00
Yahnis Elsts cdf2d22243 Refactoring GitHub and BitBucket support.
Move most GitHub and BitBucket stuff to a general "VCS checker" class and put service-specific logic in API classes that follow a common interface.

Rationale: Upon further reflection, there's no need to have different theme & plugin checker implementations for each Git hosting service. The overall update detection algorithm stays the same. Only the API and authentication are different. 
 
 Not entirely happy with the code duplication in Vcs_PluginUpdateChecker and Vcs_ThemeUpdateChecker. Traits would be one solution, but can't use that in PHP 5.2. There's probably a "good enough" way to achieve the same thing through composition, but I haven't figured it out yet. 
 
 For private GH repositories, use setAuthentication('access_token_here') instead of setAccessToken().
2016-12-27 18:03:06 +02:00
Yahnis Elsts cde890f5d4 Minor: Update comments. 2016-12-24 16:03:58 +02:00
Yahnis Elsts f62a3d40fe Simplify tag sorting.
We don't need two different implementation for GitHub and BitBucket, they use the same property name. But lets make the property configurable anyway in case other APIs do differ.
2016-12-24 15:14:34 +02:00
Yahnis Elsts 365792edde Refactor BitBucket and GitHub checkers to be more similar.
In the future, it would probably be possible to add a general base class for repository-based updates.
2016-12-24 15:04:25 +02:00
Yahnis Elsts f64c3170cc BitBucket support is now semi-usable.
More testing required. Could probably refactor to reduce duplication; lots of overlap with GitHub integration.
2016-12-22 19:10:05 +02:00
Yahnis Elsts 3692f5201e Fix autoloading of files in the "vendor" subdirectory.
I was using the wrong directory path, oops.
2016-12-22 18:49:51 +02:00
Yahnis Elsts 5b427b4e28 Minor: Fix typo in a comment. 2016-12-22 16:05:15 +02:00
Yahnis Elsts 55077f4a03 WIP: BitBucket support. Not usable yet! 2016-12-20 17:06:14 +02:00
Yahnis Elsts 16ab2457df Support themes hosted on GitHub.
What should "View version 1.2.3 details" link to? Theme URI, the changelog, the release, or the repository itself?
2016-12-19 19:26:34 +02:00
Yahnis Elsts f1e59b183c Rename DebugBar AJAX actions to prevent conflicts with previous versions. 2016-12-19 19:05:06 +02:00
Yahnis Elsts 8c7b3f80d6 Improve upgrade-in-progress detection for themes. In WP 4.6, AJAX-based upgrades use a different skin that was previously not supported. 2016-12-19 18:41:37 +02:00
Yahnis Elsts 0cd1c51c57 Autoload Parsedown and the readme parser.
Refactor requestUpdate() filtering.
Rename getFilterName to getUniqueName because it's used for more than just filter names.
Added  a couple of utility methods.
2016-12-17 19:04:52 +02:00
Yahnis Elsts 3e11878ac8 DebugBar integration for themes.
Change filter structure from puc_/tuc_* to puc_tag_[theme]-$slug. Not happy with that yet.
Fix a bunch of minor bugs.
2016-12-17 17:57:27 +02:00
Yahnis Elsts 2a176fc665 Move update injection and directory name fixes to the base UpdateChecker class. 2016-12-16 17:53:15 +02:00
Yahnis Elsts f5ae142e63 Translation, localization. Fix a bunch of crashes. 2016-12-14 21:13:51 +02:00
Yahnis Elsts 26c24167ab WIP: Theme updates.
- Refactor the scheduler so that it can be used in themes.
- Add state storage to the base update checker.
- Move the "allow metadata host" workaround to the base class.
- Rename cron hook from "check_plugin_updates-$slug" to "puc_cron_check_updates-$slug" and "tuc_cron_check_updates-$slug".
2016-12-14 11:18:58 +02:00
Yahnis Elsts 9effd33bfa WIP: Theme updates 2016-12-12 16:26:41 +02:00
Yahnis Elsts 79c2439464 Start reorganizing directory structure to comply with PSR-0 (mostly). 2016-12-08 16:56:24 +02:00
Yahnis Elsts 38dabff869 Bump version number to 3.2 2016-12-08 12:22:54 +02:00
Yahnis Elsts 93c9d661d5 Trigger a fatal error if the plugin slug is in use.
Slugs must be unique because they're used for option names, filter names and so on. This is a potentially breaking change.
2016-11-16 12:35:52 +02:00
Yahnis Elsts 3ec4c0b56a Add a note recommending explicit slugs. 2016-11-13 13:18:05 +02:00