153 lines
2.7 KiB
PHP
153 lines
2.7 KiB
PHP
<?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 = [
|
|
self::STATUS => self::NOT_FETCHED,
|
|
self::LAST_FETCH => 0,
|
|
];
|
|
|
|
return get_option( self::OPTION_NAME, $default );
|
|
}
|
|
}
|