質問箱/2087

カテゴリ
サマリ更新通知メールに添付ファイルのurlを表示させるには?
バージョン1.4.2
投稿者hoge?
状態完了
投稿日2004-03-15 (MON) 17:46:36

質問

ローカルでクローズしたメンバで使用しています。 ページ新規作成or更新時にメールを各メンバに送っていますが、この際、添付ファイルのリンク先(url)が自動で載せられないかと思っています。基本的に同じページにしか添付しないので、そのページに添付されたファイルのみです。 refだとブラウザは見れるのですが、メールだとなんだか分からないので、質問しました。ページのurlはメール上に載せられましたが、そこから添付ファイルにリンクするのではなく、メールから直接ダウンロードしたいのです。

よろしくお願いします。

回答

  • reimy 2004-03-15 (MON) 18:56:39

    添付ファイルへのリンクのURLをメールに記述すればいいだけでは?

    http://..../?plugin=attach&pcmd=open&file=ファイル名&refer=ページ名
  • hoge? 2004-03-16 (TUE) 09:00:03

    file.php内で$strに上記くっつける形で書いて、PukiWikiからメールを送信しようと思って、ページ名は

    $r_page = rawurlencode($page);
    としたのですが、添付ファイル名の取得方法がわからなかったのです。書き方が悪かったようですみませんでした。複数の添付ファイルがある場合、ファイル名をどのように取得するかも難しそうですし。

    AttachプラグインのAttachPagesとかtoStringのクラスをfile.php内で継承すれば良いのかと思い色々やってみましたが、うまくいってません。。。

  • hoge? 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 -- 2004-09-13 (月) 08:28:32


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-01-27 (土) 21:41:19
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u2. HTML convert time: 0.153 sec.

OSDN