PATH:
home
/
letacommog
/
rdvenunclick.fr1
/
wp-content
/
plugins
/
weforms
/
includes
<?php /** * Form field manager class * * @since 1.1.0 */ class WeForms_Field_Manager { /** * The fields * * @var array */ private $fields = []; /** * Going to store WeForms_Notification instance for tmp. Will refactor * * @var array */ private $notification = null; /** * Get all the registered fields * * @return array */ public function get_fields() { if ( !empty( $this->fields ) ) { return $this->fields; } $this->register_field_types(); return $this->fields; } /** * Register the field types * * @return void */ private function register_field_types() { require_once __DIR__ . '/fields/class-abstract-fields.php'; require_once __DIR__ . '/fields/class-field-text.php'; require_once __DIR__ . '/fields/class-field-name.php'; require_once __DIR__ . '/fields/class-field-email.php'; require_once __DIR__ . '/fields/class-field-textarea.php'; require_once __DIR__ . '/fields/class-field-column.php'; require_once __DIR__ . '/fields/class-field-checkbox.php'; require_once __DIR__ . '/fields/class-field-radio.php'; require_once __DIR__ . '/fields/class-field-dropdown.php'; require_once __DIR__ . '/fields/class-field-multidropdown.php'; require_once __DIR__ . '/fields/class-field-url.php'; require_once __DIR__ . '/fields/class-field-sectionbreak.php'; require_once __DIR__ . '/fields/class-field-html.php'; require_once __DIR__ . '/fields/class-field-hidden.php'; require_once __DIR__ . '/fields/class-field-image.php'; require_once __DIR__ . '/fields/class-field-recaptcha.php'; require_once __DIR__ . '/fields/class-field-date.php'; $fields = [ 'text_field' => new WeForms_Form_Field_Text(), 'name_field' => new WeForms_Form_Field_Name(), 'date_field' => new WeForms_Form_Field_Date_Free(), 'email_address' => new WeForms_Form_Field_Email(), 'textarea_field' => new WeForms_Form_Field_Textarea(), 'radio_field' => new WeForms_Form_Field_Radio(), 'checkbox_field' => new WeForms_Form_Field_Checkbox(), 'column_field' => new WeForms_Form_Field_Column(), 'dropdown_field' => new WeForms_Form_Field_Dropdown(), 'multiple_select' => new WeForms_Form_Field_MultiDropdown(), 'website_url' => new WeForms_Form_Field_URL(), 'section_break' => new WeForms_Form_Field_SectionBreak(), 'custom_html' => new WeForms_Form_Field_HTML(), 'custom_hidden_field' => new WeForms_Form_Field_Hidden(), 'image_upload' => new WeForms_Form_Field_Image(), 'recaptcha' => new WeForms_Form_Field_reCaptcha(), ]; $this->fields = apply_filters( 'weforms_form_fields', $fields ); } /** * Get field groups * * @return array */ public function get_field_groups() { $groups = [ [ 'title' => __( 'Custom Fields', 'weforms' ), 'id' => 'custom-fields', 'fields' => apply_filters( 'weforms_field_groups_custom', [ 'name_field', 'text_field', 'textarea_field', 'dropdown_field', 'multiple_select', 'radio_field', 'checkbox_field', 'website_url', 'email_address', 'custom_hidden_field', 'image_upload', ] ), ], [ 'title' => __( 'Others', 'weforms' ), 'id' => 'others', 'fields' => apply_filters( 'weforms_field_groups_others', [ 'column_field', 'section_break', 'custom_html', 'recaptcha', ] ), ], ]; return apply_filters( 'weforms_field_groups', $groups ); } /** * Get fields JS setting for the form builder * * @return array */ public function get_js_settings() { $fields = $this->get_fields(); $js_array = []; if ( $fields ) { foreach ( $fields as $type => $object ) { $js_array[ $type ] = $object->get_js_settings(); } } return $js_array; } /** * Render the form fields * * @param int $form_id * @param array $fields * @param array $atts * * @return void */ public function render_fields( $fields, $form_id, $atts = [] ) { if ( !$fields ) { return; } $this->notification = new WeForms_Notification(); $this->notification->set_merge_tags(); $fields = apply_filters( 'weforms_render_fields', $fields, $form_id ); foreach ( $fields as $field ) { if ( !$field_object = $this->field_exists( $field['template'] ) ) { if ( defined( 'WP_DEBUG' && WP_DEBUG ) ) { echo '<h4 style="color: red;"><em>' . esc_attr( $field['template'] ). '</em> field not found.</h4>'; } continue; } $field = $this->dynamic_fields( $field, $form_id, $atts ); $field = $this->replace_tags( $field, $form_id, $atts ); $field_object->render( $field, $form_id ); $field_object->conditional_logic( $field, $form_id ); } } /** * Filter dynamic fields * * @param array $form_field * @param int $form_id * * @return void */ public function dynamic_fields( $form_field, $form_id, $atts = [] ) { if ( !isset( $form_field['dynamic'] ) || empty( $form_field['dynamic']['status'] ) || empty( $form_field['dynamic']['param_name'] ) ) { return $form_field; } $param_name = $form_field['dynamic']['param_name']; if ( isset( $form_field['options'] ) ) { $form_field['options'] = apply_filters( 'weforms_field_options_' . $param_name, $form_field['options'], $form_id ); if ( isset( $_GET[ $param_name ] ) && is_array( $_GET[ $param_name ] ) ) { $form_field['default'] = array_merge( $form_field['options'], sanitize_text_field( wp_unslash( $_GET[ $param_name ] ) ) ); } } foreach ( [ 'default', 'selected' ] as $key => $default_key ) { if ( isset( $form_field[ $default_key ] ) ) { $form_field[ $default_key ] = apply_filters( 'weforms_field_default_value_' . $param_name, $form_field[ $default_key ], $form_id ); if ( isset( $atts[ $param_name ] ) ) { $form_field[ $default_key ] = $atts[ $param_name ]; } if ( isset( $_GET[ $param_name ] ) ) { if ( is_array( $form_field[ $default_key ] ) == is_array( sanitize_text_field( wp_unslash( $_GET[ $param_name ] ) ) ) ) { $form_field[ $default_key ] = sanitize_text_field( wp_unslash( $_GET[ $param_name ] ) ); } if ( ! is_array( $form_field[ $default_key ] ) == ! is_array( sanitize_text_field( wp_unslash( $_GET[ $param_name ] ) ) ) ) { $form_field[ $default_key ] = sanitize_text_field( wp_unslash( $_GET[ $param_name ] ) ); } } } } return $form_field; } /** * Replace merge tags * * @param array $form_field * @param int $form_id * * @return void */ public function replace_tags( $form_field, $form_id, $atts = [] ) { $fields = [ 'default', 'placeholder', 'first_name' => [ 'placeholder', 'default' ], 'middle_name' => [ 'placeholder', 'default' ], 'last_name' => [ 'placeholder', 'default' ], ]; foreach ( $fields as $key => $field ) { if ( is_array( $field ) ) { foreach ( $field as $k => $sub_field ) { if ( !empty( $form_field[ $key ] ) && !empty( $form_field[ $key ][ $sub_field ] ) ) { $form_field[ $key ][ $sub_field ] = $this->notification->replace_tags( $form_field[ $key ][ $sub_field ] ); } } } else { if ( !empty( $form_field[ $field ] ) && is_string( $form_field[ $field ] ) ) { $form_field[ $field ] = $this->notification->replace_tags( $form_field[ $field ] ); } } } return $form_field; } /** * Check if a field exists * * @param string $field_type * * @return bool */ public function field_exists( $field_type ) { if ( array_key_exists( $field_type, $this->get_fields() ) ) { return $this->fields[ $field_type ]; } return false; } }
[+]
..
[-] class-form-entry-manager.php
[edit]
[-] class-frontend-form.php
[edit]
[-] class-ajax-upload.php
[edit]
[+]
importer
[-] class-ajax.php
[edit]
[+]
api
[+]
fields
[-] class-notification.php
[edit]
[-] class-form-entry.php
[edit]
[-] class-importer-manager.php
[edit]
[+]
compat
[-] functions.php
[edit]
[-] class-field-manager.php
[edit]
[+]
library
[-] class-integration-manager.php
[edit]
[+]
email
[-] class-form-widget.php
[edit]
[+]
templates
[-] class-weforms-api.php
[edit]
[-] class-template-manager.php
[edit]
[+]
integrations
[-] class-installer.php
[edit]
[-] class-scripts-styles.php
[edit]
[-] country-list.php
[edit]
[-] class-form.php
[edit]
[-] class-form-manager.php
[edit]
[-] class-upgrades.php
[edit]
[-] class-emailer.php
[edit]
[-] class-form-preview.php
[edit]
[+]
admin
[-] class-dokan-integration.php
[edit]