* @copyright 2007-2021 ETS-Soft * @license Valid for 1 website (or project) for each purchase of license * International Registered Trademark & Property of ETS-Soft */ class ETS_CFU_Contact_Form { const post_type = 'ets_cfu_contact_form'; public static $found_items = 0; public static $current = null; public $id; public $name; public $title; public $locale; public $properties = array(); public $unit_tag; public $responses_count = 0; public $scanned_form_tags; public $shortcode_atts = array(); public $save_message; public $open_form_by_button; private function __construct($contact = null) { if (is_numeric($contact)) $contact = new ETS_CFU_Contact($contact, Context::getContext()->language->id); if ($contact->id) { $this->id = $contact->id; $this->name = $contact->title; $this->title = $contact->title; $this->locale = ''; $this->save_message = $contact->save_message; $this->open_form_by_button = $contact->open_form_by_button; $this->button_label = $contact->button_label ? $contact->button_label : 'Contact Form Ultimate'; $this->title_alias = $contact->title_alias; $this->meta_title = $contact->meta_title; $this->meta_keyword = $contact->meta_keyword; $this->meta_description = $contact->meta_description; $this->save_attachments = $contact->save_attachments; $this->star_message = $contact->star_message; $this->thank_you_active = $contact->thank_you_active; $this->thank_you_page = $contact->thank_you_page; $this->thank_you_alias = $contact->thank_you_alias; $this->thank_you_page_title = $contact->thank_you_page_title; $this->thank_you_message = $contact->thank_you_message; $properties = array( 'form' => $contact->short_code, 'mail' => array( 'active' => 1, 'subject' => $contact->subject, 'sender' => $contact->email_from, 'bcc' => $contact->bcc, 'recipient' => $contact->email_to, 'body' => $contact->message_body, 'additional_headers' => $contact->additional_headers, 'attachments' => $contact->file_attachments, 'use_html' => true, 'exclude_blank' => true, ), 'mail_2' => array( 'active' => $contact->use_email2, 'subject' => $contact->subject2, 'sender' => $contact->email_from2, 'bcc' => $contact->bcc2, 'recipient' => $contact->email_to2, 'body' => $contact->message_body2, 'additional_headers' => $contact->additional_headers2, 'attachments' => $contact->file_attachments2, 'use_html' => true, 'exclude_blank' => true, ), 'messages' => array( 'mail_sent_ok' => $contact->message_mail_sent_ok, 'mail_sent_ng' => $contact->message_mail_sent_ng, 'validation_error' => $contact->message_validation_error, 'spam' => $contact->message_spam, 'accept_terms' => $contact->message_accept_terms, 'invalid_required' => $contact->message_invalid_required, 'invalid_too_long' => $contact->message_invalid_too_long, 'invalid_too_short' => $contact->message_invalid_too_short, 'invalid_date' => $contact->message_invalid_date, 'date_too_early' => $contact->message_date_too_early, 'date_too_late' => $contact->message_date_too_late, 'upload_failed' => $contact->message_upload_failed, 'upload_file_type_invalid' => $contact->message_upload_file_type_invalid, 'upload_file_too_large' => $contact->message_upload_file_too_large, 'upload_failed_php_error' => $contact->message_upload_failed_php_error, 'invalid_number' => $contact->message_invalid_number, 'number_too_small' => $contact->message_number_too_small, 'number_too_large' => $contact->message_number_too_large, 'quiz_answer_not_correct' => $contact->message_quiz_answer_not_correct, 'captcha_not_match' => $contact->message_captcha_not_match, 'ip_black_list' => $contact->message_ip_black_list, 'email_black_list' => $contact->message_email_black_list, 'invalid_email' => $contact->message_invalid_email, 'invalid_url' => $contact->message_invalid_url, 'invalid_tel' => $contact->message_invalid_tel, 'thank_you_mes' => $contact->thank_you_message, 'thank_you_url' => $contact->thank_you_url ), 'additional_settings' => $contact->additional_settings, ); $this->properties = $properties; } } public static function count() { return self::$found_items; } public static function get_current() { return self::$current; } public static function get_instance($id_contact) { $contact = new ETS_CFU_Contact($id_contact, Context::getContext()->language->id); if (!$contact->id) { return false; } return self::$current = new self($contact); } public static function get_unit_tag($id = 0) { static $global_count = 0; $global_count += 1; $unit_tag = sprintf('wpcfu-f%1$d-o%2$d', ets_cfu_absint($id), $global_count); return $unit_tag; } public function initial() { return empty($this->id); } public function name() { return $this->name; } public function title() { return $this->title; } public function locale() { if (ets_cfu_is_valid_locale($this->locale)) { return $this->locale; } else { return ''; } } public function set_locale($locale) { $locale = trim($locale); if (ets_cfu_is_valid_locale($locale)) { $this->locale = $locale; } else { $this->locale = 'en_US'; } } public function shortcode_attr($name) { if (isset($this->shortcode_atts[$name])) { return (string)$this->shortcode_atts[$name]; } } public function is_posted() { return true; } public function scan_form_tags($cond = null) { $manager = ETS_CFU_Form_Tag_Manager::get_instance(); $manager->set_instance(); if (empty($this->scanned_form_tags)) { $this->scanned_form_tags = $manager->scan($this->prop('form')); } $tags = $this->scanned_form_tags; return $manager->filter($tags, $cond); } public function prop($name) { $props = $this->get_properties(); return isset($props[$name]) ? $props[$name] : null; } // Return true if this form is the same one as currently POSTed. public function get_properties() { $properties = (array)$this->properties; return $properties; } /* Form Elements */ public function form_elements() { return $this->replace_all_form_tags(); } public function replace_all_form_tags() { $manager = ETS_CFU_Form_Tag_Manager::get_instance(); $manager->set_instance(); $form = $this->prop('form'); if (ets_cfu_autop_or_not()) { $form = $manager->normalize($form); $form = ets_cfu_autop($form); } $form = $manager->replace_all($form); $this->scanned_form_tags = $manager->get_scanned_tags(); return $form; } public function submit($args = '') { $args = ets_cfu_parse_args($args, array( 'skip_mail' => false, )); $submission = ETS_CFU_Submission::get_instance($this, array( 'skip_mail' => $args['skip_mail'], )); $result = array( 'contact_form_id' => $this->id(), 'status' => $submission->get_status(), 'message' => $submission->get_response(), 'demo_mode' => false, ); if ($submission->is('validation_failed')) { $result['invalid_fields'] = $submission->get_invalid_fields(); } return $result; } public function id() { return $this->id; } /* Message */ public function message($status, $filter = true) { $messages = $this->prop('messages'); $message = isset($messages[$status]) ? $messages[$status] : ''; if ($filter) { $message = $this->filter_message($message, $status); } return $message; } public function filter_message($message, $status = '') { $message = ets_cfu_strip_all_tags($message); $message = ets_cfu_mail_replace_tags($message, array('html' => true)); $message = $message; unset($status); return $message; } }