Phase 5: Content and SEO - Yoast SEO, Schema.org markup, Open Graph, favicon support, XML sitemap

This commit is contained in:
Hanson.xyz Dev
2025-11-28 17:10:24 -06:00
parent c4f29a3152
commit 91de533da4
1552 changed files with 171432 additions and 7 deletions
@@ -0,0 +1,30 @@
<?php
namespace Yoast\WP\SEO\AI_Free_Sparks\Application;
/**
* Interface Consent_Handler_Interface
*
* This interface defines the methods for handling user consent.
*/
interface Free_Sparks_Handler_Interface {
/**
* Retrieves the timestamp.
*
* @param string $format The format in which to return the timestamp. Defaults to 'Y-m-d H:i:s'.
*
* @return ?string The timestamp when the user started using free sparks, or null if not set.
*/
public function get( string $format = 'Y-m-d H:i:s' ): ?string;
/**
* Registers the starting of the free sparks.
*
* @param ?int $timestamp The timestamp when the user started using free sparks. If null, the current time will be
* used.
*
* @return bool True if the operation was successful, false otherwise.
*/
public function start( ?int $timestamp = null ): bool;
}
@@ -0,0 +1,62 @@
<?php
namespace Yoast\WP\SEO\AI_Free_Sparks\Application;
use Yoast\WP\SEO\Helpers\Options_Helper;
/**
* Handles the free sparks started on timestamp.
*/
class Free_Sparks_Handler implements Free_Sparks_Handler_Interface {
/**
* The key used to store the timestamp when the user started using free sparks.
*
* @var string
*/
public const OPTION_KEY = 'ai_free_sparks_started_on';
/**
* Holds the options helper instance.
*
* @var Options_Helper
*/
private $options_helper;
/**
* Class constructor.
*
* @param Options_Helper $options_helper The options helper.
*/
public function __construct( Options_Helper $options_helper ) {
$this->options_helper = $options_helper;
}
/**
* Retrieves the timestamp.
*
* @param string $format The format in which to return the timestamp. Defaults to 'Y-m-d H:i:s'.
*
* @return ?string The timestamp when the user started using free sparks, or null if not set.
*/
public function get( string $format = 'Y-m-d H:i:s' ): ?string {
$timestamp = $this->options_helper->get( self::OPTION_KEY, null );
if ( $timestamp === null ) {
return null;
}
return \gmdate( $format, (int) $timestamp );
}
/**
* Registers the starting of the free sparks.
*
* @param ?int $timestamp The timestamp when the user started using free sparks. If null, the current time will be
* used.
*
* @return bool True if the operation was successful, false otherwise.
*/
public function start( ?int $timestamp = null ): bool {
return (bool) $this->options_helper->set( self::OPTION_KEY, ( $timestamp === null ) ? \time() : $timestamp, 'wpseo' );
}
}