| 
									
										
										
										
											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-09-18 12:40:17 -04:00
										 |  |  |     const SOURCE  = 'activity'; | 
					
						
							| 
									
										
										
										
											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; | 
					
						
							| 
									
										
										
										
											2011-09-21 10:15:34 -04:00
										 |  |  |     public $StopFollowUser  = false; | 
					
						
							| 
									
										
										
										
											2011-06-17 13:37:16 +02:00
										 |  |  |     public $JoinGroup = true; | 
					
						
							| 
									
										
										
										
											2011-09-21 10:15:34 -04:00
										 |  |  |     public $LeaveGroup = false; | 
					
						
							|  |  |  |     public $StartLike = false; | 
					
						
							|  |  |  |     public $StopLike = false; | 
					
						
							| 
									
										
										
										
											2011-06-17 13:37:16 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-09 21:35:16 +02:00
										 |  |  |     function onEndSubscribe(Profile $profile, Profile $other) | 
					
						
							| 
									
										
										
										
											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->StartFollowUser) return true; | 
					
						
							| 
									
										
										
										
											2013-09-09 21:35:16 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if (!$profile->isLocal()) { | 
					
						
							|  |  |  |             // can't do anything with remote user anyway
 | 
					
						
							|  |  |  |             return true; | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2013-09-09 21:35:16 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $sub = Subscription::pkeyGet(array('subscriber' => $profile->id, | 
					
						
							|  |  |  |                                            'subscribed' => $other->id)); | 
					
						
							|  |  |  |         // TRANS: Text for "started following" item in activity plugin.
 | 
					
						
							|  |  |  |         // TRANS: %1$s is a profile URL, %2$s is a profile name,
 | 
					
						
							|  |  |  |         // TRANS: %3$s is a profile URL, %4$s is a profile name.
 | 
					
						
							| 
									
										
										
										
											2015-09-06 01:53:11 +02:00
										 |  |  |         $rendered = html_sprintf(_m('<a href="%1$s">%2$s</a> started following <a href="%3$s">%4$s</a>.'), | 
					
						
							| 
									
										
										
										
											2014-04-29 19:46:58 +02:00
										 |  |  |                             $profile->getUrl(), | 
					
						
							| 
									
										
										
										
											2013-09-09 21:35:16 +02:00
										 |  |  |                             $profile->getBestName(), | 
					
						
							| 
									
										
										
										
											2014-04-29 19:46:58 +02:00
										 |  |  |                             $other->getUrl(), | 
					
						
							| 
									
										
										
										
											2013-09-09 21:35:16 +02:00
										 |  |  |                             $other->getBestName()); | 
					
						
							|  |  |  |         // TRANS: Text for "started following" item in activity plugin.
 | 
					
						
							|  |  |  |         // TRANS: %1$s is a profile name, %2$s is a profile URL,
 | 
					
						
							|  |  |  |         // TRANS: %3$s is a profile name, %4$s is a profile URL.
 | 
					
						
							|  |  |  |         $content  = sprintf(_m('%1$s (%2$s) started following %3$s (%4$s).'), | 
					
						
							|  |  |  |                             $profile->getBestName(), | 
					
						
							| 
									
										
										
										
											2014-04-29 19:46:58 +02:00
										 |  |  |                             $profile->getUrl(), | 
					
						
							| 
									
										
										
										
											2013-09-09 21:35:16 +02:00
										 |  |  |                             $other->getBestName(), | 
					
						
							| 
									
										
										
										
											2014-04-29 19:46:58 +02:00
										 |  |  |                             $other->getUrl()); | 
					
						
							| 
									
										
										
										
											2013-09-09 21:35:16 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $notice = Notice::saveNew($profile->id, | 
					
						
							|  |  |  |                                   $content, | 
					
						
							|  |  |  |                                   ActivityPlugin::SOURCE, | 
					
						
							|  |  |  |                                   array('rendered' => $rendered, | 
					
						
							|  |  |  |                                         'urls' => array(), | 
					
						
							|  |  |  |                                         'replies' => array($other->getUri()), | 
					
						
							|  |  |  |                                         'verb' => ActivityVerb::FOLLOW, | 
					
						
							|  |  |  |                                         'object_type' => ActivityObject::PERSON, | 
					
						
							|  |  |  |                                         'uri' => $sub->uri)); | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |         return true; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-09 21:35:16 +02:00
										 |  |  |     function onEndUnsubscribe(Profile $profile, Profile $other) | 
					
						
							| 
									
										
										
										
											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->StopFollowUser) return true; | 
					
						
							| 
									
										
										
										
											2013-09-09 21:35:16 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if (!$profile->isLocal()) { | 
					
						
							|  |  |  |             return true; | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2013-09-09 21:35:16 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         // TRANS: Text for "stopped following" item in activity plugin.
 | 
					
						
							|  |  |  |         // TRANS: %1$s is a profile URL, %2$s is a profile name,
 | 
					
						
							|  |  |  |         // TRANS: %3$s is a profile URL, %4$s is a profile name.
 | 
					
						
							| 
									
										
										
										
											2015-09-06 01:53:11 +02:00
										 |  |  |         $rendered = html_sprintf(_m('<a href="%1$s">%2$s</a> stopped following <a href="%3$s">%4$s</a>.'), | 
					
						
							| 
									
										
										
										
											2014-04-29 19:46:58 +02:00
										 |  |  |                             $profile->getUrl(), | 
					
						
							| 
									
										
										
										
											2013-09-09 21:35:16 +02:00
										 |  |  |                             $profile->getBestName(), | 
					
						
							| 
									
										
										
										
											2014-04-29 19:46:58 +02:00
										 |  |  |                             $other->getUrl(), | 
					
						
							| 
									
										
										
										
											2013-09-09 21:35:16 +02:00
										 |  |  |                             $other->getBestName()); | 
					
						
							|  |  |  |         // TRANS: Text for "stopped following" item in activity plugin.
 | 
					
						
							|  |  |  |         // TRANS: %1$s is a profile name, %2$s is a profile URL,
 | 
					
						
							|  |  |  |         // TRANS: %3$s is a profile name, %4$s is a profile URL.
 | 
					
						
							|  |  |  |         $content  = sprintf(_m('%1$s (%2$s) stopped following %3$s (%4$s).'), | 
					
						
							|  |  |  |                             $profile->getBestName(), | 
					
						
							| 
									
										
										
										
											2014-04-29 19:46:58 +02:00
										 |  |  |                             $profile->getUrl(), | 
					
						
							| 
									
										
										
										
											2013-09-09 21:35:16 +02:00
										 |  |  |                             $other->getBestName(), | 
					
						
							| 
									
										
										
										
											2014-04-29 19:46:58 +02:00
										 |  |  |                             $other->getUrl()); | 
					
						
							| 
									
										
										
										
											2013-09-09 21:35:16 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $uri = TagURI::mint('stop-following:%d:%d:%s', | 
					
						
							|  |  |  |                             $profile->id, | 
					
						
							|  |  |  |                             $other->id, | 
					
						
							|  |  |  |                             common_date_iso8601(common_sql_now())); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $notice = Notice::saveNew($profile->id, | 
					
						
							|  |  |  |                                   $content, | 
					
						
							|  |  |  |                                   ActivityPlugin::SOURCE, | 
					
						
							|  |  |  |                                   array('rendered' => $rendered, | 
					
						
							|  |  |  |                                         'urls' => array(), | 
					
						
							|  |  |  |                                         'replies' => array($other->getUri()), | 
					
						
							|  |  |  |                                         'uri' => $uri, | 
					
						
							|  |  |  |                                         'verb' => ActivityVerb::UNFOLLOW, | 
					
						
							|  |  |  |                                         'object_type' => ActivityObject::PERSON)); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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; | 
					
						
							| 
									
										
										
										
											2013-09-09 21:35:16 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if (!$profile->isLocal()) { | 
					
						
							|  |  |  |             return true; | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2013-09-09 21:35:16 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $author = Profile::getKV('id', $notice->profile_id); | 
					
						
							|  |  |  |         // TRANS: Text for "stopped liking" item in activity plugin.
 | 
					
						
							|  |  |  |         // TRANS: %1$s is a profile URL, %2$s is a profile name,
 | 
					
						
							|  |  |  |         // TRANS: %3$s is a notice URL, %4$s is an author name.
 | 
					
						
							| 
									
										
										
										
											2015-09-06 01:53:11 +02:00
										 |  |  |         $rendered = html_sprintf(_m('<a href="%1$s">%2$s</a> stopped liking <a href="%3$s">%4$s\'s update</a>.'), | 
					
						
							| 
									
										
										
										
											2014-04-29 19:46:58 +02:00
										 |  |  |                             $profile->getUrl(), | 
					
						
							| 
									
										
										
										
											2013-09-09 21:35:16 +02:00
										 |  |  |                             $profile->getBestName(), | 
					
						
							| 
									
										
										
										
											2014-04-29 19:46:58 +02:00
										 |  |  |                             $notice->getUrl(), | 
					
						
							| 
									
										
										
										
											2013-09-09 21:35:16 +02:00
										 |  |  |                             $author->getBestName()); | 
					
						
							|  |  |  |         // TRANS: Text for "stopped liking" item in activity plugin.
 | 
					
						
							|  |  |  |         // TRANS: %1$s is a profile name, %2$s is a profile URL,
 | 
					
						
							|  |  |  |         // TRANS: %3$s is an author name, %4$s is a notice URL.
 | 
					
						
							|  |  |  |         $content  = sprintf(_m('%1$s (%2$s) stopped liking %3$s\'s status (%4$s).'), | 
					
						
							|  |  |  |                             $profile->getBestName(), | 
					
						
							| 
									
										
										
										
											2014-04-29 19:46:58 +02:00
										 |  |  |                             $profile->getUrl(), | 
					
						
							| 
									
										
										
										
											2013-09-09 21:35:16 +02:00
										 |  |  |                             $author->getBestName(), | 
					
						
							| 
									
										
										
										
											2014-04-29 19:46:58 +02:00
										 |  |  |                             $notice->getUrl()); | 
					
						
							| 
									
										
										
										
											2013-09-09 21:35:16 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $uri = TagURI::mint('unlike:%d:%d:%s', | 
					
						
							|  |  |  |                             $profile->id, | 
					
						
							|  |  |  |                             $notice->id, | 
					
						
							|  |  |  |                             common_date_iso8601(common_sql_now())); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $notice = Notice::saveNew($profile->id, | 
					
						
							|  |  |  |                                   $content, | 
					
						
							|  |  |  |                                   ActivityPlugin::SOURCE, | 
					
						
							|  |  |  |                                   array('rendered' => $rendered, | 
					
						
							|  |  |  |                                         'urls' => array(), | 
					
						
							|  |  |  |                                         'replies' => array($author->getUri()), | 
					
						
							|  |  |  |                                         'uri' => $uri, | 
					
						
							|  |  |  |                                         'verb' => ActivityVerb::UNFAVORITE, | 
					
						
							|  |  |  |                                         'object_type' => (($notice->verb == ActivityVerb::POST) ? | 
					
						
							| 
									
										
										
										
											2016-01-02 16:05:20 +01:00
										 |  |  |                                                          $notice->object_type : null))); | 
					
						
							| 
									
										
										
										
											2013-09-09 21:35:16 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											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-30 10:56:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-09 21:35:16 +02:00
										 |  |  |         if (!$profile->isLocal()) { | 
					
						
							| 
									
										
										
										
											2011-08-23 10:23:08 -04:00
										 |  |  |             return true; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2011-08-30 10:56:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-30 11:37:20 +02:00
										 |  |  |         // TRANS: Text for "joined group" item in activity plugin.
 | 
					
						
							|  |  |  |         // TRANS: %1$s is a profile URL, %2$s is a profile name,
 | 
					
						
							|  |  |  |         // TRANS: %3$s is a group URL, %4$s is a group name.
 | 
					
						
							| 
									
										
										
										
											2015-09-06 01:53:11 +02:00
										 |  |  |         $rendered = html_sprintf(_m('<a href="%1$s">%2$s</a> joined the group <a href="%3$s">%4$s</a>.'), | 
					
						
							| 
									
										
										
										
											2014-04-29 19:46:58 +02:00
										 |  |  |                             $profile->getUrl(), | 
					
						
							| 
									
										
										
										
											2011-08-30 10:56:00 +02:00
										 |  |  |                             $profile->getBestName(), | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |                             $group->homeUrl(), | 
					
						
							|  |  |  |                             $group->getBestName()); | 
					
						
							| 
									
										
										
										
											2011-08-30 11:37:20 +02:00
										 |  |  |         // TRANS: Text for "joined group" item in activity plugin.
 | 
					
						
							|  |  |  |         // TRANS: %1$s is a profile name, %2$s is a profile URL,
 | 
					
						
							|  |  |  |         // TRANS: %3$s is a group name, %4$s is a group URL.
 | 
					
						
							| 
									
										
										
										
											2011-08-30 10:56:00 +02:00
										 |  |  |         $content  = sprintf(_m('%1$s (%2$s) joined the group %3$s (%4$s).'), | 
					
						
							|  |  |  |                             $profile->getBestName(), | 
					
						
							| 
									
										
										
										
											2014-04-29 19:46:58 +02:00
										 |  |  |                             $profile->getUrl(), | 
					
						
							| 
									
										
										
										
											2010-12-14 14:27:37 +01:00
										 |  |  |                             $group->getBestName(), | 
					
						
							| 
									
										
										
										
											2011-08-30 10:56:00 +02:00
										 |  |  |                             $group->homeUrl()); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $mem = Group_member::pkeyGet(array('group_id' => $group->id, | 
					
						
							|  |  |  |                                            'profile_id' => $profile->id)); | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-09 21:35:16 +02:00
										 |  |  |         $notice = Notice::saveNew($profile->id, | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |                                   $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-30 10:56:00 +02: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-30 10:56:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-09 21:35:16 +02:00
										 |  |  |         if (!$profile->isLocal()) { | 
					
						
							| 
									
										
										
										
											2011-08-23 10:23:08 -04:00
										 |  |  |             return true; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2011-08-30 10:56:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-30 11:37:20 +02:00
										 |  |  |         // TRANS: Text for "left group" item in activity plugin.
 | 
					
						
							|  |  |  |         // TRANS: %1$s is a profile URL, %2$s is a profile name,
 | 
					
						
							|  |  |  |         // TRANS: %3$s is a group URL, %4$s is a group name.
 | 
					
						
							| 
									
										
										
										
											2015-09-06 01:53:11 +02:00
										 |  |  |         $rendered = html_sprintf(_m('<a href="%1$s">%2$s</a> left the group <a href="%3$s">%4$s</a>.'), | 
					
						
							| 
									
										
										
										
											2014-04-29 19:46:58 +02:00
										 |  |  |                             $profile->getUrl(), | 
					
						
							| 
									
										
										
										
											2011-08-30 10:56:00 +02:00
										 |  |  |                             $profile->getBestName(), | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |                             $group->homeUrl(), | 
					
						
							|  |  |  |                             $group->getBestName()); | 
					
						
							| 
									
										
										
										
											2011-08-30 11:37:20 +02:00
										 |  |  |         // TRANS: Text for "left group" item in activity plugin.
 | 
					
						
							|  |  |  |         // TRANS: %1$s is a profile name, %2$s is a profile URL,
 | 
					
						
							|  |  |  |         // TRANS: %3$s is a group name, %4$s is a group URL.
 | 
					
						
							|  |  |  |         $content  = sprintf(_m('%1$s (%2$s) left the group %3$s (%4$s).'), | 
					
						
							| 
									
										
										
										
											2011-08-30 10:56:00 +02:00
										 |  |  |                             $profile->getBestName(), | 
					
						
							| 
									
										
										
										
											2014-04-29 19:46:58 +02:00
										 |  |  |                             $profile->getUrl(), | 
					
						
							| 
									
										
										
										
											2010-12-14 14:27:37 +01:00
										 |  |  |                             $group->getBestName(), | 
					
						
							| 
									
										
										
										
											2011-08-30 10:56:00 +02:00
										 |  |  |                             $group->homeUrl()); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $uri = TagURI::mint('leave:%d:%d:%s', | 
					
						
							| 
									
										
										
										
											2013-09-09 21:35:16 +02:00
										 |  |  |                             $profile->id, | 
					
						
							| 
									
										
										
										
											2011-08-22 23:48:38 -04:00
										 |  |  |                             $group->id, | 
					
						
							|  |  |  |                             common_date_iso8601(common_sql_now())); | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-09 21:35:16 +02:00
										 |  |  |         $notice = Notice::saveNew($profile->id, | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |                                   $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-30 10:56:00 +02:00
										 |  |  |                                         'uri' => $uri, | 
					
						
							|  |  |  |                                         'verb' => ActivityVerb::LEAVE, | 
					
						
							|  |  |  |                                         'object_type' => ActivityObject::GROUP)); | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |         return true; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2011-08-30 10:56:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-23 11:49:27 -04:00
										 |  |  |     function onStartShowNoticeItem($nli) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-08-30 10:56:00 +02:00
										 |  |  |         $notice = $nli->notice; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $adapter = null; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         switch ($notice->verb) { | 
					
						
							|  |  |  |         case ActivityVerb::JOIN: | 
					
						
							|  |  |  |             $adapter = new JoinListItem($nli); | 
					
						
							|  |  |  |             break; | 
					
						
							|  |  |  |         case ActivityVerb::LEAVE: | 
					
						
							| 
									
										
										
										
											2014-07-29 10:43:58 +02:00
										 |  |  |             $adapter = new LeaveListItem($nli); | 
					
						
							| 
									
										
										
										
											2011-08-30 10:56:00 +02:00
										 |  |  |             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; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2011-08-30 10:56:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-23 11:49:27 -04:00
										 |  |  |         return true; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-07-28 09:40:07 +02:00
										 |  |  |     public function onEndNoticeAsActivity(Notice $stored, Activity $act, Profile $scoped=null) | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2014-07-28 09:40:07 +02:00
										 |  |  |         switch ($stored->verb) { | 
					
						
							| 
									
										
										
										
											2011-08-25 11:51:50 -04:00
										 |  |  |         case ActivityVerb::UNFAVORITE: | 
					
						
							|  |  |  |             // FIXME: do something here
 | 
					
						
							| 
									
										
										
										
											2011-08-30 10:56:00 +02:00
										 |  |  |             break; | 
					
						
							|  |  |  |         case ActivityVerb::JOIN: | 
					
						
							| 
									
										
										
										
											2014-07-30 00:21:00 +02:00
										 |  |  |             $mem = Group_member::getKV('uri', $stored->getUri()); | 
					
						
							|  |  |  |             if ($mem instanceof Group_member) { | 
					
						
							| 
									
										
										
										
											2011-08-25 11:51:50 -04:00
										 |  |  |                 $group = $mem->getGroup(); | 
					
						
							| 
									
										
										
										
											2014-07-30 00:21:00 +02:00
										 |  |  |                 $act->title = $stored->getTitle(); | 
					
						
							| 
									
										
										
										
											2014-07-28 09:40:07 +02:00
										 |  |  |                 $act->objects = array(ActivityObject::fromGroup($group)); | 
					
						
							| 
									
										
										
										
											2011-08-25 11:51:50 -04:00
										 |  |  |             } | 
					
						
							|  |  |  |             break; | 
					
						
							| 
									
										
										
										
											2011-08-30 10:56:00 +02:00
										 |  |  |         case ActivityVerb::LEAVE: | 
					
						
							| 
									
										
										
										
											2011-08-25 11:51:50 -04:00
										 |  |  |             // FIXME: ????
 | 
					
						
							| 
									
										
										
										
											2011-08-30 10:56:00 +02:00
										 |  |  |             break; | 
					
						
							|  |  |  |         case ActivityVerb::FOLLOW: | 
					
						
							| 
									
										
										
										
											2014-07-28 09:40:07 +02:00
										 |  |  |             $sub = Subscription::getKV('uri', $stored->uri); | 
					
						
							| 
									
										
										
										
											2014-07-30 00:21:00 +02:00
										 |  |  |             if ($sub instanceof Subscription) { | 
					
						
							| 
									
										
										
										
											2013-08-18 13:04:58 +02:00
										 |  |  |                 $profile = Profile::getKV('id', $sub->subscribed); | 
					
						
							| 
									
										
										
										
											2014-07-30 00:21:00 +02:00
										 |  |  |                 if ($profile instanceof Profile) { | 
					
						
							|  |  |  |                     $act->title = $stored->getTitle(); | 
					
						
							| 
									
										
										
										
											2014-07-28 09:40:07 +02:00
										 |  |  |                     $act->objects = array($profile->asActivityObject()); | 
					
						
							| 
									
										
										
										
											2011-08-25 11:51:50 -04:00
										 |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2011-08-30 10:56:00 +02:00
										 |  |  |             break; | 
					
						
							|  |  |  |         case ActivityVerb::UNFOLLOW: | 
					
						
							| 
									
										
										
										
											2011-08-25 11:51:50 -04:00
										 |  |  |             // FIXME: ????
 | 
					
						
							| 
									
										
										
										
											2011-08-30 10:56:00 +02:00
										 |  |  |             break; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2011-08-25 11:51:50 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-30 10:56:00 +02:00
										 |  |  |         return true; | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-06 22:04:01 +02:00
										 |  |  |     function onPluginVersion(array &$versions) | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |     { | 
					
						
							|  |  |  |         $versions[] = array('name' => 'Activity', | 
					
						
							|  |  |  |                             'version' => self::VERSION, | 
					
						
							|  |  |  |                             'author' => 'Evan Prodromou', | 
					
						
							|  |  |  |                             'homepage' => 'http://status.net/wiki/Plugin:Activity', | 
					
						
							|  |  |  |                             'rawdescription' => | 
					
						
							| 
									
										
										
										
											2011-08-30 10:56:00 +02:00
										 |  |  |                             // TRANS: Plugin description.
 | 
					
						
							| 
									
										
										
										
											2010-10-27 11:40:52 -04:00
										 |  |  |                             _m('Emits notices when social activities happen.')); | 
					
						
							|  |  |  |         return true; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |