Skip to content

Commit

Permalink
Cleans up ContactController to remove old validation
Browse files Browse the repository at this point in the history
  • Loading branch information
jacobemerick committed Mar 11, 2016
1 parent c99b44b commit b2b5740
Show file tree
Hide file tree
Showing 2 changed files with 105 additions and 70 deletions.
143 changes: 89 additions & 54 deletions controller/portfolio/ContactController.class.inc.php
@@ -1,62 +1,97 @@
<?
<?php

Loader::load('controller', 'portfolio/DefaultPageController');
Loader::load('utility', array(
'Validate'));

class ContactController extends DefaultPageController
{

protected function set_data()
{
$form_results = $this->process_form_data();

$this->set_title("Contact Page | Jacob Emerick's Portfolio");
$this->set_head('description', "Contact page for Jacob Emerick's Portfolio");
$this->set_head('keywords', 'portfolio, Jacob Emerick, contact, information, request, web development, web programming, print design, freelance');

$this->set_body('body_view', 'Contact');
$this->set_body('left_side_data', array(
'title' => "Contact | Jacob Emerick's Portfolio",
'menu' => $this->get_menu(),
'home_link' => Loader::getRootURL()));
$this->set_body('body_data', $form_results);

$this->set_body_view('Page');
}

private function process_form_data()
{
if(!Request::hasPost())
return array();

if(!Validate::checkRequest('post', 'name', 'string'))
$error_message['name'] = 'Please enter a value for your name.';
if(!Validate::checkRequest('post', 'email', 'string'))
$error_message['email'] = 'Please enter a valid email address.';
if(!Validate::checkRequest('post', 'message', 'string'))
$error_message['message'] = 'Please enter a message.';

if(!empty($error_message))
{
return array(
'error_message' => $error_message,
'value' => Request::getPost());
}

global $container;
$sent = $container['mail']
->addTo($container['config']->admin_email)
->setSubject('Portfolio Contact')
->setPlainMessage(
'Name: ' . Request::getPost('name') . "\n" .
'Email: ' . Request::getPost('email') . "\n" .
'Message: ' . Request::getPost('message')
)
->send();

return array(
'success_message' => "Thank you for your message, ".Request::getPost('name')."! I'll get back to you as soon as possible.");
}
protected function set_data()
{
$this->set_title("Contact Page | Jacob Emerick's Portfolio");
$this->set_description("Contact page for Jacob Emerick's Portfolio");
$this->set_keywords([
'portfolio',
'programming portfolio',
'contact',
'Jacob Emerick',
'information',
'freelance',
]);

$this->set_body('body_view', 'Contact');
$this->set_body('left_side_data', [
'title' => "Contact | Jacob Emerick's Portfolio",
'menu' => $this->get_menu(),
'home_link' => Loader::getRootURL(),
]);

$form_results = [];
if (!empty($_POST)) {
$form_results = $this->process_form_data();
}
$this->set_body('body_data', $form_results);

$this->set_body_view('Page');
}

private function process_form_data()
{
$errors = [];

if (
empty($_POST['name']) ||
!is_string($_POST['name']) ||
strlen($_POST['name']) > 100
) {
$errors['name'] = 'Please enter a valid name.';
}

if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
$errors['email'] = 'Please enter a valid email.';
}

if (
empty($_POST['message']) ||
!is_string($_POST['message']) ||
strlen($_POST['message']) > 10000
) {
$errors['message'] = 'Please enter a valid message.';
}

if (!empty($errors)) {
$values = $_POST;
$values = array_intersect_key($values, array_flip([
'name',
'email',
'message',
]));

return [
'errors' => $errors,
'values' => $values,
];
}

$message = [
"Name: {$_POST['name']}",
"Email: {$_POST['email']}",
'',
'Message:',
$_POST['message'],
];
$message = implode("\n", $message);

global $container;
$container['mail']
->addTo($container['config']->admin_email)
->setSubject('Portfolio Contact')
->setPlainMessage($message)
->send();

return [
'success' =>
"Thank you for your message, {$_POST['name']}! " .
"I'll get back to you as soon as possible."
];
}
}
32 changes: 16 additions & 16 deletions view/portfolio/body/Contact.tpl.php
@@ -1,35 +1,35 @@
<div id="content">
<h2>Drop a line</h2>
<? if(isset($success_message)) : ?>
<div class="success-message"><?= $success_message ?></div>
<? endif ?>
<? if(isset($success)) : ?>
<div class="success-message"><?= $success?></div>
<? endif ?>
<form method="post" action="">
<ul>
<li<?= (isset($error_message['name'])) ? ' class="error"' : '' ?>>
<li<?= (isset($errors['name'])) ? ' class="error"' : '' ?>>
<label for="input-name">Your name</label>
<input type="text" name="name" id="input-name" value="<?= (isset($value['name'])) ? $value['name'] : '' ?>" />
<? if(isset($error_message['name'])) : ?>
<span class="error-message"><?= $error_message['name'] ?></span>
<input type="text" name="name" id="input-name" value="<?= (isset($values['name'])) ? $values['name'] : '' ?>" />
<? if(isset($errors['name'])) : ?>
<span class="error-message"><?= $errors['name'] ?></span>
<? endif ?>
</li>
<li<?= (isset($error_message['email'])) ? ' class="error"' : '' ?>>
<li<?= (isset($errors['email'])) ? ' class="error"' : '' ?>>
<label for="input-email">Your email</label>
<input type="text" name="email" id="input-email" value="<?= (isset($value['email'])) ? $value['email'] : '' ?>" />
<? if(isset($error_message['email'])) : ?>
<span class="error-message"><?= $error_message['email'] ?></span>
<input type="text" name="email" id="input-email" value="<?= (isset($values['email'])) ? $values['email'] : '' ?>" />
<? if(isset($errors['email'])) : ?>
<span class="error-message"><?= $errors['email'] ?></span>
<? endif ?>
</li>
<li>&nbsp;</li>
<li<?= (isset($error_message['message'])) ? ' class="error"' : '' ?>>
<li<?= (isset($errors['message'])) ? ' class="error"' : '' ?>>
<label for="input-message">Message</label>
<textarea name="message" id="input-message" rows="3" cols="40"><?= (isset($value['message'])) ? $value['message'] : '' ?></textarea>
<? if(isset($error_message['message'])) : ?>
<span class="error-message"><?= $error_message['message'] ?></span>
<textarea name="message" id="input-message" rows="3" cols="40"><?= (isset($values['message'])) ? $values['message'] : '' ?></textarea>
<? if(isset($errors['message'])) : ?>
<span class="error-message"><?= $errors['message'] ?></span>
<? endif ?>
</li>
<li>
<input type="submit" id="input-submit" name="submit" value="Send!" />
</li>
</ul>
</form>
</div>
</div>

0 comments on commit b2b5740

Please sign in to comment.