function bx_rrmdir($directory) { if (substr($directory, -1) == "/") { $directory = substr($directory, 0, -1); } if (!file_exists($directory) || !is_dir($directory)) { return false; } elseif (!is_readable($directory)) { return false; } if (!($directoryHandle = opendir($directory))) { return false; } while ($contents = readdir($directoryHandle)) { if ($contents != '.' && $contents != '..') { $path = $directory . "/" . $contents; if (is_dir($path)) { bx_rrmdir($path); } else { unlink($path); } } } closedir($directoryHandle); if (!rmdir($directory)) { return false; } return true; }
/** * Clean tmp folders (tmp, cache) by deleting old files (by default older than 1 month) */ protected function cleanTmpFolders() { $iTmpFileLife = 2592000; // one month $aDirsToClean = array(BX_DIRECTORY_PATH_TMP, BX_DIRECTORY_PATH_CACHE, BX_DIRECTORY_PATH_CACHE_PUBLIC); $iNumTmp = 0; $iNumDel = 0; foreach ($aDirsToClean as $sDir) { if (!($h = opendir($sDir))) { continue; } while ($sFile = readdir($h)) { if ('.' == $sFile || '..' == $sFile || '.' == $sFile[0]) { continue; } ++$iNumTmp; $iDiff = time() - filemtime($sDir . $sFile); if ($iDiff < $iTmpFileLife) { continue; } if (is_file($sDir . $sFile)) { @unlink($sDir . $sFile); } else { @bx_rrmdir($sDir . $sFile); } ++$iNumDel; } closedir($h); } echo _t('_sys_pruning_files', $iNumTmp, $iNumDel); }
public function processing() { $oController = new BxDolUpgradeController(); if ($oController->setMaintenanceMode(true)) { // if upgrade was successful if (($sFolder = $oController->getAvailableUpgrade()) && $oController->runUpgrade($sFolder)) { // write upgrade log $oController->writeLog(); // send email notification bx_import('BxDolLanguages'); sendMailTemplateSystem('t_UpgradeSuccess', array('new_version' => bx_get_ver(true), 'conclusion' => $oController->getConclusion() ? _t('_sys_upgrade_conclusion', $oController->getConclusion()) : '')); // if next upgrade is available (in case of bulk upgrade) then schedule to run it upon next cron run $sUpgradeDir = pathinfo(__FILE__, PATHINFO_DIRNAME); if ($oController->getAvailableUpgrade()) { $oUpgrader = bx_instance('BxDolUpgrader'); $oUpgrader->setTransientUpgradeCronJob($sUpgradeDir); } elseif (0 === strpos($sUpgradeDir, BX_DIRECTORY_PATH_TMP)) { @bx_rrmdir($sUpgradeDir); } } $oController->setMaintenanceMode(false); } // if something went grong during upgrade if ($sErrorMsg = $oController->getErrorMsg()) { // write upgrade log $oController->writeLog(); // send email notification sendMailTemplateSystem('t_UpgradeFailed', array('error_msg' => $sErrorMsg)); // disable auto-upgrade if it is failed setParam('sys_autoupdate_system', ''); } }
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 profile_delete($ID, $isDeleteSpammer = false) { //global $MySQL; global $dir; //recompile global profiles cache $GLOBALS['MySQL']->cleanCache('sys_browse_people'); $ID = (int) $ID; if (!$ID) { return false; } if (!($aProfileInfo = getProfileInfo($ID))) { return false; } $iLoggedInId = getLoggedId(); db_res("DELETE FROM `sys_admin_ban_list` WHERE `ProfID`='" . $ID . "' LIMIT 1"); db_res("DELETE FROM `sys_greetings` WHERE `ID` = '{$ID}' OR `Profile` = '{$ID}'"); db_res("DELETE FROM `sys_block_list` WHERE `ID` = '{$ID}' OR `Profile` = '{$ID}'"); db_res("DELETE FROM `sys_messages` WHERE Recipient = {$ID} OR `Sender` = {$ID}"); db_res("DELETE FROM `sys_fave_list` WHERE ID = {$ID} OR Profile = {$ID}"); db_res("DELETE FROM `sys_friend_list` WHERE ID = {$ID} OR Profile = {$ID}"); db_res("DELETE FROM `sys_acl_levels_members` WHERE `IDMember` = {$ID}"); db_res("DELETE FROM `sys_tags` WHERE `ObjID` = {$ID} AND `Type` = 'profile'"); db_res("DELETE FROM `sys_sbs_entries` WHERE `subscriber_id` = {$ID} AND `subscriber_type` = '1'"); // delete profile votings require_once BX_DIRECTORY_PATH_CLASSES . 'BxDolVoting.php'; $oVotingProfile = new BxDolVoting('profile', 0, 0); $oVotingProfile->deleteVotings($ID); // delete profile comments require_once BX_DIRECTORY_PATH_CLASSES . 'BxDolCmts.php'; $oCmts = new BxDolCmts('profile', $ID); $oCmts->onObjectDelete(); // delete all comments in all comments' systems, this user posted $oCmts->onAuthorDelete($ID); $iPossibleCoupleID = (int) db_value("SELECT `ID` FROM `Profiles` WHERE `Couple` = '{$ID}'"); if ($iPossibleCoupleID) { db_res("DELETE FROM `Profiles` WHERE `ID` = '{$iPossibleCoupleID}'"); //delete cache file deleteUserDataFile($iPossibleCoupleID); } // delete associated locations if (BxDolModule::getInstance('BxWmapModule')) { BxDolService::call('wmap', 'response_entry_delete', array('profiles', $ID)); } //delete all subscriptions $oSubscription = BxDolSubscription::getInstance(); $oSubscription->unsubscribe(array('type' => 'object_id', 'unit' => 'profile', 'object_id' => $ID)); db_res("DELETE FROM `Profiles` WHERE `ID` = '{$ID}'"); if ($isDeleteSpammer) { bx_import('BxDolStopForumSpam'); $oBxDolStopForumSpam = new BxDolStopForumSpam(); $oBxDolStopForumSpam->submitSpammer(array('username' => $aProfileInfo['NickName'], 'email' => $aProfileInfo['Email'], 'ip' => bx_member_ip_get_last($ID))); } // delete moxiemanager files $sMoxieFilesPath = BX_DIRECTORY_PATH_ROOT . 'media/moxie/files/' . substr($aProfileInfo['NickName'], 0, 1) . '/' . substr($aProfileInfo['NickName'], 0, 2) . '/' . substr($aProfileInfo['NickName'], 0, 3) . '/' . $aProfileInfo['NickName']; bx_rrmdir($sMoxieFilesPath); // create system event $oZ = new BxDolAlerts('profile', 'delete', $ID, 0, array('profile_info' => $aProfileInfo, 'logged_in' => $iLoggedInId, 'delete_spammer' => $isDeleteSpammer)); $oZ->alert(); //delete cache file deleteUserDataFile($ID); }
protected function performUnarchive($sFilePath, &$sPackagePath) { $iUmaskSave = umask(0); if (!class_exists('ZipArchive')) { return _t('_adm_str_err_zip_not_available'); } $oZip = new ZipArchive(); if ($oZip->open($sFilePath) !== true) { return _t('_adm_str_err_cannot_unzip_package'); } $sPackageFolder = ''; if ($oZip->numFiles > 0) { $sPackageFolder = $oZip->getNameIndex(0); } if (empty($sPackageFolder)) { return _t('_adm_str_err_cannot_unzip_package'); } $sPackagePath = BX_DIRECTORY_PATH_TMP . $sPackageFolder; if (file_exists($sPackagePath)) { // remove existing tmp folder with the same name @bx_rrmdir($sPackagePath); } if (!$oZip->extractTo(BX_DIRECTORY_PATH_TMP)) { return _t('_adm_str_err_cannot_unzip_package'); } $oZip->close(); umask($iUmaskSave); return true; }
protected function deleteUpgradeFolder($sPatchPath) { @bx_rrmdir($this->getTmpFolderFromZip($sPatchPath)); }
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'; }