From f99b37f56dad8e3a1f844f8d3b33ee1ba4b86d62 Mon Sep 17 00:00:00 2001
From: latham <latham@ispconfig3>
Date: Wed, 25 May 2011 19:11:40 -0400
Subject: [PATCH] the altertable for the groups

---
 interface/lib/classes/remoting.inc.php |  309 ++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 291 insertions(+), 18 deletions(-)

diff --git a/interface/lib/classes/remoting.inc.php b/interface/lib/classes/remoting.inc.php
index 4bdccb8..5e9e45d 100644
--- a/interface/lib/classes/remoting.inc.php
+++ b/interface/lib/classes/remoting.inc.php
@@ -145,6 +145,18 @@
         }
     }
 	
+	public function server_get_serverid_by_ip($session_id, $ipaddress)
+    {
+        global $app;
+		if(!$this->checkPerm($session_id, 'server_get_serverid_by_ip')) {
+        	$this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+            return false;
+		}
+        $sql = "SELECT server_id FROM server_ip WHERE ip_address  = '$ipaddress' LIMIT 1 ";
+        $all = $app->db->queryAllRecords($sql);
+        return $all;
+	}
+	
 	//* Get mail domain details
 	public function mail_domain_get($session_id, $primary_id)
     {
@@ -189,6 +201,53 @@
 			return false;
 		}
 		$affected_rows = $this->deleteQuery('../mail/form/mail_domain.tform.php', $primary_id);
+		return $affected_rows;
+	}
+	
+	//* Get mail mailinglist details
+	public function mail_mailinglist_get($session_id, $primary_id)
+    {
+		global $app;
+		
+		if(!$this->checkPerm($session_id, 'mail_mailinglist_get')) {
+			$this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+			return false;
+		}
+		$app->uses('remoting_lib');
+		$app->remoting_lib->loadFormDef('../mail/form/mail_mailinglist.tform.php');
+		return $app->remoting_lib->getDataRecord($primary_id);
+	}
+	
+	//* Add a mail mailinglist
+	public function mail_mailinglist_add($session_id, $client_id, $params)
+    {
+		if(!$this->checkPerm($session_id, 'mail_mailinglist_add')) {
+			$this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+			return false;
+		}
+		$primary_id = $this->insertQuery('../mail/form/mail_mailinglist.tform.php',$client_id,$params);
+		return $primary_id;
+	}
+	
+	//* Update a mail mailinglist
+	public function mail_mailinglist_update($session_id, $client_id, $primary_id, $params)
+    {
+		if(!$this->checkPerm($session_id, 'mail_mailinglist_update')) {
+			$this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+			return false;
+		}
+		$affected_rows = $this->updateQuery('../mail/form/mail_mailinglist.tform.php', $client_id, $primary_id, $params);
+		return $affected_rows;
+	}
+	
+	//* Delete a mail mailinglist
+	public function mail_mailinglist_delete($session_id, $primary_id)
+    {
+		if(!$this->checkPerm($session_id, 'mail_mailinglist_delete')) {
+			$this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+			return false;
+		}
+		$affected_rows = $this->deleteQuery('../mail/form/mail_mailinglist.tform.php', $primary_id);
 		return $affected_rows;
 	}
 	
@@ -958,7 +1017,7 @@
 					$this->server->fault('permission_denied','You do not have the permissions to access this function.');
 					return false;
 			}
-			$affected_rows = $this->updateQuery('../client/form/client.tform.php', $client_id, $reseller_id, $params);
+			$affected_rows = $this->updateQuery('../client/form/client.tform.php', $reseller_id, $client_id, $params);
 			
 			$app->remoting_lib->ispconfig_sysuser_update($params,$client_id);
 			
@@ -980,6 +1039,91 @@
 			$app->remoting_lib->ispconfig_sysuser_delete($client_id);
 			
 			return $affected_rows;
