forked from GNUsocial/gnu-social
More modern coding, stuff related to subscriptions
Also trying to use the newly implemented AlreadyFulfilledException
This commit is contained in:
parent
b16d8cba1d
commit
fc3125cf28
@ -17,21 +17,16 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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();
|
||||
|
@ -1,22 +1,18 @@
|
||||
<?php
|
||||
|
||||
if (!defined('GNUSOCIAL')) { exit(1); }
|
||||
|
||||
/**
|
||||
* Table Definition for subscription_queue
|
||||
*/
|
||||
require_once INSTALLDIR.'/classes/Memcached_DataObject.php';
|
||||
|
||||
class Subscription_queue extends Managed_DataObject
|
||||
{
|
||||
###START_AUTOCODE
|
||||
/* the code below is auto generated do not remove the above tag */
|
||||
|
||||
public $__table = 'subscription_queue'; // table name
|
||||
public $subscriber;
|
||||
public $subscribed;
|
||||
public $created;
|
||||
|
||||
/* the code above is auto generated do not remove the tag below */
|
||||
###END_AUTOCODE
|
||||
|
||||
public static function schemaDef()
|
||||
{
|
||||
return array(
|
||||
@ -48,11 +44,11 @@ class Subscription_queue extends Managed_DataObject
|
||||
return $rq;
|
||||
}
|
||||
|
||||
function exists($subscriber, $other)
|
||||
public function exists(Profile $subscriber, Profile $other)
|
||||
{
|
||||
$sub = Subscription_queue::pkeyGet(array('subscriber' => $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;
|
||||
}
|
||||
|
@ -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");
|
||||
}
|
||||
|
@ -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 {
|
Loading…
Reference in New Issue
Block a user