use a CleanerDescriptor
parent
20a8544e6a
commit
1c11d73f61
|
@ -37,20 +37,12 @@ abstract class AbstractCleaner
|
|||
/**
|
||||
* Constructor set up a Cleaner.
|
||||
*/
|
||||
final public function __construct()
|
||||
public function __construct(CleanerDescriptor $descriptor)
|
||||
{
|
||||
$properties = $this->properties();
|
||||
$this->id = $properties['id'] ?? 'undefined';
|
||||
$this->name = $properties['name'] ?? 'undefined';
|
||||
$this->desc = $properties['desc'] ?? 'undefined';
|
||||
|
||||
$actions = [];
|
||||
foreach ($this->actions() as $descriptor) {
|
||||
if (is_a($descriptor, ActionDescriptor::class) && $descriptor->id != 'undefined') {
|
||||
$actions[$descriptor->id] = $descriptor;
|
||||
}
|
||||
}
|
||||
$this->actions = $actions;
|
||||
$this->id = $descriptor->id;
|
||||
$this->name = $descriptor->name;
|
||||
$this->desc = $descriptor->desc;
|
||||
$this->actions = $descriptor->actions;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -63,20 +55,6 @@ abstract class AbstractCleaner
|
|||
return $this->actions[$id] ?? null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize Cleaner properties.
|
||||
*
|
||||
* @return array<string,string> The Cleaner properties [id=>,name=>,desc=>,]
|
||||
*/
|
||||
abstract protected function properties(): array;
|
||||
|
||||
/**
|
||||
* Initialize Cleaner actions.
|
||||
*
|
||||
* @return array<int,ActionDescriptor> The Cleaner actions definitions
|
||||
*/
|
||||
abstract protected function actions(): array;
|
||||
|
||||
/**
|
||||
* Get list of distirbuted values for the cleaner.
|
||||
*
|
||||
|
|
|
@ -17,6 +17,7 @@ namespace Dotclear\Plugin\Uninstaller\Cleaner;
|
|||
use Dotclear\Plugin\Uninstaller\{
|
||||
AbstractCleaner,
|
||||
ActionDescriptor,
|
||||
CleanerDescriptor,
|
||||
TraitCleanerDir,
|
||||
ValueDescriptor
|
||||
};
|
||||
|
@ -31,35 +32,31 @@ class Caches extends AbstractCleaner
|
|||
{
|
||||
use TraitCleanerDir;
|
||||
|
||||
protected function properties(): array
|
||||
public function __construct()
|
||||
{
|
||||
return [
|
||||
'id' => 'caches',
|
||||
'name' => __('Cache'),
|
||||
'desc' => __('Folders from cache directory'),
|
||||
];
|
||||
}
|
||||
|
||||
protected function actions(): array
|
||||
{
|
||||
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')
|
||||
),
|
||||
// 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')
|
||||
),
|
||||
];
|
||||
parent::__construct(new CleanerDescriptor(
|
||||
id: 'caches',
|
||||
name: __('Cache'),
|
||||
desc: __('Folders from cache directory'),
|
||||
actions: [
|
||||
// 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')
|
||||
),
|
||||
// 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')
|
||||
),
|
||||
]
|
||||
));
|
||||
}
|
||||
|
||||
public function distributed(): array
|
||||
|
|
|
@ -23,6 +23,7 @@ use Dotclear\Database\Statement\{
|
|||
use Dotclear\Plugin\Uninstaller\{
|
||||
AbstractCleaner,
|
||||
ActionDescriptor,
|
||||
CleanerDescriptor,
|
||||
ValueDescriptor
|
||||
};
|
||||
|
||||
|
@ -34,27 +35,23 @@ use Dotclear\Plugin\Uninstaller\{
|
|||
*/
|
||||
class Logs extends AbstractCleaner
|
||||
{
|
||||
protected function properties(): array
|
||||
public function __construct()
|
||||
{
|
||||
return [
|
||||
'id' => 'logs',
|
||||
'name' => __('Logs'),
|
||||
'desc' => __('Logs in Dotclear logs table'),
|
||||
];
|
||||
}
|
||||
|
||||
protected function actions(): array
|
||||
{
|
||||
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')
|
||||
),
|
||||
];
|
||||
parent::__construct(new CleanerDescriptor(
|
||||
id: 'logs',
|
||||
name: __('Logs'),
|
||||
desc: __('Logs in Dotclear logs table'),
|
||||
actions: [
|
||||
// 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')
|
||||
),
|
||||
]
|
||||
));
|
||||
}
|
||||
|
||||
public function distributed(): array
|
||||
|
|
|
@ -17,8 +17,9 @@ namespace Dotclear\Plugin\Uninstaller\Cleaner;
|
|||
use Dotclear\Plugin\Uninstaller\{
|
||||
AbstractCleaner,
|
||||
ActionDescriptor,
|
||||
TraitCleanerDir,
|
||||
ValueDescriptor
|
||||
CleanerDescriptor,
|
||||
ValueDescriptor,
|
||||
TraitCleanerDir
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -30,27 +31,23 @@ class Plugins extends AbstractCleaner
|
|||
{
|
||||
use TraitCleanerDir;
|
||||
|
||||
protected function properties(): array
|
||||
public function __construct()
|
||||
{
|
||||
return [
|
||||
'id' => 'plugins',
|
||||
'name' => __('Plugins'),
|
||||
'desc' => __('Folders from plugins directories'),
|
||||
];
|
||||
}
|
||||
|
||||
protected function actions(): array
|
||||
{
|
||||
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')
|
||||
),
|
||||
];
|
||||
parent::__construct(new CleanerDescriptor(
|
||||
id: 'plugins',
|
||||
name: __('Plugins'),
|
||||
desc: __('Folders from plugins directories'),
|
||||
actions: [
|
||||
// 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')
|
||||
),
|
||||
]
|
||||
));
|
||||
}
|
||||
|
||||
public function distributed(): array
|
||||
|
|
|
@ -23,6 +23,7 @@ use Dotclear\Database\Statement\{
|
|||
use Dotclear\Plugin\Uninstaller\{
|
||||
AbstractCleaner,
|
||||
ActionDescriptor,
|
||||
CleanerDescriptor,
|
||||
ValueDescriptor
|
||||
};
|
||||
|
||||
|
@ -34,50 +35,46 @@ use Dotclear\Plugin\Uninstaller\{
|
|||
*/
|
||||
class Preferences extends AbstractCleaner
|
||||
{
|
||||
protected function properties(): array
|
||||
public function __construct()
|
||||
{
|
||||
return [
|
||||
'id' => 'preferences',
|
||||
'name' => __('Preferences'),
|
||||
'desc' => __('Users preferences workspaces'),
|
||||
];
|
||||
}
|
||||
|
||||
protected function actions(): array
|
||||
{
|
||||
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')
|
||||
),
|
||||
// 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')
|
||||
),
|
||||
// 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')
|
||||
),
|
||||
// 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')
|
||||
),
|
||||
];
|
||||
parent::__construct(new CleanerDescriptor(
|
||||
id: 'preferences',
|
||||
name: __('Preferences'),
|
||||
desc: __('Users preferences workspaces'),
|
||||
actions: [
|
||||
// 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')
|
||||
),
|
||||
// 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')
|
||||
),
|
||||
// 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')
|
||||
),
|
||||
// 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')
|
||||
),
|
||||
]
|
||||
));
|
||||
}
|
||||
|
||||
public function distributed(): array
|
||||
|
|
|
@ -23,6 +23,7 @@ use Dotclear\Database\Statement\{
|
|||
use Dotclear\Plugin\Uninstaller\{
|
||||
AbstractCleaner,
|
||||
ActionDescriptor,
|
||||
CleanerDescriptor,
|
||||
ValueDescriptor
|
||||
};
|
||||
|
||||
|
@ -34,50 +35,46 @@ use Dotclear\Plugin\Uninstaller\{
|
|||
*/
|
||||
class Settings extends AbstractCleaner
|
||||
{
|
||||
protected function properties(): array
|
||||
public function __construct()
|
||||
{
|
||||
return [
|
||||
'id' => 'settings',
|
||||
'name' => __('Settings'),
|
||||
'desc' => __('Namespaces registered in dcSettings'),
|
||||
];
|
||||
}
|
||||
|
||||
protected function actions(): array
|
||||
{
|
||||
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')
|
||||
),
|
||||
// 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')
|
||||
),
|
||||
// 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')
|
||||
),
|
||||
// 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')
|
||||
),
|
||||
];
|
||||
parent::__construct(new CleanerDescriptor(
|
||||
id: 'settings',
|
||||
name: __('Settings'),
|
||||
desc: __('Namespaces registered in dcSettings'),
|
||||
actions: [
|
||||
// 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')
|
||||
),
|
||||
// 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')
|
||||
),
|
||||
// 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')
|
||||
),
|
||||
// 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')
|
||||
),
|
||||
]
|
||||
));
|
||||
}
|
||||
|
||||
public function distributed(): array
|
||||
|
|
|
@ -27,6 +27,7 @@ use Dotclear\Database\Statement\{
|
|||
use Dotclear\Plugin\Uninstaller\{
|
||||
AbstractCleaner,
|
||||
ActionDescriptor,
|
||||
CleanerDescriptor,
|
||||
ValueDescriptor
|
||||
};
|
||||
|
||||
|
@ -37,35 +38,31 @@ use Dotclear\Plugin\Uninstaller\{
|
|||
*/
|
||||
class Tables extends AbstractCleaner
|
||||
{
|
||||
protected function properties(): array
|
||||
public function __construct()
|
||||
{
|
||||
return [
|
||||
'id' => 'tables',
|
||||
'name' => __('Tables'),
|
||||
'desc' => __('All database tables of Dotclear'),
|
||||
];
|
||||
}
|
||||
|
||||
protected function actions(): array
|
||||
{
|
||||
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')
|
||||
),
|
||||
// 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')
|
||||
),
|
||||
];
|
||||
parent::__construct(new CleanerDescriptor(
|
||||
id: 'tables',
|
||||
name: __('Tables'),
|
||||
desc: __('All database tables of Dotclear'),
|
||||
actions: [
|
||||
// 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')
|
||||
),
|
||||
// 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')
|
||||
),
|
||||
]
|
||||
));
|
||||
}
|
||||
|
||||
public function distributed(): array
|
||||
|
|
|
@ -18,8 +18,9 @@ use dcCore;
|
|||
use Dotclear\Plugin\Uninstaller\{
|
||||
AbstractCleaner,
|
||||
ActionDescriptor,
|
||||
TraitCleanerDir,
|
||||
ValueDescriptor
|
||||
CleanerDescriptor,
|
||||
ValueDescriptor,
|
||||
TraitCleanerDir
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -31,27 +32,23 @@ class Themes extends AbstractCleaner
|
|||
{
|
||||
use TraitCleanerDir;
|
||||
|
||||
protected function properties(): array
|
||||
public function __construct()
|
||||
{
|
||||
return [
|
||||
'id' => 'themes',
|
||||
'name' => __('Themes'),
|
||||
'desc' => __('Folders from blog themes directory'),
|
||||
];
|
||||
}
|
||||
|
||||
protected function actions(): array
|
||||
{
|
||||
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')
|
||||
),
|
||||
];
|
||||
parent::__construct(new CleanerDescriptor(
|
||||
id: 'themes',
|
||||
name: __('Themes'),
|
||||
desc: __('Folders from blog themes directory'),
|
||||
actions: [
|
||||
// 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')
|
||||
),
|
||||
]
|
||||
));
|
||||
}
|
||||
|
||||
public function distributed(): array
|
||||
|
|
|
@ -17,8 +17,9 @@ namespace Dotclear\Plugin\Uninstaller\Cleaner;
|
|||
use Dotclear\Plugin\Uninstaller\{
|
||||
AbstractCleaner,
|
||||
ActionDescriptor,
|
||||
TraitCleanerDir,
|
||||
ValueDescriptor
|
||||
CleanerDescriptor,
|
||||
ValueDescriptor,
|
||||
TraitCleanerDir
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -31,27 +32,23 @@ class Vars extends AbstractCleaner
|
|||
{
|
||||
use TraitCleanerDir;
|
||||
|
||||
protected function properties(): array
|
||||
public function __construct()
|
||||
{
|
||||
return [
|
||||
'id' => 'vars',
|
||||
'name' => __('Var'),
|
||||
'desc' => __('Folders from Dotclear VAR directory'),
|
||||
];
|
||||
}
|
||||
|
||||
protected function actions(): array
|
||||
{
|
||||
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')
|
||||
),
|
||||
];
|
||||
parent::__construct(new CleanerDescriptor(
|
||||
id: 'vars',
|
||||
name: __('Var'),
|
||||
desc: __('Folders from Dotclear VAR directory'),
|
||||
actions: [
|
||||
// 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')
|
||||
),
|
||||
]
|
||||
));
|
||||
}
|
||||
|
||||
public function distributed(): array
|
||||
|
|
|
@ -19,6 +19,7 @@ use Dotclear\Database\Statement\SelectStatement;
|
|||
use Dotclear\Plugin\Uninstaller\{
|
||||
AbstractCleaner,
|
||||
ActionDescriptor,
|
||||
CleanerDescriptor,
|
||||
ValueDescriptor
|
||||
};
|
||||
|
||||
|
@ -30,27 +31,23 @@ use Dotclear\Plugin\Uninstaller\{
|
|||
*/
|
||||
class Versions extends AbstractCleaner
|
||||
{
|
||||
protected function properties(): array
|
||||
public function __construct()
|
||||
{
|
||||
return [
|
||||
'id' => 'versions',
|
||||
'name' => __('Versions'),
|
||||
'desc' => __('Versions registered in table "version" of Dotclear'),
|
||||
];
|
||||
}
|
||||
|
||||
protected function actions(): array
|
||||
{
|
||||
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')
|
||||
),
|
||||
];
|
||||
parent::__construct(new CleanerDescriptor(
|
||||
id: 'versions',
|
||||
name: __('Versions'),
|
||||
desc: __('Versions registered in table "version" of Dotclear'),
|
||||
actions: [
|
||||
// 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')
|
||||
),
|
||||
]
|
||||
));
|
||||
}
|
||||
|
||||
public function distributed(): array
|
||||
|
|
|
@ -0,0 +1,57 @@
|
|||
<?php
|
||||
/**
|
||||
* @brief Uninstaller, a plugin for Dotclear 2
|
||||
*
|
||||
* @package Dotclear
|
||||
* @subpackage Plugin
|
||||
*
|
||||
* @author Jean-Christian Denis and Contributors
|
||||
*
|
||||
* @copyright Jean-Christian Denis
|
||||
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Dotclear\Plugin\Uninstaller;
|
||||
|
||||
/**
|
||||
* Cleaner descriptor.
|
||||
*/
|
||||
class CleanerDescriptor
|
||||
{
|
||||
/** @var array<string,ActionDescriptor> $actions The actions descriptions */
|
||||
public readonly array $actions;
|
||||
|
||||
/**
|
||||
* Contructor populate descriptor properties.
|
||||
*
|
||||
* @param string $id The cleaner ID
|
||||
* @param string $name The cleaner name
|
||||
* @param string $desc The cleaner description
|
||||
* @param array<int,ActionDescriptor> $actions The actions descriptions
|
||||
*/
|
||||
public function __construct(
|
||||
public readonly string $id,
|
||||
public readonly string $name,
|
||||
public readonly string $desc,
|
||||
array $actions
|
||||
) {
|
||||
$valid = [];
|
||||
foreach ($actions as $action) {
|
||||
if (is_a($action, ActionDescriptor::class) && $action->id != 'undefined') {
|
||||
$valid[$action->id] = $action;
|
||||
}
|
||||
}
|
||||
$this->actions = $valid;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get descriptor properties.
|
||||
*
|
||||
* @return array<string,mixed> The properties
|
||||
*/
|
||||
public function dump(): array
|
||||
{
|
||||
return get_object_vars($this);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue