PluginProbe
Post Grid Gutenberg Blocks – PostX / 4.0.3
Post Grid Gutenberg Blocks – PostX v4.0.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_2.php

Post_Module_2.php in Post Grid Gutenberg Blocks – PostX 4.0.3, at blocks/Post_Module_2.php

391 lines 21.4 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_2{
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 #2',
67 'headingURL' => '',
68 'headingBtnText' => 'View More',
69 'headingStyle' => 'style9',
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 'smallExcerptLimit' => 20,
91 'excerptLimit' => 20,
92 'excerptBigColor' => '#fff',
93
94 //--------------------------
95 // Category Setting/Style
96 //--------------------------
97 'maxTaxonomy'=> '30',
98 'taxonomy' => 'category',
99 'showSmallCat' => false,
100 'catStyle' => 'classic',
101 'catPosition' => 'aboveTitle',
102 'customCatColor' => false,
103 'seperatorLink' => admin_url( 'edit-tags.php?taxonomy=category' ),
104 'onlyCatColor' => false,
105
106 //--------------------------
107 // Meta Setting/Style
108 //--------------------------
109 'showSmallMeta' => true,
110 'metaPosition' => 'top',
111 'metaStyle' => 'icon',
112 'authorLink' => true,
113 'metaSeparator' => 'dot',
114 'metaList' => '["metaAuthor","metaDate","metaRead"]',
115 'metaMinText' => 'min read',
116 'metaAuthorPrefix' => 'By',
117 'metaDateFormat' => 'M j, Y',
118 'metaListSmall' => '["metaAuthor","metaDate"]',
119 'LargeMetaColor' => '#fff',
120
121 //--------------------------
122 // Inner Content Setting/Style
123 //--------------------------
124
125 //--------------------------
126 // Image Setting/Style
127 //--------------------------
128 'columnFlip' => false,
129 'imgCrop' => 'full',
130 'imgCropSmall' => (ultimate_post()->get_setting('disable_image_size') == 'yes' ? 'full' : 'ultp_layout_square'),
131 'imgAnimation' => 'opacity',
132 'imgOverlay' => false,
133 'imgOverlayType' => 'default',
134 'fallbackEnable' => true,
135 'fallbackImg' => '',
136 'imgSrcset' => false,
137 'imgLazy' => false,
138
139 //--------------------------
140 // Video Setting/Style
141 //--------------------------
142 'vidIconEnable' => true,
143 'popupAutoPlay' => true,
144 'iconSize' => (object)['lg'=>'40', 'sm'=> '30', 'xs'=> '30', 'unit' => 'px'],
145 // by default should be off
146 'enablePopup' => false,
147 'enablePopupTitle' => true,
148
149 //--------------------------
150 // Separator
151 //--------------------------
152 'separatorShow' => false,
153
154 //--------------------------
155 // Read more Setting/Style
156 //--------------------------
157 'showSmallBtn' => false,
158 'readMoreText' => '',
159 'readMoreIcon' => 'rightArrowLg',
160
161 //--------------------------
162 // Filter Setting/Style
163 //--------------------------
164 'filterBelowTitle' => false,
165 'filterType' => 'category',
166 'filterText' => 'all',
167 'filterValue' => '[]',
168 'filterMobile' => true,
169 'filterMobileText' => 'More',
170
171 //--------------------------
172 // Pagination Setting/Style
173 //--------------------------
174 'paginationType' => 'navigation',
175 'paginationNav' => 'textArrow',
176 'navPosition' => 'topRight',
177
178 //--------------------------
179 // Wrapper Style
180 //--------------------------
181 'advanceId' => '',
182 'advanceZindex' => '',
183 'hideExtraLarge' => false,
184 'hideTablet' => false,
185 'hideMobile' => false,
186 'advanceCss' => '',
187 'currentPostId' => '',
188 );
189 }
190
191 public function register() {
192 register_block_type( 'ultimate-post/post-module-2',
193 array(
194 'editor_script' => 'ultp-blocks-editor-script',
195 'editor_style' => 'ultp-blocks-editor-css',
196 'render_callback' => array($this, 'content')
197 )
198 );
199 }
200
201 public function content($attr, $noAjax) {
202 $attr = wp_parse_args($attr, $this->get_attributes());
203 global $unique_ID;
204
205 if (!$noAjax) {
206 $paged = is_front_page() ? get_query_var('page') : get_query_var('paged');
207 $attr['paged'] = $paged ? $paged : 1;
208 }
209 if($attr['queryUnique'] && isset($attr['savedQueryUnique'])) {
210 $unique_ID = $attr['savedQueryUnique'];
211 }
212
213 $block_name = 'post-module-2';
214 $wraper_before = $wraper_after = $post_loop = '';
215 $attr['queryNumber'] = ultimate_post()->get_post_number(5, $attr['queryNumber'], $attr['queryNumPosts']);
216 $recent_posts = new \WP_Query( ultimate_post()->get_query( $attr ) );
217 $pageNum = ultimate_post()->get_page_number($attr, $recent_posts->found_posts);
218 // Dummy Img Url
219 $dummy_url = ULTP_URL.'assets/img/ultp-fallback-img.png';
220
221 // Loadmore and Unique content
222 if($attr['queryUnique'] && isset($attr['loadMoreQueryUnique']) && $attr['paginationShow'] && ($attr['paginationType'] == 'loadMore')) {
223 $unique_ID = $attr['loadMoreQueryUnique'];
224 $current_unique_posts = $attr['ultp_current_unique_posts'];
225 }
226
227 if ($recent_posts->have_posts()) {
228 $attr['className'] = isset($attr['className']) && $attr['className'] ? preg_replace('/[^A-Za-z0-9_ -]/', '', $attr['className']) : '';
229 $attr['align'] = isset($attr['align']) && $attr['align'] ? preg_replace('/[^A-Za-z0-9_ -]/', '', $attr['align']) : '';
230 $attr['advanceId'] = isset($attr['advanceId']) ? sanitize_html_class( $attr['advanceId'] ) : '';
231 $attr['blockId'] = isset($attr['blockId']) ? sanitize_html_class( $attr['blockId'] ) : '';
232 $attr['contentTag'] = in_array( $attr['contentTag'], ultimate_post()->ultp_allowed_block_tags() ) ? $attr['contentTag'] : 'div';
233 $attr['layout'] = sanitize_html_class( $attr['layout'] );
234 $attr['imgAnimation'] = sanitize_html_class( $attr['imgAnimation'] );
235 $attr['imgOverlayType'] = sanitize_html_class( $attr['imgOverlayType'] );
236 $attr['popupAutoPlay'] = $attr['popupAutoPlay'] == true ;
237 $attr['readMoreText'] = wp_kses($attr['readMoreText'], ultimate_post()->ultp_allowed_html_tags());
238 $attr['varticalAlign'] = sanitize_html_class( $attr['varticalAlign'] );
239
240 $wraper_before .= '<div '.( $attr['advanceId'] ? 'id="'.$attr['advanceId'].'" ':'' ).' class="wp-block-ultimate-post-'.$block_name.' ultp-block-'.$attr["blockId"].''.( $attr["align"] ? ' align' .$attr["align"]:'' ).''.( $attr["className"] ?' '.$attr["className"]:'' ).'">';
241 $wraper_before .= '<div class="ultp-block-wrapper">';
242
243 // Loading
244 $wraper_before .= ultimate_post()->loading();
245
246 if ($attr['headingShow'] || $attr['filterShow'] || $attr['paginationShow']) {
247 $wraper_before .= '<div class="ultp-heading-filter">';
248 $wraper_before .= '<div class="ultp-heading-filter-in">';
249
250 // Heading
251 include ULTP_PATH.'blocks/template/heading.php';
252
253 if ($attr['filterShow'] || $attr['paginationShow']) {
254 $wraper_before .= '<div class="ultp-filter-navigation">';
255 // Filter
256 if($attr['filterShow'] && $attr['queryType'] != 'posts' && $attr['queryType'] != 'customPosts') {
257 include ULTP_PATH.'blocks/template/filter.php';
258 }
259 // Navigation
260 if ($attr['paginationShow'] && ($attr['paginationType'] == 'navigation') && ($attr['navPosition'] == 'topRight')) {
261 include ULTP_PATH.'blocks/template/navigation-before.php';
262 }
263 $wraper_before .= '</div>';
264 }
265
266 $wraper_before .= '</div>';
267 $wraper_before .= '</div>';
268 }
269
270 $wraper_before .= '<div class="ultp-block-items-wrap ultp-block-post-module2 ultp-block-content-'.$attr['varticalAlign'].' ultp-block-content-'.($attr['columnFlip'] ? 'true' : 'false').' ultp-'.$attr['layout'].'">';
271 $idx = 0; // $idx = $noAjax ? 1 : 0;
272 while ( $recent_posts->have_posts() ): $recent_posts->the_post();
273
274 include ULTP_PATH.'blocks/template/data.php';
275
276 include ULTP_PATH.'blocks/template/category.php';
277
278 if ($attr['queryUnique']) {
279 $unique_ID[$attr['queryUnique']][] = $post_id;
280 $current_unique_posts[] = $post_id;
281 }
282
283 $post_loop .= '<'.$attr['contentTag'].' class="ultp-block-item post-id-'.$post_id.'">';
284
285 $post_loop .= '<div class="ultp-block-content-wrap">';
286 if (($post_thumb_id || $attr['fallbackEnable']) && $attr['showImage'] && ($idx == 0 || ($attr['layout'] == 'layout2') || ($attr['layout'] == 'layout3') || ($attr['layout'] == 'layout5') )) {
287 $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 : '' ).'">';
288 if ($idx == 0) {
289 $post_loop .= '<a href="'.$titlelink.'" '.($attr['openInTab'] ? 'target="_blank"' : '').'>';
290 // Post Image Id
291 $block_img_id = $post_thumb_id ? $post_thumb_id : ($attr['fallbackEnable'] && isset($attr['fallbackImg']['id']) ? $attr['fallbackImg']['id'] : '');
292 // Post Image
293 if($post_thumb_id || ($attr['fallbackEnable'] && $block_img_id)) {
294 $post_loop .= ultimate_post()->get_image($block_img_id, $attr['imgCrop'], '', $title, $attr['imgSrcset'], $attr['imgLazy']);
295 } else {
296 $video = ultimate_post()->get_youtube_id($post_video);
297 $post_loop .= '<img src="'.($video ? 'https://img.youtube.com/vi/'.$video.'/0.jpg' : $dummy_url).'" alt="dummy-img" />';
298 }
299 $post_loop .= '</a>';
300 } else {
301 if (($attr['layout'] == 'layout2') || ($attr['layout'] === 'layout3') || ($attr['layout'] === 'layout5')) {
302 // Image
303 $post_loop .= '<a href="'.$titlelink.'" '.($attr['openInTab'] ? 'target="_blank"' : '').'>';
304 // Post Image Id
305 $block_img_id = $post_thumb_id ? $post_thumb_id : ($attr['fallbackEnable'] && isset($attr['fallbackImg']['id']) ? $attr['fallbackImg']['id'] : '');
306 // Post Image
307 if($post_thumb_id || ($attr['fallbackEnable'] && $block_img_id)) {
308 $post_loop .= ultimate_post()->get_image($block_img_id, $attr['imgCropSmall'], '', $title, $attr['imgSrcset'], $attr['imgLazy']);
309 } else {
310 $video = ultimate_post()->get_youtube_id($post_video);
311 $post_loop .= '<img src="'.($video ? 'https://img.youtube.com/vi/'.$video.'/0.jpg' : $dummy_url).'" alt="dummy-img" />';
312 }
313 $post_loop .= '</a>';
314 }
315 if($post_video){
316 $post_loop .= '<div enableAutoPlay="'.$attr['popupAutoPlay'].'" class="ultp-video-icon">'.ultimate_post()->svg_icon('play_line').'</div>';
317 }
318 }
319 if (($attr['catPosition'] != 'aboveTitle') && ($idx == 0 || $attr['showSmallCat']) && $attr['catShow'] ) {
320 $post_loop .= '<div class="ultp-category-img-grid">'.$category.'</div>';
321 }
322 $post_loop .= '</div>';
323 if($post_video && $idx == 0){
324 $post_loop .= '<div enableAutoPlay="'.$attr['popupAutoPlay'].'" class="ultp-video-icon">'.ultimate_post()->svg_icon('play_line').'</div>';
325 }
326 }
327 $post_loop .= '<div class="ultp-block-content">';
328 // Category
329 if (($attr['catPosition'] == 'aboveTitle') && ($idx == 0 || $attr['showSmallCat'] ) && $attr['catShow']) {
330 $post_loop .= $category;
331 }
332 // Title
333 if ($title && $attr['titleShow'] && $attr['titlePosition'] == 1) {
334 include ULTP_PATH.'blocks/template/title.php';
335 }
336 // Meta
337 if ($attr['metaPosition'] =='top' ) {
338 include ULTP_PATH.'blocks/template/meta.php';
339 }
340 // Title
341 if ($title && $attr['titleShow'] && $attr['titlePosition'] == 0) {
342 include ULTP_PATH.'blocks/template/title.php';
343 }
344 // Large Excerpt
345 if ($idx == 0 && $attr['excerptShow']) {
346 $post_loop .= '<div class="ultp-block-excerpt">'.ultimate_post()->get_excerpt($post_id, $attr['showSeoMeta'], $attr['showFullExcerpt'], $attr['excerptLimit']).'</div>';
347 }
348 // Small Excerpt
349 if ($idx != 0 && $attr['showSmallExcerpt']) {
350 $post_loop .= '<div class="ultp-block-excerpt">'.ultimate_post()->get_excerpt($post_id, $attr['showSeoMeta'], $attr['showFullExcerpt'], $attr['smallExcerptLimit']).'</div>';
351 }
352 // Read More
353 if ($attr['readMore'] && ($idx == 0 || $attr['showSmallBtn'])) {
354 $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>';
355 }
356 // Bottom
357 if ($attr['metaPosition'] =='bottom' ) {
358 include ULTP_PATH.'blocks/template/meta.php';
359 }
360 $post_loop .= '</div>';
361 $post_loop .= '</div>';
362 if($post_video && $attr['enablePopup'] && ($attr['layout'] != 'layout1' && $attr['layout'] != 'layout4' || $idx == 0)) {
363 include ULTP_PATH.'blocks/template/video_popup.php';
364 }
365 $post_loop .= '</'.$attr['contentTag'].'>';
366
367 if ($idx == 0) {
368 $bigloop = $post_loop;
369 $post_loop = '';
370 }
371
372 $idx ++;
373 endwhile;
374 if($attr['queryUnique']) {
375 $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>";
376 }
377 $bigloop = '<div class="ultp-big-post-module2">'.$bigloop.'</div>';
378 $post_loop = $bigloop.'<div class="ultp-small-post-module2">'.$post_loop.'</div>';
379
380 $wraper_after .= '</div>';//ultp-block-items-wrap
381 $wraper_after .= '</div>';
382 $wraper_after .= '</div>';
383
384 wp_reset_query();
385 }else {
386 $wraper_before .= ultimate_post()->get_no_result_found_html( $attr['notFoundMessage'] );
387 }
388
389 return $noAjax ? $post_loop : $wraper_before.$post_loop.$wraper_after;
390 }
391 }