PluginProbe ʕ •ᴥ•ʔ
The Post Grid – Shortcode, Gutenberg Blocks and Elementor Addon for Post Grid / 7.0.2
The Post Grid – Shortcode, Gutenberg Blocks and Elementor Addon for Post Grid v7.0.2
7.9.3 7.9.2 trunk 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.1.5 4.2.0 4.2.1 4.2.2 4.2.3 5.0.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 6.0.0 7.0.0 7.0.1 7.0.2 7.1.0 7.2.0 7.2.1 7.2.10 7.2.11 7.2.2 7.2.3 7.2.4 7.2.5 7.2.6 7.2.7 7.2.8 7.2.9 7.3.0 7.3.1 7.4.0 7.4.1 7.4.2 7.4.3 7.5.0 7.6.0 7.6.1 7.7.0 7.7.1 7.7.10 7.7.11 7.7.12 7.7.13 7.7.14 7.7.15 7.7.16 7.7.17 7.7.18 7.7.19 7.7.2 7.7.20 7.7.21 7.7.22 7.7.3 7.7.4 7.7.5 7.7.6 7.7.7 7.7.8 7.7.9 7.8.0 7.8.1 7.8.2 7.8.3 7.8.4 7.8.5 7.8.6 7.8.7 7.8.8 7.8.9 7.9.0 7.9.1
the-post-grid / app / Controllers / Blocks / BlockBase.php
the-post-grid / app / Controllers / Blocks Last commit date
BlockController 3 years ago BlockBase.php 3 years ago GridHoverLayout.php 3 years ago GridLayout.php 3 years ago ListLayout.php 3 years ago RttpgRow.php 3 years ago
BlockBase.php
266 lines
1 <?php
2
3 namespace RT\ThePostGrid\Controllers\Blocks;
4
5 use RT\ThePostGrid\Helpers\Fns;
6
7 abstract class BlockBase {
8
9 abstract public function get_attributes();
10
11 abstract public function render_block( $data );
12
13 /**
14 * Script controller
15 *
16 * @param $data
17 *
18 * @return void
19 */
20
21 public function get_script_depends( $data ) {
22
23 $settings = get_option( rtTPG()->options['settings'] );
24 $prefix = $data['prefix'];
25
26 if ( rtTPG()->hasPro() && ( $data['is_thumb_lightbox'] === 'show' || 'popup' == $data['post_link_type'] || 'multi_popup' == $data['post_link_type'] || $data[ $prefix . '_layout' ] == 'grid-layout7' || $data[ $prefix . '_layout' ] == 'slider-layout4' ) ) {
27 wp_enqueue_style( 'rt-magnific-popup' );
28 wp_enqueue_script( 'rt-magnific-popup' );
29 }
30
31 if ( rtTPG()->hasPro() && ( 'popup' == $data['post_link_type'] || 'multi_popup' == $data['post_link_type'] ) ) {
32 wp_enqueue_script( 'rt-scrollbar' );
33 add_action( 'wp_footer', [ Fns::class, 'get_modal_markup' ] );
34 }
35
36 if ( rtTPG()->hasPro() && 'button' == $data['filter_type'] && 'carousel' == $data['filter_btn_style'] ) {
37 wp_enqueue_script( 'swiper' );
38 }
39
40 if ( isset( $data['grid_layout_style'] ) && 'masonry' === $data['grid_layout_style'] ) {
41 wp_enqueue_script( 'rt-isotope-js' );
42 }
43
44 if ( 'show' == $data['show_pagination'] && 'pagination_ajax' == $data['pagination_type'] ) {
45 wp_enqueue_script( 'rt-pagination' );
46 }
47
48 if ( isset( $settings['tpg_load_script'] ) ) {
49 wp_enqueue_style( 'rt-fontawsome' );
50 wp_enqueue_style( 'rt-flaticon' );
51 wp_enqueue_style( 'rt-tpg-block' );
52 if ( $data['prefix'] === 'slider' ) {
53 wp_enqueue_style( 'swiper' );
54 }
55 }
56
57 wp_enqueue_script( 'imagesloaded' );
58 if ( $data['prefix'] === 'slider' ) {
59 wp_enqueue_script( 'swiper' );
60 }
61 wp_enqueue_script( 'rt-tpg' );
62 wp_enqueue_script( 'rttpg-block-pro' );
63 }
64
65 /**
66 * Post Query for gutenberg
67 *
68 * @param $data
69 * @param $prefix
70 *
71 * @return array
72 */
73 public function post_query_guten( $data, $prefix = '' ) {
74 $post_type = isset( $data['post_type'] ) ? $data['post_type'] : 'post';
75 $args = [
76 'post_type' => [ $post_type ],
77 'post_status' => isset( $data['post_status'] ) ? $data['post_status'] : 'publish',
78 ];
79
80 if ( $data['post_id'] ) {
81 $post_ids = explode( ',', $data['post_id'] );
82 $post_ids = array_map( 'trim', $post_ids );
83 $args['post__in'] = $post_ids;
84 }
85
86 if ( $prefix !== 'slider' && 'show' === $data['show_pagination'] ) {
87 $_paged = is_front_page() ? "page" : "paged";
88 $args['paged'] = get_query_var( $_paged ) ? absint( get_query_var( $_paged ) ) : 1;
89 }
90
91 if ( rtTPG()->hasPro() && 'yes' == $data['ignore_sticky_posts'] ) {
92 $args['ignore_sticky_posts'] = 1;
93 }
94
95 if ( $orderby = $data['orderby'] ) {
96 if ( ! rtTPG()->hasPro() && 'rand' == $orderby ) {
97 $orderby = 'date';
98 }
99 $args['orderby'] = $orderby;
100 }
101
102 if ( $data['order'] ) {
103 $args['order'] = $data['order'];
104 }
105
106 if ( $data['author'] ) {
107 $args['author__in'] = $data['author'];
108 }
109
110 if ( rtTPG()->hasPro() && ( $data['start_date'] || $data['end_date'] ) ) {
111 $args['date_query'] = [
112 [
113 'after' => trim( $data['start_date'] ),
114 'before' => trim( $data['end_date'] ),
115 'inclusive' => true,
116 ],
117 ];
118 }
119
120 $_taxonomies = get_object_taxonomies( $data['post_type'], 'objects' );
121 $_taxonomy_list = $data['taxonomy_lists'];
122 $filtered_taxonomy_lists = [];
123
124 //error_log( print_r( $_taxonomy_list , true ) . "\n\n" , 3, __DIR__ . '/log.txt' );
125
126 if ( isset( $_taxonomy_list ) && ! empty( $_taxonomy_list ) ) {
127 foreach ( $_taxonomies as $index => $object ) {
128 if ( in_array( $object->name, Fns::get_excluded_taxonomy() ) ) {
129 continue;
130 }
131
132 if ( ! isset( $_taxonomy_list[ $object->name ]['options'] ) ) {
133 continue;
134 }
135
136 $_term_list = wp_list_pluck( $_taxonomy_list[ $object->name ]['options'], 'value' );
137 if ( ! empty( $_term_list ) ) {
138 $args['tax_query'][] = [
139 'taxonomy' => $object->name,
140 'field' => 'term_id',
141 'terms' => $_term_list,
142 ];
143 }
144
145 }
146 }
147
148 if ( ! empty( $args['tax_query'] ) && $data['relation'] ) {
149 $args['tax_query']['relation'] = $data['relation'];
150 }
151
152 if ( $data['post_keyword'] ) {
153 $args['s'] = $data['post_keyword'];
154 }
155
156 $offset_posts = $excluded_ids = [];
157 if ( $data['exclude'] || $data['offset'] ) {
158 if ( $data['exclude'] ) {
159 $excluded_ids = explode( ',', $data['exclude'] );
160 $excluded_ids = array_map( 'trim', $excluded_ids );
161 }
162
163 if ( $data['offset'] ) {
164 $_temp_args = $args;
165 unset( $_temp_args['paged'] );
166 $_temp_args['posts_per_page'] = $data['offset'];
167 $_temp_args['fields'] = 'ids';
168
169 $offset_posts = get_posts( $_temp_args );
170 }
171
172 $excluded_post_ids = array_merge( $offset_posts, $excluded_ids );
173 $args['post__not_in'] = array_unique( $excluded_post_ids );
174 }
175
176 if ( $prefix !== 'slider' ) {
177 if ( $data['post_limit'] ) {
178 if ( 'show' !== $data['show_pagination'] ) {
179 $args['posts_per_page'] = $data['post_limit'];
180 } else {
181 $tempArgs = $args;
182 $tempArgs['posts_per_page'] = $data['post_limit'];
183 $tempArgs['paged'] = 1;
184 $tempArgs['fields'] = 'ids';
185 if ( ! empty( $offset_posts ) ) {
186 $tempArgs['post__not_in'] = $offset_posts;
187 }
188 $tempQ = new \WP_Query( $tempArgs );
189 if ( ! empty( $tempQ->posts ) ) {
190 $args['post__in'] = $tempQ->posts;
191 $args['posts_per_page'] = $data['post_limit'];
192 }
193 }
194 } else {
195 $_posts_per_page = 9;
196 if ( 'grid' === $prefix ) {
197 if ( $data['grid_layout'] == 'grid-layout5' ) {
198 $_posts_per_page = 5;
199 } elseif ( in_array( $data['grid_layout'], [ 'grid-layout6', 'grid-layout6-2' ] ) ) {
200 $_posts_per_page = 3;
201 } elseif ( in_array( $data['grid_layout'], [ 'grid-layout5', 'grid-layout5-2' ] ) ) {
202 $_posts_per_page = 5;
203 }
204 } elseif ( 'list' === $prefix ) {
205 if ( in_array( $data['list_layout'], [ 'list-layout2', 'list-layout2-2' ] ) ) {
206 $_posts_per_page = 7;
207 } elseif ( in_array( $data['list_layout'], [ 'list-layout3', 'list-layout3-2' ] ) ) {
208 $_posts_per_page = 5;
209 }
210 } elseif ( 'grid_hover' === $prefix ) {
211 if ( in_array( $data['grid_hover_layout'], [ 'grid_hover-layout4', 'grid_hover-layout4-2' ] ) ) {
212 $_posts_per_page = 7;
213 } elseif ( in_array( $data['grid_hover_layout'], [
214 'grid_hover-layout5',
215 'grid_hover-layout5-2'
216 ] ) ) {
217 $_posts_per_page = 3;
218 } elseif ( in_array( $data['grid_hover_layout'],
219 [
220 'grid_hover-layout6',
221 'grid_hover-layout6-2',
222 'grid_hover-layout9',
223 'grid_hover-layout9-2',
224 'grid_hover-layout10',
225 'grid_hover-layout11'
226 ] )
227 ) {
228 $_posts_per_page = 4;
229 } elseif ( in_array( $data['grid_hover_layout'], [
230 'grid_hover-layout7',
231 'grid_hover-layout7-2',
232 'grid_hover-layout8'
233 ] ) ) {
234 $_posts_per_page = 5;
235 } elseif ( in_array( $data['grid_hover_layout'],
236 [
237 'grid_hover-layout6',
238 'grid_hover-layout6-2'
239 ] )
240 ) {
241 $_posts_per_page = 4;
242 }
243 }
244
245 $args['posts_per_page'] = $_posts_per_page;
246 }
247
248 if ( 'show' === $data['show_pagination'] && $data['display_per_page'] ) {
249 $args['posts_per_page'] = $data['display_per_page'];
250 }
251 } else {
252 $slider_per_page = $data['post_limit'];
253 if ( $data['slider_layout'] == 'slider-layout10' ) {
254 $slider_reminder = ( intval( $data['post_limit'], 10 ) % 5 );
255 if ( $slider_reminder ) {
256 $slider_per_page = ( $data['post_limit'] - $slider_reminder + 5 );
257 }
258 }
259 $args['posts_per_page'] = $slider_per_page;
260 }
261
262
263 return $args;
264 }
265
266 }