Example #1
0
 /**
  * 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;
 }
Example #2
0
 /**
  * Ü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;
 }
Example #3
0
 /**
  * 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;
 }
Example #4
0
 /**
  * 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());
 }