Your IP : 216.73.216.95


Current Path : /var/www/ooareogundevinitiative/wp-content/plugins/give/src/FormAPI/Form/
Upload File :
Current File : /var/www/ooareogundevinitiative/wp-content/plugins/give/src/FormAPI/Form/Field.php

<?php
namespace Give\FormAPI\Form;

use InvalidArgumentException;

abstract class Field {

	/**
	 * Field id
	 *
	 * @since 2.7.0
	 * @var string
	 */
	public $id;

	/**
	 * Field name
	 *
	 * @since 2.7.0
	 * @var string
	 */
	public $name;

	/**
	 * Field description
	 *
	 * @since 2.7.0
	 * @var string
	 */
	public $desc = '';

	/**
	 * Field type
	 *
	 * @since 2.7.0
	 * @var string
	 */
	public $type;

	/**
	 * Field style
	 *
	 * @since 2.7.0
	 * @var string
	 */
	public $style = '';

	/**
	 * Field wrapper class.
	 *
	 * @since 2.7.0
	 * @var string
	 */
	public $wrapperClass = '';

	/**
	 * Field value.
	 *
	 * @since 2.7.0
	 * @var string
	 */
	public $value = null;

	/**
	 * Field default value.
	 *
	 * @since 2.7.0
	 * @var string
	 */
	public $defaultValue = null;

	/**
	 * Field attribues.
	 *
	 * @since 2.7.0
	 * @var string
	 */
	public $attributes = [];

	/**
	 * Parse field arguments
	 *
	 * @since 2.7.0
	 * @param array $array
	 * @return mixed
	 */
	public function parse( $array ) {
		$this->id           = $array['id'];
		$this->name         = $array['name'];
		$this->type         = $array['type'];
		$this->desc         = isset( $array['desc'] ) ? $array['desc'] : '';
		$this->style        = isset( $array['style'] ) ? $array['style'] : '';
		$this->wrapperClass = isset( $array['wrapper_class'] ) ? $array['wrapper_class'] : '';
		$this->defaultValue = isset( $array['default'] ) ? $array['default'] : null;
		$this->value        = isset( $array['value'] ) ? $array['value'] : null;
		$this->attributes   = isset( $array['attributes'] ) ? $array['attributes'] : [];
	}


	/**
	 * Get Field object.
	 *
	 * @since 2.7.0
	 * @param array $array
	 *
	 * @return static
	 */
	public static function fromArray( $array ) {
		$field = new static();

		$field->validate( $array );
		$field->parse( $array );

		return $field;
	}


	/**
	 * Validate field arguments
	 *
	 * @since 2.7.0
	 * @param $array
	 */
	public function validate( $array ) {
		$required = [ 'id', 'name', 'type' ];
		$array    = array_filter( $array ); // Remove empty values.

		if ( array_diff( $required, array_keys( $array ) ) ) {
			throw new InvalidArgumentException( __( 'To create a TextField object, please provide valid id, name and type.', 'give' ) );
		}
	}


	/**
	 * Convert field object to array.
	 *
	 * @since 2.7.0
	 * @return array
	 */
	public function toArray() {
		return [
			'id'            => $this->id,
			'name'          => $this->name,
			'type'          => $this->type,
			'desc'          => $this->desc,
			'style'         => $this->style,
			'wrapper_class' => $this->wrapperClass,
			'value'         => $this->value,
			'default'       => $this->defaultValue,
			'attributes'    => $this->attributes,
		];
	}
}