Răsfoiți Sursa

Merge branch 'master' of https://github.com/boonex/dolphin

AntonLV 12 ani în urmă
părinte
comite
54bdbada69

+ 3 - 2
inc/classes/BxDolCronUpgradeCheck.php

@@ -3,7 +3,7 @@
  * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
  * CC-BY License - http://creativecommons.org/licenses/by/3.0/
  *
- * @defgroup    DolphinCore Dolphin Core
+ * @defgroup    DolphinUpgrade Dolphin Upgrade Script
  * @{
  */
 
@@ -17,7 +17,8 @@ class BxDolCronUpgradeCheck extends BxDolCron
             return;
 
         $o = bx_instance('BxDolUpgrader');
-        $o->prepare();
+        if (!$o->prepare())
+            echo $o->getError() . "\n"; // TODO: email report ?
     }
 }
 

+ 18 - 6
inc/classes/BxDolFile.php

@@ -11,8 +11,9 @@ class BxDolFile extends BxDol implements iBxDolSingleton
 {
     protected $_sPathFrom;
     protected $_sPathTo;
+    protected $_bForceOverwrite = false;
 
-    function __construct()
+    protected function __construct()
     {
         parent::__construct();
 
@@ -65,9 +66,19 @@ class BxDolFile extends BxDol implements iBxDolSingleton
         return $this->_setPermissions($sPath, $sMode);
     }
 
+    function setForceOverwrite($b)
+    {
+        $this->_bForceOverwrite = $b;
+    }
+
+    function getForceOverwrite()
+    {
+        return $this->_bForceOverwrite;
+    }
+
     protected function _copyFile($sFilePathFrom, $sFilePathTo)
     {
-        if(file_exists($sFilePathTo))
+        if(!$this->getForceOverwrite() && file_exists($sFilePathTo))
             return true;
 
         if(substr($sFilePathFrom, -1) == '*')
@@ -94,8 +105,9 @@ class BxDolFile extends BxDol implements iBxDolSingleton
             $aInnerFiles = $this->_readDirectory($sFilePathFrom);
             foreach($aInnerFiles as $sFile)
                 $bResult = $this->_copyFile($this->_validatePath($sFilePathFrom) . $sFile, $this->_validatePath($sFilePathTo) . $sFile);
-        } else
+        } else {
             $bResult = false;
+        }
 
         return $bResult;
     }
@@ -107,7 +119,7 @@ class BxDolFile extends BxDol implements iBxDolSingleton
 
         $aResult = array();
         while(($sFile = readdir($rSource)) !== false) {
-            if($sFile == '.' || $sFile =='..' || $sFile[0] == '.')
+            if($sFile == '.' || $sFile =='..')
                 continue;
             $aResult[] = $sFile;
         }
@@ -149,13 +161,13 @@ class BxDolFile extends BxDol implements iBxDolSingleton
     protected function _parseFile($sFilePath)
     {
         $aParts = array();
-        preg_match("/^([a-zA-Z0-9@~_\.\\\\\/:-]+[\\\\\/])([a-zA-Z0-9~_-]+\.[a-zA-Z]{2,8})$/", $sFilePath, $aParts) ? true : false;
+        preg_match("/^([a-zA-Z0-9@~_\.\\\\\/:-]+[\\\\\/])([a-zA-Z0-9~_\.-]+)$/", $sFilePath, $aParts);
         return count($aParts) > 1 ? array_slice($aParts, 1) : false;
     }
 
     protected function _isFile($sFilePath)
     {
-        return preg_match("/^([a-zA-Z0-9@~_\.\\\\\/:-]+)\.([a-zA-Z]){2,8}$/", $sFilePath) ? true : false;
+        return preg_match("/^([a-zA-Z0-9@~_\.\\\\\/:-]+)$/", $sFilePath) ? true : false;
     }
 
     protected function _isDirectory($sFilePath)

