From fc3125cf28fbcf072194be4465a145d54a044877 Mon Sep 17 00:00:00 2001 From: Mikael Nordfeldth Date: Mon, 5 May 2014 23:57:41 +0200 Subject: [PATCH] More modern coding, stuff related to subscriptions Also trying to use the newly implemented AlreadyFulfilledException --- classes/Subscription.php | 32 +++++++++---------- classes/Subscription_queue.php | 20 ++++++------ plugins/OStatus/actions/usersalmon.php | 6 +++- .../salmon.php => lib/salmonaction.php} | 2 +- 4 files changed, 30 insertions(+), 30 deletions(-) rename plugins/OStatus/{actions/salmon.php => lib/salmonaction.php} (99%) diff --git a/classes/Subscription.php b/classes/Subscription.php index 4f27537f27..12f4e86f10 100644 --- a/classes/Subscription.php +++ b/classes/Subscription.php @@ -17,21 +17,16 @@ * along with this program. If not, see . */ -if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } +if (!defined('GNUSOCIAL')) { exit(1); } /** * Table Definition for subscription */ -require_once INSTALLDIR.'/classes/Memcached_DataObject.php'; - class Subscription extends Managed_DataObject { const CACHE_WINDOW = 201; const FORCE = true; - ###START_AUTOCODE - /* the code below is auto generated do not remove the above tag */ - public $__table = 'subscription'; // table name public $subscriber; // int(4) primary_key not_null public $subscribed; // int(4) primary_key not_null @@ -88,7 +83,7 @@ class Subscription extends Managed_DataObject if (self::exists($subscriber, $other)) { // TRANS: Exception thrown when trying to subscribe while already subscribed. - throw new Exception(_('Already subscribed!')); + throw new AlreadyFulfilledException(_('Already subscribed!')); } if ($other->hasBlocked($subscriber)) { @@ -98,7 +93,7 @@ class Subscription extends Managed_DataObject if (Event::handle('StartSubscribe', array($subscriber, $other))) { $otherUser = User::getKV('id', $other->id); - if ($otherUser && $otherUser->subscribe_policy == User::SUBSCRIBE_POLICY_MODERATE && !$force) { + if ($otherUser instanceof User && $otherUser->subscribe_policy == User::SUBSCRIBE_POLICY_MODERATE && !$force) { $sub = Subscription_queue::saveNew($subscriber, $other); $sub->notify(); } else { @@ -113,13 +108,16 @@ class Subscription extends Managed_DataObject $subscriber->blowSubscriptionCount(); $other->blowSubscriberCount(); - if (!empty($otherUser) && + if ($otherUser instanceof User && $otherUser->autosubscribe && !self::exists($other, $subscriber) && !$subscriber->hasBlocked($other)) { try { self::start($other, $subscriber); + } catch (AlreadyFulfilledException $e) { + // This shouldn't happen due to !self::exists above + common_debug('Tried to autosubscribe a user to its new subscriber.'); } catch (Exception $e) { common_log(LOG_ERR, "Exception during autosubscribe of {$other->nickname} to profile {$subscriber->id}: {$e->getMessage()}"); } @@ -151,7 +149,7 @@ class Subscription extends Managed_DataObject $result = $sub->insert(); - if (!$result) { + if ($result===false) { common_log_db_error($sub, 'INSERT', __FILE__); // TRANS: Exception thrown when a subscription could not be stored on the server. throw new Exception(_('Could not save subscription.')); @@ -173,7 +171,7 @@ class Subscription extends Managed_DataObject { $subscribedUser = User::getKV('id', $this->subscribed); - if (!empty($subscribedUser)) { + if ($subscribedUser instanceof User) { $subscriber = Profile::getKV('id', $this->subscriber); @@ -189,7 +187,7 @@ class Subscription extends Managed_DataObject { if (!self::exists($subscriber, $other)) { // TRANS: Exception thrown when trying to unsibscribe without a subscription. - throw new Exception(_('Not subscribed!')); + throw new AlreadyFulfilledException(_('Not subscribed!')); } // Don't allow deleting self subs @@ -234,7 +232,7 @@ class Subscription extends Managed_DataObject { $sub = Subscription::pkeyGet(array('subscriber' => $subscriber->id, 'subscribed' => $other->id)); - return (empty($sub)) ? false : true; + return ($sub instanceof Subscription); } function asActivity() @@ -242,12 +240,12 @@ class Subscription extends Managed_DataObject $subscriber = Profile::getKV('id', $this->subscriber); $subscribed = Profile::getKV('id', $this->subscribed); - if (empty($subscriber)) { - throw new Exception(sprintf(_('No profile for the subscriber: %d'), $this->subscriber)); + if (!$subscriber instanceof Profile) { + throw new NoProfileException($this->subscriber); } - if (empty($subscribed)) { - throw new Exception(sprintf(_('No profile for the subscribed: %d'), $this->subscribed)); + if (!$subscribed instanceof Profile) { + throw new NoProfileException($this->subscribed); } $act = new Activity(); diff --git a/classes/Subscription_queue.php b/classes/Subscription_queue.php index ea0e906d43..405eca93fd 100644 --- a/classes/Subscription_queue.php +++ b/classes/Subscription_queue.php @@ -1,22 +1,18 @@ $subscriber->id, 'subscribed' => $other->id)); - return (empty($sub)) ? false : true; + return ($sub instanceof Subscription_queue); } /** @@ -64,9 +60,11 @@ class Subscription_queue extends Managed_DataObject { $subscriber = Profile::getKV('id', $this->subscriber); $subscribed = Profile::getKV('id', $this->subscribed); - $sub = Subscription::start($subscriber, $subscribed, Subscription::FORCE); - if ($sub) { + try { + $sub = Subscription::start($subscriber, $subscribed, Subscription::FORCE); $this->delete(); + } catch (AlreadyFulfilledException $e) { + common_debug('Tried to start a subscription which already existed.'); } return $sub; } diff --git a/plugins/OStatus/actions/usersalmon.php b/plugins/OStatus/actions/usersalmon.php index 40577a7d6e..550c034e49 100644 --- a/plugins/OStatus/actions/usersalmon.php +++ b/plugins/OStatus/actions/usersalmon.php @@ -134,7 +134,11 @@ class UsersalmonAction extends SalmonAction $oprofile = $this->ensureProfile(); if ($oprofile instanceof Ostatus_profile) { common_log(LOG_INFO, sprintf('Canceling subscription from remote %s to local %s', $oprofile->getUri(), $this->user->getNickname())); - Subscription::cancel($oprofile->localProfile(), $this->user->getProfile()); + try { + Subscription::cancel($oprofile->localProfile(), $this->user->getProfile()); + } catch (AlreadyFulfilledException $e) { + common_debug('Subscription did not exist, so there was nothing to cancel'); + } } else { common_log(LOG_ERR, "Can't cancel subscription from remote, didn't find the profile"); } diff --git a/plugins/OStatus/actions/salmon.php b/plugins/OStatus/lib/salmonaction.php similarity index 99% rename from plugins/OStatus/actions/salmon.php rename to plugins/OStatus/lib/salmonaction.php index 2a6fc15edd..af6aaaa195 100644 --- a/plugins/OStatus/actions/salmon.php +++ b/plugins/OStatus/lib/salmonaction.php @@ -195,7 +195,7 @@ class SalmonAction extends Action function handleUpdateProfile() { $oprofile = Ostatus_profile::getActorProfile($this->activity); - if ($oprofile) { + if ($oprofile instanceof Ostatus_profile) { common_log(LOG_INFO, "Got a profile-update ping from $oprofile->uri"); $oprofile->updateFromActivityObject($this->activity->actor); } else {