From dc41e3dc2d1b965efedbffe9f0d1295bb7d11878 Mon Sep 17 00:00:00 2001 From: macno Date: Mon, 28 Feb 2011 11:56:02 +0100 Subject: [PATCH] API group actions join/leave now handle same events of web UI action --- actions/apigroupjoin.php | 31 +++++++++++-------------------- actions/apigroupleave.php | 24 ++++++++++-------------- 2 files changed, 21 insertions(+), 34 deletions(-) diff --git a/actions/apigroupjoin.php b/actions/apigroupjoin.php index 345fed2215..2e35cb87de 100644 --- a/actions/apigroupjoin.php +++ b/actions/apigroupjoin.php @@ -125,26 +125,17 @@ class ApiGroupJoinAction extends ApiAuthAction return; } - $member = new Group_member(); - - $member->group_id = $this->group->id; - $member->profile_id = $this->user->id; - $member->created = common_sql_now(); - - $result = $member->insert(); - - if (!$result) { - common_log_db_error($member, 'INSERT', __FILE__); - $this->serverError( - sprintf( - // TRANS: Server error displayed when joining a group fails. - // TRANS: %1$s is a user nickname, $2$s is a group nickname. - _('Could not join user %1$s to group %2$s.'), - $this->user->nickname, - $this->group->nickname - ) - ); - return; + try { + if (Event::handle('StartJoinGroup', array($this->group, $this->user))) { + Group_member::join($this->group->id, $this->user->id); + Event::handle('EndJoinGroup', array($this->group, $this->user)); + } + } catch (Exception $e) { + // TRANS: Server error displayed when joining a group failed in the database. + // TRANS: %1$s is the joining user's nickname, $2$s is the group nickname for which the join failed. + $this->serverError(sprintf(_('Could not join user %1$s to group %2$s.'), + $cur->nickname, $this->group->nickname)); + return; } switch($this->format) { diff --git a/actions/apigroupleave.php b/actions/apigroupleave.php index 0ceb3523c8..083ebd890f 100644 --- a/actions/apigroupleave.php +++ b/actions/apigroupleave.php @@ -116,22 +116,18 @@ class ApiGroupLeaveAction extends ApiAuthAction return; } - $result = $member->delete(); - - if (!$result) { - common_log_db_error($member, 'DELETE', __FILE__); - $this->serverError( - sprintf( - // TRANS: Server error displayed when leaving a group fails. - // TRANS: %1$s is a user nickname, $2$s is a group nickname. - _('Could not remove user %1$s from group %2$s.'), - $this->user->nickname, - $this->group->nickname - ) - ); + try { + if (Event::handle('StartLeaveGroup', array($this->group,$this->user))) { + Group_member::leave($this->group->id, $this->user->id); + Event::handle('EndLeaveGroup', array($this->group, $this->user)); + } + } catch (Exception $e) { + // TRANS: Server error displayed when leaving a group failed in the database. + // TRANS: %1$s is the leaving user's nickname, $2$s is the group nickname for which the leave failed. + $this->serverError(sprintf(_('Could not remove user %1$s from group %2$s.'), + $cur->nickname, $this->group->nickname)); return; } - switch($this->format) { case 'xml': $this->showSingleXmlGroup($this->group);