You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
133 lines
2.9 KiB
133 lines
2.9 KiB
<?php |
|
/** |
|
* WPSEO plugin file. |
|
* |
|
* @package WPSEO\Admin |
|
*/ |
|
|
|
/** |
|
* Class representing a feature toggle. |
|
*/ |
|
class Yoast_Feature_Toggle { |
|
|
|
/** |
|
* Feature toggle identifier. |
|
* |
|
* @var string |
|
*/ |
|
protected $name = ''; |
|
|
|
/** |
|
* Name of the setting the feature toggle is associated with. |
|
* |
|
* @var string |
|
*/ |
|
protected $setting = ''; |
|
|
|
/** |
|
* Feature toggle label. |
|
* |
|
* @var string |
|
*/ |
|
protected $label = ''; |
|
|
|
/** |
|
* URL to learn more about the feature. |
|
* |
|
* @var string |
|
*/ |
|
protected $read_more_url = ''; |
|
|
|
/** |
|
* Label for the learn more link. |
|
* |
|
* @var string |
|
*/ |
|
protected $read_more_label = ''; |
|
|
|
/** |
|
* Additional help content for the feature. |
|
* |
|
* @var string |
|
*/ |
|
protected $extra = ''; |
|
|
|
/** |
|
* Value to specify the feature toggle order. |
|
* |
|
* @var string |
|
*/ |
|
protected $order = 100; |
|
|
|
/** |
|
* Constructor. |
|
* |
|
* Sets the feature toggle arguments. |
|
* |
|
* @param array $args { |
|
* Feature toggle arguments. |
|
* |
|
* @type string $name Required. Feature toggle identifier. |
|
* @type string $setting Required. Name of the setting the feature toggle is associated with. |
|
* @type string $label Required. Feature toggle label. |
|
* @type string $read_more_url URL to learn more about the feature. Default empty string. |
|
* @type string $read_more_label Label for the learn more link. Default empty string. |
|
* @type string $extra Additional help content for the feature. Default empty string. |
|
* @type int $order Value to specify the feature toggle order. A lower value indicates |
|
* a higher priority. Default 100. |
|
* } |
|
* |
|
* @throws InvalidArgumentException Thrown when a required argument is missing. |
|
*/ |
|
public function __construct( array $args ) { |
|
$required_keys = array( 'name', 'setting', 'label' ); |
|
|
|
foreach ( $required_keys as $key ) { |
|
if ( empty( $args[ $key ] ) ) { |
|
/* translators: %s: argument name */ |
|
throw new InvalidArgumentException( sprintf( __( '%s is a required feature toggle argument.', 'wordpress-seo' ), $key ) ); |
|
} |
|
} |
|
|
|
foreach ( $args as $key => $value ) { |
|
if ( property_exists( $this, $key ) ) { |
|
$this->$key = $value; |
|
} |
|
} |
|
} |
|
|
|
/** |
|
* Magic isset-er. |
|
* |
|
* @param string $key Key to check whether a value for it is set. |
|
* |
|
* @return bool True if set, false otherwise. |
|
*/ |
|
public function __isset( $key ) { |
|
return isset( $this->$key ); |
|
} |
|
|
|
/** |
|
* Magic getter. |
|
* |
|
* @param string $key Key to get the value for. |
|
* |
|
* @return mixed Value for the key, or null if not set. |
|
*/ |
|
public function __get( $key ) { |
|
if ( isset( $this->$key ) ) { |
|
return $this->$key; |
|
} |
|
|
|
return null; |
|
} |
|
|
|
/** |
|
* Checks whether the feature for this toggle is enabled. |
|
* |
|
* @return bool True if the feature is enabled, false otherwise. |
|
*/ |
|
public function is_enabled() { |
|
return (bool) WPSEO_Options::get( $this->setting ); |
|
} |
|
}
|
|
|