diff --git a/datamodels/2.x/itop-backup/ajax.backup.php b/datamodels/2.x/itop-backup/ajax.backup.php index d7f8dab852..24020c7b5a 100644 --- a/datamodels/2.x/itop-backup/ajax.backup.php +++ b/datamodels/2.x/itop-backup/ajax.backup.php @@ -46,15 +46,22 @@ try $oPage->no_cache(); $oPage->SetContentType('text/html'); - try + if (utils::GetConfig()->Get('demo_mode')) { - set_time_limit(0); - $oBB = new BackupExec(APPROOT.'data/backups/manual/', 0 /*iRetentionCount*/); - $sRes = $oBB->Process(time() + 36000); // 10 hours to complete should be sufficient! + $oPage->add("
Sorry, iTop is in demonstration mode: the feature is disabled.
"); } - catch (Exception $e) + else { - $oPage->p('Error: '.$e->getMessage()); + try + { + set_time_limit(0); + $oBB = new BackupExec(APPROOT.'data/backups/manual/', 0 /*iRetentionCount*/); + $sRes = $oBB->Process(time() + 36000); // 10 hours to complete should be sufficient! + } + catch (Exception $e) + { + $oPage->p('Error: '.$e->getMessage()); + } } $oPage->output(); break; @@ -104,39 +111,46 @@ EOF $oPage->no_cache(); $oPage->SetContentType('text/html'); - $sEnvironment = utils::ReadParam('environment', 'production', false, 'raw_data'); - $oRestoreMutex = new iTopMutex('restore.'.$sEnvironment); - $oRestoreMutex->Lock(); - try + if (utils::GetConfig()->Get('demo_mode')) { - set_time_limit(0); - - // Get the file and destroy the token (single usage) - $sToken = utils::ReadParam('token', '', false, 'raw_data'); - $sTokenFile = APPROOT.'/data/restore.'.$sToken.'.tok'; - $sFile = file_get_contents($sTokenFile); - unlink($sTokenFile); - - $sMySQLBinDir = utils::ReadParam('mysql_bindir', '', false, 'raw_data'); - $sDBHost = utils::ReadParam('db_host', '', false, 'raw_data'); - $sDBUser = utils::ReadParam('db_user', '', false, 'raw_data'); - $sDBPwd = utils::ReadParam('db_pwd', '', false, 'raw_data'); - $sDBName = utils::ReadParam('db_name', '', false, 'raw_data'); - $sDBSubName = utils::ReadParam('db_subname', '', false, 'raw_data'); - - $oDBRS = new DBRestore($sDBHost, $sDBUser, $sDBPwd, $sDBName, $sDBSubName); - $oDBRS->SetMySQLBinDir($sMySQLBinDir); - - $sBackupDir = APPROOT.'data/backups/'; - $sBackupFile = $sBackupDir.$sFile; - $sRes = $oDBRS->RestoreFromZip($sBackupFile, $sEnvironment); - - $oRestoreMutex->Unlock(); + $oPage->add("
Sorry, iTop is in demonstration mode: the feature is disabled.
"); } - catch (Exception $e) + else { - $oRestoreMutex->Unlock(); - $oPage->p('Error: '.$e->getMessage()); + $sEnvironment = utils::ReadParam('environment', 'production', false, 'raw_data'); + $oRestoreMutex = new iTopMutex('restore.'.$sEnvironment); + $oRestoreMutex->Lock(); + try + { + set_time_limit(0); + + // Get the file and destroy the token (single usage) + $sToken = utils::ReadParam('token', '', false, 'raw_data'); + $sTokenFile = APPROOT.'/data/restore.'.$sToken.'.tok'; + $sFile = file_get_contents($sTokenFile); + unlink($sTokenFile); + + $sMySQLBinDir = utils::ReadParam('mysql_bindir', '', false, 'raw_data'); + $sDBHost = utils::ReadParam('db_host', '', false, 'raw_data'); + $sDBUser = utils::ReadParam('db_user', '', false, 'raw_data'); + $sDBPwd = utils::ReadParam('db_pwd', '', false, 'raw_data'); + $sDBName = utils::ReadParam('db_name', '', false, 'raw_data'); + $sDBSubName = utils::ReadParam('db_subname', '', false, 'raw_data'); + + $oDBRS = new DBRestore($sDBHost, $sDBUser, $sDBPwd, $sDBName, $sDBSubName); + $oDBRS->SetMySQLBinDir($sMySQLBinDir); + + $sBackupDir = APPROOT.'data/backups/'; + $sBackupFile = $sBackupDir.$sFile; + $sRes = $oDBRS->RestoreFromZip($sBackupFile, $sEnvironment); + + $oRestoreMutex->Unlock(); + } + catch (Exception $e) + { + $oRestoreMutex->Unlock(); + $oPage->p('Error: '.$e->getMessage()); + } } $oPage->output(); break; @@ -146,6 +160,10 @@ EOF require_once(APPROOT.'/application/loginwebpage.class.inc.php'); LoginWebPage::DoLogin(true); // Check user rights and prompt if needed (must be admin) + if (utils::GetConfig()->Get('demo_mode')) + { + throw new Exception('iTop is in demonstration mode: the feature is disabled'); + } $sFile = utils::ReadParam('file', '', false, 'raw_data'); $oBackup = new DBBackupScheduled(); $sBackupDir = APPROOT.'data/backups/'; diff --git a/datamodels/2.x/itop-backup/backup.php b/datamodels/2.x/itop-backup/backup.php index f1e064cdd8..fd947f4936 100644 --- a/datamodels/2.x/itop-backup/backup.php +++ b/datamodels/2.x/itop-backup/backup.php @@ -184,6 +184,10 @@ if ($bSimulate) { $oP->p("Simulate: would create file '$sZipArchiveFile'"); } +elseif (MetaModel::GetConfig()->Get('demo_mode')) +{ + $oP->p("Sorry, iTop is in demonstration mode: the feature is disabled"); +} else { $oBackup->CreateZip($sZipArchiveFile); diff --git a/datamodels/2.x/itop-backup/module.itop-backup.php b/datamodels/2.x/itop-backup/module.itop-backup.php index 9aed80ed29..857d663a9a 100644 --- a/datamodels/2.x/itop-backup/module.itop-backup.php +++ b/datamodels/2.x/itop-backup/module.itop-backup.php @@ -3,7 +3,7 @@ SetupWebPage::AddModule( __FILE__, // Path to the current file, all other file names are relative to the directory containing this file - 'itop-backup/2.1.0', + 'itop-backup/2.1.1', array( // Identification // diff --git a/datamodels/2.x/itop-backup/status.php b/datamodels/2.x/itop-backup/status.php index 82dad92c1f..6a132c7159 100644 --- a/datamodels/2.x/itop-backup/status.php +++ b/datamodels/2.x/itop-backup/status.php @@ -50,6 +50,11 @@ try { $oP->add("

".Dict::S('bkp-status-title')."

"); + if (MetaModel::GetConfig()->Get('demo_mode')) + { + $oP->add("
iTop is in demonstration mode: the feature is disabled.
"); + } + $sImgOk = ' '; $sImgError = ' '; @@ -181,8 +186,15 @@ try { $sFileName = basename($sBackupFile); $sFilePath = 'auto/'.$sFileName; - $sAjax = utils::GetAbsoluteUrlModulePage('itop-backup', 'ajax.backup.php', array('operation' => 'download', 'file' => $sFilePath)); - $sName = "".$sFileName.''; + if (MetaModel::GetConfig()->Get('demo_mode')) + { + $sName = $sFileName; + } + else + { + $sAjax = utils::GetAbsoluteUrlModulePage('itop-backup', 'ajax.backup.php', array('operation' => 'download', 'file' => $sFilePath)); + $sName = "".$sFileName.''; + } $sSize = SetupUtils::HumanReadableSize(filesize($sBackupFile)); $sConfirmRestore = addslashes(Dict::Format('bkp-confirm-restore', $sFileName)); $sFileEscaped = addslashes($sFilePath); @@ -222,8 +234,15 @@ try { $sFileName = basename($sBackupFile); $sFilePath = 'manual/'.$sFileName; - $sAjax = utils::GetAbsoluteUrlModulePage('itop-backup', 'ajax.backup.php', array('operation' => 'download', 'file' => $sFilePath)); - $sName = "".$sFileName.''; + if (MetaModel::GetConfig()->Get('demo_mode')) + { + $sName = $sFileName; + } + else + { + $sAjax = utils::GetAbsoluteUrlModulePage('itop-backup', 'ajax.backup.php', array('operation' => 'download', 'file' => $sFilePath)); + $sName = "".$sFileName.''; + } $sSize = SetupUtils::HumanReadableSize(filesize($sBackupFile)); $sConfirmRestore = addslashes(Dict::Format('bkp-confirm-restore', $sFileName)); $sFileEscaped = addslashes($sFilePath); @@ -376,6 +395,11 @@ function LaunchRestoreNow(sBackupFile, sConfirmationMessage) } EOF ); + + if (MetaModel::GetConfig()->Get('demo_mode')) + { + $oP->add_ready_script("$('button').attr('disabled', 'disabled').attr('title', 'Disabled in demonstration mode')"); + } } catch(Exception $e) {