first commit
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace Elementor\Modules\AtomicWidgets\Query;
|
||||
|
||||
use Elementor\Modules\WpRest\Base\Query as Query_Base;
|
||||
use Elementor\Modules\WpRest\Classes\Post_Query;
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly.
|
||||
}
|
||||
|
||||
class Post_Query_Builder extends Query_Builder_Base {
|
||||
public function build(): array {
|
||||
$config = $this->config;
|
||||
|
||||
$params = Post_Query::build_query_params( [
|
||||
Post_Query::KEYS_CONVERSION_MAP_KEY => $config[ Query_Base::KEYS_CONVERSION_MAP_KEY ] ?? null,
|
||||
Post_Query::INCLUDED_TYPE_KEY => $config[ Query_Base::INCLUDED_TYPE_KEY ] ?? null,
|
||||
Post_Query::EXCLUDED_TYPE_KEY => $config[ Query_Base::EXCLUDED_TYPE_KEY ] ?? null,
|
||||
Post_Query::META_QUERY_KEY => $config[ Query_Base::META_QUERY_KEY ] ?? null,
|
||||
Post_Query::TAX_QUERY_KEY => $config[ Query_Base::TAX_QUERY_KEY ] ?? null,
|
||||
Post_Query::IS_PUBLIC_KEY => $config[ Query_Base::IS_PUBLIC_KEY ] ?? null,
|
||||
Post_Query::ITEMS_COUNT_KEY => $config[ Query_Base::ITEMS_COUNT_KEY ] ?? null,
|
||||
] );
|
||||
|
||||
$endpoint = $config['endpoint'] ?? Post_Query::ENDPOINT;
|
||||
$namespace = $config['namespace'] ?? Post_Query::NAMESPACE;
|
||||
$url = $namespace . '/' . $endpoint;
|
||||
|
||||
return [
|
||||
'params' => $params,
|
||||
'url' => $url,
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace Elementor\Modules\AtomicWidgets\Query;
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly.
|
||||
}
|
||||
|
||||
abstract class Query_Builder_Base {
|
||||
protected array $config;
|
||||
|
||||
public function __construct( array $config ) {
|
||||
$this->config = $config;
|
||||
}
|
||||
|
||||
abstract public function build(): array;
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace Elementor\Modules\AtomicWidgets\Query;
|
||||
|
||||
use Elementor\Modules\WpRest\Classes\Post_Query;
|
||||
use Elementor\Modules\WpRest\Classes\Term_Query;
|
||||
use Elementor\Modules\WpRest\Classes\User_Query;
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly.
|
||||
}
|
||||
|
||||
class Query_Builder_Factory {
|
||||
const ENDPOINT_KEY = 'endpoint';
|
||||
|
||||
private const BUILDERS = [
|
||||
Post_Query::ENDPOINT => Post_Query_Builder::class,
|
||||
Term_Query::ENDPOINT => Term_Query_Builder::class,
|
||||
User_Query::ENDPOINT => User_Query_Builder::class,
|
||||
];
|
||||
|
||||
public static function create( ?array $config = [] ): Query_Builder_Base {
|
||||
$endpoint = $config[ self::ENDPOINT_KEY ] ?? Post_Query::ENDPOINT;
|
||||
|
||||
$class = self::BUILDERS[ $endpoint ] ?? null;
|
||||
|
||||
if ( ! $class ) {
|
||||
throw new \Exception( 'Unsupported query type' );
|
||||
}
|
||||
|
||||
return new $class( $config ?? [] );
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace Elementor\Modules\AtomicWidgets\Query;
|
||||
|
||||
use Elementor\Modules\WpRest\Base\Query as Query_Base;
|
||||
use Elementor\Modules\WpRest\Classes\Term_Query;
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly.
|
||||
}
|
||||
|
||||
class Term_Query_Builder extends Query_Builder_Base {
|
||||
public function build(): array {
|
||||
$config = $this->config;
|
||||
|
||||
$params = Term_Query::build_query_params( [
|
||||
Term_Query::KEYS_CONVERSION_MAP_KEY => $config[ Query_Base::KEYS_CONVERSION_MAP_KEY ] ?? null,
|
||||
Term_Query::INCLUDED_TYPE_KEY => $config[ Query_Base::INCLUDED_TYPE_KEY ] ?? null,
|
||||
Term_Query::EXCLUDED_TYPE_KEY => $config[ Query_Base::EXCLUDED_TYPE_KEY ] ?? null,
|
||||
Term_Query::META_QUERY_KEY => $config[ Query_Base::META_QUERY_KEY ] ?? null,
|
||||
Term_Query::IS_PUBLIC_KEY => $config[ Query_Base::IS_PUBLIC_KEY ] ?? null,
|
||||
Term_Query::HIDE_EMPTY_KEY => $config[ Query_Base::HIDE_EMPTY_KEY ] ?? null,
|
||||
Term_Query::ITEMS_COUNT_KEY => $config[ Query_Base::ITEMS_COUNT_KEY ] ?? null,
|
||||
] );
|
||||
|
||||
$endpoint = $config['endpoint'] ?? Term_Query::ENDPOINT;
|
||||
$namespace = $config['namespace'] ?? Term_Query::NAMESPACE;
|
||||
$url = $namespace . '/' . $endpoint;
|
||||
|
||||
return [
|
||||
'params' => $params,
|
||||
'url' => $url,
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace Elementor\Modules\AtomicWidgets\Query;
|
||||
|
||||
use Elementor\Modules\WpRest\Base\Query as Query_Base;
|
||||
use Elementor\Modules\WpRest\Classes\User_Query;
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly.
|
||||
}
|
||||
|
||||
class User_Query_Builder extends Query_Builder_Base {
|
||||
public function build(): array {
|
||||
$config = $this->config;
|
||||
|
||||
$params = User_Query::build_query_params( [
|
||||
User_Query::KEYS_CONVERSION_MAP_KEY => $config[ Query_Base::KEYS_CONVERSION_MAP_KEY ] ?? null,
|
||||
User_Query::INCLUDED_TYPE_KEY => $config[ Query_Base::INCLUDED_TYPE_KEY ] ?? null,
|
||||
User_Query::EXCLUDED_TYPE_KEY => $config[ Query_Base::EXCLUDED_TYPE_KEY ] ?? null,
|
||||
User_Query::META_QUERY_KEY => $config[ Query_Base::META_QUERY_KEY ] ?? null,
|
||||
User_Query::ITEMS_COUNT_KEY => $config[ Query_Base::ITEMS_COUNT_KEY ] ?? null,
|
||||
] );
|
||||
|
||||
$endpoint = $config['endpoint'] ?? User_Query::ENDPOINT;
|
||||
$namespace = $config['namespace'] ?? User_Query::NAMESPACE;
|
||||
$url = $namespace . '/' . $endpoint;
|
||||
|
||||
return [
|
||||
'params' => $params,
|
||||
'url' => $url,
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user