Exemple #1
0
 function actionUpdateFiles($bInstall = true)
 {
     $sPath = $this->_sHomePath . 'source/';
     if (!file_exists($sPath)) {
         return BX_DOL_INSTALLER_FAILED;
     }
     $oFtp = new BxDolFtp($_SERVER['HTTP_HOST'], getParam('sys_ftp_login'), getParam('sys_ftp_password'), getParam('sys_ftp_dir'));
     if ($oFtp->connect() == false) {
         return BX_DOL_INSTALLER_FAILED;
     }
     return $oFtp->copy($sPath . '*', 'modules/' . $this->_aConfig['module_dir']) ? BX_DOL_INSTALLER_SUCCESS : BX_DOL_INSTALLER_FAILED;
 }
 function downloadUpdate($sLink)
 {
     $sName = mktime() . '.zip';
     $sData = bx_file_get_contents($sLink);
     //--- write ZIP archive.
     $sTmpPath = BX_DIRECTORY_PATH_ROOT . 'tmp/';
     $sFilePath = $sTmpPath . $sName;
     if (!($rHandler = fopen($sFilePath, 'w'))) {
         return _t('_adm_txt_modules_cannot_download_package');
     }
     if (!fwrite($rHandler, $sData)) {
         return _t('_adm_txt_modules_cannot_write_package');
     }
     fclose($rHandler);
     //--- Unarchive package.
     if (!class_exists('ZipArchive')) {
         return _t('_adm_txt_modules_zip_not_available');
     }
     $oZip = new ZipArchive();
     if ($oZip->open($sFilePath) !== true) {
         return _t('_adm_txt_modules_cannot_unzip_package');
     }
     $sPackageRootFolder = $oZip->numFiles > 0 ? $oZip->getNameIndex(0) : false;
     if ($sPackageRootFolder && file_exists($sTmpPath . $sPackageRootFolder)) {
         // remove existing tmp folder with the same name
         bx_rrmdir($sTmpPath . $sPackageRootFolder);
     }
     if ($sPackageRootFolder && !$oZip->extractTo($sTmpPath)) {
         return _t('_adm_txt_modules_cannot_unzip_package');
     }
     $oZip->close();
     //--- Move unarchived package.
     $sLogin = getParam('sys_ftp_login');
     $sPassword = getParam('sys_ftp_password');
     $sPath = getParam('sys_ftp_dir');
     if (empty($sLogin) || empty($sPassword) || empty($sPath)) {
         return _t('_adm_txt_modules_no_ftp_info');
     }
     bx_import('BxDolFtp');
     $oFtp = new BxDolFtp($_SERVER['HTTP_HOST'], $sLogin, $sPassword, $sPath);
     if (!$oFtp->connect()) {
         return _t('_adm_txt_modules_cannot_connect_to_ftp');
     }
     if (!$oFtp->isDolphin()) {
         return _t('_adm_txt_modules_destination_not_valid');
     }
     $sConfigPath = $sTmpPath . $sPackageRootFolder . '/install/config.php';
     if (!file_exists($sConfigPath)) {
         return _t('_adm_txt_modules_wrong_package_format');
     }
     include $sConfigPath;
     if (empty($aConfig) || empty($aConfig['home_dir']) || !$oFtp->copy($sTmpPath . $sPackageRootFolder . '/', 'modules/' . $aConfig['home_dir'])) {
         return _t('_adm_txt_modules_ftp_copy_failed');
     }
     return true;
 }
 function actionUpload($sType, $aFile, $aFtpInfo)
 {
     $sLogin = htmlspecialchars_adv(clear_xss($aFtpInfo['login']));
     $sPassword = htmlspecialchars_adv(clear_xss($aFtpInfo['password']));
     $sPath = htmlspecialchars_adv(clear_xss($aFtpInfo['path']));
     setParam('sys_ftp_login', $sLogin);
     setParam('sys_ftp_password', $sPassword);
     setParam('sys_ftp_dir', $sPath);
     $sResult = '_adm_txt_modules_success_upload';
     $sName = mktime();
     $sAbsolutePath = BX_DIRECTORY_PATH_ROOT . "tmp/" . $sName . '.zip';
     if ($this->_isArchive($aFile['type']) && move_uploaded_file($aFile['tmp_name'], $sAbsolutePath)) {
         exec('unzip ' . $sAbsolutePath . ' -d ' . BX_DIRECTORY_PATH_ROOT . 'tmp/', $aOutput);
         $aMatches = array();
         if (isset($aOutput[1])) {
             preg_match("/^.*(" . str_replace('/', '\\/', BX_DIRECTORY_PATH_ROOT) . "tmp\\/)([\\w-]*)/", $aOutput[1], $aMatches);
             $sDirectory = $aMatches[2];
             $oFtp = new BxDolFtp($_SERVER['HTTP_HOST'], $sLogin, $sPassword, $sPath);
             if ($oFtp->connect() != false) {
                 $sConfigPath = BX_DIRECTORY_PATH_ROOT . "tmp/" . $sDirectory . '/install/config.php';
                 if (file_exists($sConfigPath)) {
                     include $sConfigPath;
                     $oFtp->copy(BX_DIRECTORY_PATH_ROOT . "tmp/" . $sDirectory . '/', 'modules/' . $aConfig['home_dir']);
                 } else {
                     $sResult = '_adm_txt_modules_wrong_package_format';
                 }
             } else {
                 $sResult = '_adm_txt_modules_cannot_connect_to_ftp';
             }
             exec('rm -rf ' . BX_DIRECTORY_PATH_ROOT . 'tmp/' . $sDirectory . '/');
             exec('rm -f ' . $sAbsolutePath);
         } else {
             $sResult = '_adm_txt_modules_cannot_unzip_package';
         }
     } else {
         $sResult = '_adm_txt_modules_cannot_upload_package';
     }
     return $sResult;
 }
 function actionUpload($sType, $aFile, $aFtpInfo)
 {
     $sLogin = htmlspecialchars_adv(clear_xss($aFtpInfo['login']));
     $sPassword = htmlspecialchars_adv(clear_xss($aFtpInfo['password']));
     $sPath = htmlspecialchars_adv(clear_xss($aFtpInfo['path']));
     setParam('sys_ftp_login', $sLogin);
     setParam('sys_ftp_password', $sPassword);
     setParam('sys_ftp_dir', $sPath);
     $sErrMsg = false;
     $sName = mktime();
     $sAbsolutePath = BX_DIRECTORY_PATH_ROOT . "tmp/" . $sName . '.zip';
     $sPackageRootFolder = false;
     if (!class_exists('ZipArchive')) {
         $sErrMsg = '_adm_txt_modules_zip_not_available';
     }
     if (!$sErrMsg && $this->_isArchive($aFile['type']) && move_uploaded_file($aFile['tmp_name'], $sAbsolutePath)) {
         // extract uploaded zip package into tmp folder
         $oZip = new ZipArchive();
         if ($oZip->open($sAbsolutePath) !== TRUE) {
             $sErrMsg = '_adm_txt_modules_cannot_unzip_package';
         }
         if (!$sErrMsg) {
             $sPackageRootFolder = $oZip->numFiles > 0 ? $oZip->getNameIndex(0) : false;
             if (file_exists(BX_DIRECTORY_PATH_ROOT . 'tmp/' . $sPackageRootFolder)) {
                 // remove existing tmp folder with the same name
                 bx_rrmdir(BX_DIRECTORY_PATH_ROOT . 'tmp/' . $sPackageRootFolder);
             }
             if ($sPackageRootFolder && !$oZip->extractTo(BX_DIRECTORY_PATH_ROOT . 'tmp/')) {
                 $sErrMsg = '_adm_txt_modules_cannot_unzip_package';
             }
             $oZip->close();
         }
         // upload files to the correct folder via FTP
         if (!$sErrMsg && $sPackageRootFolder) {
             $oFtp = new BxDolFtp($_SERVER['HTTP_HOST'], $sLogin, $sPassword, $sPath);
             if (!$oFtp->connect()) {
                 $sErrMsg = '_adm_txt_modules_cannot_connect_to_ftp';
             }
             if (!$sErrMsg && !$oFtp->isDolphin()) {
                 $sErrMsg = '_adm_txt_modules_destination_not_valid';
             }
             if (!$sErrMsg) {
                 $sConfigPath = BX_DIRECTORY_PATH_ROOT . "tmp/" . $sPackageRootFolder . $this->_aTypesConfig[$sType]['configfile'];
                 if (file_exists($sConfigPath)) {
                     include $sConfigPath;
                     $sConfigVar = !empty($this->_aTypesConfig[$sType]['configvarindex']) ? ${$this->_aTypesConfig[$sType]['configvar']}[$this->_aTypesConfig[$sType]['configvarindex']] : ${$this->_aTypesConfig[$sType]['configvar']};
                     $sSubfolder = $this->_aTypesConfig[$sType]['subfolder'];
                     $sSubfolder = str_replace('{configvar}', $sConfigVar, $sSubfolder);
                     $sSubfolder = str_replace('{packagerootfolder}', $sPackageRootFolder, $sSubfolder);
                     if (!$oFtp->copy(BX_DIRECTORY_PATH_ROOT . "tmp/" . $sPackageRootFolder . '/', $this->_aTypesConfig[$sType]['folder'] . $sSubfolder)) {
                         $sErrMsg = '_adm_txt_modules_ftp_copy_failed';
                     }
                 } else {
                     $sErrMsg = '_adm_txt_modules_wrong_package_format';
                 }
             }
         } else {
             $sErrMsg = '_adm_txt_modules_cannot_unzip_package';
         }
         // remove temporary files
         bx_rrmdir(BX_DIRECTORY_PATH_ROOT . 'tmp/' . $sPackageRootFolder);
         unlink($sAbsolutePath);
     } else {
         $sErrMsg = '_adm_txt_modules_cannot_upload_package';
     }
     return $sErrMsg ? $sErrMsg : '_adm_txt_modules_success_upload';
 }