| 
									
										
										
										
											2009-01-13 00:35:41 -05:00
										 |  |  | <?php | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Table Definition for group_member | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Group_member extends Memcached_DataObject | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     ###START_AUTOCODE
 | 
					
						
							|  |  |  |     /* the code below is auto generated do not remove the above tag */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public $__table = 'group_member';                    // table name
 | 
					
						
							|  |  |  |     public $group_id;                        // int(4)  primary_key not_null
 | 
					
						
							|  |  |  |     public $profile_id;                      // int(4)  primary_key not_null
 | 
					
						
							|  |  |  |     public $is_admin;                        // tinyint(1)
 | 
					
						
							|  |  |  |     public $created;                         // datetime()   not_null
 | 
					
						
							|  |  |  |     public $modified;                        // timestamp()   not_null default_CURRENT_TIMESTAMP
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* Static get */ | 
					
						
							|  |  |  |     function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Group_member',$k,$v); } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* the code above is auto generated do not remove the tag below */ | 
					
						
							|  |  |  |     ###END_AUTOCODE
 | 
					
						
							| 
									
										
										
										
											2009-01-21 21:52:33 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-06 14:28:40 -08:00
										 |  |  |     function pkeyGet($kv) | 
					
						
							| 
									
										
										
										
											2009-01-21 21:52:33 -05:00
										 |  |  |     { | 
					
						
							|  |  |  |         return Memcached_DataObject::pkeyGet('Group_member', $kv); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-01-13 02:16:13 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-13 13:50:39 -05:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Method to add a user to a group. | 
					
						
							| 
									
										
										
										
											2011-03-21 14:35:29 -07:00
										 |  |  |      * In most cases, you should call Profile->joinGroup() instead. | 
					
						
							| 
									
										
										
										
											2010-12-13 13:50:39 -05:00
										 |  |  |      * | 
					
						
							|  |  |  |      * @param integer $group_id   Group to add to | 
					
						
							|  |  |  |      * @param integer $profile_id Profile being added | 
					
						
							|  |  |  |      *  | 
					
						
							|  |  |  |      * @return Group_member new membership object | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-13 02:16:13 -08:00
										 |  |  |     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__); | 
					
						
							| 
									
										
										
										
											2010-07-29 13:01:04 +02:00
										 |  |  |             // TRANS: Exception thrown when joining a group fails.
 | 
					
						
							| 
									
										
										
										
											2010-01-13 02:16:13 -08:00
										 |  |  |             throw new Exception(_("Group join failed.")); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-13 13:50:39 -05:00
										 |  |  |         return $member; | 
					
						
							| 
									
										
										
										
											2010-01-13 02:16:13 -08:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     static function leave($group_id, $profile_id) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $member = Group_member::pkeyGet(array('group_id' => $group_id, | 
					
						
							|  |  |  |                                               'profile_id' => $profile_id)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if (empty($member)) { | 
					
						
							| 
									
										
										
										
											2010-07-29 13:01:04 +02:00
										 |  |  |             // TRANS: Exception thrown when trying to leave a group the user is not a member of.
 | 
					
						
							| 
									
										
										
										
											2010-01-13 02:16:13 -08:00
										 |  |  |             throw new Exception(_("Not part of group.")); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $result = $member->delete(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if (!$result) { | 
					
						
							|  |  |  |             common_log_db_error($member, 'INSERT', __FILE__); | 
					
						
							| 
									
										
										
										
											2010-07-29 13:01:04 +02:00
										 |  |  |             // TRANS: Exception thrown when trying to leave a group fails.
 | 
					
						
							| 
									
										
										
										
											2010-01-13 02:16:13 -08:00
										 |  |  |             throw new Exception(_("Group leave failed.")); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return true; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-09-14 11:01:29 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     function getMember() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $member = Profile::staticGet('id', $this->profile_id); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if (empty($member)) { | 
					
						
							| 
									
										
										
										
											2010-09-28 23:21:09 +02:00
										 |  |  |             // 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)); | 
					
						
							| 
									
										
										
										
											2010-09-14 11:01:29 -04:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return $member; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function getGroup() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $group  = User_group::staticGet('id', $this->group_id); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if (empty($group)) { | 
					
						
							| 
									
										
										
										
											2010-09-28 23:21:09 +02:00
										 |  |  |             // 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)); | 
					
						
							| 
									
										
										
										
											2010-09-14 11:01:29 -04:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return $group; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-13 13:50:39 -05:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Get stream of memberships by member | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param integer $memberId profile ID of the member to fetch for | 
					
						
							|  |  |  |      * @param integer $offset   offset from start of stream to get | 
					
						
							|  |  |  |      * @param integer $limit    number of memberships to get | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return Group_member stream of memberships, use fetch() to iterate | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     static function byMember($memberId, $offset=0, $limit=GROUPS_PER_PAGE) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $membership = new Group_member(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $membership->profile_id = $memberId; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $membership->orderBy('created DESC'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $membership->limit($offset, $limit); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $membership->find(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return $membership; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-14 11:01:29 -04:00
										 |  |  |     function asActivity() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $member = $this->getMember(); | 
					
						
							|  |  |  |         $group  = $this->getGroup(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $act = new Activity(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $act->id = TagURI::mint('join:%d:%d:%s', | 
					
						
							|  |  |  |                                 $member->id, | 
					
						
							|  |  |  |                                 $group->id, | 
					
						
							|  |  |  |                                 common_date_iso8601($this->created)); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-15 07:11:24 -04:00
										 |  |  |         $act->actor     = ActivityObject::fromProfile($member); | 
					
						
							|  |  |  |         $act->verb      = ActivityVerb::JOIN; | 
					
						
							|  |  |  |         $act->objects[] = ActivityObject::fromGroup($group); | 
					
						
							| 
									
										
										
										
											2010-09-14 11:01:29 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $act->time  = strtotime($this->created); | 
					
						
							| 
									
										
										
										
											2010-09-28 23:21:09 +02:00
										 |  |  |         // TRANS: Activity title.
 | 
					
						
							| 
									
										
										
										
											2010-09-15 07:11:24 -04:00
										 |  |  |         $act->title = _("Join"); | 
					
						
							| 
									
										
										
										
											2010-09-14 11:01:29 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |         // TRANS: Success message for subscribe to group attempt through OStatus.
 | 
					
						
							|  |  |  |         // TRANS: %1$s is the member name, %2$s is the subscribed group's name.
 | 
					
						
							| 
									
										
										
										
											2010-09-15 07:11:24 -04:00
										 |  |  |         $act->content = sprintf(_('%1$s has joined group %2$s.'), | 
					
						
							| 
									
										
										
										
											2010-09-14 11:01:29 -04:00
										 |  |  |                                 $member->getBestName(), | 
					
						
							|  |  |  |                                 $group->getBestName()); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-13 12:40:44 -05:00
										 |  |  |         $url = common_local_url('AtomPubShowMembership', | 
					
						
							|  |  |  |                                 array('profile' => $member->id, | 
					
						
							|  |  |  |                                       'group' => $group->id)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $act->selfLink = $url; | 
					
						
							|  |  |  |         $act->editLink = $url; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-14 11:01:29 -04:00
										 |  |  |         return $act; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-01-13 00:35:41 -05:00
										 |  |  | } |