| Server IP : 104.26.5.103 / Your IP : 216.73.216.4 Web Server : nginx/1.27.1 System : Linux in-5 5.15.0-143-generic #153-Ubuntu SMP Fri Jun 13 19:10:45 UTC 2025 x86_64 User : arabianexpress ( 1872) PHP Version : 8.0.30 Disable Function : exec,passthru,shell_exec,system,proc_open,popen,parse_ini_file,show_source MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /storage/v9321/leapdubai/public_html/wp-content/plugins/kirki/app/Supports/ |
Upload File : |
<?php
namespace Kirki\App\Supports;
use Kirki\App\Models\Post;
use Kirki\App\Models\PostMeta;
use function Kirki\Framework\with_prefix;
/**
* Pure, reusable helpers for the Content Manager.
*
* This class holds only side-effect-free helpers (constants, key/string
* builders and the slug check). All fetching/checking/saving business logic
* lives in the service layer, and reference-table access goes through the
* {@see \Kirki\App\Models\Reference} model.
*/
class ContentManager
{
public const RESERVED_SLUG_WORDS = ['attachment', 'author', 'category', 'comment', 'feed', 'page', 'post', 'tag', 'profile', 'index'];
/**
* Get available custom fields for a collection.
*
* @param int $collection_id
* @return array
*/
public static function get_available_custom_fields(int $collection_id)
{
$fields = PostMeta::where('post_id', $collection_id)
->where('meta_key', with_prefix('cm_fields'))
->first();
if (empty($fields)) {
return [];
}
return $fields->meta_value ? $fields->meta_value : [];
}
/**
* Validate a post slug against reserved words and WordPress rules.
*
* @param int $post_id
* @param string $post_type
* @param string $post_name
* @return bool
*/
public static function validate_slug(int $post_id, string $post_type, string $post_name)
{
if (in_array($post_name, static::RESERVED_SLUG_WORDS, true)) {
return false;
}
$post_query = Post::where('post_type', $post_type)
->where('post_name', $post_name);
if (!empty($post_id)) {
$post_query->where('ID', '!=', $post_id);
}
$post = $post_query->first();
return empty($post);
}
/**
* Build the child post type value for a parent collection.
*
* @param int $post_parent
* @return string
*/
public static function get_child_post_post_type_value($post_parent)
{
return with_prefix('cm_' . $post_parent);
}
/**
* Build the child post meta key for a parent collection field.
*
* @param int $post_parent
* @param string $field_id
* @return string
*/
public static function get_child_post_meta_key_using_field_id($post_parent, $field_id)
{
return with_prefix('cm_field_' . $post_parent . '_' . $field_id);
}
}