1
0
mirror of https://github.com/flextype/flextype.git synced 2025-08-27 06:54:31 +02:00

feat(core): improve dependencies validation for Plugins API #411

This commit is contained in:
Awilum
2020-05-04 19:49:55 +03:00
parent cb06e726c9
commit 5d5b1f3fe2

View File

@@ -266,8 +266,11 @@ class Plugins
// Set verified plugins array
$verified_plugins = [];
// Set non verfied plugins
$non_verified_plugins = $plugins;
// Go through plugins list and verify them.
foreach ($plugins as $plugin_name => $plugin_data) {
foreach ($plugins as $plugin_name => &$plugin_data) {
// Set verified true by default
$verified = true;
@@ -286,6 +289,7 @@ class Plugins
// Remove plugin where it is require this dependency
foreach ($plugins as $_plugin_name => $_plugin_data) {
if ($_plugin_data['manifest']['dependencies'][$plugin_name]) {
unset($plugins[$_plugin_name]);
unset($verified_plugins[$_plugin_name]);
}
}
@@ -299,6 +303,7 @@ class Plugins
// Remove plugin where it is require this dependency
foreach ($plugins as $_plugin_name => $_plugin_data) {
if ($_plugin_data['manifest']['dependencies'][$plugin_name]) {
unset($plugins[$_plugin_name]);
unset($verified_plugins[$_plugin_name]);
}
}
@@ -312,6 +317,7 @@ class Plugins
// Remove plugin where it is require this dependency
foreach ($plugins as $_plugin_name => $_plugin_data) {
if ($_plugin_data['manifest']['dependencies'][$plugin_name]) {
unset($plugins[$_plugin_name]);
unset($verified_plugins[$_plugin_name]);
}
}
@@ -327,6 +333,18 @@ class Plugins
}
}
// Show alert if dependencies are not installed properly
$diff = array_diff_key($non_verified_plugins, $verified_plugins);
if (count($diff) > 0) {
echo '<b>The following dependencies need to be installed properly:</b>';
echo '<ul>';
foreach($diff as $plugin_name => $plugin_data) {
echo '<li>'.$plugin_name.'</li>';
}
echo '</ul>';
die();
}
// Return verified plugins list
return $verified_plugins;
}