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:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user