public $group_id;
public $created;
- /* Static get */
- function staticGet($k,$v=null)
- { return Memcached_DataObject::staticGet('Group_join_queue',$k,$v); }
-
- /* Pkey get */
- function pkeyGet($k)
- { return Memcached_DataObject::pkeyGet('Group_join_queue',$k); }
-
/* the code above is auto generated do not remove the tag below */
###END_AUTOCODE
return $rq;
}
+ function getMember()
+ {
+ $member = Profile::getKV('id', $this->profile_id);
+
+ if (empty($member)) {
+ // TRANS: Exception thrown providing an invalid profile ID.
+ // TRANS: %s is the invalid profile ID.
+ throw new Exception(sprintf(_('Profile ID %s is invalid.'),$this->profile_id));
+ }
+
+ return $member;
+ }
+
+ function getGroup()
+ {
+ $group = User_group::getKV('id', $this->group_id);
+
+ if (empty($group)) {
+ // TRANS: Exception thrown providing an invalid group ID.
+ // TRANS: %s is the invalid group ID.
+ throw new Exception(sprintf(_('Group ID %s is invalid.'),$this->group_id));
+ }
+
+ return $group;
+ }
+
+ /**
+ * Abort the pending group join...
+ */
+ function abort()
+ {
+ $profile = $this->getMember();
+ $group = $this->getGroup();
+
+ if (Event::handle('StartCancelJoinGroup', array($profile, $group))) {
+ $this->delete();
+ Event::handle('EndCancelJoinGroup', array($profile, $group));
+ }
+ }
+
+ /**
+ * Complete a pending group join...
+ *
+ * @return Group_member object on success
+ */
+ function complete()
+ {
+ $join = null;
+ $profile = $this->getMember();
+ $group = $this->getGroup();
+ if (Event::handle('StartJoinGroup', array($profile, $group))) {
+ $join = Group_member::join($group->id, $profile->id);
+ $this->delete();
+ Event::handle('EndJoinGroup', array($profile, $group));
+ }
+ if (!$join) {
+ throw new Exception('Internal error: group join failed.');
+ }
+ $join->notify();
+ return $join;
+ }
+
/**
* Send notifications via email etc to group administrators about
* this exciting new pending moderation queue item!
*/
public function notify()
{
- $joiner = Profile::staticGet('id', $this->profile_id);
- $group = User_group::staticGet('id', $this->group_id);
+ $joiner = Profile::getKV('id', $this->profile_id);
+ $group = User_group::getKV('id', $this->group_id);
mail_notify_group_join_pending($group, $joiner);
}
}