| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  | <?php | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * StatusNet - the distributed open-source microblogging tool | 
					
						
							|  |  |  |  * Copyright (C) 2010, StatusNet, Inc. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Shows social activities in the output feed | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * PHP version 5 | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is free software: you can redistribute it and/or modify | 
					
						
							|  |  |  |  * it under the terms of the GNU Affero General Public License as published by | 
					
						
							|  |  |  |  * the Free Software Foundation, either version 3 of the License, or | 
					
						
							|  |  |  |  * (at your option) any later version. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  |  * GNU Affero General Public License for more details. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * You should have received a copy of the GNU Affero General Public License | 
					
						
							|  |  |  |  * along with this program.  If not, see <http://www.gnu.org/licenses/>. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @category  Activity | 
					
						
							|  |  |  |  * @package   StatusNet | 
					
						
							|  |  |  |  * @author    Evan Prodromou <evan@status.net> | 
					
						
							|  |  |  |  * @copyright 2010 StatusNet, Inc. | 
					
						
							|  |  |  |  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 | 
					
						
							|  |  |  |  * @link      http://status.net/ | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if (!defined('STATUSNET')) { | 
					
						
							|  |  |  |     // This check helps protect against security problems;
 | 
					
						
							|  |  |  |     // your code file can't be executed directly from the web.
 | 
					
						
							|  |  |  |     exit(1); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Activity plugin main class | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @category  Activity | 
					
						
							|  |  |  |  * @package   StatusNet | 
					
						
							|  |  |  |  * @author    Evan Prodromou <evan@status.net> | 
					
						
							|  |  |  |  * @copyright 2010 StatusNet, Inc. | 
					
						
							|  |  |  |  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 | 
					
						
							|  |  |  |  * @link      http://status.net/ | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ActivityPlugin extends Plugin | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     const VERSION = '0.1'; | 
					
						
							| 
									
										
										
										
											2011-08-25 11:54:26 -04:00
										 |  |  |     const SOURCE  = 'system'; | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-06-17 13:37:16 +02:00
										 |  |  |     // Flags to switch off certain activity notices
 | 
					
						
							|  |  |  |     public $StartFollowUser = true; | 
					
						
							|  |  |  |     public $StopFollowUser  = true; | 
					
						
							|  |  |  |     public $JoinGroup = true; | 
					
						
							|  |  |  |     public $LeaveGroup = true; | 
					
						
							|  |  |  |     public $StartLike = true; | 
					
						
							|  |  |  |     public $StopLike = true; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |     function onAutoload($cls) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $dir = dirname(__FILE__); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         switch ($cls) | 
					
						
							|  |  |  |         { | 
					
						
							| 
									
										
										
										
											2011-08-23 11:49:27 -04:00
										 |  |  |         case 'JoinListItem': | 
					
						
							| 
									
										
										
										
											2011-08-23 12:18:10 -04:00
										 |  |  |         case 'LeaveListItem': | 
					
						
							|  |  |  |         case 'FollowListItem': | 
					
						
							|  |  |  |         case 'UnfollowListItem': | 
					
						
							| 
									
										
										
										
											2011-08-24 17:17:03 -04:00
										 |  |  |         case 'SystemListItem': | 
					
						
							| 
									
										
										
										
											2011-08-23 11:49:27 -04:00
										 |  |  |             include_once $dir . '/'.strtolower($cls).'.php'; | 
					
						
							|  |  |  |             return false; | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |         default: | 
					
						
							|  |  |  |             return true; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function onEndSubscribe($subscriber, $other) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-06-17 13:37:16 +02:00
										 |  |  |         // Only do this if config is enabled
 | 
					
						
							|  |  |  |         if(!$this->StartFollowUser) return true; | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |         $user = $subscriber->getUser(); | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |         if (!empty($user)) { | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |         	$sub = Subscription::pkeyGet(array('subscriber' => $subscriber->id, | 
					
						
							|  |  |  |                                            	   'subscribed' => $other->id)); | 
					
						
							| 
									
										
										
										
											2011-08-25 16:24:54 -04:00
										 |  |  |             $rendered = sprintf(_m('<a href="%s">%s</a> started following <a href="%s">%s</a>.'), | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |             					$subscriber->profileurl, | 
					
						
							| 
									
										
										
										
											2011-08-23 00:27:42 -04:00
										 |  |  |             					$subscriber->getBestName(), | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |                                 $other->profileurl, | 
					
						
							|  |  |  |                                 $other->getBestName()); | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |             $content  = sprintf(_m('%s (%s) started following %s (%s).'), | 
					
						
							|  |  |  |             					$subscriber->getBestName(), | 
					
						
							|  |  |  |             					$subscriber->profileurl, | 
					
						
							| 
									
										
										
										
											2010-12-14 14:27:37 +01:00
										 |  |  |                                 $other->getBestName(), | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  | 								$other->profileurl); | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |             $notice = Notice::saveNew($user->id, | 
					
						
							|  |  |  |                                       $content, | 
					
						
							| 
									
										
										
										
											2011-08-25 11:54:26 -04:00
										 |  |  |                                       ActivityPlugin::SOURCE, | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |                                       array('rendered' => $rendered, | 
					
						
							| 
									
										
										
										
											2011-08-25 12:59:40 -04:00
										 |  |  |                                             'urls' => array(), | 
					
						
							| 
									
										
										
										
											2011-08-25 12:18:51 -04:00
										 |  |  |                                             'replies' => array($other->getUri()), | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |                                       		'verb' => ActivityVerb::FOLLOW, | 
					
						
							|  |  |  |                                       		'object_type' => ActivityObject::PERSON, | 
					
						
							|  |  |  |                                       		'uri' => $sub->uri)); | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |         } | 
					
						
							|  |  |  |         return true; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function onEndUnsubscribe($subscriber, $other) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-06-17 13:37:16 +02:00
										 |  |  |         // Only do this if config is enabled
 | 
					
						
							|  |  |  |         if(!$this->StopFollowUser) return true; | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |         $user = $subscriber->getUser(); | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |         if (!empty($user)) { | 
					
						
							| 
									
										
										
										
											2011-08-25 16:24:54 -04:00
										 |  |  |             $rendered = sprintf(_m('<a href="%s">%s</a> stopped following <a href="%s">%s</a>.'), | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |             					$subscriber->profileurl, | 
					
						
							|  |  |  |             					$subscriber->getBestName(), | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |                                 $other->profileurl, | 
					
						
							|  |  |  |                                 $other->getBestName()); | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |             $content  = sprintf(_m('%s (%s) stopped following %s (%s).'), | 
					
						
							|  |  |  |             					$subscriber->getBestName(), | 
					
						
							|  |  |  |             					$subscriber->profileurl, | 
					
						
							| 
									
										
										
										
											2010-12-14 14:27:37 +01:00
										 |  |  |                                 $other->getBestName(), | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  | 								$other->profileurl); | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  | 			$uri = TagURI::mint('stop-following:%d:%d:%s', | 
					
						
							|  |  |  |                             	$subscriber->id, | 
					
						
							|  |  |  |                             	$other->id, | 
					
						
							|  |  |  |                             	common_date_iso8601(common_sql_now())); | 
					
						
							|  |  |  |                              | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |             $notice = Notice::saveNew($user->id, | 
					
						
							|  |  |  |                                       $content, | 
					
						
							| 
									
										
										
										
											2011-08-25 11:54:26 -04:00
										 |  |  |                                       ActivityPlugin::SOURCE, | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |                                       array('rendered' => $rendered, | 
					
						
							| 
									
										
										
										
											2011-08-25 12:59:40 -04:00
										 |  |  |                                             'urls' => array(), | 
					
						
							| 
									
										
										
										
											2011-08-25 12:18:51 -04:00
										 |  |  |                                             'replies' => array($other->getUri()), | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |                                       		'uri' => $uri, | 
					
						
							|  |  |  |                                       		'verb' => ActivityVerb::UNFOLLOW, | 
					
						
							|  |  |  |                                       		'object_type' => ActivityObject::PERSON)); | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |         } | 
					
						
							|  |  |  |         return true; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function onEndFavorNotice($profile, $notice) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-06-17 13:37:16 +02:00
										 |  |  |         //  Only do this if config is enabled
 | 
					
						
							|  |  |  |         if(!$this->StartLike) return true; | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |          | 
					
						
							|  |  |  |         $user = $profile->getUser(); | 
					
						
							|  |  |  |          | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |         if (!empty($user)) { | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |         	 | 
					
						
							|  |  |  |             $author = $notice->getProfile(); | 
					
						
							| 
									
										
										
										
											2011-08-23 00:23:02 -04:00
										 |  |  |             $fave   = Fave::pkeyGet(array('user_id' => $user->id, | 
					
						
							|  |  |  |             						  	  'notice_id' => $notice->id)); | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |              | 
					
						
							| 
									
										
										
										
											2011-08-25 16:24:54 -04:00
										 |  |  |             $rendered = sprintf(_m('<a href="%s">%s</a> liked <a href="%s">%s\'s update</a>.'), | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |             					$profile->profileurl, | 
					
						
							|  |  |  |             					$profile->getBestName(), | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |                                 $notice->bestUrl(), | 
					
						
							|  |  |  |                                 $author->getBestName()); | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |             $content  = sprintf(_m('%s (%s) liked %s\'s status (%s)'), | 
					
						
							|  |  |  |             					$profile->getBestName(), | 
					
						
							|  |  |  |             					$profile->profileurl, | 
					
						
							| 
									
										
										
										
											2010-12-14 14:27:37 +01:00
										 |  |  |                                 $author->getBestName(),  | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  | 								$notice->bestUrl()); | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |             $notice = Notice::saveNew($user->id, | 
					
						
							|  |  |  |                                       $content, | 
					
						
							| 
									
										
										
										
											2011-08-25 11:54:26 -04:00
										 |  |  |                                       ActivityPlugin::SOURCE, | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |                                       array('rendered' => $rendered, | 
					
						
							| 
									
										
										
										
											2011-08-25 12:59:40 -04:00
										 |  |  |                                             'urls' => array(), | 
					
						
							| 
									
										
										
										
											2011-08-25 12:18:51 -04:00
										 |  |  |                                             'replies' => array($author->getUri()), | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |                                       		'uri' => $fave->getURI(), | 
					
						
							| 
									
										
										
										
											2011-08-23 00:23:02 -04:00
										 |  |  |                                       		'verb' => ActivityVerb::FAVORITE, | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |                                       		'object_type' => (($notice->verb == ActivityVerb::POST) ? | 
					
						
							|  |  |  |                                       						 $notice->object_type : ActivityObject::ACTIVITY))); | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |         } | 
					
						
							|  |  |  |         return true; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function onEndDisfavorNotice($profile, $notice) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-06-17 13:37:16 +02:00
										 |  |  |         // Only do this if config is enabled
 | 
					
						
							|  |  |  |         if(!$this->StopLike) return true; | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |         $user = User::staticGet('id', $profile->id); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if (!empty($user)) { | 
					
						
							|  |  |  |             $author = Profile::staticGet('id', $notice->profile_id); | 
					
						
							| 
									
										
										
										
											2011-08-25 16:24:54 -04:00
										 |  |  |             $rendered = sprintf(_m('<a href="%s">%s</a> stopped liking <a href="%s">%s\'s update</a>.'), | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |             					$profile->profileurl, | 
					
						
							|  |  |  |             					$profile->getBestName(), | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |                                 $notice->bestUrl(), | 
					
						
							|  |  |  |                                 $author->getBestName()); | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |             $content  = sprintf(_m('%s (%s) stopped liking %s\'s status (%s)'), | 
					
						
							|  |  |  |             					$profile->getBestName(), | 
					
						
							|  |  |  |             					$profile->profileurl, | 
					
						
							|  |  |  |                                 $author->getBestName(),  | 
					
						
							|  |  |  | 								$notice->bestUrl()); | 
					
						
							|  |  |  | 								 | 
					
						
							|  |  |  | 			$uri = TagURI::mint('unlike:%d:%d:%s', | 
					
						
							|  |  |  |                             	$profile->id, | 
					
						
							|  |  |  |                             	$notice->id, | 
					
						
							|  |  |  |                             	common_date_iso8601(common_sql_now())); | 
					
						
							|  |  |  |                             	 | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |             $notice = Notice::saveNew($user->id, | 
					
						
							|  |  |  |                                       $content, | 
					
						
							| 
									
										
										
										
											2011-08-25 11:54:26 -04:00
										 |  |  |                                       ActivityPlugin::SOURCE, | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |                                       array('rendered' => $rendered, | 
					
						
							| 
									
										
										
										
											2011-08-25 12:59:40 -04:00
										 |  |  |                                             'urls' => array(), | 
					
						
							| 
									
										
										
										
											2011-08-25 12:18:51 -04:00
										 |  |  |                                             'replies' => array($author->getUri()), | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |                                       		'uri' => $uri, | 
					
						
							|  |  |  |                                       		'verb' => ActivityVerb::UNFAVORITE, | 
					
						
							|  |  |  |                                       		'object_type' => (($notice->verb == ActivityVerb::POST) ? | 
					
						
							|  |  |  |                                       						 $notice->object_type : ActivityObject::ACTIVITY))); | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |         } | 
					
						
							|  |  |  |         return true; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-23 10:23:08 -04:00
										 |  |  |     function onEndJoinGroup($group, $profile) | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-06-17 13:37:16 +02:00
										 |  |  |         // Only do this if config is enabled
 | 
					
						
							|  |  |  |         if(!$this->JoinGroup) return true; | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |          | 
					
						
							| 
									
										
										
										
											2011-08-23 10:23:08 -04:00
										 |  |  |         $user = $profile->getUser(); | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         if (empty($user)) { | 
					
						
							|  |  |  |             return true; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |          | 
					
						
							| 
									
										
										
										
											2011-08-25 16:24:54 -04:00
										 |  |  |         $rendered = sprintf(_m('<a href="%s">%s</a> joined the group <a href="%s">%s</a>.'), | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |             				$profile->profileurl, | 
					
						
							|  |  |  |             				$profile->getBestName(), | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |                             $group->homeUrl(), | 
					
						
							|  |  |  |                             $group->getBestName()); | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |         $content  = sprintf(_m('%s (%s) joined the group %s (%s).'), | 
					
						
							|  |  |  |             				$profile->getBestName(), | 
					
						
							|  |  |  |             				$profile->profileurl, | 
					
						
							| 
									
										
										
										
											2010-12-14 14:27:37 +01:00
										 |  |  |                             $group->getBestName(), | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  | 			    			$group->homeUrl()); | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-23 10:23:08 -04:00
										 |  |  | 		$mem = Group_member::pkeyGet(array('group_id' => $group->id, | 
					
						
							|  |  |  | 										   'profile_id' => $profile->id)); | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  | 											  | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |         $notice = Notice::saveNew($user->id, | 
					
						
							|  |  |  |                                   $content, | 
					
						
							| 
									
										
										
										
											2011-08-25 11:54:26 -04:00
										 |  |  |                                   ActivityPlugin::SOURCE, | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |                                   array('rendered' => $rendered, | 
					
						
							| 
									
										
										
										
											2011-08-25 12:59:40 -04:00
										 |  |  |                                         'urls' => array(), | 
					
						
							| 
									
										
										
										
											2011-08-25 12:18:51 -04:00
										 |  |  |                                         'groups' => array($group->id), | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |                                   		'uri' => $mem->getURI(), | 
					
						
							|  |  |  |                                   		'verb' => ActivityVerb::JOIN, | 
					
						
							|  |  |  |                                   		'object_type' => ActivityObject::GROUP)); | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |         return true; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-23 10:23:08 -04:00
										 |  |  |     function onEndLeaveGroup($group, $profile) | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-06-17 13:37:16 +02:00
										 |  |  |         // Only do this if config is enabled
 | 
					
						
							|  |  |  |         if(!$this->LeaveGroup) return true; | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |          | 
					
						
							| 
									
										
										
										
											2011-08-23 10:23:08 -04:00
										 |  |  |         $user = $profile->getUser(); | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         if (empty($user)) { | 
					
						
							|  |  |  |             return true; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |          | 
					
						
							| 
									
										
										
										
											2011-08-25 16:24:54 -04:00
										 |  |  |         $rendered = sprintf(_m('<a href="%s">%s</a> left the group <a href="%s">%s</a>.'), | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |             				$profile->profileurl, | 
					
						
							|  |  |  |             				$profile->getBestName(), | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |                             $group->homeUrl(), | 
					
						
							|  |  |  |                             $group->getBestName()); | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |         $content  = sprintf(_m('%s (%s) left the group %s (%s)'), | 
					
						
							|  |  |  |             				$profile->getBestName(), | 
					
						
							|  |  |  |              				$profile->profileurl, | 
					
						
							| 
									
										
										
										
											2010-12-14 14:27:37 +01:00
										 |  |  |                             $group->getBestName(), | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  | 			    			$group->homeUrl()); | 
					
						
							|  |  |  | 			     | 
					
						
							|  |  |  | 		$uri = TagURI::mint('leave:%d:%d:%s', | 
					
						
							|  |  |  |                             $user->id, | 
					
						
							|  |  |  |                             $group->id, | 
					
						
							|  |  |  |                             common_date_iso8601(common_sql_now())); | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $notice = Notice::saveNew($user->id, | 
					
						
							|  |  |  |                                   $content, | 
					
						
							| 
									
										
										
										
											2011-08-25 11:54:26 -04:00
										 |  |  |                                   ActivityPlugin::SOURCE, | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |                                   array('rendered' => $rendered, | 
					
						
							| 
									
										
										
										
											2011-08-25 12:59:40 -04:00
										 |  |  |                                         'urls' => array(), | 
					
						
							| 
									
										
										
										
											2011-08-25 12:18:51 -04:00
										 |  |  |                                         'groups' => array($group->id), | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |                                   		'uri' => $uri, | 
					
						
							|  |  |  |                                   		'verb' => ActivityVerb::LEAVE, | 
					
						
							|  |  |  |                                   		'object_type' => ActivityObject::GROUP)); | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |         return true; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2011-08-23 11:49:27 -04:00
										 |  |  |      | 
					
						
							|  |  |  |     function onStartShowNoticeItem($nli) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  | 		$notice = $nli->notice; | 
					
						
							|  |  |  | 		 | 
					
						
							|  |  |  | 		$adapter = null; | 
					
						
							|  |  |  | 		 | 
					
						
							|  |  |  | 		switch ($notice->verb) { | 
					
						
							| 
									
										
										
										
											2011-08-24 18:12:02 -04:00
										 |  |  |         case ActivityVerb::FAVORITE: | 
					
						
							|  |  |  |         case ActivityVerb::UNFAVORITE: | 
					
						
							|  |  |  | 			$adapter = new SystemListItem($nli); | 
					
						
							|  |  |  | 			break; | 
					
						
							| 
									
										
										
										
											2011-08-23 11:49:27 -04:00
										 |  |  | 		case ActivityVerb::JOIN: | 
					
						
							|  |  |  | 			$adapter = new JoinListItem($nli); | 
					
						
							|  |  |  | 			break; | 
					
						
							| 
									
										
										
										
											2011-08-23 12:18:10 -04:00
										 |  |  | 		case ActivityVerb::LEAVE: | 
					
						
							|  |  |  | 			$adapter = new JoinListItem($nli); | 
					
						
							|  |  |  | 			break; | 
					
						
							|  |  |  | 		case ActivityVerb::FOLLOW: | 
					
						
							|  |  |  | 			$adapter = new FollowListItem($nli); | 
					
						
							|  |  |  | 			break; | 
					
						
							|  |  |  | 		case ActivityVerb::UNFOLLOW: | 
					
						
							|  |  |  | 			$adapter = new UnfollowListItem($nli); | 
					
						
							|  |  |  | 			break; | 
					
						
							| 
									
										
										
										
											2011-08-23 11:49:27 -04:00
										 |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if (!empty($adapter)) { | 
					
						
							|  |  |  |             $adapter->showNotice(); | 
					
						
							|  |  |  |             $adapter->showNoticeAttachments(); | 
					
						
							|  |  |  |             $adapter->showNoticeInfo(); | 
					
						
							|  |  |  |             $adapter->showNoticeOptions(); | 
					
						
							|  |  |  |             return false; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         return true; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-06 15:21:34 -05:00
										 |  |  |     function onEndNoticeAsActivity($notice, &$activity) | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-08-25 11:51:50 -04:00
										 |  |  | 		switch ($notice->verb) { | 
					
						
							|  |  |  |         case ActivityVerb::FAVORITE: | 
					
						
							|  |  |  |             $fave = Fave::staticGet('uri', $notice->uri); | 
					
						
							|  |  |  |             if (!empty($fave)) { | 
					
						
							|  |  |  |                 $notice = Notice::staticGet('id', $fave->notice_id); | 
					
						
							|  |  |  |                 if (!empty($notice)) { | 
					
						
							|  |  |  |                     $target = $notice->asActivity(); | 
					
						
							|  |  |  |                     if ($target->verb == ActivityVerb::POST) { | 
					
						
							|  |  |  |                         // "I like the thing you posted"
 | 
					
						
							|  |  |  |                         $activity->objects = $target->objects; | 
					
						
							|  |  |  |                     } else { | 
					
						
							|  |  |  |                         // "I like that you did whatever you did"
 | 
					
						
							|  |  |  |                         $activity->objects = array($target); | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             break; | 
					
						
							|  |  |  |         case ActivityVerb::UNFAVORITE: | 
					
						
							|  |  |  |             // FIXME: do something here
 | 
					
						
							|  |  |  | 			break; | 
					
						
							|  |  |  | 		case ActivityVerb::JOIN: | 
					
						
							|  |  |  |             $mem = Group_member::staticGet('uri', $notice->uri); | 
					
						
							|  |  |  |             if (!empty($mem)) { | 
					
						
							|  |  |  |                 $group = $mem->getGroup(); | 
					
						
							|  |  |  |                 $activity->objects = array(ActivityObject::fromGroup($group)); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             break; | 
					
						
							|  |  |  | 		case ActivityVerb::LEAVE: | 
					
						
							|  |  |  |             // FIXME: ????
 | 
					
						
							|  |  |  | 			break; | 
					
						
							|  |  |  | 		case ActivityVerb::FOLLOW: | 
					
						
							|  |  |  |             $sub = Subscription::staticGet('uri', $notice->uri); | 
					
						
							|  |  |  |             if (!empty($sub)) { | 
					
						
							|  |  |  |                 $profile = Profile::staticGet('id', $sub->subscribed); | 
					
						
							|  |  |  |                 if (!empty($profile)) { | 
					
						
							|  |  |  |                     $activity->objects = array(ActivityObject::fromProfile($profile)); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 			break; | 
					
						
							|  |  |  | 		case ActivityVerb::UNFOLLOW: | 
					
						
							|  |  |  |             // FIXME: ????
 | 
					
						
							|  |  |  | 			break; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |     	return true; | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function onPluginVersion(&$versions) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $versions[] = array('name' => 'Activity', | 
					
						
							|  |  |  |                             'version' => self::VERSION, | 
					
						
							|  |  |  |                             'author' => 'Evan Prodromou', | 
					
						
							|  |  |  |                             'homepage' => 'http://status.net/wiki/Plugin:Activity', | 
					
						
							|  |  |  |                             'rawdescription' => | 
					
						
							|  |  |  |                             _m('Emits notices when social activities happen.')); | 
					
						
							|  |  |  |         return true; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |