PluginProbe
wpForo Forum / 3.1.6
wpForo Forum v3.1.6
3.1.6 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 All 138 releases
wpforo / themes / classic / recent.php

recent.php in wpForo Forum 3.1.6, at themes/classic/recent.php

335 lines 16.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 // Exit if accessed directly
4 if( ! defined( 'ABSPATH' ) ) exit;
5
6 $args = [];
7 $view = false;
8 $items_count = 0;
9 $paged = 1;
10 $prefix_query = '';
11 if( ! empty( WPF()->GET['view'] ) ) $view = sanitize_title( WPF()->GET['view'] );
12 if( ! empty( WPF()->GET['wpfpaged'] ) ) $paged = intval( WPF()->GET['wpfpaged'] );
13 if( ! empty( WPF()->GET['wpff'] ) ) $args['forumid'] = intval( WPF()->GET['wpff'] );
14 if( ! empty( WPF()->GET['prefixid'] ) ) {
15 $args['prefixid'] = intval( WPF()->GET['prefixid'] );
16 $prefix_query = '&prefixid=' . $args['prefixid'];
17 }
18
19 $type = ( $view && $view !== 'unapproved' ? 'topics' : wpforo_setting( 'topics', 'recent_posts_type' ) );
20 if( $view === 'unapproved' ) $type = 'posts';
21 if( $view === 'prefix' ) $type = 'topics';
22 if( ! is_user_logged_in() || ! WPF()->usergroup->can( 'aum' ) ) {
23 $args['private'] = 0;
24 $args['status'] = 0;
25 }
26 $days = apply_filters( 'wpforo_recent_posts_limit', 30 );
27
28 if( $type === 'topics' ) {
29 $end_date = time() - ( intval( $days ) * 24 * 60 * 60 );
30 if( wpfval( $args, 'prefixid' ) ) $args['prefix'] = (int) wpfval( $args, 'prefixid' );
31 $args['where'] = "`modified` > '" . gmdate( 'Y-m-d H:i:s', $end_date ) . "'";
32 $args['orderby'] = ( ! empty( WPF()->GET['wpfob'] ) ) ? wpforo_sanitize_orderby( WPF()->GET['wpfob'], 'topics', 'modified' ) : 'modified';
33 $args['order'] = 'DESC';
34 $args['offset'] = ( $paged - 1 ) * wpforo_setting( 'topics', 'topics_per_page' );
35 $args['row_count'] = wpforo_setting( 'topics', 'topics_per_page' );
36
37 switch( $view ) {
38 case 'unread':
39 $args['read'] = false;
40 break;
41 case 'no-replies':
42 $args['where'] = null;
43 $args['include'] = wpforo_get_not_replied_topicids();
44 break;
45 case 'solved':
46 $args['solved'] = 1;
47 break;
48 case 'unsolved':
49 $args['solved'] = 0;
50 break;
51 case 'closed':
52 $args['closed'] = 1;
53 break;
54 case 'opened':
55 $args['closed'] = 0;
56 break;
57 case 'sticky':
58 $args['type'] = 1;
59 break;
60 case 'private':
61 $args['private'] = 1;
62 break;
63 case 'unapproved':
64 $args['status'] = 1;
65 break;
66 case 'prefix':
67 $args['where'] = null;
68 break;
69 }
70 $topics = $view === 'no-replies' && empty( $args['include'] ) ? [] : WPF()->topic->get_topics( $args, $items_count );
71 } else {
72 $end_date = time() - ( intval( $days ) * 24 * 60 * 60 );
73 if( $view !== 'unapproved' ) $args['where'] = "`created` > '" . gmdate( 'Y-m-d H:i:s', $end_date ) . "'";
74 $args['orderby'] = ( ! empty( WPF()->GET['wpfob'] ) ) ? wpforo_sanitize_orderby( WPF()->GET['wpfob'], 'posts', 'created' ) : 'created';
75 $args['order'] = 'DESC';
76 $args['offset'] = ( $paged - 1 ) * wpforo_setting( 'topics', 'posts_per_page' );
77 $args['row_count'] = wpforo_setting( 'topics', 'posts_per_page' );
78 switch( $view ) {
79 case 'unapproved':
80 $args['status'] = 1;
81 break;
82 }
83 $posts = WPF()->post->get_posts( $args, $items_count );
84 }
85 ?>
86 <div class="wpforo-recent-wrap">
87 <div class="wpf-head-bar">
88 <div class="wpf-head-top">
89 <h1 id="wpforo-title">
90 <?php
91 switch( $view ) {
92 case 'unread':
93 $page_title = wpforo_phrase( 'Unread Posts', false );
94 break;
95 case 'no-replies':
96 $page_title = wpforo_phrase( 'Not Replied Topics', false );
97 break;
98 case 'solved':
99 $page_title = wpforo_phrase( 'Solved Topics', false );
100 break;
101 case 'unsolved':
102 $page_title = wpforo_phrase( 'Unsolved Topics', false );
103 break;
104 case 'closed':
105 $page_title = wpforo_phrase( 'Closed Topics', false );
106 break;
107 case 'opened':
108 $page_title = wpforo_phrase( 'Open Topics', false );
109 break;
110 case 'sticky':
111 $page_title = wpforo_phrase( 'Sticky Topics', false );
112 break;
113 case 'private':
114 $page_title = wpforo_phrase( 'Private Topics', false );
115 break;
116 case 'unapproved':
117 $page_title = wpforo_phrase( 'Unapproved Posts', false );
118 break;
119 default:
120 $page_title = wpforo_phrase( 'Recent Posts', false );
121 break;
122 }
123 ?>
124 <?php echo apply_filters( 'wpforo_recent_posts_page_title', $page_title, $args, $view ); ?>
125 </h1>
126 <div class="wpforo-feed" style="float: none;">
127 <?php if( wpforo_setting( 'rss', 'feed' ) ): ?>
128 <span class="wpf-feed-forums">
129 <a href="<?php WPF()->feed->rss2_url( true, 'forum' ); ?>" title="<?php wpforo_phrase( 'Forums RSS Feed' ) ?>" target="_blank">
130 <span><?php wpforo_phrase( 'Forums' ) ?></span> <i class="fas fa-rss wpfsx"></i>
131 </a>
132 </span>
133 <sep> &nbsp;|&nbsp;</sep>
134 <span class="wpf-feed-topics">
135 <a href="<?php WPF()->feed->rss2_url( true, 'topic' ); ?>" title="<?php wpforo_phrase( 'Topics RSS Feed' ) ?>" target="_blank">
136 <span><?php wpforo_phrase( 'Topics' ) ?></span> <i class="fas fa-rss wpfsx"></i>
137 </a>
138 </span>
139 <?php endif; ?>
140 </div>
141 </div>
142 <div class="wpf-head-bottom">
143 <div class="wpf-head-prefix">
144 <?php do_action( 'wpforo_recent_posts_page_under_head', $args, $view ); ?>
145 </div>
146 <div class="wpf-head-buttons">
147 <div class="wpf-head-filter">
148 <select onchange="window.location.assign(this.value)">
149 <option value="?view=<?php echo $prefix_query ?>" <?php wpfo_check( $view, 'recent', 'selected' ) ?>>
150 <?php wpforo_phrase( 'Recent Posts' ) ?>
151 </option>
152 <option value="?view=unread<?php echo $prefix_query ?>" <?php wpfo_check( $view, 'unread', 'selected' ) ?>>
153 <?php wpforo_phrase( 'Unread Posts' ) ?>
154 </option>
155 <option value="?view=no-replies<?php echo $prefix_query ?>" <?php wpfo_check( $view, 'no-replies', 'selected' ) ?>>
156 <?php wpforo_phrase( 'Not Replied Topics' ) ?>
157 </option>
158 <option value="?view=solved<?php echo $prefix_query ?>" <?php wpfo_check( $view, 'solved', 'selected' ) ?>>
159 <?php wpforo_phrase( 'Solved Topics' ) ?>
160 </option>
161 <option value="?view=unsolved<?php echo $prefix_query ?>" <?php wpfo_check( $view, 'unsolved', 'selected' ) ?>>
162 <?php wpforo_phrase( 'Unsolved Topics' ) ?>
163 </option>
164 <option value="?view=closed<?php echo $prefix_query ?>" <?php wpfo_check( $view, 'closed', 'selected' ) ?>>
165 <?php wpforo_phrase( 'Closed Topics' ) ?>
166 </option>
167 <option value="?view=opened<?php echo $prefix_query ?>" <?php wpfo_check( $view, 'opened', 'selected' ) ?>>
168 <?php wpforo_phrase( 'Open Topics' ) ?>
169 </option>
170 <option value="?view=sticky<?php echo $prefix_query ?>" <?php wpfo_check( $view, 'sticky', 'selected' ) ?>>
171 <?php wpforo_phrase( 'Sticky Topics' ) ?>
172 </option>
173 <?php if( wpforo_current_user_is( 'admin' ) || wpforo_current_user_is( 'moderator' ) ): ?>
174 <option value="?view=private<?php echo $prefix_query ?>" <?php wpfo_check( $view, 'private', 'selected' ) ?>>
175 <?php wpforo_phrase( 'Private Topics' ) ?>
176 </option>
177 <option value="?view=unapproved<?php echo $prefix_query ?>" <?php wpfo_check( $view, 'unapproved', 'selected' ) ?>>
178 <?php wpforo_phrase( 'Unapproved Posts' ) ?>
179 </option>
180 <?php endif; ?>
181 </select>
182 </div>
183 <div class="wpf-snavi">
184 <?php WPF()->tpl->pagenavi( $paged, $items_count, $args['row_count'], false ); ?>
185 </div>
186 </div>
187 </div>
188 </div>
189 <?php if( $type === 'topics' ): ?>
190 <div class="wpforo-recent-content wpfr-topics">
191 <?php if( ! empty( $topics ) ): ?>
192 <table width="100%" border="0" cellspacing="0" cellpadding="0">
193 <tr class="wpf-htr">
194 <td class="wpf-shead-avatar">&nbsp;</td>
195 <td class="wpf-shead-title"><?php wpforo_phrase( 'Topic Title' ) ?></td>
196 <td class="wpf-shead-forum"><?php wpforo_phrase( 'Forum' ) ?></td>
197 </tr>
198 <?php foreach( $topics as $topic ) : $topicid = $topic['topicid']; ?>
199 <?php
200 $posts = [];
201 $member = wpforo_member( $topic );
202 $forum = wpforo_forum( $topic['forumid'] );
203 if( isset( $topic['last_post'] ) && $topic['last_post'] != 0 ) {
204 $last_post = wpforo_post( $topic['last_post'] );
205 $last_poster = wpforo_member( $last_post );
206 }
207 if( isset( $topic['first_postid'] ) && $topic['first_postid'] != 0 ) {
208 $first_post = wpforo_post( $topic['first_postid'] );
209 $intro_posts = wpforo_setting( 'topics', 'layout_extended_intro_posts_count' );
210 if( $intro_posts < 1 ) {
211 $intro_posts = null;
212 } else {
213 $intro_posts = ( $intro_posts > 1 ) ? ( $intro_posts - 1 ) : $intro_posts = 0;
214 }
215 $first_poster = wpforo_member( $first_post );
216 if( ! $view && apply_filters( 'wpforo_recent_topics_intro', true, $topic ) ) {
217 $posts = WPF()->post->get_posts( [ 'topicid' => $topic['topicid'], 'orderby' => '`is_first_post` ASC, `created` DESC, `postid` DESC', 'row_count' => $intro_posts ] );
218 }
219 }
220 $topic_url = wpforo_topic( $topic['topicid'], 'url' );
221 $topic_posturl = ( $view == 'unread' && wpfval( $last_post, 'url' ) ) ? $last_post['url'] : WPF()->topic->get_url( $topicid );
222 $post_toglle = wpforo_setting( 'topics', 'layout_extended_intro_posts_toggle' );
223 ?>
224 <tr class="wpf-ttr <?php wpforo_unread( $topic['topicid'], 'topic' ); ?>">
225 <td class="wpf-spost-avatar">
226 <?php if( WPF()->usergroup->can( 'va' ) && wpforo_setting( 'profiles', 'avatars' ) ): ?>
227 <?php echo wpforo_user_avatar( $member, 30 ) ?>
228 <?php endif; ?>
229 </td>
230 <td class="wpf-spost-title">
231 <?php wpforo_topic_title( $topic, $topic_url, '{i}{p}{au}{t}{/a}{n}{v}', true, 'wpf-spost-title-link' ) ?>
232 <p style="font-size:12px"><?php wpforo_member_link( $member, 'by' ); ?> <?php if( wpfkey( $topic, 'created' ) ) wpforo_date( $topic['created'] ); ?> &nbsp;|&nbsp; <span
233 style="text-transform: lowercase;"><?php wpforo_phrase( 'Last post' ) ?>:</span> <?php if( wpfkey( $last_post, 'created' ) ) wpforo_date(
234 $last_post['created']
235 ); ?></p>
236 </td>
237 <td class="wpf-spost-forum"><a href="<?php echo $forum['url'] ?>"><?php echo esc_html( $forum['title'] ); ?></a></td>
238 </tr>
239 <?php if( ! empty( $posts ) && is_array( $posts ) ) : ?>
240 <tr class="wpf-ptr">
241 <td class="wpf-spost-icon">&nbsp;</td>
242 <td colspan="2" class="wpf-stext">
243 <ul>
244 <?php foreach( $posts as $post ) : ?>
245 <?php $poster = wpforo_member( $post ); ?>
246 <li>
247
248 <i class="fas fa-reply fa-rotate-180 wpfsx wpfcl-0"></i> &nbsp; <a href="<?php echo esc_url( (string) wpforo_post( $post['postid'], 'url' ) ); ?>"
249 title="<?php wpforo_phrase( 'REPLY:' ) ?> <?php echo esc_html(
250 wpforo_text( $post['body'], 100, false )
251 ) ?>"><?php echo( ( $post_body = esc_html(
252 wpforo_text( $post['body'], wpforo_setting( 'topics', 'layout_extended_intro_posts_length' ), false )
253 ) ) ? $post_body : esc_html( $post['title'] ) ) ?></a>
254 <div class="wpf-spost-topic-recent-posts"><?php wpforo_date( $post['created'] ); ?>&nbsp; <?php wpforo_member_link( $poster, 'by %s', 5 ); ?> </div>
255 <br class="wpf-clear">
256 </li>
257 <?php endforeach ?>
258 <?php if( intval( $topic['posts'] ) > ( $intro_posts + 1 ) ): ?>
259 <li style="text-align:right;"><a href="<?php echo esc_url( (string) $topic_url ) ?>"><?php wpforo_phrase( 'view all posts', true, 'lower' ); ?> <i
260 class="fas fa-angle-right" aria-hidden="true"></i></a></li>
261 <?php endif ?>
262 </ul>
263 </td>
264 </tr>
265 <?php else: ?>
266 <tr class="wpf-tr-sep">
267 <td colspan="3" style="height: 2px;"></td>
268 </tr>
269 <?php endif; ?>
270 <?php endforeach ?>
271 </table>
272 <?php else: ?>
273 <?php if( $view == 'unread' ): ?>
274 <p class="wpf-p-error"><?php wpforo_phrase( 'No unread posts were found' ) ?> </p>
275 <?php else: ?>
276 <p class="wpf-p-error"><?php wpforo_phrase( 'No topics were found here' ) ?> </p>
277 <?php endif; ?>
278 <?php endif; ?>
279 </div>
280 <?php else: ?>
281 <div class="wpforo-recent-content wpfr-posts">
282 <?php if( ! empty( $posts ) ): ?>
283 <table width="100%" border="0" cellspacing="0" cellpadding="0">
284 <tr class="wpf-htr">
285 <td class="wpf-shead-avatar">&nbsp;</td>
286 <td class="wpf-shead-title"><?php wpforo_phrase( 'Post Title' ) ?></td>
287 <td class="wpf-shead-forum"><?php wpforo_phrase( 'Forum' ) ?></td>
288 </tr>
289 <?php foreach( $posts as $post ) : $postid = $post['postid']; $title = $post['title']; ?>
290 <?php
291 $member = wpforo_member( $post );
292 $forum = wpforo_forum( $post['forumid'] );
293 ?>
294 <tr class="wpf-ttr <?php wpforo_unread( $post['topicid'], 'post', true, $post['postid'] ); ?>">
295 <td class="wpf-spost-avatar">
296 <?php if( WPF()->usergroup->can( 'va' ) && wpforo_setting( 'profiles', 'avatars' ) ): ?>
297 <?php echo wpforo_user_avatar( $member, 40 ) ?>
298 <?php endif; ?>
299 </td>
300 <td class="wpf-spost-title">
301 <a href="<?php echo esc_url( WPF()->post->get_url( $postid ) ) ?>" class="wpf-spost-title-link"
302 title="<?php wpforo_phrase( 'View entire post' ) ?>"><?php echo esc_html( $title ) ?> &nbsp;<i class="fas fa-chevron-right" style="font-size:11px;"></i></a>
303 <p style="font-size:12px"><?php wpforo_member_link( $member, 'by' ); ?>, <?php wpforo_date( $post['created'] ); ?></p>
304 </td>
305 <td class="wpf-spost-forum"><a href="<?php echo $forum['url'] ?>"><?php echo esc_html( $forum['title'] ); ?></a></td>
306 </tr>
307 <?php if( apply_filters( 'wpforo_recent_posts_intro', true, $post ) ): ?>
308 <tr class="wpf-ptr">
309 <td class="wpf-spost-icon">&nbsp;</td>
310 <td colspan="2" class="wpf-stext">
311 <?php
312 $body = wpforo_content_filter( $body, $post );
313 $body = preg_replace( '#\[attach][^\[\]]*\[/attach]#i', '', strip_tags( $body ) );
314 wpforo_text( $body, 200 );
315 ?>
316 </td>
317 </tr>
318 <?php endif; ?>
319 <?php endforeach ?>
320 </table>
321 <?php else: ?>
322 <p class="wpf-p-error"><?php wpforo_phrase( 'No posts were found here' ) ?> </p>
323 <?php endif; ?>
324 </div>
325 <?php endif; ?>
326
327 <div class="wpf-snavi">
328 <?php WPF()->tpl->pagenavi( $paged, $items_count, $args['row_count'], false ); ?>
329 </div>
330
331 </div>
332 <p>&nbsp;</p>
333 <p>&nbsp;</p>
334 <p>&nbsp;</p>
335