Commit Graph

208 Commits

Author SHA1 Message Date
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
Yahnis Elsts ed9d8be9e5 Add Persian translation. Props to @Pro-Style
Closes #72
2016-10-29 12:17:41 +03:00
Yahnis Elsts 73852adb2d Fix parsing of "= version =" headers in readme.txt
The readme.txt format that's used by WordPress is not quite standard Markdown. It includes a couple of features that are not directly supported by popular Markdown parsers. One of those features is parsing "= string =" as "<h4>string</h4>" (the opening "=" must be at the start of the line). Leading whitespace is allowed. This syntax is typically for plugin version numbers in the changelog section.

The problem: the readme parser discards leading whitespace when parsing these headers. This means it can also discard the previous line break character(s). As a result, this markup:
 
 * abc
 
 = 1.2.3 =
 * def
 
 Becomes this:
 
 * abc
 <h4>1.2.3</h4>
 * def
 
 The way that Parsedown handles this markup is to make the H4 a part of the preceding list item. And that's a bug. 
   
 Fixed by keeping leading whitespace instead of throwing it away.

Closes #68
2016-09-14 19:42:09 +03:00
Yahnis Elsts ad3a7a9c2f Merge pull request #65 from rvola/master
Correction Language FR
2016-08-07 13:22:15 +03:00
Nicolas GEHIN ccdc247193 Correction Language FR
plugin > extension
changelog > journal de mise à jour
2016-08-04 21:09:48 +02:00
Yahnis Elsts 4e2ad11aee Minor: Fix line separators 2016-07-28 11:08:49 +03:00
Yahnis Elsts 1b0d2b464b Merge pull request #63 from LastElb/master
Added German translation
2016-06-30 19:04:21 +03:00