Пример #1
0
 /**
  * Handles database schema and data (install/upgrade/backup/uninstall etc)
  *
  * @param SchemaSetupInterface | ModuleDataSetupInterface $setup
  * @param string $type
  * @return void
  * @throws \Exception
  *
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  * @SuppressWarnings(PHPMD.NPathComplexity)
  */
 private function handleDBSchemaData($setup, $type)
 {
     if (!($type === 'schema' || $type === 'data')) {
         throw new \Magento\Setup\Exception("Unsupported operation type {$type} is requested");
     }
     $this->assertDeploymentConfigExists();
     $this->assertDbAccessible();
     $resource = new \Magento\Framework\Module\Resource($this->context);
     $verType = $type . '-version';
     $installType = $type . '-install';
     $upgradeType = $type . '-upgrade';
     $moduleNames = $this->moduleList->getNames();
     $moduleContextList = $this->generateListOfModuleContext($resource, $verType);
     foreach ($moduleNames as $moduleName) {
         $this->log->log("Module '{$moduleName}':");
         $configVer = $this->moduleList->getOne($moduleName)['setup_version'];
         $currentVersion = $moduleContextList[$moduleName]->getVersion();
         // Schema/Data is installed
         if ($currentVersion !== '') {
             $status = version_compare($configVer, $currentVersion);
             if ($status == \Magento\Framework\Setup\ModuleDataSetupInterface::VERSION_COMPARE_GREATER) {
                 $upgrader = $this->getSchemaDataHandler($moduleName, $upgradeType);
                 if ($upgrader) {
                     $this->log->logInline("Upgrading {$type}.. ");
                     $upgrader->upgrade($setup, $moduleContextList[$moduleName]);
                 }
                 if ($type === 'schema') {
                     $resource->setDbVersion($moduleName, $configVer);
                 } elseif ($type === 'data') {
                     $resource->setDataVersion($moduleName, $configVer);
                 }
             }
         } elseif ($configVer) {
             $installer = $this->getSchemaDataHandler($moduleName, $installType);
             if ($installer) {
                 $this->log->logInline("Installing {$type}.. ");
                 $installer->install($setup, $moduleContextList[$moduleName]);
             }
             $upgrader = $this->getSchemaDataHandler($moduleName, $upgradeType);
             if ($upgrader) {
                 $this->log->logInline("Upgrading {$type}.. ");
                 $upgrader->upgrade($setup, $moduleContextList[$moduleName]);
             }
             if ($type === 'schema') {
                 $resource->setDbVersion($moduleName, $configVer);
             } elseif ($type === 'data') {
                 $resource->setDataVersion($moduleName, $configVer);
             }
         }
         $this->logProgress();
     }
     if ($type === 'schema') {
         $this->log->log('Schema post-updates:');
         foreach ($moduleNames as $moduleName) {
             $this->log->log("Module '{$moduleName}':");
             $modulePostUpdater = $this->getSchemaDataHandler($moduleName, 'schema-recurring');
             if ($modulePostUpdater) {
                 $this->log->logInline("Running recurring.. ");
                 $modulePostUpdater->install($setup, $moduleContextList[$moduleName]);
             }
             $this->logProgress();
         }
     }
 }
Пример #2
0
 /**
  * {@inheritdoc}
  */
 public function logInline($message)
 {
     return $this->subject->logInline($message);
 }