streamline the file action
This commit is contained in:
parent
3ca9e85ce4
commit
4d56bc6a0a
@ -21,20 +21,40 @@ if (!defined('LACONICA')) { exit(1); }
|
|||||||
|
|
||||||
require_once(INSTALLDIR.'/actions/shownotice.php');
|
require_once(INSTALLDIR.'/actions/shownotice.php');
|
||||||
|
|
||||||
class FileAction extends ShowNoticeAction
|
class FileAction extends Action
|
||||||
{
|
{
|
||||||
function showPage() {
|
var $id = null;
|
||||||
$source_url = common_local_url('file', array('notice' => $this->notice->id));
|
var $filerec = null;
|
||||||
$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;
|
function prepare($args)
|
||||||
$file->query($query);
|
{
|
||||||
$file->fetch();
|
parent::prepare($args);
|
||||||
if (empty($file->url)) {
|
$this->id = $this->trimmed('notice');
|
||||||
die('nothing attached here');
|
if (empty($this->id)) {
|
||||||
} else {
|
$this->clientError(_('No notice id'));
|
||||||
header("Location: {$file->url}");
|
|
||||||
die();
|
|
||||||
}
|
}
|
||||||
|
$notice = Notice::staticGet('id', $this->id);
|
||||||
|
if (empty($notice)) {
|
||||||
|
$this->clientError(_('No notice'));
|
||||||
|
}
|
||||||
|
$atts = $notice->attachments();
|
||||||
|
if (empty($atts)) {
|
||||||
|
$this->clientError(_('No attachments'));
|
||||||
|
}
|
||||||
|
foreach ($atts as $att) {
|
||||||
|
if (!empty($att->filename)) {
|
||||||
|
$this->filerec = $att;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (empty($this->filerec)) {
|
||||||
|
$this->clientError(_('No uploaded attachments'));
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function handle() {
|
||||||
|
common_redirect($this->filerec->url);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -331,6 +331,20 @@ class Notice extends Memcached_DataObject
|
|||||||
return $n_attachments;
|
return $n_attachments;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function attachments() {
|
||||||
|
// XXX: cache this
|
||||||
|
$att = array();
|
||||||
|
$f2p = new File_to_post;
|
||||||
|
$f2p->post_id = $this->id;
|
||||||
|
if ($f2p->find()) {
|
||||||
|
while ($f2p->fetch()) {
|
||||||
|
$f = File::staticGet($f2p->file_id);
|
||||||
|
$att[] = clone($f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $att;
|
||||||
|
}
|
||||||
|
|
||||||
function blowCaches($blowLast=false)
|
function blowCaches($blowLast=false)
|
||||||
{
|
{
|
||||||
$this->blowSubsCache($blowLast);
|
$this->blowSubsCache($blowLast);
|
||||||
|
Loading…
Reference in New Issue
Block a user