]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Clear Attentions when notice or profile is removed
authorMikael Nordfeldth <mmn@hethane.se>
Thu, 6 Mar 2014 13:43:36 +0000 (14:43 +0100)
committerMikael Nordfeldth <mmn@hethane.se>
Thu, 6 Mar 2014 13:43:36 +0000 (14:43 +0100)
classes/Notice.php
classes/Profile.php

index 3fea53108160829b9ab1c23bdf4e25093b80b3f7..fe1442ea97d1c0db188a4145fdf9d5028270b6f7 100644 (file)
@@ -194,8 +194,8 @@ class Notice extends Managed_DataObject
             $this->clearTags();
             $this->clearGroupInboxes();
             $this->clearFiles();
+            $this->clearAttentions();
 
-            // NOTE: we don't clear inboxes
             // NOTE: we don't clear queue items
         }
 
@@ -1910,6 +1910,20 @@ class Notice extends Managed_DataObject
         return $options;
     }
 
+    function clearAttentions()
+    {
+        $att = new Attention();
+        $att->notice_id = $this->getID();
+
+        if ($att->find()) {
+            while ($att->fetch()) {
+                // Can't do delete() on the object directly since it won't remove all of it
+                $other = clone($att);
+                $other->delete();
+            }
+        }
+    }
+
     function clearReplies()
     {
         $replyNotice = new Notice();
index fe2ce343d7bf92f6eec42e1ece2a2c6aafaf7e41..6adf059781ac3c933c263a8f9984da943dcbb47f 100644 (file)
@@ -924,6 +924,7 @@ class Profile extends Managed_DataObject
         $this->_deleteMessages();
         $this->_deleteTags();
         $this->_deleteBlocks();
+        $this->_deleteAttentions();
         Avatar::deleteFromProfile($this, true);
 
         // Warning: delete() will run on the batch objects,
@@ -1025,6 +1026,20 @@ class Profile extends Managed_DataObject
         $block->delete();
     }
 
+    function _deleteAttentions()
+    {
+        $att = new Attention();
+        $att->profile_id = $this->getID();
+
+        if ($att->find()) {
+            while ($att->fetch()) {
+                // Can't do delete() on the object directly since it won't remove all of it
+                $other = clone($att);
+                $other->delete();
+            }
+        }
+    }
+
     // XXX: identical to Notice::getLocation.
 
     public function getLocation()