File: D:/HostingSpaces/SBogers47/ehbocranendonck.nl/app/Komma/Contact/ContactController.php
<?php
/**
* Short description for the file.
*
* @author Komma <support@komma.pro>
* @copyright (c) 2012-2015, Komma Mediadesign
*/
namespace Komma\Contact;
use Illuminate\Support\Facades\Response;
use Ixudra\Curl\Facades\Curl;
use Komma\Blocks\BlockService;
use Komma\Kms\Schools\School;
use Komma\LanguageService;
use Komma\Mailers\MailService;
use Komma\Pages\PageService;
class ContactController extends \BaseController
{
protected $contactService;
protected $mailService;
protected $pageService;
protected $blockService;
public $languageService;
/**
* ContactController constructor.
* @param ContactService $contactService
* @param MailService $mailService
* @param PageService $pageService
*/
public function __construct(ContactService $contactService, BlockService $blockService, MailService $mailService, PageService $pageService)
{
parent::__construct();
$this->pageService = $pageService;
$this->mailService = $mailService;
$this->contactService = $contactService;
$this->blockService = $blockService;
}
/**
* This method returns the contact form view
*
* @param bool $sent
* @return mixed
*/
public function contactForm($send = false)
{
//get content of page by route because of the multiple news overviews all page links
$page = $this->pageService->getPageByCodeName('contact');
$page->send = $send;
$links = $this->pageService->getAllRoutes();
//Return the view
return \View::make('layouts.pages.contact')
->with('page', $page)
->with('links', $links);
}
public function contactSuccess()
{
return $this->contactForm(true);
}
/**
* This method processes the contact form
*
* @return null
*/
public function contactFormProcess()
{
if (!empty(\Request::get('honey'))) {
return \Redirect::back()->withInput();
}
//Validate the input
$validation = $this->contactService->validateContactForm(\Input::all());
//If validation is not null and the request is via ajax, return the validation messages
if($validation !== null && \Request::ajax()) return $validation;
\Log::info($validation);
//If The validation is not null, redirect back to the form with the errors.
if($validation !== null) return \Redirect::back()->withErrors($validation)->withInput();
$this->mailService->saveMailToDatabase(\Input::all());
$this->mailService->sendContactForm(\Input::all());
return \Redirect::to(route('contact.success'));
}
public function contactFormProcessNew(){
$inputs = \Input::all();
//Validate the input
$validation = $this->contactService->validateContactForm($inputs);
//If The validation is not null, redirect back to the form with the errors.
if($validation !== null){
return Response::json([
'status' => 422,
'errors' => $validation
]);
}
$result = $this->recaptcha(isset($inputs['g-recaptcha-response']) ? $inputs['g-recaptcha-response'] : '');
if(is_array($result)){
return Response::json($result);
}
$this->mailService->saveMailToDatabase($inputs);
$this->mailService->sendContactForm($inputs);
return Response::json([
'status' => 200,
'data' => [
'redirectUrl' => route('contact.success')
],
]);
}
/**
* This method returns the contact form view
*
* @param bool $sent
* @return mixed
*/
public function eventForm($send = false)
{
//get content of page by route because of the multiple news overviews all page links
$page = $this->pageService->getPageByCodeName('events');
$page->send = $send;
$links = $this->pageService->getAllRoutes();
//Return the view
return \View::make('layouts.pages.events')
->with('page', $page)
->with('links', $links);
}
public function eventsSuccess()
{
return $this->eventForm(true);
}
/**
* This method processes the contact form
*
* @return null
*/
public function eventFormProcess()
{
$inputs = \Input::all();
//Validate the input
$validation = $this->contactService->validateEventForm($inputs);
//If validation is not null and the request is via ajax, return the validation messages
if($validation !== null && \Request::ajax()) return $validation;
\Log::info($validation);
//If The validation is not null, redirect back to the form with the errors.
if($validation !== null) {
return \Redirect::back()->withErrors($validation)->withInput();
}
$result = $this->recaptcha(isset($inputs['g-recaptcha-response']) ? $inputs['g-recaptcha-response'] : '');
if(is_array($result)){
$validation = ['recaptcha' => [$result['errors']['secretCode'][0]]]; // Fix de structuur
return \Redirect::back()->withErrors($validation)->withInput();
}
$this->mailService->saveMailToDatabase(\Input::all());
$this->mailService->sendEventForm(\Input::all(), \Config::get('mail.sendToEvents'));
$this->mailService->sendEventForm(\Input::all(), \Config::get('mail.sendToPenning'));
#$this->mailService->sendEventForm(\Input::all(), \Config::get('mail.sendToChairman'));
$this->mailService->sendEventFormConfirm(\Input::all(), \Config::get('mail.sendToEvents'));
return \Redirect::to(route('events.success'));
}
function recaptcha($recaptcha) {
if(empty($recaptcha)){
return [
'status' => 422,
'errors' => [
'secretCode' => ['Uw invoer is niet gevalideerd. Vink het vakje ‘Ik ben geen robot’ aan en probeer het opnieuw.']
]
];
} else {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.google.com/recaptcha/api/siteverify");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
'secret' => '6LerDgUrAAAAAB7USSTAZT0vl_qSVgIAISauy9pf', // Use Config instead of getenv()
'response' => $recaptcha // Use Input facade for Laravel 4
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
if (curl_errno($ch)) {
// Handle cURL error
return [
'status' => 500,
'errors' => ['message' => ['Er ging iets mis bij de controle. Probeer het opnieuw.']]
];
}
curl_close($ch);
$responseData = json_decode($response, true);
// Validate response
if (!isset($responseData['success']) || !$responseData['success']) {
return [
'status' => 422,
'errors' => [
'secretCode' => ['Uw invoer is niet gevalideerd. Vink het vakje ‘Ik ben geen robot’ aan en probeer het opnieuw.']
]
];
}
}
return null;
}
}