PluginProbe
wpForo Forum / 3.2.0
wpForo Forum v3.2.0
3.2.0 3.1.7 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 All 140 releases
wpforo / themes / 2026 / layouts / 3 / forum.php

forum.php in wpForo Forum 3.2.0, at themes/2026/layouts/3/forum.php

208 lines 12.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 // Exit if accessed directly
3 if( ! defined( 'ABSPATH' ) ) exit;
4
5 /**
6 *
7 * @layout: QA
8 * @url: http://gvectors.com/
9 * @version: 1.0.0
10 * @author: gVectors Team
11 * @description: Q&A Layout turns your forum to a powerful question and answer discussion board.
12 *
13 */
14
15 $cover_styles = wpforo_get_forum_cover_styles( $cat );
16 ?>
17
18 <div class="wpfl-3 wpforo-section">
19 <div class="wpforo-category" <?php echo $cover_styles['cover'] ?>>
20 <div class="wpforo-cat-panel" <?php echo $cover_styles['blur'] ?>>
21 <div class="cat-title" title="<?php echo esc_attr( strip_tags( $cat['description'] ) ); ?>">
22 <span class="cat-name" <?php echo $cover_styles['title'] ?>><?php echo esc_html( $cat['title'] ); ?></span>
23 </div>
24 <?php if( WPF()->current_object['template'] === 'forum' ) wpforo_template_add_topic_button( $cat['forumid'] ); ?>
25 </div>
26 </div>
27
28 <?php if( WPF()->current_object['template'] === 'forum' ) wpforo_template_topic_portable_form( $cat['forumid'] ); ?>
29
30 <?php
31 $forum_list = false;
32 foreach( $forums as $key => $forum ) :
33 if( ! WPF()->perm->forum_can( 'vf', $forum['forumid'] ) ) continue;
34 $forum_list = true;
35
36 $sub_forums = WPF()->forum->get_forums( [ "parentid" => $forum['forumid'], "type" => 'forum' ] );
37 $has_sub_forums = is_array( $sub_forums ) && ! empty( $sub_forums );
38
39 $topics = WPF()->topic->get_topics(
40 apply_filters(
41 'wpforo_tpl_l3_forum_loop_intro_topics_get_args',
42 [ "forumid" => $forum['forumid'], "orderby" => "type, modified", "order" => "DESC", "row_count" => wpforo_setting( 'forums', 'layout_qa_intro_topics_count' ) ]
43 )
44 );
45 $has_topics = is_array( $topics ) && ! empty( $topics );
46
47 $data = wpforo_forum( $forum['forumid'], 'childs' );
48 $counts = wpforo_forum( $forum['forumid'], 'counts' );
49
50 $forum_url = wpforo_forum( $forum['forumid'], 'url' );
51 $topic_toglle = wpforo_setting( 'forums', 'layout_qa_intro_topics_toggle' );
52
53 if( ! empty( $forum['icon'] ) ) {
54 $forum['icon'] = trim( (string) $forum['icon'] );
55 if( strpos( (string) $forum['icon'], ' ' ) === false ) $forum['icon'] = 'fas ' . $forum['icon'];
56 }
57 $forum_icon = ( isset( $forum['icon'] ) && $forum['icon'] ) ? $forum['icon'] : 'fas fa-comments';
58 ?>
59
60 <div id="wpf-forum-<?php echo $forum['forumid'] ?>" class="forum-wrap <?php wpforo_unread( $forum['forumid'], 'forum' ) ?>">
61 <div class="wpforo-forum">
62 <div class="wpforo-forum-icon">
63 <div style="border: 2px solid <?php echo esc_attr( $forum['color'] ) ?>; border-radius: 50%; width: 44px; height: 44px; display: flex; justify-content: center; align-items: center;">
64 <i class="<?php echo esc_attr( $forum_icon ) ?>" style="color: <?php echo esc_attr( $forum['color'] ) ?>;"></i>
65 </div>
66 </div>
67 <div class="wpforo-forum-info">
68 <h3 class="wpforo-forum-title"><a href="<?php echo esc_url( (string) $forum_url ) ?>"><?php echo esc_html( $forum['title'] ); ?></a> <?php wpforo_viewing( $forum ); ?></h3>
69 <div class="wpforo-forum-description"><?php echo wp_kses_post( $forum['description'] ) ?></div>
70
71 <?php if( $has_sub_forums ) : ?>
72
73 <div class="wpforo-subforum">
74 <ul>
75 <li class="first"><?php wpforo_phrase( 'Subforums' ) ?>:</li>
76
77 <?php foreach( $sub_forums as $sub_forum ) :
78 if( ! WPF()->perm->forum_can( 'vf', $sub_forum['forumid'] ) ) continue;
79 if( ! empty( $sub_forum['icon'] ) ) {
80 $sub_forum['icon'] = trim( (string) $sub_forum['icon'] );
81 if( strpos( (string) $sub_forum['icon'], ' ' ) === false ) $sub_forum['icon'] = 'fas ' . $sub_forum['icon'];
82 }
83 $sub_forum_icon = ( isset( $sub_forum['icon'] ) && $sub_forum['icon'] ) ? $sub_forum['icon'] : 'fas fa-comments'; ?>
84
85 <li class="<?php wpforo_unread( $sub_forum['forumid'], 'forum' ) ?>">
86 <a href="<?php echo esc_url( (string) wpforo_forum( $sub_forum['forumid'], 'url' ) ) ?>" style="border-bottom: 2px solid <?php echo esc_attr( $sub_forum['color'] ) ?>; vertical-align: middle; text-decoration: none; padding-left: 1px;"><?php echo esc_html( $sub_forum['title'] ); ?>&nbsp;&nbsp;</a> <?php wpforo_viewing( $sub_forum ); ?>
87 </li>
88
89 <?php endforeach; ?>
90
91 </ul>
92 <br class="wpf-clear"/>
93 </div><!-- wpforo-subforum -->
94
95 <?php endif; ?>
96
97 </div><!-- wpforo-forum-info -->
98
99 <div class="wpforo-forum-stat">
100 <div class="wpft-row">
101 <div class="wpft-cell-left"><?php wpforo_phrase( 'Questions:' ) ?></div>
102 <div class="wpft-cell-right"><?php echo wpforo_print_number( $counts['topics'] ) ?></div>
103 </div>
104 <div class="wpft-row">
105 <div class="wpft-cell-left"><?php wpforo_phrase( 'Answers:' ) ?></div>
106 <div class="wpft-cell-right"><?php echo wpforo_print_number( WPF()->topic->get_sum_answer( $data ) ) ?></div>
107 </div>
108 <div class="wpft-row">
109 <div class="wpft-cell-left"><?php wpforo_phrase( 'Posts:' ) ?></div>
110 <div class="wpft-cell-right"><?php echo wpforo_print_number( $counts['posts'] ) ?></div>
111 </div>
112 <?php if( $has_topics ) : ?>
113 <div class="wpft-row">
114 <div class="wpft-cell-left wpfcl-6" style="margin-top:1px;">&nbsp;</div>
115 <div class="wpft-cell-right" style="color: rgb(67, 166, 223);font-size: 16px; cursor: pointer; line-height: 20px;">
116 <i id="img-arrow-<?php echo intval( $forum['forumid'] ) ?>" class="topictoggle fas fa-chevron-<?php echo( $topic_toglle == 1 ? 'up' : 'down' ); ?>"></i>
117 </div>
118 </div>
119 <?php endif ?>
120 </div>
121 </div><!-- wpforo-forum -->
122
123 <?php if( $has_topics ) : ?>
124
125 <div class="wpforo-last-topics-<?php echo intval( $forum['forumid'] ) ?>" style="display: <?php echo( $topic_toglle ? 'block' : 'none' ); ?>;">
126 <div class="wpforo-last-topics-tab"></div>
127 <div class="wpforo-last-topics-list">
128 <ul>
129 <?php foreach( $topics as $topic ) : ?>
130 <?php $member = wpforo_member( $topic ); ?>
131 <?php $topic_url = wpforo_topic( $topic['topicid'], 'url' ); ?>
132 <?php if( $topic_url && ! empty( $member ) ): ?>
133 <li class="<?php wpforo_topic_types( $topic );
134 wpforo_unread( $topic['topicid'], 'topic' ) ?>">
135 <div class="wpforo-last-topic wpfcl-2">
136 <div class="wpf-tbox votes <?php if( $topic['answers'] > 0 ) echo "wpfcl-4" ?>" wpf-tooltip="<?php wpforo_phrase( 'Votes' ) ?>" wpf-tooltip-position="top"
137 wpf-tooltip-size="small">
138 <div class="wpforo-label">
139 <svg class="<?php if( $topic['answers'] > 0 ) echo "wpfcl-4" ?>" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
140 <path d="M18.873,11.021H5.127a2.126,2.126,0,0,1-1.568-3.56L10.046.872a2.669,2.669,0,0,1,3.939.034l6.431,6.528a2.126,2.126,0,0,1-1.543,3.587ZM5.011,8.837a.115.115,0,0,0,0,.109.111.111,0,0,0,.114.075H18.873a.111.111,0,0,0,.114-.075.109.109,0,0,0-.022-.135L12.528,2.276A.7.7,0,0,0,12,2.021a.664.664,0,0,0-.5.221L5.01,8.838ZM12,24.011a2.667,2.667,0,0,1-1.985-.887L3.584,16.6a2.125,2.125,0,0,1,1.543-3.586H18.873a2.125,2.125,0,0,1,1.568,3.558l-6.487,6.589A2.641,2.641,0,0,1,12,24.011Zm-6.873-9a.125.125,0,0,0-.092.209l6.437,6.534a.7.7,0,0,0,.528.257.665.665,0,0,0,.5-.223l6.493-6.6h0a.112.112,0,0,0,0-.108.111.111,0,0,0-.114-.074Z"/>
141 </svg>
142 </div>
143 <div class="count"><?php echo intval( $topic['votes'] ) ?></div>
144 </div>
145 <div class="wpf-tbox answers <?php if( $topic['answers'] > 0 ) echo "wpfcl-5" ?>" wpf-tooltip="<?php wpforo_phrase( 'Answers' ) ?>"
146 wpf-tooltip-position="top" wpf-tooltip-size="small">
147 <div class="wpforo-label">
148 <svg class="<?php if( $topic['answers'] > 0 ) echo "wpfcl-5" ?>" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
149 <path d="M12.0867962,18 L6,21.8042476 L6,18 L4,18 C2.8954305,18 2,17.1045695 2,16 L2,4 C2,2.8954305 2.8954305,2 4,2 L20,2 C21.1045695,2 22,2.8954305 22,4 L22,16 C22,17.1045695 21.1045695,18 20,18 L12.0867962,18 Z M8,18.1957524 L11.5132038,16 L20,16 L20,4 L4,4 L4,16 L8,16 L8,18.1957524 Z M11,10.5857864 L15.2928932,6.29289322 L16.7071068,7.70710678 L11,13.4142136 L7.29289322,9.70710678 L8.70710678,8.29289322 L11,10.5857864 Z"
150 fill-rule="evenodd"/>
151 </svg>
152 </div>
153 <div class="count">
154 <?php echo intval( $topic['answers'] ) ?>
155 </div>
156 </div>
157 </div>
158 <div class="wpforo-last-topic-title">
159 <?php wpforo_topic_title( $topic, $topic_url, '{p}{au}{tc}{/a}{n}', true, '', wpforo_setting( 'forums', 'layout_qa_intro_topics_length' ) ) ?>
160 <div class="wpforo-topic-author">
161 <?php if( WPF()->usergroup->can( 'va' ) && wpforo_setting( 'profiles', 'avatars' ) ): ?>
162 <?php echo wpforo_user_avatar( $member, 40 ) ?>
163 <?php endif; ?>
164 <span class="wpforo-last-topic-info wpfcl-2">
165 <?php wpforo_member_link( $member, 'by' ); ?><span class="wpforo-date wpforo-date-ago">, <?php wpforo_date( $topic['modified'] ); ?></span>
166 </span>
167 </div>
168 <div class="wpforo-last-topic-bottom">
169 <span class="wpforo-last-topic-replies wpfcl-2">
170 <i class="fas fa-reply fa-rotate-180"></i> <?php wpforo_phrase( 'replies', true, 'lower' ) ?> <?php echo intval( $topic['posts'] ) ?>
171 </span>
172 <?php wpforo_tags( $topic, true, 'text' ) ?>
173 </div>
174 </div>
175 <div class="wpforo-last-topic-status wpfcl-2 <?php if( $topic['type'] ) echo "wpfbr-d-10" ?> <?php if( $topic['solved'] && ! $topic['type'] ) echo "wpfbr-d-8" ?>">
176 <?php echo str_replace( 'fa-check-circle', 'fas fa-square-check', wpforo_topic_icon( $topic, 'all', true, false ) ) ?>
177 </div>
178 </li>
179 <?php do_action( 'wpforo_tpl_l3_forum_loop_intro_topics_after', $topic, $topic_url, $member, $forum ); ?>
180 <?php endif; ?>
181 <?php endforeach; ?>
182 <?php if( intval( $forum['topics'] ) > wpforo_setting( 'forums', 'layout_qa_intro_topics_count' ) ): ?>
183 <li>
184 <div class="wpforo-last-topic-title wpf-vat" style="width: 100%;">
185 <a href="<?php echo esc_url( (string) $forum_url ) ?>"><?php wpforo_phrase( 'view all questions', true, 'lower' ); ?> <i class="fas fa-angle-right"
186 aria-hidden="true"></i></a>
187 </div>
188 </li>
189 <?php endif ?>
190 </ul>
191 </div><!-- wpforo-last-topics-list -->
192 <br class="wpf-clear"/>
193 </div><!-- wpforo-last-topics -->
194
195 <?php endif; ?>
196
197 </div><!-- forum-wrap -->
198
199 <?php do_action( 'wpforo_loop_hook', $key, $forum ) ?>
200
201 <?php endforeach; ?> <!-- $forums as $forum -->
202
203 <?php if( ! $forum_list ): ?>
204 <?php do_action( 'wpforo_forum_loop_no_forums', $cat ); ?>
205 <?php endif; ?>
206
207 </div>
208