PluginProbe ʕ •ᴥ•ʔ
The Post Grid – Shortcode, Gutenberg Blocks and Elementor Addon for Post Grid / 7.0.1
The Post Grid – Shortcode, Gutenberg Blocks and Elementor Addon for Post Grid v7.0.1
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
265 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-tpg-block' );
51 if ( $data['prefix'] === 'slider' ) {
52 wp_enqueue_style( 'swiper' );
53 }
54 }
55
56 wp_enqueue_script( 'imagesloaded' );
57 if ( $data['prefix'] === 'slider' ) {
58 wp_enqueue_script( 'swiper' );
59 }
60 wp_enqueue_script( 'rt-tpg' );
61 wp_enqueue_script( 'rttpg-block-pro' );
62 }
63
64 /**
65 * Post Query for gutenberg
66 *
67 * @param $data
68 * @param $prefix
69 *
70 * @return array
71 */
72 public function post_query_guten( $data, $prefix = '' ) {
73 $post_type = isset( $data['post_type'] ) ? $data['post_type'] : 'post';
74 $args = [
75 'post_type' => [ $post_type ],
76 'post_status' => isset( $data['post_status'] ) ? $data['post_status'] : 'publish',
77 ];
78
79 if ( $data['post_id'] ) {
80 $post_ids = explode( ',', $data['post_id'] );
81 $post_ids = array_map( 'trim', $post_ids );
82 $args['post__in'] = $post_ids;
83 }
84
85 if ( $prefix !== 'slider' && 'show' === $data['show_pagination'] ) {
86 $_paged = is_front_page() ? "page" : "paged";
87 $args['paged'] = get_query_var( $_paged ) ? absint( get_query_var( $_paged ) ) : 1;
88 }
89
90 if ( rtTPG()->hasPro() && 'yes' == $data['ignore_sticky_posts'] ) {
91 $args['ignore_sticky_posts'] = 1;
92 }
93
94 if ( $orderby = $data['orderby'] ) {
95 if ( ! rtTPG()->hasPro() && 'rand' == $orderby ) {
96 $orderby = 'date';
97 }
98 $args['orderby'] = $orderby;
99 }
100
101 if ( $data['order'] ) {
102 $args['order'] = $data['order'];
103 }
104
105 if ( $data['author'] ) {
106 $args['author__in'] = $data['author'];
107 }
108
109 if ( rtTPG()->hasPro() && ( $data['start_date'] || $data['end_date'] ) ) {
110 $args['date_query'] = [
111 [
112 'after' => trim( $data['start_date'] ),
113 'before' => trim( $data['end_date'] ),
114 'inclusive' => true,
115 ],
116 ];
117 }
118
119 $_taxonomies = get_object_taxonomies( $data['post_type'], 'objects' );
120 $_taxonomy_list = $data['taxonomy_lists'];
121 $filtered_taxonomy_lists = [];
122
123 //error_log( print_r( $_taxonomy_list , true ) . "\n\n" , 3, __DIR__ . '/log.txt' );
124
125 if ( isset( $_taxonomy_list ) && ! empty( $_taxonomy_list ) ) {
126 foreach ( $_taxonomies as $index => $object ) {
127 if ( in_array( $object->name, Fns::get_excluded_taxonomy() ) ) {
128 continue;
129 }
130
131 if ( ! isset( $_taxonomy_list[ $object->name ]['options'] ) ) {
132 continue;
133 }
134
135 $_term_list = wp_list_pluck( $_taxonomy_list[ $object->name ]['options'], 'value' );
136 if ( ! empty( $_term_list ) ) {
137 $args['tax_query'][] = [
138 'taxonomy' => $object->name,
139 'field' => 'term_id',
140 'terms' => $_term_list,
141 ];
142 }
143
144 }
145 }
146
147 if ( ! empty( $args['tax_query'] ) && $data['relation'] ) {
148 $args['tax_query']['relation'] = $data['relation'];
149 }
150
151 if ( $data['post_keyword'] ) {
152 $args['s'] = $data['post_keyword'];
153 }
154
155 $offset_posts = $excluded_ids = [];
156 if ( $data['exclude'] || $data['offset'] ) {
157 if ( $data['exclude'] ) {
158 $excluded_ids = explode( ',', $data['exclude'] );
159 $excluded_ids = array_map( 'trim', $excluded_ids );
160 }
161
162 if ( $data['offset'] ) {
163 $_temp_args = $args;
164 unset( $_temp_args['paged'] );
165 $_temp_args['posts_per_page'] = $data['offset'];
166 $_temp_args['fields'] = 'ids';
167
168 $offset_posts = get_posts( $_temp_args );
169 }
170
171 $excluded_post_ids = array_merge( $offset_posts, $excluded_ids );
172 $args['post__not_in'] = array_unique( $excluded_post_ids );
173 }
174
175 if ( $prefix !== 'slider' ) {
176 if ( $data['post_limit'] ) {
177 if ( 'show' !== $data['show_pagination'] ) {
178 $args['posts_per_page'] = $data['post_limit'];
179 } else {
180 $tempArgs = $args;
181 $tempArgs['posts_per_page'] = $data['post_limit'];
182 $tempArgs['paged'] = 1;
183 $tempArgs['fields'] = 'ids';
184 if ( ! empty( $offset_posts ) ) {
185 $tempArgs['post__not_in'] = $offset_posts;
186 }
187 $tempQ = new \WP_Query( $tempArgs );
188 if ( ! empty( $tempQ->posts ) ) {
189 $args['post__in'] = $tempQ->posts;
190 $args['posts_per_page'] = $data['post_limit'];
191 }
192 }
193 } else {
194 $_posts_per_page = 9;
195 if ( 'grid' === $prefix ) {
196 if ( $data['grid_layout'] == 'grid-layout5' ) {
197 $_posts_per_page = 5;
198 } elseif ( in_array( $data['grid_layout'], [ 'grid-layout6', 'grid-layout6-2' ] ) ) {
199 $_posts_per_page = 3;
200 } elseif ( in_array( $data['grid_layout'], [ 'grid-layout5', 'grid-layout5-2' ] ) ) {
201 $_posts_per_page = 5;
202 }
203 } elseif ( 'list' === $prefix ) {
204 if ( in_array( $data['list_layout'], [ 'list-layout2', 'list-layout2-2' ] ) ) {
205 $_posts_per_page = 7;
206 } elseif ( in_array( $data['list_layout'], [ 'list-layout3', 'list-layout3-2' ] ) ) {
207 $_posts_per_page = 5;
208 }
209 } elseif ( 'grid_hover' === $prefix ) {
210 if ( in_array( $data['grid_hover_layout'], [ 'grid_hover-layout4', 'grid_hover-layout4-2' ] ) ) {
211 $_posts_per_page = 7;
212 } elseif ( in_array( $data['grid_hover_layout'], [
213 'grid_hover-layout5',
214 'grid_hover-layout5-2'
215 ] ) ) {
216 $_posts_per_page = 3;
217 } elseif ( in_array( $data['grid_hover_layout'],
218 [
219 'grid_hover-layout6',
220 'grid_hover-layout6-2',
221 'grid_hover-layout9',
222 'grid_hover-layout9-2',
223 'grid_hover-layout10',
224 'grid_hover-layout11'
225 ] )
226 ) {
227 $_posts_per_page = 4;
228 } elseif ( in_array( $data['grid_hover_layout'], [
229 'grid_hover-layout7',
230 'grid_hover-layout7-2',
231 'grid_hover-layout8'
232 ] ) ) {
233 $_posts_per_page = 5;
234 } elseif ( in_array( $data['grid_hover_layout'],
235 [
236 'grid_hover-layout6',
237 'grid_hover-layout6-2'
238 ] )
239 ) {
240 $_posts_per_page = 4;
241 }
242 }
243
244 $args['posts_per_page'] = $_posts_per_page;
245 }
246
247 if ( 'show' === $data['show_pagination'] && $data['display_per_page'] ) {
248 $args['posts_per_page'] = $data['display_per_page'];
249 }
250 } else {
251 $slider_per_page = $data['post_limit'];
252 if ( $data['slider_layout'] == 'slider-layout10' ) {
253 $slider_reminder = ( intval( $data['post_limit'], 10 ) % 5 );
254 if ( $slider_reminder ) {
255 $slider_per_page = ( $data['post_limit'] - $slider_reminder + 5 );
256 }
257 }
258 $args['posts_per_page'] = $slider_per_page;
259 }
260
261
262 return $args;
263 }
264
265 }