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("");
+ }
+
$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)
{