1
0

Added captcha support.

This commit is contained in:
rWatcher 2010-10-08 03:54:56 +08:00 committed by Bharat Mediratta
parent 5dd7d3eb46
commit 27f4f5f8d9

View File

@ -18,6 +18,55 @@
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/ */
class ContactOwner_Controller extends Controller { class ContactOwner_Controller extends Controller {
static function get_email_form($user_id) {
// Determine name of the person the message is going to.
$str_to_name = "";
if ($user_id == -1) {
$str_to_name = module::get_var("contactowner", "contact_owner_name");
} else {
// Locate the record for the user specified by $user_id,
// use this to determine the user's name.
$userDetails = ORM::factory("user")
->where("id", "=", $user_id)
->find_all();
$str_to_name = $userDetails[0]->name;
}
// Make a new form with a couple of text boxes.
$form = new Forge("contactowner/sendemail/{$user_id}", "", "post",
array("id" => "g-contact-owner-send-form"));
$sendmail_fields = $form->group("contactOwner");
$sendmail_fields->input("email_to")
->label(t("To:"))->value($str_to_name)
->id("g-contactowner-to-name");
$sendmail_fields->input("email_from")
->label(t("From:"))->value(identity::active_user()->email)
->id("g-contactowner-from-email")
->rules('required|valid_email')
->error_messages("required", t("You must enter a valid email address"))
->error_messages("valid_email", t("You must enter a valid email address"))
->error_messages("invalid", t("You must enter a valid email address"));
$sendmail_fields->input("email_subject")
->label(t("Subject:"))->value("")
->id("g-contactowner-subject")
->rules('required')
->error_messages("required", t("You must enter a subject"));
$sendmail_fields->textarea("email_body")
->label(t("Message:"))
->value("")
->id("g-contactowner-email-body")
->rules('required')
->error_messages("required", t("You must enter a message"));
// Add a captcha, if there's an active captcha module.
module::event("captcha_protect_form", $form);
// Add a save button to the form.
$sendmail_fields->submit("SendMessage")->value(t("Send"));
return $form;
}
public function emailowner() { public function emailowner() {
// Display a form that a vistor can use to contact the site owner. // Display a form that a vistor can use to contact the site owner.
@ -26,24 +75,10 @@ class ContactOwner_Controller extends Controller {
throw new Kohana_404_Exception(); throw new Kohana_404_Exception();
} }
// Make a new form with a couple of text boxes.
$form = new Forge("contactowner/sendemail", "", "post",
array("id" => "g-contact-owner-send-form"));
$sendmail_fields = $form->group("contactOwner");
$sendmail_fields->input("email_to")->label(t("To:"))->value(module::get_var("contactowner", "contact_owner_name"));
$sendmail_fields->input("email_from")->label(t("From:"))->value(identity::active_user()->email);
$sendmail_fields->input("email_subject")->label(t("Subject:"))->value("");
$sendmail_fields->textarea("email_body")->label(t("Message:"))->value("");
$sendmail_fields->hidden("email_to_id")->value("-1");
// Add a save button to the form.
$sendmail_fields->submit("SendMessage")->value(t("Send"));
// Set up and display the actual page. // Set up and display the actual page.
$template = new Theme_View("page.html", "other", "Contact"); $template = new Theme_View("page.html", "other", "Contact");
$template->content = new View("contactowner_emailform.html"); $template->content = new View("contactowner_emailform.html");
$template->content->sendmail_form = $form; $template->content->sendmail_form = $this->get_email_form("-1");
print $template; print $template;
} }
@ -55,49 +90,29 @@ class ContactOwner_Controller extends Controller {
throw new Kohana_404_Exception(); throw new Kohana_404_Exception();
} }
// Locate the record for the user specified by $user_id,
// use this to determine the user's name.
$userDetails = ORM::factory("user")
->where("id", "=", $user_id)
->find_all();
// Make a new form with a couple of text boxes.
$form = new Forge("contactowner/sendemail", "", "post",
array("id" => "g-contact-owner-send-form"));
$sendmail_fields = $form->group("contactOwner");
$sendmail_fields->input("email_to")->label(t("To:"))->value($userDetails[0]->name);
$sendmail_fields->input("email_from")->label(t("From:"))->value(identity::active_user()->email);
$sendmail_fields->input("email_subject")->label(t("Subject:"))->value("");
$sendmail_fields->textarea("email_body")->label(t("Message:"))->value("");
$sendmail_fields->hidden("email_to_id")->value($user_id);
// Add a save button to the form.
$sendmail_fields->submit("SendMessage")->value(t("Send"));
// Set up and display the actual page. // Set up and display the actual page.
$template = new Theme_View("page.html", "other", "Contact"); $template = new Theme_View("page.html", "other", "Contact");
$template->content = new View("contactowner_emailform.html"); $template->content = new View("contactowner_emailform.html");
$template->content->sendmail_form = $form; $template->content->sendmail_form = $this->get_email_form($user_id);
print $template; print $template;
} }
public function sendemail() { public function sendemail($user_id) {
// Process the data from the form into an email, // Validate the form, then send the actual email.
// then send the email.
// Make sure the form was submitted. // If this page is disabled, show a 404 error.
if ($_POST) { if (($user_id == "-1") && (module::get_var("contactowner", "contact_owner_link") != true)) {
// Set up some rules to validate the form against. throw new Kohana_404_Exception();
$post = new Validation($_POST); } elseif (($user_id >= 0) && (module::get_var("contactowner", "contact_user_link") != true)) {
$post->add_rules('email_from', 'required', 'valid::email'); throw new Kohana_404_Exception();
$post->add_rules('email_subject', 'required'); }
$post->add_rules('email_body', 'required');
// Make sure the form submission was valid.
// If the form was filled out properly then... $form = $this->get_email_form($user_id);
if ($post->validate()) { $valid = $form->validate();
if ($valid) {
// Copy the data from the email form into a couple of variables. // Copy the data from the email form into a couple of variables.
$str_emailsubject = Input::instance()->post("email_subject"); $str_emailsubject = Input::instance()->post("email_subject");
$str_emailtoid = Input::instance()->post("email_to_id");
$str_emailfrom = Input::instance()->post("email_from"); $str_emailfrom = Input::instance()->post("email_from");
$str_emailbody = Input::instance()->post("email_body"); $str_emailbody = Input::instance()->post("email_body");
@ -111,14 +126,14 @@ class ContactOwner_Controller extends Controller {
// Figure out where the email is going to. // Figure out where the email is going to.
$str_emailto = ""; $str_emailto = "";
if ($str_emailtoid == -1) { if ($user_id == -1) {
// If the email id is "-1" send the message to a pre-determined // If the email id is "-1" send the message to a pre-determined
// owner email address. // owner email address.
$str_emailto = module::get_var("contactowner", "contact_owner_email"); $str_emailto = module::get_var("contactowner", "contact_owner_email");
} else { } else {
// or else grab the email from the user table. // or else grab the email from the user table.
$userDetails = ORM::factory("user") $userDetails = ORM::factory("user")
->where("id", "=", $str_emailtoid) ->where("id", "=", $user_id)
->find_all(); ->find_all();
$str_emailto = $userDetails[0]->email; $str_emailto = $userDetails[0]->email;
} }
@ -137,18 +152,13 @@ class ContactOwner_Controller extends Controller {
$template->content = new View("contactowner_emailform.html"); $template->content = new View("contactowner_emailform.html");
$template->content->sendmail_form = t("Your Message Has Been Sent."); $template->content->sendmail_form = t("Your Message Has Been Sent.");
print $template; print $template;
} else {
// Display a message telling the visitor that their email has been not been sent, } else {
// along with the reason(s) why. // Set up and display the actual page.
$template = new Theme_View("page.html", "other", "Contact"); $template = new Theme_View("page.html", "other", "Contact");
$template->content = new View("contactowner_emailform.html"); $template->content = new View("contactowner_emailform.html");
$template->content->sendmail_form = t("Your Message Has Not Been Sent."); $template->content->sendmail_form = $form;
$template->content->sendmail_form = $template->content->sendmail_form . "<br/><br/>" . t("Reason(s):") . "<br/>";
foreach($post->errors('form_error_messages') as $error) {
$template->content->sendmail_form = $template->content->sendmail_form . " - " . t($error) . "<br/>";
}
print $template; print $template;
}
} }
} }
} }