From 6883d1659ca3328d246e7c6149aa48c2a31ff16d Mon Sep 17 00:00:00 2001
From: Christoph Zysik <support@ztk.me>
Date: Fri, 31 May 2024 17:16:46 +0000
Subject: [PATCH] proposal Fix #6692 and #2962 add backup interval setting for
 databases

---
 interface/lib/classes/remote.d/sites.inc.php        |  3 +--
 interface/lib/classes/sites_database_plugin.inc.php |  3 +--
 interface/web/sites/form/database.tform.php         | 11 +++++++++++
 interface/web/sites/lib/lang/ar_database.lng        |  5 +++++
 interface/web/sites/lib/lang/bg_database.lng        |  5 +++++
 interface/web/sites/lib/lang/br_database.lng        |  6 ++++++
 interface/web/sites/lib/lang/ca_database.lng        |  5 +++++
 interface/web/sites/lib/lang/cn_database.lng        |  5 +++++
 interface/web/sites/lib/lang/cz_database.lng        |  6 ++++++
 interface/web/sites/lib/lang/de_database.lng        |  5 +++++
 interface/web/sites/lib/lang/dk_database.lng        |  5 +++++
 interface/web/sites/lib/lang/el_database.lng        |  5 +++++
 interface/web/sites/lib/lang/en_database.lng        |  5 +++++
 interface/web/sites/lib/lang/es_database.lng        |  5 +++++
 interface/web/sites/lib/lang/fi_database.lng        |  5 +++++
 interface/web/sites/lib/lang/fr_database.lng        |  5 +++++
 interface/web/sites/lib/lang/hr_database.lng        |  5 +++++
 interface/web/sites/lib/lang/hu_database.lng        |  5 +++++
 interface/web/sites/lib/lang/id_database.lng        |  5 +++++
 interface/web/sites/lib/lang/it_database.lng        |  5 +++++
 interface/web/sites/lib/lang/ja_database.lng        |  5 +++++
 interface/web/sites/lib/lang/nl_database.lng        |  5 +++++
 interface/web/sites/lib/lang/pl_database.lng        |  5 +++++
 interface/web/sites/lib/lang/pt_database.lng        |  5 +++++
 interface/web/sites/lib/lang/ro_database.lng        |  5 +++++
 interface/web/sites/lib/lang/ru_database.lng        |  5 +++++
 interface/web/sites/lib/lang/se_database.lng        |  5 +++++
 interface/web/sites/lib/lang/sk_database.lng        |  5 +++++
 interface/web/sites/lib/lang/tr_database.lng        |  5 +++++
 interface/web/sites/templates/database_edit.htm     |  8 ++++++++
 server/lib/classes/backup.inc.php                   |  4 ++--
 31 files changed, 155 insertions(+), 6 deletions(-)