+	}
+	
+	// -----------------------------------------------------------------------------------------------
+	
+	public function client_delete_everything($session_id, $client_id)
+    {
+        global $app, $conf;
+		if(!$this->checkPerm($session_id, 'client_delete_everything')) {
+        	$this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+            return false;
+		}
+        $client_id = intval($client_id);
+	$client_group = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = $client_id");
+
+	$tables = 'client,dns_rr,dns_soa,dns_slave,ftp_user,mail_access,mail_content_filter,mail_domain,mail_forwarding,mail_get,mail_user,mail_user_filter,shell_user,spamfilter_users,support_message,web_database,web_domain,web_traffic';
+		$tables_array = explode(',',$tables);
+		$client_group_id = intval($client_group['groupid']);
+		
+		$table_list = array();
+		if($client_group_id > 1) {
+			foreach($tables_array as $table) {
+				if($table != '') {
+					$records = $app->db->queryAllRecords("SELECT * FROM $table WHERE sys_groupid = ".$client_group_id);
+					$number = count($records);
+					if($number > 0) $table_list[] = array('table' => $table."(".$number.")");
+				}
+			}
+		}
+
+
+	if($client_id > 0) {			
+			// remove the group of the client from the resellers group
+			$parent_client_id = intval($this->dataRecord['parent_client_id']);
+			$parent_user = $app->db->queryOneRecord("SELECT userid FROM sys_user WHERE client_id = $parent_client_id");
+			$client_group = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = $client_id");
+			$app->auth->remove_group_from_user($parent_user['userid'],$client_group['groupid']);
+			
+			// delete the group of the client
+			$app->db->query("DELETE FROM sys_group WHERE client_id = $client_id");
+			
+			// delete the sys user(s) of the client
+			$app->db->query("DELETE FROM sys_user WHERE client_id = $client_id");
+			
+			// Delete all records (sub-clients, mail, web, etc....)  of this client.
+			$tables = 'client,dns_rr,dns_soa,dns_slave,ftp_user,mail_access,mail_content_filter,mail_domain,mail_forwarding,mail_get,mail_user,mail_user_filter,shell_user,spamfilter_users,support_message,web_database,web_domain,web_traffic';
+			$tables_array = explode(',',$tables);
+			$client_group_id = intval($client_group['groupid']);
+			if($client_group_id > 1) {
+				foreach($tables_array as $table) {
+					if($table != '') {
+						$records = $app->db->queryAllRecords("SELECT * FROM $table WHERE sys_groupid = ".$client_group_id);
+						// find the primary ID of the table
+						$table_info = $app->db->tableInfo($table);
+						$index_field = '';
+						foreach($table_info as $tmp) {
+							if($tmp['option'] == 'primary') $index_field = $tmp['name'];
+						}
+						// Delete the records
+						if($index_field != '') {
+							if(is_array($records)) {
+								foreach($records as $rec) {
+									$app->db->datalogDelete($table, $index_field, $rec[$index_field]);
+								}
+							}
+						}
+						
+					}
+				}
+			}
+			
+			
+			
+		}
+        
+		if (!$this->checkPerm($session_id, 'client_delete'))
+			{
+					$this->server->fault('permission_denied','You do not have the permissions to access this function.');
+					return false;
+			}
+			$affected_rows = $this->deleteQuery('../client/form/client.tform.php',$client_id);
+			
+			// $app->remoting_lib->ispconfig_sysuser_delete($client_id);
+
+
+        return false;
 	}
 	
 	// Website functions ---------------------------------------------------------------------------------------
@@ -1191,15 +1335,18 @@
 	}
 	
 	//* Add a record
-	public function sites_web_domain_add($session_id, $client_id, $params)
-    {
+	public function sites_web_domain_add($session_id, $client_id, $params, $readonly = false)
+	{
+		global $app;
 		if(!$this->checkPerm($session_id, 'sites_web_domain_add')) {
 			$this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
 			return false;
 		}
-		$affected_rows =  $this->insertQuery('../sites/form/web_domain.tform.php',$client_id,$params, 'sites:web_domain:on_after_insert');
-		return $affected_rows;		
-	}
+		$domain_id = $this->insertQuery('../sites/form/web_domain.tform.php',$client_id,$params, 'sites:web_domain:on_after_insert');
+		if ($readonly === true)
+			$app->db->query("UPDATE web_domain SET `sys_userid` = '1' WHERE domain_id = ".$domain_id);
+			return $domain_id;
+		}
 	
 	//* Update a record
 	public function sites_web_domain_update($session_id, $client_id, $primary_id, $params)
@@ -1317,6 +1464,58 @@
 		}
 		$affected_rows = $this->deleteQuery('../sites/form/web_subdomain.tform.php',$primary_id);
 		return $affected_rows;
