diff --git a/src/ActionDescriptor.php b/src/ActionDescriptor.php index d3e7c33..f59a0eb 100644 --- a/src/ActionDescriptor.php +++ b/src/ActionDescriptor.php @@ -19,35 +19,24 @@ namespace Dotclear\Plugin\Uninstaller; */ class ActionDescriptor { - /** @var string $id The action ID */ - public readonly string $id; - - /** @var string $ns The namespace (for defined action) */ - public readonly string $ns; - - /** @var string $query The generic message (used for self::values() management) */ - public readonly string $select; - - /** @var string $query The query message */ - public readonly string $query; - - /** @var string $success The succes message */ - public readonly string $success; - - /** @var string $error The error message */ - public readonly string $error; - /** * Contructor populate descriptor properties. + * + * @param string $id The action ID + * @param string $query The query message + * @param string $success The succes message + * @param string $error The error message + * @param string $ns The namespace (for defined action) + * @param string $select The generic message (used for self::values() management) */ - public function __construct(array $description) - { - $this->id = (string) ($description['id'] ?? 'undefined'); - $this->ns = (string) ($description['ns'] ?? ''); - $this->select = (string) ($description['select'] ?? 'undefined'); - $this->query = (string) ($description['query'] ?? 'undefined'); - $this->success = (string) ($description['success'] ?? 'undefined'); - $this->error = (string) ($description['error'] ?? 'undefined'); + public function __construct( + public readonly string $id, + public readonly string $query, + public readonly string $success, + public readonly string $error, + public readonly string $ns = '', + public readonly string $select = '' + ) { } /** diff --git a/src/Cleaner/Caches.php b/src/Cleaner/Caches.php index 49827b8..a68ac8d 100644 --- a/src/Cleaner/Caches.php +++ b/src/Cleaner/Caches.php @@ -24,7 +24,7 @@ use Dotclear\Plugin\Uninstaller\{ /** * Cleaner for Dotclear cache directory used by modules. * - * It allows modules to delete an entire sub folder + * It allows modules to delete an entire sub folder * of DC_TPL_CACHE directory path. */ class Caches extends AbstractCleaner @@ -44,21 +44,21 @@ class Caches extends AbstractCleaner { return [ // delete a $ns folder and thier files. - new ActionDescriptor([ - 'id' => 'delete', - 'select' => __('delete selected cache directories'), - 'query' => __('delete "%s" cache directory'), - 'success' => __('"%s" cache directory deleted'), - 'error' => __('Failed to delete "%s" cache directory'), - ]), + new ActionDescriptor( + id: 'delete', + select: __('delete selected cache directories'), + query: __('delete "%s" cache directory'), + success: __('"%s" cache directory deleted'), + error: __('Failed to delete "%s" cache directory') + ), // delete $ns folder files but keep folder - new ActionDescriptor([ - 'id' => 'empty', - 'select' => __('empty selected cache directories'), - 'query' => __('empty "%s" cache directory'), - 'success' => __('"%s" cache directory emptied'), - 'error' => __('Failed to empty "%s" cache directory'), - ]), + new ActionDescriptor( + id: 'empty', + select: __('empty selected cache directories'), + query: __('empty "%s" cache directory'), + success: __('"%s" cache directory emptied'), + error: __('Failed to empty "%s" cache directory') + ), ]; } @@ -68,7 +68,7 @@ class Caches extends AbstractCleaner 'cbfeed', 'cbtpl', 'dcrepo', - 'versions' + 'versions', ]; } @@ -77,9 +77,8 @@ class Caches extends AbstractCleaner $res = []; foreach (self::getDirs(DC_TPL_CACHE) as $dir) { $res[] = new ValueDescriptor( - $dir['key'], - '', - (int) $dir['value'] + ns: $dir['key'], + count: (int) $dir['value'] ); } diff --git a/src/Cleaner/Logs.php b/src/Cleaner/Logs.php index f2831bb..7372652 100644 --- a/src/Cleaner/Logs.php +++ b/src/Cleaner/Logs.php @@ -47,13 +47,13 @@ class Logs extends AbstractCleaner { return [ // delete all $ns log_table entries - new ActionDescriptor([ - 'id' => 'delete_all', - 'select' => __('delete selected logs tables'), - 'query' => __('delete "%s" logs table'), - 'success' => __('"%s" logs table deleted'), - 'error' => __('Failed to delete "%s" logs table'), - ]), + new ActionDescriptor( + id: 'delete_all', + select: __('delete selected logs tables'), + query: __('delete "%s" logs table'), + success: __('"%s" logs table deleted'), + error: __('Failed to delete "%s" logs table') + ), ]; } @@ -84,9 +84,8 @@ class Logs extends AbstractCleaner $res = []; while ($rs->fetch()) { $res[] = new ValueDescriptor( - $rs->f('log_table'), - '', - (int) $rs->f('counter') + ns: (string) $rs->f('log_table'), + count: (int) $rs->f('counter') ); } diff --git a/src/Cleaner/Plugins.php b/src/Cleaner/Plugins.php index 7888aed..246a9e7 100644 --- a/src/Cleaner/Plugins.php +++ b/src/Cleaner/Plugins.php @@ -43,13 +43,13 @@ class Plugins extends AbstractCleaner { return [ // delete $ns plugin folder - new ActionDescriptor([ - 'id' => 'delete', - 'select' => __('delete selected plugins files and directories'), - 'query' => __('delete "%s" plugin files and directories'), - 'success' => __('"%s" plugin files and directories deleted'), - 'error' => __('Failed to delete "%s" plugin files and directories'), - ]), + new ActionDescriptor( + id: 'delete', + select: __('delete selected plugins files and directories'), + query: __('delete "%s" plugin files and directories'), + success: __('"%s" plugin files and directories deleted'), + error: __('Failed to delete "%s" plugin files and directories') + ), ]; } @@ -66,9 +66,8 @@ class Plugins extends AbstractCleaner $res = []; foreach ($dirs as $dir) { $res[] = new ValueDescriptor( - $dir['key'], - '', - (int) $dir['value'] + ns: $dir['key'], + count: (int) $dir['value'] ); } diff --git a/src/Cleaner/Preferences.php b/src/Cleaner/Preferences.php index b43461a..a27cd5f 100644 --- a/src/Cleaner/Preferences.php +++ b/src/Cleaner/Preferences.php @@ -47,36 +47,36 @@ class Preferences extends AbstractCleaner { return [ // delete global $ns preferences workspace - new ActionDescriptor([ - 'id' => 'delete_global', - 'select' => __('delete selected global preferences workspaces'), - 'query' => __('delete "%s" global preferences workspace'), - 'success' => __('"%s" global preferences workspace deleted'), - 'error' => __('Failed to delete "%s" global preferences workspace'), - ]), + new ActionDescriptor( + id: 'delete_global', + select: __('delete selected global preferences workspaces'), + query: __('delete "%s" global preferences workspace'), + success: __('"%s" global preferences workspace deleted'), + error: __('Failed to delete "%s" global preferences workspace') + ), // delete users $ns preferences workspace - new ActionDescriptor([ - 'id' => 'delete_local', - 'select' => __('delete selected users preferences workspaces'), - 'query' => __('delete "%s" users preferences workspace'), - 'success' => __('"%s" users preferences workspace deleted'), - 'error' => __('Failed to delete "%s" users preferences workspace'), - ]), + new ActionDescriptor( + id: 'delete_local', + select: __('delete selected users preferences workspaces'), + query: __('delete "%s" users preferences workspace'), + success: __('"%s" users preferences workspace deleted'), + error: __('Failed to delete "%s" users preferences workspace') + ), // delete user and global $ns preferences workspace - new ActionDescriptor([ - 'id' => 'delete_all', - 'select' => __('delete selected preferences workspaces'), - 'query' => __('delete "%s" preferences workspace'), - 'success' => __('"%s" preferences workspace deleted'), - 'error' => __('Failed to delete "%s" preferences workspace'), - ]), + new ActionDescriptor( + id: 'delete_all', + select: __('delete selected preferences workspaces'), + query: __('delete "%s" preferences workspace'), + success: __('"%s" preferences workspace deleted'), + error: __('Failed to delete "%s" preferences workspace') + ), // delete users and globals specific $ws:$id settings using 'pref_ws:pref_id;pref_ws:pref_id;' as $ns - new ActionDescriptor([ - 'id' => 'delete_related', - 'query' => __('delete related preferences'), - 'success' => __('related preferences deleted'), - 'error' => __('Failed to delete related preferences'), - ]), + new ActionDescriptor( + id: 'delete_related', + query: __('delete related preferences'), + success: __('related preferences deleted'), + error: __('Failed to delete related preferences') + ), ]; } @@ -112,9 +112,8 @@ class Preferences extends AbstractCleaner $res = []; while ($rs->fetch()) { $res[] = new ValueDescriptor( - $rs->f('pref_ws'), - '', - (int) $rs->f('counter') + ns: (string) $rs->f('pref_ws'), + count: (int) $rs->f('counter') ); } @@ -141,9 +140,8 @@ class Preferences extends AbstractCleaner $res = []; while ($rs->fetch()) { $res[] = new ValueDescriptor( - $ns, - $rs->f('pref_id'), - (int) $rs->f('counter') + id: (string) $rs->f('pref_id'), + count: (int) $rs->f('counter') ); } diff --git a/src/Cleaner/Settings.php b/src/Cleaner/Settings.php index 8bc2f9f..1afee4f 100644 --- a/src/Cleaner/Settings.php +++ b/src/Cleaner/Settings.php @@ -47,36 +47,36 @@ class Settings extends AbstractCleaner { return [ // delete global $ns settings namespace - new ActionDescriptor([ - 'id' => 'delete_global', - 'select' => __('delete selected global settings namespaces'), - 'query' => __('delete "%s" global settings namespace'), - 'success' => __('"%s" global settings namespace deleted'), - 'error' => __('Failed to delete "%s" global settings namespace'), - ]), + new ActionDescriptor( + id: 'delete_global', + select: __('delete selected global settings namespaces'), + query: __('delete "%s" global settings namespace'), + success: __('"%s" global settings namespace deleted'), + error: __('Failed to delete "%s" global settings namespace') + ), // delete blogs $ns settings namespace - new ActionDescriptor([ - 'id' => 'delete_local', - 'select' => __('delete selected blog settings namespaces'), - 'query' => __('delete "%s" blog settings namespace'), - 'success' => __('"%s" blog settings namespace deleted'), - 'error' => __('Failed to delete "%s" blog settings namespace'), - ]), + new ActionDescriptor( + id: 'delete_local', + select: __('delete selected blog settings namespaces'), + query: __('delete "%s" blog settings namespace'), + success: __('"%s" blog settings namespace deleted'), + error: __('Failed to delete "%s" blog settings namespace') + ), // delete blogs and global settings namespace - new ActionDescriptor([ - 'id' => 'delete_all', - 'select' => __('delete selected settings namespaces'), - 'query' => __('delete "%s" settings namespace'), - 'success' => __('"%s" settings namespace deleted'), - 'error' => __('Failed to delete "%s" settings namespace'), - ]), + new ActionDescriptor( + id: 'delete_all', + select: __('delete selected settings namespaces'), + query: __('delete "%s" settings namespace'), + success: __('"%s" settings namespace deleted'), + error: __('Failed to delete "%s" settings namespace') + ), // delete blogs and globals specific $ns:$id settings using 'setting_ns:setting_id;setting_ns:setting_id;' as $ns - new ActionDescriptor([ - 'id' => 'delete_related', - 'query' => __('delete related settings'), - 'success' => __('related settings deleted'), - 'error' => __('Failed to delete related settings'), - ]), + new ActionDescriptor( + id: 'delete_related', + query: __('delete related settings'), + success: __('related settings deleted'), + error: __('Failed to delete related settings') + ), ]; } @@ -116,9 +116,8 @@ class Settings extends AbstractCleaner $res = []; while ($rs->fetch()) { $res[] = new ValueDescriptor( - $rs->f('setting_ns'), - '', - (int) $rs->f('counter') + ns: (string) $rs->f('setting_ns'), + count: (int) $rs->f('counter') ); } @@ -145,9 +144,8 @@ class Settings extends AbstractCleaner $res = []; while ($rs->fetch()) { $res[] = new ValueDescriptor( - $ns, - $rs->f('setting_id'), - (int) $rs->f('counter') + id: (string) $rs->f('setting_id'), + count: (int) $rs->f('counter') ); } diff --git a/src/Cleaner/Tables.php b/src/Cleaner/Tables.php index f9259d8..c45e7fb 100644 --- a/src/Cleaner/Tables.php +++ b/src/Cleaner/Tables.php @@ -50,21 +50,21 @@ class Tables extends AbstractCleaner { return [ // delete $ns database table - new ActionDescriptor([ - 'id' => 'delete', - 'select' => __('delete selected tables'), - 'query' => __('delete "%s" table'), - 'success' => __('"%s" table deleted'), - 'error' => __('Failed to delete "%s" table'), - ]), + new ActionDescriptor( + id: 'delete', + select: __('delete selected tables'), + query: __('delete "%s" table'), + success: __('"%s" table deleted'), + error: __('Failed to delete "%s" table') + ), // truncate (empty) $ns database table - new ActionDescriptor([ - 'id' => 'empty', - 'select' => __('empty selected tables'), - 'query' => __('empty "%s" table'), - 'success' => __('"%s" table emptied'), - 'error' => __('Failed to empty "%s" table'), - ]), + new ActionDescriptor( + id: 'empty', + select: __('empty selected tables'), + query: __('empty "%s" table'), + success: __('"%s" table emptied'), + error: __('Failed to empty "%s" table') + ), ]; } @@ -109,9 +109,8 @@ class Tables extends AbstractCleaner $sql = new SelectStatement(); $res[] = new ValueDescriptor( - $v, - '', - (int) $sql->from($tables[$k])->fields([$sql->count('*')])->select()?->f(0) + ns: (string) $v, + count: (int) $sql->from($tables[$k])->fields([$sql->count('*')])->select()?->f(0) ); } diff --git a/src/Cleaner/Themes.php b/src/Cleaner/Themes.php index 4759bd2..6a4291f 100644 --- a/src/Cleaner/Themes.php +++ b/src/Cleaner/Themes.php @@ -44,13 +44,13 @@ class Themes extends AbstractCleaner { return [ // delete $ns theme folder - new ActionDescriptor([ - 'id' => 'delete', - 'select' => __('delete selected themes files and directories'), - 'query' => __('delete "%s" theme files and directories'), - 'success' => __('"%s" theme files and directories deleted'), - 'error' => __('Failed to delete "%s" theme files and directories'), - ]), + new ActionDescriptor( + id: 'delete', + select: __('delete selected themes files and directories'), + query: __('delete "%s" theme files and directories'), + success: __('"%s" theme files and directories deleted'), + error: __('Failed to delete "%s" theme files and directories') + ), ]; } @@ -71,9 +71,8 @@ class Themes extends AbstractCleaner $res = []; foreach ($dirs as $dir) { $res[] = new ValueDescriptor( - $dir['key'], - '', - (int) $dir['value'] + ns: $dir['key'], + count: (int) $dir['value'] ); } diff --git a/src/Cleaner/Vars.php b/src/Cleaner/Vars.php index e32939e..a8a24f2 100644 --- a/src/Cleaner/Vars.php +++ b/src/Cleaner/Vars.php @@ -24,7 +24,7 @@ use Dotclear\Plugin\Uninstaller\{ /** * Cleaner for Dotclear VAR directory used by modules. * - * It allows modules to delete an entire sub folder + * It allows modules to delete an entire sub folder * of DC_VAR directory path. */ class Vars extends AbstractCleaner @@ -44,13 +44,13 @@ class Vars extends AbstractCleaner { return [ // delete a $ns folder and their files - new ActionDescriptor([ - 'id' => 'delete', - 'select' => __('delete selected var directories'), - 'query' => __('delete "%s" var directory'), - 'success' => __('"%s" var directory deleted'), - 'error' => __('Failed to delete "%s" var directory'), - ]), + new ActionDescriptor( + id: 'delete', + select: __('delete selected var directories'), + query: __('delete "%s" var directory'), + success: __('"%s" var directory deleted'), + error: __('Failed to delete "%s" var directory') + ), ]; } @@ -64,9 +64,8 @@ class Vars extends AbstractCleaner $res = []; foreach (self::getDirs(DC_VAR) as $dir) { $res[] = new ValueDescriptor( - $dir['key'], - '', - (int) $dir['value'] + ns: $dir['key'], + count: (int) $dir['value'] ); } diff --git a/src/Cleaner/Versions.php b/src/Cleaner/Versions.php index cc056e8..5deb13c 100644 --- a/src/Cleaner/Versions.php +++ b/src/Cleaner/Versions.php @@ -25,7 +25,7 @@ use Dotclear\Plugin\Uninstaller\{ /** * Cleaner for Dotclear modules versions. * - * It allows modules to delete their versions + * It allows modules to delete their versions * from Dotclear dcCore::VERSION_TABLE_NAME database table. */ class Versions extends AbstractCleaner @@ -43,13 +43,13 @@ class Versions extends AbstractCleaner { return [ // delete $ns version - new ActionDescriptor([ - 'id' => 'delete', - 'select' => __('delete selected versions numbers'), - 'query' => __('delete "%s" version number'), - 'success' => __('"%s" version number deleted'), - 'error' => __('Failed to delete "%s" version number'), - ]), + new ActionDescriptor( + id: 'delete', + select: __('delete selected versions numbers'), + query: __('delete "%s" version number'), + success: __('"%s" version number deleted'), + error: __('Failed to delete "%s" version number') + ), ]; } @@ -85,9 +85,9 @@ class Versions extends AbstractCleaner $res = []; while ($rs->fetch()) { $res[] = new ValueDescriptor( - $rs->f('module'), - $rs->f('version'), - 1 + ns: (string) $rs->f('module'), + id: (string) $rs->f('version'), + count: 1 ); } diff --git a/src/Uninstaller.php b/src/Uninstaller.php index 94771b3..9279e2a 100644 --- a/src/Uninstaller.php +++ b/src/Uninstaller.php @@ -257,13 +257,13 @@ class Uninstaller } // fill action properties - $this->actions[$group][$this->module->getId()][$cleaner][] = new ActionDescriptor([ - 'id' => $action, - 'ns' => $ns, - 'select' => $this->cleaners->get($cleaner)->actions[$action]->select, - 'query' => sprintf($this->cleaners->get($cleaner)->actions[$action]->query, $ns), - 'success' => sprintf($this->cleaners->get($cleaner)->actions[$action]->success, $ns), - 'error' => sprintf($this->cleaners->get($cleaner)->actions[$action]->error, $ns), - ]); + $this->actions[$group][$this->module->getId()][$cleaner][] = new ActionDescriptor( + id: $action, + ns: $ns, + select: $this->cleaners->get($cleaner)->actions[$action]->select, + query: sprintf($this->cleaners->get($cleaner)->actions[$action]->query, $ns), + success: sprintf($this->cleaners->get($cleaner)->actions[$action]->success, $ns), + error: sprintf($this->cleaners->get($cleaner)->actions[$action]->error, $ns), + ); } } diff --git a/src/ValueDescriptor.php b/src/ValueDescriptor.php index bc51f59..3e21075 100644 --- a/src/ValueDescriptor.php +++ b/src/ValueDescriptor.php @@ -30,9 +30,9 @@ class ValueDescriptor * @param int $count The count of ID on the namespace */ public function __construct( - public readonly string $ns, - public readonly string $id, - public readonly int $count, + public readonly string $ns = '', + public readonly string $id = '', + public readonly int $count = 0, ) { }