]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
do complete unsubscribe process when deleting a user
authorEvan Prodromou <evan@status.net>
Wed, 31 Mar 2010 19:02:19 +0000 (15:02 -0400)
committerEvan Prodromou <evan@status.net>
Wed, 31 Mar 2010 19:02:19 +0000 (15:02 -0400)
classes/Profile.php

index eded1ff71fcc84a2a4ec9c59dd16b9b73eafe703..5de35c191af66c78ab4ba1cbd284b3c376c25844 100644 (file)
@@ -577,11 +577,41 @@ class Profile extends Memcached_DataObject
     {
         $sub = new Subscription();
         $sub->subscriber = $this->id;
-        $sub->delete();
+
+        $sub->find();
+
+        while ($sub->fetch()) {
+            $other = Profile::staticGet('id', $sub->subscribed);
+            if (empty($other)) {
+                continue;
+            }
+            if ($other->id == $this->id) {
+                continue;
+            }
+            Subscription::cancel($this, $other);
+        }
 
         $subd = new Subscription();
         $subd->subscribed = $this->id;
-        $subd->delete();
+        $subd->find();
+
+        while ($subd->fetch()) {
+            $other = Profile::staticGet('id', $subd->subscriber);
+            if (empty($other)) {
+                continue;
+            }
+            if ($other->id == $this->id) {
+                continue;
+            }
+            Subscription::cancel($other, $this);
+        }
+
+        $self = new Subscription();
+
+        $self->subscriber = $this->id;
+        $self->subscribed = $this->id;
+
+        $self->delete();
     }
 
     function _deleteMessages()