From: Michael <heluecht@pirati.ca>
Date: Mon, 1 May 2017 06:35:41 +0000 (+0000)
Subject: This is better
X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=e6cbe3be11ea348ef041258473c101523a004d94;p=friendica.git

This is better
---

diff --git a/include/dba.php b/include/dba.php
index b2ed96eeb9..6fc51dfbe7 100644
--- a/include/dba.php
+++ b/include/dba.php
@@ -812,20 +812,14 @@ class dba {
 		// Is there a relation entry for the table?
 		if (isset(self::$relation[$table])) {
 			foreach (self::$relation[$table] AS $field => $rel_def) {
-				// Currently we only support relations with a single variable
-				if (count($rel_def) > 1) {
-					return false;
-				}
-
-				$rel_field = array_values($rel_def)[0];
-				$rel_table = array_keys($rel_def)[0];
-
 				// When the search field is the relation field, we don't need to fetch the rows
 				// This is useful when the leading record is already deleted in the frontend but the rest is done in the backend
 				if ((count($param) == 1) AND ($field == array_keys($param)[0])) {
-					$retval = self::delete($rel_table, array($rel_field => array_values($param)[0]), true, $callstack);
-					if (!$retval) {
-						return false;
+					foreach ($rel_def AS $rel_table => $rel_field) {
+						$retval = self::delete($rel_table, array($rel_field => array_values($param)[0]), true, $callstack);
+						if (!$retval) {
+							return false;
+						}
 					}
 				} else {
 					// Fetch all rows that are to be deleted
@@ -834,10 +828,12 @@ class dba {
 					$retval = false;
 					$data = self::p($sql, $param);
 					while ($row = self::fetch($data)) {
-						// We have to do a separate delete process per row
-						$retval = self::delete($rel_table, array($rel_field => $row[$field]), true, $callstack);
-						if (!$retval) {
-							return false;
+						foreach ($rel_def AS $rel_table => $rel_field) {
+							// We have to do a separate delete process per row
+							$retval = self::delete($rel_table, array($rel_field => $row[$field]), true, $callstack);
+							if (!$retval) {
+								return false;
+							}
 						}
 					}
 					if (!$retval) {
diff --git a/include/remove_contact.php b/include/remove_contact.php
index 68bf2adfea..bb110a284b 100644
--- a/include/remove_contact.php
+++ b/include/remove_contact.php
@@ -19,14 +19,7 @@ function remove_contact_run($argv, $argc) {
 		return;
 	}
 
-	q("DELETE FROM `item` WHERE `contact-id` = %d", intval($id));
-
-	q("DELETE FROM `photo` WHERE `contact-id` = %d", intval($id));
-
-	q("DELETE FROM `mail` WHERE `contact-id` = %d", intval($id));
-
-	q("DELETE FROM `event` WHERE `cid` = %d", intval($id));
-
-	q("DELETE FROM `queue` WHERE `cid` = %d", intval($id));
+	// Now we delete all the depending table entries
+	dba::delete('contact', array('id' => $id));
 }
 ?>