add events for subscribing to people and joining groups
This commit is contained in:
parent
23599da91e
commit
430bd69312
32
EVENTS.txt
32
EVENTS.txt
@ -655,3 +655,35 @@ StartUnblockProfile: when we're about to unblock
|
|||||||
EndUnblockProfile: when an unblock has succeeded
|
EndUnblockProfile: when an unblock has succeeded
|
||||||
- $user: the person doing the unblock
|
- $user: the person doing the unblock
|
||||||
- $profile: the person unblocked, can be remote
|
- $profile: the person unblocked, can be remote
|
||||||
|
|
||||||
|
StartSubscribe: when a subscription is starting
|
||||||
|
- $user: the person subscribing
|
||||||
|
- $other: the person being subscribed to
|
||||||
|
|
||||||
|
EndSubscribe: when a subscription is finished
|
||||||
|
- $user: the person subscribing
|
||||||
|
- $other: the person being subscribed to
|
||||||
|
|
||||||
|
StartUnsubscribe: when an unsubscribe is starting
|
||||||
|
- $user: the person unsubscribing
|
||||||
|
- $other: the person being unsubscribed from
|
||||||
|
|
||||||
|
EndUnsubscribe: when an unsubscribe is done
|
||||||
|
- $user: the person unsubscribing
|
||||||
|
- $other: the person being unsubscribed to
|
||||||
|
|
||||||
|
StartJoinGroup: when a user is joining a group
|
||||||
|
- $group: the group being joined
|
||||||
|
- $user: the user joining
|
||||||
|
|
||||||
|
EndJoinGroup: when a user finishes joining a group
|
||||||
|
- $group: the group being joined
|
||||||
|
- $user: the user joining
|
||||||
|
|
||||||
|
StartLeaveGroup: when a user is leaving a group
|
||||||
|
- $group: the group being left
|
||||||
|
- $user: the user leaving
|
||||||
|
|
||||||
|
EndLeaveGroup: when a user has left a group
|
||||||
|
- $group: the group being left
|
||||||
|
- $user: the user leaving
|
||||||
|
@ -115,16 +115,12 @@ class JoingroupAction extends Action
|
|||||||
|
|
||||||
$cur = common_current_user();
|
$cur = common_current_user();
|
||||||
|
|
||||||
$member = new Group_member();
|
try {
|
||||||
|
if (Event::handle('StartJoinGroup', array($this->group, $cur))) {
|
||||||
$member->group_id = $this->group->id;
|
Group_member::join($this->group->id, $cur->id);
|
||||||
$member->profile_id = $cur->id;
|
Event::handle('EndJoinGroup', array($this->group, $cur));
|
||||||
$member->created = common_sql_now();
|
}
|
||||||
|
} catch (Exception $e) {
|
||||||
$result = $member->insert();
|
|
||||||
|
|
||||||
if (!$result) {
|
|
||||||
common_log_db_error($member, 'INSERT', __FILE__);
|
|
||||||
$this->serverError(sprintf(_('Could not join user %1$s to group %2$s.'),
|
$this->serverError(sprintf(_('Could not join user %1$s to group %2$s.'),
|
||||||
$cur->nickname, $this->group->nickname));
|
$cur->nickname, $this->group->nickname));
|
||||||
}
|
}
|
||||||
|
@ -110,22 +110,15 @@ class LeavegroupAction extends Action
|
|||||||
|
|
||||||
$cur = common_current_user();
|
$cur = common_current_user();
|
||||||
|
|
||||||
$member = new Group_member();
|
try {
|
||||||
|
if (Event::handle('StartLeaveGroup', array($this->group, $cur))) {
|
||||||
$member->group_id = $this->group->id;
|
Group_member::leave($this->group->id, $cur->id);
|
||||||
$member->profile_id = $cur->id;
|
Event::handle('EndLeaveGroup', array($this->group, $cur));
|
||||||
|
|
||||||
if (!$member->find(true)) {
|
|
||||||
$this->serverError(_('Could not find membership record.'));
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
} catch (Exception $e) {
|
||||||
$result = $member->delete();
|
|
||||||
|
|
||||||
if (!$result) {
|
|
||||||
common_log_db_error($member, 'DELETE', __FILE__);
|
|
||||||
$this->serverError(sprintf(_('Could not remove user %1$s from group %2$s.'),
|
$this->serverError(sprintf(_('Could not remove user %1$s from group %2$s.'),
|
||||||
$cur->nickname, $this->group->nickname));
|
$cur->nickname, $this->group->nickname));
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->boolean('ajax')) {
|
if ($this->boolean('ajax')) {
|
||||||
|
@ -25,4 +25,41 @@ class Group_member extends Memcached_DataObject
|
|||||||
{
|
{
|
||||||
return Memcached_DataObject::pkeyGet('Group_member', $kv);
|
return Memcached_DataObject::pkeyGet('Group_member', $kv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static function join($group_id, $profile_id)
|
||||||
|
{
|
||||||
|
$member = new Group_member();
|
||||||
|
|
||||||
|
$member->group_id = $group_id;
|
||||||
|
$member->profile_id = $profile_id;
|
||||||
|
$member->created = common_sql_now();
|
||||||
|
|
||||||
|
$result = $member->insert();
|
||||||
|
|
||||||
|
if (!$result) {
|
||||||
|
common_log_db_error($member, 'INSERT', __FILE__);
|
||||||
|
throw new Exception(_("Group join failed."));
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static function leave($group_id, $profile_id)
|
||||||
|
{
|
||||||
|
$member = Group_member::pkeyGet(array('group_id' => $group_id,
|
||||||
|
'profile_id' => $profile_id));
|
||||||
|
|
||||||
|
if (empty($member)) {
|
||||||
|
throw new Exception(_("Not part of group."));
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = $member->delete();
|
||||||
|
|
||||||
|
if (!$result) {
|
||||||
|
common_log_db_error($member, 'INSERT', __FILE__);
|
||||||
|
throw new Exception(_("Group leave failed."));
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -222,15 +222,12 @@ class JoinCommand extends Command
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$member = new Group_member();
|
try {
|
||||||
|
if (Event::handle('StartJoinGroup', array($group, $cur))) {
|
||||||
$member->group_id = $group->id;
|
Group_member::join($group->id, $cur->id);
|
||||||
$member->profile_id = $cur->id;
|
Event::handle('EndJoinGroup', array($group, $cur));
|
||||||
$member->created = common_sql_now();
|
}
|
||||||
|
} catch (Exception $e) {
|
||||||
$result = $member->insert();
|
|
||||||
if (!$result) {
|
|
||||||
common_log_db_error($member, 'INSERT', __FILE__);
|
|
||||||
$channel->error($cur, sprintf(_('Could not join user %s to group %s'),
|
$channel->error($cur, sprintf(_('Could not join user %s to group %s'),
|
||||||
$cur->nickname, $group->nickname));
|
$cur->nickname, $group->nickname));
|
||||||
return;
|
return;
|
||||||
@ -269,18 +266,12 @@ class DropCommand extends Command
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$member = new Group_member();
|
try {
|
||||||
|
if (Event::handle('StartLeaveGroup', array($group, $cur))) {
|
||||||
$member->group_id = $group->id;
|
Group_member::leave($group->id, $cur->id);
|
||||||
$member->profile_id = $cur->id;
|
Event::handle('EndLeaveGroup', array($group, $cur));
|
||||||
|
|
||||||
if (!$member->find(true)) {
|
|
||||||
$channel->error($cur,_('Could not find membership record.'));
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
$result = $member->delete();
|
} catch (Exception $e) {
|
||||||
if (!$result) {
|
|
||||||
common_log_db_error($member, 'INSERT', __FILE__);
|
|
||||||
$channel->error($cur, sprintf(_('Could not remove user %s to group %s'),
|
$channel->error($cur, sprintf(_('Could not remove user %s to group %s'),
|
||||||
$cur->nickname, $group->nickname));
|
$cur->nickname, $group->nickname));
|
||||||
return;
|
return;
|
||||||
|
18
lib/subs.php
18
lib/subs.php
@ -56,6 +56,9 @@ function subs_subscribe_to($user, $other)
|
|||||||
return _('User has blocked you.');
|
return _('User has blocked you.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (Event::handle('StartSubscribe', array($user, $other))) {
|
||||||
|
|
||||||
if (!$user->subscribeTo($other)) {
|
if (!$user->subscribeTo($other)) {
|
||||||
return _('Could not subscribe.');
|
return _('Could not subscribe.');
|
||||||
return;
|
return;
|
||||||
@ -87,6 +90,12 @@ function subs_subscribe_to($user, $other)
|
|||||||
subs_notify($user, $other);
|
subs_notify($user, $other);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Event::handle('EndSubscribe', array($user, $other));
|
||||||
|
}
|
||||||
|
} catch (Exception $e) {
|
||||||
|
return $e->getMessage();
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -133,6 +142,9 @@ function subs_unsubscribe_to($user, $other)
|
|||||||
return _('Couldn\'t delete self-subscription.');
|
return _('Couldn\'t delete self-subscription.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (Event::handle('StartUnsubscribe', array($user, $other))) {
|
||||||
|
|
||||||
$sub = DB_DataObject::factory('subscription');
|
$sub = DB_DataObject::factory('subscription');
|
||||||
|
|
||||||
$sub->subscriber = $user->id;
|
$sub->subscriber = $user->id;
|
||||||
@ -156,6 +168,12 @@ function subs_unsubscribe_to($user, $other)
|
|||||||
$profile->blowSubscriptionsCount();
|
$profile->blowSubscriptionsCount();
|
||||||
$other->blowSubscribersCount();
|
$other->blowSubscribersCount();
|
||||||
|
|
||||||
|
Event::handle('EndUnsubscribe', array($user, $other));
|
||||||
|
}
|
||||||
|
} catch (Exception $e) {
|
||||||
|
return $e->getMessage();
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user