カテゴリ | |
---|---|
サマリ | 更新通知メールに添付ファイルのurlを表示させるには? |
バージョン | 1.4.2 |
投稿者 | hoge |
状態 | 完了 |
投稿日 | 2004-03-15 (MON) 17:46:36 |
ローカルでクローズしたメンバで使用しています。 ページ新規作成or更新時にメールを各メンバに送っていますが、この際、添付ファイルのリンク先(url)が自動で載せられないかと思っています。基本的に同じページにしか添付しないので、そのページに添付されたファイルのみです。 refだとブラウザは見れるのですが、メールだとなんだか分からないので、質問しました。ページのurlはメール上に載せられましたが、そこから添付ファイルにリンクするのではなく、メールから直接ダウンロードしたいのです。
よろしくお願いします。
添付ファイルへのリンクのURLをメールに記述すればいいだけでは?
http://..../?plugin=attach&pcmd=open&file=ファイル名&refer=ページ名
file.php内で$strに上記くっつける形で書いて、PukiWikiからメールを送信しようと思って、ページ名は
$r_page = rawurlencode($page);としたのですが、添付ファイル名の取得方法がわからなかったのです。書き方が悪かったようですみませんでした。複数の添付ファイルがある場合、ファイル名をどのように取得するかも難しそうですし。
AttachプラグインのAttachPagesとかtoStringのクラスをfile.php内で継承すれば良いのかと思い色々やってみましたが、うまくいってません。。。
自己レスです。 クラスが良く分からなかったのですが、file.phpにゴリ押しで以下のように書いて、解決しました。
//-------- クラス //ファイル require('plugin/attach.inc.php'); class AttachFile2 extends AttachFile { function AttachFile2($page,$file,$age=0) { $this->page = $page; $this->file = basename($file); $this->age = is_numeric($age) ? $age : 0; $this->basename = UPLOAD_DIR.encode($page).'_'.encode($this->file); $this->filename = $this->basename .($age ? '.'.$age : ''); $this->logname = $this->basename.'.log'; $this->exist = file_exists($this->filename); $this->time = $this->exist ? filemtime($this->filename) - LOCALZONE : 0; $this->md5hash = $this->exist ? md5_file($this->filename) : ''; } function toString() { global $script,$date_format,$time_format,$weeklabels; // global $_attach_messages; $this->getstatus(); $param = '&file='.rawurlencode($this->file).'&refer='.rawurlencode($this->page).($this->age ? '&age='.$this->age : ''); // $title = $this->time_str.' '.$this->size_str; $label = htmlspecialchars($this->file); if ($this->age) { $label .= ' (backup No.'.$this->age.')'; } // $info = $count = ''; return "$label が以下に添付されています。"."\n"."$script?plugin=attach&pcmd=open$param"."\n"; } } // ファイルコンテナ class AttachFiles2 extends AttachFiles { function AttachFiles2($page) { $this->page = $page; } function add($file,$age) { $this->files[$file][$age] = &new AttachFile2($this->page,$file,$age); } } // ページコンテナ class AttachPages2 extends AttachPages { function AttachPages2($page='',$age=NULL) { $dir = opendir(UPLOAD_DIR) or die('directory '.UPLOAD_DIR.' is not exist or not readable.'); $page_pattern = ($page == '') ? '(?:[0-9A-F]{2})+' : preg_quote(encode($page),'/'); $age_pattern = ($age === NULL) ? '(?:\.([0-9]+))?' : ($age ? "\.($age)" : ''); $pattern = "/^({$page_pattern})_((?:[0-9A-F]{2})+){$age_pattern}$/"; while ($file = readdir($dir)) { if (!preg_match($pattern,$file,$matches)) { continue; } $_page = decode($matches[1]); $_file = decode($matches[2]); $_age = array_key_exists(3,$matches) ? $matches[3] : 0; if (!array_key_exists($_page,$this->pages)) { $this->pages[$_page] = &new AttachFiles2($_page); } $this->pages[$_page]->add($_file,$_age); } closedir($dir); } }で、
$obj = &new AttachPages2($vars['page'],0); $attachcmt = $obj->toString($vars['page'],TRUE);として、
$str = (!empty($attachcmt) ? "以下の添付ファイルがあります。"."\n" : "").$obj->toString($vars['page'],TRUE)."----"."\n".$str;でうまくいきました。