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