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(strpos($comment->getContent(), "<img src")){
			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で複数のアップロードフォームを設置した時、確認メールで複数分の画像を確認したい