SOY Inquiryでアップロードフォームを設定しても、お問い合わせ後の通知メールでアップロードされた画像は確認できず、管理画面でログインしてから確認するという仕様になっています。

先日、メールで確認したいという連絡がありましたので、今回はメールで確認する方法を記載します。




とりあえず、最初に通知メールで確認する方法として、メールの文面の末尾に画像のURLを追加する方法にする。

(添付ファイル形式ではありません)


問い合わせ番号 : 1-7561-6133
問い合わせ日時      : 2016-03-05 13:03:58
お名前              : 齋藤毅
メールアドレス      : tsuyoshi@exsample.com
件名                : テストのお問い合わせ
問い合わせ内容      : 画像をアップロードするよ
ファイルアップロード: 10.7.12-1.jpg (12KB)

--
問い合わせへのリンク:
http://example.com/hoge/app/index.php/inquiry/Inquiry/Detail/32

添付ファイル
http://example.com/1/201603/a9d81becfea57ef4ea4cb6932d5486d5.jpg

こんな感じ。


最初にメールを拡張するためのファイルをコピーします。

SOY Inquiryから自動送信されるメールのお問い合わせ内容の表示の修正 | SOY CMS開発ブログの記事を参考にして、



/インストールディレクトリ/app/webapp/inquiry/src/template/_sample/mail.admin.phpを今回利用しているテンプレートのディレクトリにコピーします。

(mail.admin.phpは管理者向けのメールのみ拡張します)


テンプレートのカスタマイズを行っていなければ、defaultになるので、/インストールディレクトリ/app/webapp/inquiry/src/template/default/mail.admin.phpとなるように配置します。


配置したら、mail.admin.phpを開き、下記のコードを書きます。


<?php
/**
* 使用できる変数
* $columns 各フォームのオブジェクト(入力内容も含む)
* $this->form フォームの設定
* $inquiryMailBody 出力されたお問い合わせ内容
*
* 拡張方法
* echo "追加したい文字列";でメールのコンテンツ末尾に追加されます。
* $mailBody[0]の値を上書きすると出力内容が変わります。
*/
$inquiryId = null; 
foreach (explode("\n", $mailBody[0]) as $c) {
	if (strpos($c, '/Inquiry/Detail')) {
		$inquiryId = (int) trim(substr($c, strrpos($c, '/') + 1));
		break;
	}
}

//お問い合わせIDが取得出来たら 
if($inquiryId){
	$path = null;
	try{
		$comments = SOY2DAOFactory::create("SOYInquiry_CommentDAO")->getByInquiryId($inquiryId);
	}catch(Exception $e){
		return;
	}
	foreach($comments as $comment){
		//アップロードがあるとみなす
		if(preg_match('/<img src=\"(.*)\"/', $comment->getContent(), $match)){
				$path = $match[1]; break;
			}
		}
	}
	
	//画像のパスを取得できた場合
	if($path){
		if(defined("SOYCMS_TARGET_URL")){
			$url = SOYCMS_TARGET_URL;
		}else{
			$url = "http://" . $_SERVER["HTTP_HOST"];
		}
		
		//末尾のスラッシュを除く
		if(strlen($url) === strrpos($url, "/") + 1){
			$url = substr($url, 0, strlen($url) - 1);
		}
		echo "\n添付ファイル\n"; echo $url . $path;
	}
}
?>

これでカスタマイズは終了です。



お問い合わせフォームを開き、ファイルアップロード込みのお問い合わせを行い、自動で送信されるメールの末尾にアップロードされたファイルのURLが表示されていることをご確認下さい。


関連記事

SOY Inquiryで複数のアップロードフォームを設置した時、確認メールで複数分の画像を確認したい