56 lines
1.9 KiB
PHP
Executable File
56 lines
1.9 KiB
PHP
Executable File
<?php
|
|
|
|
namespace Modules\ContactForm\Http\Controllers\Visitor;
|
|
|
|
use App\CMS\Helpers\Template;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Content\Content;
|
|
use Illuminate\Support\Facades\Mail;
|
|
use Modules\ContactForm\Http\Requests\SendNewEmailRequest;
|
|
use Modules\ContactForm\Mail\ContactFormMessage;
|
|
|
|
class CreateNewMessage extends Controller
|
|
{
|
|
/**
|
|
* Method for sending emails via contact form
|
|
*
|
|
* @param SendNewEmailRequest $request
|
|
* @param $formId
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public function postMessage(SendNewEmailRequest $request, $formId)
|
|
{
|
|
// load form settings
|
|
$form = Content::where('moduleHandler', config('contactform.handler'))
|
|
->findOrFail($formId);
|
|
|
|
// select template
|
|
$template = isset($form->moduleSettings['emailTemplate']) ? $form->moduleSettings['emailTemplate'] : 'contactform::emails.default';
|
|
$subject = isset($form->moduleSettings['subject']) ? $form->moduleSettings['subject'] : trans('contactform::admin/contents.defaultSubject');
|
|
$data = $request->except('_token', 'g-recaptcha-response');
|
|
|
|
Mail::to($form->moduleSettings['contactEmail'])
|
|
->send(new ContactFormMessage($data, $subject, Template::name($template)));
|
|
|
|
// inform user about success or failure
|
|
return $this->sendResponse($request, $form);
|
|
}
|
|
|
|
private function sendResponse(SendNewEmailRequest $request, $form)
|
|
{
|
|
// send response for ajax
|
|
if ($request->ajax()) {
|
|
return response()->json([
|
|
'status' => 'success',
|
|
'redirectUrl' => $form->url
|
|
]);
|
|
} else {
|
|
// redirect user to previous form
|
|
$response = redirect()->back();
|
|
|
|
return $response->with('success', 'sent');
|
|
}
|
|
}
|
|
}
|