]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - classes/Subscription.php
Don't abort on too long notices in Notice::saveActivity
[quix0rs-gnu-social.git] / classes / Subscription.php
index 314a597f55e681e08a55e1adc26a25327384c523..c532a3c3de67474b0ca7a638b4cdac939527bcd3 100644 (file)
@@ -92,8 +92,8 @@ class Subscription extends Managed_DataObject
         }
 
         if (Event::handle('StartSubscribe', array($subscriber, $other))) {
-            $otherUser = User::getKV('id', $other->id);
-            if ($otherUser instanceof User && $otherUser->subscribe_policy == User::SUBSCRIBE_POLICY_MODERATE && !$force) {
+            // unless subscription is forced, the user policy for subscription approvals is tested
+            if (!$force && $other->requiresSubscriptionApproval($subscriber)) {
                 try {
                     $sub = Subscription_queue::saveNew($subscriber, $other);
                     $sub->notify();
@@ -101,6 +101,7 @@ class Subscription extends Managed_DataObject
                     $sub = Subscription_queue::getSubQueue($subscriber, $other);
                 }
             } else {
+                $otherUser = User::getKV('id', $other->id);
                 $sub = self::saveNew($subscriber, $other);
                 $sub->notify();
 
@@ -159,8 +160,8 @@ class Subscription extends Managed_DataObject
         $sub->jabber     = 1;
         $sub->sms        = 1;
         $sub->created    = common_sql_now();
-        $sub->uri        = self::newURI($sub->subscriber,
-                                        $sub->subscribed,
+        $sub->uri        = self::newUri($subscriber,
+                                        $other,
                                         $sub->created);
 
         $result = $sub->insert();
@@ -267,18 +268,20 @@ class Subscription extends Managed_DataObject
         return $sub;
     }
 
-    function asActivity()
+    public function getSubscriber()
     {
-        $subscriber = Profile::getKV('id', $this->subscriber);
-        $subscribed = Profile::getKV('id', $this->subscribed);
+        return Profile::getByID($this->subscriber);
+    }
 
-        if (!$subscriber instanceof Profile) {
-            throw new NoProfileException($this->subscriber);
-        }
+    public function getSubscribed()
+    {
+        return Profile::getByID($this->subscribed);
+    }
 
-        if (!$subscribed instanceof Profile) {
-            throw new NoProfileException($this->subscribed);
-        }
+    function asActivity()
+    {
+        $subscriber = $this->getSubscriber();
+        $subscribed = $this->getSubscribed();
 
         $act = new Activity();
 
@@ -286,7 +289,7 @@ class Subscription extends Managed_DataObject
 
         // XXX: rationalize this with the URL
 
-        $act->id   = $this->getURI();
+        $act->id   = $this->getUri();
 
         $act->time    = strtotime($this->created);
         // TRANS: Activity title when subscribing to another person.
@@ -431,20 +434,8 @@ class Subscription extends Managed_DataObject
         return parent::update($dataObject);
     }
 
-    function getURI()
-    {
-        if (!empty($this->uri)) {
-            return $this->uri;
-        } else {
-            return self::newURI($this->subscriber, $this->subscribed, $this->created);
-        }
-    }
-
-    static function newURI($subscriber_id, $subscribed_id, $created)
+    public function getUri()
     {
-        return TagURI::mint('follow:%d:%d:%s',
-                            $subscriber_id,
-                            $subscribed_id,
-                            common_date_iso8601($created));
+        return $this->uri ?: self::newUri($this->getSubscriber(), $this->getSubscribed(), $this->created);
     }
 }