From be38365f1c892c99914c408e3a1d8c396a31663e Mon Sep 17 00:00:00 2001
From: Dominik <info@profi-webdesign.com>
Date: Tue, 29 Dec 2015 18:56:37 -0500
Subject: [PATCH] Posibility to change main-domain of aps-instance over remote (in interface maindomain is always the websites domain but over remote it's now possible to set an alias oder subdomain, that will be used in instance-settings. Important if e.g. wordpress-installation should run unter an aliasdomain instead of the websites domain)

---
 interface/lib/classes/aps_guicontroller.inc.php |   20 +++++++++++++++-----
 interface/lib/classes/remote.d/aps.inc.php      |   11 +++++++++--
 2 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/interface/lib/classes/aps_guicontroller.inc.php b/interface/lib/classes/aps_guicontroller.inc.php
index 3a5084c..f31cf81 100644
--- a/interface/lib/classes/aps_guicontroller.inc.php
+++ b/interface/lib/classes/aps_guicontroller.inc.php
@@ -43,7 +43,17 @@
 		parent::__construct($app);
 	}
 
-
+	/**
+	 * Removes www from Domains name
+	 *
+	 * @param $filename the file to read
+	 * @return $sxe a SimpleXMLElement handle
+	 */
+	public function getMainDomain($domain) {
+		if (substr($domain, 0, 4) == 'www.') $domain = substr($domain, 4);
+		return $domain;
+	}
+	
 
 	/**
 	 * Reads in a package metadata file and registers it's namespaces
@@ -344,9 +354,9 @@
 		$app->uses('tools_sites');
 
 		$webserver_id = 0;
-		$websrv = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain = ?", $settings['main_domain']);
+		$websrv = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain = ?", $this->getMainDomain($settings['main_domain']));
 		if(!empty($websrv)) $webserver_id = $websrv['server_id'];
-		$customerid = $this->getCustomerIDFromDomain($settings['main_domain']);
+		$customerid = $this->getCustomerIDFromDomain($this->getMainDomain($settings['main_domain']));
 
 		if(empty($settings) || empty($webserver_id)) return false;
 
@@ -565,13 +575,13 @@
 			if(in_array($postinput['main_domain'], $domains))
 			{
 				$docroot = $app->db->queryOneRecord("SELECT document_root FROM web_domain
-                    WHERE domain = ?", $postinput['main_domain']);
+                    WHERE domain = ?", $this->getMainDomain($postinput['main_domain']));
 				$new_path = $docroot['document_root'];
 				if(substr($new_path, -1) != '/') $new_path .= '/';
 				$new_path .= $main_location;
 
 				// Get the $customerid which belongs to the selected domain
-				$customerid = $this->getCustomerIDFromDomain($postinput['main_domain']);
+				$customerid = $this->getCustomerIDFromDomain($this->getMainDomain($postinput['main_domain']));
 
 				// First get all domains used for an install, then their loop them
 				// and get the corresponding document roots as well as the defined
diff --git a/interface/lib/classes/remote.d/aps.inc.php b/interface/lib/classes/remote.d/aps.inc.php
index 6497da4..4db5f78 100644
--- a/interface/lib/classes/remote.d/aps.inc.php
+++ b/interface/lib/classes/remote.d/aps.inc.php
@@ -273,8 +273,15 @@
 			return false;
 		}
 	
-		$sql = "SELECT * FROM web_domain WHERE domain = ?";
-		$domain = $app->db->queryOneRecord($sql, $params['main_domain']);
+		if (substr($params['main_domain'], 0, 4) == 'www.') {
+			$domain = substr($params['main_domain'], 4);
+			$sql = "SELECT * FROM web_domain WHERE domain = ? AND subdomain=?";
+			$domain = $app->db->queryOneRecord($sql, $domain, 'www');
+		}
+		else {
+			$sql = "SELECT * FROM web_domain WHERE domain = ?";
+			$domain = $app->db->queryOneRecord($sql, $params['main_domain']);
+		}
 	
 		if (!$domain) {
 			$this->server->fault('invalid parameters', 'No valid domain given.');

--
Gitblit v1.9.1