PluginProbe
wpForo Forum / 3.1.5
wpForo Forum v3.1.5
3.1.5 3.1.4 3.1.2 3.1.1 3.1.0 3.0.9 3.0.8 3.0.7 trunk 1.0.0 1.0.1 1.0.2 1.1.0 1.1.1 1.1.2 1.2.0 1.3.0 1.3.1 1.4.0 1.4.1 1.4.10 1.4.11 1.4.12 1.4.13 1.4.2 All 137 releases
wpforo / blocks / recent-posts / render.php

render.php in wpForo Forum 3.1.5, at blocks/recent-posts/render.php

95 lines 3.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 if( ! defined( 'ABSPATH' ) ) exit;
3
4 /**
5 * @var array $attributes The block attributes.
6 * @var string $content The block default content.
7 * @var WP_Block $block The block instance.
8 */
9
10 $default_instance = [
11 'boardid' => 0,
12 'title' => 'Recent Posts',
13 'forumids' => [],
14 'orderby' => 'created',
15 'order' => 'DESC',
16 'count' => 9,
17 'limit_per_topic' => 0,
18 'display_avatar' => true,
19 'forumids_filter' => false,
20 'current_forumid_filter' => false,
21 'exclude_firstposts' => false,
22 'display_only_unread' => false,
23 'display_new_indicator' => false,
24 'refresh_interval' => 0,
25 'excerpt_length' => 55,
26 ];
27
28 $allowed_orderby = [ 'created', 'modified' ];
29 $allowed_order = [ 'DESC', 'ASC', 'RAND' ];
30
31 $instance = wp_parse_args( $attributes, $default_instance );
32
33 if( ! is_string( $instance['orderby'] ) || ! in_array( $instance['orderby'], $allowed_orderby, true ) ) {
34 $instance['orderby'] = $default_instance['orderby'];
35 }
36 if( ! is_string( $instance['order'] ) || ! in_array( $instance['order'], $allowed_order, true ) ) {
37 $instance['order'] = $default_instance['order'];
38 }
39
40 // wpForo Recent Posts widget logic
41 wp_enqueue_script( 'wpforo-widgets-js' );
42
43 $is_user_logged_in = (bool) WPF()->current_userid;
44 if( $instance['display_only_unread'] ) {
45 $display_block = $is_user_logged_in;
46 $display_block = apply_filters( 'wpforo_widget_display_recent_posts', $display_block );
47 } else {
48 $display_block = true;
49 }
50
51 if( ! $display_block ) return;
52
53 if( $instance['current_forumid_filter'] && $instance['boardid'] === WPF()->board->get_current( 'boardid' ) && $current_forumid = wpfval(
54 WPF()->current_object,
55 'forumid'
56 ) ) {
57 $instance['forumids'] = (array) $current_forumid;
58 }
59
60 $data = [
61 'boardid' => $instance['boardid'],
62 'action' => 'wpforo_load_ajax_widget_RecentPosts',
63 'instance' => $instance,
64 'post_args' => [
65 'forumids' => ( $instance['forumids'] ?: $default_instance['forumids'] ),
66 'orderby' => $instance['orderby'],
67 'order' => $instance['order'],
68 'row_count' => ( intval( $instance['count'] ) ?: $default_instance['count'] ),
69 'limit_per_topic' => ( intval( $instance['limit_per_topic'] ) ?: $default_instance['limit_per_topic'] ),
70 'is_first_post' => $instance['exclude_firstposts'] ? false : null,
71 'check_private' => true,
72 ],
73 ];
74
75 if( WPF()->board->get_current( 'boardid' ) === (int) $instance['boardid'] ) {
76 $recent_posts_widget = new \wpforo\widgets\RecentPosts();
77 $html = $recent_posts_widget->get_widget( $data['instance'], $data['post_args'] );
78 $onload = false;
79 } else {
80 $html = '<div style="text-align: center; font-size: 20px;"><i class="fas fa-spinner fa-spin"></i></div>';
81 $onload = true;
82 $data['referer'] = home_url();
83 }
84
85 $json = json_encode( $data );
86 ?>
87 <div id="wpf-widget-recent-replies" class="wpforo-block-recent-posts wpforo-widget-wrap">
88 <?php if( ! empty( $instance['title'] ) ) : ?>
89 <h3 class="widget-title"><?php echo apply_filters( 'widget_title', $instance['title'] ); ?></h3>
90 <?php endif; ?>
91 <div class="wpforo-widget-content wpforo-ajax-widget <?php echo( ! $onload ? 'wpforo-ajax-widget-onload-false' : '' ); ?>" data-json="<?php echo esc_attr( $json ); ?>">
92 <?php echo $html; ?>
93 </div>
94 </div>
95