From b9a3ef486ebcde18a5ade37865ff8f397185d24f Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Sun, 24 Jul 2016 05:30:59 -0400
Subject: [PATCH] Fixed #3979 Mailbox users unable to save autoresponders

---
 server/lib/classes/system.inc.php |   35 ++++++++++++++++++++++++++++++-----
 1 files changed, 30 insertions(+), 5 deletions(-)

diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php
index 2c36c38..978a891 100644
--- a/server/lib/classes/system.inc.php
+++ b/server/lib/classes/system.inc.php
@@ -1803,7 +1803,9 @@
 
 	function mount_backup_dir($backup_dir, $mount_cmd = '/usr/local/ispconfig/server/scripts/backup_dir_mount.sh'){
 		global $app, $conf;
-
+		
+		if($this->is_mounted($backup_dir)) return true;
+		
 		$mounted = true;
 		if ( 	is_file($mount_cmd) &&
 				is_executable($mount_cmd) &&
@@ -1856,23 +1858,46 @@
 
 	}
 
-	function getinitcommand($servicename, $action, $init_script_directory = ''){
+	function _getinitcommand($servicename, $action, $init_script_directory = '', $check_service) {
 		global $conf;
 		// upstart
 		if(is_executable('/sbin/initctl')){
 			exec('/sbin/initctl version 2>/dev/null | /bin/grep -q upstart', $retval['output'], $retval['retval']);
 			if(intval($retval['retval']) == 0) return 'service '.$servicename.' '.$action;
 		}
+
 		// systemd
 		if(is_executable('/bin/systemd') || is_executable('/usr/bin/systemctl')){
-			return 'systemctl '.$action.' '.$servicename.'.service';
+			if ($check_service) {
+				exec("systemctl is-enabled ".$servicename." 2>&1", $out, $ret_val);
+			}
+			if ($ret_val == 0 || !$check_service) {
+				return 'systemctl '.$action.' '.$servicename.'.service';
+			}
 		}
+
 		// sysvinit
 		if($init_script_directory == '') $init_script_directory = $conf['init_scripts'];
 		if(substr($init_script_directory, -1) === '/') $init_script_directory = substr($init_script_directory, 0, -1);
-		return $init_script_directory.'/'.$servicename.' '.$action;
+		if($check_service && is_executable($init_script_directory.'/'.$servicename)) {
+			return $init_script_directory.'/'.$servicename.' '.$action;
+		}
+		if (!$check_service) {
+			return $init_script_directory.'/'.$servicename.' '.$action;
+		}
 	}
-	
+
+	function getinitcommand($servicename, $action, $init_script_directory = '', $check_service=false) {
+		if (is_array($servicename)) {
+			foreach($servicename as $service) {
+				$out = $this->_getinitcommand($service, $action, $init_script_directory, true);
+				if ($out != '') return $out;
+			}
+		} else {
+			return $this->_getinitcommand($servicename, $action, $init_script_directory, $check_service);
+		}
+	}
+
 	function getapacheversion($get_minor = false) {
 		global $app;
 		

--
Gitblit v1.9.1