]> git.mxchange.org Git - friendica.git/commitdiff
This is better
authorMichael <heluecht@pirati.ca>
Mon, 1 May 2017 06:35:41 +0000 (06:35 +0000)
committerMichael <heluecht@pirati.ca>
Mon, 1 May 2017 06:35:41 +0000 (06:35 +0000)
include/dba.php
include/remove_contact.php

index b2ed96eeb9db4e502cb8a4a16a53ce4854a8ab71..6fc51dfbe713a9af26052a029bbbd91decf22097 100644 (file)
@@ -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) {
index 68bf2adfeaa103c22f3849dd30dc3e997a4741d0..bb110a284b9283123ec0c2f78c090aff87d8a673 100644 (file)
@@ -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));
 }
 ?>