+ 24 - 5
inc/classes/BxDolUpgrader.php

@@ -14,6 +14,12 @@ class BxDolUpgrader extends BxDol
     protected $_sUrlVersionCheck = 'http://rss.boonex.com/u/';
     protected $_sError = false;
 
+    /**
+     * Prepare for system upgrade.
+     * It prepares upgrade by downloading upgrade pack and performing different checks.
+     * After all check are successfully completed, transient cron job is set to run upgrade upon next cron run.
+     * @return true if upgrade was successfully scheduled to run, or false on error (you can call @see getError to determine particular error message)
+     */
     public function prepare()
     {
         $this->setError(false);
@@ -71,14 +77,18 @@ class BxDolUpgrader extends BxDol
                 break;
             }
 
+            if (!$this->setTransientUpgradeCronJob ($sUnpackedPath)) {
+                $this->deleteUpgradeFolder($sPatchPath);
+                $this->setError(_t('_sys_upgrade_set_cron_failed'));
+                break;
+            }
+
             break;
         }
 
         umask($iUmaskSave);
 
-        // TODO: check error and set transient cron for the real update of files and db!
-
-        echo 'Err:' . $this->getError() . "\n";
+        return $this->getError() ? false : true;
     }
 
     public function getVersionUpdateInfo ()
@@ -161,8 +171,17 @@ class BxDolUpgrader extends BxDol
 
     protected function isValidPatch ($sUnpackedPath, $aVersionUpdateInfo)
     {
-        $sCheckFilePath =  $sUnpackedPath . 'upgrade/files/' . $this->normalizeVersion(bx_get_ver()) . '-' . $this->normalizeVersion($aVersionUpdateInfo['patch']['ver']) . '/check.php';
-        return file_exists($sCheckFilePath);
+        $sPath = $sUnpackedPath . 'files/' . $this->normalizeVersion(bx_get_ver()) . '-' . $this->normalizeVersion($aVersionUpdateInfo['patch']['ver']) . '/';
+        $sCheckFilePath =  $sPath . 'check.php';
+        $sVersionFilePath =  $sPath . 'files/inc/version.inc.php';
+        return file_exists($sCheckFilePath) && file_exists($sVersionFilePath) && file_exists($sUnpackedPath . 'BxDolUpgradeCron.php');
+    }
+
+    protected function setTransientUpgradeCronJob ($sUnpackedPath)
+    {
+        $oDb = BxDolDb::getInstance();
+        $sQuery = $oDb->prepare("INSERT INTO `sys_cron_jobs` SET `name` = 'sys_perform_upgrade', `time` = 'transient', `class` = 'BxDolUpgradeCron', `file` = ?", bx_ltrim_str($sUnpackedPath, BX_DIRECTORY_PATH_ROOT) . 'BxDolUpgradeCron.php');
+        return $oDb->query($sQuery);
     }
 
     public function getError()

+ 1 - 1
install/sql/system.sql

@@ -3124,7 +3124,7 @@ INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title`, `designb
 -- content blocks
 INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES
 
-('sys_home', 1, 'system', '_sys_page_block_title_login', 11, 2147483647, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:10:"login_form";s:6:"params";a:1:{i:0;s:12:"no_join_text";}s:5:"class";s:17:"TemplServiceLogin";}', 0, 1, 1),
+('sys_home', 1, 'system', '_sys_page_block_title_login', 11, 2147483647, 'service', 'a:3:{s:6:\"module\";s:6:\"system\";s:6:\"method\";s:10:\"login_form\";s:5:\"class\";s:17:\"TemplServiceLogin\";}', 0, 1, 1),
 
 ('sys_about', 1, 'system', '_sys_page_block_title_about', 11, 2147483647, 'lang', '_sys_page_lang_block_about', 0, 1, 1),
 

+ 1 - 1
periodic/cron.php

