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.
*/
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() {
// 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();
}
// 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.
$template = new Theme_View("page.html", "other", "Contact");
$template->content = new View("contactowner_emailform.html");
$template->content->sendmail_form = $form;
$template->content->sendmail_form = $this->get_email_form("-1");
print $template;
}
@ -55,49 +90,29 @@ class ContactOwner_Controller extends Controller {
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.
$template = new Theme_View("page.html", "other", "Contact");
$template->content = new View("contactowner_emailform.html");
$template->content->sendmail_form = $form;
$template->content->sendmail_form = $this->get_email_form($user_id);
print $template;
}
public function sendemail() {
// Process the data from the form into an email,
// then send the email.
public function sendemail($user_id) {
// Validate the form, then send the actual email.
// 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()) {
// If this page is disabled, show a 404 error.
if (($user_id == "-1") && (module::get_var("contactowner", "contact_owner_link") != true)) {
throw new Kohana_404_Exception();
} elseif (($user_id >= 0) && (module::get_var("contactowner", "contact_user_link") != true)) {
throw new Kohana_404_Exception();
}
// Make sure the form submission was valid.
$form = $this->get_email_form($user_id);
$valid = $form->validate();
if ($valid) {
// 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");
@ -111,14 +126,14 @@ class ContactOwner_Controller extends Controller {
// Figure out where the email is going to.
$str_emailto = "";
if ($str_emailtoid == -1) {
if ($user_id == -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)
->where("id", "=", $user_id)
->find_all();
$str_emailto = $userDetails[0]->email;
}
@ -137,18 +152,13 @@ class ContactOwner_Controller extends Controller {
$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 . "<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/>";
}
} else {
// Set up and display the actual page.
$template = new Theme_View("page.html", "other", "Contact");
$template->content = new View("contactowner_emailform.html");
$template->content->sendmail_form = $form;
print $template;
}
}
}
}
}