Alex Trofimov 1 год назад
Родитель
Сommit
896e916559
2 измененных файлов с 36 добавлено и 4 удалено
  1. 30 3
      scripts/manage.php
  2. 6 1
      upgrade/classes/BxDolUpgradeController.php

+ 30 - 3
scripts/manage.php

@@ -26,6 +26,7 @@ class BxDolManageCmd
         'unknown cmd' => array ('code' => 2, 'msg' => 'Unknown command.'),
         'db connect failed' => array ('code' => 3, 'msg' => 'Database connection failed: '),
         'system update failed' => array ('code' => 4, 'msg' => 'System update failed: '),
+        'module operation failed' => array ('code' => 5, 'msg' => 'Module operation failed: '),
         'error' => array ('code' => 9, 'msg' => 'Error occured.'),
     );
 
@@ -193,7 +194,7 @@ class BxDolManageCmd
         $oController = new BxDolUpgradeController();
         if ($oController->setMaintenanceMode(true)) {
             $sFolder = $oController->getAvailableUpgrade();
-            if ($sFolder && $oController->runUpgrade($sFolder)) { 
+            if ($sFolder && $oController->runUpgrade($sFolder, 'ignore_version_check' == $this->_sCmdOptions)) { 
                 setParam('sys_revision', getParam('sys_revision') + 1);
                 @bx_rrmdir($sUpgradeDir);
             }
@@ -215,8 +216,22 @@ class BxDolManageCmd
 
     function cmdInstallModules()
     {
-        $aModules = $this->_parseModules($this->_sCmdOptions);
-        var_dump($aModules);
+        $this->_cmdModules('install', ['auto_enable' => true, 'html_response' => false]);
+    }
+
+    function cmdUninstallModules()
+    {
+        $this->_cmdModules('uninstall', ['html_response' => false]);
+    }
+
+    function cmdEnableModules()
+    {
+        $this->_cmdModules('enable', ['html_response' => false]);
+    }
+
+    function cmdDisableModules()
+    {
+        $this->_cmdModules('disable', ['html_response' => false]);
     }
 
     function _parseModules($s) 
@@ -228,6 +243,18 @@ class BxDolManageCmd
             $a[$k] = trim($v);
         return $a;
     }
+
+    function _cmdModules($sOperation, $aOptions = [])
+    {
+        $aModules = $this->_parseModules($this->_sCmdOptions);
+        foreach ($aModules as $sModule) {
+            $sModule = trim($sModule, '/') . '/';
+            $a = BxDolStudioInstallerUtils::getInstance()->perform($sModule, $sOperation, array('auto_enable' => true, 'html_response' => false));
+            if (!isset($a['code']) || $a['code'] !== BX_DOL_STUDIO_IU_RC_SUCCESS)
+                $this->finish($this->_aReturnCodes['module operation failed']['code'], $this->_aReturnCodes['module operation failed']['msg'] . (!empty($a['message']) ? $a['message'] : 'Error occured.') . ' (' . $sOperation . ': ' . $sModule . ')');
+        }
+    }
+
 }
 
 $o = new BxDolManageCmd();

+ 6 - 1
upgrade/classes/BxDolUpgradeController.php

@@ -96,7 +96,7 @@ class BxDolUpgradeController
         return false;
     }
 
-    public function runUpgrade ($sFolder, $bIgnoreVersionCheck = false)
+    public function runUpgrade ($sFolder, $bIgnoreVersionCheck = false, $bIgnoreFilesOperations = false)
     {
         $this->aLogMsgs = array();
         $this->sError = false;
@@ -117,6 +117,11 @@ class BxDolUpgradeController
             'filesDelete' => "Deprecated files were successfully deleted or there is no files to delete",
             'updateFilesHash' => "System files hash was successfully updated",
         );
+        if ($bIgnoreFilesOperations) {
+            $aFilesOperations = [
+                'updateFilesHash' => "System files hash was successfully updated",
+            ];
+        }
     
         foreach ($aFilesOperations as $sFunc => $sSuccessMsg) {
             $mixedResult = $this->oUtil->$sFunc ();