@@ -129,7 +129,7 @@ if (!empty($aJobsTransient)) {
     foreach ($aJobsTransient as $aRow)
         runJob($aRow);
 
-    if (isset($aJobsTransient['sys_upgrade']))
+    if (isset($aJobsTransient['sys_perform_upgrade']))
         exit;
 }
 

+ 0 - 1
upgrade/.htaccess

@@ -1 +0,0 @@
-Deny from all

+ 24 - 1
upgrade/BxDolUpgradeCron.php

@@ -7,13 +7,36 @@
  * @{
  */
 
+require_once(BX_DIRECTORY_PATH_ROOT . 'upgrade/classes/BxDolUpgradeController.php');
+require_once(BX_DIRECTORY_PATH_ROOT . 'upgrade/classes/BxDolUpgradeUtil.php');
+require_once(BX_DIRECTORY_PATH_ROOT . 'upgrade/classes/BxDolUpgradeDb.php');
+
+$aPathInfo = pathinfo(__FILE__);
+define ('BX_UPGRADE_DIR_UPGRADES', $aPathInfo['dirname'] . '/files/');
+
 bx_import('BxDolCron');
 
 class BxDolUpgradeCron extends BxDolCron
 {
     public function processing()
     {
-        echo "URA! \n";
+        // TODO: lock site (set maintenance mode)
+
+        $oController = new BxDolUpgradeController();
+
+        $aFolders = $oController->getAllUpgrades();
+        $j = count($aFolders);
+
+        for ($i = 0; $i < $j; ++$i) {
+            $sFolder = $oController->getAvailableUpgrade();
+            if (!$sFolder)
+                continue;
+
+            if (!$oController->runUpgrade($sFolder))
+                echo $oController->getErrorMsg() . "\n"; // TODO: email report ?
+        }
+
+        // TODO: unlock site (remove maintenance mode)
     }
 }
 

+ 99 - 79
upgrade/classes/BxDolUpgradeController.php

@@ -11,41 +11,81 @@ class BxDolUpgradeController
 {
     protected $oDb;
     protected $oUtil;
+    protected $aLogMsgs;
+    protected $sError;
 
-    function BxDolUpgradeController()
+    public function __construct()
     {
         $this->oDb = new BxDolUpgradeDb();
         $this->oUtil = new BxDolUpgradeUtil($this->oDb);
     }
 
-    function showAvailableUpgrades ()
+    public function getErrorMsg()
+    {
+        return $this->sError;
+    }
+
+    public function getLogMessages()
+    {
+        return $this->aLogMsgs;
+    }
+
+    public function getAllUpgrades ()
     {
         $aTemplateFolders = array ();
         $aFolders = $this->oUtil->readUpgrades();
         foreach ($aFolders as $sFolder) {
             $this->oUtil->setFolder($sFolder);
-            $aTemplateFolders[$sFolder] = $this->oUtil->executeCheck ();
+            $aTemplateFolders[$sFolder] = $this->oUtil->executeCheck();
         }
+        return $aTemplateFolders;
+    }
 
-        require (BX_UPGRADE_DIR_TEMPLATES . 'show_available_updates.php');
+    public function getAvailableUpgrade ()
+    {
+        $aTemplateFolders = array ();
+        $aFolders = $this->oUtil->readUpgrades();
+        foreach ($aFolders as $sFolder) {
+            $this->oUtil->setFolder($sFolder);
+            if (true === $this->oUtil->executeCheck())
+                return $sFolder;
+        }
+        return false;
     }
 
-    function runUpgrade ($sFolder)
+    public function runUpgrade ($sFolder)
     {
+        $this->aLogMsgs = array();
+        $this->sError = false;
+
         // set current folder
         $this->oUtil->setFolder($sFolder);
 
         // precheck
         $mixedResult = $this->oUtil->executeCheck ();
         if (true !== $mixedResult) {
-            $sTemplateMessage = $mixedResult;
-            require (BX_UPGRADE_DIR_TEMPLATES . 'message_error.php');
-            return;
+            $this->sError = $mixedResult;
+            return false;
         } else {
-            $sTemplateMessage = "$sFolder upgrade can be applied";
-            require (BX_UPGRADE_DIR_TEMPLATES . 'message_success_step.php');
+            $this->aLogMsgs[] = "$sFolder upgrade can be applied";
+        }
+
+        $mixedResult = $this->oUtil->checkPermissions ();
+        if (true !== $mixedResult) {
+            $this->sError = $mixedResult;
+            return false;
+        }
+
+        $mixedResult = $this->oUtil->copyFiles ();
+        if (true !== $mixedResult) {
+            $this->sError = $mixedResult;
+            return false;
         }
 
+        // TODO: delete deprecated files
+
+        // TODO: update files hash
+
         // run system SQL upgrade
         $mixedResult = $this->oUtil->isExecuteSQLAvail ();
         if (true === $mixedResult) {
@@ -53,35 +93,33 @@ class BxDolUpgradeController
             $mixedResult = $this->oUtil->executeSQL ();
             if (true !== $mixedResult) {
                 $sTemplateMessage = $mixedResult;
-                require (BX_UPGRADE_DIR_TEMPLATES . 'message_error.php');
-                return;
+                $this->sError = $mixedResult;
+                return false;
             } else {
-                $sTemplateMessage = "System SQL script was successfully executed.";
-                require (BX_UPGRADE_DIR_TEMPLATES . 'message_success_step.php');
+                $this->aLogMsgs[] = "System SQL script was successfully executed.";
             }
 
         } elseif (false === $mixedResult) {
             // just skip if not available found
         } else {
-            $sTemplateMessage = $mixedResult;
-            require (BX_UPGRADE_DIR_TEMPLATES . 'message_error.php');
-            return;
+            $this->sError = $mixedResult;
+            return false;
         }
 
         // get list of available language files updates
         if (false === ($aLangs = $this->oUtil->readLangs ())) {
-            $sTemplateMessage = 'Error reading the directory with language updates.';
-            require (BX_UPGRADE_DIR_TEMPLATES . 'message_error.php');
-            return;
+            $this->sError = 'Error reading the directory with language updates.';
+            return false;
         } else {
             $sTemplateMessage = 'The following languages will be affected for system: <br />';
-            if (!$aLangs)
+            if (!$aLangs) {
                 $sTemplateMessage .= " - No languages will be affected.";
-            else
+            } else {
                 foreach ($aLangs as $sLang) {
                     $sTemplateMessage .= ' - ' . $sLang . '<br />';
                 }
-            require (BX_UPGRADE_DIR_TEMPLATES . 'message_success_step.php');
+            }
+            $this->aLogMsgs[] = $sTemplateMessage;
         }
 
         // run system langs upgrade
@@ -89,12 +127,10 @@ class BxDolUpgradeController
 
             $mixedResult = $this->oUtil->executeLangsAdd ();
             if (true !== $mixedResult) {
-                $sTemplateMessage = $mixedResult;
-                require (BX_UPGRADE_DIR_TEMPLATES . 'message_error.php');
-                return;
+                $this->sError = $mixedResult;
+                return false;
             } else {
-                $sTemplateMessage = "System language strings were successfully added.";
-                require (BX_UPGRADE_DIR_TEMPLATES . 'message_success_step.php');
+                $this->aLogMsgs[] = "System language strings were successfully added.";
             }
 
         }
@@ -105,36 +141,33 @@ class BxDolUpgradeController
 
             $mixedResult = $this->oUtil->executeScript ();
             if (true !== $mixedResult) {
-                $sTemplateMessage = $mixedResult;
-                require (BX_UPGRADE_DIR_TEMPLATES . 'message_error.php');
-                return;
+                $this->sError = $mixedResult;
+                return false;
             } else {
-                $sTemplateMessage = "System after update custom script was successfully executed.";
-                require (BX_UPGRADE_DIR_TEMPLATES . 'message_success_step.php');
+                $this->aLogMsgs[] = "System after update custom script was successfully executed.";
             }
 
         } elseif (false === $mixedResult) {
             // just skip if not available found
         } else {
-            $sTemplateMessage = $mixedResult;
-            require (BX_UPGRADE_DIR_TEMPLATES . 'message_error.php');
-            return;
+            $this->sError = $mixedResult;
+            return false;
         }
 
         // get list of modules updates
         if (false === ($aModules = $this->oUtil->readModules ())) {
-            $sTemplateMessage = 'Error reading modules updates.';
-            require (BX_UPGRADE_DIR_TEMPLATES . 'message_error.php');
-            return;
+            // skip modules update
+            return true;
         } else {
             $sTemplateMessage = 'The following modules will be updated: <br />';
-            if (!$aModules)
+            if (!$aModules) {
                 $sTemplateMessage .= " - No modules will be updated.";
-            else
+            } else {
                 foreach ($aModules as $sModule) {
                     $sTemplateMessage .= ' - ' . $sModule . '<br />';
                 }
-            require (BX_UPGRADE_DIR_TEMPLATES . 'message_success_step.php');
+            }
+            $this->aLogMsgs[] = $sTemplateMessage;
         }
 
         foreach ($aModules as $sModule) {
@@ -145,36 +178,33 @@ class BxDolUpgradeController
 
                 $mixedResult = $this->oUtil->executeSQL ($sModule);
                 if (true !== $mixedResult) {
-                    $sTemplateMessage = $mixedResult;
-                    require (BX_UPGRADE_DIR_TEMPLATES . 'message_error.php');
-                    return;
+                    $this->sError = $mixedResult;
+                    return false;
                 } else {
-                    $sTemplateMessage = "<b>$sModule</b> module SQL script was successfully executed.";
-                    require (BX_UPGRADE_DIR_TEMPLATES . 'message_success_step.php');
+                    $this->aLogMsgs[] = "<b>$sModule</b> module SQL script was successfully executed.";
                 }
 
             } elseif (false === $mixedResult) {
                 // just skip if not available found
             } else {
-                $sTemplateMessage = $mixedResult;
-                require (BX_UPGRADE_DIR_TEMPLATES . 'message_error.php');
-                return;
+                $this->sError = $mixedResult;
+                return false;
             }
 
             // get list of available language files updates
             if (false === ($aLangs = $this->oUtil->readLangs ($sModule))) {
-                $sTemplateMessage = 'Error reading the directory with language updates.';
-                require (BX_UPGRADE_DIR_TEMPLATES . 'message_error.php');
-                return;
+                $this->sError = 'Error reading the directory with language updates.';
+                return false;
             } else {
                 $sTemplateMessage = "The following languages will be affected for <b>$sModule</b> module: <br />";
-                if (!$aLangs)
+                if (!$aLangs) {
                     $sTemplateMessage .= " - No languages will be affected.";
-                else
+                } else {
                     foreach ($aLangs as $sLang) {
                         $sTemplateMessage .= ' - ' . $sLang . '<br />';
                     }
-                require (BX_UPGRADE_DIR_TEMPLATES . 'message_success_step.php');
+                }
+                $this->aLogMsgs[] = $sTemplateMessage;
             }
 
             // run module langs upgrade
@@ -182,12 +212,10 @@ class BxDolUpgradeController
 
                 $mixedResult = $this->oUtil->executeLangsAdd ($sModule);
                 if (true !== $mixedResult) {
-                    $sTemplateMessage = $mixedResult;
-                    require (BX_UPGRADE_DIR_TEMPLATES . 'message_error.php');
-                    return;
+                    $this->sError = $mixedResult;
+                    return false;
                 } else {
-                    $sTemplateMessage = "<b>$sModule</b> module language strings were successfully added.";
-                    require (BX_UPGRADE_DIR_TEMPLATES . 'message_success_step.php');
+                    $this->aLogMsgs[] = "<b>$sModule</b> module language strings were successfully added.";
                 }
 
             }
