- $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();
+ // 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();
+ } catch (AlreadyFulfilledException $e) {
+ $sub = Subscription_queue::getSubQueue($subscriber, $other);
+ }