فهرست منبع

#51 - delayed files deletions: some fixes

Alex Trofimov 12 سال پیش
والد
کامیت
7b103f3f82
2فایلهای تغییر یافته به همراه15 افزوده شده و 5 حذف شده
  1. 13 3
      inc/classes/BxDolInstallerUtils.php
  2. 2 2
      inc/classes/BxDolModuleQuery.php

+ 13 - 3
inc/classes/BxDolInstallerUtils.php

@@ -48,10 +48,10 @@ class BxDolInstallerUtils extends BxDolIO
     /**
      * Set module for delayed uninstall 
      */
-    static public function setModulePendingUninstall($sUri)
+    static public function setModulePendingUninstall($sUri, $bPendingUninstall = true)
     {
         bx_import('BxDolModuleQuery');
-        return BxDolModuleQuery::getInstance()->setModulePendingUninstall($sUri);
+        return BxDolModuleQuery::getInstance()->setModulePendingUninstall($sUri, $bPendingUninstall);
     }
 
     /**
@@ -75,8 +75,18 @@ class BxDolInstallerUtils extends BxDolIO
             if (!$aModule['pending_uninstall'] || BxDolStorage::isQueuedFilesForDeletion($aModule['name']))
                 continue;
 
+            self::setModulePendingUninstall($aModule['uri'], false);
+
             bx_import('BxDolStudioInstallerUtils');
-            BxDolStudioInstallerUtils::getInstance()->perform($aModule['home_dir'], 'uninstall');
+            $aResult = BxDolStudioInstallerUtils::getInstance()->perform($aModule['path'], 'uninstall');
+
+            if ($aResult['code'] > 0) {
+                // TODO: send error message
+                echo "{$aModule['name']} uninstall failed: {$aResult['message']}\n";
+            } else {
+                // TODO: send success message
+                echo "Module {$aModule['name']} successfully uninstalled\n";
+            }
         }
     }
 

+ 2 - 2
inc/classes/BxDolModuleQuery.php

@@ -55,8 +55,8 @@ class BxDolModuleQuery extends BxDolDb implements iBxDolSingleton {
         $sSql = $this->prepare("UPDATE `sys_modules` SET `enabled`='0' WHERE `uri`=? LIMIT 1", $sUri);
         return (int)$this->query($sSql) > 0;
     }
-    function setModulePendingUninstall($sUri) {
-        $sSql = $this->prepare("UPDATE `sys_modules` SET `pending_uninstall` = 1 WHERE `uri` = ? LIMIT 1", $sUri);
+    function setModulePendingUninstall($sUri, $bPendingUninstall) {
+        $sSql = $this->prepare("UPDATE `sys_modules` SET `pending_uninstall` = ? WHERE `uri` = ? LIMIT 1", $bPendingUninstall ? 1 : 0, $sUri);
         return $this->query($sSql);
     }
     function isModule($sUri) {