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_1.php

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

389 lines 21.0 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' => '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 '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
184 public function register() {
185 register_block_type( 'ultimate-post/post-module-1',
186 array(
187 'editor_script' => 'ultp-blocks-editor-script',
188 'editor_style' => 'ultp-blocks-editor-css',
189 'render_callback' => array($this, 'content')
190 )
191 );
192 }
193
194 public function content($attr, $noAjax) {
195 $attr = wp_parse_args($attr, $this->get_attributes());
196 global $unique_ID;
197
198 if (!$noAjax) {
199 $paged = is_front_page() ? get_query_var('page') : get_query_var('paged');
200 $attr['paged'] = $paged ? $paged : 1;
201 }
202 if($attr['queryUnique'] && isset($attr['savedQueryUnique'])) {
203 $unique_ID = $attr['savedQueryUnique'];
204 }
205
206 $bigloop = '';
207 $block_name = 'post-module-1';
208 $wraper_before = $wraper_after = $post_loop = '';
209 $attr['queryNumber'] = ultimate_post()->get_post_number(5, $attr['queryNumber'], $attr['queryNumPosts']);
210 $recent_posts = new \WP_Query( ultimate_post()->get_query( $attr ) );
211 $pageNum = ultimate_post()->get_page_number($attr, $recent_posts->found_posts);
212 // Dummy Img Url
213 $dummy_url = ULTP_URL.'assets/img/ultp-fallback-img.png';
214
215 // Loadmore and Unique content
216 if($attr['queryUnique'] && isset($attr['loadMoreQueryUnique']) && $attr['paginationShow'] && ($attr['paginationType'] == 'loadMore')) {
217 $unique_ID = $attr['loadMoreQueryUnique'];
218 $current_unique_posts = $attr['ultp_current_unique_posts'];
219 }
220
221 $attr['className'] = isset($attr['className']) && $attr['className'] ? preg_replace('/[^A-Za-z0-9_ -]/', '', $attr['className']) : '';
222 $attr['align'] = isset($attr['align']) && $attr['align'] ? preg_replace('/[^A-Za-z0-9_ -]/', '', $attr['align']) : '';
223 $attr['advanceId'] = isset($attr['advanceId']) ? sanitize_html_class( $attr['advanceId'] ) : '';
224 $attr['blockId'] = isset($attr['blockId']) ? sanitize_html_class( $attr['blockId'] ) : '';
225 $attr['contentTag'] = in_array( $attr['contentTag'], ultimate_post()->ultp_allowed_block_tags() ) ? $attr['contentTag'] : 'div';
226 $attr['layout'] = sanitize_html_class( $attr['layout'] );
227 $attr['imgAnimation'] = sanitize_html_class( $attr['imgAnimation'] );
228 $attr['imgOverlayType'] = sanitize_html_class( $attr['imgOverlayType'] );
229 $attr['popupAutoPlay'] = $attr['popupAutoPlay'] == true ;
230 $attr['readMoreText'] = wp_kses($attr['readMoreText'], ultimate_post()->ultp_allowed_html_tags());
231 $attr['varticalAlign'] = sanitize_html_class( $attr['varticalAlign'] );
232
233 if ($recent_posts->have_posts()) {
234
235 $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"]:'' ).'">';
236 $wraper_before .= '<div class="ultp-block-wrapper">';
237
238 // Loading
239 $wraper_before .= ultimate_post()->loading();
240
241 if ($attr['headingShow'] || $attr['filterShow'] || $attr['paginationShow']) {
242 $wraper_before .= '<div class="ultp-heading-filter">';
243 $wraper_before .= '<div class="ultp-heading-filter-in">';
244
245 // Heading
246 include ULTP_PATH.'blocks/template/heading.php';
247
248 if ($attr['filterShow'] || $attr['paginationShow']) {
249 $wraper_before .= '<div class="ultp-filter-navigation">';
250 // Filter
251 if($attr['filterShow'] && $attr['queryType'] != 'posts' && $attr['queryType'] != 'customPosts') {
252 include ULTP_PATH.'blocks/template/filter.php';
253 }
254 // Navigation
255 if ($attr['paginationShow'] && ($attr['paginationType'] == 'navigation') && ($attr['navPosition'] == 'topRight')) {
256 include ULTP_PATH.'blocks/template/navigation-before.php';
257 }
258 $wraper_before .= '</div>';
259 }
260
261 $wraper_before .= '</div>';
262 $wraper_before .= '</div>';
263 }
264
265 $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'].'">';
266 $idx = 0; // $idx = $noAjax ? 1 : 0;
267 while ( $recent_posts->have_posts() ): $recent_posts->the_post();
268
269 include ULTP_PATH.'blocks/template/data.php';
270
271 include ULTP_PATH.'blocks/template/category.php';
272
273 if ($attr['queryUnique']) {
274 $unique_ID[$attr['queryUnique']][] = $post_id;
275 $current_unique_posts[] = $post_id;
276 }
277
278 $post_loop .= '<'.$attr['contentTag'].' class="ultp-block-item post-id-'.$post_id.'">';
279
280 $post_loop .= '<div class="ultp-block-content-wrap">';
281 if(($post_thumb_id || $attr['fallbackEnable']) && $attr['showImage'] && ($idx == 0 || $attr['layout'] == 'layout2' || $attr['layout'] == 'layout3' || $attr['layout'] == 'layout5')) {
282 $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 : '' ).'">';
283 if ($idx == 0) {
284 $post_loop .= '<a href="'.$titlelink.'" '.($attr['openInTab'] ? 'target="_blank"' : '').'>';
285 // Post Image Id
286 $block_img_id = $post_thumb_id ? $post_thumb_id : ($attr['fallbackEnable'] && isset($attr['fallbackImg']['id']) ? $attr['fallbackImg']['id'] : '');
287 // Post Image
288 if($post_thumb_id || ($attr['fallbackEnable'] && $block_img_id)) {
289 $post_loop .= ultimate_post()->get_image($block_img_id, $attr['imgCrop'], '', $title, $attr['imgSrcset'], $attr['imgLazy']);
290 } else {
291 $video = ultimate_post()->get_youtube_id($post_video);
292 $post_loop .= '<img src="'.($video ? 'https://img.youtube.com/vi/'.$video.'/0.jpg' : $dummy_url).'" alt="dummy-img" />';
293 }
294 $post_loop .= '</a>';
295 if($post_video){
296 $post_loop .= '<div enableAutoPlay="'.$attr['popupAutoPlay'].'" class="ultp-video-icon">'.ultimate_post()->svg_icon('play_line').'</div>';
297 }
298 } else {
299 if ($attr['layout'] == 'layout2' || $attr['layout'] == 'layout3' || $attr['layout'] == 'layout5') {
300 $post_loop .= '<a href="'.$titlelink.'" '.($attr['openInTab'] ? 'target="_blank"' : '').'>';
301 // Post Image Id
302 $block_img_id = $post_thumb_id ? $post_thumb_id : ($attr['fallbackEnable'] && isset($attr['fallbackImg']['id']) ? $attr['fallbackImg']['id'] : '');
303 // Post Image
304 if($post_thumb_id || ($attr['fallbackEnable'] && $block_img_id)) {
305 $post_loop .= ultimate_post()->get_image($block_img_id, $attr['imgCropSmall'], '', $title, $attr['imgSrcset'], $attr['imgLazy']);
306 } else {
307 $video = ultimate_post()->get_youtube_id($post_video);
308 $post_loop .= '<img src="'.($video ? 'https://img.youtube.com/vi/'.$video.'/0.jpg' : $dummy_url).'" alt="dummy-img" />';
309 }
310 $post_loop .= '</a>';
311 if($post_video){
312 $post_loop .= '<div enableAutoPlay="'.$attr['popupAutoPlay'].'" class="ultp-video-icon">'.ultimate_post()->svg_icon('play_line').'</div>';
313 }
314 }
315 }
316 if (($attr['catPosition'] != 'aboveTitle') && ($idx == 0 || $attr['showSmallCat']) && $attr['catShow'] ) {
317 $post_loop .= '<div class="ultp-category-img-grid">'.$category.'</div>';
318 }
319 $post_loop .= '</div>';
320 }
321 $post_loop .= '<div class="ultp-block-content">';
322 // Category
323 if (($attr['catPosition'] == 'aboveTitle') && ($idx == 0 || $attr['showSmallCat'] ) && $attr['catShow']) {
324 $post_loop .= $category;
325 }
326 // Title
327 if ($title && $attr['titleShow'] && $attr['titlePosition'] == 1) {
328 include ULTP_PATH.'blocks/template/title.php';
329 }
330 // Meta
331 if ($attr['metaPosition'] =='top' ) {
332 include ULTP_PATH.'blocks/template/meta.php';
333 }
334 // Title
335 if ($title && $attr['titleShow'] && $attr['titlePosition'] == 0) {
336 include ULTP_PATH.'blocks/template/title.php';
337 }
338 // Excerpt
339 if (($idx == 0 || $attr['showSmallExcerpt']) && $attr['excerptShow']) {
340 $post_loop .= '<div class="ultp-block-excerpt">'.ultimate_post()->get_excerpt($post_id, $attr['showSeoMeta'], $attr['showFullExcerpt'], $attr['excerptLimit']).'</div>';
341 }
342
343 // Read More
344 if ($attr['readMore'] && ($idx == 0 || $attr['showSmallBtn'])) {
345 $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>';
346 }
347 // Bottom
348 if ($attr['metaPosition'] =='bottom' ) {
349 include ULTP_PATH.'blocks/template/meta.php';
350 }
351 $post_loop .= '</div>';
352 $post_loop .= '</div>';
353 if($post_video && $attr['enablePopup'] && ($attr['layout'] != 'layout1' && $attr['layout'] != 'layout4' || $idx == 0)) {
354 include ULTP_PATH.'blocks/template/video_popup.php';
355 }
356 $post_loop .= '</'.$attr['contentTag'].'>';
357
358 if ($idx == 0) {
359 $bigloop = $post_loop;
360 $post_loop = '';
361 }
362
363 $idx ++;
364 endwhile;
365 if($attr['queryUnique']) {
366 $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>";
367 }
368 $bigloop = '<div class="ultp-big-post-module1">'.$bigloop.'</div>';
369 $post_loop = $bigloop.'<div class="ultp-small-post-module1">'.$post_loop.'</div>';
370
371 $wraper_after .= '</div>';//ultp-block-items-wrap
372
373 // Navigation
374 if ($attr['paginationShow'] && ($attr['paginationType'] == 'navigation') && ($attr['navPosition'] != 'topRight')) {
375 include ULTP_PATH.'blocks/template/navigation-after.php';
376 }
377
378 $wraper_after .= '</div>';
379 $wraper_after .= '</div>';
380
381 wp_reset_query();
382 }else {
383 $wraper_before .= ultimate_post()->get_no_result_found_html( $attr['notFoundMessage'] );
384 }
385
386 return $noAjax ? $post_loop : $wraper_before.$post_loop.$wraper_after;
387 }
388
389 }