inc/record.inc.php
changeset 60 6ffacb626294
parent 57 acc4da012674
child 62 ce4919f37489
--- a/inc/record.inc.php	Wed Jan 02 22:24:32 2008 +0000
+++ b/inc/record.inc.php	Thu Jan 03 20:27:47 2008 +0000
@@ -675,19 +675,78 @@
 	global $db;
 	if (is_numeric($id))
 	{
-		$result = $db->query("SELECT domains.id AS domain_id, domains.name AS name FROM domains LEFT JOIN zones ON domains.id=zones.domain_id WHERE owner=$id");
+		$a_zones = array();
+
+		// Check for zones the user has full access for (the 
+		// user is owner of the zone.
+
+		$res_full = $db->query("SELECT 
+					domains.id AS domain_id, 
+					domains.name AS name 
+					FROM domains 
+					LEFT JOIN zones ON domains.id=zones.domain_id 
+					WHERE owner=$id"); 
+		
+		// Process the output.
 
-		$ret = array();
+		$numrows = $res_full->numRows();
+		$i=1;
+		if ($numrows > 0) 
+		{
+			$andnot=" AND NOT domains.id IN (";
+			while($r = $res_full->fetchRow()) {
+				
+				// Create array of zone id's and name's the owner
+				// has full access to.
+
+				$a_zones[] = array(
+				"id"            =>              $r["domain_id"],
+				"name"          =>              $r["name"],
+				"partial"	=>		"0"
+				);
 
-		// Put all the information in a big array.
-		while ($r = $result->fetchRow())
+				// Create AND NOT for query of zones the user has 
+				// only partial access to. In that query we just 
+				// want to see the zones he has not full access to 
+				// as well.
+
+				$andnot.=$r["domain_id"];
+				if ($i < $numrows) {
+					$andnot.=",";
+					$i++;
+				}
+
+			}
+			$andnot.=")";
+		}
+		else
 		{
-			$ret[] = array(
+			$andnot="";
+		}
+
+		// Check for zones the user has partial access only to.
+
+		$res_partial = $db->query("SELECT DISTINCT 
+					records.domain_id, 
+					domains.name 
+					FROM records, record_owners, domains 
+					WHERE record_owners.user_id = '".$id."' 
+					AND records.id = record_owners.record_id 
+					AND domains.id = records.domain_id
+					".$andnot.";");
+		
+		// Add these zones to the array as well.
+
+		while ($r = $res_partial->fetchRow())
+		{
+			$a_zones[] = array(
 			"id"            =>              $r["domain_id"],
-			"name"          =>              $r["name"]
+			"name"          =>              $r["name"],
+			"partial"	=>		"1"
 			);
 		}
-		return $ret;
+
+		return $a_zones;
 	}
 	else
 	{