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
{
/** @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 = ''
) {
}
/**

View File

@ -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']
);
}

View File

@ -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')
);
}

View File

@ -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']
);
}

View File

@ -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')
);
}

View File

@ -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')
);
}

View File

@ -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)
);
}

View File

@ -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']
);
}

View File

@ -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']
);
}

View File

@ -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
);
}

View File

@ -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),
);
}
}

View File

@ -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,
) {
}