File: /home/honghock/www/wp-content/plugins/ninja-tables/app/Http/Controllers/WPPostsController.php
<?php
namespace NinjaTables\App\Http\Controllers;
use NinjaTables\Framework\Request\Request;
use NinjaTables\Framework\Support\Arr;
class WPPostsController extends Controller
{
public function getPostTypes(Request $request)
{
global $wpdb;
$postStatuses = ninjaTablesGetPostStatuses();
$post_fields = $wpdb->get_col("DESC {$wpdb->prefix}posts");
$publicPostTypes = get_post_types(array(
'public' => true
));
$excludedTypes = $this->app->applyFilters('ninja_table_excluded_post_types', array(
'ninja-table',
'revision',
'nav_menu_item',
'oembed_cache',
'user_request',
'acf-field-group',
'acf-field'
));
$all_post_types = array_diff(get_post_types(), $excludedTypes);
$post_types = array(
'public' => array(),
'private' => array()
);
foreach ($all_post_types as $type) {
$taxonomies = get_object_taxonomies($type);
$taxonomies = array_combine($taxonomies, $taxonomies);
foreach ($taxonomies as $taxonomy) {
$taxonomies[$taxonomy] = get_terms([
'taxonomy' => $taxonomy,
'hide_empty' => false,
]);
}
$status = isset($publicPostTypes[$type]) ? 'public' : 'private';
$post_types[$status][$type] = array(
'status' => $status,
'taxonomies' => $taxonomies,
'fields' => array_map(function ($taxonomy) use ($type) {
return "{$type}.{$taxonomy}";
}, array_keys($taxonomies))
);
}
if ($post_types['private']) {
$post_types = array_merge($post_types['public'], $post_types['private']);
} else {
$post_types = $post_types['public'];
}
return $this->sendSuccess([
'data' => compact('post_fields', 'post_types', 'postStatuses')
], 200);
}
public function getPostTypesAuthor(Request $request)
{
$authors = array();
if (Arr::get($request->all(), 'post_types')) {
$postTypes = ninja_tables_sanitize_array(Arr::get($request->all(), 'post_types'));
if ($postTypes) {
global $wpdb;
$postTypes = implode("','", $postTypes);
$authors = $wpdb->get_results("SELECT {$wpdb->prefix}users.ID, {$wpdb->prefix}users.display_name FROM {$wpdb->prefix}posts INNER JOIN {$wpdb->prefix}users ON {$wpdb->prefix}users.ID = {$wpdb->prefix}posts.post_author WHERE {$wpdb->prefix}posts.post_type IN ('" . $postTypes . "') GROUP BY {$wpdb->prefix}posts.post_author");
}
}
return $this->sendSuccess([
'data' => [
'authors' => $authors
]
]);
}
}