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));
 }
 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 get_value(HTMLForm $form, ContactField $field)
 {
     $field_name = $field->get_field_name();
     if ($form->has_field($field_name)) {
         return $form->get_value($field_name)->format(Date::FORMAT_TIMESTAMP);
     }
     return '';
 }
 public function get_value(HTMLForm $form, ContactField $field)
 {
     $field_name = $field->get_field_name();
     $array = array();
     if ($form->has_field($field_name)) {
         foreach ($form->get_value($field_name) as $field => $value) {
             $array[] = $value->get_label();
         }
     }
     return $this->serialise_value($array);
 }
 public function get_value(HTMLForm $form, ContactField $field)
 {
     $field_name = $field->get_field_name();
     if ($form->has_field($field_name)) {
         $value = $form->get_value($field_name);
         if (!empty($value)) {
             return $value->get_label();
         }
     }
     return '';
 }
 public function display_field(ContactField $field)
 {
     $fieldset = $field->get_fieldset();
     $regex = $field->get_regex();
     switch ($regex) {
         case 1:
             $field_class = 'FormFieldNumberEditor';
             $display_constraint = false;
             break;
         case 4:
             $field_class = 'FormFieldMailEditor';
             $display_constraint = false;
             break;
         case 5:
             $field_class = 'FormFieldUrlEditor';
             $display_constraint = false;
             break;
         case 8:
             $field_class = 'FormFieldTelEditor';
             $display_constraint = false;
             break;
         default:
             $field_class = 'FormFieldTextEditor';
             $display_constraint = true;
             break;
     }
     $fieldset->add_field(new $field_class($field->get_field_name(), $field->get_name(), $field->get_default_value(), array('required' => (bool) $field->is_required(), 'description' => $field->get_description()), $display_constraint ? array($this->constraint($regex)) : array()));
 }
 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)
 {
     $this->init();
     $this->update_fields($request);
     $fields_number = 0;
     foreach ($this->config->get_fields() as $id => $properties) {
         $field = new ContactField();
         $field->set_properties($properties);
         $this->view->assign_block_vars('fields_list', array('C_DELETE' => $field->is_deletable(), 'C_READONLY' => $field->is_readonly(), 'C_DISPLAY' => $field->is_displayed(), 'C_REQUIRED' => $field->is_required(), 'ID' => $id, 'NAME' => $field->get_name(), 'U_EDIT' => ContactUrlBuilder::edit_field($id)->rel()));
         $fields_number++;
     }
     $this->view->put_all(array('C_FIELDS' => $fields_number, 'C_MORE_THAN_ONE_FIELD' => $fields_number > 1));
     return new AdminContactDisplayResponse($this->view, LangLoader::get_message('admin.fields.manage.page_title', 'common', 'contact'));
 }
 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;
 }
 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));
 }
 public function get_value(HTMLForm $form, ContactField $field)
 {
     $field_name = $field->get_field_name();
     return $form->get_value($field_name);
 }
Example #12
0
 /**
  * class constructor
  */
 function CField_Msn($id_common)
 {
     parent::Field($id_common);
 }
 private function init_fields_array()
 {
     $fields = array();
     $lang = LangLoader::get('config', 'contact');
     $field = new ContactField();
     $field->set_name($lang['mail_address']);
     $field->set_field_name('f_sender_mail');
     $field->set_description($lang['mail_address_explain']);
     $field->set_field_type('ContactShortTextField');
     $field->set_regex(4);
     $field->readonly();
     $field->required();
     $field->not_deletable();
     $fields[1] = $field->get_properties();
     $field = new ContactField();
     $field->set_name($lang['contact_subject']);
     $field->set_field_name('f_subject');
     $field->set_description($lang['contact_subject_explain']);
     $field->set_field_type('ContactShortTextField');
     $field->not_deletable();
     $fields[2] = $field->get_properties();
     $field = new ContactField();
     $field->set_name($lang['contact_recipients']);
     $field->set_field_name('f_recipients');
     $field->set_field_type('ContactSimpleSelectField');
     $field->set_possible_values(array('admins' => array('is_default' => true, 'title' => $lang['contact_recipients_admins'], 'email' => '')));
     $field->not_deletable();
     $field->not_displayed();
     $fields[3] = $field->get_properties();
     $field = new ContactField();
     $field->set_name($lang['message']);
     $field->set_field_name('f_message');
     $field->set_field_type('ContactHalfLongTextField');
     $field->readonly();
     $field->required();
     $field->not_deletable();
     $fields[4] = $field->get_properties();
     return $fields;
 }
Example #14
0
 /**
  * class constructor
  */
 function CField_Skype($id_common)
 {
     parent::Field($id_common);
 }
 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();
 }
Example #16
0
 /**
  * class constructor
  */
 function CField_Icq($id_common)
 {
     parent::Field($id_common);
 }
 public function display_field(ContactField $field)
 {
     $fieldset = $field->get_fieldset();
     $fieldset->add_field(new FormFieldShortMultiLineTextEditor($field->get_field_name(), $field->get_name(), $field->get_default_value(), array('required' => (bool) $field->is_required(), 'rows' => 10, 'cols' => 80, 'description' => $field->get_description()), array($this->constraint($field->get_regex()))));
 }
Example #18
0
 /**
  * class constructor
  */
 function CField_Gmail($id_common)
 {
     parent::Field($id_common);
 }
 /**
  * @desc This function returned value form fields
  * @param object $form HTMLForm
  * @param object $field ContactField
  */
 public static function get_value(HTMLForm $form, ContactField $field)
 {
     $class = $field->get_instance();
     return $class->get_value($form, $field);
 }
    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);
    }