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で複数のアップロードフォームを設置した時、確認メールで複数分の画像を確認したい