Sindbad~EG File Manager
<?php
/**
* Base Model for versioned Post objects.
*
* @author Code Atlantic
* @package PopupMaker
* @copyright (c) 2024, Code Atlantic LLC.
*/
namespace PopupMaker\Base\Model;
use WP_Post;
defined( 'ABSPATH' ) || exit;
/**
* Class Post
*
* @since 1.21.0
*/
class Post {
/**
* Current model version.
*
* @var int
*/
const MODEL_VERSION = 1;
/**
* Post object.
*
* @var \WP_Post
*/
private $post;
/**
* Call To Action id.
*
* @var int
*/
public $ID = 0;
/**
* Call To Action slug.
*
* @var string
*/
public $slug = '';
/**
* Call To Action label.
*
* @var string
*/
public $title = '';
/**
* Call To Action status.
*
* @var string
*/
public $status = '';
/**
* Data version.
*
* @var int
*/
public $data_version = 0;
/**
* Build a post.
*
* @param WP_Post $post Post data.
*/
public function __construct( $post ) {
$this->post = $post;
$properties = [
'ID' => $post->ID,
'slug' => $post->post_name,
'title' => $post->post_title,
'status' => $post->post_status,
];
foreach ( $properties as $key => $value ) {
$this->$key = $value;
}
$this->data_version = get_post_meta( $post->ID, 'data_version', true );
if ( ! $this->data_version ) {
$this->data_version = self::MODEL_VERSION;
update_post_meta( $post->ID, 'data_version', self::MODEL_VERSION );
}
}
/**
* Get edit link.
*
* @return string Empty string if user cannot edit post, otherwise admin edit URL.
*/
public function get_edit_link() {
if ( current_user_can( 'edit_post', $this->ID ) ) {
return admin_url( "post.php?action=edit&post_type={$this->post->post_type}&post=" . absint( $this->ID ) );
}
return '';
}
/**
* Get post meta value.
*
* @param string $key Meta key.
* @param bool $single Whether to return a single value.
*
* @return ($single is true ? mixed : mixed[])
*/
public function get_meta( $key, $single = true ) {
return get_post_meta( $this->ID, $key, $single );
}
/**
* Update post meta value.
*
* @param string $key Meta key.
* @param mixed $value Meta value.
*
* @return int|bool Meta ID on success, true on update, false on failure.
*/
public function update_meta( $key, $value ) {
return update_post_meta( $this->ID, $key, $value );
}
/**
* Convert this call to action to an array.
*
* @return array{
* ID: int,
* slug: string,
* title: string,
* status: string
* }
*/
public function to_array() {
return [
'ID' => $this->ID,
'slug' => $this->slug,
'title' => $this->title,
'status' => $this->status,
];
}
}
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists