X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=actions%2Fshownotice.php;h=41408c23ccb4a396d92d814366824a5871475ae5;hb=7021dd9341635090207a39ea8f74558e243c874f;hp=b0d973a991cad8e61cfa2d8ce632013e89f3201b;hpb=c2ba727d6154394fe234e9297b430ac69fd24c88;p=quix0rs-gnu-social.git diff --git a/actions/shownotice.php b/actions/shownotice.php index b0d973a991..41408c23cc 100644 --- a/actions/shownotice.php +++ b/actions/shownotice.php @@ -1,6 +1,6 @@ . * * @category Personal - * @package Laconica - * @author Evan Prodromou - * @copyright 2008-2009 Control Yourself, Inc. + * @package StatusNet + * @author Evan Prodromou + * @copyright 2008-2009 StatusNet, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://laconi.ca/ + * @link http://status.net/ */ -if (!defined('LACONICA')) { +if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } @@ -39,13 +39,13 @@ require_once INSTALLDIR.'/lib/feedlist.php'; * Show a single notice * * @category Personal - * @package Laconica - * @author Evan Prodromou + * @package StatusNet + * @author Evan Prodromou * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://laconi.ca/ + * @link http://status.net/ */ -class ShownoticeAction extends Action +class ShownoticeAction extends OwnerDesignAction { /** * Notice object to show @@ -83,18 +83,31 @@ class ShownoticeAction extends Action $this->notice = Notice::staticGet($id); - if (!$this->notice) { - $this->clientError(_('No such notice.'), 404); + if (empty($this->notice)) { + // Did we used to have it, and it got deleted? + $deleted = Deleted_notice::staticGet($id); + if (!empty($deleted)) { + $this->clientError(_('Notice deleted.'), 410); + } else { + $this->clientError(_('No such notice.'), 404); + } return false; } $this->profile = $this->notice->getProfile(); - if (!$this->profile) { + if (empty($this->profile)) { $this->serverError(_('Notice has no profile'), 500); return false; } + $this->user = User::staticGet('id', $this->profile->id); + + if (! $this->notice->is_local) { + common_redirect($this->notice->uri); + return false; + } + $this->avatar = $this->profile->getAvatar(AVATAR_PROFILE_SIZE); return true; @@ -158,8 +171,14 @@ class ShownoticeAction extends Action function title() { + if (!empty($this->profile->fullname)) { + $base = $this->profile->fullname . ' (' . $this->user->nickname . ') '; + } else { + $base = $this->user->nickname; + } + return sprintf(_('%1$s\'s status on %2$s'), - $this->profile->nickname, + $base, common_exact_date($this->notice->created)); } @@ -177,7 +196,7 @@ class ShownoticeAction extends Action { parent::handle($args); - if ($this->notice->is_local == 0) { + if ($this->notice->is_local == Notice::REMOTE_OMB) { if (!empty($this->notice->url)) { common_redirect($this->notice->url, 301); } else if (!empty($this->notice->uri) && preg_match('/^https?:/', $this->notice->uri)) { @@ -209,7 +228,7 @@ class ShownoticeAction extends Action function showContent() { $this->elementStart('ol', array('class' => 'notices xoxo')); - $nli = new NoticeListItem($this->notice, $this); + $nli = new SingleNoticeItem($this->notice, $this); $nli->show(); $this->elementEnd('ol'); } @@ -262,5 +281,45 @@ class ShownoticeAction extends Action $this->element('meta', array('name' => 'microid', 'content' => $id->toString())); } + $this->element('link',array('rel'=>'alternate', + 'type'=>'application/json+oembed', + 'href'=>common_local_url( + 'oembed', + array(), + array('format'=>'json','url'=>$this->notice->uri)), + 'title'=>'oEmbed'),null); + $this->element('link',array('rel'=>'alternate', + 'type'=>'text/xml+oembed', + 'href'=>common_local_url( + 'oembed', + array(), + array('format'=>'xml','url'=>$this->notice->uri)), + 'title'=>'oEmbed'),null); + } +} + +class SingleNoticeItem extends NoticeListItem +{ + /** + * recipe function for displaying a single notice. + * + * We overload to show attachments. + * + * @return void + */ + + function show() + { + $this->showStart(); + $this->showNotice(); + $this->showNoticeAttachments(); + $this->showNoticeInfo(); + $this->showNoticeOptions(); + $this->showEnd(); + } + + function showNoticeAttachments() { + $al = new AttachmentList($this->notice, $this->out); + $al->show(); } }