| Server IP : 162.214.67.83 / Your IP : 216.73.217.9 Web Server : Apache System : Linux dedi-13542965.clustter.com.br 5.14.0-687.20.1.el9_8.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Jun 30 06:22:49 EDT 2026 x86_64 User : pjacortinas ( 1096) PHP Version : 8.3.32 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/pjacortinas/www/wp-content/plugins/wordpress-seo/src/ai/content-planner/domain/ |
Upload File : |
<?php
// phpcs:disable Yoast.NamingConventions.NamespaceName.TooLong -- Needed in the folder structure.
namespace Yoast\WP\SEO\AI\Content_Planner\Domain;
/**
* Value object for a Post.
*/
class Post {
/**
* The title.
*
* @var string
*/
private $title;
/**
* The description.
*
* @var string
*/
private $description;
/**
* The category.
*
* @var Category|null
*/
private $category;
/**
* The primary focus keyword.
*
* @var string
*/
private $primary_focus_keyword;
/**
* Whether the post is cornerstone content.
*
* @var bool
*/
private $is_cornerstone;
/**
* The last modified date.
*
* @var string
*/
private $last_modified;
/**
* The schema article type.
*
* @var string
*/
private $schema_article_type;
/**
* The constructor.
*
* @param string $title The title.
* @param string $description The description.
* @param ?Category $category The category, or null if the post has no category.
* @param string $primary_focus_keyword The primary focus keyword.
* @param int $is_cornerstone Whether the post is cornerstone content.
* @param string $last_modified The last modified date.
* @param ?string $schema_article_type The schema article type.
*/
public function __construct(
string $title,
string $description,
?Category $category,
string $primary_focus_keyword,
int $is_cornerstone,
string $last_modified,
?string $schema_article_type
) {
$this->title = $title;
$this->description = $description;
$this->category = $category;
$this->primary_focus_keyword = $primary_focus_keyword;
$this->is_cornerstone = $is_cornerstone;
$this->last_modified = $last_modified;
$this->schema_article_type = $schema_article_type;
}
/**
* Returns this object in array format.
*
* @return array<string, string|bool|array<string, int>> The post as an array.
*/
public function to_array(): array {
$data = [
'title' => $this->title,
'description' => $this->description,
'category' => isset( $this->category ) ? $this->category->to_array() : null,
'primary_focus_keyword' => $this->primary_focus_keyword,
'is_cornerstone' => $this->is_cornerstone,
'last_modified' => $this->last_modified,
];
if ( isset( $this->schema_article_type ) ) {
$data['schema_article_type'] = $this->schema_article_type;
}
return $data;
}
/**
* Returns the minimal array representation suitable for the REST response.
*
* Only includes fields the frontend round-trips into the get_outline call.
* Excludes editor-only metadata (focus keyphrase, cornerstone, schema type)
* that must not cross the REST boundary.
*
* @return array<string, string> The minimal post payload.
*/
public function to_minimal_array(): array {
return [
'title' => $this->title,
'description' => $this->description,
];
}
}