From 09f4dc08477a9328a3acc75a1680b0498f29a5f0 Mon Sep 17 00:00:00 2001
From: Ramil Valitov <ramilvalitov@gmail.com>
Date: Mon, 16 Mar 2020 22:22:56 +0300
Subject: [PATCH 1/3] [add] max 30 backups

---
 interface/web/sites/form/web_vhost_domain.tform.php | 2 +-
 server/lib/classes/cron.d/500-backup.inc.php        | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/interface/web/sites/form/web_vhost_domain.tform.php b/interface/web/sites/form/web_vhost_domain.tform.php
index 8b5a36441a..5c3057f685 100644
--- a/interface/web/sites/form/web_vhost_domain.tform.php
+++ b/interface/web/sites/form/web_vhost_domain.tform.php
@@ -668,7 +668,7 @@ if ($backup_available) {
 				'datatype' => 'INTEGER',
 				'formtype' => 'SELECT',
 				'default' => '',
-				'value'  => array('1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', '10' => '10')
+				'value'  => array('1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', '10' => '10', '15' => '15', '20' => '20', '30' => '30')
 			),
 			'backup_excludes' => array (
 				'datatype' => 'VARCHAR',
diff --git a/server/lib/classes/cron.d/500-backup.inc.php b/server/lib/classes/cron.d/500-backup.inc.php
index f261daf468..d71bcc812d 100644
--- a/server/lib/classes/cron.d/500-backup.inc.php
+++ b/server/lib/classes/cron.d/500-backup.inc.php
@@ -177,7 +177,7 @@ class cronjob_backup extends cronjob {
 
 							rsort($files);
 
-							for ($n = $backup_copies; $n <= 10; $n++) {
+							for ($n = $backup_copies; $n <= 30; $n++) {
 								if(isset($files[$n]) && is_file($web_backup_dir.'/'.$files[$n])) {
 									$sql = "DELETE FROM web_backup WHERE server_id = ? AND parent_domain_id = ? AND filename = ?";
 									$app->db->query($sql, $conf['server_id'], $web_id, $files[$n]);
@@ -306,7 +306,7 @@ class cronjob_backup extends cronjob {
 							reset($files);
 							foreach($files as $db_name => $filelist) {
 								rsort($filelist);
-								for ($n = $backup_copies; $n <= 10; $n++) {
+								for ($n = $backup_copies; $n <= 30; $n++) {
 									if(isset($filelist[$n]) && is_file($db_backup_dir.'/'.$filelist[$n])) {
 										$sql = "DELETE FROM web_backup WHERE server_id = ? AND parent_domain_id = ? AND filename = ?";
 										$app->db->query($sql, $conf['server_id'], $web_id, $filelist[$n]);
-- 
GitLab


From cbfa4d1b22309d4572aaf558709f6268644eb862 Mon Sep 17 00:00:00 2001
From: Ramil Valitov <ramilvalitov@gmail.com>
Date: Fri, 20 Mar 2020 12:08:15 +0300
Subject: [PATCH 2/3] [add] single constant

---
 server/lib/classes/cron.d/500-backup.inc.php | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/server/lib/classes/cron.d/500-backup.inc.php b/server/lib/classes/cron.d/500-backup.inc.php
index d71bcc812d..b68dd3b8e1 100644
--- a/server/lib/classes/cron.d/500-backup.inc.php
+++ b/server/lib/classes/cron.d/500-backup.inc.php
@@ -33,6 +33,11 @@ class cronjob_backup extends cronjob {
 	// job schedule
 	protected $_schedule = '0 0 * * *';
 
+	/**
+	 * The maximum number of backups that ISPConfig can store.
+	 */
+	const max_backups = 30;
+
 	/* this function is optional if it contains no custom code */
 	public function onPrepare() {
 		global $app;
@@ -177,7 +182,7 @@ class cronjob_backup extends cronjob {
 
 							rsort($files);
 
-							for ($n = $backup_copies; $n <= 30; $n++) {
+							for ($n = $backup_copies; $n <= self::max_backups; $n++) {
 								if(isset($files[$n]) && is_file($web_backup_dir.'/'.$files[$n])) {
 									$sql = "DELETE FROM web_backup WHERE server_id = ? AND parent_domain_id = ? AND filename = ?";
 									$app->db->query($sql, $conf['server_id'], $web_id, $files[$n]);
@@ -306,7 +311,7 @@ class cronjob_backup extends cronjob {
 							reset($files);
 							foreach($files as $db_name => $filelist) {
 								rsort($filelist);
-								for ($n = $backup_copies; $n <= 30; $n++) {
+								for ($n = $backup_copies; $n <= self::max_backups; $n++) {
 									if(isset($filelist[$n]) && is_file($db_backup_dir.'/'.$filelist[$n])) {
 										$sql = "DELETE FROM web_backup WHERE server_id = ? AND parent_domain_id = ? AND filename = ?";
 										$app->db->query($sql, $conf['server_id'], $web_id, $filelist[$n]);
-- 
GitLab


From 51ae68fa9bb4c1b38e8e75466bbc3476decfb5ff Mon Sep 17 00:00:00 2001
From: Ramil Valitov <ramilvalitov@gmail.com>
Date: Tue, 24 Mar 2020 09:15:19 +0300
Subject: [PATCH 3/3] [add] increase number of backups for mail backup

---
 interface/web/mail/form/mail_user.tform.php       | 2 +-
 server/lib/classes/cron.d/500-backup_mail.inc.php | 7 ++++++-
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/interface/web/mail/form/mail_user.tform.php b/interface/web/mail/form/mail_user.tform.php
index da386f5844..0efc7f3d6b 100644
--- a/interface/web/mail/form/mail_user.tform.php
+++ b/interface/web/mail/form/mail_user.tform.php
@@ -469,7 +469,7 @@ if ($backup_available) {
 				'datatype'      => 'INTEGER',
 				'formtype'      => 'SELECT',
 				'default'       => '',
-				'value'         => array('1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', '10' => '10')
+				'value'			=> array('1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', '10' => '10', '15' => '15', '20' => '20', '30' => '30')
 			),
 		##################################
 		# END Datatable fields
diff --git a/server/lib/classes/cron.d/500-backup_mail.inc.php b/server/lib/classes/cron.d/500-backup_mail.inc.php
index 234f02771d..2b1fd58177 100644
--- a/server/lib/classes/cron.d/500-backup_mail.inc.php
+++ b/server/lib/classes/cron.d/500-backup_mail.inc.php
@@ -33,6 +33,11 @@ class cronjob_backup_mail extends cronjob {
 	protected $_schedule = '0 0 * * *';
 	private $tmp_backup_dir = '';
 
+	/**
+	 * The maximum number of backups that ISPConfig can store.
+	 */
+	const max_backups = 30;
+
 	/* this function is optional if it contains no custom code */
 	public function onPrepare() {
 		global $app;
@@ -204,7 +209,7 @@ class cronjob_backup_mail extends cronjob {
 						}
 						$dir_handle->close();
 						rsort($files);
-						for ($n = $backup_copies; $n <= 10; $n++) {
+						for ($n = $backup_copies; $n <= self::max_backups; $n++) {
 							if(isset($files[$n]) && is_file($mail_backup_dir.'/'.$files[$n])) {
 								unlink($mail_backup_dir.'/'.$files[$n]);
 								$sql = "DELETE FROM mail_backup WHERE server_id = ? AND parent_domain_id = ? AND filename = ?";
-- 
GitLab