cope with disabled modules, fix #4

This commit is contained in:
Jean-Christian Paul Denis 2022-12-03 14:40:00 +01:00
parent 7e4e2ffdf5
commit a30c43b882
Signed by: JcDenis
GPG Key ID: 1B5B8C5B90B6C951
3 changed files with 28 additions and 6 deletions

View File

@ -27,6 +27,7 @@ class dcPackman
'CVS',
'.DS_Store',
'Thumbs.db',
'_disabled',
];
public static function quote_exclude(array $exclude): array

View File

@ -55,6 +55,28 @@ class libPackman
return !(empty($path) || empty($file) || !is_writable(dirname($path . '/' . $file)));
}
public static function getModules(string $type, ?string $id = null): ?array
{
$type = $type == 'themes' ? 'themes' : 'plugins';
$modules = array_merge(dcCore::app()->{$type}->getDisabledModules(), dcCore::app()->{$type}->getModules());
if (empty($id)) {
return $modules;
} elseif (array_key_exists($id, $modules)) {
return $modules[$id];
}
return null;
}
public static function moduleExists(string $type, ?string $id): bool
{
$type = $type == 'themes' ? 'themes' : 'plugins';
return array_key_exists($id, array_merge(dcCore::app()->{$type}->getDisabledModules(), dcCore::app()->{$type}->getModules()));
}
public static function modules(array $modules, string $type, string $title): ?bool
{
if (empty($modules) || !is_array($modules)) {

View File

@ -99,11 +99,11 @@ try {
# Pack
} elseif ($action == 'packup') {
foreach ($_POST['modules'] as $root => $id) {
if (!${$type}->moduleExists($id)) {
if (!libPackman::moduleExists($type, $id)) {
throw new Exception('No such module');
}
$module = ${$type}->getModules($id);
$module = libPackman::getModules($type, $id);
$module['id'] = $id;
$module['type'] = $type == 'themes' ? 'theme' : 'plugin';
@ -261,8 +261,7 @@ dcPage::notices();
if (dcCore::app()->error->flag() || !$is_configured) {
echo
'<div class="warning">' . __('pacKman is not well configured.') . ' ' .
'<a href="plugins.php?module=pacKman&amp;conf=1&amp;redir=' .
urlencode('plugin.php?p=pacKman') . '">' . __('Configuration') . '</a>' .
'<a href="' . dcCore::app()->adminurl->get('admin.plugins', ['module' => 'pacKman', 'conf' => '1', 'redir' => dcCore::app()->adminurl->get('admin.plugin.pacKman')]) . '">' . __('Configuration') . '</a>' .
'</div>';
} else {
$repo_path_modules = array_merge(
@ -273,13 +272,13 @@ if (dcCore::app()->error->flag() || !$is_configured) {
$themes_path_modules = dcPackman::getPackages($themes_path);
libPackman::modules(
$plugins->getModules(),
libPackman::getModules('plugins'),
'plugins',
__('Installed plugins')
);
libPackman::modules(
$themes->getModules(),
libPackman::getModules('themes'),
'themes',
__('Installed themes')
);