]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - classes/Subscription.php
Merge remote-tracking branch 'upstream/master'
[quix0rs-gnu-social.git] / classes / Subscription.php
index 6601bcd6fc10ce0b0678b17e5fd3392dc653b09c..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,7 +101,8 @@ class Subscription extends Managed_DataObject
                     $sub = Subscription_queue::getSubQueue($subscriber, $other);
                 }
             } else {
-                $sub = self::saveNew($subscriber->id, $other->id);
+                $otherUser = User::getKV('id', $other->id);
+                $sub = self::saveNew($subscriber, $other);
                 $sub->notify();
 
                 self::blow('user:notices_with_friends:%d', $subscriber->id);
@@ -150,17 +151,17 @@ class Subscription extends Managed_DataObject
      * Low-level subscription save.
      * Outside callers should use Subscription::start()
      */
-    protected function saveNew($subscriber_id, $other_id)
+    protected static function saveNew(Profile $subscriber, Profile $other)
     {
         $sub = new Subscription();
 
-        $sub->subscriber = $subscriber_id;
-        $sub->subscribed = $other_id;
+        $sub->subscriber = $subscriber->getID();
+        $sub->subscribed = $other->getID();
         $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);
     }
 }