SOY Inquiryでアップロードフォームを設置した時、確認メールで画像を確認したいを試した方から、複数個のアップロードフォームを設置したので、管理者への通知メールで複数個分の画像の確認用のリンクを出力したい。

という問い合わせがありました。


上記の記事を改変したコードを下記になります。


<?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;
$pathes = array(); // 複数画像に対応するため、配列にする

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;
$pathes[] = $match[1]; // 複数画像に対応
}
}
}

//画像のパスを取得できた場合
//if(isset($path)){

// 配列の値が一つ以上ある場合
if(count($pathes)){
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;

//複数画像の出力
foreach($pathes as $path){
echo $url . $path . "\n";
}
}
}

黒字の箇所のように修正すれば対応終了です。