199 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			199 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
/**
 | 
						|
 * WPSEO plugin file.
 | 
						|
 *
 | 
						|
 * @package WPSEO\XML_Sitemaps
 | 
						|
 */
 | 
						|
 | 
						|
/**
 | 
						|
 * Sitemap Cache Data object, manages sitemap data stored in cache.
 | 
						|
 */
 | 
						|
class WPSEO_Sitemap_Cache_Data implements Serializable, WPSEO_Sitemap_Cache_Data_Interface {
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Sitemap XML data.
 | 
						|
	 *
 | 
						|
	 * @var string
 | 
						|
	 */
 | 
						|
	private $sitemap = '';
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Status of the sitemap, usable or not.
 | 
						|
	 *
 | 
						|
	 * @var string
 | 
						|
	 */
 | 
						|
	private $status = self::UNKNOWN;
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Set the sitemap XML data
 | 
						|
	 *
 | 
						|
	 * @param string $sitemap XML Content of the sitemap.
 | 
						|
	 */
 | 
						|
	public function set_sitemap( $sitemap ) {
 | 
						|
 | 
						|
		if ( ! is_string( $sitemap ) ) {
 | 
						|
			$sitemap = '';
 | 
						|
		}
 | 
						|
 | 
						|
		$this->sitemap = $sitemap;
 | 
						|
 | 
						|
		/*
 | 
						|
		 * Empty sitemap is not usable.
 | 
						|
		 */
 | 
						|
		if ( ! empty( $sitemap ) ) {
 | 
						|
			$this->set_status( self::OK );
 | 
						|
		}
 | 
						|
		else {
 | 
						|
			$this->set_status( self::ERROR );
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Set the status of the sitemap, is it usable.
 | 
						|
	 *
 | 
						|
	 * @param bool|string $usable Is the sitemap usable or not.
 | 
						|
	 *
 | 
						|
	 * @return void
 | 
						|
	 */
 | 
						|
	public function set_status( $usable ) {
 | 
						|
 | 
						|
		if ( $usable === self::OK ) {
 | 
						|
			$this->status = self::OK;
 | 
						|
 | 
						|
			return;
 | 
						|
		}
 | 
						|
 | 
						|
		if ( $usable === self::ERROR ) {
 | 
						|
			$this->status  = self::ERROR;
 | 
						|
			$this->sitemap = '';
 | 
						|
 | 
						|
			return;
 | 
						|
		}
 | 
						|
 | 
						|
		$this->status = self::UNKNOWN;
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Is the sitemap usable.
 | 
						|
	 *
 | 
						|
	 * @return bool True if usable, False if bad or unknown.
 | 
						|
	 */
 | 
						|
	public function is_usable() {
 | 
						|
 | 
						|
		return $this->status === self::OK;
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Get the XML content of the sitemap.
 | 
						|
	 *
 | 
						|
	 * @return string The content of the sitemap.
 | 
						|
	 */
 | 
						|
	public function get_sitemap() {
 | 
						|
 | 
						|
		return $this->sitemap;
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Get the status of the sitemap.
 | 
						|
	 *
 | 
						|
	 * @return string Status of the sitemap, 'ok'/'error'/'unknown'.
 | 
						|
	 */
 | 
						|
	public function get_status() {
 | 
						|
 | 
						|
		return $this->status;
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * String representation of object.
 | 
						|
	 *
 | 
						|
	 * {@internal This magic method is only "magic" as of PHP 7.4 in which the magic method was introduced.}
 | 
						|
	 *
 | 
						|
	 * @link https://www.php.net/language.oop5.magic#object.serialize
 | 
						|
	 * @link https://wiki.php.net/rfc/custom_object_serialization
 | 
						|
	 *
 | 
						|
	 * @since 17.8.0
 | 
						|
	 *
 | 
						|
	 * @return array The data to be serialized.
 | 
						|
	 */
 | 
						|
	public function __serialize() { // phpcs:ignore PHPCompatibility.FunctionNameRestrictions.NewMagicMethods.__serializeFound
 | 
						|
 | 
						|
		$data = [
 | 
						|
			'status' => $this->status,
 | 
						|
			'xml'    => $this->sitemap,
 | 
						|
		];
 | 
						|
 | 
						|
		return $data;
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Constructs the object.
 | 
						|
	 *
 | 
						|
	 * {@internal This magic method is only "magic" as of PHP 7.4 in which the magic method was introduced.}
 | 
						|
	 *
 | 
						|
	 * @link https://www.php.net/language.oop5.magic#object.serialize
 | 
						|
	 * @link https://wiki.php.net/rfc/custom_object_serialization
 | 
						|
	 *
 | 
						|
	 * @since 17.8.0
 | 
						|
	 *
 | 
						|
	 * @param array $data The unserialized data to use to (re)construct the object.
 | 
						|
	 *
 | 
						|
	 * @return void
 | 
						|
	 */
 | 
						|
	public function __unserialize( $data ) { // phpcs:ignore PHPCompatibility.FunctionNameRestrictions.NewMagicMethods.__unserializeFound
 | 
						|
 | 
						|
		$this->set_sitemap( $data['xml'] );
 | 
						|
		$this->set_status( $data['status'] );
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * String representation of object.
 | 
						|
	 *
 | 
						|
	 * {@internal The magic methods take precedence over the Serializable interface.
 | 
						|
	 * This means that in practice, this method will now only be called on PHP < 7.4.
 | 
						|
	 * For PHP 7.4 and higher, the magic methods will be used instead.}
 | 
						|
	 *
 | 
						|
	 * {@internal The Serializable interface is being phased out, in favour of the magic methods.
 | 
						|
	 * This method should be deprecated and removed and the class should no longer
 | 
						|
	 * implement the `Serializable` interface.
 | 
						|
	 * This change, however, can't be made until the minimum PHP version goes up to PHP 7.4 or higher.}
 | 
						|
	 *
 | 
						|
	 * @link http://php.net/manual/en/serializable.serialize.php
 | 
						|
	 * @link https://wiki.php.net/rfc/phase_out_serializable
 | 
						|
	 *
 | 
						|
	 * @since 5.1.0
 | 
						|
	 *
 | 
						|
	 * @return string The string representation of the object or null in C-format.
 | 
						|
	 */
 | 
						|
	public function serialize() {
 | 
						|
 | 
						|
		return serialize( $this->__serialize() );
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Constructs the object.
 | 
						|
	 *
 | 
						|
	 * {@internal The magic methods take precedence over the Serializable interface.
 | 
						|
	 * This means that in practice, this method will now only be called on PHP < 7.4.
 | 
						|
	 * For PHP 7.4 and higher, the magic methods will be used instead.}
 | 
						|
	 *
 | 
						|
	 * {@internal The Serializable interface is being phased out, in favour of the magic methods.
 | 
						|
	 * This method should be deprecated and removed and the class should no longer
 | 
						|
	 * implement the `Serializable` interface.
 | 
						|
	 * This change, however, can't be made until the minimum PHP version goes up to PHP 7.4 or higher.}
 | 
						|
	 *
 | 
						|
	 * @link http://php.net/manual/en/serializable.unserialize.php
 | 
						|
	 * @link https://wiki.php.net/rfc/phase_out_serializable
 | 
						|
	 *
 | 
						|
	 * @since 5.1.0
 | 
						|
	 *
 | 
						|
	 * @param string $data The string representation of the object in C or O-format.
 | 
						|
	 *
 | 
						|
	 * @return void
 | 
						|
	 */
 | 
						|
	public function unserialize( $data ) {
 | 
						|
 | 
						|
		$data = unserialize( $data );
 | 
						|
		$this->__unserialize( $data );
 | 
						|
	}
 | 
						|
}
 |