| 
									
										
										
										
											2008-05-08 22:16:04 -04:00
										 |  |  | <?php | 
					
						
							| 
									
										
										
										
											2008-05-20 15:14:12 -04:00
										 |  |  | /* | 
					
						
							| 
									
										
										
										
											2008-05-14 15:26:48 -04:00
										 |  |  |  * Laconica - a distributed open-source microblogging tool | 
					
						
							|  |  |  |  * Copyright (C) 2008, Controlez-Vous, Inc. | 
					
						
							| 
									
										
										
										
											2008-05-20 15:14:12 -04:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-05-14 15:26:48 -04: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. | 
					
						
							| 
									
										
										
										
											2008-05-20 15:14:12 -04:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-05-14 15:26:48 -04:00
										 |  |  |  * 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. | 
					
						
							| 
									
										
										
										
											2008-05-20 15:14:12 -04:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-05-14 15:26:48 -04:00
										 |  |  |  * 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/>. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-05-17 11:47:01 -04:00
										 |  |  | if (!defined('LACONICA')) { exit(1); } | 
					
						
							| 
									
										
										
										
											2008-05-08 22:16:04 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-10 18:22:22 -04:00
										 |  |  | require_once(INSTALLDIR.'/lib/stream.php'); | 
					
						
							| 
									
										
										
										
											2008-06-10 18:19:10 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | class ShownoticeAction extends StreamAction { | 
					
						
							| 
									
										
										
										
											2008-05-08 22:16:04 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:21:29 -05:00
										 |  |  |     var $notice = null; | 
					
						
							|  |  |  |     var $profile = null; | 
					
						
							|  |  |  |     var $avatar = null; | 
					
						
							| 
									
										
										
										
											2008-12-02 00:02:00 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |     function prepare($args) { | 
					
						
							| 
									
										
										
										
											2008-12-01 23:12:43 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         parent::prepare($args); | 
					
						
							| 
									
										
										
										
											2008-12-01 23:12:43 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         $id = $this->arg('notice'); | 
					
						
							|  |  |  |         $this->notice = Notice::staticGet($id); | 
					
						
							| 
									
										
										
										
											2008-05-08 22:16:04 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         if (!$this->notice) { | 
					
						
							|  |  |  |             $this->client_error(_('No such notice.'), 404); | 
					
						
							|  |  |  |             return false; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2008-05-08 22:16:04 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         $this->profile = $this->notice->getProfile(); | 
					
						
							| 
									
										
										
										
											2008-06-27 18:29:30 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         if (!$this->profile) { | 
					
						
							|  |  |  |             $this->server_error(_('Notice has no profile'), 500); | 
					
						
							|  |  |  |             return false; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2008-05-20 15:14:12 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         $this->avatar = $this->profile->getAvatar(AVATAR_STREAM_SIZE); | 
					
						
							| 
									
										
										
										
											2008-12-01 23:50:21 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         return true; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2008-12-01 23:12:43 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |     function last_modified() { | 
					
						
							|  |  |  |         return max(strtotime($this->notice->created), | 
					
						
							|  |  |  |                    strtotime($this->profile->modified), | 
					
						
							|  |  |  |                    ($this->avatar) ? strtotime($this->avatar->modified) : 0); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2008-12-01 23:50:21 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |     function etag() { | 
					
						
							|  |  |  |         return 'W/"' . implode(':', array($this->arg('action'), | 
					
						
							|  |  |  |                                           common_language(), | 
					
						
							|  |  |  |                                           $this->notice->id, | 
					
						
							|  |  |  |                                           strtotime($this->notice->created), | 
					
						
							|  |  |  |                                           strtotime($this->profile->modified), | 
					
						
							|  |  |  |                                           ($this->avatar) ? strtotime($this->avatar->modified) : 0)) . '"'; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2008-12-01 23:12:43 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |     function handle($args) { | 
					
						
							| 
									
										
										
										
											2008-05-20 15:14:12 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         parent::handle($args); | 
					
						
							| 
									
										
										
										
											2008-12-01 23:12:43 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         common_show_header(sprintf(_('%1$s\'s status on %2$s'), | 
					
						
							|  |  |  |                                    $this->profile->nickname, | 
					
						
							|  |  |  |                                    common_exact_date($this->notice->created)), | 
					
						
							| 
									
										
										
										
											2008-12-23 14:21:29 -05:00
										 |  |  |                            array($this, 'show_header'), null, | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |                            array($this, 'show_top')); | 
					
						
							| 
									
										
										
										
											2008-05-20 15:14:12 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         common_element_start('ul', array('id' => 'notices')); | 
					
						
							| 
									
										
										
										
											2008-12-11 18:12:52 -05:00
										 |  |  |         $nli = new NoticeListItem($this->notice); | 
					
						
							|  |  |  |         $nli->show(); | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         common_element_end('ul'); | 
					
						
							| 
									
										
										
										
											2008-05-20 15:14:12 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         common_show_footer(); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2008-05-20 15:14:12 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |     function show_header() { | 
					
						
							| 
									
										
										
										
											2008-12-01 23:12:43 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         $user = User::staticGet($this->profile->id); | 
					
						
							| 
									
										
										
										
											2008-12-01 23:12:43 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         if (!$user) { | 
					
						
							|  |  |  |             return; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2008-12-01 23:12:43 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         if ($user->emailmicroid && $user->email && $this->notice->uri) { | 
					
						
							|  |  |  |             common_element('meta', array('name' => 'microid', | 
					
						
							|  |  |  |                                          'content' => "mailto+http:sha1:" . sha1(sha1('mailto:' . $user->email) . sha1($this->notice->uri)))); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2008-12-01 23:12:43 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         if ($user->jabbermicroid && $user->jabber && $this->notice->uri) { | 
					
						
							|  |  |  |             common_element('meta', array('name' => 'microid', | 
					
						
							|  |  |  |                                          'content' => "xmpp+http:sha1:" . sha1(sha1('xmpp:' . $user->jabber) . sha1($this->notice->uri)))); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2008-07-21 08:00:36 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |     function show_top() { | 
					
						
							|  |  |  |         $cur = common_current_user(); | 
					
						
							|  |  |  |         if ($cur && $cur->id == $this->profile->id) { | 
					
						
							|  |  |  |             common_notice_form(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2008-07-08 06:05:19 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |     function no_such_notice() { | 
					
						
							|  |  |  |         common_user_error(_('No such notice.')); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2008-05-08 22:16:04 -04:00
										 |  |  | } |