*
* @return success flag
*/
- function prepare($args)
+ protected function prepare(array $args=array())
{
parent::prepare($args);
if ($this->boolean('ajax')) {
if (empty($this->profile)) {
// TRANS: Server error displayed trying to show a notice without a connected profile.
$this->serverError(_('Notice has no profile.'), 500);
- return false;
}
- $this->user = User::staticGet('id', $this->profile->id);
+ $this->user = User::getKV('id', $this->profile->id);
- $this->avatar = $this->profile->getAvatar(AVATAR_PROFILE_SIZE);
+ try {
+ $this->avatar = $this->profile->getAvatar(AVATAR_PROFILE_SIZE);
+ } catch (Exception $e) {
+ $this->avatar = null;
+ }
return true;
}
*
* @return Notice
*/
- function getNotice()
+ protected function getNotice()
{
$id = $this->arg('notice');
- $notice = Notice::staticGet('id', $id);
+ $notice = Notice::getKV('id', $id);
- if (empty($notice)) {
+ if (!$notice instanceof Notice) {
// Did we used to have it, and it got deleted?
- $deleted = Deleted_notice::staticGet($id);
- if (!empty($deleted)) {
+ $deleted = Deleted_notice::getKV($id);
+ if ($deleted instanceof Deleted_notice) {
// TRANS: Client error displayed trying to show a deleted notice.
$this->clientError(_('Notice deleted.'), 410);
} else {
*
* @return void
*/
- function handle($args)
+ protected function handle()
{
- parent::handle($args);
+ parent::handle();
if ($this->boolean('ajax')) {
$this->showAjax();
} else {
if ($this->notice->is_local == Notice::REMOTE) {
- if (!empty($this->notice->url)) {
- $target = $this->notice->url;
- } else if (!empty($this->notice->uri) && preg_match('/^https?:/', $this->notice->uri)) {
- // Old OMB posts saved the remote URL only into the URI field.
- $target = $this->notice->uri;
- } else {
- // Shouldn't happen.
- $target = false;
- }
- if ($target && $target != $this->selfUrl()) {
- common_redirect($target, 301);
- return false;
+ try {
+ $target = $this->notice->getUrl()
+ if ($target != $this->selfUrl()) {
+ common_redirect($target, 301);
+ }
+ } catch (InvalidUrlException $e) {
+ common_debug('ShownoticeAction could not redirect to remote notice with id='.$this->notice->id . '. Falling back to showPage().');
}
}
$this->showPage();
function showAjax()
{
- header('Content-Type: text/xml;charset=utf-8');
- $this->xw->startDocument('1.0', 'UTF-8');
- $this->elementStart('html');
+ $this->startHTML('text/xml;charset=utf-8');
$this->elementStart('head');
// TRANS: Title for page that shows a notice.
$this->element('title', null, _m('TITLE','Notice'));
$nli = new NoticeListItem($this->notice, $this);
$nli->show();
$this->elementEnd('body');
- $this->elementEnd('html');
+ $this->endHTML();
}
/**
*/
function extraHead()
{
- $user = User::staticGet($this->profile->id);
+ $user = User::getKV($this->profile->id);
if (!$user) {
return;
'title'=>'oEmbed'),null);
// Extras to aid in sharing notices to Facebook
- $avatar = $this->profile->getAvatar(AVATAR_PROFILE_SIZE);
- $avatarUrl = ($avatar) ?
- $avatar->displayUrl() :
- Avatar::defaultImage(AVATAR_PROFILE_SIZE);
+ $avatarUrl = $this->profile->avatarUrl(AVATAR_PROFILE_SIZE);
$this->element('meta', array('property' => 'og:image',
'content' => $avatarUrl));
$this->element('meta', array('property' => 'og:description',