X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=classes%2FSubscription.php;h=314a597f55e681e08a55e1adc26a25327384c523;hb=3e1a6a65e65e0f5a051e39b3b792b53e1cc358cb;hp=5c5101ad1d1bb430ed0493037782b0ed4c0c87b9;hpb=c214aa5149df0e0804c362021c209f78b5ee6483;p=quix0rs-gnu-social.git diff --git a/classes/Subscription.php b/classes/Subscription.php index 5c5101ad1d..314a597f55 100644 --- a/classes/Subscription.php +++ b/classes/Subscription.php @@ -94,10 +94,14 @@ 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) { - $sub = Subscription_queue::saveNew($subscriber, $other); - $sub->notify(); + try { + $sub = Subscription_queue::saveNew($subscriber, $other); + $sub->notify(); + } catch (AlreadyFulfilledException $e) { + $sub = Subscription_queue::getSubQueue($subscriber, $other); + } } else { - $sub = self::saveNew($subscriber->id, $other->id); + $sub = self::saveNew($subscriber, $other); $sub->notify(); self::blow('user:notices_with_friends:%d', $subscriber->id); @@ -124,7 +128,7 @@ class Subscription extends Managed_DataObject } } - if ($sub instanceof Subscription) { // i.e. not SubscriptionQueue + if ($sub instanceof Subscription) { // i.e. not Subscription_queue Event::handle('EndSubscribe', array($subscriber, $other)); } } @@ -132,16 +136,26 @@ class Subscription extends Managed_DataObject return $sub; } + static function ensureStart(Profile $subscriber, Profile $other, $force=false) + { + try { + $sub = self::start($subscriber, $other, $force); + } catch (AlreadyFulfilledException $e) { + return self::getSubscription($subscriber, $other); + } + return $sub; + } + /** * 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();