PluginProbe
Post Grid Gutenberg Blocks – PostX / 4.1.3
Post Grid Gutenberg Blocks – PostX v4.1.3
5.0.39 5.0.38 5.0.37 5.0.36 5.0.35 5.0.34 5.0.33 5.0.32 5.0.31 5.0.30 5.0.29 5.0.28 5.0.27 5.0.26 5.0.25 5.0.23 5.0.24 5.0.22 5.0.21 5.0.20 5.0.19 5.0.18 5.0.17 2.1.1 2.1.2 All 237 releases
ultimate-post / blocks / Post_Module_1.php

Post_Module_1.php in Post Grid Gutenberg Blocks – PostX 4.1.3, at blocks/Post_Module_1.php

414 lines 22.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace ULTP\blocks;
3
4 defined('ABSPATH') || exit;
5
6 class Post_Module_1{
7
8 public function __construct() {
9 add_action('init', array($this, 'register'));
10 }
11
12 public function get_attributes() {
13
14 return array(
15 'blockId' => '',
16 'previewImg' => '',
17 //--------------------------
18 // Layout
19 //--------------------------
20 'layout' => 'layout1',
21
22 //--------------------------
23 // Query Setting
24 //--------------------------
25 'queryQuick' => '',
26 'queryNumPosts' => (object)['lg'=>5],
27 'queryNumber' => 5,
28 'queryType' => 'post',
29 'queryTax' => 'category',
30 'queryTaxValue' => '[]',
31 'queryRelation' => 'OR',
32 'queryOrderBy' => 'date',
33 'metaKey' => 'custom_meta_key',
34 'queryOrder' => 'desc',
35 // Include Remove from Version 2.5.4
36 'queryInclude' => '',
37 'queryExclude' => '[]',
38 'queryAuthor' => '[]',
39 'queryOffset' => '0',
40 'queryExcludeTerm' => '[]',
41 'queryExcludeAuthor' => '[]',
42 'querySticky' => true,
43 'queryUnique' => '',
44 'queryPosts' => '[]',
45 'queryCustomPosts' => '[]',
46 //--------------------------
47 // General Setting
48 //--------------------------
49 'titleShow' => true,
50 'titleStyle' => 'none',
51 'headingShow' => true,
52 'excerptShow' => true,
53 'catShow' => true,
54 'metaShow' => true,
55 'showImage' => true,
56 'filterShow' => false,
57 'paginationShow' => false,
58 'readMore' => false,
59 'contentTag' => 'div',
60 'openInTab' => false,
61 'notFoundMessage' => 'No Post Found',
62
63 //--------------------------
64 // Heading Setting/Style
65 //--------------------------
66 'headingText' => 'Post Module #1',
67 'headingURL' => '',
68 'headingBtnText' => 'View More',
69 'headingStyle' => 'style1',
70 'headingTag' => 'h2',
71 'headingAlign' => 'left',
72 'subHeadingShow' => false,
73 'subHeadingText' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer ut sem augue. Sed at felis ut enim dignissim sodales.',
74
75 //--------------------------
76 // Title Setting/Style
77 //--------------------------
78 'titleTag' => 'h3',
79 'titlePosition' => true,
80 'titleLength' => 0,
81
82 //--------------------------
83 // Content Setting/Style
84 //--------------------------
85
86 'varticalAlign' => 'middle',
87 'showSeoMeta' => false,
88 'showSmallExcerpt' => false,
89 'showFullExcerpt' => false,
90 'excerptLimit' => 20,
91
92 //--------------------------
93 // Category Setting/Style
94 //--------------------------
95 'maxTaxonomy'=> '30',
96 'taxonomy' => 'category',
97 'showSmallCat' => false,
98 'catStyle' => 'classic',
99 'catPosition' => 'aboveTitle',
100 'customCatColor' => false,
101 'seperatorLink' => admin_url( 'edit-tags.php?taxonomy=category' ),
102 'onlyCatColor' => false,
103
104 //--------------------------
105 // Meta Setting/Style
106 //--------------------------
107 'showSmallMeta' => true,
108 'metaPosition' => 'top',
109 'metaStyle' => 'icon',
110 'authorLink' => true,
111 'metaSeparator' => 'dot',
112 'metaList' => '["metaAuthor","metaDate","metaRead"]',
113 'metaMinText' => 'min read',
114 'metaAuthorPrefix' => 'By',
115 'metaDateFormat' => 'M j, Y',
116 'metaListSmall' => '["metaAuthor","metaDate"]',
117
118 //--------------------------
119 // Image Setting/Style
120 //--------------------------
121 'columnFlip' => false,
122 'imgCrop' => 'full',
123 'imgCropSmall' => (ultimate_post()->get_setting('disable_image_size') == 'yes' ? 'full' : 'ultp_layout_square'),
124 'imgAnimation' => 'opacity',
125 'imgOverlay' => false,
126 'imgOverlayType' => 'default',
127 'fallbackEnable' => true,
128 'fallbackImg' => '',
129 'imgSrcset' => false,
130 'imgLazy' => false,
131
132 //--------------------------
133 // Video Setting/Style
134 //--------------------------
135 'vidIconEnable' => true,
136 'popupAutoPlay' => true,
137 'iconSize' => (object)['lg'=>'40', 'sm'=> '30', 'xs'=> '30', 'unit' => 'px'],
138 // by default should be off
139 'enablePopup' => false,
140 'enablePopupTitle' => true,
141
142 //--------------------------
143 // Separator
144 //--------------------------
145 'separatorShow' => false,
146
147 //--------------------------
148 // Read more Setting/Style
149 //--------------------------
150 'showSmallBtn' => false,
151 'readMoreText' => '',
152 'readMoreIcon' => 'rightArrowLg',
153
154 //--------------------------
155 // Filter Setting/Style
156 //--------------------------
157 'filterBelowTitle' => false,
158 'filterType' => 'category',
159 'filterText' => 'all',
160 'filterValue' => '[]',
161 'filterMobile' => true,
162 'filterMobileText' => 'More',
163
164 //--------------------------
165 // Pagination Setting/Style
166 //--------------------------
167 'paginationType' => 'navigation',
168 'paginationNav' => 'textArrow',
169 'navPosition' => 'topRight',
170
171 //--------------------------
172 // Wrapper Style
173 //--------------------------
174 'advanceId' => '',
175 'advanceZindex' => '',
176 'hideExtraLarge' => false,
177 'hideTablet' => false,
178 'hideMobile' => false,
179 'advanceCss' => '',
180 'currentPostId' => '',
181
182 // --------------------------------
183 // Advance Filter Block Compatibility
184 // --------------------------------
185 'advFilterEnable' => false,
186 'querySearch' => '',
187
188 // --------------------------------
189 // Pagination block compatibility
190 // --------------------------------
191 'advPaginationEnable' => false,
192 'paginationAjax' => true,
193 'paginationText' => 'Previous|Next',
194 'loadMoreText' => 'Load More',
195 // 'queryNumPosts' => (object)['lg'=>5],
196 // 'queryNumber2' => 6,
197 // 'notFirstLoad' => false,
198 );
199 }
200
201 public function register() {
202 register_block_type( 'ultimate-post/post-module-1',
203 array(
204 'editor_script' => 'ultp-blocks-editor-script',
205 'editor_style' => 'ultp-blocks-editor-css',
206 'render_callback' => array($this, 'content')
207 )
208 );
209 }
210
211 public function content($attr, $noAjax) {
212 $attr = wp_parse_args($attr, $this->get_attributes());
213 global $unique_ID;
214
215 if (!$noAjax) {
216 $paged = is_front_page() ? get_query_var('page') : get_query_var('paged');
217 $attr['paged'] = $paged ? $paged : 1;
218 }
219 if($attr['queryUnique'] && isset($attr['savedQueryUnique'])) {
220 $unique_ID = $attr['savedQueryUnique'];
221 }
222
223 $bigloop = '';
224 $block_name = 'post-module-1';
225 $wraper_before = $wraper_after = $post_loop = '';
226 $attr['queryNumber'] = ultimate_post()->get_post_number(5, $attr['queryNumber'], $attr['queryNumPosts']);
227 $recent_posts = new \WP_Query( ultimate_post()->get_query( $attr ) );
228 $pageNum = ultimate_post()->get_page_number($attr, $recent_posts->found_posts);
229 // Dummy Img Url
230 $dummy_url = ULTP_URL.'assets/img/ultp-fallback-img.png';
231
232 // Loadmore and Unique content
233 if($attr['queryUnique'] && isset($attr['loadMoreQueryUnique']) && $attr['paginationShow'] && ($attr['paginationType'] == 'loadMore')) {
234 $unique_ID = $attr['loadMoreQueryUnique'];
235 $current_unique_posts = $attr['ultp_current_unique_posts'];
236 }
237
238 $attr['className'] = isset($attr['className']) && $attr['className'] ? preg_replace('/[^A-Za-z0-9_ -]/', '', $attr['className']) : '';
239 $attr['align'] = isset($attr['align']) && $attr['align'] ? preg_replace('/[^A-Za-z0-9_ -]/', '', $attr['align']) : '';
240 $attr['advanceId'] = isset($attr['advanceId']) ? sanitize_html_class( $attr['advanceId'] ) : '';
241 $attr['blockId'] = isset($attr['blockId']) ? sanitize_html_class( $attr['blockId'] ) : '';
242 $attr['contentTag'] = in_array( $attr['contentTag'], ultimate_post()->ultp_allowed_block_tags() ) ? $attr['contentTag'] : 'div';
243 $attr['layout'] = sanitize_html_class( $attr['layout'] );
244 $attr['imgAnimation'] = sanitize_html_class( $attr['imgAnimation'] );
245 $attr['imgOverlayType'] = sanitize_html_class( $attr['imgOverlayType'] );
246 $attr['popupAutoPlay'] = $attr['popupAutoPlay'] == true ;
247 $attr['readMoreText'] = wp_kses($attr['readMoreText'], ultimate_post()->ultp_allowed_html_tags());
248 $attr['varticalAlign'] = sanitize_html_class( $attr['varticalAlign'] );
249
250 if ($recent_posts->have_posts()) {
251
252 // Pagination Block Html
253 include ULTP_PATH . 'blocks/template/pagination_block.php';
254
255 $wraper_before .= '<div '.( $attr['advanceId'] ? 'id="'.$attr['advanceId'].'" ':'' ).' class="ultp-post-grid-block wp-block-ultimate-post-'.$block_name.' ultp-block-'.$attr["blockId"].''.( $attr["align"] ? ' align' .$attr["align"]:'' ).''.( $attr["className"] ?' '.$attr["className"]:'' ) . '">';
256 $wraper_before .= '<div class="ultp-block-wrapper">';
257
258 // Loading
259 $wraper_before .= ultimate_post()->loading();
260
261 if ($attr['headingShow'] || $attr['filterShow'] || $attr['paginationShow']) {
262 $wraper_before .= '<div class="ultp-heading-filter">';
263 $wraper_before .= '<div class="ultp-heading-filter-in">';
264
265 // Heading
266 include ULTP_PATH.'blocks/template/heading.php';
267
268 if ($attr['filterShow'] || $attr['paginationShow']) {
269 $wraper_before .= '<div class="ultp-filter-navigation">';
270 // Filter
271 if($attr['filterShow'] && $attr['queryType'] != 'posts' && $attr['queryType'] != 'customPosts') {
272 include ULTP_PATH.'blocks/template/filter.php';
273 }
274 // Navigation
275 if ($attr['paginationShow'] && ($attr['paginationType'] == 'navigation') && ($attr['navPosition'] == 'topRight')) {
276 include ULTP_PATH.'blocks/template/navigation-before.php';
277 }
278 $wraper_before .= '</div>';
279 }
280
281 $wraper_before .= '</div>';
282 $wraper_before .= '</div>';
283 }
284
285 $wraper_before .= '<div class="ultp-block-items-wrap ultp-block-post-module1 ultp-block-content-'.$attr['varticalAlign'].' ultp-block-content-'.($attr['columnFlip'] ? 'true' : 'false').' ultp-'.$attr['layout'].'">';
286 $idx = 0; // $idx = $noAjax ? 1 : 0;
287 while ( $recent_posts->have_posts() ): $recent_posts->the_post();
288
289 include ULTP_PATH.'blocks/template/data.php';
290
291 include ULTP_PATH.'blocks/template/category.php';
292
293 if ($attr['queryUnique']) {
294 $unique_ID[$attr['queryUnique']][] = $post_id;
295 $current_unique_posts[] = $post_id;
296 }
297
298 $post_loop .= '<'.$attr['contentTag'].' class="ultp-block-item post-id-'.$post_id.'">';
299
300 $post_loop .= '<div class="ultp-block-content-wrap">';
301 if(($post_thumb_id || $attr['fallbackEnable']) && $attr['showImage'] && ($idx == 0 || $attr['layout'] == 'layout2' || $attr['layout'] == 'layout3' || $attr['layout'] == 'layout5')) {
302 $post_loop .= '<div class="ultp-block-image ultp-block-image-'.$attr['imgAnimation'].($attr["imgOverlay"] ? ' ultp-block-image-overlay ultp-block-image-'.$attr["imgOverlayType"].' ultp-block-image-'.$attr["imgOverlayType"].$idx : '' ).'">';
303 if ($idx == 0) {
304 $post_loop .= '<a href="'.$titlelink.'" '.($attr['openInTab'] ? 'target="_blank"' : '').'>';
305 // Post Image Id
306 $block_img_id = $post_thumb_id ? $post_thumb_id : ($attr['fallbackEnable'] && isset($attr['fallbackImg']['id']) ? $attr['fallbackImg']['id'] : '');
307 // Post Image
308 if($post_thumb_id || ($attr['fallbackEnable'] && $block_img_id)) {
309 $post_loop .= ultimate_post()->get_image($block_img_id, $attr['imgCrop'], '', $title, $attr['imgSrcset'], $attr['imgLazy']);
310 } else {
311 $video = ultimate_post()->get_youtube_id($post_video);
312 $post_loop .= '<img src="'.($video ? 'https://img.youtube.com/vi/'.$video.'/0.jpg' : $dummy_url).'" alt="dummy-img" />';
313 }
314 $post_loop .= '</a>';
315 if($post_video){
316 $post_loop .= '<div enableAutoPlay="'.$attr['popupAutoPlay'].'" class="ultp-video-icon">'.ultimate_post()->svg_icon('play_line').'</div>';
317 }
318 } else {
319 if ($attr['layout'] == 'layout2' || $attr['layout'] == 'layout3' || $attr['layout'] == 'layout5') {
320 $post_loop .= '<a href="'.$titlelink.'" '.($attr['openInTab'] ? 'target="_blank"' : '').'>';
321 // Post Image Id
322 $block_img_id = $post_thumb_id ? $post_thumb_id : ($attr['fallbackEnable'] && isset($attr['fallbackImg']['id']) ? $attr['fallbackImg']['id'] : '');
323 // Post Image
324 if($post_thumb_id || ($attr['fallbackEnable'] && $block_img_id)) {
325 $post_loop .= ultimate_post()->get_image($block_img_id, $attr['imgCropSmall'], '', $title, $attr['imgSrcset'], $attr['imgLazy']);
326 } else {
327 $video = ultimate_post()->get_youtube_id($post_video);
328 $post_loop .= '<img src="'.($video ? 'https://img.youtube.com/vi/'.$video.'/0.jpg' : $dummy_url).'" alt="dummy-img" />';
329 }
330 $post_loop .= '</a>';
331 if($post_video){
332 $post_loop .= '<div enableAutoPlay="'.$attr['popupAutoPlay'].'" class="ultp-video-icon">'.ultimate_post()->svg_icon('play_line').'</div>';
333 }
334 }
335 }
336 if (($attr['catPosition'] != 'aboveTitle') && ($idx == 0 || $attr['showSmallCat']) && $attr['catShow'] ) {
337 $post_loop .= '<div class="ultp-category-img-grid">'.$category.'</div>';
338 }
339 $post_loop .= '</div>';
340 }
341 $post_loop .= '<div class="ultp-block-content">';
342 // Category
343 if (($attr['catPosition'] == 'aboveTitle') && ($idx == 0 || $attr['showSmallCat'] ) && $attr['catShow']) {
344 $post_loop .= $category;
345 }
346 // Title
347 if ($title && $attr['titleShow'] && $attr['titlePosition'] == 1) {
348 include ULTP_PATH.'blocks/template/title.php';
349 }
350 // Meta
351 if ($attr['metaPosition'] =='top' ) {
352 include ULTP_PATH.'blocks/template/meta.php';
353 }
354 // Title
355 if ($title && $attr['titleShow'] && $attr['titlePosition'] == 0) {
356 include ULTP_PATH.'blocks/template/title.php';
357 }
358 // Excerpt
359 if (($idx == 0 || $attr['showSmallExcerpt']) && $attr['excerptShow']) {
360 $post_loop .= '<div class="ultp-block-excerpt">'.ultimate_post()->get_excerpt($post_id, $attr['showSeoMeta'], $attr['showFullExcerpt'], $attr['excerptLimit']).'</div>';
361 }
362
363 // Read More
364 if ($attr['readMore'] && ($idx == 0 || $attr['showSmallBtn'])) {
365 $post_loop .= '<div class="ultp-block-readmore"><a aria-label="'.$title.'" href="'.$titlelink.'" '.($attr['openInTab'] ? 'target="_blank"' : '').'>'.($attr['readMoreText'] ? $attr['readMoreText'] : esc_html__( "Read More", "ultimate-post" )).ultimate_post()->svg_icon($attr['readMoreIcon']).'</a></div>';
366 }
367 // Bottom
368 if ($attr['metaPosition'] =='bottom' ) {
369 include ULTP_PATH.'blocks/template/meta.php';
370 }
371 $post_loop .= '</div>';
372 $post_loop .= '</div>';
373 if($post_video && $attr['enablePopup'] && ($attr['layout'] != 'layout1' && $attr['layout'] != 'layout4' || $idx == 0)) {
374 include ULTP_PATH.'blocks/template/video_popup.php';
375 }
376 $post_loop .= '</'.$attr['contentTag'].'>';
377
378 if ($idx == 0) {
379 $bigloop = $post_loop;
380 $post_loop = '';
381 }
382
383 $idx ++;
384 endwhile;
385 if($attr['queryUnique']) {
386 $post_loop .= "<span style='display: none;' class='ultp-current-unique-posts' data-ultp-unique-ids= ".wp_json_encode($unique_ID)." data-current-unique-posts= ".wp_json_encode($current_unique_posts)."> </span>";
387 }
388 $bigloop = '<div class="ultp-big-post-module1">'.$bigloop.'</div>';
389 $post_loop = $bigloop.'<div class="ultp-small-post-module1">'.$post_loop.'</div>';
390
391 if ( $attr['advPaginationEnable'] && ($attr['paginationType'] == 'loadMore')) {
392 $wraper_after .= '<span class="ultp-loadmore-insert-before"></span>';
393 }
394
395 $wraper_after .= '</div>';//ultp-block-items-wrap
396
397 // Navigation
398 if ($attr['paginationShow'] && ($attr['paginationType'] == 'navigation') && ($attr['navPosition'] != 'topRight')) {
399 include ULTP_PATH.'blocks/template/navigation-after.php';
400 }
401
402 $wraper_after .= '</div>';
403 $wraper_after .= $pagi_block_html;
404 $wraper_after .= '</div>';
405
406 wp_reset_query();
407 }else {
408 $wraper_before .= ultimate_post()->get_no_result_found_html( $attr['notFoundMessage'] );
409 }
410
411 return $noAjax ? $post_loop : $wraper_before.$post_loop.$wraper_after;
412 }
413
414 }