+	}
+	
+	// -----------------------------------------------------------------------------------------------
+	
+	//* Get record details
+	public function domains_domain_get($session_id, $primary_id)
+    {
+		global $app;
+		
+		if(!$this->checkPerm($session_id, 'domains_domain_get')) {
+			$this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+			return false;
+		}
+		$app->uses('remoting_lib');
+		$app->remoting_lib->loadFormDef('../domain/form/domain.tform.php');
+		return $app->remoting_lib->getDataRecord($primary_id);
+	}
+
+	//* Add a record
+	public function domains_domain_add($session_id, $client_id, $params)
+    {
+		if(!$this->checkPerm($session_id, 'domains_domain_add')) {
+			$this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+			return false;
+		}
+		return $this->insertQuery('../domain/form/domain.tform.php',$client_id,$params);
+	}
+
+	//* Delete a record
+	public function domains_domain_delete($session_id, $primary_id)
+    {
+		if(!$this->checkPerm($session_id, 'domains_domain_delete')) {
+			$this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+			return false;
+		}
+		$affected_rows = $this->deleteQuery('../domain/form/domain.tform.php',$primary_id);
+		return $affected_rows;
+	}
+
+// -----------------------------------------------------------------------------------------------
+
+	public function domains_get_all_by_user($session_id, $group_id)
+    {
+        global $app;
+		if(!$this->checkPerm($session_id, 'domains_get_all_by_user')) {
+        	$this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+            return false;
+		}
+        $group_id = intval($group_id);
+        $sql = "SELECT domain_id, domain FROM domain WHERE sys_groupid  = $group_id ";
+        $all = $app->db->queryAllRecords($sql);
+        return $all;
 	}
 	
 	
@@ -1922,7 +2121,14 @@
 		$app->remoting_lib->loadFormDef($formdef_file);
 		
 		//* load the user profile of the client
-		$app->remoting_lib->loadUserProfile($reseller_id);		
+		$app->remoting_lib->loadUserProfile($reseller_id);
+		
+		//* load the client template
+		if(isset($params['template_master']) and $params['template_master'] > 0)
+		{
+			$template=$app->db->queryOneRecord("SELECT * FROM client_template WHERE template_id=".intval($params['template_master']));
+			$params=array_merge($params,$template);
+		}
 		
 		//* Get the SQL query
 		$sql = $app->remoting_lib->getSQL($params,'INSERT',0);
@@ -1932,6 +2138,8 @@
 		}
 		
 		$app->db->query($sql);
+		
+		$app->plugin->raiseEvent('client:client:on_after_insert',$this);
 		
 		if($app->db->errorMessage != '') {
 			$this->server->fault('database_error', $app->db->errorMessage . ' '.$sql);
@@ -1947,6 +2155,14 @@
 			$new_rec = $app->remoting_lib->getDataRecord($insert_id);
 			$app->remoting_lib->datalogSave('INSERT',$primary_id,array(),$new_rec);			
 			$app->remoting_lib->ispconfig_sysuser_add($params,$insert_id);
+
+            if($reseller_id) {
+                $client_group = $app->db->queryOneRecord("SELECT * FROM sys_group WHERE client_id = ".$insert_id);
+                $reseller_user = $app->db->queryOneRecord("SELECT * FROM sys_user WHERE client_id = ".$reseller_id);
+                $app->auth->add_group_to_user($reseller_user['userid'], $client_group['groupid']);
+                $app->db->query("UPDATE client SET parent_client_id = ".$reseller_id." WHERE client_id = ".$insert_id);
+            }   
+
 		}
 		return $insert_id;
 	}
@@ -2141,7 +2357,7 @@
 			$new_group[] = intval( $group_id);
         }
         $group_list = implode(',', $new_group);
-		$sql ="SELECT domain, domain_id, document_root FROM web_domain WHERE ( (sys_userid = $sys_userid  AND sys_perm_user LIKE '%r%') OR (sys_groupid IN ($group_list) AND sys_perm_group LIKE '%r%') OR  sys_perm_other LIKE '%r%') AND type = 'vhost'";
+		$sql ="SELECT domain, domain_id, document_root, active FROM web_domain WHERE ( (sys_userid = $sys_userid  AND sys_perm_user LIKE '%r%') OR (sys_groupid IN ($group_list) AND sys_perm_group LIKE '%r%') OR  sys_perm_other LIKE '%r%') AND type = 'vhost'";
         $result = $app->db->queryAllRecords($sql);
         if(isset($result)) {
 			return $result;
@@ -2236,8 +2452,29 @@
 			return false;
         }
     }
