Skip to content
Snippets Groups Projects
Select Git revision
  • ff8833891b6e7ba70d6c42e9961757fc2ec0b58c
  • master default protected
  • 1.1.0
  • 1.0.2
  • 1.0.1
  • 1.0.0
  • 1.0.0-beta8
  • 1.0.0-beta7
  • 1.0.0-beta6
  • 1.0.0-beta5
  • 1.0.0-beta4
  • 1.0.0-beta3
  • 1.0.0-beta2
  • 1.0.0-beta1
14 results

ShippingMethodRenderSettingsTrait.php

Blame
  • ShippingMethodRenderSettingsTrait.php 2.14 KiB
    <?php
    /**
     * Render settings HTML.
     *
     * @package WpDesk\WooCommerce\ShippingMethod\Fields\SenderAddress
     */
    
    namespace WpDesk\WooCommerce\ShippingMethod\Fields\SenderAddress;
    
    /**
     * Can render settings html.
     * For use in shipping method when sender_addresses field is used in shipping method settings.
     */
    trait ShippingMethodRenderSettingsTrait {
    
    	/**
    	 * Prefix key for settings.
    	 *
    	 * @param  string $key Field key.
    	 * @return string
    	 */
    	public function get_field_key( $key ) {
    		/** @var \WC_Shipping_Method $shipping_method */
    		$shipping_method = $this;
    		return $shipping_method->plugin_id . $shipping_method->id . '_' . $key;
    	}
    
    	/**
    	 * Get field params
    	 *
    	 * @param string $key Field key.
    	 * @param array $data Data.
    	 *
    	 * @return array
    	 */
    	private function get_field_params( $key, $data ) {
    		$field_key = $this->get_field_key( $key );
    		$defaults  = [
    			'field_key'         => $field_key,
    			'title'             => '',
    			'disabled'          => false,
    			'class'             => '',
    			'css'               => '',
    			'placeholder'       => '',
    			'type'              => 'text',
    			'desc_tip'          => false,
    			'description'       => '',
    			'custom_attributes' => [],
    			'value'             => '',
    		];
    		$data      = wp_parse_args( $data, $defaults );
    
    		return $data;
    	}
    
    	/**
    	 * Generates settings HTML.
    	 *
    	 * @param string $key .
    	 * @param array $data .
    	 *
    	 * @return string
    	 */
    	public function generate_sender_addresses_html( $key, $data ) {
    		/** @var \WC_Shipping_Method $shipping_method */
    		$shipping_method = $this;
    		$data['value'] = $shipping_method->get_option( $key );
    		$data = $this->get_field_params( $key, $data );
    		$settings_field = new SettingsField( $data['field_key'] );
    		ob_start();
    		$settings_field->render( $data['title'], '', $data['value'], null );
    		return ob_get_clean();
    	}
    
    	/**
    	 * Validate field.
    	 *
    	 * Convert field to json.
    	 *
    	 * @param  string $key Field key.
    	 * @param  string $value Posted Value.
    	 * @return string
    	 */
    	public function validate_sender_addresses_field( $key, $value ) {
    		$settings_field = new SettingsField( $key );
    		return $settings_field->get_field_posted_value_as_json( $value );
    	}
    
    }