@@ -198,40 +226,32 @@ class BxDolUpgradeController
 
                 $mixedResult = $this->oUtil->executeScript ($sModule);
                 if (true !== $mixedResult) {
-                    $sTemplateMessage = $mixedResult;
-                    require (BX_UPGRADE_DIR_TEMPLATES . 'message_error.php');
-                    return;
+                    $this->sError = $mixedResult;
+                    return false;
                 } else {
-                    $sTemplateMessage = "<b>$sModule</b> module after update custom script was successfully executed.";
-                    require (BX_UPGRADE_DIR_TEMPLATES . 'message_success_step.php');
+                    $this->aLogMsgs[] = "<b>$sModule</b> module after update custom script was successfully executed.";
                 }
 
             } elseif (false === $mixedResult) {
                 // just skip if not available
             } else {
-                $sTemplateMessage = $mixedResult;
-                require (BX_UPGRADE_DIR_TEMPLATES . 'message_error.php');
-                return;
+                $this->sError = $mixedResult;
+                return false;
             }
 
             // run module custom script upgrade
             $sResult = $this->oUtil->executeConclusion ($sModule);
-            if ($sResult) {
-                $sTemplateMessage = $sResult;
-                require (BX_UPGRADE_DIR_TEMPLATES . 'message_success_step.php');
-            }
-
+            if ($sResult)
+                $this->aLogMsgs[] = $sResult;
         }
 
         // run module custom script upgrade
         $sResult = $this->oUtil->executeConclusion ();
