use named parameters for ActionDescriptor and ValueDescriptor

master
Jean-Christian Paul Denis 2023-04-30 00:00:14 +02:00
parent b033aceed4
commit 20a8544e6a
Signed by: JcDenis
GPG Key ID: 1B5B8C5B90B6C951
12 changed files with 170 additions and 191 deletions

View File

@ -19,35 +19,24 @@ namespace Dotclear\Plugin\Uninstaller;
*/ */
class ActionDescriptor 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. * 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) public function __construct(
{ public readonly string $id,
$this->id = (string) ($description['id'] ?? 'undefined'); public readonly string $query,
$this->ns = (string) ($description['ns'] ?? ''); public readonly string $success,
$this->select = (string) ($description['select'] ?? 'undefined'); public readonly string $error,
$this->query = (string) ($description['query'] ?? 'undefined'); public readonly string $ns = '',
$this->success = (string) ($description['success'] ?? 'undefined'); public readonly string $select = ''
$this->error = (string) ($description['error'] ?? 'undefined'); ) {
} }
/** /**

View File

@ -44,21 +44,21 @@ class Caches extends AbstractCleaner
{ {
return [ return [
// delete a $ns folder and thier files. // delete a $ns folder and thier files.
new ActionDescriptor([ new ActionDescriptor(
'id' => 'delete', id: 'delete',
'select' => __('delete selected cache directories'), select: __('delete selected cache directories'),
'query' => __('delete "%s" cache directory'), query: __('delete "%s" cache directory'),
'success' => __('"%s" cache directory deleted'), success: __('"%s" cache directory deleted'),
'error' => __('Failed to delete "%s" cache directory'), error: __('Failed to delete "%s" cache directory')
]), ),
// delete $ns folder files but keep folder // delete $ns folder files but keep folder
new ActionDescriptor([ new ActionDescriptor(
'id' => 'empty', id: 'empty',
'select' => __('empty selected cache directories'), select: __('empty selected cache directories'),
'query' => __('empty "%s" cache directory'), query: __('empty "%s" cache directory'),
'success' => __('"%s" cache directory emptied'), success: __('"%s" cache directory emptied'),
'error' => __('Failed to empty "%s" cache directory'), error: __('Failed to empty "%s" cache directory')
]), ),
]; ];
} }
@ -68,7 +68,7 @@ class Caches extends AbstractCleaner
'cbfeed', 'cbfeed',
'cbtpl', 'cbtpl',
'dcrepo', 'dcrepo',
'versions' 'versions',
]; ];
} }
@ -77,9 +77,8 @@ class Caches extends AbstractCleaner
$res = []; $res = [];
foreach (self::getDirs(DC_TPL_CACHE) as $dir) { foreach (self::getDirs(DC_TPL_CACHE) as $dir) {
$res[] = new ValueDescriptor( $res[] = new ValueDescriptor(
$dir['key'], ns: $dir['key'],
'', count: (int) $dir['value']
(int) $dir['value']
); );
} }

View File

@ -47,13 +47,13 @@ class Logs extends AbstractCleaner
{ {
return [ return [
// delete all $ns log_table entries // delete all $ns log_table entries
new ActionDescriptor([ new ActionDescriptor(
'id' => 'delete_all', id: 'delete_all',
'select' => __('delete selected logs tables'), select: __('delete selected logs tables'),
'query' => __('delete "%s" logs table'), query: __('delete "%s" logs table'),
'success' => __('"%s" logs table deleted'), success: __('"%s" logs table deleted'),
'error' => __('Failed to delete "%s" logs table'), error: __('Failed to delete "%s" logs table')
]), ),
]; ];
} }
@ -84,9 +84,8 @@ class Logs extends AbstractCleaner
$res = []; $res = [];
while ($rs->fetch()) { while ($rs->fetch()) {
$res[] = new ValueDescriptor( $res[] = new ValueDescriptor(
$rs->f('log_table'), ns: (string) $rs->f('log_table'),
'', count: (int) $rs->f('counter')
(int) $rs->f('counter')
); );
} }

View File

@ -43,13 +43,13 @@ class Plugins extends AbstractCleaner
{ {
return [ return [
// delete $ns plugin folder // delete $ns plugin folder
new ActionDescriptor([ new ActionDescriptor(
'id' => 'delete', id: 'delete',
'select' => __('delete selected plugins files and directories'), select: __('delete selected plugins files and directories'),
'query' => __('delete "%s" plugin files and directories'), query: __('delete "%s" plugin files and directories'),
'success' => __('"%s" plugin files and directories deleted'), success: __('"%s" plugin files and directories deleted'),
'error' => __('Failed to delete "%s" plugin files and directories'), error: __('Failed to delete "%s" plugin files and directories')
]), ),
]; ];
} }
@ -66,9 +66,8 @@ class Plugins extends AbstractCleaner
$res = []; $res = [];
foreach ($dirs as $dir) { foreach ($dirs as $dir) {
$res[] = new ValueDescriptor( $res[] = new ValueDescriptor(
$dir['key'], ns: $dir['key'],
'', count: (int) $dir['value']
(int) $dir['value']
); );
} }

View File

@ -47,36 +47,36 @@ class Preferences extends AbstractCleaner
{ {
return [ return [
// delete global $ns preferences workspace // delete global $ns preferences workspace
new ActionDescriptor([ new ActionDescriptor(
'id' => 'delete_global', id: 'delete_global',
'select' => __('delete selected global preferences workspaces'), select: __('delete selected global preferences workspaces'),
'query' => __('delete "%s" global preferences workspace'), query: __('delete "%s" global preferences workspace'),
'success' => __('"%s" global preferences workspace deleted'), success: __('"%s" global preferences workspace deleted'),
'error' => __('Failed to delete "%s" global preferences workspace'), error: __('Failed to delete "%s" global preferences workspace')
]), ),
// delete users $ns preferences workspace // delete users $ns preferences workspace
new ActionDescriptor([ new ActionDescriptor(
'id' => 'delete_local', id: 'delete_local',
'select' => __('delete selected users preferences workspaces'), select: __('delete selected users preferences workspaces'),
'query' => __('delete "%s" users preferences workspace'), query: __('delete "%s" users preferences workspace'),
'success' => __('"%s" users preferences workspace deleted'), success: __('"%s" users preferences workspace deleted'),
'error' => __('Failed to delete "%s" users preferences workspace'), error: __('Failed to delete "%s" users preferences workspace')
]), ),
// delete user and global $ns preferences workspace // delete user and global $ns preferences workspace
new ActionDescriptor([ new ActionDescriptor(
'id' => 'delete_all', id: 'delete_all',
'select' => __('delete selected preferences workspaces'), select: __('delete selected preferences workspaces'),
'query' => __('delete "%s" preferences workspace'), query: __('delete "%s" preferences workspace'),
'success' => __('"%s" preferences workspace deleted'), success: __('"%s" preferences workspace deleted'),
'error' => __('Failed to delete "%s" preferences workspace'), 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 // delete users and globals specific $ws:$id settings using 'pref_ws:pref_id;pref_ws:pref_id;' as $ns
new ActionDescriptor([ new ActionDescriptor(
'id' => 'delete_related', id: 'delete_related',
'query' => __('delete related preferences'), query: __('delete related preferences'),
'success' => __('related preferences deleted'), success: __('related preferences deleted'),
'error' => __('Failed to delete related preferences'), error: __('Failed to delete related preferences')
]), ),
]; ];
} }
@ -112,9 +112,8 @@ class Preferences extends AbstractCleaner
$res = []; $res = [];
while ($rs->fetch()) { while ($rs->fetch()) {
$res[] = new ValueDescriptor( $res[] = new ValueDescriptor(
$rs->f('pref_ws'), ns: (string) $rs->f('pref_ws'),
'', count: (int) $rs->f('counter')
(int) $rs->f('counter')
); );
} }
@ -141,9 +140,8 @@ class Preferences extends AbstractCleaner
$res = []; $res = [];
while ($rs->fetch()) { while ($rs->fetch()) {
$res[] = new ValueDescriptor( $res[] = new ValueDescriptor(
$ns, id: (string) $rs->f('pref_id'),
$rs->f('pref_id'), count: (int) $rs->f('counter')
(int) $rs->f('counter')
); );
} }

View File

@ -47,36 +47,36 @@ class Settings extends AbstractCleaner
{ {
return [ return [
// delete global $ns settings namespace // delete global $ns settings namespace
new ActionDescriptor([ new ActionDescriptor(
'id' => 'delete_global', id: 'delete_global',
'select' => __('delete selected global settings namespaces'), select: __('delete selected global settings namespaces'),
'query' => __('delete "%s" global settings namespace'), query: __('delete "%s" global settings namespace'),
'success' => __('"%s" global settings namespace deleted'), success: __('"%s" global settings namespace deleted'),
'error' => __('Failed to delete "%s" global settings namespace'), error: __('Failed to delete "%s" global settings namespace')
]), ),
// delete blogs $ns settings namespace // delete blogs $ns settings namespace
new ActionDescriptor([ new ActionDescriptor(
'id' => 'delete_local', id: 'delete_local',
'select' => __('delete selected blog settings namespaces'), select: __('delete selected blog settings namespaces'),
'query' => __('delete "%s" blog settings namespace'), query: __('delete "%s" blog settings namespace'),
'success' => __('"%s" blog settings namespace deleted'), success: __('"%s" blog settings namespace deleted'),
'error' => __('Failed to delete "%s" blog settings namespace'), error: __('Failed to delete "%s" blog settings namespace')
]), ),
// delete blogs and global settings namespace // delete blogs and global settings namespace
new ActionDescriptor([ new ActionDescriptor(
'id' => 'delete_all', id: 'delete_all',
'select' => __('delete selected settings namespaces'), select: __('delete selected settings namespaces'),
'query' => __('delete "%s" settings namespace'), query: __('delete "%s" settings namespace'),
'success' => __('"%s" settings namespace deleted'), success: __('"%s" settings namespace deleted'),
'error' => __('Failed to delete "%s" settings namespace'), 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 // delete blogs and globals specific $ns:$id settings using 'setting_ns:setting_id;setting_ns:setting_id;' as $ns
new ActionDescriptor([ new ActionDescriptor(
'id' => 'delete_related', id: 'delete_related',
'query' => __('delete related settings'), query: __('delete related settings'),
'success' => __('related settings deleted'), success: __('related settings deleted'),
'error' => __('Failed to delete related settings'), error: __('Failed to delete related settings')
]), ),
]; ];
} }
@ -116,9 +116,8 @@ class Settings extends AbstractCleaner
$res = []; $res = [];
while ($rs->fetch()) { while ($rs->fetch()) {
$res[] = new ValueDescriptor( $res[] = new ValueDescriptor(
$rs->f('setting_ns'), ns: (string) $rs->f('setting_ns'),
'', count: (int) $rs->f('counter')
(int) $rs->f('counter')
); );
} }
@ -145,9 +144,8 @@ class Settings extends AbstractCleaner
$res = []; $res = [];
while ($rs->fetch()) { while ($rs->fetch()) {
$res[] = new ValueDescriptor( $res[] = new ValueDescriptor(
$ns, id: (string) $rs->f('setting_id'),
$rs->f('setting_id'), count: (int) $rs->f('counter')
(int) $rs->f('counter')
); );
} }

View File

@ -50,21 +50,21 @@ class Tables extends AbstractCleaner
{ {
return [ return [
// delete $ns database table // delete $ns database table
new ActionDescriptor([ new ActionDescriptor(
'id' => 'delete', id: 'delete',
'select' => __('delete selected tables'), select: __('delete selected tables'),
'query' => __('delete "%s" table'), query: __('delete "%s" table'),
'success' => __('"%s" table deleted'), success: __('"%s" table deleted'),
'error' => __('Failed to delete "%s" table'), error: __('Failed to delete "%s" table')
]), ),
// truncate (empty) $ns database table // truncate (empty) $ns database table
new ActionDescriptor([ new ActionDescriptor(
'id' => 'empty', id: 'empty',
'select' => __('empty selected tables'), select: __('empty selected tables'),
'query' => __('empty "%s" table'), query: __('empty "%s" table'),
'success' => __('"%s" table emptied'), success: __('"%s" table emptied'),
'error' => __('Failed to empty "%s" table'), error: __('Failed to empty "%s" table')
]), ),
]; ];
} }
@ -109,9 +109,8 @@ class Tables extends AbstractCleaner
$sql = new SelectStatement(); $sql = new SelectStatement();
$res[] = new ValueDescriptor( $res[] = new ValueDescriptor(
$v, ns: (string) $v,
'', count: (int) $sql->from($tables[$k])->fields([$sql->count('*')])->select()?->f(0)
(int) $sql->from($tables[$k])->fields([$sql->count('*')])->select()?->f(0)
); );
} }

View File

@ -44,13 +44,13 @@ class Themes extends AbstractCleaner
{ {
return [ return [
// delete $ns theme folder // delete $ns theme folder
new ActionDescriptor([ new ActionDescriptor(
'id' => 'delete', id: 'delete',
'select' => __('delete selected themes files and directories'), select: __('delete selected themes files and directories'),
'query' => __('delete "%s" theme files and directories'), query: __('delete "%s" theme files and directories'),
'success' => __('"%s" theme files and directories deleted'), success: __('"%s" theme files and directories deleted'),
'error' => __('Failed to delete "%s" theme files and directories'), error: __('Failed to delete "%s" theme files and directories')
]), ),
]; ];
} }
@ -71,9 +71,8 @@ class Themes extends AbstractCleaner
$res = []; $res = [];
foreach ($dirs as $dir) { foreach ($dirs as $dir) {
$res[] = new ValueDescriptor( $res[] = new ValueDescriptor(
$dir['key'], ns: $dir['key'],
'', count: (int) $dir['value']
(int) $dir['value']
); );
} }

View File

@ -44,13 +44,13 @@ class Vars extends AbstractCleaner
{ {
return [ return [
// delete a $ns folder and their files // delete a $ns folder and their files
new ActionDescriptor([ new ActionDescriptor(
'id' => 'delete', id: 'delete',
'select' => __('delete selected var directories'), select: __('delete selected var directories'),
'query' => __('delete "%s" var directory'), query: __('delete "%s" var directory'),
'success' => __('"%s" var directory deleted'), success: __('"%s" var directory deleted'),
'error' => __('Failed to delete "%s" var directory'), error: __('Failed to delete "%s" var directory')
]), ),
]; ];
} }
@ -64,9 +64,8 @@ class Vars extends AbstractCleaner
$res = []; $res = [];
foreach (self::getDirs(DC_VAR) as $dir) { foreach (self::getDirs(DC_VAR) as $dir) {
$res[] = new ValueDescriptor( $res[] = new ValueDescriptor(
$dir['key'], ns: $dir['key'],
'', count: (int) $dir['value']
(int) $dir['value']
); );
} }

View File

@ -43,13 +43,13 @@ class Versions extends AbstractCleaner
{ {
return [ return [
// delete $ns version // delete $ns version
new ActionDescriptor([ new ActionDescriptor(
'id' => 'delete', id: 'delete',
'select' => __('delete selected versions numbers'), select: __('delete selected versions numbers'),
'query' => __('delete "%s" version number'), query: __('delete "%s" version number'),
'success' => __('"%s" version number deleted'), success: __('"%s" version number deleted'),
'error' => __('Failed to delete "%s" version number'), error: __('Failed to delete "%s" version number')
]), ),
]; ];
} }
@ -85,9 +85,9 @@ class Versions extends AbstractCleaner
$res = []; $res = [];
while ($rs->fetch()) { while ($rs->fetch()) {
$res[] = new ValueDescriptor( $res[] = new ValueDescriptor(
$rs->f('module'), ns: (string) $rs->f('module'),
$rs->f('version'), id: (string) $rs->f('version'),
1 count: 1
); );
} }

View File

@ -257,13 +257,13 @@ class Uninstaller
} }
// fill action properties // fill action properties
$this->actions[$group][$this->module->getId()][$cleaner][] = new ActionDescriptor([ $this->actions[$group][$this->module->getId()][$cleaner][] = new ActionDescriptor(
'id' => $action, id: $action,
'ns' => $ns, ns: $ns,
'select' => $this->cleaners->get($cleaner)->actions[$action]->select, select: $this->cleaners->get($cleaner)->actions[$action]->select,
'query' => sprintf($this->cleaners->get($cleaner)->actions[$action]->query, $ns), query: sprintf($this->cleaners->get($cleaner)->actions[$action]->query, $ns),
'success' => sprintf($this->cleaners->get($cleaner)->actions[$action]->success, $ns), success: sprintf($this->cleaners->get($cleaner)->actions[$action]->success, $ns),
'error' => sprintf($this->cleaners->get($cleaner)->actions[$action]->error, $ns), error: sprintf($this->cleaners->get($cleaner)->actions[$action]->error, $ns),
]); );
} }
} }

View File

@ -30,9 +30,9 @@ class ValueDescriptor
* @param int $count The count of ID on the namespace * @param int $count The count of ID on the namespace
*/ */
public function __construct( public function __construct(
public readonly string $ns, public readonly string $ns = '',
public readonly string $id, public readonly string $id = '',
public readonly int $count, public readonly int $count = 0,
) { ) {
} }