class-field.php 2.42 KB
Newer Older
imac's avatar
imac committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
<?php
/**
 * @package WPSEO\Admin\ConfigurationUI
 */

/**
 * Class WPSEO_Config_Field
 */
class WPSEO_Config_Field {
	/** @var string Field name */
	protected $field;

	/** @var string Component to use */
	protected $component;

	/** @var array Properties of this field */
	protected $properties = array();

	/** @var array Field requirements */
	protected $requires = array();

	/** @var array|mixed Value of this field */
	protected $data = array();

	/**
	 * WPSEO_Config_Field constructor.
	 *
	 * @param string $field     The field name.
	 * @param string $component The component to use.
	 */
	public function __construct( $field, $component ) {
		$this->field     = $field;
		$this->component = $component;
	}

	/**
	 * Get the identifier
	 *
	 * @return string
	 */
	public function get_identifier() {
		return $this->field;
	}

	/**
	 * Get the component
	 *
	 * @return string
	 */
	public function get_component() {
		return $this->component;
	}

	/**
	 * Set a property value
	 *
	 * @param string $name  Property to set.
	 * @param mixed  $value Value to apply.
	 */
	public function set_property( $name, $value ) {
		$this->properties[ $name ] = $value;
	}

	/**
	 * Get all the properties
	 *
	 * @return array
	 */
	public function get_properties() {
		return $this->properties;
	}

	/**
	 * Get the data
	 *
	 * @return mixed
	 */
	public function get_data() {
		return $this->data;
	}

	/**
	 * Array representation of this object.
	 *
	 * @return array
	 */
	public function to_array() {
		$output = array(
			'componentName' => $this->get_component(),
		);

		$properties = $this->get_properties();
		if ( $properties ) {
			$output['properties'] = $properties;
		}

		$requires = $this->get_requires();
		if ( ! empty( $requires ) ) {
			$output['requires'] = $requires;
		}

		return $output;
	}

	/**
	 * Set the adapter to use
	 *
	 * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on.
	 */
	public function set_adapter( WPSEO_Configuration_Options_Adapter $adapter ) {
	}

	/**
	 * Requires another field to have a certain value.
	 *
	 * @param string $field Field to check for a certain value.
	 * @param mixed  $value Value of the field.
	 */
	public function set_requires( $field, $value ) {
		$this->requires = array(
			'field' => $field,
			'value' => $value,
		);
	}

	/**
	 * Get the required field settings (if present)
	 *
	 * @return array
	 */
	public function get_requires() {
		return $this->requires;
	}
}