/
home
/
infinitibizsol
/
public_html
/
wp-content
/
plugins
/
wpforms
/
pro
/
includes
/
fields
/
File Upload :
llllll
Current File: /home/infinitibizsol/public_html/wp-content/plugins/wpforms/pro/includes/fields/class-password.php
<?php /** * Password field. * * @since 1.0.0 */ class WPForms_Field_Password extends WPForms_Field { /** * Primary class constructor. * * @since 1.0.0 */ public function init() { // Define field type information. $this->name = esc_html__( 'Password', 'wpforms' ); $this->type = 'password'; $this->icon = 'fa-lock'; $this->order = 130; $this->group = 'fancy'; // Define additional field properties. add_filter( 'wpforms_field_properties_password', [ $this, 'field_properties' ], 5, 3 ); // Set confirmation status to option wrapper class. add_filter( 'wpforms_builder_field_option_class', [ $this, 'field_option_class' ], 10, 2 ); // Form frontend CSS enqueues. add_action( 'wpforms_frontend_css', [ $this, 'enqueue_frontend_css' ] ); // Form frontend JS enqueues. add_action( 'wpforms_frontend_js', [ $this, 'enqueue_frontend_js' ] ); // Add frontend strings. add_action( 'wpforms_frontend_strings', [ $this, 'add_frontend_strings' ] ); add_action( 'wpforms_pro_fields_entry_preview_get_field_value_password_field', [ $this, 'modify_entry_preview_value' ], 10, 3 ); } /** * Define additional field properties. * * @since 1.3.7 * * @param array $properties Field properties. * @param array $field Field settings. * @param array $form_data Form data and settings. * * @return array */ public function field_properties( $properties, $field, $form_data ) { if ( ! empty( $field['password-strength'] ) ) { $properties['inputs']['primary']['data']['rule-password-strength'] = true; $properties['inputs']['primary']['data']['password-strength-level'] = $field['password-strength-level']; } if ( empty( $field['confirmation'] ) ) { return $properties; } $form_id = absint( $form_data['id'] ); $field_id = absint( $field['id'] ); // Password confirmation setting enabled. $props = [ 'inputs' => [ 'primary' => [ 'block' => [ 'wpforms-field-row-block', 'wpforms-one-half', 'wpforms-first', ], 'class' => [ 'wpforms-field-password-primary', ], 'sublabel' => [ 'hidden' => ! empty( $field['sublabel_hide'] ), 'value' => esc_html__( 'Password', 'wpforms' ), ], ], 'secondary' => [ 'attr' => [ 'name' => "wpforms[fields][{$field_id}][secondary]", 'value' => '', 'placeholder' => ! empty( $field['confirmation_placeholder'] ) ? $field['confirmation_placeholder'] : '', ], 'block' => [ 'wpforms-field-row-block', 'wpforms-one-half', ], 'class' => [ 'wpforms-field-password-secondary', ], 'data' => [ 'rule-confirm' => '#' . $properties['inputs']['primary']['id'], ], 'id' => "wpforms-{$form_id}-field_{$field_id}-secondary", 'required' => ! empty( $field['required'] ) ? 'required' : '', 'sublabel' => [ 'hidden' => ! empty( $field['sublabel_hide'] ), 'value' => esc_html__( 'Confirm Password', 'wpforms' ), ], 'value' => '', ], ], ]; $properties = array_merge_recursive( $properties, $props ); // Input Primary: adjust name. $properties['inputs']['primary']['attr']['name'] = "wpforms[fields][{$field_id}][primary]"; // Input Primary: remove size and error classes. $properties['inputs']['primary']['class'] = array_diff( $properties['inputs']['primary']['class'], [ 'wpforms-field-' . sanitize_html_class( $field['size'] ), 'wpforms-error', ] ); // Input Primary: add error class if needed. if ( ! empty( $properties['error']['value']['primary'] ) ) { $properties['inputs']['primary']['class'][] = 'wpforms-error'; } // Input Secondary: add error class if needed. if ( ! empty( $properties['error']['value']['secondary'] ) ) { $properties['inputs']['secondary']['class'][] = 'wpforms-error'; } // Input Secondary: add required class if needed. if ( ! empty( $field['required'] ) ) { $properties['inputs']['secondary']['class'][] = 'wpforms-field-required'; } return $properties; } /** * @inheritdoc */ public function is_dynamic_population_allowed( $properties, $field ) { return false; } /** * @inheritdoc */ public function is_fallback_population_allowed( $properties, $field ) { return false; } /** * Add class to field options wrapper to indicate if field confirmation is enabled. * * @since 1.3.0 * * @param string $class * @param array $field * * @return string */ public function field_option_class( $class, $field ) { if ( 'password' === $field['type'] ) { if ( isset( $field['confirmation'] ) ) { $class = 'wpforms-confirm-enabled'; } else { $class = 'wpforms-confirm-disabled'; } } return $class; } /** * Field options panel inside the builder. * * @since 1.0.0 * * @param array $field */ public function field_options( $field ) { /* * Basic field options. */ // Options open markup. $args = [ 'markup' => 'open', ]; $this->field_option( 'basic-options', $field, $args ); // Label. $this->field_option( 'label', $field ); // Description. $this->field_option( 'description', $field ); // Required toggle. $this->field_option( 'required', $field ); // Confirmation toggle. $fld = $this->field_element( 'toggle', $field, [ 'slug' => 'confirmation', 'value' => isset( $field['confirmation'] ) ? '1' : '0', 'desc' => esc_html__( 'Enable Password Confirmation', 'wpforms' ), 'tooltip' => esc_html__( 'Check this option to ask users to provide their password twice.', 'wpforms' ), ], false ); $args = [ 'slug' => 'confirmation', 'content' => $fld, ]; $this->field_element( 'row', $field, $args ); // Password strength. $meter = $this->field_element( 'toggle', $field, [ 'slug' => 'password-strength', 'value' => isset( $field['password-strength'] ) ? '1' : '0', 'desc' => esc_html__( 'Enable Password Strength', 'wpforms' ), 'tooltip' => esc_html__( 'Check this option to set minimum password strength.', 'wpforms' ), ], false ); $args = [ 'slug' => 'password-strength', 'content' => $meter, ]; $this->field_element( 'row', $field, $args ); $strength_label = $this->field_element( 'label', $field, [ 'value' => esc_html__( 'Minimum Strength', 'wpforms' ), 'tooltip' => esc_html__( 'Select minimum password strength level.', 'wpforms' ), ], false ); $strength = $this->field_element( 'select', $field, [ 'slug' => 'password-strength-level', 'options' => [ '2' => esc_html__( 'Weak', 'wpforms' ), '3' => esc_html__( 'Medium', 'wpforms' ), '4' => esc_html__( 'Strong', 'wpforms' ), ], 'value' => isset( $field['password-strength-level'] ) ? $field['password-strength-level'] : '3', ], false ); $args = [ 'slug' => 'password-strength-level', 'class' => ! isset( $field['password-strength'] ) ? 'wpforms-hidden' : '', 'content' => $strength_label . $strength, ]; $this->field_element( 'row', $field, $args ); // Options close markup. $args = [ 'markup' => 'close', ]; $this->field_option( 'basic-options', $field, $args ); /* * Advanced field options. */ // Options open markup. $args = [ 'markup' => 'open', ]; $this->field_option( 'advanced-options', $field, $args ); // Size. $this->field_option( 'size', $field ); // Placeholder. $this->field_option( 'placeholder', $field ); // Confirmation Placeholder. $lbl = $this->field_element( 'label', $field, [ 'slug' => 'confirmation_placeholder', 'value' => esc_html__( 'Confirmation Placeholder Text', 'wpforms' ), 'tooltip' => esc_html__( 'Enter text for the confirmation field placeholder.', 'wpforms' ), ], false ); $fld = $this->field_element( 'text', $field, [ 'slug' => 'confirmation_placeholder', 'value' => ! empty( $field['confirmation_placeholder'] ) ? esc_attr( $field['confirmation_placeholder'] ) : '', ], false ); $args = [ 'slug' => 'confirmation_placeholder', 'content' => $lbl . $fld, ]; $this->field_element( 'row', $field, $args ); // Default value. $this->field_option( 'default_value', $field ); // Custom CSS classes. $this->field_option( 'css', $field ); // Hide Label. $this->field_option( 'label_hide', $field ); // Hide sublabels. $this->field_option( 'sublabel_hide', $field ); // Options close markup. $args = [ 'markup' => 'close', ]; $this->field_option( 'advanced-options', $field, $args ); } /** * Field preview inside the builder. * * @since 1.0.0 * * @param array $field Current field specific data. */ public function field_preview( $field ) { $placeholder = ! empty( $field['placeholder'] ) ? $field['placeholder'] : ''; $confirm_placeholder = ! empty( $field['confirmation_placeholder'] ) ? $field['confirmation_placeholder'] : ''; $default_value = ! empty( $field['default_value'] ) ? $field['default_value'] : ''; $confirm = ! empty( $field['confirmation'] ) ? 'enabled' : 'disabled'; // Label. $this->field_preview_option( 'label', $field ); ?> <div class="wpforms-confirm wpforms-confirm-<?php echo esc_attr( $confirm ); ?>"> <div class="wpforms-confirm-primary"> <input type="password" placeholder="<?php echo esc_attr( $placeholder ); ?>" value="<?php echo esc_attr( $default_value ); ?>" class="primary-input" readonly> <label class="wpforms-sub-label"><?php esc_html_e( 'Password', 'wpforms' ); ?></label> </div> <div class="wpforms-confirm-confirmation"> <input type="password" placeholder="<?php echo esc_attr( $confirm_placeholder ); ?>" class="secondary-input" readonly> <label class="wpforms-sub-label"><?php esc_html_e( 'Confirm Password', 'wpforms' ); ?></label> </div> </div> <?php // Description. $this->field_preview_option( 'description', $field ); } /** * Field display on the form front-end. * * @since 1.0.0 * * @param array $field Field data and settings. * @param array $deprecated Deprecated field attributes. Use field properties. * @param array $form_data Form data and settings. */ public function field_display( $field, $deprecated, $form_data ) { // Define data. $confirmation = ! empty( $field['confirmation'] ); $primary = $field['properties']['inputs']['primary']; $secondary = ! empty( $field['properties']['inputs']['secondary'] ) ? $field['properties']['inputs']['secondary'] : []; // Standard password field. if ( ! $confirmation ) { // Primary field. printf( '<input type="password" %s %s>', wpforms_html_attributes( $primary['id'], $primary['class'], $primary['data'], $primary['attr'] ), $primary['required'] ); } else { // Confirmation password field configuration. // Row wrapper. echo '<div class="wpforms-field-row wpforms-field-' . sanitize_html_class( $field['size'] ) . '">'; // Primary field. echo '<div ' . wpforms_html_attributes( false, $primary['block'] ) . '>'; $this->field_display_sublabel( 'primary', 'before', $field ); printf( '<input type="password" %s %s>', wpforms_html_attributes( $primary['id'], $primary['class'], $primary['data'], $primary['attr'] ), $primary['required'] ); $this->field_display_sublabel( 'primary', 'after', $field ); $this->field_display_error( 'primary', $field ); echo '</div>'; // Secondary field. echo '<div ' . wpforms_html_attributes( false, $secondary['block'] ) . '>'; $this->field_display_sublabel( 'secondary', 'before', $field ); printf( '<input type="password" %s %s>', wpforms_html_attributes( $secondary['id'], $secondary['class'], $secondary['data'], $secondary['attr'] ), $secondary['required'] ); $this->field_display_sublabel( 'secondary', 'after', $field ); $this->field_display_error( 'secondary', $field ); echo '</div>'; echo '</div>'; } // End if(). } /** * Validate field on form submit. * * @since 1.3.0 * * @param int $field_id Field ID. * @param array $field_submit Submitted field value. * @param array $form_data Form data and settings. */ public function validate( $field_id, $field_submit, $form_data ) { $form_id = $form_data['id']; $fields = $form_data['fields']; $required = wpforms_get_required_label(); // Standard configuration, confirmation disabled. if ( empty( $fields[ $field_id ]['confirmation'] ) ) { // Required check. if ( empty( $field_submit ) && ! empty( $fields[ $field_id ]['required'] ) ) { wpforms()->process->errors[ $form_id ][ $field_id ] = $required; } } else { // Required check. if ( empty( $field_submit['primary'] ) && ! empty( $fields[ $field_id ]['required'] ) ) { wpforms()->process->errors[ $form_id ][ $field_id ]['primary'] = $required; } // Required check, secondary confirmation field. if ( empty( $field_submit['secondary'] ) && ! empty( $fields[ $field_id ]['required'] ) ) { wpforms()->process->errors[ $form_id ][ $field_id ]['secondary'] = $required; } // Fields need to match. if ( $field_submit['primary'] !== $field_submit['secondary'] ) { wpforms()->process->errors[ $form_id ][ $field_id ]['secondary'] = esc_html__( 'Field values do not match.', 'wpforms' ); } } if ( ! empty( $fields[ $field_id ]['password-strength'] ) && ! empty( $fields[ $field_id ]['password-strength-level'] ) && PHP_VERSION_ID >= 70200 && ! $this->is_empty_not_required_field( $field_id, $field_submit, $fields ) // Don't check the password strength for empty fields which is set as not required. ) { require_once WPFORMS_PLUGIN_DIR . 'libs/bjeavons/zxcvbn-php/autoload.php'; $password_value = empty( $fields[ $field_id ]['confirmation'] ) ? $field_submit : $field_submit['primary']; $strength = ( new \ZxcvbnPhp\Zxcvbn() )->passwordStrength( $password_value ); if ( isset( $strength['score'] ) && $strength['score'] < (int) $fields[ $field_id ]['password-strength-level'] ) { wpforms()->process->errors[ $form_id ][ $field_id ] = $this->strength_error_message(); } } } /** * Format and sanitize field. * * @since 1.3.0 * * @param int $field_id Field ID. * @param array $field_submit Submitted field value. * @param array $form_data Form data and settings. */ public function format( $field_id, $field_submit, $form_data ) { // Define data. if ( is_array( $field_submit ) ) { $value = ! empty( $field_submit['primary'] ) ? $field_submit['primary'] : ''; } else { $value = ! empty( $field_submit ) ? $field_submit : ''; } $name = ! empty( $form_data['fields'][ $field_id ] ['label'] ) ? $form_data['fields'][ $field_id ]['label'] : ''; // Set final field details. wpforms()->process->fields[ $field_id ] = [ 'name' => sanitize_text_field( $name ), 'value' => sanitize_text_field( $value ), 'id' => absint( $field_id ), 'type' => $this->type, ]; } /** * Form frontend CSS enqueues. * * @since 1.6.7 * * @param array $forms Form data of forms on the current page. */ public function enqueue_frontend_css( $forms ) { if ( ! $this->strength_enabled( $forms ) && ! wpforms()->frontend->assets_global() ) { return; } $min = wpforms_get_min_suffix(); wp_enqueue_style( 'wpforms-password-field', WPFORMS_PLUGIN_URL . "assets/pro/css/fields/password{$min}.css", [], WPFORMS_VERSION ); } /** * Form frontend JS enqueues. * * @since 1.6.7 * * @param array $forms Form data of forms on the current page. */ public function enqueue_frontend_js( $forms ) { if ( ! $this->strength_enabled( $forms ) && ! wpforms()->frontend->assets_global() ) { return; } $min = \wpforms_get_min_suffix(); wp_enqueue_script( 'wpforms-password-field', WPFORMS_PLUGIN_URL . "assets/pro/js/fields/password{$min}.js", [ 'jquery', 'password-strength-meter' ], WPFORMS_VERSION, true ); } /** * Check if password strength enabled. * * @since 1.6.7 * * @param array $forms Form data of forms on the current page. * * @return bool */ private function strength_enabled( $forms ) { foreach ( $forms as $form_data ) { if ( empty( $form_data['fields'] ) ) { continue; } foreach ( $form_data['fields'] as $field ) { if ( $field['type'] === 'password' && isset( $field['password-strength'] ) ) { return (bool) $field['password-strength']; } } } return false; } /** * Add password strength validation error to frontend strings. * * @since 1.6.7 * * @param array $strings Frontend strings. * * @return array Frontend strings. */ public function add_frontend_strings( $strings ) { $strings['val_password_strength'] = $this->strength_error_message(); return $strings; } /** * Get strength error message. * * @since 1.6.7 * * @return string */ private function strength_error_message() { return wpforms_setting( 'validation-passwordstrength', esc_html__( 'A stronger password is required. Consider using upper and lower case letters, numbers, and symbols.', 'wpforms' ) ); } /** * Modify value for the entry preview field. * * @since 1.6.9 * * @param string $value Value. * @param array $field Field data. * @param array $form_data Form data. * * @return string */ public function modify_entry_preview_value( $value, $field, $form_data ) { return str_repeat( '*', strlen( $value ) ); } /** * Checks if password field has been submitted empty and set as not required at the same time. * * @since 1.7.4 * * @param int $field_id Field ID. * @param array $field_submit Submitted field value. * @param array $fields Fields settings. * * @return bool */ private function is_empty_not_required_field( $field_id, $field_submit, $fields ) { return ( // If submitted value is empty or is an array of empty values (that happens when password confirmation is enabled). empty( $field_submit ) || empty( implode( '', array_values( (array) $field_submit ) ) ) ) && empty( $fields[ $field_id ]['required'] ); // If field is not set as required. } } new WPForms_Field_Password();
Copyright ©2k19 -
Hexid
|
Tex7ure