diff --git a/Controller/ApiController.php b/Controller/ApiController.php index 790b3a4..a8fd92b 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -1071,11 +1071,19 @@ final class ApiController extends Controller $done = $module === 'Admin' ? false : $this->app->moduleManager->activate($module); $msg = $done ? 'Module successfully activated.' : 'Module not activated.'; + $new = clone $old; + $new->setStatus(ModuleStatusUpdateType::ACTIVATE); + ModuleMapper::update($new); + break; case ModuleStatusUpdateType::DEACTIVATE: $done = $module === 'Admin' ? false : $this->app->moduleManager->deactivate($module); $msg = $done ? 'Module successfully deactivated.' : 'Module not deactivated.'; + $new = clone $old; + $new->setStatus(ModuleStatusUpdateType::DEACTIVATE); + ModuleMapper::update($new); + break; case ModuleStatusUpdateType::INSTALL: $done = $this->app->moduleManager->isInstalled($module) ? true : false; @@ -1085,6 +1093,12 @@ final class ApiController extends Controller break; } + if (!\is_file(__DIR__ . '/../../../Modules/' . $module . '/info.json')) { + $msg = 'Status change for unknown module requested'; + $done = false; + break; + } + $moduleInfo = new ModuleInfo(__DIR__ . '/../../../Modules/' . $module . '/info.json'); $moduleInfo->load(); @@ -1096,7 +1110,7 @@ final class ApiController extends Controller $iRequest->header->account = 1; $iRequest->setData('status', ModuleStatusUpdateType::INSTALL); - $iRequest->setData('module', $key, true); + $iRequest->setData('module', $key); $this->apiModuleStatusUpdate($iRequest, $iResponse); } @@ -1152,6 +1166,10 @@ final class ApiController extends Controller $done = $module === 'Admin' ? false : $this->app->moduleManager->uninstall($module); $msg = $done ? 'Module successfully uninstalled.' : 'Module not uninstalled.'; + $new = clone $old; + $new->setStatus(ModuleStatusUpdateType::DELETE); + ModuleMapper::delete($new); + break; default: $done = false; @@ -1159,21 +1177,22 @@ final class ApiController extends Controller $response->header->status = RequestStatusCode::R_400; } ModuleMapper::clearCache(); - $new = ModuleMapper::get($module); - $this->app->eventManager->triggerSimilar( - 'POST:Module:Admin-module-status-update', '', - [ - $request->header->account, - $old, $new, - StringUtils::intHash(ModuleMapper::class), 'module-status', - $module, - self::NAME, - $request->getOrigin(), - ] - ); + if ($done) { + $new = ModuleMapper::get($module); - if (!$done) { + $this->app->eventManager->triggerSimilar( + 'POST:Module:Admin-module-status-update', '', + [ + $request->header->account, + $old, $new, + StringUtils::intHash(ModuleMapper::class), 'module-status', + $module, + self::NAME, + $request->getOrigin(), + ] + ); + } else { $response->header->status = RequestStatusCode::R_400; } diff --git a/tests/Models/ModuleTest.php b/tests/Models/ModuleTest.php index ba6f170..3bb2364 100755 --- a/tests/Models/ModuleTest.php +++ b/tests/Models/ModuleTest.php @@ -41,10 +41,9 @@ class ModuleTest extends \PHPUnit\Framework\TestCase */ public function testDefault() : void { - self::assertEquals(0, $this->module->getId()); + self::assertEquals('', $this->module->getId()); self::assertInstanceOf('\DateTimeImmutable', $this->module->createdAt); self::assertEquals('', $this->module->name); - self::assertEquals('', $this->module->description); self::assertEquals(ModuleStatus::INACTIVE, $this->module->getStatus()); self::assertEquals(\json_encode($this->module->jsonSerialize()), $this->module->__toString()); self::assertEquals($this->module->jsonSerialize(), $this->module->toArray()); @@ -61,17 +60,6 @@ class ModuleTest extends \PHPUnit\Framework\TestCase self::assertEquals('Name', $this->module->name); } - /** - * @testdox The description can be set and returned - * @covers Modules\Admin\Models\Module - * @group module - */ - public function testDescriptionInputOutput() : void - { - $this->module->description = 'Desc'; - self::assertEquals('Desc', $this->module->description); - } - /** * @testdox The status can be set and returned * @covers Modules\Admin\Models\Module