diff options
Diffstat (limited to 'app/Core')
-rw-r--r-- | app/Core/Plugin/Directory.php | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/app/Core/Plugin/Directory.php b/app/Core/Plugin/Directory.php new file mode 100644 index 00000000..21f11ca9 --- /dev/null +++ b/app/Core/Plugin/Directory.php @@ -0,0 +1,56 @@ +<?php + +namespace Kanboard\Core\Plugin; + +use Kanboard\Core\Base as BaseCore; + +/** + * Class Directory + * + * @package Kanboard\Core\Plugin + * @author Frederic Guillot + */ +class Directory extends BaseCore +{ + /** + * Get all plugins available + * + * @access public + * @param string $url + * @return array + */ + public function getAvailablePlugins($url = PLUGIN_API_URL) + { + $plugins = $this->httpClient->getJson($url); + $plugins = array_filter($plugins, array($this, 'isCompatible')); + $plugins = array_filter($plugins, array($this, 'isInstallable')); + return $plugins; + } + + /** + * Filter plugins + * + * @param array $plugin + * @param string $appVersion + * @return bool + */ + public function isCompatible(array $plugin, $appVersion = APP_VERSION) + { + if (strpos($appVersion, 'master') !== false) { + return true; + } + + return $plugin['compatible_version'] === $appVersion; + } + + /** + * Filter plugins + * + * @param array $plugin + * @return bool + */ + public function isInstallable(array $plugin) + { + return $plugin['remote_install']; + } +} |