File: /home/globfdxw/www/wp-content/plugins/kirki/includes/Ajax/Collection.php
<?php
/**
* Dynamic content/Collection API
*
* @package kirki
*/
namespace Kirki\Ajax;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
use Kirki\HelperFunctions;
/**
* Collection API Class
*/
class Collection {
/**
* Get collection return api response
*
* @return void wpjson response
*/
public static function get_collection() {
//phpcs:ignore WordPress.Security.NonceVerification.Missing,WordPress.Security.NonceVerification.Recommended,WordPress.Security.ValidatedSanitizedInput.MissingUnslash,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
$collection_type = HelperFunctions::sanitize_text( isset( $_GET['collectionType'] ) ? $_GET['collectionType'] : null );
$name = HelperFunctions::sanitize_text( isset( $_GET['name'] ) ? $_GET['name'] : null );
$taxonomy = HelperFunctions::sanitize_text( isset( $_GET['taxonomy'] ) ? $_GET['taxonomy'] : null );
//phpcs:ignore WordPress.Security.NonceVerification.Missing,WordPress.Security.NonceVerification.Recommended,WordPress.Security.ValidatedSanitizedInput.MissingUnslash,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
$sorting_param = HelperFunctions::sanitize_text( isset( $_GET['sorting'] ) ? $_GET['sorting'] : null );
//phpcs:ignore WordPress.Security.NonceVerification.Missing,WordPress.Security.NonceVerification.Recommended,WordPress.Security.ValidatedSanitizedInput.MissingUnslash,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
$filter_param = HelperFunctions::sanitize_text( isset( $_GET['filters'] ) ? $_GET['filters'] : null );
$inherit = HelperFunctions::sanitize_text( $_GET['inherit'] ?? false );
$related = HelperFunctions::sanitize_text( $_GET['related'] ?? false );
$post_parent = HelperFunctions::sanitize_text( $_GET['post_parent'] ?? null );
$related_post_parent = HelperFunctions::sanitize_text( $_GET['related_post_parent'] ?? false );
$item_per_page = HelperFunctions::sanitize_text( $_GET['items'] ?? 3 );
$current_page = HelperFunctions::sanitize_text( $_GET['current_page'] ?? 1 );
$offset = HelperFunctions::sanitize_text( $_GET['offset'] ?? 0 );
$context_param = HelperFunctions::sanitize_text( isset( $_GET['context'] ) ? $_GET['context'] : null );
$query = HelperFunctions::sanitize_text( isset( $_GET['q'] ) ? $_GET['q'] : '' );
$sorting = null;
$filters = null;
$context = null;
// handle bool
$inherit = $inherit === 'true' ? true : false;
$related = $related === 'true' ? true : false;
if ( isset( $sorting_param ) ) {
$sorting = json_decode( stripslashes( $sorting_param ), true );
}
if ( isset( $filter_param ) ) {
$filters = json_decode( stripslashes( $filter_param ), true );
}
if ( isset( $context_param ) ) {
$context = json_decode( stripslashes( $context_param ), true );
}
$args = array(
'name' => $name,
'sorting' => $sorting,
'filters' => $filters,
'inherit' => $inherit,
'post_parent' => $post_parent,
'post_status' => 'any',
'related' => $related,
'related_post_parent' => $related_post_parent,
'item_per_page' => $item_per_page,
'current_page' => $current_page,
'offset' => $offset,
'context' => $context,
'q' => $query,
);
if ( $collection_type === 'posts' ) {
$posts = HelperFunctions::get_posts( $args );
wp_send_json( $posts );
} elseif ( $collection_type === 'users' ) {
$users = Users::get_users( $args );
wp_send_json( $users );
} elseif ( $collection_type === 'terms' ) {
// $taxonomies = get_the_terms( $post_parent, $taxonomy );
$args = array(
'taxonomy' => $taxonomy,
'hide_empty' => false,
'inherit' => $inherit,
'post_parent' => $post_parent,
'item_per_page' => $item_per_page,
'current_page' => $current_page,
'offset' => $offset,
);
$terms = HelperFunctions::get_terms( $args );
wp_send_json( $terms );
} else {
$collection = apply_filters( 'kirki_collection_' . $collection_type, false, $args );
wp_send_json( $collection );
}
}
public static function get_external_collection_options() {
$collection_type = HelperFunctions::sanitize_text( isset( $_GET['collectionType'] ) ? $_GET['collectionType'] : null );
$type = HelperFunctions::sanitize_text( isset( $_GET['type'] ) ? $_GET['type'] : null );
$args = array(
'type' => $type,
'collectionType' => $collection_type,
);
$collection = array();
$collection = apply_filters( 'kirki_external_collection_options', $collection, $args );
wp_send_json( $collection );
}
public static function get_external_collection_item_type() {
$type = HelperFunctions::sanitize_text( isset( $_GET['type'] ) ? $_GET['type'] : null );
$item_type = 'post';
$item_type = apply_filters( 'kirki_external_collection_item_type', $item_type, $type );
wp_send_json( $item_type );
}
}