wpForo Forum - Version 1.8.3

Version Description

Download this release

Release Info

Developer Tomdever
Plugin Icon 128x128 wpForo Forum
Version 1.8.3
Comparing to
See all releases

Code changes from version 1.8.2 to 1.8.3

readme.txt CHANGED
@@ -2,8 +2,8 @@
2
  Contributors: gVectors Team
3
  Tags: forum, forums, forum plugin, WordPress forum plugin, community, discussion
4
  Requires at least: 4.1
5
- Tested up to: 5.4
6
- Stable tag: 1.8.2
7
  Requires PHP: 5.6 and higher
8
  License: GPLv2 or later
9
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
@@ -165,15 +165,16 @@ Find wpForo forum plugin addons on [gVectors Team website...](https://gvectors.c
165
 
166
  == Changelog ==
167
 
168
- = wpForo Forum 1.8.2 | 27.07.2020 =
169
 
170
- [wpForo Forum v1.8.2 Release Summary](https://wpforo.com/community/wpforo-announcements/wpforo-1-8-2-is-released/)
171
 
172
- * Fixed Bug: Login issue, forum doesn't recognize login status
173
- * Fixed Bug: Forum menu doesn't reflect to login status
174
- * Fixed Bug: Cannot approve / unapprove post
175
- * Fixed Bug: Cannot edit a topic / post
176
- * Fixed Bug: Some forms are disappeared
 
177
 
178
 
179
  IMPORTANT NOTES for UPDATE
@@ -184,6 +185,17 @@ IMPORTANT NOTES for UPDATE
184
  - Some JS and CSS files are changed, please refresh (press Ctrl+F5) on forum front-end twice to reset browser cache, otherwise you'll see crashed design.
185
 
186
 
 
 
 
 
 
 
 
 
 
 
 
187
  = wpForo Forum 1.8.0 / 1.8.1 | 22.07.2020 =
188
 
189
  [wpForo Forum v1.8.0 / v1.8.1 Release Summary](https://wpforo.com/community/wpforo-announcements/wpforo-1-8-0-is-released/)
2
  Contributors: gVectors Team
3
  Tags: forum, forums, forum plugin, WordPress forum plugin, community, discussion
4
  Requires at least: 4.1
5
+ Tested up to: 5.5
6
+ Stable tag: 1.8.3
7
  Requires PHP: 5.6 and higher
8
  License: GPLv2 or later
9
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
165
 
166
  == Changelog ==
167
 
168
+ = wpForo Forum 1.8.3 | 12.08.2020 =
169
 
170
+ [wpForo Forum v1.8.3 Release Summary](https://wpforo.com/community/wpforo-announcements/wpforo-1-8-3-is-released/)
171
 
172
+ * Added: WordPress 5.5 compatibility
173
+ * Optimized: Forum fulltext search functions
174
+ * Fixed Bug: Allow edit reply titles in threaded layout
175
+ * Fixed Bug: Stop changing attachments paths to relative by TinyMCE
176
+ * Fixed Bug: Advanced search bug in search widget and menu forms
177
+ * Fixed Bug: Remove Advanced search options button from Tags search
178
 
179
 
180
  IMPORTANT NOTES for UPDATE
185
  - Some JS and CSS files are changed, please refresh (press Ctrl+F5) on forum front-end twice to reset browser cache, otherwise you'll see crashed design.
186
 
187
 
188
+ = wpForo Forum 1.8.2 | 27.07.2020 =
189
+
190
+ [wpForo Forum v1.8.2 Release Summary](https://wpforo.com/community/wpforo-announcements/wpforo-1-8-2-is-released/)
191
+
192
+ * Fixed Bug: Login issue, forum doesn't recognize login status
193
+ * Fixed Bug: Forum menu doesn't reflect to login status
194
+ * Fixed Bug: Cannot approve / unapprove post
195
+ * Fixed Bug: Cannot edit a topic / post
196
+ * Fixed Bug: Some forms are disappeared
197
+
198
+
199
  = wpForo Forum 1.8.0 / 1.8.1 | 22.07.2020 =
200
 
201
  [wpForo Forum v1.8.0 / v1.8.1 Release Summary](https://wpforo.com/community/wpforo-announcements/wpforo-1-8-0-is-released/)
wpf-admin/css/admin.css CHANGED
@@ -363,4 +363,17 @@ body{
363
 
364
  #wpf-access-table #wpf-access-list tr:nth-child(odd){
365
  background-color: #FCFCFC;
 
 
 
 
 
 
 
 
 
 
 
 
 
366
  }
363
 
364
  #wpf-access-table #wpf-access-list tr:nth-child(odd){
365
  background-color: #FCFCFC;
366
+ }
367
+
368
+ #wpf-admin-wrap .wpf-box-wrap{
369
+ margin: 0 8px;
370
+ min-height: 100px;
371
+ }
372
+
373
+ #wpf-admin-wrap .wpf-box-header{
374
+ font-size: 14px;
375
+ padding: 8px 12px;
376
+ margin: 0;
377
+ line-height: 1.4;
378
+ border-bottom: 1px solid #ccd0d4;
379
  }
wpf-admin/dashboard.php CHANGED
@@ -13,14 +13,9 @@
13
 
14
 
15
  <div class="postbox-container" id="postbox-container-0" style="width:100%;">
16
- <div class="meta-box-sortables ui-sortable" id="normal-sortables" style="min-height:60px;">
17
 
18
  <div class="postbox" id="wpforo_dashboard_widget_0">
19
- <button aria-expanded="true" class="handlediv button-link" type="button">
20
- <span class="screen-reader-text">&nbsp;</span>
21
- <span class="toggle-indicator"></span>
22
- </button>
23
- <h2 class="hndle ui-sortable-handle"><span><?php _e('Welcome Message', 'wpforo'); ?></span></h2>
24
  <div class="inside">
25
  <div class="main" style="padding:5px 15px 15px 15px;">
26
  <div style="float:left; vertical-align:top; width:calc(100% - 300px);;">
@@ -47,14 +42,10 @@
47
 
48
  <?php if(current_user_can('administrator') || current_user_can('editor') || current_user_can('author') ): ?>
49
  <div class="postbox-container" id="postbox-container-1">
50
- <div class="meta-box-sortables ui-sortable" id="normal-sortables">
51
 
52
  <div class="postbox" id="wpforo_dashboard_widget_1">
53
- <button aria-expanded="true" class="handlediv button-link" type="button">
54
- <span class="screen-reader-text">Toggle panel: General Information</span>
55
- <span class="toggle-indicator"></span>
56
- </button>
57
- <h2 class="hndle ui-sortable-handle"><span><?php _e('General Information', 'wpforo'); ?></span></h2>
58
  <div class="inside">
59
  <div class="main">
60
  <ul>
@@ -68,11 +59,7 @@
68
  </div><!-- widget / postbox -->
69
 
70
  <div class="postbox" id="wpforo_dashboard_widget_server">
71
- <button aria-expanded="true" class="handlediv button-link" type="button">
72
- <span class="screen-reader-text">Toggle panel: Server Information</span>
73
- <span class="toggle-indicator"></span>
74
- </button>
75
- <h2 class="hndle ui-sortable-handle"><span><?php _e('Server Information', 'wpforo'); ?></span></h2>
76
  <div class="inside">
77
  <div class="main">
78
  <table style="width:98%; margin:0 auto; text-align:left;">
@@ -121,14 +108,10 @@
121
  </div><!-- wpforo_postbox_container -->
122
 
123
  <div class="postbox-container" id="postbox-container-2">
124
- <div class="meta-box-sortables ui-sortable" id="normal-sortables">
125
 
126
  <div class="postbox" id="wpforo_dashboard_widget_statistic">
127
- <button aria-expanded="true" class="handlediv button-link" type="button">
128
- <span class="screen-reader-text">Toggle panel: Board Statistic</span>
129
- <span class="toggle-indicator"></span>
130
- </button>
131
- <h2 class="hndle ui-sortable-handle"><span><?php _e('Board Statistic', 'wpforo'); ?></span></h2>
132
  <div class="inside">
133
  <div class="main">
134
  <table style="width:98%; margin:0 auto; text-align:left;">
@@ -188,7 +171,7 @@
188
  <?php if( wpforo_current_user_is('admin') ) : ?>
189
  <tr>
190
  <td colspan="2">
191
- <p class="hndle" style="padding:25px 0 5px; margin:0; font-size:14px; font-weight:bold;">
192
  <?php _e('Forum Maintenance', 'wpforo'); ?>
193
  </p>
194
  <p class="wpf-info" style="padding:5px 0;"><?php _e("This process may take a few seconds or dozens of minutes, please be patient and don't close this page. If you got 500 Server Error please don't worry, the data updating process is still working in MySQL server.", 'wpforo'); ?></p>
@@ -230,7 +213,7 @@
230
  <?php endif; ?>
231
 
232
  <div class="postbox-container" id="postbox-container-3">
233
- <div class="meta-box-sortables ui-sortable" id="normal-sortables">
234
 
235
  <?php do_action( 'wpforo_dashboard_widgets_col3', WPF() ); ?>
236
 
13
 
14
 
15
  <div class="postbox-container" id="postbox-container-0" style="width:100%;">
16
+ <div class="wpf-box-wrap" style="min-height:60px;">
17
 
18
  <div class="postbox" id="wpforo_dashboard_widget_0">
 
 
 
 
 
19
  <div class="inside">
20
  <div class="main" style="padding:5px 15px 15px 15px;">
21
  <div style="float:left; vertical-align:top; width:calc(100% - 300px);;">
42
 
43
  <?php if(current_user_can('administrator') || current_user_can('editor') || current_user_can('author') ): ?>
44
  <div class="postbox-container" id="postbox-container-1">
45
+ <div class="wpf-box-wrap">
46
 
47
  <div class="postbox" id="wpforo_dashboard_widget_1">
48
+ <h2 class="wpf-box-header"><span><?php _e('General Information', 'wpforo'); ?></span></h2>
 
 
 
 
49
  <div class="inside">
50
  <div class="main">
51
  <ul>
59
  </div><!-- widget / postbox -->
60
 
61
  <div class="postbox" id="wpforo_dashboard_widget_server">
62
+ <h2 class="wpf-box-header"><span><?php _e('Server Information', 'wpforo'); ?></span></h2>
 
 
 
 
63
  <div class="inside">
64
  <div class="main">
65
  <table style="width:98%; margin:0 auto; text-align:left;">
108
  </div><!-- wpforo_postbox_container -->
109
 
110
  <div class="postbox-container" id="postbox-container-2">
111
+ <div class="wpf-box-wrap">
112
 
113
  <div class="postbox" id="wpforo_dashboard_widget_statistic">
114
+ <h2 class="wpf-box-header"><span><?php _e('Board Statistic', 'wpforo'); ?></span></h2>
 
 
 
 
115
  <div class="inside">
116
  <div class="main">
117
  <table style="width:98%; margin:0 auto; text-align:left;">
171
  <?php if( wpforo_current_user_is('admin') ) : ?>
172
  <tr>
173
  <td colspan="2">
174
+ <p class="wpf-box-header" style="padding:25px 0 5px; margin:0; font-size:14px; font-weight:bold;">
175
  <?php _e('Forum Maintenance', 'wpforo'); ?>
176
  </p>
177
  <p class="wpf-info" style="padding:5px 0;"><?php _e("This process may take a few seconds or dozens of minutes, please be patient and don't close this page. If you got 500 Server Error please don't worry, the data updating process is still working in MySQL server.", 'wpforo'); ?></p>
213
  <?php endif; ?>
214
 
215
  <div class="postbox-container" id="postbox-container-3">
216
+ <div class="wpf-box-wrap">
217
 
218
  <?php do_action( 'wpforo_dashboard_widgets_col3', WPF() ); ?>
219
 
wpf-admin/forum.php CHANGED
@@ -185,8 +185,7 @@
185
  <div id="postbox-container-1" class="postbox-container">
186
  <div id="side-sortables" class="meta-box-sortables ui-sortable">
187
  <div id="forum_cat" class="postbox">
188
- <div class="handlediv" title="Click to toggle"><br></div>
189
- <h3 class="hndle"><span><?php _e('Forum Options', 'wpforo'); ?> &nbsp;<a href="https://wpforo.com/docs/root/categories-and-forums/forum-manager/add-new-forum/#forum-options" title="<?php _e('Read the documentation', 'wpforo') ?>" target="_blank" style="font-size: 14px;"><i class="far fa-question-circle"></i></a></span></h3>
190
  <div class="inside">
191
  <div class="form-field">
192
  <p><strong><?php _e('Parent Forum', 'wpforo'); ?></strong></p>
@@ -215,8 +214,7 @@
215
  </div>
216
 
217
  <div id="submitdiv" class="postbox">
218
- <div class="handlediv" title="Click to toggle"><br></div>
219
- <h3 class="hndle"><span><?php _e('Publish', 'wpforo'); ?></span></h3>
220
  <div class="inside">
221
  <div id="major-publishing-actions" style="text-align:right;">
222
  <?php if( $action === 'edit' ) : ?>
@@ -233,8 +231,7 @@
233
 
234
 
235
  <div id="forum_permissions" class="postbox">
236
- <div class="handlediv" title="Click to toggle"><br></div>
237
- <h3 class="hndle"><span><?php _e('Forum Permissions', 'wpforo'); ?> &nbsp;<a href="https://wpforo.com/docs/root/categories-and-forums/forum-manager/add-new-forum/#forum-permissions" title="<?php _e('Read the documentation', 'wpforo') ?>" target="_blank" style="font-size: 14px;"><i class="far fa-question-circle"></i></a></span></h3>
238
  <div class="inside">
239
  <table>
240
  <?php WPF()->forum->permissions(); ?>
@@ -243,8 +240,7 @@
243
  </div>
244
 
245
  <div id="forum_color" class="postbox">
246
- <div class="handlediv" title="Click to toggle"><br></div>
247
- <h3 class="hndle"><span><?php _e('Additional Options', 'wpforo'); ?> &nbsp;</span></h3>
248
  <div class="inside">
249
  <div class="wpf-forum-additional-options">
250
  <div style="float: left; padding: 2px 10px 0 0;"><?php _e('Forum Color', 'wpforo') ?></div>
@@ -262,8 +258,7 @@
262
  <div id="normal-sortables" class="meta-box-sortables ui-sortable">
263
 
264
  <div id="forum_layout" class="postbox" <?php if(!wpfkey($data, 'is_cat')) echo 'style="display: none"' ;?>>
265
- <div class="handlediv" title="Click to toggle"><br></div>
266
- <h3 class="hndle">
267
  <span>
268
  <?php if( wpfkey($data, 'is_cat') ): ?>
269
  <?php if( wpfval($data, 'is_cat') ): ?>
@@ -296,8 +291,7 @@
296
  </div>
297
 
298
  <div id="forum_slug" class="postbox">
299
- <div class="handlediv" title="Click to toggle"><br></div>
300
- <h3 class="hndle"><span><?php _e('Forum Slug', 'wpforo'); ?> &nbsp;<a href="https://wpforo.com/docs/root/categories-and-forums/forum-manager/add-new-forum/#forum-slug" title="<?php _e('Read the documentation', 'wpforo') ?>" target="_blank" style="font-size: 14px;"><i class="far fa-question-circle"></i></a></span></h3>
301
  <div class="inside">
302
  <input name="forum[slug]" type="text" value="<?php echo esc_attr(isset($data['slug']) ? $data['slug'] : '') ?>" size="40" />
303
  <p><?php _e('The "slug" is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens.', 'wpforo'); ?> </p><br />
@@ -305,8 +299,7 @@
305
  </div>
306
 
307
  <div id="forum_icon" class="postbox">
308
- <div class="handlediv" title="Click to toggle"><br></div>
309
- <h3 class="hndle"><span><?php _e('Forum Icon', 'wpforo'); ?> &nbsp;<a href="https://wpforo.com/docs/root/categories-and-forums/forum-manager/add-new-forum/#forum-icon" title="<?php _e('Read the documentation', 'wpforo') ?>" target="_blank" style="font-size: 14px;"><i class="far fa-question-circle"></i></a></span></h3>
310
  <div class="inside" style="padding-top:10px;">
311
  <div class="form-field">
312
  <label for="tag-icon" style="display:block; padding-bottom:5px;"><?php _e('Font-awesome Icon', 'wpforo'); ?>:</label>
@@ -317,8 +310,7 @@
317
  </div>
318
 
319
  <div id="forum_meta" class="postbox">
320
- <div class="handlediv" title="Click to toggle"><br></div>
321
- <h3 class="hndle"><span><?php _e('Forum SEO', 'wpforo'); ?></span></h3>
322
  <div class="inside" style="padding-top:10px;">
323
  <div class="form-field">
324
  <label for="tag-description" style="display:block; padding-bottom:5px;"><?php _e('Meta Description', 'wpforo'); ?>:</label>
185
  <div id="postbox-container-1" class="postbox-container">
186
  <div id="side-sortables" class="meta-box-sortables ui-sortable">
187
  <div id="forum_cat" class="postbox">
188
+ <h3 class="wpf-box-header"><span><?php _e('Forum Options', 'wpforo'); ?> &nbsp;<a href="https://wpforo.com/docs/root/categories-and-forums/forum-manager/add-new-forum/#forum-options" title="<?php _e('Read the documentation', 'wpforo') ?>" target="_blank" style="font-size: 14px;"><i class="far fa-question-circle"></i></a></span></h3>
 
189
  <div class="inside">
190
  <div class="form-field">
191
  <p><strong><?php _e('Parent Forum', 'wpforo'); ?></strong></p>
214
  </div>
215
 
216
  <div id="submitdiv" class="postbox">
217
+ <h3 class="wpf-box-header"><span><?php _e('Publish', 'wpforo'); ?></span></h3>
 
218
  <div class="inside">
219
  <div id="major-publishing-actions" style="text-align:right;">
220
  <?php if( $action === 'edit' ) : ?>
231
 
232
 
233
  <div id="forum_permissions" class="postbox">
234
+ <h3 class="wpf-box-header"><span><?php _e('Forum Permissions', 'wpforo'); ?> &nbsp;<a href="https://wpforo.com/docs/root/categories-and-forums/forum-manager/add-new-forum/#forum-permissions" title="<?php _e('Read the documentation', 'wpforo') ?>" target="_blank" style="font-size: 14px;"><i class="far fa-question-circle"></i></a></span></h3>
 
235
  <div class="inside">
236
  <table>
237
  <?php WPF()->forum->permissions(); ?>
240
  </div>
241
 
242
  <div id="forum_color" class="postbox">
243
+ <h3 class="wpf-box-header"><span><?php _e('Additional Options', 'wpforo'); ?> &nbsp;</span></h3>
 
244
  <div class="inside">
245
  <div class="wpf-forum-additional-options">
246
  <div style="float: left; padding: 2px 10px 0 0;"><?php _e('Forum Color', 'wpforo') ?></div>
258
  <div id="normal-sortables" class="meta-box-sortables ui-sortable">
259
 
260
  <div id="forum_layout" class="postbox" <?php if(!wpfkey($data, 'is_cat')) echo 'style="display: none"' ;?>>
261
+ <h3 class="wpf-box-header">
 
262
  <span>
263
  <?php if( wpfkey($data, 'is_cat') ): ?>
264
  <?php if( wpfval($data, 'is_cat') ): ?>
291
  </div>
292
 
293
  <div id="forum_slug" class="postbox">
294
+ <h3 class="wpf-box-header"><span><?php _e('Forum Slug', 'wpforo'); ?> &nbsp;<a href="https://wpforo.com/docs/root/categories-and-forums/forum-manager/add-new-forum/#forum-slug" title="<?php _e('Read the documentation', 'wpforo') ?>" target="_blank" style="font-size: 14px;"><i class="far fa-question-circle"></i></a></span></h3>
 
295
  <div class="inside">
296
  <input name="forum[slug]" type="text" value="<?php echo esc_attr(isset($data['slug']) ? $data['slug'] : '') ?>" size="40" />
297
  <p><?php _e('The "slug" is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens.', 'wpforo'); ?> </p><br />
299
  </div>
300
 
301
  <div id="forum_icon" class="postbox">
302
+ <h3 class="wpf-box-header"><span><?php _e('Forum Icon', 'wpforo'); ?> &nbsp;<a href="https://wpforo.com/docs/root/categories-and-forums/forum-manager/add-new-forum/#forum-icon" title="<?php _e('Read the documentation', 'wpforo') ?>" target="_blank" style="font-size: 14px;"><i class="far fa-question-circle"></i></a></span></h3>
 
303
  <div class="inside" style="padding-top:10px;">
304
  <div class="form-field">
305
  <label for="tag-icon" style="display:block; padding-bottom:5px;"><?php _e('Font-awesome Icon', 'wpforo'); ?>:</label>
310
  </div>
311
 
312
  <div id="forum_meta" class="postbox">
313
+ <h3 class="wpf-box-header"><span><?php _e('Forum SEO', 'wpforo'); ?></span></h3>
 
314
  <div class="inside" style="padding-top:10px;">
315
  <div class="form-field">
316
  <label for="tag-description" style="display:block; padding-bottom:5px;"><?php _e('Meta Description', 'wpforo'); ?>:</label>
wpf-assets/js/frontend.js CHANGED
@@ -64,13 +64,23 @@ function wpforo_trigger_custom_event(target, name, detail) {
64
  function wpforo_tinymce_initializeIt(selector, do_not_focus) {
65
  if( wpforo_editor.is_tinymce_loaded() ){
66
  tinymce.init({
 
 
 
 
 
 
 
 
 
 
67
  forced_root_block: "",
68
  force_br_newlines: false,
69
  force_p_newlines: true,
70
  selector: selector,
71
  plugins: wpforo.editor_settings.plugins,
72
  external_plugins: wpforo.editor_settings.external_plugins,
73
- menubar: "",
74
  toolbar: wpforo.editor_settings.tinymce.toolbar1,
75
  content_style: wpforo.editor_settings.tinymce.content_style,
76
  branding: false,
@@ -441,9 +451,9 @@ jQuery(document).ready(function($){
441
  if(match){
442
  scroll_to = $('#post-' + match[1]);
443
  }else{
444
- scroll_to = $("#m_, .wpforo-members-content, .wpforo-search-content", wpforo_wrap);
445
  }
446
- if( scroll_to.length ){
447
  $('html, body').scrollTop(scroll_to.offset().top - 25);
448
  }
449
 
64
  function wpforo_tinymce_initializeIt(selector, do_not_focus) {
65
  if( wpforo_editor.is_tinymce_loaded() ){
66
  tinymce.init({
67
+ relative_urls : false,
68
+ remove_script_host : false,
69
+ convert_urls : false,
70
+ keep_styles : false,
71
+ entities: "38,amp,60,lt,62,gt",
72
+ entity_encoding: "raw",
73
+ resize: "vertical",
74
+ preview_styles: "font-family font-size font-weight font-style text-decoration text-transform",
75
+ end_container_on_empty_block: true,
76
+ wpeditimage_html5_captions: true,
77
  forced_root_block: "",
78
  force_br_newlines: false,
79
  force_p_newlines: true,
80
  selector: selector,
81
  plugins: wpforo.editor_settings.plugins,
82
  external_plugins: wpforo.editor_settings.external_plugins,
83
+ menubar: false,
84
  toolbar: wpforo.editor_settings.tinymce.toolbar1,
85
  content_style: wpforo.editor_settings.tinymce.content_style,
86
  branding: false,
451
  if(match){
452
  scroll_to = $('#post-' + match[1]);
453
  }else{
454
+ //scroll_to = $("#m_, .wpforo-members-content, .wpforo-search-content", wpforo_wrap);
455
  }
456
+ if( scroll_to != undefined && scroll_to.length ){
457
  $('html, body').scrollTop(scroll_to.offset().top - 25);
458
  }
459
 
wpf-includes/class-postmeta.php CHANGED
@@ -436,19 +436,23 @@ class wpForoPostMeta {
436
  }else{
437
  $name = wpfval($_FILES, 'data', 'name', $k);
438
  $tmp_name = wpfval($_FILES, 'data', 'tmp_name', $k);
 
439
  $size = intval($field['fileSize']);
440
  $fileExtensions = array_filter( (array) is_scalar($field['fileExtensions']) ? explode(',', trim($field['fileExtensions'])) : $field['fileExtensions'] );
441
  if( $fileExtensions ){
442
- $extensions = explode( '|', array_search($mime_type, $mime_types) );
443
- $e = array_intersect($fileExtensions, $extensions);
 
 
 
 
444
  }else{
445
- $e = in_array($mime_type, $allowed_mime_types);
 
446
  }
447
 
448
  if( !empty($e) ){
449
  if ( wpfval($_FILES, 'data', 'size', $k) <= ($size * 1024 * 1024) ) {
450
-
451
- $ext = pathinfo($name, PATHINFO_EXTENSION);
452
  $wp_upload_dir = wp_upload_dir();
453
  $uplds_dir = $wp_upload_dir['basedir']."/wpforo";
454
  $attach_dir = $wp_upload_dir['basedir']."/wpforo/default_attachments/" . WPF()->current_userid;
436
  }else{
437
  $name = wpfval($_FILES, 'data', 'name', $k);
438
  $tmp_name = wpfval($_FILES, 'data', 'tmp_name', $k);
439
+ $ext = pathinfo($name, PATHINFO_EXTENSION);
440
  $size = intval($field['fileSize']);
441
  $fileExtensions = array_filter( (array) is_scalar($field['fileExtensions']) ? explode(',', trim($field['fileExtensions'])) : $field['fileExtensions'] );
442
  if( $fileExtensions ){
443
+ if( in_array( $ext, $fileExtensions ) ){
444
+ $extensions = explode( '|', array_search($mime_type, $mime_types) );
445
+ $e = in_array($ext, $extensions);
446
+ }else{
447
+ $e = false;
448
+ }
449
  }else{
450
+ $extensions = explode( '|', array_search($mime_type, $allowed_mime_types) );
451
+ $e = in_array($ext, $extensions);
452
  }
453
 
454
  if( !empty($e) ){
455
  if ( wpfval($_FILES, 'data', 'size', $k) <= ($size * 1024 * 1024) ) {
 
 
456
  $wp_upload_dir = wp_upload_dir();
457
  $uplds_dir = $wp_upload_dir['basedir']."/wpforo";
458
  $attach_dir = $wp_upload_dir['basedir']."/wpforo/default_attachments/" . WPF()->current_userid;
wpf-includes/class-posts.php CHANGED
@@ -946,6 +946,8 @@ class wpForoPost{
946
  if(!is_array($args)) $args = array('needle' => $args);
947
  if(!wpfval($args, 'needle')) return array();
948
 
 
 
949
  $default = array(
950
  'needle' => '', // search needle
951
  'forumids' => array(), // array( 2, 10, 25 )
@@ -981,27 +983,32 @@ class wpForoPost{
981
  }
982
 
983
  if($args['needle']){
984
- $needle = trim( trim( str_replace(' ', '* ', $args['needle']) ), '*' ) . "*";
985
- $needle = preg_replace('#[\(\)]+#', '', $needle);
986
- $needle = esc_sql(substr(sanitize_text_field($needle), 0, 60));
 
 
 
 
 
 
 
987
 
988
  if($args['type'] === 'entire-posts'){
989
  $selects[] = "MATCH(".$fa.".`title`) AGAINST('$needle' IN BOOLEAN MODE) + MATCH(".$fa.".`body`) AGAINST('$needle' IN BOOLEAN MODE) AS matches";
990
- $wheres[] = "( MATCH(".$fa.".`title`, ".$fa.".`body`) AGAINST('$needle' IN BOOLEAN MODE) )";
991
- $orders[] = "MATCH(".$fa.".`title`) AGAINST('$needle') + MATCH(".$fa.".`body`) AGAINST('$needle')";
992
- $orders[] = "MATCH(".$fa.".`title`) AGAINST('$needle' IN BOOLEAN MODE) + MATCH(".$fa.".`body`) AGAINST('$needle' IN BOOLEAN MODE)";
993
  }elseif($args['type'] === 'titles-only'){
994
  $selects[] = "MATCH(".$fa.".`title`) AGAINST('$needle' IN BOOLEAN MODE) AS matches";
995
- $wheres[] = "( MATCH(".$fa.".`title`) AGAINST('$needle' IN BOOLEAN MODE) )";
996
- $orders[] = "MATCH(".$fa.".`title`) AGAINST('$needle')";
997
- $orders[] = "MATCH(".$fa.".`title`) AGAINST('$needle' IN BOOLEAN MODE)";
998
  }elseif($args['type'] === 'user-posts' || $args['type'] === 'user-topics'){
999
- $needle = str_replace('*', '%', $needle);
1000
  $innerjoins[] = "INNER JOIN `".WPF()->db->users."` u ON u.`ID` = ".$fa.".`userid`";
1001
- $wheres[] = "( u.`user_nicename` LIKE '$needle' OR u.`display_name` LIKE '$needle' )";
1002
  if($args['type'] === 'user-topics') $wheres[] = "".$fa.".`is_first_post` = 1";
1003
  }elseif($args['type'] === 'tag'){
1004
- $needle = str_replace('*', '', $needle);
1005
  $fa = "t";
1006
  $from = "`".WPF()->tables->topics."` " . $fa;
1007
  $selects = array($fa.'.`first_postid` AS postid', $fa.'.`topicid`', $fa.'.`private`', $fa.'.`status`', $fa.'.`forumid`', $fa.'.`userid`', $fa.'.`title`', $fa.'.`created`', '1 AS `is_first_post`');
@@ -1021,18 +1028,18 @@ class wpForoPost{
1021
  $orders = array($fa.'.`forumid`');
1022
  }
1023
 
1024
- $sql = "SELECT COUNT(*) FROM ". $from ." ".implode(' ', $innerjoins);
1025
  if($wheres) $sql .= " WHERE " . implode( " AND ", $wheres );
1026
  $items_count = (int) WPF()->db->get_var($sql);
1027
  if( $this->options['search_max_results'] && $items_count > $this->options['search_max_results'] ) $items_count = (int) $this->options['search_max_results'];
1028
 
1029
- $sql = "SELECT ".implode(', ', $selects)." FROM ". $from ." ".implode(' ', $innerjoins);
1030
  if($wheres) $sql .= " WHERE " . implode( " AND ", $wheres );
1031
- if($orders) $sql .= " ORDER BY ".implode(' '.$args['order'].', ', $orders)." ".$args['order'];
1032
 
1033
- if( $this->options['search_max_results'] ) $sql = "SELECT * FROM (".$sql." LIMIT ". $this->options['search_max_results'] .") AS p";
1034
 
1035
- if( $args['row_count'] ) $sql .= " LIMIT ". intval($args['offset']) ."," . intval($args['row_count']);
1036
 
1037
  $posts = WPF()->db->get_results($sql, ARRAY_A);
1038
 
946
  if(!is_array($args)) $args = array('needle' => $args);
947
  if(!wpfval($args, 'needle')) return array();
948
 
949
+ $args = array_filter($args);
950
+
951
  $default = array(
952
  'needle' => '', // search needle
953
  'forumids' => array(), // array( 2, 10, 25 )
983
  }
984
 
985
  if($args['needle']){
986
+ if( in_array($args['type'], array('entire-posts', 'titles-only')) ){
987
+ $words = str_word_count($args['needle'], 1);
988
+ $words = array_slice($words, 0, 10);
989
+ $words = array_map(function($w){
990
+ return '+' . esc_sql( str_replace(array('(', ')', '*', '+', '-', '~', '<', '>', '@', '"'), '', $w) ) . '*';
991
+ }, $words);
992
+ $needle = implode(' ', $words);
993
+ }else{
994
+ $needle = esc_sql( $args['needle'] );
995
+ }
996
 
997
  if($args['type'] === 'entire-posts'){
998
  $selects[] = "MATCH(".$fa.".`title`) AGAINST('$needle' IN BOOLEAN MODE) + MATCH(".$fa.".`body`) AGAINST('$needle' IN BOOLEAN MODE) AS matches";
999
+ $wheres[] = "( MATCH(".$fa.".`title`, ".$fa.".`body`) AGAINST('$needle' IN BOOLEAN MODE) OR ".$fa.".`title` LIKE '%". esc_sql( $args['needle'] ) ."%' OR ".$fa.".`body` LIKE '%". esc_sql( $args['needle'] ) ."%' )";
1000
+ $orders[] = "matches";
1001
+ $orders[] = "`created`";
1002
  }elseif($args['type'] === 'titles-only'){
1003
  $selects[] = "MATCH(".$fa.".`title`) AGAINST('$needle' IN BOOLEAN MODE) AS matches";
1004
+ $wheres[] = "( MATCH(".$fa.".`title`) AGAINST('$needle' IN BOOLEAN MODE) OR ".$fa.".`title` LIKE '%". esc_sql( $args['needle'] ) ."%' )";
1005
+ $orders[] = "matches";
1006
+ $orders[] = "`created`";
1007
  }elseif($args['type'] === 'user-posts' || $args['type'] === 'user-topics'){
 
1008
  $innerjoins[] = "INNER JOIN `".WPF()->db->users."` u ON u.`ID` = ".$fa.".`userid`";
1009
+ $wheres[] = "( u.`user_nicename` LIKE '%{$needle}%' OR u.`display_name` LIKE '%{$needle}%' )";
1010
  if($args['type'] === 'user-topics') $wheres[] = "".$fa.".`is_first_post` = 1";
1011
  }elseif($args['type'] === 'tag'){
 
1012
  $fa = "t";
1013
  $from = "`".WPF()->tables->topics."` " . $fa;
1014
  $selects = array($fa.'.`first_postid` AS postid', $fa.'.`topicid`', $fa.'.`private`', $fa.'.`status`', $fa.'.`forumid`', $fa.'.`userid`', $fa.'.`title`', $fa.'.`created`', '1 AS `is_first_post`');
1028
  $orders = array($fa.'.`forumid`');
1029
  }
1030
 
1031
+ $sql = "SELECT COUNT(*) FROM " . $from . " " . implode(' ', $innerjoins);
1032
  if($wheres) $sql .= " WHERE " . implode( " AND ", $wheres );
1033
  $items_count = (int) WPF()->db->get_var($sql);
1034
  if( $this->options['search_max_results'] && $items_count > $this->options['search_max_results'] ) $items_count = (int) $this->options['search_max_results'];
1035
 
1036
+ $sql = "SELECT " . implode(', ', $selects) . " FROM " . $from . " " . implode(' ', $innerjoins);
1037
  if($wheres) $sql .= " WHERE " . implode( " AND ", $wheres );
1038
+ if($orders) $sql .= " ORDER BY " . implode(' ' . $args['order'] . ', ', $orders) . " " . $args['order'];
1039
 
1040
+ if( $this->options['search_max_results'] ) $sql = "SELECT * FROM (" . $sql . " LIMIT ". $this->options['search_max_results'] .") AS p";
1041
 
1042
+ if( $args['row_count'] ) $sql .= " LIMIT " . intval($args['offset']) . "," . intval($args['row_count']);
1043
 
1044
  $posts = WPF()->db->get_results($sql, ARRAY_A);
1045
 
wpf-includes/class-template.php CHANGED
@@ -1380,7 +1380,7 @@ class wpForoTemplate{
1380
  </div>
1381
  </div>
1382
  </div>
1383
- <div class="wpforo-table wpf-toggle-wrap wpf-search-advanced-wrap">
1384
  <div class="wpforo-tr">
1385
  <div class="wpforo-td wpfw-100 wpfrtd wpf-toggle">
1386
  <span class="wpf-toggle-button wpf-toggle-advanced">
@@ -1393,13 +1393,13 @@ class wpForoTemplate{
1393
  <div class="wpf-search-advanced-fields">
1394
  <div class="wpforo-table">
1395
  <div class="wpforo-tr">
1396
- <div class="wpforo-td wpfw-60 wpfltd" <?php if( $is_tag ) echo 'style="display: none;"'; ?>>
1397
  <span class="wpf-search-label wpfcl-1">&nbsp;<?php wpforo_phrase('Search in Forums') ?>:</span><br>
1398
  <select name="wpff[]" class="wpfw-90 wpff" multiple="multiple">
1399
  <?php WPF()->forum->tree('select_box', false, $forumids ) ?>
1400
  </select>
1401
  </div>
1402
- <div class="wpforo-td wpfw-40 wpfrtd" <?php if( $is_tag ) echo 'style="display: none;"'; ?>>
1403
  <span class="wpf-search-label wpfcl-1">&nbsp;<?php wpforo_phrase('Search in date period') ?>:</span><br>
1404
  <select name="wpfd" class="wpfw-90 wpfd">
1405
  <option value="0" <?php echo $date_period === 0 ? 'selected' : '' ?>>&nbsp;<?php wpforo_phrase('Any Date') ?></option>
@@ -1429,7 +1429,7 @@ class wpForoTemplate{
1429
  </div>
1430
  </div>
1431
  </div>
1432
- <?php if( $search_fields ) : ?>
1433
  <div class="wpforo-table wpf-toggle-wrap wpf-search-custom-wrap">
1434
  <div class="wpforo-tr">
1435
  <div class="wpforo-td wpfw-100 wpfrtd wpf-toggle">
1380
  </div>
1381
  </div>
1382
  </div>
1383
+ <div class="wpforo-table wpf-toggle-wrap wpf-search-advanced-wrap" <?php if( $is_tag ) echo 'style="display: none;"'; ?>>
1384
  <div class="wpforo-tr">
1385
  <div class="wpforo-td wpfw-100 wpfrtd wpf-toggle">
1386
  <span class="wpf-toggle-button wpf-toggle-advanced">
1393
  <div class="wpf-search-advanced-fields">
1394
  <div class="wpforo-table">
1395
  <div class="wpforo-tr">
1396
+ <div class="wpforo-td wpfw-60 wpfltd">
1397
  <span class="wpf-search-label wpfcl-1">&nbsp;<?php wpforo_phrase('Search in Forums') ?>:</span><br>
1398
  <select name="wpff[]" class="wpfw-90 wpff" multiple="multiple">
1399
  <?php WPF()->forum->tree('select_box', false, $forumids ) ?>
1400
  </select>
1401
  </div>
1402
+ <div class="wpforo-td wpfw-40 wpfrtd">
1403
  <span class="wpf-search-label wpfcl-1">&nbsp;<?php wpforo_phrase('Search in date period') ?>:</span><br>
1404
  <select name="wpfd" class="wpfw-90 wpfd">
1405
  <option value="0" <?php echo $date_period === 0 ? 'selected' : '' ?>>&nbsp;<?php wpforo_phrase('Any Date') ?></option>
1429
  </div>
1430
  </div>
1431
  </div>
1432
+ <?php if( $search_fields && !$is_tag ) : ?>
1433
  <div class="wpforo-table wpf-toggle-wrap wpf-search-custom-wrap">
1434
  <div class="wpforo-tr">
1435
  <div class="wpforo-td wpfw-100 wpfrtd wpf-toggle">
wpf-includes/functions-template.php CHANGED
@@ -2965,7 +2965,7 @@ function wpforo_sanitize_search_body($body, $needle){
2965
  }
2966
  foreach($words as $word){
2967
  $word = trim($word);
2968
- $body = str_ireplace(' '.esc_html($word), ' <span class="wpf-sword wpfcl-b">'.esc_html($word).'</span>', $body);
2969
  }
2970
  }
2971
  return $body;
2965
  }
2966
  foreach($words as $word){
2967
  $word = trim($word);
2968
+ $body = preg_replace('#(?:^|\s+)'. preg_quote( esc_html($word) ) .'#iu', ' <span class="wpf-sword wpfcl-b">' . esc_html($word) . '</span>', $body);
2969
  }
2970
  }
2971
  return $body;
wpf-includes/functions.php CHANGED
@@ -481,6 +481,11 @@ function wpforo_admin_tools_tabs( $tabs, $current = 'antispam', $subtab = FALSE,
481
  }
482
 
483
  function wpforo_content_filter( $content ){
 
 
 
 
 
484
  $content = apply_filters('wpforo_body_text_filter', $content);
485
  $content = preg_replace('#([^\'\"]|^)(https?://[^\s\'\"<>]+\.(?:jpg|jpeg|png|gif|ico|svg|bmp|tiff))([^\'\"]|$)#isu', '$1 <a class="wpforo-auto-embeded-link" href="$2" target="_blank"><img class="wpforo-auto-embeded-image" src="$2"/></a> $3', $content);
486
  $content = preg_replace('#([^\'\"]|^)(https?://[^\s\'\"<>]+)([^\'\"]|$)#isu', '$1 <a class="wpforo-auto-embeded-link" href="$2" target="_blank">$2</a> $3', $content);
481
  }
482
 
483
  function wpforo_content_filter( $content ){
484
+ if( strpos($content, '../') !== FALSE ){
485
+ $home_url = trim( home_url(), '/\\' ) . '/';
486
+ $content = preg_replace('|https*\:\/\/[\.\/]+|i', $home_url, $content); //src="https://../../../wp-content/
487
+ $content = preg_replace('|([\"\']+)([\.\/]+)(wp-content\/)|i', "$1" . $home_url ."$3", $content); //src="../../../wp-content/
488
+ }
489
  $content = apply_filters('wpforo_body_text_filter', $content);
490
  $content = preg_replace('#([^\'\"]|^)(https?://[^\s\'\"<>]+\.(?:jpg|jpeg|png|gif|ico|svg|bmp|tiff))([^\'\"]|$)#isu', '$1 <a class="wpforo-auto-embeded-link" href="$2" target="_blank"><img class="wpforo-auto-embeded-image" src="$2"/></a> $3', $content);
491
  $content = preg_replace('#([^\'\"]|^)(https?://[^\s\'\"<>]+)([^\'\"]|$)#isu', '$1 <a class="wpforo-auto-embeded-link" href="$2" target="_blank">$2</a> $3', $content);
wpf-includes/wpf-hooks.php CHANGED
@@ -2247,24 +2247,24 @@ function wpforo_default_attachments_filter($text){
2247
  $attach_html = '';
2248
  $fileurl = preg_replace('#^https?\:#is', '', $match[1]);
2249
  $filename = $match[2];
2250
-
2251
  $upload_array = wp_upload_dir();
2252
  $filedir = preg_replace('#^https?\:#is', '', str_replace( preg_replace('#^https?\:#is', '', $upload_array['baseurl']), $upload_array['basedir'], $fileurl ) );
2253
  $filedir = str_replace( basename($filedir), urldecode( basename($filedir) ), $filedir );
2254
-
2255
  if(file_exists($filedir)){
2256
  if( !WPF()->perm->forum_can('va') || !WPF()->perm->usergroup_can('caa') ){
2257
  $attach_html .= '<br/><div class="wpfa-item wpfa-file"><a class="attach_cant_view" style="cursor:pointer;"><span style="color:#666;">' . wpforo_phrase('Attachment', FALSE) . ':</span> ' . urldecode( basename($filename) ) . '</a></div>';
2258
  }
2259
  }
2260
-
2261
  if($attach_html){
2262
  $attach_html .= '<br/>';
2263
  $text = str_replace($match[0], $attach_html, $text);
2264
  }
2265
  }
2266
  }
2267
-
2268
  return $text;
2269
  }
2270
 
2247
  $attach_html = '';
2248
  $fileurl = preg_replace('#^https?\:#is', '', $match[1]);
2249
  $filename = $match[2];
2250
+
2251
  $upload_array = wp_upload_dir();
2252
  $filedir = preg_replace('#^https?\:#is', '', str_replace( preg_replace('#^https?\:#is', '', $upload_array['baseurl']), $upload_array['basedir'], $fileurl ) );
2253
  $filedir = str_replace( basename($filedir), urldecode( basename($filedir) ), $filedir );
2254
+
2255
  if(file_exists($filedir)){
2256
  if( !WPF()->perm->forum_can('va') || !WPF()->perm->usergroup_can('caa') ){
2257
  $attach_html .= '<br/><div class="wpfa-item wpfa-file"><a class="attach_cant_view" style="cursor:pointer;"><span style="color:#666;">' . wpforo_phrase('Attachment', FALSE) . ':</span> ' . urldecode( basename($filename) ) . '</a></div>';
2258
  }
2259
  }
2260
+
2261
  if($attach_html){
2262
  $attach_html .= '<br/>';
2263
  $text = str_replace($match[0], $attach_html, $text);
2264
  }
2265
  }
2266
  }
2267
+
2268
  return $text;
2269
  }
2270
 
wpf-themes/classic/style-rtl.css CHANGED
@@ -273,7 +273,7 @@ RTL Style of Classic Theme
273
  #wpforo #wpforo-wrap h3.wpforo-forum-title{ padding-top:0;}
274
  #wpforo #wpforo-wrap .wpforo-post .wpforo-membertoggle{cursor:pointer; top:0; font-size:18px; line-height:18px;}
275
  #wpforo #wpforo-wrap .wpforo-post .wpforo-memberinfo{padding:3px; text-align:center; display:none;}
276
- #wpforo #wpforo-wrap .wpforo-post .wpf-member-profile-button {display: inline-block;font-size: 14px;line-height: 14px;margin-left:1px; padding:1px;}
277
  #wpforo #wpforo-wrap .wpforo-post .wpforo-memberinfo .wpf-member-socnet-wrap{ display:block; padding:6px 15px; text-align:center;}
278
  #wpforo #wpforo-wrap .wpforo-post .wpforo-memberinfo .wpf-member-socnet-button img{ opacity:0.7; border:none; text-decoration:none; float:none; display: inline-block;font-size: 16px;line-height: 16px; padding:0 1px 1px 1px;}
279
  #wpforo #wpforo-wrap .wpforo-post .wpforo-memberinfo .wpf-member-socnet-button img:hover{opacity:1;}
@@ -785,6 +785,8 @@ RTL Style of Classic Theme
785
  #wpforo #wpforo-wrap .reply-wrap .wpf-form-wrapper.wpfel-4{width: 100%;}
786
  #wpforo #wpforo-wrap .wpf-form-wrapper.wpfel-4 .wpf-reply-form-title{font-size: 16px;margin: 20px 0 10px 0;font-weight: normal;line-height: 20px;display: block;}
787
  #wpforo #wpforo-wrap #wpf-form-wrapper.wpfel-4 .mce-toolbar .mce-btn-group .mce-btn.mce-last { float: none; }
 
 
788
 
789
  @media all and (max-width: 1000px){
790
  #wpforo #wpforo-wrap .wpf-circle.wpf-m i{font-size: 14px;}
273
  #wpforo #wpforo-wrap h3.wpforo-forum-title{ padding-top:0;}
274
  #wpforo #wpforo-wrap .wpforo-post .wpforo-membertoggle{cursor:pointer; top:0; font-size:18px; line-height:18px;}
275
  #wpforo #wpforo-wrap .wpforo-post .wpforo-memberinfo{padding:3px; text-align:center; display:none;}
276
+ #wpforo #wpforo-wrap .wpforo-post .wpf-member-profile-button {display: inline-block;font-size: 14px;line-height: 14px;margin-left:3px; padding:1px;}
277
  #wpforo #wpforo-wrap .wpforo-post .wpforo-memberinfo .wpf-member-socnet-wrap{ display:block; padding:6px 15px; text-align:center;}
278
  #wpforo #wpforo-wrap .wpforo-post .wpforo-memberinfo .wpf-member-socnet-button img{ opacity:0.7; border:none; text-decoration:none; float:none; display: inline-block;font-size: 16px;line-height: 16px; padding:0 1px 1px 1px;}
279
  #wpforo #wpforo-wrap .wpforo-post .wpforo-memberinfo .wpf-member-socnet-button img:hover{opacity:1;}
785
  #wpforo #wpforo-wrap .reply-wrap .wpf-form-wrapper.wpfel-4{width: 100%;}
786
  #wpforo #wpforo-wrap .wpf-form-wrapper.wpfel-4 .wpf-reply-form-title{font-size: 16px;margin: 20px 0 10px 0;font-weight: normal;line-height: 20px;display: block;}
787
  #wpforo #wpforo-wrap #wpf-form-wrapper.wpfel-4 .mce-toolbar .mce-btn-group .mce-btn.mce-last { float: none; }
788
+ #wpforo #wpforo-wrap .wpfl-4 .post-wrap .wpf-post-create .wpf-field-name-title,
789
+ #wpforo #wpforo-wrap .wpfl-4 .wpf-post-replies .wpf-post-create .wpf-field-name-title{display:block!important;}
790
 
791
  @media all and (max-width: 1000px){
792
  #wpforo #wpforo-wrap .wpf-circle.wpf-m i{font-size: 14px;}
wpf-themes/classic/style.css CHANGED
@@ -278,7 +278,7 @@ Author: gVectors Team
278
  #wpforo #wpforo-wrap h3.wpforo-forum-title{ padding-top:0;}
279
  #wpforo #wpforo-wrap .wpforo-post .wpforo-membertoggle{cursor:pointer; top:0; font-size:18px; line-height:18px;}
280
  #wpforo #wpforo-wrap .wpforo-post .wpforo-memberinfo{padding:3px; text-align:center; display:none;}
281
- #wpforo #wpforo-wrap .wpforo-post .wpf-member-profile-button {display: inline-block;font-size: 14px;line-height: 14px;margin-right:1px; padding:1px;}
282
  #wpforo #wpforo-wrap .wpforo-post .wpforo-memberinfo .wpf-member-socnet-wrap{ display:block; padding:6px 15px; text-align:center;}
283
  #wpforo #wpforo-wrap .wpforo-post .wpforo-memberinfo .wpf-member-socnet-button img{ opacity:0.7; border:none; text-decoration:none; float:none; display: inline-block;font-size: 16px;line-height: 16px; padding:0 1px 1px 1px;}
284
  #wpforo #wpforo-wrap .wpforo-post .wpforo-memberinfo .wpf-member-socnet-button img:hover{opacity:1;}
@@ -790,8 +790,10 @@ Author: gVectors Team
790
  #wpforo #wpforo-wrap .reply-wrap .wpf-form-wrapper.wpfel-4{width: 100%;}
791
  #wpforo #wpforo-wrap .wpf-form-wrapper.wpfel-4 .wpf-reply-form-title{font-size: 16px;margin: 20px 0 10px 0;font-weight: normal;line-height: 20px;display: block;}
792
  #wpforo #wpforo-wrap #wpf-form-wrapper.wpfel-4 .mce-toolbar .mce-btn-group .mce-btn.mce-last { float: none; }
 
 
793
 
794
- @media all and (max-width: 1000px){
795
  #wpforo #wpforo-wrap .wpf-circle.wpf-m i{font-size: 14px;}
796
  #wpforo #wpforo-wrap .wpf-circle.wpf-s i{font-size: 10px;}
797
  #wpforo #wpforo-wrap .wpfl-4 .wpf-thread-status .wpf-circle:first-child i{font-size: 12px;}
278
  #wpforo #wpforo-wrap h3.wpforo-forum-title{ padding-top:0;}
279
  #wpforo #wpforo-wrap .wpforo-post .wpforo-membertoggle{cursor:pointer; top:0; font-size:18px; line-height:18px;}
280
  #wpforo #wpforo-wrap .wpforo-post .wpforo-memberinfo{padding:3px; text-align:center; display:none;}
281
+ #wpforo #wpforo-wrap .wpforo-post .wpf-member-profile-button {display: inline-block;font-size: 14px;line-height: 14px;margin-right:3px; padding:1px;}
282
  #wpforo #wpforo-wrap .wpforo-post .wpforo-memberinfo .wpf-member-socnet-wrap{ display:block; padding:6px 15px; text-align:center;}
283
  #wpforo #wpforo-wrap .wpforo-post .wpforo-memberinfo .wpf-member-socnet-button img{ opacity:0.7; border:none; text-decoration:none; float:none; display: inline-block;font-size: 16px;line-height: 16px; padding:0 1px 1px 1px;}
284
  #wpforo #wpforo-wrap .wpforo-post .wpforo-memberinfo .wpf-member-socnet-button img:hover{opacity:1;}
790
  #wpforo #wpforo-wrap .reply-wrap .wpf-form-wrapper.wpfel-4{width: 100%;}
791
  #wpforo #wpforo-wrap .wpf-form-wrapper.wpfel-4 .wpf-reply-form-title{font-size: 16px;margin: 20px 0 10px 0;font-weight: normal;line-height: 20px;display: block;}
792
  #wpforo #wpforo-wrap #wpf-form-wrapper.wpfel-4 .mce-toolbar .mce-btn-group .mce-btn.mce-last { float: none; }
793
+ #wpforo #wpforo-wrap .wpfl-4 .post-wrap .wpf-post-create .wpf-field-name-title,
794
+ #wpforo #wpforo-wrap .wpfl-4 .wpf-post-replies .wpf-post-create .wpf-field-name-title{display:block!important;}
795
 
796
+ @media all and (max-width: 1000px){
797
  #wpforo #wpforo-wrap .wpf-circle.wpf-m i{font-size: 14px;}
798
  #wpforo #wpforo-wrap .wpf-circle.wpf-s i{font-size: 10px;}
799
  #wpforo #wpforo-wrap .wpfl-4 .wpf-thread-status .wpf-circle:first-child i{font-size: 12px;}
wpf-themes/classic/widgets-rtl.css CHANGED
@@ -168,7 +168,7 @@
168
  #wpforo #wpf-widget-profile .wpf-prof-footer .wpf-prof-buttons,
169
  #wpf-widget-profile .wpf-prof-footer .wpf-prof-buttons{ margin-top: 3px;}
170
  #wpforo #wpf-widget-profile .wpf-prof-footer .wpf-prof-buttons a,
171
- #wpf-widget-profile .wpf-prof-footer .wpf-prof-buttons a{margin-left: 1px;padding: 4px 10px 4px 10px;text-align: center;line-height: 16px;font-size: 13px;background:#f5f5f5;margin-top: 10px;display: inline-block; border-radius: 2px;}
172
  #wpforo #wpf-widget-profile .wpf-prof-footer .wpf-prof-buttons a:hover,
173
  #wpf-widget-profile .wpf-prof-footer .wpf-prof-buttons a:hover{color: #f5f5f5;}
174
  #wpforo #wpf-widget-profile .wpf-prof-footer .wpf-prof-buttons a.wpf-logout,
168
  #wpforo #wpf-widget-profile .wpf-prof-footer .wpf-prof-buttons,
169
  #wpf-widget-profile .wpf-prof-footer .wpf-prof-buttons{ margin-top: 3px;}
170
  #wpforo #wpf-widget-profile .wpf-prof-footer .wpf-prof-buttons a,
171
+ #wpf-widget-profile .wpf-prof-footer .wpf-prof-buttons a{margin-left: 3px;padding: 4px 10px 4px 10px;text-align: center;line-height: 16px;font-size: 13px;background:#f5f5f5;margin-top: 10px;display: inline-block; border-radius: 2px;}
172
  #wpforo #wpf-widget-profile .wpf-prof-footer .wpf-prof-buttons a:hover,
173
  #wpf-widget-profile .wpf-prof-footer .wpf-prof-buttons a:hover{color: #f5f5f5;}
174
  #wpforo #wpf-widget-profile .wpf-prof-footer .wpf-prof-buttons a.wpf-logout,
wpf-themes/classic/widgets.css CHANGED
@@ -168,7 +168,7 @@
168
  #wpforo #wpf-widget-profile .wpf-prof-footer .wpf-prof-buttons,
169
  #wpf-widget-profile .wpf-prof-footer .wpf-prof-buttons{ margin-top: 3px;}
170
  #wpforo #wpf-widget-profile .wpf-prof-footer .wpf-prof-buttons a,
171
- #wpf-widget-profile .wpf-prof-footer .wpf-prof-buttons a{margin-right: 1px;padding: 4px 10px 4px 10px;text-align: center;line-height: 16px;font-size: 13px;background:#f5f5f5;margin-top: 10px;display: inline-block; border-radius: 2px;}
172
  #wpforo #wpf-widget-profile .wpf-prof-footer .wpf-prof-buttons a:hover,
173
  #wpf-widget-profile .wpf-prof-footer .wpf-prof-buttons a:hover{color: #f5f5f5;}
174
  #wpforo #wpf-widget-profile .wpf-prof-footer .wpf-prof-buttons a.wpf-logout,
168
  #wpforo #wpf-widget-profile .wpf-prof-footer .wpf-prof-buttons,
169
  #wpf-widget-profile .wpf-prof-footer .wpf-prof-buttons{ margin-top: 3px;}
170
  #wpforo #wpf-widget-profile .wpf-prof-footer .wpf-prof-buttons a,
171
+ #wpf-widget-profile .wpf-prof-footer .wpf-prof-buttons a{margin-right: 3px;padding: 4px 10px 4px 10px;text-align: center;line-height: 16px;font-size: 13px;background:#f5f5f5;margin-top: 10px;display: inline-block; border-radius: 2px;}
172
  #wpforo #wpf-widget-profile .wpf-prof-footer .wpf-prof-buttons a:hover,
173
  #wpf-widget-profile .wpf-prof-footer .wpf-prof-buttons a:hover{color: #f5f5f5;}
174
  #wpforo #wpf-widget-profile .wpf-prof-footer .wpf-prof-buttons a.wpf-logout,
wpforo.php CHANGED
@@ -5,14 +5,14 @@
5
  * Description: WordPress Forum plugin. wpForo is a full-fledged forum solution for your community. Comes with multiple modern forum layouts.
6
  * Author: gVectors Team
7
  * Author URI: https://gvectors.com/
8
- * Version: 1.8.2
9
  * Text Domain: wpforo
10
  * Domain Path: /wpf-languages
11
  */
12
 
13
  //Exit if accessed directly
14
  if( !defined( 'ABSPATH' ) ) exit;
15
- if( !defined( 'WPFORO_VERSION' ) ) define('WPFORO_VERSION', '1.8.2');
16
 
17
  function wpforo_load_plugin_textdomain() { load_plugin_textdomain( 'wpforo', FALSE, basename( dirname( __FILE__ ) ) . '/wpf-languages/' ); }
18
  add_action( 'plugins_loaded', 'wpforo_load_plugin_textdomain' );
5
  * Description: WordPress Forum plugin. wpForo is a full-fledged forum solution for your community. Comes with multiple modern forum layouts.
6
  * Author: gVectors Team
7
  * Author URI: https://gvectors.com/
8
+ * Version: 1.8.3
9
  * Text Domain: wpforo
10
  * Domain Path: /wpf-languages
11
  */
12
 
13
  //Exit if accessed directly
14
  if( !defined( 'ABSPATH' ) ) exit;
15
+ if( !defined( 'WPFORO_VERSION' ) ) define('WPFORO_VERSION', '1.8.3');
16
 
17
  function wpforo_load_plugin_textdomain() { load_plugin_textdomain( 'wpforo', FALSE, basename( dirname( __FILE__ ) ) . '/wpf-languages/' ); }
18
  add_action( 'plugins_loaded', 'wpforo_load_plugin_textdomain' );