Example #1
0
 /**
  * Apply module resource install, upgrade and data scripts
  *
  * @return $this
  */
 public function applyUpdates()
 {
     if (!$this->resourceName) {
         return $this;
     }
     $dbVer = $this->resource->getDbVersion($this->resourceName);
     $configVer = $this->moduleConfig['schema_version'];
     // Module is installed
     if ($dbVer !== false) {
         if (version_compare($configVer, $dbVer, '>')) {
             $this->applySchemaUpdates(self::TYPE_DB_UPGRADE, $dbVer, $configVer);
             $this->resource->setDbVersion($this->resourceName, $configVer);
         }
     } elseif ($configVer) {
         $oldVersion = $this->applySchemaUpdates(self::TYPE_DB_INSTALL, '', $configVer);
         $this->applySchemaUpdates(self::TYPE_DB_UPGRADE, $oldVersion, $configVer);
         $this->resource->setDbVersion($this->resourceName, $configVer);
     }
     return $this;
 }
Example #2
0
 /**
  * Generates list of ModuleContext
  *
  * @param \Magento\Framework\Module\Resource $resource
  * @param string $type
  * @return ModuleContext[]
  * @throws \Magento\Setup\Exception
  */
 private function generateListOfModuleContext($resource, $type)
 {
     $moduleContextList = [];
     foreach ($this->moduleList->getNames() as $moduleName) {
         if ($type === 'schema-version') {
             $dbVer = $resource->getDbVersion($moduleName);
         } elseif ($type === 'data-version') {
             $dbVer = $resource->getDataVersion($moduleName);
         } else {
             throw new \Magento\Setup\Exception("Unsupported version type {$type} is requested");
         }
         if ($dbVer !== false) {
             $moduleContextList[$moduleName] = new ModuleContext($dbVer);
         } else {
             $moduleContextList[$moduleName] = new ModuleContext('');
         }
     }
     return $moduleContextList;
 }
 /**
  * Invoke remove data routine in each specified module
  *
  * @param string[] $modules
  * @param OutputInterface $output
  * @param bool $dbBackupOption
  * @return void
  */
 private function removeData(array $modules, OutputInterface $output, $dbBackupOption)
 {
     if (!$dbBackupOption) {
         $output->writeln('<error>You are removing data without a database backup.</error>');
     } else {
         $output->writeln('<info>Removing data</info>');
     }
     $uninstalls = $this->collector->collectUninstall();
     $setupModel = $this->objectManager->get('Magento\Setup\Module\Setup');
     foreach ($modules as $module) {
         if (isset($uninstalls[$module])) {
             $output->writeln("<info>Removing data of $module</info>");
             $uninstalls[$module]->uninstall(
                 $setupModel,
                 new ModuleContext($this->moduleResource->getDbVersion($module) ?: '')
             );
         } else {
             $output->writeln("<info>No data to clear in $module</info>");
         }
     }
 }