diff options
Diffstat (limited to 'bridges/WordPressPluginUpdateBridge.php')
-rw-r--r-- | bridges/WordPressPluginUpdateBridge.php | 120 |
1 files changed, 61 insertions, 59 deletions
diff --git a/bridges/WordPressPluginUpdateBridge.php b/bridges/WordPressPluginUpdateBridge.php index 272022dd..a092d72f 100644 --- a/bridges/WordPressPluginUpdateBridge.php +++ b/bridges/WordPressPluginUpdateBridge.php @@ -1,62 +1,64 @@ <?php -final class WordPressPluginUpdateBridge extends BridgeAbstract { - const MAINTAINER = 'dvikan'; - const NAME = 'WordPress Plugins Update Bridge'; - const URI = 'https://wordpress.org/plugins/'; - const DESCRIPTION = 'Returns latest updates of wordpress.org plugins.'; - - const PARAMETERS = [ - [ - // The incorrectly named pluginUrl is kept for BC - 'pluginUrl' => [ - 'name' => 'Plugin slug', - 'exampleValue' => 'akismet', - 'required' => true, - 'title' => 'Slug or url', - ] - ] - ]; - - public function collectData() { - $input = trim($this->getInput('pluginUrl')); - if (preg_match('#https://wordpress\.org/plugins/([\w-]+)#', $input, $m)) { - $slug = $m[1]; - } else { - $slug = str_replace(['/'], '', $input); - } - - $pluginData = self::fetchPluginData($slug); - - if ($pluginData->versions === []) { - throw new \Exception('This plugin does not have versioning data'); - } - - // We don't need trunk. I think it's the latest commit. - unset($pluginData->versions->trunk); - - foreach ($pluginData->versions as $version => $downloadUrl) { - $this->items[] = [ - 'title' => $version, - 'uri' => sprintf('https://wordpress.org/plugins/%s/#developers', $slug), - 'uid' => $downloadUrl, - ]; - } - - usort($this->items, function($a, $b) { - return version_compare($b['title'], $a['title']); - }); - } - - /** - * Fetch plugin data from wordpress.org json api - * - * https://codex.wordpress.org/WordPress.org_API#Plugins - * https://wordpress.org/support/topic/using-the-wordpress-org-api/ - */ - private static function fetchPluginData(string $slug): \stdClass - { - $api = 'https://api.wordpress.org/plugins/info/1.2/?action=plugin_information&request[slug]=%s'; - return json_decode(getContents(sprintf($api, $slug))); - } +final class WordPressPluginUpdateBridge extends BridgeAbstract +{ + const MAINTAINER = 'dvikan'; + const NAME = 'WordPress Plugins Update Bridge'; + const URI = 'https://wordpress.org/plugins/'; + const DESCRIPTION = 'Returns latest updates of wordpress.org plugins.'; + + const PARAMETERS = [ + [ + // The incorrectly named pluginUrl is kept for BC + 'pluginUrl' => [ + 'name' => 'Plugin slug', + 'exampleValue' => 'akismet', + 'required' => true, + 'title' => 'Slug or url', + ] + ] + ]; + + public function collectData() + { + $input = trim($this->getInput('pluginUrl')); + if (preg_match('#https://wordpress\.org/plugins/([\w-]+)#', $input, $m)) { + $slug = $m[1]; + } else { + $slug = str_replace(['/'], '', $input); + } + + $pluginData = self::fetchPluginData($slug); + + if ($pluginData->versions === []) { + throw new \Exception('This plugin does not have versioning data'); + } + + // We don't need trunk. I think it's the latest commit. + unset($pluginData->versions->trunk); + + foreach ($pluginData->versions as $version => $downloadUrl) { + $this->items[] = [ + 'title' => $version, + 'uri' => sprintf('https://wordpress.org/plugins/%s/#developers', $slug), + 'uid' => $downloadUrl, + ]; + } + + usort($this->items, function ($a, $b) { + return version_compare($b['title'], $a['title']); + }); + } + + /** + * Fetch plugin data from wordpress.org json api + * + * https://codex.wordpress.org/WordPress.org_API#Plugins + * https://wordpress.org/support/topic/using-the-wordpress-org-api/ + */ + private static function fetchPluginData(string $slug): \stdClass + { + $api = 'https://api.wordpress.org/plugins/info/1.2/?action=plugin_information&request[slug]=%s'; + return json_decode(getContents(sprintf($api, $slug))); + } } |