From 2b12d9b3f5eafecbd084c735cc7b7e4c1f393a6e Mon Sep 17 00:00:00 2001 From: rWatcher Date: Wed, 30 Dec 2009 01:10:55 -0500 Subject: [PATCH] Validate form before sending and add message header text. --- .../controllers/admin_contactowner.php | 13 ++- .../contactowner/controllers/contactowner.php | 100 +++++++++++------- .../helpers/contactowner_installer.php | 35 ++++++ modules/contactowner/module.info | 2 +- 4 files changed, 107 insertions(+), 43 deletions(-) create mode 100644 modules/contactowner/helpers/contactowner_installer.php diff --git a/modules/contactowner/controllers/admin_contactowner.php b/modules/contactowner/controllers/admin_contactowner.php index 1f19bec7..51eaea95 100644 --- a/modules/contactowner/controllers/admin_contactowner.php +++ b/modules/contactowner/controllers/admin_contactowner.php @@ -48,13 +48,15 @@ class Admin_ContactOwner_Controller extends Admin_Controller { $str_contactbutton = Input::instance()->post("owner_button_text"); $str_contactemail = Input::instance()->post("owner_email"); $str_contactname = Input::instance()->post("owner_name"); + $str_messageheader = Input::instance()->post("message_header"); // Save Settings. module::set_var("contactowner", "contact_owner_link", $ownerLink); module::set_var("contactowner", "contact_user_link", $userLink); module::set_var("contactowner", "contact_button_text", $str_contactbutton); - module::set_var("contactowner", "contact_owner_email", $str_contactemail ); - module::set_var("contactowner", "contact_owner_name", $str_contactname ); + module::set_var("contactowner", "contact_owner_email", $str_contactemail); + module::set_var("contactowner", "contact_owner_name", $str_contactname); + module::set_var("contactowner", "contact_owner_header", $str_messageheader); message::success(t("Your Settings Have Been Saved.")); // Load Admin page. @@ -86,9 +88,12 @@ class Admin_ContactOwner_Controller extends Admin_Controller { $add_contacts->input("owner_button_text")->label(t("Contact Owner Link Text"))->value(module::get_var("contactowner", "contact_button_text")); $add_contacts->input("owner_email")->label(t("Owner Email Address"))->value(module::get_var("contactowner", "contact_owner_email")); $add_contacts->input("owner_name")->label(t("Owner Name"))->value(module::get_var("contactowner", "contact_owner_name")); - + + $message_prefs = $form->group("messagePrefs"); + $message_prefs->input("message_header")->label(t("Email Message Header"))->value(module::get_var("contactowner", "contact_owner_header")); + // Add a save button to the form. - $add_contacts->submit("SaveSettings")->value(t("Save")); + $form->submit("SaveSettings")->value(t("Save")); // Return the newly generated form. return $form; diff --git a/modules/contactowner/controllers/contactowner.php b/modules/contactowner/controllers/contactowner.php index e9684bb0..9b23e940 100644 --- a/modules/contactowner/controllers/contactowner.php +++ b/modules/contactowner/controllers/contactowner.php @@ -85,46 +85,70 @@ class ContactOwner_Controller extends Controller { // Process the data from the form into an email, // then send the email. - // Copy the data from the email from into a couple of variables. - $str_emailsubject = Input::instance()->post("email_subject"); - $str_emailtoid = Input::instance()->post("email_to_id"); - $str_emailfrom = Input::instance()->post("email_from"); - $str_emailbody = Input::instance()->post("email_body"); + // Make sure the form was submitted. + if ($_POST) { + // Set up some rules to validate the form against. + $post = new Validation($_POST); + $post->add_rules('email_from', 'required', 'valid::email'); + $post->add_rules('email_subject', 'required'); + $post->add_rules('email_body', 'required'); + + // If the form was filled out properly then... + if ($post->validate()) { + // Copy the data from the email form into a couple of variables. + $str_emailsubject = Input::instance()->post("email_subject"); + $str_emailtoid = Input::instance()->post("email_to_id"); + $str_emailfrom = Input::instance()->post("email_from"); + $str_emailbody = Input::instance()->post("email_body"); - // Add in some
tags to the message body where ever there are line breaks. - $str_emailbody = str_replace("\n", "\n
", $str_emailbody); + // Add in some
tags to the message body where ever there are line breaks. + $str_emailbody = str_replace("\n", "\n
", $str_emailbody); - // Gallery's Sendmail library doesn't allow for custom from addresses, - // so add the from email to the beginning of the message body instead. - $str_emailbody = "Message Sent From " . $str_emailfrom . "\r\n\r\n

" . $str_emailbody; + // Gallery's Sendmail library doesn't allow for custom from addresses, + // so add the from email to the beginning of the message body instead. + // Also add in the admin-defined message header. + $str_emailbody = module::get_var("contactowner", "contact_owner_header") . "
\r\n" . "Message Sent From " . $str_emailfrom . "
\r\n
\r\n" . $str_emailbody; - // Figure out where the email is going to. - $str_emailto = ""; - if ($str_emailtoid == -1) { - // If the email id is "-1" send the message to a pre-determined - // owner email address. - $str_emailto = module::get_var("contactowner", "contact_owner_email"); - } else { - // or else grab the email from the user table. - $userDetails = ORM::factory("user") - ->where("id", "=", $str_emailtoid) - ->find_all(); - $str_emailto = $userDetails[0]->email; + // Figure out where the email is going to. + $str_emailto = ""; + if ($str_emailtoid == -1) { + // If the email id is "-1" send the message to a pre-determined + // owner email address. + $str_emailto = module::get_var("contactowner", "contact_owner_email"); + } else { + // or else grab the email from the user table. + $userDetails = ORM::factory("user") + ->where("id", "=", $str_emailtoid) + ->find_all(); + $str_emailto = $userDetails[0]->email; + } + + // Send the email message. + Sendmail::factory() + ->to($str_emailto) + ->subject($str_emailsubject) + ->header("Mime-Version", "1.0") + ->header("Content-type", "text/html; charset=utf-8") + ->message($str_emailbody) + ->send(); + + // Display a message telling the visitor that their email has been sent. + $template = new Theme_View("page.html", "other", "Contact"); + $template->content = new View("contactowner_emailform.html"); + $template->content->sendmail_form = t("Your Message Has Been Sent."); + print $template; + } else { + // Display a message telling the visitor that their email has been not been sent, + // along with the reason(s) why. + $template = new Theme_View("page.html", "other", "Contact"); + $template->content = new View("contactowner_emailform.html"); + $template->content->sendmail_form = t("Your Message Has Not Been Sent."); + $template->content->sendmail_form = $template->content->sendmail_form . "

" . t("Reason(s):") . "
"; + foreach($post->errors('form_error_messages') as $error) { + $template->content->sendmail_form = $template->content->sendmail_form . " - " . t($error) . "
"; + } + print $template; + } } - - // Send the email message. - Sendmail::factory() - ->to($str_emailto) - ->subject($str_emailsubject) - ->header("Mime-Version", "1.0") - ->header("Content-type", "text/html; charset=utf-8") - ->message($str_emailbody) - ->send(); - - // Display a message telling the visitor that their email has been sent. - $template = new Theme_View("page.html", "other", "Contact"); - $template->content = new View("contactowner_emailform.html"); - $template->content->sendmail_form = t("Your Message Has Been Sent."); - print $template; } -} +} \ No newline at end of file diff --git a/modules/contactowner/helpers/contactowner_installer.php b/modules/contactowner/helpers/contactowner_installer.php new file mode 100644 index 00000000..e841ebb3 --- /dev/null +++ b/modules/contactowner/helpers/contactowner_installer.php @@ -0,0 +1,35 @@ +