use a CleanerDescriptor
parent
20a8544e6a
commit
1c11d73f61
|
@ -37,20 +37,12 @@ abstract class AbstractCleaner
|
||||||
/**
|
/**
|
||||||
* Constructor set up a Cleaner.
|
* Constructor set up a Cleaner.
|
||||||
*/
|
*/
|
||||||
final public function __construct()
|
public function __construct(CleanerDescriptor $descriptor)
|
||||||
{
|
{
|
||||||
$properties = $this->properties();
|
$this->id = $descriptor->id;
|
||||||
$this->id = $properties['id'] ?? 'undefined';
|
$this->name = $descriptor->name;
|
||||||
$this->name = $properties['name'] ?? 'undefined';
|
$this->desc = $descriptor->desc;
|
||||||
$this->desc = $properties['desc'] ?? 'undefined';
|
$this->actions = $descriptor->actions;
|
||||||
|
|
||||||
$actions = [];
|
|
||||||
foreach ($this->actions() as $descriptor) {
|
|
||||||
if (is_a($descriptor, ActionDescriptor::class) && $descriptor->id != 'undefined') {
|
|
||||||
$actions[$descriptor->id] = $descriptor;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$this->actions = $actions;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -63,20 +55,6 @@ abstract class AbstractCleaner
|
||||||
return $this->actions[$id] ?? null;
|
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.
|
* Get list of distirbuted values for the cleaner.
|
||||||
*
|
*
|
||||||
|
|
|
@ -17,6 +17,7 @@ namespace Dotclear\Plugin\Uninstaller\Cleaner;
|
||||||
use Dotclear\Plugin\Uninstaller\{
|
use Dotclear\Plugin\Uninstaller\{
|
||||||
AbstractCleaner,
|
AbstractCleaner,
|
||||||
ActionDescriptor,
|
ActionDescriptor,
|
||||||
|
CleanerDescriptor,
|
||||||
TraitCleanerDir,
|
TraitCleanerDir,
|
||||||
ValueDescriptor
|
ValueDescriptor
|
||||||
};
|
};
|
||||||
|
@ -31,35 +32,31 @@ class Caches extends AbstractCleaner
|
||||||
{
|
{
|
||||||
use TraitCleanerDir;
|
use TraitCleanerDir;
|
||||||
|
|
||||||
protected function properties(): array
|
public function __construct()
|
||||||
{
|
{
|
||||||
return [
|
parent::__construct(new CleanerDescriptor(
|
||||||
'id' => 'caches',
|
id: 'caches',
|
||||||
'name' => __('Cache'),
|
name: __('Cache'),
|
||||||
'desc' => __('Folders from cache directory'),
|
desc: __('Folders from cache directory'),
|
||||||
];
|
actions: [
|
||||||
}
|
// delete a $ns folder and thier files.
|
||||||
|
new ActionDescriptor(
|
||||||
protected function actions(): array
|
id: 'delete',
|
||||||
{
|
select: __('delete selected cache directories'),
|
||||||
return [
|
query: __('delete "%s" cache directory'),
|
||||||
// delete a $ns folder and thier files.
|
success: __('"%s" cache directory deleted'),
|
||||||
new ActionDescriptor(
|
error: __('Failed to delete "%s" cache directory')
|
||||||
id: 'delete',
|
),
|
||||||
select: __('delete selected cache directories'),
|
// delete $ns folder files but keep folder
|
||||||
query: __('delete "%s" cache directory'),
|
new ActionDescriptor(
|
||||||
success: __('"%s" cache directory deleted'),
|
id: 'empty',
|
||||||
error: __('Failed to delete "%s" cache directory')
|
select: __('empty selected cache directories'),
|
||||||
),
|
query: __('empty "%s" cache directory'),
|
||||||
// delete $ns folder files but keep folder
|
success: __('"%s" cache directory emptied'),
|
||||||
new ActionDescriptor(
|
error: __('Failed to empty "%s" cache directory')
|
||||||
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
|
public function distributed(): array
|
||||||
|
|
|
@ -23,6 +23,7 @@ use Dotclear\Database\Statement\{
|
||||||
use Dotclear\Plugin\Uninstaller\{
|
use Dotclear\Plugin\Uninstaller\{
|
||||||
AbstractCleaner,
|
AbstractCleaner,
|
||||||
ActionDescriptor,
|
ActionDescriptor,
|
||||||
|
CleanerDescriptor,
|
||||||
ValueDescriptor
|
ValueDescriptor
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -34,27 +35,23 @@ use Dotclear\Plugin\Uninstaller\{
|
||||||
*/
|
*/
|
||||||
class Logs extends AbstractCleaner
|
class Logs extends AbstractCleaner
|
||||||
{
|
{
|
||||||
protected function properties(): array
|
public function __construct()
|
||||||
{
|
{
|
||||||
return [
|
parent::__construct(new CleanerDescriptor(
|
||||||
'id' => 'logs',
|
id: 'logs',
|
||||||
'name' => __('Logs'),
|
name: __('Logs'),
|
||||||
'desc' => __('Logs in Dotclear logs table'),
|
desc: __('Logs in Dotclear logs table'),
|
||||||
];
|
actions: [
|
||||||
}
|
// delete all $ns log_table entries
|
||||||
|
new ActionDescriptor(
|
||||||
protected function actions(): array
|
id: 'delete_all',
|
||||||
{
|
select: __('delete selected logs tables'),
|
||||||
return [
|
query: __('delete "%s" logs table'),
|
||||||
// delete all $ns log_table entries
|
success: __('"%s" logs table deleted'),
|
||||||
new ActionDescriptor(
|
error: __('Failed to delete "%s" logs table')
|
||||||
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
|
public function distributed(): array
|
||||||
|
|
|
@ -17,8 +17,9 @@ namespace Dotclear\Plugin\Uninstaller\Cleaner;
|
||||||
use Dotclear\Plugin\Uninstaller\{
|
use Dotclear\Plugin\Uninstaller\{
|
||||||
AbstractCleaner,
|
AbstractCleaner,
|
||||||
ActionDescriptor,
|
ActionDescriptor,
|
||||||
TraitCleanerDir,
|
CleanerDescriptor,
|
||||||
ValueDescriptor
|
ValueDescriptor,
|
||||||
|
TraitCleanerDir
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -30,27 +31,23 @@ class Plugins extends AbstractCleaner
|
||||||
{
|
{
|
||||||
use TraitCleanerDir;
|
use TraitCleanerDir;
|
||||||
|
|
||||||
protected function properties(): array
|
public function __construct()
|
||||||
{
|
{
|
||||||
return [
|
parent::__construct(new CleanerDescriptor(
|
||||||
'id' => 'plugins',
|
id: 'plugins',
|
||||||
'name' => __('Plugins'),
|
name: __('Plugins'),
|
||||||
'desc' => __('Folders from plugins directories'),
|
desc: __('Folders from plugins directories'),
|
||||||
];
|
actions: [
|
||||||
}
|
// delete $ns plugin folder
|
||||||
|
new ActionDescriptor(
|
||||||
protected function actions(): array
|
id: 'delete',
|
||||||
{
|
select: __('delete selected plugins files and directories'),
|
||||||
return [
|
query: __('delete "%s" plugin files and directories'),
|
||||||
// delete $ns plugin folder
|
success: __('"%s" plugin files and directories deleted'),
|
||||||
new ActionDescriptor(
|
error: __('Failed to delete "%s" plugin files and directories')
|
||||||
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
|
public function distributed(): array
|
||||||
|
|
|
@ -23,6 +23,7 @@ use Dotclear\Database\Statement\{
|
||||||
use Dotclear\Plugin\Uninstaller\{
|
use Dotclear\Plugin\Uninstaller\{
|
||||||
AbstractCleaner,
|
AbstractCleaner,
|
||||||
ActionDescriptor,
|
ActionDescriptor,
|
||||||
|
CleanerDescriptor,
|
||||||
ValueDescriptor
|
ValueDescriptor
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -34,50 +35,46 @@ use Dotclear\Plugin\Uninstaller\{
|
||||||
*/
|
*/
|
||||||
class Preferences extends AbstractCleaner
|
class Preferences extends AbstractCleaner
|
||||||
{
|
{
|
||||||
protected function properties(): array
|
public function __construct()
|
||||||
{
|
{
|
||||||
return [
|
parent::__construct(new CleanerDescriptor(
|
||||||
'id' => 'preferences',
|
id: 'preferences',
|
||||||
'name' => __('Preferences'),
|
name: __('Preferences'),
|
||||||
'desc' => __('Users preferences workspaces'),
|
desc: __('Users preferences workspaces'),
|
||||||
];
|
actions: [
|
||||||
}
|
// delete global $ns preferences workspace
|
||||||
|
new ActionDescriptor(
|
||||||
protected function actions(): array
|
id: 'delete_global',
|
||||||
{
|
select: __('delete selected global preferences workspaces'),
|
||||||
return [
|
query: __('delete "%s" global preferences workspace'),
|
||||||
// delete global $ns preferences workspace
|
success: __('"%s" global preferences workspace deleted'),
|
||||||
new ActionDescriptor(
|
error: __('Failed to delete "%s" global preferences workspace')
|
||||||
id: 'delete_global',
|
),
|
||||||
select: __('delete selected global preferences workspaces'),
|
// delete users $ns preferences workspace
|
||||||
query: __('delete "%s" global preferences workspace'),
|
new ActionDescriptor(
|
||||||
success: __('"%s" global preferences workspace deleted'),
|
id: 'delete_local',
|
||||||
error: __('Failed to delete "%s" global preferences workspace')
|
select: __('delete selected users preferences workspaces'),
|
||||||
),
|
query: __('delete "%s" users preferences workspace'),
|
||||||
// delete users $ns preferences workspace
|
success: __('"%s" users preferences workspace deleted'),
|
||||||
new ActionDescriptor(
|
error: __('Failed to delete "%s" users preferences workspace')
|
||||||
id: 'delete_local',
|
),
|
||||||
select: __('delete selected users preferences workspaces'),
|
// delete user and global $ns preferences workspace
|
||||||
query: __('delete "%s" users preferences workspace'),
|
new ActionDescriptor(
|
||||||
success: __('"%s" users preferences workspace deleted'),
|
id: 'delete_all',
|
||||||
error: __('Failed to delete "%s" users preferences workspace')
|
select: __('delete selected preferences workspaces'),
|
||||||
),
|
query: __('delete "%s" preferences workspace'),
|
||||||
// delete user and global $ns preferences workspace
|
success: __('"%s" preferences workspace deleted'),
|
||||||
new ActionDescriptor(
|
error: __('Failed to delete "%s" preferences workspace')
|
||||||
id: 'delete_all',
|
),
|
||||||
select: __('delete selected preferences workspaces'),
|
// delete users and globals specific $ws:$id settings using 'pref_ws:pref_id;pref_ws:pref_id;' as $ns
|
||||||
query: __('delete "%s" preferences workspace'),
|
new ActionDescriptor(
|
||||||
success: __('"%s" preferences workspace deleted'),
|
id: 'delete_related',
|
||||||
error: __('Failed to delete "%s" preferences workspace')
|
query: __('delete related preferences'),
|
||||||
),
|
success: __('related preferences deleted'),
|
||||||
// delete users and globals specific $ws:$id settings using 'pref_ws:pref_id;pref_ws:pref_id;' as $ns
|
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')
|
|
||||||
),
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function distributed(): array
|
public function distributed(): array
|
||||||
|
|
|
@ -23,6 +23,7 @@ use Dotclear\Database\Statement\{
|
||||||
use Dotclear\Plugin\Uninstaller\{
|
use Dotclear\Plugin\Uninstaller\{
|
||||||
AbstractCleaner,
|
AbstractCleaner,
|
||||||
ActionDescriptor,
|
ActionDescriptor,
|
||||||
|
CleanerDescriptor,
|
||||||
ValueDescriptor
|
ValueDescriptor
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -34,50 +35,46 @@ use Dotclear\Plugin\Uninstaller\{
|
||||||
*/
|
*/
|
||||||
class Settings extends AbstractCleaner
|
class Settings extends AbstractCleaner
|
||||||
{
|
{
|
||||||
protected function properties(): array
|
public function __construct()
|
||||||
{
|
{
|
||||||
return [
|
parent::__construct(new CleanerDescriptor(
|
||||||
'id' => 'settings',
|
id: 'settings',
|
||||||
'name' => __('Settings'),
|
name: __('Settings'),
|
||||||
'desc' => __('Namespaces registered in dcSettings'),
|
desc: __('Namespaces registered in dcSettings'),
|
||||||
];
|
actions: [
|
||||||
}
|
// delete global $ns settings namespace
|
||||||
|
new ActionDescriptor(
|
||||||
protected function actions(): array
|
id: 'delete_global',
|
||||||
{
|
select: __('delete selected global settings namespaces'),
|
||||||
return [
|
query: __('delete "%s" global settings namespace'),
|
||||||
// delete global $ns settings namespace
|
success: __('"%s" global settings namespace deleted'),
|
||||||
new ActionDescriptor(
|
error: __('Failed to delete "%s" global settings namespace')
|
||||||
id: 'delete_global',
|
),
|
||||||
select: __('delete selected global settings namespaces'),
|
// delete blogs $ns settings namespace
|
||||||
query: __('delete "%s" global settings namespace'),
|
new ActionDescriptor(
|
||||||
success: __('"%s" global settings namespace deleted'),
|
id: 'delete_local',
|
||||||
error: __('Failed to delete "%s" global settings namespace')
|
select: __('delete selected blog settings namespaces'),
|
||||||
),
|
query: __('delete "%s" blog settings namespace'),
|
||||||
// delete blogs $ns settings namespace
|
success: __('"%s" blog settings namespace deleted'),
|
||||||
new ActionDescriptor(
|
error: __('Failed to delete "%s" blog settings namespace')
|
||||||
id: 'delete_local',
|
),
|
||||||
select: __('delete selected blog settings namespaces'),
|
// delete blogs and global settings namespace
|
||||||
query: __('delete "%s" blog settings namespace'),
|
new ActionDescriptor(
|
||||||
success: __('"%s" blog settings namespace deleted'),
|
id: 'delete_all',
|
||||||
error: __('Failed to delete "%s" blog settings namespace')
|
select: __('delete selected settings namespaces'),
|
||||||
),
|
query: __('delete "%s" settings namespace'),
|
||||||
// delete blogs and global settings namespace
|
success: __('"%s" settings namespace deleted'),
|
||||||
new ActionDescriptor(
|
error: __('Failed to delete "%s" settings namespace')
|
||||||
id: 'delete_all',
|
),
|
||||||
select: __('delete selected settings namespaces'),
|
// delete blogs and globals specific $ns:$id settings using 'setting_ns:setting_id;setting_ns:setting_id;' as $ns
|
||||||
query: __('delete "%s" settings namespace'),
|
new ActionDescriptor(
|
||||||
success: __('"%s" settings namespace deleted'),
|
id: 'delete_related',
|
||||||
error: __('Failed to delete "%s" settings namespace')
|
query: __('delete related settings'),
|
||||||
),
|
success: __('related settings deleted'),
|
||||||
// delete blogs and globals specific $ns:$id settings using 'setting_ns:setting_id;setting_ns:setting_id;' as $ns
|
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')
|
|
||||||
),
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function distributed(): array
|
public function distributed(): array
|
||||||
|
|
|
@ -27,6 +27,7 @@ use Dotclear\Database\Statement\{
|
||||||
use Dotclear\Plugin\Uninstaller\{
|
use Dotclear\Plugin\Uninstaller\{
|
||||||
AbstractCleaner,
|
AbstractCleaner,
|
||||||
ActionDescriptor,
|
ActionDescriptor,
|
||||||
|
CleanerDescriptor,
|
||||||
ValueDescriptor
|
ValueDescriptor
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -37,35 +38,31 @@ use Dotclear\Plugin\Uninstaller\{
|
||||||
*/
|
*/
|
||||||
class Tables extends AbstractCleaner
|
class Tables extends AbstractCleaner
|
||||||
{
|
{
|
||||||
protected function properties(): array
|
public function __construct()
|
||||||
{
|
{
|
||||||
return [
|
parent::__construct(new CleanerDescriptor(
|
||||||
'id' => 'tables',
|
id: 'tables',
|
||||||
'name' => __('Tables'),
|
name: __('Tables'),
|
||||||
'desc' => __('All database tables of Dotclear'),
|
desc: __('All database tables of Dotclear'),
|
||||||
];
|
actions: [
|
||||||
}
|
// delete $ns database table
|
||||||
|
new ActionDescriptor(
|
||||||
protected function actions(): array
|
id: 'delete',
|
||||||
{
|
select: __('delete selected tables'),
|
||||||
return [
|
query: __('delete "%s" table'),
|
||||||
// delete $ns database table
|
success: __('"%s" table deleted'),
|
||||||
new ActionDescriptor(
|
error: __('Failed to delete "%s" table')
|
||||||
id: 'delete',
|
),
|
||||||
select: __('delete selected tables'),
|
// truncate (empty) $ns database table
|
||||||
query: __('delete "%s" table'),
|
new ActionDescriptor(
|
||||||
success: __('"%s" table deleted'),
|
id: 'empty',
|
||||||
error: __('Failed to delete "%s" table')
|
select: __('empty selected tables'),
|
||||||
),
|
query: __('empty "%s" table'),
|
||||||
// truncate (empty) $ns database table
|
success: __('"%s" table emptied'),
|
||||||
new ActionDescriptor(
|
error: __('Failed to empty "%s" table')
|
||||||
id: 'empty',
|
),
|
||||||
select: __('empty selected tables'),
|
]
|
||||||
query: __('empty "%s" table'),
|
));
|
||||||
success: __('"%s" table emptied'),
|
|
||||||
error: __('Failed to empty "%s" table')
|
|
||||||
),
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function distributed(): array
|
public function distributed(): array
|
||||||
|
|
|
@ -18,8 +18,9 @@ use dcCore;
|
||||||
use Dotclear\Plugin\Uninstaller\{
|
use Dotclear\Plugin\Uninstaller\{
|
||||||
AbstractCleaner,
|
AbstractCleaner,
|
||||||
ActionDescriptor,
|
ActionDescriptor,
|
||||||
TraitCleanerDir,
|
CleanerDescriptor,
|
||||||
ValueDescriptor
|
ValueDescriptor,
|
||||||
|
TraitCleanerDir
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -31,27 +32,23 @@ class Themes extends AbstractCleaner
|
||||||
{
|
{
|
||||||
use TraitCleanerDir;
|
use TraitCleanerDir;
|
||||||
|
|
||||||
protected function properties(): array
|
public function __construct()
|
||||||
{
|
{
|
||||||
return [
|
parent::__construct(new CleanerDescriptor(
|
||||||
'id' => 'themes',
|
id: 'themes',
|
||||||
'name' => __('Themes'),
|
name: __('Themes'),
|
||||||
'desc' => __('Folders from blog themes directory'),
|
desc: __('Folders from blog themes directory'),
|
||||||
];
|
actions: [
|
||||||
}
|
// delete $ns theme folder
|
||||||
|
new ActionDescriptor(
|
||||||
protected function actions(): array
|
id: 'delete',
|
||||||
{
|
select: __('delete selected themes files and directories'),
|
||||||
return [
|
query: __('delete "%s" theme files and directories'),
|
||||||
// delete $ns theme folder
|
success: __('"%s" theme files and directories deleted'),
|
||||||
new ActionDescriptor(
|
error: __('Failed to delete "%s" theme files and directories')
|
||||||
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
|
public function distributed(): array
|
||||||
|
|
|
@ -17,8 +17,9 @@ namespace Dotclear\Plugin\Uninstaller\Cleaner;
|
||||||
use Dotclear\Plugin\Uninstaller\{
|
use Dotclear\Plugin\Uninstaller\{
|
||||||
AbstractCleaner,
|
AbstractCleaner,
|
||||||
ActionDescriptor,
|
ActionDescriptor,
|
||||||
TraitCleanerDir,
|
CleanerDescriptor,
|
||||||
ValueDescriptor
|
ValueDescriptor,
|
||||||
|
TraitCleanerDir
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -31,27 +32,23 @@ class Vars extends AbstractCleaner
|
||||||
{
|
{
|
||||||
use TraitCleanerDir;
|
use TraitCleanerDir;
|
||||||
|
|
||||||
protected function properties(): array
|
public function __construct()
|
||||||
{
|
{
|
||||||
return [
|
parent::__construct(new CleanerDescriptor(
|
||||||
'id' => 'vars',
|
id: 'vars',
|
||||||
'name' => __('Var'),
|
name: __('Var'),
|
||||||
'desc' => __('Folders from Dotclear VAR directory'),
|
desc: __('Folders from Dotclear VAR directory'),
|
||||||
];
|
actions: [
|
||||||
}
|
// delete a $ns folder and their files
|
||||||
|
new ActionDescriptor(
|
||||||
protected function actions(): array
|
id: 'delete',
|
||||||
{
|
select: __('delete selected var directories'),
|
||||||
return [
|
query: __('delete "%s" var directory'),
|
||||||
// delete a $ns folder and their files
|
success: __('"%s" var directory deleted'),
|
||||||
new ActionDescriptor(
|
error: __('Failed to delete "%s" var directory')
|
||||||
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
|
public function distributed(): array
|
||||||
|
|
|
@ -19,6 +19,7 @@ use Dotclear\Database\Statement\SelectStatement;
|
||||||
use Dotclear\Plugin\Uninstaller\{
|
use Dotclear\Plugin\Uninstaller\{
|
||||||
AbstractCleaner,
|
AbstractCleaner,
|
||||||
ActionDescriptor,
|
ActionDescriptor,
|
||||||
|
CleanerDescriptor,
|
||||||
ValueDescriptor
|
ValueDescriptor
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -30,27 +31,23 @@ use Dotclear\Plugin\Uninstaller\{
|
||||||
*/
|
*/
|
||||||
class Versions extends AbstractCleaner
|
class Versions extends AbstractCleaner
|
||||||
{
|
{
|
||||||
protected function properties(): array
|
public function __construct()
|
||||||
{
|
{
|
||||||
return [
|
parent::__construct(new CleanerDescriptor(
|
||||||
'id' => 'versions',
|
id: 'versions',
|
||||||
'name' => __('Versions'),
|
name: __('Versions'),
|
||||||
'desc' => __('Versions registered in table "version" of Dotclear'),
|
desc: __('Versions registered in table "version" of Dotclear'),
|
||||||
];
|
actions: [
|
||||||
}
|
// delete $ns version
|
||||||
|
new ActionDescriptor(
|
||||||
protected function actions(): array
|
id: 'delete',
|
||||||
{
|
select: __('delete selected versions numbers'),
|
||||||
return [
|
query: __('delete "%s" version number'),
|
||||||
// delete $ns version
|
success: __('"%s" version number deleted'),
|
||||||
new ActionDescriptor(
|
error: __('Failed to delete "%s" version number')
|
||||||
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
|
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