AntonLV 8 лет назад
Родитель
Сommit
baba74bb53

+ 5 - 7
inc/classes/BxDolModuleQuery.php

@@ -189,22 +189,20 @@ class BxDolModuleQuery extends BxDolDb implements iBxDolSingleton
 
     function getModulesUri()
     {
-        $sSql = "SELECT `uri` FROM `sys_modules` ORDER BY `uri`";
-        return $this->fromMemory('sys_modules_uri', 'getColumn', $sSql);
+        return $this->fromMemory('sys_modules_uri', 'getColumn', 'SELECT `uri` FROM `sys_modules` ORDER BY `uri`');
     }
 
-    function getDependent($sUri)
+    function getDependent($sName, $sUri)
     {
-        $sSql = "SELECT `id`, `title`, `enabled` FROM `sys_modules` WHERE `dependencies` LIKE " . $this->escape('%' . $sUri . '%') . " AND `enabled`='1'";
-        return $this->getAll($sSql);
+        return $this->getAll("SELECT `id`, `title`, `enabled` FROM `sys_modules` WHERE (`dependencies` LIKE " . $this->escape('%' . $sName . '%') . " OR `dependencies` LIKE " . $this->escape('%' . $sUri . '%') . ") AND `enabled`='1'");
     }
 
-	public function updateModule($aParamsSet, $aParamsWhere = array())
+    public function updateModule($aParamsSet, $aParamsWhere = array())
     {
         if(empty($aParamsSet))
             return false;
 
-		$sWhereClause = !empty($aParamsWhere) ? $this->arrayToSQL($aParamsWhere, " AND ") : "1";
+        $sWhereClause = !empty($aParamsWhere) ? $this->arrayToSQL($aParamsWhere, " AND ") : "1";
 
         $sSql = "UPDATE `sys_modules` SET " . $this->arrayToSQL($aParamsSet) . " WHERE " . $sWhereClause;
         return $this->query($sSql);

+ 11 - 9
studio/classes/BxDolStudioInstaller.php

@@ -213,10 +213,6 @@ class BxDolStudioInstaller extends BxDolInstallerUtils
         //--- Check actions ---//
         $aResult = $this->_perform('install', $aParams);
         if($aResult['result']) {
-            $sDependencies = "";
-            if(isset($this->_aConfig['install']['check_dependencies']) && (int)$this->_aConfig['install']['check_dependencies'] == 1 && isset($this->_aConfig['dependencies']) && is_array($this->_aConfig['dependencies']))
-                $this->_aConfig['dependencies'] = array_keys($this->_aConfig['dependencies']);
-
             $iModuleId = $this->oDb->insertModule($this->_aConfig);
 
             $sTitleKey = BxDolModule::getTitleKey($this->_aConfig['home_uri']);
@@ -282,7 +278,7 @@ class BxDolStudioInstaller extends BxDolInstallerUtils
 
         //--- Check for dependent modules ---//
         $bDependent = false;
-        $aDependents = $this->oDb->getDependent($this->_aConfig['home_uri']);
+        $aDependents = $this->oDb->getDependent($this->_aConfig['name'], $this->_aConfig['home_uri']);
         if(is_array($aDependents) && !empty($aDependents)) {
             $bDependent = true;
 
@@ -474,7 +470,7 @@ class BxDolStudioInstaller extends BxDolInstallerUtils
 
         //--- Check for dependent modules ---//
         $bDependent = false;
-        $aDependents = $this->oDb->getDependent($this->_aConfig['home_uri']);
+        $aDependents = $this->oDb->getDependent($this->_aConfig['name'], $this->_aConfig['home_uri']);
         if(is_array($aDependents) && !empty($aDependents)) {
             $bDependent = true;
 
@@ -547,9 +543,15 @@ class BxDolStudioInstaller extends BxDolInstallerUtils
             if(!isset($this->_aConfig['dependencies']) || !is_array($this->_aConfig['dependencies']))
                 return BX_DOL_STUDIO_INSTALLER_SUCCESS;
 
-            foreach($this->_aConfig['dependencies'] as $sModuleUri => $sModuleTitle)
-                if(!$this->oDb->isModule($sModuleUri) || !$this->oDb->isEnabled($sModuleUri))
-                    $sContent .= $sModuleTitle . '<br />';
+            foreach($this->_aConfig['dependencies'] as $sModule => $sModuleTitle) {
+                if($this->oDb->isModule($sModule) && $this->oDb->isEnabled($sModule))
+                    continue;
+
+                if($this->oDb->isModuleByName($sModule) && $this->oDb->isEnabledByName($sModule))
+                    continue;
+
+                $sContent .= $sModuleTitle . '<br />';
+            }
 
             if(!empty($sContent))
                 $sContent = '<br />' . _t('_adm_err_modules_wrong_dependency_install') . '<br />' . $sContent;

+ 1 - 1
studio/classes/BxDolStudioInstallerQuery.php

@@ -60,7 +60,7 @@ class BxDolStudioInstallerQuery extends BxDolModuleQuery
         $sHelpUrl = isset($aConfig['help_url']) ? $aConfig['help_url'] : '';
 
         $sDependencies = '';
-        if(isset($aConfig['dependencies']) && is_array($aConfig['dependencies']))
+        if(isset($aConfig['install']['check_dependencies']) && (int)$aConfig['install']['check_dependencies'] == 1 && !empty($aConfig['dependencies']) && is_array($aConfig['dependencies']))
             $sDependencies = implode(',', array_keys($aConfig['dependencies']));
 
         $sQuery = $this->prepare("INSERT IGNORE INTO `sys_modules`(`type`, `name`, `title`, `vendor`, `version`, `help_url`, `path`, `uri`, `class_prefix`, `db_prefix`, `lang_category`, `dependencies`, `date`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, UNIX_TIMESTAMP())", $aConfig['type'], $aConfig['name'], $aConfig['title'], $aConfig['vendor'], $aConfig['version'], $sHelpUrl, $aConfig['home_dir'], $aConfig['home_uri'], $aConfig['class_prefix'], $aConfig['db_prefix'], $aConfig['language_category'], $sDependencies);