/** * Fügt die zu einen Modul zugehörigen Ressourcen ein * * @param \ACP3\Core\Modules\Installer\SchemaInterface $schema * @param int $mode * * @return bool */ public function install(SchemaInterface $schema, $mode = self::INSTALL_RESOURCES_AND_RULES) { $serviceIds = $this->container->getServiceIds(); foreach ($serviceIds as $serviceId) { if (strpos($serviceId, $schema->getModuleName() . '.controller.') !== false) { $this->insertAclResources($serviceId, $schema->specialResources()); } } if ($mode === self::INSTALL_RESOURCES_AND_RULES) { $this->insertAclRules($schema->getModuleName()); } $this->aclCache->getDriver()->deleteAll(); return true; }
/** * Überprüft die Modulabhängigkeiten beim Installieren eines Moduls * * @param \ACP3\Core\Modules\Installer\SchemaInterface $schema * * @return array */ public function checkInstallDependencies(Core\Modules\Installer\SchemaInterface $schema) { $dependencies = $this->getDependencies($schema->getModuleName()); $modulesToEnable = []; if (!empty($dependencies)) { foreach ($dependencies as $dependency) { if ($this->modules->isActive($dependency) === false) { $moduleInfo = $this->modules->getModuleInfo($dependency); $modulesToEnable[] = $moduleInfo['name']; } } } return $modulesToEnable; }
/** * Führt die in der Methode schemaUpdates() enthaltenen Tabellenänderungen aus * * @param \ACP3\Core\Modules\Installer\SchemaInterface $schema * @param \ACP3\Core\Modules\Installer\MigrationInterface $migration * * @return int */ public function updateSchema(SchemaInterface $schema, MigrationInterface $migration) { $module = $this->systemModuleRepository->getModuleSchemaVersion($schema->getModuleName()); $installedSchemaVersion = !empty($module) ? (int) $module : 0; $result = -1; // Falls eine Methode zum Umbenennen des Moduls existiert, // diese mit der aktuell installierten Schemaverion aufrufen $moduleNames = $migration->renameModule(); if (count($moduleNames) > 0) { $result = $this->iterateOverSchemaUpdates($schema->getModuleName(), $schema->getSchemaVersion(), $moduleNames, $installedSchemaVersion); } $queries = $migration->schemaUpdates(); if (is_array($queries) && count($queries) > 0) { // Nur für den Fall der Fälle... ;) ksort($queries); $result = $this->iterateOverSchemaUpdates($schema->getModuleName(), $schema->getSchemaVersion(), $queries, $installedSchemaVersion); } return $result; }
/** * Method for uninstalling a module * * @param \ACP3\Core\Modules\Installer\SchemaInterface $schema * * @return bool */ public function uninstall(SchemaInterface $schema) { return $this->executeSqlQueries($schema->removeTables(), $schema->getModuleName()) && $this->removeFromModulesTable($schema->getModuleName()); }