-        if ($sResult) {
-            $sTemplateMessage = $sResult;
-            require (BX_UPGRADE_DIR_TEMPLATES . 'message_success_step.php');
-        }
+        if ($sResult)
+            $this->aLogMsgs[] = $sResult;
 
+        return true;
     }
-
 }
 
 /** @} */

+ 6 - 6
upgrade/classes/BxDolUpgradeDb.php

@@ -21,12 +21,12 @@ class BxDolUpgradeDb
      */
     function __construct()
     {
-        $this->_sHost = DATABASE_HOST;
-        $this->_sPort = DATABASE_PORT;
-        $this->_sSocket = DATABASE_SOCK;
-        $this->_sDbname = DATABASE_NAME;
-        $this->_sUser = DATABASE_USER;
-        $this->_sPassword = DATABASE_PASS;
+        $this->_sHost = BX_DATABASE_HOST;
+        $this->_sPort = BX_DATABASE_PORT;
+        $this->_sSocket = BX_DATABASE_SOCK;
+        $this->_sDbname = BX_DATABASE_NAME;
+        $this->_sUser = BX_DATABASE_USER;
+        $this->_sPassword = BX_DATABASE_PASS;
         $this->_iCurrentResType = MYSQL_ASSOC;
 
         $this->connect();

+ 74 - 2
upgrade/classes/BxDolUpgradeUtil.php

@@ -9,8 +9,8 @@
 
 class BxDolUpgradeUtil
 {
-    protected $oDb;
-    protected $sFolder;
+    var $oDb;
+    var $sFolder;
 
     function BxDolUpgradeUtil($oDb)
     {
@@ -195,6 +195,9 @@ class BxDolUpgradeUtil
         if (!$this->sFolder)
             return false;
 
+        if (!file_exists(BX_UPGRADE_DIR_UPGRADES . $this->sFolder . '/modules/'))
+            return false;
+
         if (!($h = opendir(BX_UPGRADE_DIR_UPGRADES . $this->sFolder . '/modules/')))
             return false;
 
@@ -246,6 +249,75 @@ class BxDolUpgradeUtil
 
         return $aRet;
     }
+
+    function checkPermissions ()
+    {
+        $aFilesFailedRead = array();
+        $aFilesFailedWrite = array();
+        $sPathBaseUpgrade = BX_UPGRADE_DIR_UPGRADES . $this->sFolder . '/files/';
+        $aFiles = array();
+        if (!$this->_checkPermissionGetFilesList($sPathBaseUpgrade, $aFiles) || empty($aFiles))
+            return 'Can\'t retrieve list of files for the upgrade';
+
+        foreach ($aFiles as $sFileSource) {
+
+            if (!is_readable($sFileSource)) // check if source file is readable
+                $aFilesFailedRead[] = $sFileSource;
+
+            $sFileDest = BX_DIRECTORY_PATH_ROOT . bx_ltrim_str($sFileSource, $sPathBaseUpgrade);
+            
+            if (file_exists($sFileDest)) {
+                if (!is_writable($sFileDest)) // check if destination file exists and is writable
+                    $aFilesFailedWrite[] = $sFileDest;
+            } else {
+                $sDir = pathinfo($sFileDest, PATHINFO_DIRNAME); 
+                if (file_exists($sDir) && !is_writable($sDir)) // check if directory is writable, where new desination file will be places
+                    $aFilesFailedWrite[] = $sFileDest;
+            }
+            
+        }
+            
+        if (empty($aFilesFailedRead) && empty($aFilesFailedWrite))
+            return true;
+
+        $s = !empty($aFilesFailedRead) ? sprintf('The following files can\'t be read: %s. ', implode(', ', $aFilesFailedRead)) : '';
+        $s .= !empty($aFilesFailedWrite) ? sprintf('The following files can\'t be written: %s.', implode(', ', $aFilesFailedWrite)) : '';
+        return $s;
+    }
+
+    function _checkPermissionGetFilesList ($sPath, &$aFiles)
+    {
+        if (!file_exists($sPath) || !is_dir($sPath) || !($rSource = opendir($sPath)))
+            return false;
+
+        while (($sFile = readdir($rSource)) !== false) {
+            if ($sFile == '.' || $sFile =='..')
+                continue;
+
+            if (is_dir($sPath . $sFile))
+                $this->_checkPermissionGetFilesList($sPath . $sFile . '/', $aFiles);
+            else
+                $aFiles[] = $sPath . $sFile;
+        }
+
+        closedir($rSource);
+
+        return true;
+    }
+
+    function copyFiles ()
+    {
+        // TODO: use standalone copying 
+        require_once(BX_DIRECTORY_PATH_CLASSES . 'BxDolFile.php');
+        $o = BxDolFile::getInstance();
+        $o->setForceOverwrite(true);
+
+        $sDirSource = bx_ltrim_str(BX_UPGRADE_DIR_UPGRADES . $this->sFolder . '/files/', BX_DIRECTORY_PATH_ROOT);
+        if (!$o->copy($sDirSource, ''))
+            return "Files copying failed";
+
+        return true;
+    }
 }
 
 /** @} */

+ 0 - 4
upgrade/files/.gitignore

@@ -1,4 +0,0 @@
-# Ignore everything in this directory
-*
-# Except this file
-!.gitignore

+ 0 - 31
upgrade/index.php

@@ -1,31 +0,0 @@
-<?php defined('BX_DOL') or die('hack attempt');
-/**
- * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
- * CC-BY License - http://creativecommons.org/licenses/by/3.0/
- *
- * @defgroup    DolphinUpgrade Dolphin Upgrade Script
- * @{
- */
-
-require_once('./../inc/header.inc.php');
-require_once(BX_DIRECTORY_PATH_ROOT . 'upgrade/classes/BxDolUpgradeController.php');
-require_once(BX_DIRECTORY_PATH_ROOT . 'upgrade/classes/BxDolUpgradeUtil.php');
-require_once(BX_DIRECTORY_PATH_ROOT . 'upgrade/classes/BxDolUpgradeDb.php');
-
-define ('BX_UPGRADE_DIR_UPGRADES', BX_DIRECTORY_PATH_ROOT . 'upgrade/files/');
-define ('BX_UPGRADE_DIR_TEMPLATES', BX_DIRECTORY_PATH_ROOT . 'upgrade/templates/');
-
-$sFolder = $_REQUEST['folder'];
-
-include (BX_UPGRADE_DIR_TEMPLATES . '_header.php');
-
-$oController = new BxDolUpgradeController ();
-
-if (!$sFolder)
-    $oController->showAvailableUpgrades();
-else
-    $oController->runUpgrade($sFolder);
-
-include (BX_UPGRADE_DIR_TEMPLATES . '_footer.php');
-
-/** @} */

+ 0 - 3
upgrade/templates/_footer.php

@@ -1,3 +0,0 @@
-    </div>
-</body>
-</html>

+ 0 - 75
upgrade/templates/_header.php

@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
-<head>
-    <title>BoonEx Dolphin Upgrade Script</title>
-    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-    <style>
-
-body {
-    background-color:#eee;
-    color:#333333;
-    font-family:Verdana,Arial;
-    font-size:11px;
-    margin:0;
-    padding:0;
-}
-
-#body,
-#body-title {
-    margin:0 auto 0  auto;
-    padding:10px;
-}
-
-#body-title {
-    margin-top:20px;
-    margin-bottom:10px;
-    width:1000px;
-    font-size:20px;
-    padding:0px;
-}
-
-#body {
-    margin-bottom:20px;
-    width:980px;
-    background:white;
-    border:1px solid #ccc;
-}
-
-.avail span {
-    color:#090;
-    font-weight:bold;
-}
-
-.not-avail {
-    color:#999;
-}
-
-table td {
-    padding:5px;
-}
-
-.message_error,
-.message_success_step {
-    padding:5px;
-    margin:5px 0 0 0;
-}
-
-.message_error {
-    border:2px solid red;
-}
-
-.message_success_step {
-    border:2px solid #090;
-}
-
-.message_error:first-child,
-.message_success_step:first-child {
-    margin-top:0px;
-}
-
-    </style>
-</head>
-<body>
-
-    <div id="body-title">BoonEx Dolphin Upgrade Script</div>
-    <div id="body">

