| 
									
										
										
										
											2009-02-28 15:12:31 -08:00
										 |  |  | <?php | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Display a conversation in the browser | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * PHP version 5 | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @category Action | 
					
						
							| 
									
										
										
										
											2009-08-25 18:12:20 -04:00
										 |  |  |  * @package  StatusNet | 
					
						
							| 
									
										
										
										
											2009-08-25 18:19:04 -04:00
										 |  |  |  * @author   Evan Prodromou <evan@status.net> | 
					
						
							| 
									
										
										
										
											2014-05-12 10:27:52 +02:00
										 |  |  |  * @author   Mikael Nordfeldth <mmn@hethane.se> | 
					
						
							| 
									
										
										
										
											2009-02-28 15:12:31 -08:00
										 |  |  |  * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 | 
					
						
							| 
									
										
										
										
											2009-08-25 18:16:46 -04:00
										 |  |  |  * @link     http://status.net/ | 
					
						
							| 
									
										
										
										
											2009-02-28 15:12:31 -08:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2009-08-25 18:14:12 -04:00
										 |  |  |  * StatusNet - the distributed open-source microblogging tool | 
					
						
							| 
									
										
										
										
											2009-08-25 18:12:20 -04:00
										 |  |  |  * Copyright (C) 2009, StatusNet, Inc. | 
					
						
							| 
									
										
										
										
											2009-02-28 15:12:31 -08:00
										 |  |  |  * | 
					
						
							|  |  |  |  * 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/>. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-05-12 10:27:52 +02:00
										 |  |  | if (!defined('GNUSOCIAL')) { exit(1); } | 
					
						
							| 
									
										
										
										
											2009-04-03 16:12:33 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-28 15:12:31 -08:00
										 |  |  | /** | 
					
						
							|  |  |  |  * Conversation tree in the browser | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2014-05-12 10:27:52 +02:00
										 |  |  |  * Will always try to show the entire conversation, since that's how our | 
					
						
							|  |  |  |  * ConversationNoticeStream works. | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2009-02-28 15:12:31 -08:00
										 |  |  |  * @category Action | 
					
						
							| 
									
										
										
										
											2009-08-25 18:12:20 -04:00
										 |  |  |  * @package  StatusNet | 
					
						
							| 
									
										
										
										
											2009-08-25 18:19:04 -04:00
										 |  |  |  * @author   Evan Prodromou <evan@status.net> | 
					
						
							| 
									
										
										
										
											2014-05-12 10:27:52 +02:00
										 |  |  |  * @author   Mikael Nordfeldth <mmn@hethane.se> | 
					
						
							| 
									
										
										
										
											2009-02-28 15:12:31 -08:00
										 |  |  |  * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 | 
					
						
							| 
									
										
										
										
											2009-08-25 18:16:46 -04:00
										 |  |  |  * @link     http://status.net/ | 
					
						
							| 
									
										
										
										
											2009-02-28 15:12:31 -08:00
										 |  |  |  */ | 
					
						
							| 
									
										
										
										
											2014-05-11 21:11:09 +02:00
										 |  |  | class ConversationAction extends ManagedAction | 
					
						
							| 
									
										
										
										
											2009-02-28 15:12:31 -08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2014-05-12 10:27:52 +02:00
										 |  |  |     var $conv        = null; | 
					
						
							| 
									
										
										
										
											2011-04-10 20:16:51 -04:00
										 |  |  |     var $page        = null; | 
					
						
							|  |  |  |     var $notices     = null; | 
					
						
							| 
									
										
										
										
											2011-04-08 18:03:34 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-28 15:12:31 -08:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Initialization. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param array $args Web and URL arguments | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return boolean false if id not passed in | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2014-05-11 21:11:09 +02:00
										 |  |  |     protected function prepare(array $args=array()) | 
					
						
							| 
									
										
										
										
											2009-02-28 15:12:31 -08:00
										 |  |  |     { | 
					
						
							|  |  |  |         parent::prepare($args); | 
					
						
							| 
									
										
										
										
											2014-05-12 10:27:52 +02:00
										 |  |  |         $convId = $this->int('id'); | 
					
						
							| 
									
										
										
										
											2011-04-08 18:03:34 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-05-12 10:27:52 +02:00
										 |  |  |         $this->conv = Conversation::getKV('id', $convId); | 
					
						
							|  |  |  |         if (!$this->conv instanceof Conversation) { | 
					
						
							|  |  |  |             throw new ClientException('Could not find specified conversation'); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2011-04-08 18:03:34 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-28 15:12:31 -08:00
										 |  |  |         return true; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-21 11:43:09 -04:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Returns the page title | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return string page title | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2009-02-28 15:12:31 -08:00
										 |  |  |     function title() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2010-10-31 00:58:35 +02:00
										 |  |  |         // TRANS: Title for page with a conversion (multiple notices in context).
 | 
					
						
							|  |  |  |         return _('Conversation'); | 
					
						
							| 
									
										
										
										
											2009-02-28 15:12:31 -08:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-21 11:43:09 -04:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Show content. | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2014-05-12 10:27:52 +02:00
										 |  |  |      * NoticeList extended classes do most heavy lifting. Plugins can override. | 
					
						
							| 
									
										
										
										
											2009-05-21 11:43:09 -04:00
										 |  |  |      * | 
					
						
							|  |  |  |      * @return void | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2009-02-28 15:12:31 -08:00
										 |  |  |     function showContent() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2014-05-12 10:27:52 +02:00
										 |  |  |         if (Event::handle('StartShowConversation', array($this, $this->conv, $this->scoped))) { | 
					
						
							|  |  |  |             $notices = $this->conv->getNotices(); | 
					
						
							|  |  |  |             $nl = new FullThreadedNoticeList($notices, $this, $this->scoped); | 
					
						
							|  |  |  |             $cnt = $nl->show(); | 
					
						
							| 
									
										
										
										
											2011-09-24 09:29:12 -04:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2014-05-12 10:27:52 +02:00
										 |  |  |         Event::handle('EndShowConversation', array($this, $this->conv, $this->scoped)); | 
					
						
							| 
									
										
										
										
											2009-02-28 15:12:31 -08:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-07-15 16:57:39 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-06 22:14:56 +02:00
										 |  |  |     function isReadOnly($args) | 
					
						
							| 
									
										
										
										
											2009-07-15 16:57:39 -04:00
										 |  |  |     { | 
					
						
							|  |  |  |         return true; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2011-07-15 12:55:43 -04:00
										 |  |  |      | 
					
						
							|  |  |  |     function getFeeds() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |     	 | 
					
						
							|  |  |  |         return array(new Feed(Feed::JSON, | 
					
						
							|  |  |  |                               common_local_url('apiconversation', | 
					
						
							|  |  |  |                                                array( | 
					
						
							| 
									
										
										
										
											2014-05-12 10:27:52 +02:00
										 |  |  |                                                     'id' => $this->conv->id, | 
					
						
							| 
									
										
										
										
											2011-07-15 12:55:43 -04:00
										 |  |  |                                                     'format' => 'as')), | 
					
						
							|  |  |  |                               // TRANS: Title for link to notice feed.
 | 
					
						
							|  |  |  |                               // TRANS: %s is a user nickname.
 | 
					
						
							|  |  |  |                               _('Conversation feed (Activity Streams JSON)')), | 
					
						
							|  |  |  |                      new Feed(Feed::RSS2, | 
					
						
							|  |  |  |                               common_local_url('apiconversation', | 
					
						
							|  |  |  |                                                array( | 
					
						
							| 
									
										
										
										
											2014-05-12 10:27:52 +02:00
										 |  |  |                                                     'id' => $this->conv->id, | 
					
						
							| 
									
										
										
										
											2011-07-15 12:55:43 -04:00
										 |  |  |                                                     'format' => 'rss')), | 
					
						
							|  |  |  |                               // TRANS: Title for link to notice feed.
 | 
					
						
							|  |  |  |                               // TRANS: %s is a user nickname.
 | 
					
						
							|  |  |  |                               _('Conversation feed (RSS 2.0)')), | 
					
						
							|  |  |  |                      new Feed(Feed::ATOM, | 
					
						
							|  |  |  |                               common_local_url('apiconversation', | 
					
						
							|  |  |  |                                                array( | 
					
						
							| 
									
										
										
										
											2014-05-12 10:27:52 +02:00
										 |  |  |                                                     'id' => $this->conv->id, | 
					
						
							| 
									
										
										
										
											2011-07-15 12:55:43 -04:00
										 |  |  |                                                     'format' => 'atom')), | 
					
						
							|  |  |  |                               // TRANS: Title for link to notice feed.
 | 
					
						
							|  |  |  |                               // TRANS: %s is a user nickname.
 | 
					
						
							| 
									
										
										
										
											2015-06-02 12:58:30 +02:00
										 |  |  |                               _('Conversation feed (Atom)'))); | 
					
						
							| 
									
										
										
										
											2011-07-15 12:55:43 -04:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-02-28 15:12:31 -08:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2011-09-24 09:29:12 -04:00
										 |  |  | 
 |