no need to check twice available actions (and class cleanup)
This commit is contained in:
parent
da937efdea
commit
85e45af40e
@ -26,6 +26,9 @@ use Exception;
|
|||||||
*/
|
*/
|
||||||
class Uninstaller
|
class Uninstaller
|
||||||
{
|
{
|
||||||
|
/** @var string The Uninstall class name */
|
||||||
|
public const UNINSTALL_CLASS_NAME = 'Uninstall';
|
||||||
|
|
||||||
/** @var Uninstaller $uninstaller Uninstaller instance */
|
/** @var Uninstaller $uninstaller Uninstaller instance */
|
||||||
private static $uninstaller;
|
private static $uninstaller;
|
||||||
|
|
||||||
@ -87,7 +90,7 @@ class Uninstaller
|
|||||||
if (!($module instanceof dcModuleDefine)) {
|
if (!($module instanceof dcModuleDefine)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$class = $module->get('namespace') . '\\Uninstall';
|
$class = $module->get('namespace') . '\\' . self::UNINSTALL_CLASS_NAME;
|
||||||
if ($module->getId() != My::id() && is_a($class, dcNsProcess::class, true)) {
|
if ($module->getId() != My::id() && is_a($class, dcNsProcess::class, true)) {
|
||||||
$this->modules[$module->getId()] = $this->module = $module;
|
$this->modules[$module->getId()] = $this->module = $module;
|
||||||
if ($class::init()) {
|
if ($class::init()) {
|
||||||
@ -196,35 +199,38 @@ class Uninstaller
|
|||||||
* Get modules <var>$id</var> predefined user actions associative array
|
* Get modules <var>$id</var> predefined user actions associative array
|
||||||
*
|
*
|
||||||
* @param string $id The module ID
|
* @param string $id The module ID
|
||||||
* @return array Modules id
|
*
|
||||||
|
* @return array List module user actions group by cleaner
|
||||||
*/
|
*/
|
||||||
public function getUserActions(string $id): array
|
public function getUserActions(string $id): array
|
||||||
{
|
{
|
||||||
return $this->getActions('user', $id);
|
return $this->actions['user'][$id] ?? [];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get modules <var>$id</var> predefined direct actions associative array
|
* Get modules <var>$id</var> predefined direct actions associative array
|
||||||
*
|
*
|
||||||
* @param string $id The module ID
|
* @param string $id The module ID
|
||||||
* @return array Modules id
|
*
|
||||||
|
* @return array List module direct actions group by cleaner
|
||||||
*/
|
*/
|
||||||
public function getDirectActions(string $id): array
|
public function getDirectActions(string $id): array
|
||||||
{
|
{
|
||||||
return $this->getActions('direct', $id);
|
return $this->actions['direct'][$id] ?? [];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get module <var>$id</var> custom actions fields.
|
* Get module <var>$id</var> custom actions fields.
|
||||||
*
|
*
|
||||||
* @param string $id The module ID
|
* @param string $id The module ID
|
||||||
|
*
|
||||||
* @return string HTML render of custom form fields
|
* @return string HTML render of custom form fields
|
||||||
*/
|
*/
|
||||||
public function render(string $id): string
|
public function render(string $id): string
|
||||||
{
|
{
|
||||||
$output = '';
|
$output = '';
|
||||||
if ($this->hasRender($id)) {
|
if ($this->hasRender($id)) {
|
||||||
$class = $this->getModule($id)?->get('namespace') . '\\Uninstall';
|
$class = $this->getModule($id)?->get('namespace') . '\\' . self::UNINSTALL_CLASS_NAME;
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
@ -248,7 +254,7 @@ class Uninstaller
|
|||||||
* @param string $action The action ID
|
* @param string $action The action ID
|
||||||
* @param string $ns Name of setting related to module.
|
* @param string $ns Name of setting related to module.
|
||||||
*
|
*
|
||||||
* @return boolean Success
|
* @return boolean The success
|
||||||
*/
|
*/
|
||||||
public function execute(string $cleaner, string $action, string $ns): bool
|
public function execute(string $cleaner, string $action, string $ns): bool
|
||||||
{
|
{
|
||||||
@ -260,16 +266,23 @@ class Uninstaller
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a predefined action to unsintall features.
|
||||||
|
*
|
||||||
|
* @param string $group The group (user or direct)
|
||||||
|
* @param string $cleaner The cleaner ID
|
||||||
|
* @param string $action The action ID
|
||||||
|
* @param string $ns Name of setting related to module.
|
||||||
|
*/
|
||||||
private function addAction(string $group, string $cleaner, string $action, string $ns): void
|
private function addAction(string $group, string $cleaner, string $action, string $ns): void
|
||||||
{
|
{
|
||||||
// no current module or no cleaner id or ns
|
// no current module or no cleaner id or no ns or unknown cleaner action
|
||||||
if (null === $this->module || empty($cleaner) || empty($ns)) {
|
if (null === $this->module || empty($cleaner) || empty($ns)
|
||||||
return;
|
|| !isset($this->cleaners->get($cleaner)->actions[$action])
|
||||||
}
|
) {
|
||||||
// unknow cleaner action
|
|
||||||
if (!isset($this->cleaners->get($cleaner)->actions[$action])) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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,
|
||||||
@ -280,20 +293,4 @@ class Uninstaller
|
|||||||
'error' => sprintf($this->cleaners->get($cleaner)->actions[$action]->error, $ns),
|
'error' => sprintf($this->cleaners->get($cleaner)->actions[$action]->error, $ns),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getActions(string $group, string $id): array
|
|
||||||
{
|
|
||||||
if (!isset($this->actions[$group][$id])) {
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
$res = [];
|
|
||||||
foreach ($this->cleaners->dump() as $cleaner) {
|
|
||||||
if (!isset($this->actions[$group][$id][$cleaner->id])) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
$res[$cleaner->id] = $this->actions[$group][$id][$cleaner->id];
|
|
||||||
}
|
|
||||||
|
|
||||||
return $res;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user