**[[続・質問箱/87]] [#dbcc8dde]
#author("2018-03-11T12:30:40+09:00;2007-01-27T21:41:19+09:00","","")
**[[質問箱/2087]] [#dbcc8dde]
|RIGHT:70|LEFT:410|c
|~カテゴリ||
|~サマリ|更新通知メールに添付ファイルのurlを表示させるには?|
|~バージョン|1.4.2|
|~投稿者|[[hoge]]|
|~状態|完了|
|~投稿日|&new{2004-03-15 (MON) 17:46:36};|
***質問 [#o53b8cf7]
ローカルでクローズしたメンバで使用しています。
ページ新規作成or更新時にメールを各メンバに送っていますが、この際、添付ファイルのリンク先(url)が自動で載せられないかと思っています。基本的に同じページにしか添付しないので、そのページに添付されたファイルのみです。
refだとブラウザは見れるのですが、メールだとなんだか分からないので、質問しました。ページのurlはメール上に載せられましたが、そこから添付ファイルにリンクするのではなく、メールから直接ダウンロードしたいのです。

よろしくお願いします。


***回答 [#vdc2bda3]
-[[reimy]] &new{2004-03-15 (MON) 18:56:39};
~添付ファイルへのリンクのURLをメールに記述すればいいだけでは?
 http://..../?plugin=attach&pcmd=open&file=ファイル名&refer=ページ名
-[[hoge]] &new{2004-03-16 (TUE) 09:00:03};
~file.php内で$strに上記くっつける形で書いて、PukiWikiからメールを送信しようと思って、ページ名は
 $r_page = rawurlencode($page);
としたのですが、添付ファイル名の取得方法がわからなかったのです。書き方が悪かったようですみませんでした。複数の添付ファイルがある場合、ファイル名をどのように取得するかも難しそうですし。
~AttachプラグインのAttachPagesとかtoStringのクラスをfile.php内で継承すれば良いのかと思い色々やってみましたが、うまくいってません。。。
-[[hoge]] &new{2004-03-18 (THU) 11:27:39};
~自己レスです。
クラスが良く分からなかったのですが、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;
でうまくいきました。
-[[dev:BugTrack/686]] --  &new{2004-09-13 (月) 08:28:32};

#comment

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.3+ © 2001-2020 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.041 sec.

OSDN