-    
-    
+
+    /**
+    * Fetch the mail_domain record for the provided domain.
+    * @param int session_id
+    * @param string the fully qualified domain (or subdomain)
+    * @return array array of arrays corresponding to the mail_domain table's records
+    * @author till, benlake
+    */
+	public function mail_domain_get_by_domain($session_id, $domain) {
+        global $app;
+        if(!$this->checkPerm($session_id, 'mail_domain_get_by_domain')) {
+			$this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+            return false;
+        }        
+        if (!empty($domain)) {
+        	$domain      	= $app->db->quote($domain);        	
+    	    $sql            = "SELECT * FROM mail_domain WHERE domain = '$domain'";
+        	$result         = $app->db->queryAllRecords($sql);
+        	return          $result;
+        }
+        return false;
+    }
+
 	/**
    	* Get a list of functions
    	* @param 	int		session id
@@ -2289,26 +2526,40 @@
 	/**
 	 * Get all DNS zone by user 
 	 *@author	Julio Montoya <gugli100@gmail.com> BeezNest 2010
-	 */
-	 /*
-	  I will update this function
+	 */	 
     public function dns_zone_get_by_user($session_id, $client_id, $server_id) {
         global $app;
         if(!$this->checkPerm($session_id, 'dns_zone_get')) {
-                //$this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
-                //return false;
+			$this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+            return false;
         }        
         if (!empty($client_id) && !empty($server_id)) {
         	$server_id      = intval($server_id);
         	$client_id      = intval($client_id);
-    	    $sql            = "SELECT id, origin FROM dns_soa d INNER JOIN sys_user s on(d.sys_groupid = s.default_group) WHERE client_id = '$client_id' AND server_id = $server_id";
+    	    $sql            = "SELECT id, origin FROM dns_soa d INNER JOIN sys_user s on(d.sys_groupid = s.default_group) WHERE client_id = $client_id AND server_id = $server_id";
         	$result         = $app->db->queryAllRecords($sql);
         	return          $result;
         }
         return false;
     }
-    */
     
+	/**
+	 * 	Get all dns records for a zone
+	 *	@param 	int		session id
+	 *	@param 	int		dns zone id
+	 *	@author	Sebastian Mogilowski <sebastian@mogilowski.net> 2011
+	 */
+	public function dns_rr_get_all_by_zone($session_id, $zone_id) {
+		global $app;
+		if(!$this->checkPerm($session_id, 'dns_zone_get')) {
+			 $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+            return false;
+		}
+        $sql    = "SELECT * FROM dns_rr WHERE zone = ".intval($zone_id);;
+		$result = $app->db->queryAllRecords($sql);
+        return $result;
+   }
+
 	/**
 	 * Changes DNS zone status 
 	 *	@param 	int		session id
@@ -2325,11 +2576,33 @@
         }        
         if(in_array($status, array('active', 'inactive'))) {	    	        	
 	    	if ($status == 'active') {
+	    		$status = 'Y';
+	    	} else {
+	    		$status = 'N';
+	    	}
+	        $sql = "UPDATE dns_soa SET active = '$status' WHERE id = ".intval($primary_id);
+	        $app->db->query($sql);
+	        $result = $app->db->affectedRows();
+	        return $result;
+        } else {
+			$this->server->fault('status_undefined', 'The status is not available');
+			return false;
+        }  
+    }
+    
+    public function mail_domain_set_status($session_id, $primary_id, $status) {
+        global $app;
+        if(!$this->checkPerm($session_id, 'mail_domain_set_status')) {
+              $this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+               return false;
+        }        
+        if(in_array($status, array('active', 'inactive'))) {	    	        	
+	    	if ($status == 'active') {
 	    		$status = 'y';
 	    	} else {
 	    		$status = 'n';
 	    	}
-	        $sql = "UPDATE dns_soa SET active = '$status' WHERE id = ".intval($primary_id);
+	        $sql = "UPDATE mail_domain SET active = '$status' WHERE domain_id = ".intval($primary_id);
 	        $app->db->query($sql);
 	        $result = $app->db->affectedRows();
 	        return $result;

--
Gitblit v1.9.1