soyinquiry_with_upload_form


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"];
			$url = "https://" . $_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";
		}
	}
}

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