| 
									
										
										
										
											2011-03-23 16:42:36 -07:00
										 |  |  | <?php | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * 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; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* Static get */ | 
					
						
							|  |  |  |     function staticGet($k,$v=null) | 
					
						
							|  |  |  |     { return Memcached_DataObject::staticGet('Subscription_queue',$k,$v); } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* Pkey get */ | 
					
						
							|  |  |  |     function pkeyGet($k) | 
					
						
							|  |  |  |     { return Memcached_DataObject::pkeyGet('Subscription_queue',$k); } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* the code above is auto generated do not remove the tag below */ | 
					
						
							|  |  |  |     ###END_AUTOCODE
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public static function schemaDef() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return array( | 
					
						
							|  |  |  |             'description' => 'Holder for subscription requests awaiting moderation.', | 
					
						
							|  |  |  |             'fields' => array( | 
					
						
							|  |  |  |                 'subscriber' => array('type' => 'int', 'not null' => true, 'description' => 'remote or local profile making the request'), | 
					
						
							|  |  |  |                 'subscribed' => array('type' => 'int', 'not null' => true, 'description' => 'remote or local profile being subscribed to'), | 
					
						
							|  |  |  |                 'created' => array('type' => 'datetime', 'not null' => true, 'description' => 'date this record was created'), | 
					
						
							|  |  |  |             ), | 
					
						
							|  |  |  |             'primary key' => array('subscriber', 'subscribed'), | 
					
						
							|  |  |  |             'indexes' => array( | 
					
						
							| 
									
										
										
										
											2011-03-28 16:12:51 -07:00
										 |  |  |                 'subscription_queue_subscriber_created_idx' => array('subscriber', 'created'), | 
					
						
							|  |  |  |                 'subscription_queue_subscribed_created_idx' => array('subscribed', 'created'), | 
					
						
							| 
									
										
										
										
											2011-03-23 16:42:36 -07:00
										 |  |  |             ), | 
					
						
							|  |  |  |             'foreign keys' => array( | 
					
						
							| 
									
										
										
										
											2011-03-28 16:12:51 -07:00
										 |  |  |                 'subscription_queue_subscriber_fkey' => array('profile', array('subscriber' => 'id')), | 
					
						
							|  |  |  |                 'subscription_queue_subscribed_fkey' => array('profile', array('subscribed' => 'id')), | 
					
						
							| 
									
										
										
										
											2011-03-23 16:42:36 -07:00
										 |  |  |             ) | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-28 16:12:51 -07:00
										 |  |  |     public static function saveNew(Profile $subscriber, Profile $subscribed) | 
					
						
							| 
									
										
										
										
											2011-03-23 16:42:36 -07:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-03-28 16:12:51 -07:00
										 |  |  |         $rq = new Subscription_queue(); | 
					
						
							| 
									
										
										
										
											2011-03-23 16:42:36 -07:00
										 |  |  |         $rq->subscriber = $subscriber->id; | 
					
						
							|  |  |  |         $rq->subscribed = $subscribed->id; | 
					
						
							|  |  |  |         $rq->created = common_sql_now(); | 
					
						
							|  |  |  |         $rq->insert(); | 
					
						
							|  |  |  |         return $rq; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-28 16:12:51 -07:00
										 |  |  |     function exists($subscriber, $other) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $sub = Subscription_queue::pkeyGet(array('subscriber' => $subscriber->id, | 
					
						
							|  |  |  |                                                  'subscribed' => $other->id)); | 
					
						
							|  |  |  |         return (empty($sub)) ? false : true; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-28 15:13:59 -07:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Complete a pending subscription, as we've got approval of some sort. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return Subscription | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function complete() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $subscriber = Profile::staticGet('id', $this->subscriber); | 
					
						
							|  |  |  |         $subscribed = Profile::staticGet('id', $this->subscribed); | 
					
						
							| 
									
										
										
										
											2011-03-28 17:06:02 -07:00
										 |  |  |         $sub = Subscription::start($subscriber, $subscribed, Subscription::FORCE); | 
					
						
							| 
									
										
										
										
											2011-03-28 15:13:59 -07:00
										 |  |  |         if ($sub) { | 
					
						
							|  |  |  |             $this->delete(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         return $sub; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Cancel an outstanding subscription request to the other profile. | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-03-28 17:06:02 -07:00
										 |  |  |     public function abort() | 
					
						
							| 
									
										
										
										
											2011-03-28 15:13:59 -07:00
										 |  |  |     { | 
					
						
							|  |  |  |         $subscriber = Profile::staticGet('id', $this->subscriber); | 
					
						
							|  |  |  |         $subscribed = Profile::staticGet('id', $this->subscribed); | 
					
						
							|  |  |  |         if (Event::handle('StartCancelSubscription', array($subscriber, $subscribed))) { | 
					
						
							|  |  |  |             $this->delete(); | 
					
						
							|  |  |  |             Event::handle('EndCancelSubscription', array($subscriber, $subscribed)); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-23 16:42:36 -07:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Send notifications via email etc to group administrators about | 
					
						
							|  |  |  |      * this exciting new pending moderation queue item! | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function notify() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-03-28 17:22:37 -07:00
										 |  |  |         $other = Profile::staticGet('id', $this->subscriber); | 
					
						
							|  |  |  |         $listenee = User::staticGet('id', $this->subscribed); | 
					
						
							| 
									
										
										
										
											2011-03-28 17:15:48 -07:00
										 |  |  |         mail_subscribe_pending_notify_profile($listenee, $other); | 
					
						
							| 
									
										
										
										
											2011-03-23 16:42:36 -07:00
										 |  |  |     } | 
					
						
							|  |  |  | } |