%PDF- %PDF-
Direktori : /var/www/tif-dev/wp-content/plugins/gravityforms/includes/settings/fields/ |
Current File : //var/www/tif-dev/wp-content/plugins/gravityforms/includes/settings/fields/class-field-map.php |
<?php namespace Gravity_Forms\Gravity_Forms\Settings\Fields; use GFCommon; use Gravity_Forms\Gravity_Forms\Settings\Fields; defined( 'ABSPATH' ) || die(); // Load base class. require_once 'class-generic-map.php'; class Field_Map extends Generic_Map { /** * Field type. * * @since 2.5 * * @var string */ public $type = 'field_map'; /** * Initialize Field Map field. * * @since 2.5 * * @param array $props Field properties. * @param \Gravity_Forms\Gravity_Forms\Settings\Settings $settings Settings instance. */ public function __construct( $props, $settings ) { // Define key field header, disable custom keys. $this->key_field['title'] = esc_html__( 'Field', 'gravityforms' ); $this->key_field['allow_custom'] = false; $this->key_field['display_all'] = true; // Define value field header, disable custom values. $this->value_field['title'] = esc_html__( 'Form Field', 'gravityforms' ); $this->value_field['allow_custom'] = false; // Prepare key field choices. $this->key_field['choices'] = rgar( $props, 'field_map' ) ? array_values( $props['field_map'] ) : array(); foreach ( $this->key_field['choices'] as $i => $choice ) { // Set required, excluded field types. $this->key_field['choices'][ $i ]['required_types'] = rgar( $choice, 'field_type', false ) ? $choice['field_type'] : rgar( $choice, 'required_types', array() ); $this->key_field['choices'][ $i ]['excluded_types'] = rgar( $choice, 'exclude_field_types', false ) ? $choice['exclude_field_types'] : rgar( $choice, 'excluded_types', array() ); // Remove legacy properties. unset( $this->key_field['choices'][ $i ]['field_type'], $this->key_field['choices'][ $i ]['exclude_field_types'] ); } // Remove field map property. unset( $props['field_map'] ); parent::__construct( $props, $settings ); } // # HELPER METHODS ------------------------------------------------------------------------------------------------ /** * Prepare field value for Field Map. * * @since 2.5 * * @return array */ public function get_value() { // Get existing value. $existing_value = parent::get_value(); // If existing value is array, use it. if ( is_array( $existing_value ) ) { return $existing_value; } // Initialize return array. $value = array(); // Loop through choices, get keys and values from main settings. foreach ( $this->key_field['choices'] as $choice ) { // Add choice to return array. $value[] = array( 'key' => $choice['name'], 'custom_key' => '', 'value' => $this->settings->get_value( sprintf( '%s_%s', $this->name, $choice['name'] ) ), 'custom_value' => '', ); } return $value; } /** * Modify field value for legacy setting. * * @since 2.5 * * @param array $field_values * @param array|bool|string $field_value * * @return array */ public function save_field( $field_values, $field_value ) { // If field has a save callback, use parent method. if ( is_callable( $this->save_callback ) ) { return parent::save_field( $field_values, $field_value ); } // Decode field value. $field_value = GFCommon::maybe_decode_json( $field_value ); // Loop through map, save to field values. foreach ( $field_value as $mapping ) { $field_name = sprintf( '%s_%s', $this->name, $mapping['key'] ); $field_values[ $field_name ] = $mapping['value']; } // Remove main mapping. unset( $field_values[ $this->name ] ); return $field_values; } } Fields::register( 'field_map', '\Gravity_Forms\Gravity_Forms\Settings\Fields\Field_Map' );