From ebd0e986ed11f2a34fb58cdd33efbfab192083ad Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Fri, 22 Apr 2016 05:26:17 -0400
Subject: [PATCH] Added PHP 7 check in installer and updater.

---
 interface/web/sites/web_vhost_subdomain_edit.php |   63 +++++++++++++++++++++++--------
 1 files changed, 47 insertions(+), 16 deletions(-)

diff --git a/interface/web/sites/web_vhost_subdomain_edit.php b/interface/web/sites/web_vhost_subdomain_edit.php
index 14f6b8e..225e489 100644
--- a/interface/web/sites/web_vhost_subdomain_edit.php
+++ b/interface/web/sites/web_vhost_subdomain_edit.php
@@ -341,6 +341,8 @@
 		$this->dataRecord["ipv6_address"] = $parent_domain["ipv6_address"];
 		$this->dataRecord["client_group_id"] = $parent_domain["client_group_id"];
 		$this->dataRecord["vhost_type"] = 'name';
+		$this->dataRecord["system_user"] = $parent_domain["system_user"];
+		$this->dataRecord["system_group"] = $parent_domain["system_group"];
 
 		$this->parent_domain_record = $parent_domain;
 
@@ -560,6 +562,32 @@
 				$app->tform->errorMessage .= $app->tform->lng("invalid_rewrite_rules_txt").'<br>';
 			}
 		}
+		
+		// Check custom PHP version
+		if(isset($this->dataRecord['fastcgi_php_version']) && $this->dataRecord['fastcgi_php_version'] != '') {
+			// Check php-fpm mode
+			if($this->dataRecord['php'] == 'php-fpm'){
+				$tmp = $app->db->queryOneRecord("SELECT * FROM server_php WHERE CONCAT(name,':',php_fpm_init_script,':',php_fpm_ini_dir,':',php_fpm_pool_dir) = '".$app->db->quote($this->dataRecord['fastcgi_php_version'])."'");
+				if(is_array($tmp)) {
+					$this->dataRecord['fastcgi_php_version'] = $tmp['name'].':'.$tmp['php_fpm_init_script'].':'.$tmp['php_fpm_ini_dir'].':'.$tmp['php_fpm_pool_dir'];
+				} else {
+					$this->dataRecord['fastcgi_php_version'] = '';
+				}
+				unset($tmp);
+			// Check fast-cgi mode
+			} elseif($this->dataRecord['php'] == 'fast-cgi') {
+				$tmp = $app->db->queryOneRecord("SELECT * FROM server_php WHERE CONCAT(name,':',php_fastcgi_binary,':',php_fastcgi_ini_dir) = '".$app->db->quote($this->dataRecord['fastcgi_php_version'])."'");
+				if(is_array($tmp)) {
+					$this->dataRecord['fastcgi_php_version'] = $tmp['name'].':'.$tmp['php_fastcgi_binary'].':'.$tmp['php_fastcgi_ini_dir'];
+				} else {
+					$this->dataRecord['fastcgi_php_version'] = '';
+				}
+				unset($tmp);
+			} else {
+				// Other PHP modes do not have custom versions, so we force the value to be empty
+				$this->dataRecord['fastcgi_php_version'] = '';
+			}
+		}
 
 		parent::onSubmit();
 	}
@@ -606,24 +634,27 @@
 
 	function onAfterUpdate() {
 		global $app, $conf;
+		
+		//* Update settings when parent domain gets changed
+		if(isset($this->dataRecord["parent_domain_id"]) && $this->dataRecord["parent_domain_id"] != $this->oldDataRecord["parent_domain_id"]) {
+			// Get configuration for the web system
+			$app->uses("getconf");
+			$web_rec = $app->tform->getDataRecord($this->id);
+			$web_config = $app->getconf->get_server_config($app->functions->intval($web_rec["server_id"]), 'web');
 
-		// Get configuration for the web system
-		$app->uses("getconf");
-		$web_rec = $app->tform->getDataRecord($this->id);
-		$web_config = $app->getconf->get_server_config($app->functions->intval($web_rec["server_id"]), 'web');
+			// Set the values for document_root, system_user and system_group
+			$system_user = $app->db->quote($this->parent_domain_record['system_user']);
+			$system_group = $app->db->quote($this->parent_domain_record['system_group']);
+			$document_root = $app->db->quote($this->parent_domain_record['document_root']);
+			$php_open_basedir = str_replace("[website_path]/web", $document_root.'/'.$web_rec['web_folder'], $web_config["php_open_basedir"]);
+			$php_open_basedir = str_replace("[website_domain]/web", $web_rec['domain'].'/'.$web_rec['web_folder'], $php_open_basedir);
+			$php_open_basedir = str_replace("[website_path]", $document_root, $php_open_basedir);
+			$php_open_basedir = $app->db->quote(str_replace("[website_domain]", $web_rec['domain'], $php_open_basedir));
+			$htaccess_allow_override = $app->db->quote($this->parent_domain_record['allow_override']);
 
-		// Set the values for document_root, system_user and system_group
-		$system_user = $app->db->quote($this->parent_domain_record['system_user']);
-		$system_group = $app->db->quote($this->parent_domain_record['system_group']);
-		$document_root = $app->db->quote($this->parent_domain_record['document_root']);
-		$php_open_basedir = str_replace("[website_path]/web", $document_root.'/'.$web_rec['web_folder'], $web_config["php_open_basedir"]);
-		$php_open_basedir = str_replace("[website_domain]/web", $web_rec['domain'].'/'.$web_rec['web_folder'], $php_open_basedir);
-		$php_open_basedir = str_replace("[website_path]", $document_root, $php_open_basedir);
-		$php_open_basedir = $app->db->quote(str_replace("[website_domain]", $web_rec['domain'], $php_open_basedir));
-		$htaccess_allow_override = $app->db->quote($this->parent_domain_record['allow_override']);
-
-		$sql = "UPDATE web_domain SET sys_groupid = ".$app->functions->intval($this->parent_domain_record['sys_groupid']).",system_user = '$system_user', system_group = '$system_group', document_root = '$document_root', allow_override = '$htaccess_allow_override', php_open_basedir = '$php_open_basedir'  WHERE domain_id = ".$this->id;
-		$app->db->query($sql);
+			$sql = "UPDATE web_domain SET sys_groupid = ".$app->functions->intval($this->parent_domain_record['sys_groupid']).",system_user = '$system_user', system_group = '$system_group', document_root = '$document_root', allow_override = '$htaccess_allow_override', php_open_basedir = '$php_open_basedir'  WHERE domain_id = ".$this->id;
+			$app->db->query($sql);
+		}
 	}
 
 }

--
Gitblit v1.9.1