+ 0 - 4
upgrade/templates/message_error.php

@@ -1,4 +0,0 @@
-
-<div class="message_error">
-    <?php echo $sTemplateMessage; ?>
-</div>

+ 0 - 4
upgrade/templates/message_success_step.php

@@ -1,4 +0,0 @@
-
-<div class="message_success_step">
-    <?php echo $sTemplateMessage; ?>
-</div>

+ 0 - 36
upgrade/templates/show_available_updates.php

@@ -1,36 +0,0 @@
-
-<table>
-
-<?php
-    foreach ($aTemplateFolders as $sFolder => $mixedAvailableResult):
-
-        $sTemplateTdClass = (true === $mixedAvailableResult ? 'avail' : 'not-avail');
-?>
-
-<tr class="<?php echo $sTemplateTdClass; ?>">
-    <td>
-        <?php echo $sFolder; ?>
-    </td>
-    <td>
-        <?php
-            if (true === $mixedAvailableResult) {
-                echo '<span>Available</span>';
-            } else {
-                echo $mixedAvailableResult;
-            }
-        ?>
-    </td>
-    <td>
-        <?php if (true === $mixedAvailableResult): ?>
-
-            <a href="<?php echo BX_DOL_URL_ROOT . 'upgrade/?folder=' . $sFolder ?>" onclick="return confirm('Are you sure?');">UPGRADE</a>
-
-        <?php endif; ?>
-    </td>
-</tr>
-
-<?php
-    endforeach;
-?>
-
-</table>