Datastore.php
2.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<?php
namespace Codemanas\VczApi\Data;
/**
* Class Datastore
*
* Will eventually handle all database functions
*
* @package Codemanas\VczApi\Data
* @created March 2nd, 2021
* @author Deepen Bajracharya
*/
class Datastore {
/**
* @var string
*/
private static $post_type = 'zoom-meetings';
/**
* @var int
*/
protected static $per_page = 10;
/**
* @var int
*/
protected static $paged = 1;
/**
* @var string
*/
protected static $order = 'DESC';
/**
* Get Meetings
*
* @param bool $args
* @param bool $wp_query
*
* @return \WP_Query
*/
public static function get_meetings( $args = false, $wp_query = true ) {
$post_arr = array(
'post_type' => self::$post_type,
'posts_per_page' => ! empty( $args['per_page'] ) ? $args['paged'] : self::$per_page,
'post_status' => ! empty( $args['status'] ) ? $args['status'] : 'publish',
'paged' => ! empty( $args['paged'] ) ? $args['paged'] : self::$paged,
'order' => self::$order,
);
if ( ! empty( $args['author'] ) ) {
$post_arr['author'] = absint( $args['author'] );
}
//If meeting type is not defined then pull all zoom list regardless of webinar or meeting only.
if ( ! empty( $args['meeting_type'] ) ) {
$post_arr['meta_query'] = array(
array(
'key' => '_vczapi_meeting_type',
'value' => $args['meeting_type'] === "meeting" ? 'meeting' : 'webinar',
'compare' => '='
)
);
}
if ( ! empty( $args['meeting_sort'] ) ) {
$type = ( $args['meeting_sort'] === "upcoming" ) ? '>=' : '<=';
$post_arr['meta_query'][] = array(
'key' => '_meeting_field_start_date_utc',
'value' => vczapi_dateConverter( 'now', 'UTC', 'Y-m-d H:i:s', false ),
'compare' => $type,
'type' => 'DATETIME'
);
}
if ( ! empty( $args['taxonomy'] ) ) {
$category = array_map( 'trim', explode( ',', $args['taxonomy'] ) );
$post_arr['tax_query'] = [
[
'taxonomy' => 'zoom-meeting',
'field' => 'slug',
'terms' => $category,
'operator' => 'IN'
]
];
}
$query = apply_filters( 'vczapi_get_posts_query_args', $post_arr );
if ( $wp_query ) {
$result = new \WP_Query( $query );
} else {
$result = get_posts( $query );
}
return $result;
}
}