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.
152 lines
2.7 KiB
152 lines
2.7 KiB
<?php |
|
/** |
|
* WPSEO plugin file. |
|
* |
|
* @package WPSEO\Admin |
|
*/ |
|
|
|
/** |
|
* This class handles the data for the option where the Ryte data is stored. |
|
*/ |
|
class WPSEO_OnPage_Option { |
|
|
|
/** |
|
* Indicates the data is not fetched. |
|
* |
|
* @var int |
|
*/ |
|
const NOT_FETCHED = 99; |
|
|
|
/** |
|
* Indicates the option is indexable. |
|
* |
|
* @var int |
|
*/ |
|
const IS_INDEXABLE = 1; |
|
|
|
/** |
|
* Indicates the option is not indexable. |
|
* |
|
* @var int |
|
*/ |
|
const IS_NOT_INDEXABLE = 0; |
|
|
|
/** |
|
* Indicates the data could not be fetched. |
|
* |
|
* @var int |
|
*/ |
|
const CANNOT_FETCH = -1; |
|
|
|
/** |
|
* The name of the option where data will be stored. |
|
* |
|
* @var string |
|
*/ |
|
const OPTION_NAME = 'wpseo_onpage'; |
|
|
|
/** |
|
* The key of the status in the option. |
|
* |
|
* @var string |
|
*/ |
|
const STATUS = 'status'; |
|
|
|
/** |
|
* The key of the last fetch date in the option. |
|
* |
|
* @var string |
|
*/ |
|
const LAST_FETCH = 'last_fetch'; |
|
|
|
/** |
|
* The limit for fetching the status manually. |
|
* |
|
* @var int |
|
*/ |
|
const FETCH_LIMIT = 15; |
|
|
|
/** |
|
* The Ryte option stored in the database. |
|
* |
|
* @var array |
|
*/ |
|
private $onpage_option; |
|
|
|
/** |
|
* Setting the object by setting the properties. |
|
*/ |
|
public function __construct() { |
|
$this->onpage_option = $this->get_option(); |
|
} |
|
|
|
/** |
|
* Getting the status from the option. |
|
* |
|
* @return string |
|
*/ |
|
public function get_status() { |
|
if ( array_key_exists( self::STATUS, $this->onpage_option ) ) { |
|
return $this->onpage_option[ self::STATUS ]; |
|
} |
|
|
|
return self::CANNOT_FETCH; |
|
} |
|
|
|
/** |
|
* Saving the status to the options. |
|
* |
|
* @param string $status The status to save. |
|
*/ |
|
public function set_status( $status ) { |
|
$this->onpage_option[ self::STATUS ] = $status; |
|
} |
|
|
|
/** |
|
* Saving the last fetch timestamp to the options. |
|
* |
|
* @param integer $timestamp Timestamp with the new value. |
|
*/ |
|
public function set_last_fetch( $timestamp ) { |
|
$this->onpage_option[ self::LAST_FETCH ] = $timestamp; |
|
} |
|
|
|
/** |
|
* Check if the last fetch is within the time of 60 minutes. |
|
* |
|
* @return bool |
|
*/ |
|
public function should_be_fetched() { |
|
return ( ( time() - $this->onpage_option[ self::LAST_FETCH ] ) > self::FETCH_LIMIT ); |
|
} |
|
|
|
/** |
|
* Saving the option with the current data. |
|
*/ |
|
public function save_option() { |
|
update_option( self::OPTION_NAME, $this->onpage_option ); |
|
} |
|
|
|
/** |
|
* Returns the value of the onpage_enabled status. |
|
* |
|
* @return bool |
|
*/ |
|
public function is_enabled() { |
|
return WPSEO_Options::get( 'onpage_indexability' ); |
|
} |
|
|
|
/** |
|
* Getting the option with the Ryte data. |
|
* |
|
* @return array |
|
*/ |
|
private function get_option() { |
|
$default = array( |
|
self::STATUS => self::NOT_FETCHED, |
|
self::LAST_FETCH => 0, |
|
); |
|
|
|
return get_option( self::OPTION_NAME, $default ); |
|
} |
|
}
|
|
|