diff --git a/interface/lib/classes/remote.d/sites.inc.php b/interface/lib/classes/remote.d/sites.inc.php
index 10fc028e64..ee665ec72a 100644
--- a/interface/lib/classes/remote.d/sites.inc.php
+++ b/interface/lib/classes/remote.d/sites.inc.php
@@ -167,9 +167,8 @@ class remoting_sites extends remoting {
 			$retval = $this->updateQueryExecute($sql, $primary_id, $params);
 
 			// set correct values for backup_interval and backup_copies
-			if(isset($params['backup_interval']) || isset($params['backup_copies']) || isset($params['backup_format_web']) || isset($params['backup_format_db'])){
+			if(isset($params['backup_copies']) || isset($params['backup_format_web']) || isset($params['backup_format_db'])){
 				$sql_set = array();
-				if(isset($params['backup_interval'])) $sql_set[] = "backup_interval = '".$app->db->quote($params['backup_interval'])."'";
 				if(isset($params['backup_copies'])) $sql_set[] = "backup_copies = ".$app->functions->intval($params['backup_copies']);
 				if(isset($params['backup_format_web'])) $sql_set[] = "backup_format_web = ".$app->functions->intval($params['backup_format_web']);
 				if(isset($params['backup_format_db'])) $sql_set[] = "backup_format_db = ".$app->functions->intval($params['backup_format_db']);
diff --git a/interface/lib/classes/sites_database_plugin.inc.php b/interface/lib/classes/sites_database_plugin.inc.php
index 68421d6083..bc345f62ad 100644
--- a/interface/lib/classes/sites_database_plugin.inc.php
+++ b/interface/lib/classes/sites_database_plugin.inc.php
@@ -44,8 +44,7 @@ class sites_database_plugin {
 
 			//* The Database user shall be owned by the same group then the website
 			$sys_groupid = $app->functions->intval($web['sys_groupid']);
-			$backup_interval = $web['backup_interval'];
-			$backup_format_web = $web['backup_format_web'];
+			$backup_interval = $app->db->quote($form_page->dataRecord["backup_interval"]);
 			$backup_format_db = $web['backup_format_db'];
 			$backup_copies = $app->functions->intval($web['backup_copies']);
 
diff --git a/interface/web/sites/form/database.tform.php b/interface/web/sites/form/database.tform.php
index 2d4785df99..81a4f79bf2 100644
--- a/interface/web/sites/form/database.tform.php
+++ b/interface/web/sites/form/database.tform.php
@@ -95,6 +95,17 @@ $form["tabs"]['database'] = array (
 				'mysql' => 'MySQL'
 			)
 		),
+		'backup_interval' => [
+			'datatype' => 'VARCHAR',
+			'formtype' => 'SELECT',
+			'default' => 'none',
+			'value'  => [
+				'none' => 'no_backup_txt',
+				'daily' => 'daily_backup_txt',
+				'weekly' => 'weekly_backup_txt',
+				'monthly' => 'monthly_backup_txt',
+			]
+		],
 		'database_name' => array (
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
diff --git a/interface/web/sites/lib/lang/ar_database.lng b/interface/web/sites/lib/lang/ar_database.lng
index f081f1dce8..42b930d97f 100644
--- a/interface/web/sites/lib/lang/ar_database.lng
+++ b/interface/web/sites/lib/lang/ar_database.lng
@@ -47,4 +47,9 @@ $wb['limit_database_quota_txt'] = 'Database quota';
 $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 $wb['limit_database_quota_free_txt'] = 'Max. available DB quota ';
 $wb['limit_database_quota_not_0_txt']= 'Database quota can not be 0';
+$wb['no_backup_txt'] = 'No backup';
+$wb['daily_backup_txt'] = 'Daily';
+$wb['weekly_backup_txt'] = 'Weekly';
+$wb['monthly_backup_txt'] = 'Monthly';
+$wb['backup_interval_txt'] = 'Backup interval';
 ?>
diff --git a/interface/web/sites/lib/lang/bg_database.lng b/interface/web/sites/lib/lang/bg_database.lng
index 675bbdd8c9..d7f74ce178 100644
--- a/interface/web/sites/lib/lang/bg_database.lng
+++ b/interface/web/sites/lib/lang/bg_database.lng
@@ -47,4 +47,9 @@ $wb['limit_database_quota_txt'] = 'Database quota';
 $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 $wb['limit_database_quota_free_txt'] = 'Max. available DB quota ';
 $wb['limit_database_quota_not_0_txt']= 'Database quota can not be 0';
+$wb['no_backup_txt'] = 'No backup';
+$wb['daily_backup_txt'] = 'Daily';
+$wb['weekly_backup_txt'] = 'Weekly';
+$wb['monthly_backup_txt'] = 'Monthly';
+$wb['backup_interval_txt'] = 'Backup interval';
 ?>
diff --git a/interface/web/sites/lib/lang/br_database.lng b/interface/web/sites/lib/lang/br_database.lng
index 7e872a31bb..1b0ec53b15 100644
--- a/interface/web/sites/lib/lang/br_database.lng
+++ b/interface/web/sites/lib/lang/br_database.lng
@@ -47,3 +47,9 @@ $wb['limit_database_quota_txt'] = 'Cota do Banco de Dados';
 $wb['limit_database_quota_error_notint'] = 'A cota do Banco de Dados deve ser um número.';
 $wb['limit_database_quota_free_txt'] = 'Cota do Banco de Dados disponível';
 $wb['limit_database_quota_not_0_txt'] = 'Database quota can not be 0';
+$wb['no_backup_txt'] = 'Sem backup';
+$wb['daily_backup_txt'] = 'Diário';
+$wb['weekly_backup_txt'] = 'Semanal';
+$wb['monthly_backup_txt'] = 'Mensal';
+$wb['backup_interval_txt'] = 'Intervalo entre backups';
+?>
diff --git a/interface/web/sites/lib/lang/ca_database.lng b/interface/web/sites/lib/lang/ca_database.lng
index 5a49db5f75..fc486cad96 100644
--- a/interface/web/sites/lib/lang/ca_database.lng
+++ b/interface/web/sites/lib/lang/ca_database.lng
@@ -47,4 +47,9 @@ $wb['limit_database_quota_txt'] = 'Database quota';
 $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 $wb['limit_database_quota_free_txt'] = 'Max. available DB quota ';
 $wb['limit_database_quota_not_0_txt']= 'Database quota can not be 0';
+$wb['no_backup_txt'] = 'No backup';
+$wb['daily_backup_txt'] = 'Daily';
+$wb['weekly_backup_txt'] = 'Weekly';
+$wb['monthly_backup_txt'] = 'Monthly';
+$wb['backup_interval_txt'] = 'Backup interval';
 ?>
diff --git a/interface/web/sites/lib/lang/cn_database.lng b/interface/web/sites/lib/lang/cn_database.lng
index d1c9180fbb..f8bd9d214a 100644
--- a/interface/web/sites/lib/lang/cn_database.lng
+++ b/interface/web/sites/lib/lang/cn_database.lng
@@ -47,4 +47,9 @@ $wb['limit_database_quota_txt'] = '数据库配额';
 $wb['limit_database_quota_error_notint'] = '数据库配额必须是数字。';
 $wb['limit_database_quota_free_txt'] = '最大可用的数据库配额 ';
 $wb['limit_database_quota_not_0_txt'] = '数据库配额不能为0。';
+$wb['no_backup_txt'] = '不备份';
+$wb['daily_backup_txt'] = '每日';
+$wb['weekly_backup_txt'] = '每周';
+$wb['monthly_backup_txt'] = '每月';
+$wb['backup_interval_txt'] = '备份间隔';
 ?>
diff --git a/interface/web/sites/lib/lang/cz_database.lng b/interface/web/sites/lib/lang/cz_database.lng
index 419fe42488..0ed55c2c76 100644
--- a/interface/web/sites/lib/lang/cz_database.lng
+++ b/interface/web/sites/lib/lang/cz_database.lng
@@ -47,3 +47,9 @@ $wb['limit_database_quota_txt'] = 'Kvóta databáze';
 $wb['limit_database_quota_error_notint'] = 'Limit databázové kvóty musí být číslo.';
 $wb['limit_database_quota_free_txt'] = 'Max. dostupná DB kvóta je ';
 $wb['limit_database_quota_not_0_txt'] = 'Database quota can not be 0';
+$wb['no_backup_txt'] = 'Žádná záloha';
+$wb['daily_backup_txt'] = 'Denní';
+$wb['weekly_backup_txt'] = 'Týdenní';
+$wb['monthly_backup_txt'] = 'Měsíční';
+$wb['backup_interval_txt'] = 'Interval zálohování';
+?>
diff --git a/interface/web/sites/lib/lang/de_database.lng b/interface/web/sites/lib/lang/de_database.lng
index 9f7a102ca3..6ea231d38e 100644
--- a/interface/web/sites/lib/lang/de_database.lng
+++ b/interface/web/sites/lib/lang/de_database.lng
@@ -47,4 +47,9 @@ $wb['limit_database_quota_txt'] = 'Database quota';
 $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 $wb['limit_database_quota_free_txt'] = 'Max. available DB quota ';
 $wb['limit_database_quota_not_0_txt']= 'Database quota can not be 0';
+$wb['no_backup_txt'] = 'inaktiv';
+$wb['daily_backup_txt'] = 'täglich';
+$wb['weekly_backup_txt'] = 'wöchentlich';
+$wb['monthly_backup_txt'] = 'monatlich';
+$wb['backup_interval_txt'] = 'Backup-Interval';
 ?>
diff --git a/interface/web/sites/lib/lang/dk_database.lng b/interface/web/sites/lib/lang/dk_database.lng
index 70ac3b45dd..8f02873a9c 100644
--- a/interface/web/sites/lib/lang/dk_database.lng
+++ b/interface/web/sites/lib/lang/dk_database.lng
@@ -47,4 +47,9 @@ $wb['limit_database_quota_txt'] = 'Database quota';
 $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 $wb['limit_database_quota_free_txt'] = 'Max. available DB quota ';
 $wb['limit_database_quota_not_0_txt']= 'Database quota can not be 0';
+$wb['no_backup_txt'] = 'No backup';
+$wb['daily_backup_txt'] = 'Daily';
+$wb['weekly_backup_txt'] = 'Weekly';
+$wb['monthly_backup_txt'] = 'Monthly';
+$wb['backup_interval_txt'] = 'Backup interval';
 ?>
diff --git a/interface/web/sites/lib/lang/el_database.lng b/interface/web/sites/lib/lang/el_database.lng
index d3c1555a7c..8b3d40391c 100644
--- a/interface/web/sites/lib/lang/el_database.lng
+++ b/interface/web/sites/lib/lang/el_database.lng
@@ -47,4 +47,9 @@ $wb['limit_database_quota_txt'] = 'Database quota';
 $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 $wb['limit_database_quota_free_txt'] = 'Max. available DB quota ';
 $wb['limit_database_quota_not_0_txt']= 'Database quota can not be 0';
+$wb['no_backup_txt'] = 'No backup';
+$wb['daily_backup_txt'] = 'Daily';
+$wb['weekly_backup_txt'] = 'Weekly';
+$wb['monthly_backup_txt'] = 'Monthly';
+$wb['backup_interval_txt'] = 'Backup interval';
 ?>
diff --git a/interface/web/sites/lib/lang/en_database.lng b/interface/web/sites/lib/lang/en_database.lng
index 4c3e653873..7317424bbd 100644
--- a/interface/web/sites/lib/lang/en_database.lng
+++ b/interface/web/sites/lib/lang/en_database.lng
@@ -47,4 +47,9 @@ $wb['limit_database_quota_txt'] = 'Database quota';
 $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 $wb['limit_database_quota_free_txt']='Max. available DB quota ';
 $wb['limit_database_quota_not_0_txt']= 'Database quota can not be 0';
+$wb['no_backup_txt'] = 'No backup';
+$wb['daily_backup_txt'] = 'Daily';
+$wb['weekly_backup_txt'] = 'Weekly';
+$wb['monthly_backup_txt'] = 'Monthly';
+$wb['backup_interval_txt'] = 'Backup interval';
 ?>
diff --git a/interface/web/sites/lib/lang/es_database.lng b/interface/web/sites/lib/lang/es_database.lng
index 512d297da0..c8722d93b2 100644
--- a/interface/web/sites/lib/lang/es_database.lng
+++ b/interface/web/sites/lib/lang/es_database.lng
@@ -47,4 +47,9 @@ $wb['select_site_txt'] = '- Seleccionar sitio -';
 $wb['server_id_txt'] = 'Servidor';
 $wb['type_txt'] = 'Tipo';
 $wb['limit_database_quota_not_0_txt']= 'Database quota can not be 0';
+$wb['no_backup_txt'] = 'Sin copia de seguridad';
+$wb['daily_backup_txt'] = 'Diariamente';
+$wb['weekly_backup_txt'] = 'Semanalmente';
+$wb['monthly_backup_txt'] = 'Mensualmente';
+$wb['backup_interval_txt'] = 'Intervalo de copias de seguridad';
 ?>
diff --git a/interface/web/sites/lib/lang/fi_database.lng b/interface/web/sites/lib/lang/fi_database.lng
index 397cdbf031..e6218fab1d 100644
--- a/interface/web/sites/lib/lang/fi_database.lng
+++ b/interface/web/sites/lib/lang/fi_database.lng
@@ -47,4 +47,9 @@ $wb['limit_database_quota_txt'] = 'Database quota';
 $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 $wb['limit_database_quota_free_txt'] = 'Max. available DB quota ';
 $wb['limit_database_quota_not_0_txt']= 'Database quota can not be 0';
+$wb['no_backup_txt'] = 'No backup';
+$wb['daily_backup_txt'] = 'Daily';
+$wb['weekly_backup_txt'] = 'Weekly';
+$wb['monthly_backup_txt'] = 'Monthly';
+$wb['backup_interval_txt'] = 'Backup interval';
 ?>
diff --git a/interface/web/sites/lib/lang/fr_database.lng b/interface/web/sites/lib/lang/fr_database.lng
index 77e1d561cb..eaba552395 100644
--- a/interface/web/sites/lib/lang/fr_database.lng
+++ b/interface/web/sites/lib/lang/fr_database.lng
@@ -47,4 +47,9 @@ $wb['limit_database_quota_txt'] = 'Database quota';
 $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 $wb['limit_database_quota_free_txt'] = 'Max. available DB quota ';
 $wb['limit_database_quota_not_0_txt']= 'Database quota can not be 0';
+$wb['no_backup_txt'] = 'Pas de backup';
+$wb['daily_backup_txt'] = 'Journalier';
+$wb['weekly_backup_txt'] = 'Hebdomadaire';
+$wb['monthly_backup_txt'] = 'Mensuel';
+$wb['backup_interval_txt'] = 'Intervalle des Backups';
 ?>
diff --git a/interface/web/sites/lib/lang/hr_database.lng b/interface/web/sites/lib/lang/hr_database.lng
index f1c7d0db2e..75909d9eb9 100644
--- a/interface/web/sites/lib/lang/hr_database.lng
+++ b/interface/web/sites/lib/lang/hr_database.lng
@@ -47,4 +47,9 @@ $wb['limit_database_quota_txt'] = 'Database quota';
 $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 $wb['limit_database_quota_free_txt'] = 'Max. available DB quota ';
 $wb['limit_database_quota_not_0_txt']= 'Database quota can not be 0';
+$wb['no_backup_txt'] = 'No backup';
+$wb['daily_backup_txt'] = 'Daily';
+$wb['weekly_backup_txt'] = 'Weekly';
+$wb['monthly_backup_txt'] = 'Monthly';
+$wb['backup_interval_txt'] = 'Backup interval';
 ?>
diff --git a/interface/web/sites/lib/lang/hu_database.lng b/interface/web/sites/lib/lang/hu_database.lng
index cb27357b97..5a04240e33 100644
--- a/interface/web/sites/lib/lang/hu_database.lng
+++ b/interface/web/sites/lib/lang/hu_database.lng
@@ -47,4 +47,9 @@ $wb['limit_database_quota_txt'] = 'Database quota';
 $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 $wb['limit_database_quota_free_txt'] = 'Max. available DB quota ';
 $wb['limit_database_quota_not_0_txt']= 'Database quota can not be 0';
+$wb['no_backup_txt'] = 'No backup';
+$wb['daily_backup_txt'] = 'Daily';
+$wb['weekly_backup_txt'] = 'Weekly';
+$wb['monthly_backup_txt'] = 'Monthly';
+$wb['backup_interval_txt'] = 'Backup interval';
 ?>
diff --git a/interface/web/sites/lib/lang/id_database.lng b/interface/web/sites/lib/lang/id_database.lng
index 90d3833217..4c377c92a6 100644
--- a/interface/web/sites/lib/lang/id_database.lng
+++ b/interface/web/sites/lib/lang/id_database.lng
@@ -47,4 +47,9 @@ $wb['limit_database_quota_txt'] = 'Database quota';
 $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 $wb['limit_database_quota_free_txt'] = 'Max. available DB quota ';
 $wb['limit_database_quota_not_0_txt']= 'Database quota can not be 0';
+$wb['no_backup_txt'] = 'No backup';
+$wb['daily_backup_txt'] = 'Daily';
+$wb['weekly_backup_txt'] = 'Weekly';
+$wb['monthly_backup_txt'] = 'Monthly';
+$wb['backup_interval_txt'] = 'Backup interval';
 ?>
diff --git a/interface/web/sites/lib/lang/it_database.lng b/interface/web/sites/lib/lang/it_database.lng
index ba9be34091..015fe89399 100644
--- a/interface/web/sites/lib/lang/it_database.lng
+++ b/interface/web/sites/lib/lang/it_database.lng
@@ -47,4 +47,9 @@ $wb['limit_database_quota_txt'] = 'Database quota';
 $wb['limit_database_quota_error_notint'] = 'La quota del database deve essere un numero positivo.';
 $wb['limit_database_quota_free_txt'] = 'Quota DB disponibile ';
 $wb['limit_database_quota_not_0_txt'] = 'La quota Database non può essere 0';
+$wb['no_backup_txt'] = 'Nessun backup';
+$wb['daily_backup_txt'] = 'Giornaliero';
+$wb['weekly_backup_txt'] = 'Settimanale';
+$wb['monthly_backup_txt'] = 'Mensile';
+$wb['backup_interval_txt'] = 'Intervallo di Backup';
 ?>
diff --git a/interface/web/sites/lib/lang/ja_database.lng b/interface/web/sites/lib/lang/ja_database.lng
index f081f1dce8..42b930d97f 100644
--- a/interface/web/sites/lib/lang/ja_database.lng
+++ b/interface/web/sites/lib/lang/ja_database.lng
@@ -47,4 +47,9 @@ $wb['limit_database_quota_txt'] = 'Database quota';
 $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 $wb['limit_database_quota_free_txt'] = 'Max. available DB quota ';
 $wb['limit_database_quota_not_0_txt']= 'Database quota can not be 0';
+$wb['no_backup_txt'] = 'No backup';
+$wb['daily_backup_txt'] = 'Daily';
+$wb['weekly_backup_txt'] = 'Weekly';
+$wb['monthly_backup_txt'] = 'Monthly';
+$wb['backup_interval_txt'] = 'Backup interval';
 ?>
diff --git a/interface/web/sites/lib/lang/nl_database.lng b/interface/web/sites/lib/lang/nl_database.lng
index d9bbfb0693..4746db1735 100644
--- a/interface/web/sites/lib/lang/nl_database.lng
+++ b/interface/web/sites/lib/lang/nl_database.lng
@@ -47,4 +47,9 @@ $wb['limit_database_quota_txt'] = 'Database quota';
 $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 $wb['limit_database_quota_free_txt'] = 'Max. available DB quota ';
 $wb['limit_database_quota_not_0_txt']= 'Database quota can not be 0';
+$wb['no_backup_txt'] = 'No backup';
+$wb['daily_backup_txt'] = 'Daily';
+$wb['weekly_backup_txt'] = 'Weekly';
+$wb['monthly_backup_txt'] = 'Monthly';
+$wb['backup_interval_txt'] = 'Backup interval';
 ?>
diff --git a/interface/web/sites/lib/lang/pl_database.lng b/interface/web/sites/lib/lang/pl_database.lng
index 57294f0a40..c7cce7903f 100644
--- a/interface/web/sites/lib/lang/pl_database.lng
+++ b/interface/web/sites/lib/lang/pl_database.lng
@@ -47,4 +47,9 @@ $wb['limit_database_quota_txt'] = 'Database quota';
 $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 $wb['limit_database_quota_free_txt'] = 'Max. available DB quota ';
 $wb['limit_database_quota_not_0_txt']= 'Database quota can not be 0';
+$wb['no_backup_txt'] = 'No backup';
+$wb['daily_backup_txt'] = 'Daily';
+$wb['weekly_backup_txt'] = 'Weekly';
+$wb['monthly_backup_txt'] = 'Monthly';
+$wb['backup_interval_txt'] = 'Backup interval';
 ?>
diff --git a/interface/web/sites/lib/lang/pt_database.lng b/interface/web/sites/lib/lang/pt_database.lng
index 9da316d039..2431db782e 100644
--- a/interface/web/sites/lib/lang/pt_database.lng
+++ b/interface/web/sites/lib/lang/pt_database.lng
@@ -47,4 +47,9 @@ $wb['limit_database_quota_txt'] = 'Database quota';
 $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 $wb['limit_database_quota_free_txt'] = 'Max. available DB quota ';
 $wb['limit_database_quota_not_0_txt']= 'Database quota can not be 0';
+$wb['no_backup_txt'] = 'No backup';
+$wb['daily_backup_txt'] = 'Daily';
+$wb['weekly_backup_txt'] = 'Weekly';
+$wb['monthly_backup_txt'] = 'Monthly';
+$wb['backup_interval_txt'] = 'Backup interval';
 ?>
diff --git a/interface/web/sites/lib/lang/ro_database.lng b/interface/web/sites/lib/lang/ro_database.lng
index 73f2b3eb63..f1dfb7dd50 100644
--- a/interface/web/sites/lib/lang/ro_database.lng
+++ b/interface/web/sites/lib/lang/ro_database.lng
@@ -47,4 +47,9 @@ $wb['limit_database_quota_txt'] = 'Database quota';
 $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 $wb['limit_database_quota_free_txt'] = 'Max. available DB quota ';
 $wb['limit_database_quota_not_0_txt']= 'Database quota can not be 0';
+$wb['no_backup_txt'] = 'No backup';
+$wb['daily_backup_txt'] = 'Daily';
+$wb['weekly_backup_txt'] = 'Weekly';
+$wb['monthly_backup_txt'] = 'Monthly';
+$wb['backup_interval_txt'] = 'Backup interval';
 ?>
diff --git a/interface/web/sites/lib/lang/ru_database.lng b/interface/web/sites/lib/lang/ru_database.lng
index 478be40597..04015d4fac 100644
--- a/interface/web/sites/lib/lang/ru_database.lng
+++ b/interface/web/sites/lib/lang/ru_database.lng
@@ -47,4 +47,9 @@ $wb['limit_database_quota_txt'] = 'Квота базы данных';
 $wb['limit_database_quota_error_notint'] = 'Лимит квоты базы данных должен быть числом.';
 $wb['limit_database_quota_free_txt'] = 'Макс. доступная квота базы данных.';
 $wb['limit_database_quota_not_0_txt']= 'Database quota can not be 0';
+$wb['no_backup_txt'] = 'Не резервировать';
+$wb['daily_backup_txt'] = 'Ежедневно';
+$wb['weekly_backup_txt'] = 'Еженедельно';
+$wb['monthly_backup_txt'] = 'Ежемесячно';
+$wb['backup_interval_txt'] = 'Интервал резервного копирования';
 ?>
diff --git a/interface/web/sites/lib/lang/se_database.lng b/interface/web/sites/lib/lang/se_database.lng
index bf3f3fabfe..67e03afa24 100644
--- a/interface/web/sites/lib/lang/se_database.lng
+++ b/interface/web/sites/lib/lang/se_database.lng
@@ -47,4 +47,9 @@ $wb['limit_database_quota_txt'] = 'Database quota';
 $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 $wb['limit_database_quota_free_txt'] = 'Max. available DB quota ';
 $wb['limit_database_quota_not_0_txt']= 'Database quota can not be 0';
+$wb['no_backup_txt'] = 'No backup';
+$wb['daily_backup_txt'] = 'Daily';
+$wb['weekly_backup_txt'] = 'Weekly';
+$wb['monthly_backup_txt'] = 'Monthly';
+$wb['backup_interval_txt'] = 'Backup interval';
 ?>
diff --git a/interface/web/sites/lib/lang/sk_database.lng b/interface/web/sites/lib/lang/sk_database.lng
index 7b8b53f2ab..e90413cdcb 100644
--- a/interface/web/sites/lib/lang/sk_database.lng
+++ b/interface/web/sites/lib/lang/sk_database.lng
@@ -47,4 +47,9 @@ $wb['limit_database_quota_txt'] = 'Database quota';
 $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 $wb['limit_database_quota_free_txt'] = 'Max. available DB quota ';
 $wb['limit_database_quota_not_0_txt']= 'Database quota can not be 0';
+$wb['no_backup_txt'] = 'No backup';
+$wb['daily_backup_txt'] = 'Daily';
+$wb['weekly_backup_txt'] = 'Weekly';
+$wb['monthly_backup_txt'] = 'Monthly';
+$wb['backup_interval_txt'] = 'Backup interval';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_database.lng b/interface/web/sites/lib/lang/tr_database.lng
index 9f8d200e43..1c8fb06bc6 100644
--- a/interface/web/sites/lib/lang/tr_database.lng
+++ b/interface/web/sites/lib/lang/tr_database.lng
@@ -47,4 +47,9 @@ $wb['limit_database_quota_txt'] = 'Veritabanı Kotası';
 $wb['limit_database_quota_error_notint'] = 'Veritabanı kotası bir sayı olmalıdır';
 $wb['limit_database_quota_free_txt'] = 'Kullanılabilecek en fazla veritabanı kotası';
 $wb['limit_database_quota_not_0_txt']= 'Database quota can not be 0';
+$wb['no_backup_txt'] = 'Yedek yok';
+$wb['daily_backup_txt'] = 'Günlük';
+$wb['weekly_backup_txt'] = 'Haftalık';
+$wb['monthly_backup_txt'] = 'Aylık';
+$wb['backup_interval_txt'] = 'Yedekleme Sıklığı';
 ?>
diff --git a/interface/web/sites/templates/database_edit.htm b/interface/web/sites/templates/database_edit.htm
index b4ed450f30..e6aa508e5f 100644
--- a/interface/web/sites/templates/database_edit.htm
+++ b/interface/web/sites/templates/database_edit.htm
@@ -44,6 +44,14 @@
                 <div class="col-sm-9"><select name="type" id="type" class="form-control">
                     {tmpl_var name='type'}
                 </select></div>
+            </div>
+            <div class="form-group">
+                <label for="backup_interval" class="col-sm-3 control-label">{tmpl_var name='backup_interval_txt'}</label>
+                <div class="col-sm-9">
+                    <select name="backup_interval" id="backup_interval" class="form-control">
+                        {tmpl_var name='backup_interval'}
+                    </select>
+                </div>
             </div>
 			<div class="form-group">
                 <label for="database_name" class="col-sm-3 control-label">{tmpl_var name='database_name_txt'}</label>
diff --git a/server/lib/classes/backup.inc.php b/server/lib/classes/backup.inc.php
index 52c0802009..b755a0f23b 100644
--- a/server/lib/classes/backup.inc.php
+++ b/server/lib/classes/backup.inc.php
@@ -1997,7 +1997,7 @@ class backup
             if ($success) {
                 $backup_username = ($global_config['backups_include_into_web_quota'] == 'y') ? $web_user : 'root';
                 $backup_group = ($global_config['backups_include_into_web_quota'] == 'y') ? $web_group : 'root';
-    
+
                 //Insert web backup record in database
                 $archive_size = self::getReposArchiveSize($backup_mode, $backup_repos_path, $web_backup_archive, $repos_password);
                 $password = $repos_password ? '*secret*' : '';
@@ -2286,7 +2286,7 @@ class backup
             }
         }
 
-        $sql = "SELECT DISTINCT d.*, db.server_id as `server_id` FROM web_database as db INNER JOIN web_domain as d ON (d.domain_id = db.parent_domain_id) WHERE db.server_id = ? AND db.active = 'y' AND d.backup_interval != 'none' AND d.backup_interval != ''";
+        $sql = "SELECT DISTINCT d.domain_id, db.backup_interval, db.server_id, db.parent_domain_id FROM web_database as db INNER JOIN web_domain as d ON (d.domain_id = db.parent_domain_id) WHERE db.server_id = ? AND db.active = 'y' AND db.backup_interval != 'none' AND db.backup_interval != ''";
         $databases = $app->dbmaster->queryAllRecords($sql, $server_id);
 
         foreach ($databases as $database) {
-- 
GitLab