X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=actions%2Ffile.php;h=49ed8af1d6eff55f89ef6ef77dcb33952dd2a5a2;hb=1fdc72f5956f00c736f7761aead4abd8da192eda;hp=bb245c4a778abd73145db2b3006e061008a1fee9;hpb=0461aafeef55782056b02cd0d8702ae0a0e3812a;p=quix0rs-gnu-social.git diff --git a/actions/file.php b/actions/file.php index bb245c4a77..49ed8af1d6 100644 --- a/actions/file.php +++ b/actions/file.php @@ -1,7 +1,7 @@ . */ -if (!defined('LACONICA')) { exit(1); } +if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } require_once(INSTALLDIR.'/actions/shownotice.php'); -class FileAction extends ShowNoticeAction +// @todo FIXME: Add documentation. +class FileAction extends Action { - function showPage() { - $source_url = common_local_url('file', array('notice' => $this->notice->id)); - $query = "select file_redirection.url as url from file join file_redirection on file.id = file_redirection.file_id where file.url = '$source_url'"; - $file = new File_redirection; - $file->query($query); - $file->fetch(); - if (empty($file->url)) { - die('nothing attached here'); - } else { - header("Location: {$file->url}"); - die(); + var $id = null; + var $filerec = null; + + function prepare($args) + { + parent::prepare($args); + $this->id = $this->trimmed('notice'); + if (empty($this->id)) { + // TRANS: Client error displayed when no notice ID was given trying do display a file. + $this->clientError(_('No notice ID.')); + } + $notice = Notice::staticGet('id', $this->id); + if (empty($notice)) { + // TRANS: Client error displayed when an invalid notice ID was given trying do display a file. + $this->clientError(_('No notice.')); + } + $atts = $notice->attachments(); + if (empty($atts)) { + // TRANS: Client error displayed when trying do display a file for a notice without a file attachement. + $this->clientError(_('No attachments.')); + } + foreach ($atts as $att) { + if (!empty($att->filename)) { + $this->filerec = $att; + break; + } + } + if (empty($this->filerec)) { + // XXX: Is this translation hint correct? If yes, please remove comment, if no, please correct and remove comment. + // TRANS: Client error displayed when trying do display a file for a notice with file attachements + // TRANS: that could not be found. + $this->clientError(_('No uploaded attachments.')); } + return true; + } + + function handle() { + common_redirect($this->filerec->url); } -} + /** + * Is this action read-only? + * + * @return boolean true + */ + function isReadOnly($args) + { + return true; + } +}