class-taxonomy-fields.php 1.97 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
<?php
/**
 * @package WPSEO\Admin
 */

/**
 * Class WPSEO_Taxonomy_Tab
 *
 * Contains the basics for each class extending this one.
 */
abstract class WPSEO_Taxonomy_Fields {

	/**
	 * The Yoast SEO configuration from the WPSEO_Options
	 *
	 * @var array
	 */
	protected $options = array();

	/**
	 * The current term data
	 *
	 * @var stdClass
	 */
	protected $term;

	/**
	 * Setting the class properties
	 *
	 * @param stdClass $term    The current term.
	 * @param array    $options The options.
	 */
	public function __construct( $term, array $options = null ) {
		$this->term = $term;
		if ( $options !== null ) {
			$this->options = $options;
		}
		else {
			$this->options = WPSEO_Options::get_options( array(
				'wpseo_titles',
				'wpseo_internallinks',
				'wpseo_social',
			) );
		}
	}

	/**
	 * This method should return the fields
	 *
	 * @return array
	 */
	abstract public function get();

	/**
	 * Returns array with the field data
	 *
	 * @param string       $label       The label displayed before the field.
	 * @param string       $description Description which will explain the field.
	 * @param string       $type        The field type, for example: input, select.
	 * @param string|array $options     Optional. Array with additional options.
	 * @param bool         $hide        Should the field be hidden.
	 *
	 * @return array
	 */
	protected function get_field_config( $label, $description, $type = 'text', $options = '', $hide = false ) {
		return array(
			'label'       => $label,
			'description' => $description,
			'type'        => $type,
			'options'     => $options,
			'hide'        => $hide,
		);
	}

	/**
	 * Filter the hidden fields.
	 *
	 * @param array $fields Array with the form fields that has will be filtered.
	 *
	 * @return array
	 */
	protected function filter_hidden_fields( array $fields ) {
		foreach ( $fields as $field_name => $field_options ) {
			if ( ! empty( $field_options['hide'] ) ) {
				unset( $fields[ $field_name ] );
			}
		}

		return $fields;
	}
}