public function retrieve_value() { $request = AppContext::get_request(); $config = ContactConfig::load(); $fields = $config->get_fields(); $recipients_field_id = $config->get_field_id_by_name('f_recipients'); $recipients_field = new ContactField(); $recipients_field->set_properties($fields[$recipients_field_id]); $recipients = $recipients_field->get_possible_values(); $nb_recipients = count($recipients); $recipients_keys = array_keys($recipients); $values = array(); for ($i = 0; $i <= $this->max_input; $i++) { $field_name = 'field_name_' . $this->get_html_id() . '_' . $i; if ($request->has_postparameter($field_name)) { $field_is_default = 'field_is_default_' . $this->get_html_id() . '_' . $i; $field_title = 'field_name_' . $this->get_html_id() . '_' . $i; $field_email = 'field_email_' . $this->get_html_id() . '_' . $i; $email = $i > 0 ? $request->get_poststring($field_email) : true; if ($request->get_poststring($field_title) && $email) { $id = $i < $nb_recipients ? $recipients_keys[$i] : preg_replace('/\\s+/', '', $request->get_poststring($field_name)); $values[$id] = array('is_default' => $request->get_postint($field_is_default, 0), 'title' => addslashes($request->get_poststring($field_title)), 'email' => $request->get_poststring($field_email, '')); } } } $this->set_value($values); }
public function execute(HTTPRequestCustom $request) { $id = $request->get_int('id', 0); $code = -1; if (!empty($id)) { $config = ContactConfig::load(); $fields = $config->get_fields(); if (isset($fields[$id])) { $field = new ContactField(); $field->set_properties($fields[$id]); if ($field->is_deletable()) { unset($fields[$id]); $new_fields_list = array(); $position = 1; foreach ($fields as $key => $f) { $new_fields_list[$position] = $f; $position++; } $config->set_fields($new_fields_list); ContactConfig::save(); $code = $id; } } } return new JSONResponse(array('code' => $code)); }
private function update_position(HTTPRequestCustom $request) { $fields = $this->config->get_fields(); $sorted_fields = array(); $fields_list = json_decode(TextHelper::html_entity_decode($request->get_value('tree'))); foreach ($fields_list as $position => $tree) { $sorted_fields[$position + 1] = $fields[$tree->id]; } $this->config->set_fields($sorted_fields); ContactConfig::save(); }
public function execute(HTTPRequestCustom $request) { $id = $request->get_int('id', 0); $display = -1; if ($id !== 0) { $config = ContactConfig::load(); $fields = $config->get_fields(); if ($fields[$id]['displayed']) { $display = $fields[$id]['displayed'] = 0; } else { $display = $fields[$id]['displayed'] = 1; } $config->set_fields($fields); ContactConfig::save(); } return new JSONResponse(array('id' => $id, 'display' => $display)); }
public function validate(FormField $field) { $field_name = ContactField::rewrite_field_name($field->get_value()); $valid = true; if (!empty($this->field_id)) { foreach (ContactConfig::load()->get_fields() as $id => $f) { if ($id != $this->field_id && $f['field_name'] == $field_name) { $valid = false; } } } else { foreach (ContactConfig::load()->get_fields() as $id => $f) { if ($f['field_name'] == $field_name) { $valid = false; } } } return $valid; }
function display() { $template = $this->get_template_to_use(); $lang = LangLoader::get('common', 'contact'); $config = ContactConfig::load(); $tpl = new FileTemplate('contact/ContactFormFieldObjectPossibleValues.tpl'); $tpl->add_lang($lang); $this->assign_common_template_variables($template); $fields = $config->get_fields(); $recipients_field_id = $config->get_field_id_by_name('f_recipients'); $recipients_field = new ContactField(); $recipients_field->set_properties($fields[$recipients_field_id]); foreach ($recipients_field->get_possible_values() as $id => $options) { if (!empty($options)) { $tpl->assign_block_vars('recipients_list', array('ID' => $id, 'NAME' => stripslashes($options['title']))); } } $i = 0; foreach ($this->get_value() as $name => $options) { if (!empty($options)) { $tpl->assign_block_vars('fieldelements', array('ID' => $i, 'NAME' => stripslashes($options['title']), 'IS_DEFAULT' => (int) $options['is_default'])); foreach ($recipients_field->get_possible_values() as $id => $recipient_options) { if (!empty($recipient_options)) { $tpl->assign_block_vars('fieldelements.recipients_list', array('C_RECIPIENT_SELECTED' => $options['recipient'] == $id, 'ID' => $id, 'NAME' => stripslashes($recipient_options['title']))); } } $i++; } } if ($i == 0) { $tpl->assign_block_vars('fieldelements', array('ID' => $i, 'NAME' => '', 'IS_DEFAULT' => 0)); foreach ($recipients_field->get_possible_values() as $id => $options) { if (!empty($options)) { $tpl->assign_block_vars('fieldelements.recipients_list', array('ID' => $id, 'NAME' => stripslashes($options['title']))); } } $i++; } $tpl->put_all(array('NAME' => $this->get_html_id(), 'HTML_ID' => $this->get_html_id(), 'C_DISABLED' => $this->is_disabled(), 'MAX_INPUT' => $this->max_input, 'NBR_FIELDS' => $i)); $template->assign_block_vars('fieldelements', array('ELEMENT' => $tpl->render())); return $template; }
public function execute(HTTPRequestCustom $request) { $id = $request->get_value('id', 0); $name = $request->get_value('name', ''); $field_name = ContactField::rewrite_field_name($name); $result = 0; if (!empty($id)) { foreach (ContactConfig::load()->get_fields() as $key => $f) { if ($key != $id && $f['field_name'] == $field_name) { $result = 1; } } } else { foreach (ContactConfig::load()->get_fields() as $key => $f) { if ($f['field_name'] == $field_name) { $result = 1; } } } return new JSONResponse(array('result' => $result)); }
private function save() { $this->config->set_title($this->form->get_value('title')); if ($this->form->get_value('informations_enabled')) { $this->config->enable_informations(); $this->config->set_informations($this->form->get_value('informations')); $this->config->set_informations_position($this->form->get_value('informations_position')->get_raw_value()); } else { $this->config->disable_informations(); } if ($this->form->get_value('tracking_number_enabled')) { $this->config->enable_tracking_number(); if ($this->form->get_value('date_in_tracking_number_enabled')) { $this->config->enable_date_in_tracking_number(); } else { $this->config->disable_date_in_tracking_number(); } } else { $this->config->disable_tracking_number(); } if ($this->form->get_value('sender_acknowledgment_enabled')) { $this->config->enable_sender_acknowledgment(); } else { $this->config->disable_sender_acknowledgment(); } $this->config->set_authorizations($this->form->get_value('authorizations')->build_auth_array()); ContactConfig::save(); }
private function send_mail() { $message = ''; $current_user = AppContext::get_current_user(); $fields = $this->config->get_fields(); $recipients_field_id = $this->config->get_field_id_by_name('f_recipients'); $recipients_field = new ContactField(); $recipients_field->set_properties($fields[$recipients_field_id]); $recipients = $recipients_field->get_possible_values(); $recipients['admins']['email'] = implode(';', MailServiceConfig::load()->get_administrators_mails()); $subject_field_id = $this->config->get_field_id_by_name('f_subject'); $subject_field = new ContactField(); $subject_field->set_properties($fields[$subject_field_id]); $subjects = $subject_field->get_possible_values(); if ($subject_field->get_field_type() == 'ContactShortTextField') { $subject = $this->form->get_value('f_subject'); } else { $subject = $this->form->get_value('f_subject')->get_raw_value(); } $display_message_title = false; if ($this->config->is_tracking_number_enabled()) { $now = new Date(); $tracking_number = $this->config->get_last_tracking_number(); $tracking_number++; $message .= $this->lang['contact.tracking_number'] . ' : ' . ($this->config->is_date_in_tracking_number_enabled() ? $now->get_year() . $now->get_month() . $now->get_day() . '-' : '') . $tracking_number . ' '; $this->config->set_last_tracking_number($tracking_number); ContactConfig::save(); $subject = '[' . $tracking_number . '] ' . $subject; $display_message_title = true; } foreach ($this->config->get_fields() as $id => $properties) { $field = new ContactField(); $field->set_properties($properties); if ($field->is_displayed() && $field->is_authorized() && $field->is_deletable()) { try { $value = ContactFieldsService::get_value($this->form, $field); $message .= $field->get_name() . ': ' . $value . ' '; } catch (Exception $e) { throw new Exception($e->getMessage()); } $display_message_title = true; } } if ($display_message_title) { $message .= $this->lang['contact.form.message'] . ': '; } $message .= $this->form->get_value('f_message'); $mail = new Mail(); $mail->set_sender(MailServiceConfig::load()->get_default_mail_sender(), $this->lang['module_title']); $mail->set_reply_to($this->form->get_value('f_sender_mail'), $current_user->get_level() == User::VISITOR_LEVEL ? $this->lang['module_title'] : $current_user->get_display_name()); $mail->set_subject($subject); $mail->set_content($message); if ($recipients_field->is_displayed()) { if (in_array($recipients_field->get_field_type(), array('ContactSimpleSelectField', 'ContactSimpleChoiceField'))) { $recipients_mails = explode(';', $recipients[$this->form->get_value('f_recipients')->get_raw_value()]['email']); } else { $selected_recipients = $this->form->get_value('f_recipients'); $recipients_mails = array(); foreach ($selected_recipients as $recipient) { $mails = explode(';', $recipients[$recipient->get_id()]['email']); foreach ($mails as $m) { $recipients_mails[] = $m; } } } foreach ($recipients_mails as $mail_address) { $mail->add_recipient($mail_address); } } else { if ($subject_field->get_field_type() != 'ContactShortTextField') { $recipient = $subjects[$this->form->get_value('f_subject')->get_raw_value()]['recipient']; $recipients_mails = explode(';', $recipients[$recipient]['email']); foreach ($recipients_mails as $mail_address) { $mail->add_recipient($mail_address); } } else { $recipients_mails = explode(';', $recipients['admins']['email']); foreach ($recipients_mails as $mail_address) { $mail->add_recipient($mail_address); } } } $mail_service = AppContext::get_mail_service(); if ($this->config->is_sender_acknowledgment_enabled()) { $acknowledgment = new Mail(); $acknowledgment->set_sender(MailServiceConfig::load()->get_default_mail_sender(), Mail::SENDER_ADMIN); $acknowledgment->set_subject('[' . $this->lang['contact.acknowledgment_title'] . '] ' . $subject); $acknowledgment->set_content($this->lang['contact.acknowledgment'] . $message); $acknowledgment->add_recipient($this->form->get_value('f_sender_mail')); return $mail_service->try_to_send($mail) && $mail_service->try_to_send($acknowledgment); } return $mail_service->try_to_send($mail); }
private function get_authorizations($bit) { return AppContext::get_current_user()->check_auth(ContactConfig::load()->get_authorizations(), $bit); }
private function save() { $field = $this->get_field(); $fields = $this->config->get_fields(); if ($field->is_deletable()) { $field->set_field_name(ContactField::rewrite_field_name($this->form->get_value('name'))); } $field->set_name($this->form->get_value('name')); $field->set_description($this->form->get_value('description')); if (!$this->form->field_is_disabled('field_type')) { $field->set_field_type($this->form->get_value('field_type')->get_raw_value()); } if (!$field->is_readonly() && !$this->form->field_is_disabled('regex_type')) { $regex = 0; if (!$this->form->field_is_disabled('regex_type')) { $regex = is_numeric($this->form->get_value('regex_type', '')->get_raw_value()) ? $this->form->get_value('regex_type', '')->get_raw_value() : $this->form->get_value('regex', ''); } $field->set_regex($regex); } if (!$this->form->field_is_disabled('field_required')) { if ((bool) $this->form->get_value('field_required')) { $field->required(); } else { $field->not_required(); } } if (!$this->form->field_is_disabled('possible_values')) { $field->set_possible_values($this->form->get_value('possible_values')); } if (!$this->form->field_is_disabled('default_value_small')) { $field->set_default_value($this->form->get_value('default_value_small')); } if (!$this->form->field_is_disabled('default_value_medium')) { $field->set_default_value($this->form->get_value('default_value_medium')); } if (!$this->form->field_is_disabled('display')) { if ((bool) $this->form->get_value('display')) { $field->displayed(); } else { $field->not_displayed(); } } if (!$this->form->field_is_disabled('authorizations')) { $field->set_authorization($this->form->get_value('authorizations', $field->get_authorization())->build_auth_array()); } $fields[!empty($this->id) ? $this->id : count($this->config->get_fields()) + 1] = $field->get_properties(); $this->config->set_fields($fields); ContactConfig::save(); }