1
0
mirror of https://github.com/flextype/flextype.git synced 2025-08-24 05:43:10 +02:00

refactor(core): refactor Plugins API #186

This commit is contained in:
Awilum
2019-09-03 14:33:46 +03:00
parent bccae2e96c
commit 43ebf69e85

View File

@@ -44,7 +44,14 @@ class Plugins
$this->locales = Parser::decode(Filesystem::read(ROOT_DIR . '/flextype/config/locales.yaml'), 'yaml');
}
public function getLocales()
/**
* Get locales
*
* @return array
*
* @access public
*/
public function getLocales() : array
{
return $this->locales;
}
@@ -86,9 +93,9 @@ class Plugins
// If Plugins List isnt empty
if (is_array($plugins_list) && count($plugins_list) > 0) {
// Init plugin configs
$_plugins_config = [];
$plugins = [];
$plugin_settings = [];
$plugin_config = [];
$plugin_manifest = [];
// Go through...
foreach ($plugins_list as $plugin) {
@@ -100,29 +107,29 @@ class Plugins
$plugin_settings = Parser::decode($content, 'yaml');
}
if (Filesystem::has($_plugin_config = PATH['plugins'] . '/' . $plugin['dirname'] . '/plugin.yaml')) {
if (($content = Filesystem::read($_plugin_config)) === false) {
throw new RuntimeException('Load file: ' . $_plugin_config . ' - failed!');
if (Filesystem::has($_plugin_manifest = PATH['plugins'] . '/' . $plugin['dirname'] . '/plugin.yaml')) {
if (($content = Filesystem::read($_plugin_manifest)) === false) {
throw new RuntimeException('Load file: ' . $_plugin_manifest . ' - failed!');
}
$plugin_config = Parser::decode($content, 'yaml');
$plugin_manifest = Parser::decode($content, 'yaml');
}
$_plugins_config[$plugin['dirname']] = array_merge($plugin_settings, $plugin_config);
$plugins[$plugin['dirname']] = array_merge($plugin_settings, $plugin_manifest);
// Set default plugin priority 0
if (isset($_plugins_config[$plugin['dirname']]['priority'])) {
if (isset($plugins[$plugin['dirname']]['priority'])) {
continue;
}
$_plugins_config[$plugin['dirname']]['priority'] = 0;
$plugins[$plugin['dirname']]['priority'] = 0;
}
// Sort plugins list by priority.
$_plugins_config = Arr::sort($_plugins_config, 'priority', 'DESC');
$plugins = Arr::sort($plugins, 'priority', 'DESC');
$this->flextype['registry']->set('plugins', $_plugins_config);
$this->flextype['cache']->save($plugins_cache_id, $_plugins_config);
$this->flextype['registry']->set('plugins', $plugins);
$this->flextype['cache']->save($plugins_cache_id, $plugins);
}
}
@@ -178,11 +185,11 @@ class Plugins
if (is_array($plugins_list) && count($plugins_list) > 0) {
foreach ($plugins_list as $plugin) {
if (! Filesystem::has($_plugin_settings = PATH['plugins'] . '/' . $plugin['dirname'] . '/settings.yaml') or
! Filesystem::has($_plugin_config = PATH['plugins'] . '/' . $plugin['dirname'] . '/plugin.yaml')) {
! Filesystem::has($_plugin_manifest = PATH['plugins'] . '/' . $plugin['dirname'] . '/plugin.yaml')) {
continue;
}
$_plugins_cache_id .= filemtime($_plugin_settings) . filemtime($_plugin_config);
$_plugins_cache_id .= filemtime($_plugin_settings) . filemtime($_plugin_manifest);
}
}