Version Description
Download this release
Release Info
Developer | Tomdever |
Plugin | wpForo Forum |
Version | 2.1.0 |
Comparing to | |
See all releases |
Code changes from version 2.0.9 to 2.1.0
- admin/assets/js/widgets.js +36 -0
- admin/listtables/Members.php +21 -18
- admin/listtables/Moderations.php +1 -1
- admin/listtables/Phrases.php +1 -1
- admin/settings/board.php +1 -0
- admin/settings/email.php +10 -0
- assets/addons/wpforo-coocomerce-memberships/header-off.png +0 -0
- assets/addons/wpforo-coocomerce-memberships/header.png +0 -0
- assets/addons/wpforo-woocomerce-memberships/header-off.png +0 -0
- assets/addons/wpforo-woocomerce-memberships/header.png +0 -0
- assets/js/ajax.js +52 -26
- assets/js/frontend.js +8 -8
- assets/js/widgets.js +48 -1
- classes/API.php +14 -17
- classes/Actions.php +35 -15
- classes/Activity.php +5 -5
- classes/Boards.php +18 -1
- classes/Cache.php +33 -8
- classes/Forms.php +4 -7
- classes/Forums.php +21 -21
- classes/Members.php +69 -13
- classes/Moderation.php +2 -2
- classes/Phrases.php +9 -4
- classes/Posts.php +55 -18
- classes/Settings.php +46 -2
- classes/Template.php +46 -9
- classes/Topics.php +75 -14
- includes/functions-template.php +18 -6
- includes/functions.php +91 -81
- includes/hooks.php +65 -30
- includes/install-sql.php +1 -1
- includes/installation.php +1 -0
- integrations/UltimateMember.php +1 -2
- languages/wpforo.pot +762 -677
- modules/mentioning/classes/Actions.php +1 -1
- modules/reactions/Reactions.php +540 -363
- modules/subscriptions/Subscriptions.php +1 -1
- readme.txt +43 -2
- themes/2022/members.php +1 -1
- themes/2022/profile-activity.php +2 -2
- themes/2022/profile-favored.php +1 -1
- themes/2022/profile-subscriptions.php +1 -1
- themes/2022/recent.php +2 -2
- themes/2022/search.php +1 -1
- themes/2022/style-rtl.css +6 -0
- themes/2022/style.css +8 -2
- themes/2022/styles/matrix.css +1 -0
- themes/2022/widgets-rtl.css +3 -3
- themes/2022/widgets.css +3 -3
- themes/classic/layouts/1/forum.php +1 -1
- themes/classic/layouts/2/forum.php +1 -1
- themes/classic/layouts/3/forum.php +1 -1
- themes/classic/layouts/4/forum.php +1 -1
- themes/classic/profile-activity.php +2 -2
- themes/classic/profile-favored.php +1 -1
- themes/classic/profile-subscriptions.php +1 -1
- themes/classic/recent.php +2 -2
- themes/classic/search.php +1 -1
- themes/classic/style-rtl.css +3 -0
- themes/classic/style.css +3 -0
- themes/classic/widgets-rtl.css +3 -3
- themes/classic/widgets.css +3 -3
- widgets/Forums.php +63 -32
- widgets/OnlineMembers.php +80 -51
- widgets/RecentPosts.php +238 -186
- widgets/RecentTopics.php +181 -130
- widgets/Search.php +53 -23
- widgets/Tags.php +68 -36
- wpforo.php +15 -10
admin/assets/js/widgets.js
ADDED
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery.ajaxSetup({
|
2 |
+
url: ajaxurl,
|
3 |
+
data:{
|
4 |
+
referer: window.location.origin + window.location.pathname
|
5 |
+
}
|
6 |
+
});
|
7 |
+
|
8 |
+
jQuery( document ).ready( function($){
|
9 |
+
var body = $( 'body' );
|
10 |
+
body.on( 'change', '.wpf_wdg_limit_per_topic', {}, function () {
|
11 |
+
var wrap = $(this).parents('.wpf_wdg_form_wrap')
|
12 |
+
var disabled = $(this).val() > 0
|
13 |
+
$('.wpf_wdg_orderby', wrap).attr('disabled', disabled)
|
14 |
+
$('.wpf_wdg_order', wrap).attr('disabled', disabled)
|
15 |
+
});
|
16 |
+
|
17 |
+
body.on( 'change', '.wpf_wdg_boardid', {}, function(){
|
18 |
+
var $this = $( this );
|
19 |
+
var wrap = $this.closest( '.wpf-wdg-wrapper' );
|
20 |
+
var forumids_dd = $( '.wpf_wdg_forumids', wrap );
|
21 |
+
var boardid = $this.val();
|
22 |
+
forumids_dd.empty();
|
23 |
+
|
24 |
+
$.ajax({
|
25 |
+
type: 'POST',
|
26 |
+
url: ajaxurl + '?wpforo_boardid=' + boardid,
|
27 |
+
data: {
|
28 |
+
action: 'wpforo_get_forum_tree'
|
29 |
+
}
|
30 |
+
}).done( function( r ){
|
31 |
+
if( r.success ){
|
32 |
+
forumids_dd.html( r.data['html'] );
|
33 |
+
}
|
34 |
+
} );
|
35 |
+
} );
|
36 |
+
} );
|
admin/listtables/Members.php
CHANGED
@@ -20,11 +20,11 @@ class Members extends WP_List_Table {
|
|
20 |
function __construct() {
|
21 |
//Set parent defaults
|
22 |
parent::__construct( [
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
|
29 |
}
|
30 |
|
@@ -57,6 +57,8 @@ class Members extends WP_List_Table {
|
|
57 |
$usergroup = WPF()->usergroup->get_usergroup( $item[ $column_name ] );
|
58 |
|
59 |
return ! empty( $usergroup['name'] ) ? esc_html( $usergroup['name'] ) : __( 'default', 'wpforo' );
|
|
|
|
|
60 |
case 'blog_posts':
|
61 |
return WPF()->member->blog_posts( $item['userid'] );
|
62 |
case 'blog_comments':
|
@@ -170,17 +172,18 @@ class Members extends WP_List_Table {
|
|
170 |
*/
|
171 |
function get_columns() {
|
172 |
$columns = [
|
173 |
-
'cb'
|
174 |
-
'userid'
|
175 |
-
'display_name'
|
176 |
-
'user_login'
|
177 |
-
'user_email'
|
178 |
-
'groupid'
|
179 |
-
'
|
180 |
-
'
|
181 |
-
'
|
182 |
-
'
|
183 |
-
'
|
|
|
184 |
];
|
185 |
|
186 |
return $this->unset_not_permitted_cols( $columns );
|
@@ -224,7 +227,7 @@ class Members extends WP_List_Table {
|
|
224 |
unset( $columns['user_email'] );
|
225 |
}
|
226 |
if( ! WPF()->usergroup->can( 'vmg' ) ) {
|
227 |
-
unset( $columns['groupid'] );
|
228 |
}
|
229 |
if( ! WPF()->usergroup->can( 'bm' ) ) {
|
230 |
unset( $columns['status'] );
|
@@ -348,7 +351,7 @@ class Members extends WP_List_Table {
|
|
348 |
$args = [];
|
349 |
if( $s = wpfval( $_REQUEST, 's' ) ) $args['include'] = WPF()->member->search( $s, $search_fields );
|
350 |
$orderby = wpfval( $_REQUEST, 'orderby' );
|
351 |
-
$order = strtoupper( wpfval( $_REQUEST, 'order' ) );
|
352 |
$filter_by_group = $this->get_filter_by_group_var();
|
353 |
$filter_by_status = $this->get_filter_by_status_var();
|
354 |
if( $filter_by_group !== - 1 ) $args['groupid'] = $filter_by_group;
|
20 |
function __construct() {
|
21 |
//Set parent defaults
|
22 |
parent::__construct( [
|
23 |
+
'singular' => 'member', //singular name of the listed records
|
24 |
+
'plural' => 'members', //plural name of the listed records
|
25 |
+
'ajax' => false, //does this table support ajax?
|
26 |
+
'screen' => 'wpForoMembers',
|
27 |
+
] );
|
28 |
|
29 |
}
|
30 |
|
57 |
$usergroup = WPF()->usergroup->get_usergroup( $item[ $column_name ] );
|
58 |
|
59 |
return ! empty( $usergroup['name'] ) ? esc_html( $usergroup['name'] ) : __( 'default', 'wpforo' );
|
60 |
+
case 'secondary_groupids':
|
61 |
+
return implode( ', ', WPF()->usergroup->get_secondary_group_names( $item[ $column_name ] ) );
|
62 |
case 'blog_posts':
|
63 |
return WPF()->member->blog_posts( $item['userid'] );
|
64 |
case 'blog_comments':
|
172 |
*/
|
173 |
function get_columns() {
|
174 |
$columns = [
|
175 |
+
'cb' => '<input type="checkbox" />', //Render a checkbox instead of text
|
176 |
+
'userid' => __( 'ID', 'wpforo' ),
|
177 |
+
'display_name' => __( 'Display Name', 'wpforo' ),
|
178 |
+
'user_login' => __( 'Login', 'wpforo' ),
|
179 |
+
'user_email' => __( 'Email', 'wpforo' ),
|
180 |
+
'groupid' => __( 'Group', 'wpforo' ),
|
181 |
+
'secondary_groupids' => __( 'Secondary Groups', 'wpforo' ),
|
182 |
+
'status' => __( 'Status', 'wpforo' ),
|
183 |
+
'online_time' => __( 'Last Login', 'wpforo' ),
|
184 |
+
'posts' => __( 'Forum Posts', 'wpforo' ),
|
185 |
+
'blog_posts' => __( 'Blog Posts', 'wpforo' ),
|
186 |
+
'blog_comments' => __( 'Blog Comments', 'wpforo' ),
|
187 |
];
|
188 |
|
189 |
return $this->unset_not_permitted_cols( $columns );
|
227 |
unset( $columns['user_email'] );
|
228 |
}
|
229 |
if( ! WPF()->usergroup->can( 'vmg' ) ) {
|
230 |
+
unset( $columns['groupid'], $columns['secondary_groupids'] );
|
231 |
}
|
232 |
if( ! WPF()->usergroup->can( 'bm' ) ) {
|
233 |
unset( $columns['status'] );
|
351 |
$args = [];
|
352 |
if( $s = wpfval( $_REQUEST, 's' ) ) $args['include'] = WPF()->member->search( $s, $search_fields );
|
353 |
$orderby = wpfval( $_REQUEST, 'orderby' );
|
354 |
+
$order = strtoupper( (string) wpfval( $_REQUEST, 'order' ) );
|
355 |
$filter_by_group = $this->get_filter_by_group_var();
|
356 |
$filter_by_status = $this->get_filter_by_status_var();
|
357 |
if( $filter_by_group !== - 1 ) $args['groupid'] = $filter_by_group;
|
admin/listtables/Moderations.php
CHANGED
@@ -262,7 +262,7 @@ class Moderations extends WP_List_Table {
|
|
262 |
}
|
263 |
$filter_by_userid = $this->get_filter_by_userid_var();
|
264 |
$orderby = wpfval( $_REQUEST, 'orderby' );
|
265 |
-
$order = strtoupper( wpfval( $_REQUEST, 'order' ) );
|
266 |
if( $filter_by_userid !== - 1 ) $args['userid'] = $filter_by_userid;
|
267 |
|
268 |
if( $type = $this->get_filter_by_type_var() ){
|
262 |
}
|
263 |
$filter_by_userid = $this->get_filter_by_userid_var();
|
264 |
$orderby = wpfval( $_REQUEST, 'orderby' );
|
265 |
+
$order = strtoupper( (string) wpfval( $_REQUEST, 'order' ) );
|
266 |
if( $filter_by_userid !== - 1 ) $args['userid'] = $filter_by_userid;
|
267 |
|
268 |
if( $type = $this->get_filter_by_type_var() ){
|
admin/listtables/Phrases.php
CHANGED
@@ -231,7 +231,7 @@ class Phrases extends WP_List_Table {
|
|
231 |
$args = [ 'langid' => $this->get_filter_by_langid_var() ];
|
232 |
if( $s = wpfval( $_REQUEST, 's' ) ) $args['include'] = WPF()->phrase->search( $s );
|
233 |
$orderby = wpfval( $_REQUEST, 'orderby' );
|
234 |
-
$order = strtoupper( wpfval( $_REQUEST, 'order' ) );
|
235 |
$filter_by_package = $this->get_filter_by_package_var();
|
236 |
if( $filter_by_package !== - 1 ) $args['package'] = (array) $filter_by_package;
|
237 |
if( in_array( $order, [ 'ASC', 'DESC' ] ) ) $args['order'] = sanitize_text_field( $order );
|
231 |
$args = [ 'langid' => $this->get_filter_by_langid_var() ];
|
232 |
if( $s = wpfval( $_REQUEST, 's' ) ) $args['include'] = WPF()->phrase->search( $s );
|
233 |
$orderby = wpfval( $_REQUEST, 'orderby' );
|
234 |
+
$order = strtoupper( (string) wpfval( $_REQUEST, 'order' ) );
|
235 |
$filter_by_package = $this->get_filter_by_package_var();
|
236 |
if( $filter_by_package !== - 1 ) $args['package'] = (array) $filter_by_package;
|
237 |
if( in_array( $order, [ 'ASC', 'DESC' ] ) ) $args['order'] = sanitize_text_field( $order );
|
admin/settings/board.php
CHANGED
@@ -7,6 +7,7 @@
|
|
7 |
WPF()->settings->header( 'board' );
|
8 |
WPF()->settings->form_field('board', 'under_construction');
|
9 |
WPF()->settings->form_field('board', 'cache');
|
|
|
10 |
?>
|
11 |
|
12 |
<div class="wpf-subtitle">
|
7 |
WPF()->settings->header( 'board' );
|
8 |
WPF()->settings->form_field('board', 'under_construction');
|
9 |
WPF()->settings->form_field('board', 'cache');
|
10 |
+
WPF()->settings->form_field('board', 'url_structure');
|
11 |
?>
|
12 |
|
13 |
<div class="wpf-subtitle">
|
admin/settings/email.php
CHANGED
@@ -49,3 +49,13 @@ WPF()->settings->form_field( 'email', 'wp_new_user_notification_email_message' )
|
|
49 |
<?php
|
50 |
WPF()->settings->form_field( 'email', 'overwrite_reset_password_email' );
|
51 |
WPF()->settings->form_field( 'email', 'reset_password_email_message' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
49 |
<?php
|
50 |
WPF()->settings->form_field( 'email', 'overwrite_reset_password_email' );
|
51 |
WPF()->settings->form_field( 'email', 'reset_password_email_message' );
|
52 |
+
?>
|
53 |
+
|
54 |
+
<div class="wpf-subtitle">
|
55 |
+
<span class="dashicons dashicons-admin-users"></span> <?php _e( 'After User Approve Email', 'wpforo' ) ?>
|
56 |
+
<p class="wpf-desc" style="padding: 5px 2px 0;"><?php _e( 'This message comes when moderators has been manually approved a user', 'wpforo' ) ?></p>
|
57 |
+
</div>
|
58 |
+
<?php
|
59 |
+
WPF()->settings->form_field( 'email', 'after_user_approve_email_subject' );
|
60 |
+
WPF()->settings->form_field( 'email', 'after_user_approve_email_message' );
|
61 |
+
?>
|
assets/addons/wpforo-coocomerce-memberships/header-off.png
DELETED
Binary file
|
assets/addons/wpforo-coocomerce-memberships/header.png
DELETED
Binary file
|
assets/addons/wpforo-woocomerce-memberships/header-off.png
ADDED
Binary file
|
assets/addons/wpforo-woocomerce-memberships/header.png
ADDED
Binary file
|
assets/js/ajax.js
CHANGED
@@ -312,9 +312,7 @@ $wpf(document).ready(function ($) {
|
|
312 |
$(".wpf-reply-form-title").html(phrase);
|
313 |
$(".wpf-form-postid", main_form).val(0);
|
314 |
|
315 |
-
wpforo_editor.set_content(response.data
|
316 |
-
|
317 |
-
$('html, body').animate({scrollTop: wrap.offset().top}, 1000);
|
318 |
wpforo_load_hide();
|
319 |
$this.removeClass('wpf-processing');
|
320 |
});
|
@@ -1431,13 +1429,21 @@ $wpf(document).ready(function ($) {
|
|
1431 |
inputElement.dispatchEvent(new MouseEvent("click"));
|
1432 |
}
|
1433 |
|
1434 |
-
wpforo_wrap.on( 'click', '.wpforo-profile .wpforo-profile-head .wpf-edit-cover:not(.wpf-processing)', function(){
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1435 |
if ( !( window.File && window.FileReader && window.FileList && window.Blob ) ) {
|
1436 |
alert('The File APIs are not fully supported in this browser.');
|
1437 |
return false;
|
1438 |
}
|
1439 |
var that = $( this );
|
1440 |
-
|
|
|
1441 |
if( this.files.length ) {
|
1442 |
that.addClass( 'wpf-processing' );
|
1443 |
wpforo_load_show('Uploading...');
|
@@ -1460,35 +1466,58 @@ $wpf(document).ready(function ($) {
|
|
1460 |
});
|
1461 |
});
|
1462 |
|
1463 |
-
wpforo_wrap.on( 'click', '.wpforo-profile .wpforo-
|
1464 |
-
var that
|
1465 |
-
|
1466 |
-
var stat = !parseInt( that.data('stat') );
|
1467 |
that.addClass( 'wpf-processing' );
|
1468 |
-
wpforo_load_show();
|
1469 |
$wpf.ajax({
|
1470 |
type: 'POST',
|
1471 |
data: {
|
1472 |
-
|
1473 |
-
|
1474 |
-
action: 'wpforo_follow_unfollow_user',
|
1475 |
-
_wpfnonce: wpforo['nonces']['wpforo_follow_unfollow_user'],
|
1476 |
}
|
1477 |
}).done(function( r ){
|
1478 |
-
if( r.success )
|
1479 |
-
that.data( 'stat', r.data['stat'] );
|
1480 |
-
that.prop( 'stat', r.data['stat'] );
|
1481 |
-
that.attr( 'stat', r.data['stat'] );
|
1482 |
-
$( '.wpforo-follow-user-label', that ).text( r.data['phrase'] );
|
1483 |
-
$( '.wpforo-follow-user-followers-count', that.closest( '.wpforo-follow-wrap' ) ).text( r.data['followers_count'] );
|
1484 |
-
}
|
1485 |
-
wpforo_notice_show( r.data['notice'] );
|
1486 |
}).always(function(){
|
1487 |
that.removeClass('wpf-processing');
|
1488 |
wpforo_load_hide();
|
1489 |
});
|
1490 |
});
|
1491 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1492 |
wpforo_wrap.on('click', '.wpforo-post-head .wpf-pb-more', function(){
|
1493 |
var that = $( this );
|
1494 |
var wrap = that.closest( '.wpforo-post-head' );
|
@@ -1651,10 +1680,7 @@ $wpf(document).ready(function ($) {
|
|
1651 |
}
|
1652 |
}).done(function( r ){
|
1653 |
if( r.success ) wrap.remove();
|
1654 |
-
wpforo_notice_show( r.data['notice'] );
|
1655 |
-
setTimeout( function(){
|
1656 |
-
wpforo_notice_hide();
|
1657 |
-
}, 3000 );
|
1658 |
}).always(function(){
|
1659 |
$this.removeClass( 'wpf-processing' );
|
1660 |
});
|
312 |
$(".wpf-reply-form-title").html(phrase);
|
313 |
$(".wpf-form-postid", main_form).val(0);
|
314 |
|
315 |
+
wpforo_editor.set_content(response.data);
|
|
|
|
|
316 |
wpforo_load_hide();
|
317 |
$this.removeClass('wpf-processing');
|
318 |
});
|
1429 |
inputElement.dispatchEvent(new MouseEvent("click"));
|
1430 |
}
|
1431 |
|
1432 |
+
wpforo_wrap.on( 'click', '.wpforo-profile .wpforo-profile-head .wpf-edit-cover:not(.wpf-processing)', function( e ){
|
1433 |
+
if( e.target.dataset['action'] === 'editcover' ){
|
1434 |
+
var options = $( '.wpf-edit-cover-options', $( this ) );
|
1435 |
+
options.css( 'display', ( options.is( ':visible' ) ? 'none' : 'flex') );
|
1436 |
+
}
|
1437 |
+
});
|
1438 |
+
|
1439 |
+
wpforo_wrap.on( 'click', '.wpforo-profile .wpforo-profile-head .wpf-edit-cover .wpf-upload-cover:not(.wpf-processing)', function(){
|
1440 |
if ( !( window.File && window.FileReader && window.FileList && window.Blob ) ) {
|
1441 |
alert('The File APIs are not fully supported in this browser.');
|
1442 |
return false;
|
1443 |
}
|
1444 |
var that = $( this );
|
1445 |
+
that.closest( '.wpf-edit-cover-options' ).hide();
|
1446 |
+
OpenFileDialog('image/!*', function(){
|
1447 |
if( this.files.length ) {
|
1448 |
that.addClass( 'wpf-processing' );
|
1449 |
wpforo_load_show('Uploading...');
|
1466 |
});
|
1467 |
});
|
1468 |
|
1469 |
+
wpforo_wrap.on( 'click', '.wpforo-profile .wpforo-profile-head .wpf-edit-cover .wpf-delete-cover:not(.wpf-processing)', function(){
|
1470 |
+
var that = $( this );
|
1471 |
+
that.closest( '.wpf-edit-cover-options' ).hide();
|
|
|
1472 |
that.addClass( 'wpf-processing' );
|
1473 |
+
wpforo_load_show('Uploading...');
|
1474 |
$wpf.ajax({
|
1475 |
type: 'POST',
|
1476 |
data: {
|
1477 |
+
action: 'wpforo_profile_cover_delete',
|
1478 |
+
_wpfnonce: wpforo['nonces']['wpforo_profile_cover_delete'],
|
|
|
|
|
1479 |
}
|
1480 |
}).done(function( r ){
|
1481 |
+
if( r.success ) that.closest('.wpforo-profile-head').css('background-image', 'url(\'' + r.data['background_url'] + '\')');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1482 |
}).always(function(){
|
1483 |
that.removeClass('wpf-processing');
|
1484 |
wpforo_load_hide();
|
1485 |
});
|
1486 |
});
|
1487 |
|
1488 |
+
wpforo_wrap.on( 'click', '.wpforo-profile .wpforo-follow-user:not(.wpf-processing)', function(){
|
1489 |
+
if( document.body.classList.contains( 'logged-in' ) ){
|
1490 |
+
var that = $( this );
|
1491 |
+
var userid = parseInt( that.data('userid') );
|
1492 |
+
var stat = !parseInt( that.data('stat') );
|
1493 |
+
that.addClass( 'wpf-processing' );
|
1494 |
+
wpforo_load_show();
|
1495 |
+
$wpf.ajax({
|
1496 |
+
type: 'POST',
|
1497 |
+
data: {
|
1498 |
+
userid,
|
1499 |
+
stat: ( stat ? 1 : 0 ),
|
1500 |
+
action: 'wpforo_follow_unfollow_user',
|
1501 |
+
_wpfnonce: wpforo['nonces']['wpforo_follow_unfollow_user'],
|
1502 |
+
}
|
1503 |
+
}).done(function( r ){
|
1504 |
+
if( r.success ){
|
1505 |
+
that.data( 'stat', r.data['stat'] );
|
1506 |
+
that.prop( 'stat', r.data['stat'] );
|
1507 |
+
that.attr( 'stat', r.data['stat'] );
|
1508 |
+
$( '.wpforo-follow-user-label', that ).text( r.data['phrase'] );
|
1509 |
+
$( '.wpforo-follow-user-followers-count', that.closest( '.wpforo-follow-wrap' ) ).text( r.data['followers_count'] );
|
1510 |
+
}
|
1511 |
+
wpforo_notice_show( r.data['notice'], ( r.success ? 'success' : 'error' ) );
|
1512 |
+
}).always(function(){
|
1513 |
+
that.removeClass('wpf-processing');
|
1514 |
+
wpforo_load_hide();
|
1515 |
+
});
|
1516 |
+
}else{
|
1517 |
+
wpforo_notice_show( wpforo['notice']['login_or_register'] );
|
1518 |
+
}
|
1519 |
+
});
|
1520 |
+
|
1521 |
wpforo_wrap.on('click', '.wpforo-post-head .wpf-pb-more', function(){
|
1522 |
var that = $( this );
|
1523 |
var wrap = that.closest( '.wpforo-post-head' );
|
1680 |
}
|
1681 |
}).done(function( r ){
|
1682 |
if( r.success ) wrap.remove();
|
1683 |
+
wpforo_notice_show( r.data['notice'], ( r.success ? 'success' : 'error' ) );
|
|
|
|
|
|
|
1684 |
}).always(function(){
|
1685 |
$this.removeClass( 'wpf-processing' );
|
1686 |
});
|
assets/js/frontend.js
CHANGED
@@ -203,6 +203,7 @@ var wpforo_editor = {
|
|
203 |
tinymce_focus: function(textareaid, caret_to_end){
|
204 |
textareaid = this.fix_textareaid(textareaid);
|
205 |
if( this.is_tinymce(textareaid) ){
|
|
|
206 |
var focus_mce = tinymce.get(textareaid);
|
207 |
focus_mce.focus();
|
208 |
if(caret_to_end){
|
@@ -214,6 +215,7 @@ var wpforo_editor = {
|
|
214 |
textarea_focus: function(textareaid, caret_to_end){
|
215 |
textareaid = this.fix_textareaid(textareaid);
|
216 |
if( this.is_textarea(textareaid) ){
|
|
|
217 |
var textarea = $wpf( 'textarea#' + textareaid );
|
218 |
var textarea_val = textarea.val();
|
219 |
textarea.trigger("focus");
|
@@ -427,16 +429,14 @@ function wpforo_getTextSelection(){
|
|
427 |
if( !userid ) userid = 0;
|
428 |
var postid = post_wrap.data('postid');
|
429 |
if( !postid ) postid = 0;
|
430 |
-
var
|
431 |
-
|
432 |
-
|
433 |
-
mention_html = '<div class="wpforo-post-quote-author"><strong> '+ wpforo_phrase('Posted by') +': @' + mention +' </strong></div>';
|
434 |
}else{
|
435 |
-
|
436 |
}
|
437 |
-
|
438 |
-
|
439 |
-
$wpf('html, body').animate({ scrollTop: $wpf("form.wpforo-main-form").offset().top }, 500);
|
440 |
$wpf(this).remove();
|
441 |
});
|
442 |
toolTip.append(link);
|
203 |
tinymce_focus: function(textareaid, caret_to_end){
|
204 |
textareaid = this.fix_textareaid(textareaid);
|
205 |
if( this.is_tinymce(textareaid) ){
|
206 |
+
$wpf('html, body').animate({ scrollTop: ( $wpf('form[data-textareaid="' + textareaid + '"]').offset().top - 200 ) }, 500);
|
207 |
var focus_mce = tinymce.get(textareaid);
|
208 |
focus_mce.focus();
|
209 |
if(caret_to_end){
|
215 |
textarea_focus: function(textareaid, caret_to_end){
|
216 |
textareaid = this.fix_textareaid(textareaid);
|
217 |
if( this.is_textarea(textareaid) ){
|
218 |
+
$wpf('html, body').animate({ scrollTop: ($wpf('form[data-textareaid="' + textareaid + '"]').offset().top - 200) }, 500);
|
219 |
var textarea = $wpf( 'textarea#' + textareaid );
|
220 |
var textarea_val = textarea.val();
|
221 |
textarea.trigger("focus");
|
429 |
if( !userid ) userid = 0;
|
430 |
var postid = post_wrap.data('postid');
|
431 |
if( !postid ) postid = 0;
|
432 |
+
var editorContent = '';
|
433 |
+
if( wpforo_editor.is_tinymce() ){
|
434 |
+
editorContent = '[quote data-userid="'+ userid +'" data-postid="'+ postid +'"]<p>' + container.innerHTML.replace(/\s*data-[\w-]+="[^"]*?"/gi, '') + '</p>[/quote]<p></p>';
|
|
|
435 |
}else{
|
436 |
+
editorContent = '[quote data-userid="'+ userid +'" data-postid="'+ postid +'"]' + container.innerHTML.replace(/\s*data-[\w-]+="[^"]*?"/gi, '') + '[/quote]';
|
437 |
}
|
438 |
+
wpforo_editor.insert_content( editorContent );
|
439 |
+
// $wpf('html, body').animate({ scrollTop: $wpf("form.wpforo-main-form").offset().top }, 500);
|
|
|
440 |
$wpf(this).remove();
|
441 |
});
|
442 |
toolTip.append(link);
|
assets/js/widgets.js
CHANGED
@@ -50,6 +50,53 @@ jQuery(document).ready(function ($) {
|
|
50 |
}
|
51 |
});
|
52 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
});
|
54 |
|
55 |
function wpforo_bell( wpf_alerts ){
|
@@ -124,4 +171,4 @@ function wpforo_notifications_ui_update(response){
|
|
124 |
}
|
125 |
if( response.data.notifications ) jQuery('.wpf-notifications .wpf-notification-content').html( response.data.notifications );
|
126 |
wpforo_bell( wpf_alerts );
|
127 |
-
}
|
50 |
}
|
51 |
});
|
52 |
|
53 |
+
function do_wpforo_ajax_widget( elem ){
|
54 |
+
var j = elem.data( 'json' );
|
55 |
+
if( j ){
|
56 |
+
if( typeof j !== 'object' ) j = JSON.parse( j );
|
57 |
+
if( j['instance'] !== undefined && typeof j['instance'] !== 'object' ) j['instance'] = JSON.parse( j['instance'] );
|
58 |
+
if( j['topic_args'] !== undefined && typeof j['topic_args'] !== 'object' ) j['topic_args'] = JSON.parse( j['topic_args'] );
|
59 |
+
if( j['post_args'] !== undefined && typeof j['post_args'] !== 'object' ) j['post_args'] = JSON.parse( j['post_args'] );
|
60 |
+
|
61 |
+
if( j['boardid'] !== undefined ){
|
62 |
+
var ajax_url = wpforo_widgets.ajax_url.replace( /[&?]wpforo_boardid=\d*/i, '' );
|
63 |
+
ajax_url += (/\?/.test( ajax_url ) ? '&' : '?') + 'wpforo_boardid=' + j['boardid'];
|
64 |
+
|
65 |
+
if( j['instance'] !== undefined && j['instance']['refresh_interval'] !== undefined ){
|
66 |
+
var interval = parseInt( j['instance']['refresh_interval'] );
|
67 |
+
}
|
68 |
+
|
69 |
+
if( j['instance'] !== undefined ) j['instance'] = JSON.stringify( j['instance'] );
|
70 |
+
if( j['topic_args'] !== undefined ) j['topic_args'] = JSON.stringify( j['topic_args'] );
|
71 |
+
if( j['post_args'] !== undefined ) j['post_args'] = JSON.stringify( j['post_args'] );
|
72 |
+
|
73 |
+
$.ajax({
|
74 |
+
type: 'POST',
|
75 |
+
url: ajax_url,
|
76 |
+
data: j,
|
77 |
+
}).done(function( r ){
|
78 |
+
if( r.success ) elem.html( r.data['html'] );
|
79 |
+
|
80 |
+
if( !isNaN( interval ) && interval > 0 ){
|
81 |
+
setTimeout( function(){
|
82 |
+
do_wpforo_ajax_widget( elem );
|
83 |
+
}, interval * 1000 );
|
84 |
+
}
|
85 |
+
});
|
86 |
+
}
|
87 |
+
}
|
88 |
+
}
|
89 |
+
|
90 |
+
function do_wpforo_ajax_widgets(){
|
91 |
+
var wdgts = $( '.wpforo-widget-wrap .wpforo-ajax-widget[data-json]' );
|
92 |
+
if( wdgts.length ){
|
93 |
+
wdgts.each(function( k, v ){
|
94 |
+
do_wpforo_ajax_widget( $(v) );
|
95 |
+
});
|
96 |
+
}
|
97 |
+
}
|
98 |
+
|
99 |
+
do_wpforo_ajax_widgets();
|
100 |
});
|
101 |
|
102 |
function wpforo_bell( wpf_alerts ){
|
171 |
}
|
172 |
if( response.data.notifications ) jQuery('.wpf-notifications .wpf-notification-content').html( response.data.notifications );
|
173 |
wpforo_bell( wpf_alerts );
|
174 |
+
}
|
classes/API.php
CHANGED
@@ -401,6 +401,9 @@ class API {
|
|
401 |
}
|
402 |
|
403 |
public function fb_sdk() {
|
|
|
|
|
|
|
404 |
if( wpforo_setting( 'authorization', 'fb_api_id' ) ){
|
405 |
?>
|
406 |
<script>
|
@@ -515,24 +518,18 @@ class API {
|
|
515 |
} else {
|
516 |
?>
|
517 |
<div class="wpf-sbw wpf-sbw-fb">
|
518 |
-
|
519 |
-
<
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
</
|
525 |
-
|
526 |
-
<
|
527 |
-
<i class="fab fa-facebook-f" aria-hidden="true"></i> <span><?php echo wpforo_phrase(
|
528 |
-
'Share'
|
529 |
-
) ?></span>
|
530 |
-
</span>
|
531 |
-
<?php else: ?>
|
532 |
-
<span class="wpf-sb-button wpf-sb-icon wpf-fb" data-wpfurl="<?php echo esc_url( $url ) ?>">
|
533 |
<i class="fab fa-facebook-f" aria-hidden="true"></i>
|
534 |
-
</
|
535 |
-
|
536 |
</div>
|
537 |
<?php
|
538 |
}
|
401 |
}
|
402 |
|
403 |
public function fb_sdk() {
|
404 |
+
// @todo
|
405 |
+
// FB SDK is disabled temporarily.
|
406 |
+
return false;
|
407 |
if( wpforo_setting( 'authorization', 'fb_api_id' ) ){
|
408 |
?>
|
409 |
<script>
|
518 |
} else {
|
519 |
?>
|
520 |
<div class="wpf-sbw wpf-sbw-fb">
|
521 |
+
<?php if( wpforo_setting( 'social', 'sb_type' ) === 'button_count' ): ?>
|
522 |
+
<a target="_blank" href="https://www.facebook.com/share.php?u=<?php echo urlencode( $url ) ?>"
|
523 |
+
class="fb-xfbml-parse-ignore"><?php wpforo_phrase( 'Share' ); ?></a>
|
524 |
+
<?php elseif( wpforo_setting( 'social', 'sb_type' ) === 'button' ): ?>
|
525 |
+
<a class="wpf-sb-button wpf-fb" href="https://www.facebook.com/share.php?u=<?php echo urlencode($url) ?>" target="_blank">
|
526 |
+
<i class="fab fa-facebook-f" aria-hidden="true"></i> <span><?php echo wpforo_phrase('Share') ?></span>
|
527 |
+
</a>
|
528 |
+
<?php else: ?>
|
529 |
+
<a class="wpf-sb-button wpf-sb-icon wpf-fb" href="https://www.facebook.com/share.php?u=<?php echo urlencode($url) ?>" target="_blank">
|
|
|
|
|
|
|
|
|
|
|
|
|
530 |
<i class="fab fa-facebook-f" aria-hidden="true"></i>
|
531 |
+
</a>
|
532 |
+
<?php endif; ?>
|
533 |
</div>
|
534 |
<?php
|
535 |
}
|
classes/Actions.php
CHANGED
@@ -35,7 +35,6 @@ class Actions {
|
|
35 |
add_action( 'wpforo_actions', [ $this, 'init_wp_emoji_hooks' ] );
|
36 |
|
37 |
add_action( 'wpforo_actions', [ $this, 'feed_rss2' ] );
|
38 |
-
add_action( 'wpforo_actions', [ $this, 'ucf_file_delete' ] );
|
39 |
add_action( 'wpforo_actions', [ $this, 'mark_all_read' ] );
|
40 |
add_action( 'wpforo_actions', [ $this, 'mark_notification_read' ] );
|
41 |
|
@@ -45,6 +44,7 @@ class Actions {
|
|
45 |
add_action( 'wpforo_action_resetpassword_form', [ $this, 'resetpassword_form' ] );
|
46 |
add_action( 'wpforo_action_resetpassword', [ $this, 'resetpassword' ] );
|
47 |
add_action( 'wpforo_action_profile_update', [ $this, 'profile_update' ] );
|
|
|
48 |
add_action( 'wpforo_action_cantlogin_contact', [ $this, 'cantlogin_contact' ] );
|
49 |
|
50 |
add_action( 'wpforo_action_topic_add', [ $this, 'topic_add' ] );
|
@@ -61,6 +61,7 @@ class Actions {
|
|
61 |
add_action( 'wp_ajax_wpforo_acp_toggle', [ $this, 'acp_toggle' ] );
|
62 |
add_action( 'wp_ajax_wpforo_clear_all_notifications', [ $this, 'clear_all_notifications' ] );
|
63 |
add_action( 'wp_ajax_wpforo_profile_cover_upload', [ $this, 'profile_cover_upload' ] );
|
|
|
64 |
add_action( 'wp_ajax_wpforo_get_topic_head_more_info', [ $this, 'get_topic_head_more_info' ] );
|
65 |
add_action( 'wp_ajax_nopriv_wpforo_get_topic_head_more_info', [ $this, 'get_topic_head_more_info' ] );
|
66 |
add_action( 'wp_ajax_wpforo_get_topic_overview_chunk', [ $this, 'get_topic_overview_chunk' ] );
|
@@ -270,7 +271,7 @@ class Actions {
|
|
270 |
$topic['topicurl'] = wpforo_home_url();
|
271 |
} else {
|
272 |
$topic = wpforo_topic( $topicid );
|
273 |
-
$topic['topicurl'] = ( wpfval( $topic, 'url' ) ) ? $topic['url'] : WPF()->topic->
|
274 |
$posts = WPF()->post->get_posts( [
|
275 |
'topicid' => $topicid,
|
276 |
'row_count' => $topic_rss_items,
|
@@ -282,7 +283,7 @@ class Actions {
|
|
282 |
$member = wpforo_member( $post );
|
283 |
$posts[ $key ]['description'] = wpforo_text( trim( strip_tags( $post['body'] ) ), 190, false );
|
284 |
$posts[ $key ]['content'] = trim( $post['body'] );
|
285 |
-
$posts[ $key ]['posturl'] = WPF()->post->
|
286 |
$posts[ $key ]['author'] = $member['display_name'];
|
287 |
}
|
288 |
WPF()->feed->rss2_topic( $forum, $topic, $posts );
|
@@ -306,7 +307,7 @@ class Actions {
|
|
306 |
$member = wpforo_member( $topic );
|
307 |
$topics[ $key ]['description'] = wpforo_text( trim( strip_tags( $post['body'] ) ), 190, false );
|
308 |
$topics[ $key ]['content'] = trim( $post['body'] );
|
309 |
-
$topics[ $key ]['topicurl'] = WPF()->topic->
|
310 |
$topics[ $key ]['author'] = $member['display_name'];
|
311 |
}
|
312 |
WPF()->feed->rss2_forum( $forum, $topics );
|
@@ -319,15 +320,16 @@ class Actions {
|
|
319 |
* ucf_file_delete delete /wp-content/uploads/UCFFILENAME
|
320 |
*/
|
321 |
public function ucf_file_delete() {
|
|
|
322 |
if( wpfval( WPF()->GET, 'foro_f' ) && wpfval( WPF()->GET, 'foro_u' ) && wpfval( WPF()->GET, 'foro_n' ) ) {
|
323 |
if( wp_verify_nonce( WPF()->GET['foro_n'], 'wpforo_delete_profile_field' ) ) {
|
324 |
$userid = intval( WPF()->GET['foro_u'] );
|
325 |
$field = sanitize_title( WPF()->GET['foro_f'] );
|
326 |
if( $file = WPF()->member->get_custom_field( $userid, $field ) ) {
|
327 |
-
$file =
|
328 |
$result = WPF()->member->update_custom_field( $userid, $field, '' );
|
329 |
if( $result ) {
|
330 |
-
@unlink( $file );
|
331 |
WPF()->phrase->clear_cache();
|
332 |
WPF()->notice->add( 'Deleted Successfully!', 'success' );
|
333 |
} else {
|
@@ -337,6 +339,9 @@ class Actions {
|
|
337 |
}
|
338 |
}
|
339 |
}
|
|
|
|
|
|
|
340 |
}
|
341 |
|
342 |
/**
|
@@ -426,6 +431,16 @@ class Actions {
|
|
426 |
wp_send_json_error();
|
427 |
}
|
428 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
429 |
public function profiles_default_cover_upload() {
|
430 |
|
431 |
if( $image_blob = wpfval( $_POST, 'image_blob' ) ){
|
@@ -687,7 +702,7 @@ class Actions {
|
|
687 |
$args = $_REQUEST['thread'];
|
688 |
$args['postmetas'] = (array) wpfval( $_REQUEST, 'data' );
|
689 |
if( $topicid = WPF()->topic->add( $args ) ) {
|
690 |
-
wp_safe_redirect( WPF()->topic->
|
691 |
exit();
|
692 |
}
|
693 |
wp_safe_redirect( wpforo_get_request_uri() );
|
@@ -702,7 +717,7 @@ class Actions {
|
|
702 |
$args = $_REQUEST['thread'];
|
703 |
$args['postmetas'] = (array) wpfval( $_REQUEST, 'data' );
|
704 |
if( $topicid = WPF()->topic->edit( $args ) ) {
|
705 |
-
wp_safe_redirect( WPF()->topic->
|
706 |
exit();
|
707 |
}
|
708 |
wp_safe_redirect( wpforo_get_request_uri() );
|
@@ -717,7 +732,7 @@ class Actions {
|
|
717 |
$args = $_REQUEST['post'];
|
718 |
$args['postmetas'] = (array) wpfval( $_REQUEST, 'data' );
|
719 |
if( $postid = WPF()->post->add( $args ) ) {
|
720 |
-
wp_safe_redirect( WPF()->post->
|
721 |
exit();
|
722 |
}
|
723 |
wp_safe_redirect( wpforo_get_request_uri() );
|
@@ -732,7 +747,7 @@ class Actions {
|
|
732 |
$args = $_REQUEST['post'];
|
733 |
$args['postmetas'] = (array) wpfval( $_REQUEST, 'data' );
|
734 |
if( $postid = WPF()->post->edit( $args ) ) {
|
735 |
-
wp_safe_redirect( WPF()->post->
|
736 |
exit();
|
737 |
}
|
738 |
wp_safe_redirect( wpforo_get_request_uri() );
|
@@ -749,7 +764,7 @@ class Actions {
|
|
749 |
$forumid = intval( wpfval( $_POST['topic_move'], 'forumid' ) );
|
750 |
if( $topicid && $forumid ) {
|
751 |
WPF()->topic->move( $topicid, $forumid );
|
752 |
-
$url = WPF()->topic->
|
753 |
wpforo_clean_cache();
|
754 |
wp_safe_redirect( $url );
|
755 |
exit();
|
@@ -773,7 +788,7 @@ class Actions {
|
|
773 |
$to_target_title = ( empty( $_POST['wpforo']['to_target_title'] ) ? 0 : 1 );
|
774 |
|
775 |
if( WPF()->topic->merge( $target, WPF()->current_object['topic'], [], $to_target_title, $append ) ) {
|
776 |
-
$redirect_to = WPF()->topic->
|
777 |
wpforo_clean_cache();
|
778 |
}
|
779 |
} else {
|
@@ -799,7 +814,7 @@ class Actions {
|
|
799 |
];
|
800 |
$to_target_title = ( empty( $_POST['wpforo']['to_target_title'] ) ? 0 : 1 );
|
801 |
if( $topicid = WPF()->topic->split( $args, $to_target_title ) ) {
|
802 |
-
$redirect_to = WPF()->topic->
|
803 |
}
|
804 |
} else {
|
805 |
if( ! empty( $_POST['wpforo']['target_topic_url'] ) && ! empty( $_POST['wpforo']['posts'] ) ) {
|
@@ -809,7 +824,7 @@ class Actions {
|
|
809 |
$to_target_title = ( empty( $_POST['wpforo']['to_target_title'] ) ? 0 : 1 );
|
810 |
$postids = array_map( 'intval', $_POST['wpforo']['posts'] );
|
811 |
if( WPF()->topic->merge( $target, WPF()->current_object['topic'], $postids, $to_target_title, $append ) ) {
|
812 |
-
$redirect_to = WPF()->topic->
|
813 |
}
|
814 |
} else {
|
815 |
WPF()->notice->add( 'Target Topic not found', 'error' );
|
@@ -1815,7 +1830,7 @@ class Actions {
|
|
1815 |
$topics = WPF()->topic->get_topics( [ 'include' => $topicids, 'row_count' => apply_filters( 'wpforo_suggested_topics_limit', 5 ), 'orderby' => 'created' ] );
|
1816 |
if( $topics ){
|
1817 |
$topics = array_map( function( $topic ){
|
1818 |
-
$topic['url'] = WPF()->topic->
|
1819 |
return $topic;
|
1820 |
}, $topics );
|
1821 |
|
@@ -1827,6 +1842,7 @@ class Actions {
|
|
1827 |
}
|
1828 |
|
1829 |
public function user_delete() {
|
|
|
1830 |
if(
|
1831 |
WPF()->current_object['user']
|
1832 |
&& ( $action = WPF()->member->get_action( WPF()->current_object['user'], 'delete' ) )
|
@@ -2335,6 +2351,8 @@ class Actions {
|
|
2335 |
}
|
2336 |
}
|
2337 |
|
|
|
|
|
2338 |
WPF()->notice->add( 'Successfully Done', 'success' );
|
2339 |
wp_safe_redirect( wp_get_raw_referer() );
|
2340 |
exit();
|
@@ -2494,6 +2512,8 @@ class Actions {
|
|
2494 |
$email['wp_new_user_notification_email_subject'] = sanitize_text_field( $email['wp_new_user_notification_email_subject'] );
|
2495 |
$email['wp_new_user_notification_email_message'] = wpforo_kses( $email['wp_new_user_notification_email_message'], 'email' );
|
2496 |
$email['reset_password_email_message'] = wpforo_kses( $email['reset_password_email_message'], 'email' );
|
|
|
|
|
2497 |
|
2498 |
wpforo_update_option( 'wpforo_email', $email );
|
2499 |
}
|
35 |
add_action( 'wpforo_actions', [ $this, 'init_wp_emoji_hooks' ] );
|
36 |
|
37 |
add_action( 'wpforo_actions', [ $this, 'feed_rss2' ] );
|
|
|
38 |
add_action( 'wpforo_actions', [ $this, 'mark_all_read' ] );
|
39 |
add_action( 'wpforo_actions', [ $this, 'mark_notification_read' ] );
|
40 |
|
44 |
add_action( 'wpforo_action_resetpassword_form', [ $this, 'resetpassword_form' ] );
|
45 |
add_action( 'wpforo_action_resetpassword', [ $this, 'resetpassword' ] );
|
46 |
add_action( 'wpforo_action_profile_update', [ $this, 'profile_update' ] );
|
47 |
+
add_action( 'wpforo_action_ucf_file_delete', [ $this, 'ucf_file_delete' ] );
|
48 |
add_action( 'wpforo_action_cantlogin_contact', [ $this, 'cantlogin_contact' ] );
|
49 |
|
50 |
add_action( 'wpforo_action_topic_add', [ $this, 'topic_add' ] );
|
61 |
add_action( 'wp_ajax_wpforo_acp_toggle', [ $this, 'acp_toggle' ] );
|
62 |
add_action( 'wp_ajax_wpforo_clear_all_notifications', [ $this, 'clear_all_notifications' ] );
|
63 |
add_action( 'wp_ajax_wpforo_profile_cover_upload', [ $this, 'profile_cover_upload' ] );
|
64 |
+
add_action( 'wp_ajax_wpforo_profile_cover_delete', [ $this, 'profile_cover_delete' ] );
|
65 |
add_action( 'wp_ajax_wpforo_get_topic_head_more_info', [ $this, 'get_topic_head_more_info' ] );
|
66 |
add_action( 'wp_ajax_nopriv_wpforo_get_topic_head_more_info', [ $this, 'get_topic_head_more_info' ] );
|
67 |
add_action( 'wp_ajax_wpforo_get_topic_overview_chunk', [ $this, 'get_topic_overview_chunk' ] );
|
271 |
$topic['topicurl'] = wpforo_home_url();
|
272 |
} else {
|
273 |
$topic = wpforo_topic( $topicid );
|
274 |
+
$topic['topicurl'] = ( wpfval( $topic, 'url' ) ) ? $topic['url'] : WPF()->topic->get_url( $topicid );
|
275 |
$posts = WPF()->post->get_posts( [
|
276 |
'topicid' => $topicid,
|
277 |
'row_count' => $topic_rss_items,
|
283 |
$member = wpforo_member( $post );
|
284 |
$posts[ $key ]['description'] = wpforo_text( trim( strip_tags( $post['body'] ) ), 190, false );
|
285 |
$posts[ $key ]['content'] = trim( $post['body'] );
|
286 |
+
$posts[ $key ]['posturl'] = WPF()->post->get_url( $post['postid'] );
|
287 |
$posts[ $key ]['author'] = $member['display_name'];
|
288 |
}
|
289 |
WPF()->feed->rss2_topic( $forum, $topic, $posts );
|
307 |
$member = wpforo_member( $topic );
|
308 |
$topics[ $key ]['description'] = wpforo_text( trim( strip_tags( $post['body'] ) ), 190, false );
|
309 |
$topics[ $key ]['content'] = trim( $post['body'] );
|
310 |
+
$topics[ $key ]['topicurl'] = WPF()->topic->get_url( $topic['topicid'] );
|
311 |
$topics[ $key ]['author'] = $member['display_name'];
|
312 |
}
|
313 |
WPF()->feed->rss2_forum( $forum, $topics );
|
320 |
* ucf_file_delete delete /wp-content/uploads/UCFFILENAME
|
321 |
*/
|
322 |
public function ucf_file_delete() {
|
323 |
+
$userid = 0;
|
324 |
if( wpfval( WPF()->GET, 'foro_f' ) && wpfval( WPF()->GET, 'foro_u' ) && wpfval( WPF()->GET, 'foro_n' ) ) {
|
325 |
if( wp_verify_nonce( WPF()->GET['foro_n'], 'wpforo_delete_profile_field' ) ) {
|
326 |
$userid = intval( WPF()->GET['foro_u'] );
|
327 |
$field = sanitize_title( WPF()->GET['foro_f'] );
|
328 |
if( $file = WPF()->member->get_custom_field( $userid, $field ) ) {
|
329 |
+
$file = wpforo_fix_upload_dir( $file );
|
330 |
$result = WPF()->member->update_custom_field( $userid, $field, '' );
|
331 |
if( $result ) {
|
332 |
+
if( file_exists( $file ) ) @unlink( $file );
|
333 |
WPF()->phrase->clear_cache();
|
334 |
WPF()->notice->add( 'Deleted Successfully!', 'success' );
|
335 |
} else {
|
339 |
}
|
340 |
}
|
341 |
}
|
342 |
+
|
343 |
+
wp_safe_redirect( $userid ? WPF()->member->get_profile_url( $userid, 'account' ) : wpforo_home_url() );
|
344 |
+
exit();
|
345 |
}
|
346 |
|
347 |
/**
|
431 |
wp_send_json_error();
|
432 |
}
|
433 |
|
434 |
+
public function profile_cover_delete() {
|
435 |
+
wpforo_verify_nonce( 'wpforo_profile_cover_delete' );
|
436 |
+
|
437 |
+
if( WPF()->current_object['user'] && WPF()->usergroup->can( 'upc' ) && WPF()->perm->user_can_edit_account( WPF()->current_object['user'] ) ){
|
438 |
+
WPF()->member->update_profile_field( WPF()->current_object['user']['userid'], 'cover', '' );
|
439 |
+
wp_send_json_success( [ 'background_url' => wpforo_setting( 'profiles', 'default_cover' ) ] );
|
440 |
+
}
|
441 |
+
wp_send_json_error();
|
442 |
+
}
|
443 |
+
|
444 |
public function profiles_default_cover_upload() {
|
445 |
|
446 |
if( $image_blob = wpfval( $_POST, 'image_blob' ) ){
|
702 |
$args = $_REQUEST['thread'];
|
703 |
$args['postmetas'] = (array) wpfval( $_REQUEST, 'data' );
|
704 |
if( $topicid = WPF()->topic->add( $args ) ) {
|
705 |
+
wp_safe_redirect( WPF()->topic->get_url( $topicid ) );
|
706 |
exit();
|
707 |
}
|
708 |
wp_safe_redirect( wpforo_get_request_uri() );
|
717 |
$args = $_REQUEST['thread'];
|
718 |
$args['postmetas'] = (array) wpfval( $_REQUEST, 'data' );
|
719 |
if( $topicid = WPF()->topic->edit( $args ) ) {
|
720 |
+
wp_safe_redirect( WPF()->topic->get_url( $topicid ) );
|
721 |
exit();
|
722 |
}
|
723 |
wp_safe_redirect( wpforo_get_request_uri() );
|
732 |
$args = $_REQUEST['post'];
|
733 |
$args['postmetas'] = (array) wpfval( $_REQUEST, 'data' );
|
734 |
if( $postid = WPF()->post->add( $args ) ) {
|
735 |
+
wp_safe_redirect( WPF()->post->get_url( $postid ) );
|
736 |
exit();
|
737 |
}
|
738 |
wp_safe_redirect( wpforo_get_request_uri() );
|
747 |
$args = $_REQUEST['post'];
|
748 |
$args['postmetas'] = (array) wpfval( $_REQUEST, 'data' );
|
749 |
if( $postid = WPF()->post->edit( $args ) ) {
|
750 |
+
wp_safe_redirect( WPF()->post->get_url( $postid ) );
|
751 |
exit();
|
752 |
}
|
753 |
wp_safe_redirect( wpforo_get_request_uri() );
|
764 |
$forumid = intval( wpfval( $_POST['topic_move'], 'forumid' ) );
|
765 |
if( $topicid && $forumid ) {
|
766 |
WPF()->topic->move( $topicid, $forumid );
|
767 |
+
$url = WPF()->topic->get_url( $topicid, [], false );
|
768 |
wpforo_clean_cache();
|
769 |
wp_safe_redirect( $url );
|
770 |
exit();
|
788 |
$to_target_title = ( empty( $_POST['wpforo']['to_target_title'] ) ? 0 : 1 );
|
789 |
|
790 |
if( WPF()->topic->merge( $target, WPF()->current_object['topic'], [], $to_target_title, $append ) ) {
|
791 |
+
$redirect_to = WPF()->topic->get_url( $target, [], false );
|
792 |
wpforo_clean_cache();
|
793 |
}
|
794 |
} else {
|
814 |
];
|
815 |
$to_target_title = ( empty( $_POST['wpforo']['to_target_title'] ) ? 0 : 1 );
|
816 |
if( $topicid = WPF()->topic->split( $args, $to_target_title ) ) {
|
817 |
+
$redirect_to = WPF()->topic->get_url( $topicid );
|
818 |
}
|
819 |
} else {
|
820 |
if( ! empty( $_POST['wpforo']['target_topic_url'] ) && ! empty( $_POST['wpforo']['posts'] ) ) {
|
824 |
$to_target_title = ( empty( $_POST['wpforo']['to_target_title'] ) ? 0 : 1 );
|
825 |
$postids = array_map( 'intval', $_POST['wpforo']['posts'] );
|
826 |
if( WPF()->topic->merge( $target, WPF()->current_object['topic'], $postids, $to_target_title, $append ) ) {
|
827 |
+
$redirect_to = WPF()->topic->get_url( $target );
|
828 |
}
|
829 |
} else {
|
830 |
WPF()->notice->add( 'Target Topic not found', 'error' );
|
1830 |
$topics = WPF()->topic->get_topics( [ 'include' => $topicids, 'row_count' => apply_filters( 'wpforo_suggested_topics_limit', 5 ), 'orderby' => 'created' ] );
|
1831 |
if( $topics ){
|
1832 |
$topics = array_map( function( $topic ){
|
1833 |
+
$topic['url'] = WPF()->topic->get_url( $topic );
|
1834 |
return $topic;
|
1835 |
}, $topics );
|
1836 |
|
1842 |
}
|
1843 |
|
1844 |
public function user_delete() {
|
1845 |
+
wpforo_verify_nonce( 'user_delete', 'full' );
|
1846 |
if(
|
1847 |
WPF()->current_object['user']
|
1848 |
&& ( $action = WPF()->member->get_action( WPF()->current_object['user'], 'delete' ) )
|
2351 |
}
|
2352 |
}
|
2353 |
|
2354 |
+
wpforo_clean_cache();
|
2355 |
+
|
2356 |
WPF()->notice->add( 'Successfully Done', 'success' );
|
2357 |
wp_safe_redirect( wp_get_raw_referer() );
|
2358 |
exit();
|
2512 |
$email['wp_new_user_notification_email_subject'] = sanitize_text_field( $email['wp_new_user_notification_email_subject'] );
|
2513 |
$email['wp_new_user_notification_email_message'] = wpforo_kses( $email['wp_new_user_notification_email_message'], 'email' );
|
2514 |
$email['reset_password_email_message'] = wpforo_kses( $email['reset_password_email_message'], 'email' );
|
2515 |
+
$email['after_user_approve_email_subject'] = sanitize_text_field( $email['after_user_approve_email_subject'] );
|
2516 |
+
$email['after_user_approve_email_message'] = wpforo_kses( $email['after_user_approve_email_message'], 'email' );
|
2517 |
|
2518 |
wpforo_update_option( 'wpforo_email', $email );
|
2519 |
}
|
classes/Activity.php
CHANGED
@@ -598,7 +598,7 @@ class Activity {
|
|
598 |
'itemid' => $post['postid'],
|
599 |
'userid' => $post['userid'],
|
600 |
'content' => $post['body'],
|
601 |
-
'permalink' => WPF()->post->
|
602 |
];
|
603 |
$this->add_notification( 'new_like', $args );
|
604 |
}
|
@@ -610,7 +610,7 @@ class Activity {
|
|
610 |
'itemid' => $post['postid'],
|
611 |
'userid' => $post['userid'],
|
612 |
'content' => $post['body'],
|
613 |
-
'permalink' => WPF()->post->
|
614 |
];
|
615 |
$this->add_notification( 'new_dislike', $args );
|
616 |
}
|
@@ -643,7 +643,7 @@ class Activity {
|
|
643 |
'itemid' => $post['postid'],
|
644 |
'userid' => $post['userid'],
|
645 |
'content' => $post['body'],
|
646 |
-
'permalink' => WPF()->post->
|
647 |
];
|
648 |
$this->add_notification( 'new_up_vote', $args );
|
649 |
$args = [
|
@@ -658,7 +658,7 @@ class Activity {
|
|
658 |
'itemid' => $post['postid'],
|
659 |
'userid' => $post['userid'],
|
660 |
'content' => $post['body'],
|
661 |
-
'permalink' => WPF()->post->
|
662 |
];
|
663 |
$this->add_notification( 'new_down_vote', $args );
|
664 |
$args = [
|
@@ -678,7 +678,7 @@ class Activity {
|
|
678 |
|
679 |
public function update_notification( $post, $status ) {
|
680 |
$post['status'] = $status = intval($status);
|
681 |
-
$post['posturl'] = WPF()->post->
|
682 |
if( wpfval( $post, 'topicid' ) ) {
|
683 |
$topic = WPF()->topic->get_topic( $post['topicid'] );
|
684 |
if( $status ) {
|
598 |
'itemid' => $post['postid'],
|
599 |
'userid' => $post['userid'],
|
600 |
'content' => $post['body'],
|
601 |
+
'permalink' => WPF()->post->get_url( $post['postid'] ),
|
602 |
];
|
603 |
$this->add_notification( 'new_like', $args );
|
604 |
}
|
610 |
'itemid' => $post['postid'],
|
611 |
'userid' => $post['userid'],
|
612 |
'content' => $post['body'],
|
613 |
+
'permalink' => WPF()->post->get_url( $post['postid'] ),
|
614 |
];
|
615 |
$this->add_notification( 'new_dislike', $args );
|
616 |
}
|
643 |
'itemid' => $post['postid'],
|
644 |
'userid' => $post['userid'],
|
645 |
'content' => $post['body'],
|
646 |
+
'permalink' => WPF()->post->get_url( $post['postid'] ),
|
647 |
];
|
648 |
$this->add_notification( 'new_up_vote', $args );
|
649 |
$args = [
|
658 |
'itemid' => $post['postid'],
|
659 |
'userid' => $post['userid'],
|
660 |
'content' => $post['body'],
|
661 |
+
'permalink' => WPF()->post->get_url( $post['postid'] ),
|
662 |
];
|
663 |
$this->add_notification( 'new_down_vote', $args );
|
664 |
$args = [
|
678 |
|
679 |
public function update_notification( $post, $status ) {
|
680 |
$post['status'] = $status = intval($status);
|
681 |
+
$post['posturl'] = WPF()->post->get_url( $post['postid'] );
|
682 |
if( wpfval( $post, 'topicid' ) ) {
|
683 |
$topic = WPF()->topic->get_topic( $post['topicid'] );
|
684 |
if( $status ) {
|
classes/Boards.php
CHANGED
@@ -381,7 +381,7 @@ class Boards {
|
|
381 |
$board = [];
|
382 |
if( is_null( $boardid = wpfval( $args, 'boardid' ) ) && is_null( $boardid = wpfval( $get, 'boardid' ) ) && is_null( $boardid = wpfval( $get, 'wpforo_boardid' ) ) ) {
|
383 |
if( wpforo_is_admin() ) {
|
384 |
-
if( preg_match( '#^wpforo-(?:(\d*)-)?#iu', wpfval( $get, 'page' ), $match ) ) {
|
385 |
if( ! $boardid = (int) wpfval( $get, 'boardid' ) ) {
|
386 |
$boardid = (int) wpfval( $match, 1 );
|
387 |
}
|
@@ -488,4 +488,21 @@ class Boards {
|
|
488 |
foreach( $boards as $board ) $boardids[] = $board['boardid'];
|
489 |
return $boardids;
|
490 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
491 |
}
|
381 |
$board = [];
|
382 |
if( is_null( $boardid = wpfval( $args, 'boardid' ) ) && is_null( $boardid = wpfval( $get, 'boardid' ) ) && is_null( $boardid = wpfval( $get, 'wpforo_boardid' ) ) ) {
|
383 |
if( wpforo_is_admin() ) {
|
384 |
+
if( preg_match( '#^wpforo-(?:(\d*)-)?#iu', (string) wpfval( $get, 'page' ), $match ) ) {
|
385 |
if( ! $boardid = (int) wpfval( $get, 'boardid' ) ) {
|
386 |
$boardid = (int) wpfval( $match, 1 );
|
387 |
}
|
488 |
foreach( $boards as $board ) $boardids[] = $board['boardid'];
|
489 |
return $boardids;
|
490 |
}
|
491 |
+
|
492 |
+
public function dropdown( $selected = null ) {
|
493 |
+
if( is_null($selected) ) $selected = $this->get_current( 'boardid' );
|
494 |
+
$selected = intval( $selected );
|
495 |
+
|
496 |
+
$html = '';
|
497 |
+
foreach ( $this->get_boards( [ 'status' => true ] ) as $board ){
|
498 |
+
$html .= sprintf(
|
499 |
+
'<option value="%1$d" %2$s>%3$s</option>',
|
500 |
+
$board['boardid'],
|
501 |
+
selected( $board['boardid'], $selected, false ),
|
502 |
+
$board['title'] . '(' . strtok( $board['locale'], '_' ) . ')'
|
503 |
+
);
|
504 |
+
}
|
505 |
+
|
506 |
+
return $html;
|
507 |
+
}
|
508 |
}
|
classes/Cache.php
CHANGED
@@ -19,6 +19,8 @@ class Cache {
|
|
19 |
if( ! is_dir( $cache_dir . DIRECTORY_SEPARATOR . 'tag' ) ) $this->mkdir( $cache_dir . DIRECTORY_SEPARATOR . 'tag' );
|
20 |
if( ! is_dir( $cache_dir . DIRECTORY_SEPARATOR . 'item' . DIRECTORY_SEPARATOR . 'tag' ) ) $this->mkdir( $cache_dir . DIRECTORY_SEPARATOR . 'item' . DIRECTORY_SEPARATOR . 'tag' );
|
21 |
if( ! is_dir( $cache_dir . DIRECTORY_SEPARATOR . 'item' . DIRECTORY_SEPARATOR . 'url' ) ) $this->mkdir( $cache_dir . DIRECTORY_SEPARATOR . 'item' . DIRECTORY_SEPARATOR . 'url' );
|
|
|
|
|
22 |
if( ! is_dir( $cache_dir . DIRECTORY_SEPARATOR . 'item' . DIRECTORY_SEPARATOR . 'option' ) ) $this->mkdir( $cache_dir . DIRECTORY_SEPARATOR . 'item' . DIRECTORY_SEPARATOR . 'option' );
|
23 |
|
24 |
$this->dir = $cache_dir;
|
@@ -63,6 +65,8 @@ class Cache {
|
|
63 |
$cache_dir . DIRECTORY_SEPARATOR . 'item' . DIRECTORY_SEPARATOR . 'post',
|
64 |
$cache_dir . DIRECTORY_SEPARATOR . 'item' . DIRECTORY_SEPARATOR . 'tag',
|
65 |
$cache_dir . DIRECTORY_SEPARATOR . 'item' . DIRECTORY_SEPARATOR . 'url',
|
|
|
|
|
66 |
$cache_dir . DIRECTORY_SEPARATOR . 'item' . DIRECTORY_SEPARATOR . 'option',
|
67 |
];
|
68 |
$this->mkdir( $dirs );
|
@@ -82,7 +86,7 @@ class Cache {
|
|
82 |
|
83 |
public function get( $key, $type = 'loop', $template = null ) {
|
84 |
$template = ( $template ) ?: WPF()->current_object['template'];
|
85 |
-
$loop_templates = [ 'forum', 'topic', 'post', 'tag'
|
86 |
if( $type === 'loop' && $template ) {
|
87 |
if( $this->exists( $key, $template ) ) {
|
88 |
if( in_array( $template, $loop_templates ) ) {
|
@@ -98,12 +102,19 @@ class Cache {
|
|
98 |
public function get_item( $id, $type = 'post', $sub_type = '' ) {
|
99 |
if( $id ) {
|
100 |
$key = $id . '_' . $this->lang;
|
|
|
101 |
if( $this->exists( $key, 'item', $type, $sub_type ) ) {
|
102 |
$cache_file = $this->dir . '/item/' . $type . '/' . ( $sub_type ? $sub_type . '_' : '' ) . $key;
|
103 |
$array = wpforo_get_file_content( $cache_file );
|
104 |
-
|
|
|
|
|
|
|
|
|
|
|
105 |
}
|
106 |
}
|
|
|
107 |
}
|
108 |
|
109 |
public function get_html() {
|
@@ -294,10 +305,24 @@ class Cache {
|
|
294 |
$dirs = [ $this->dir . '/tag' ];
|
295 |
}
|
296 |
} elseif( $template === 'option' ) {
|
297 |
-
$dirs = [ $this->dir . '/item/option
|
298 |
} elseif( $template === 'url' ) {
|
299 |
-
$dirs = [ $this->dir . '/item/url
|
300 |
-
} elseif( $template === '
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
301 |
if( wpforo_setting( 'seo', 'seo_profile' ) ) WPF()->seo->clear_cache();
|
302 |
} elseif( $template === 'loop' ) {
|
303 |
$dirs = [ $this->dir . '/forum', $this->dir . '/topic', $this->dir . '/post' ];
|
@@ -306,7 +331,7 @@ class Cache {
|
|
306 |
$dirs = [ $this->dir . '/item/post', $this->dir . '/item/topic', $this->dir . '/item/forum' ];
|
307 |
WPF()->seo->clear_cache();
|
308 |
} else {
|
309 |
-
$dirs = [ $this->dir . '/forum', $this->dir . '/topic', $this->dir . '/post', $this->dir . '/tag', $this->dir . '/item/post', $this->dir . '/item/topic', $this->dir . '/item/forum', $this->dir . '/item/tag', $this->dir . '/item/url', $this->dir . '/item/option
|
310 |
WPF()->seo->clear_cache();
|
311 |
}
|
312 |
|
@@ -410,7 +435,7 @@ class Cache {
|
|
410 |
} else {
|
411 |
$board_paths[] = '/' . WPF()->board->get_current( 'slug' ) . '/';
|
412 |
}
|
413 |
-
|
414 |
$board_paths[] = '/' . wpforo_settings_get_slug('member') . '/';
|
415 |
$board_paths[] = '/' . wpforo_settings_get_slug('register') . '/';
|
416 |
$board_paths[] = '/' . wpforo_settings_get_slug('login') . '/';
|
@@ -479,7 +504,7 @@ class Cache {
|
|
479 |
public function cache_plugins_status(){
|
480 |
$not_exluded = [];
|
481 |
$cache_plugins = $this->cache_plugins();
|
482 |
-
$excluded = wpforo_get_option( 'wpforo_excluded_cache',
|
483 |
$excluded = explode(',', $excluded );
|
484 |
if( ! empty( $cache_plugins ) ){
|
485 |
foreach( $cache_plugins as $cache_plugin ){
|
19 |
if( ! is_dir( $cache_dir . DIRECTORY_SEPARATOR . 'tag' ) ) $this->mkdir( $cache_dir . DIRECTORY_SEPARATOR . 'tag' );
|
20 |
if( ! is_dir( $cache_dir . DIRECTORY_SEPARATOR . 'item' . DIRECTORY_SEPARATOR . 'tag' ) ) $this->mkdir( $cache_dir . DIRECTORY_SEPARATOR . 'item' . DIRECTORY_SEPARATOR . 'tag' );
|
21 |
if( ! is_dir( $cache_dir . DIRECTORY_SEPARATOR . 'item' . DIRECTORY_SEPARATOR . 'url' ) ) $this->mkdir( $cache_dir . DIRECTORY_SEPARATOR . 'item' . DIRECTORY_SEPARATOR . 'url' );
|
22 |
+
if( ! is_dir( $cache_dir . DIRECTORY_SEPARATOR . 'item' . DIRECTORY_SEPARATOR . 'avatar' ) ) $this->mkdir( $cache_dir . DIRECTORY_SEPARATOR . 'item' . DIRECTORY_SEPARATOR . 'avatar' );
|
23 |
+
if( ! is_dir( $cache_dir . DIRECTORY_SEPARATOR . 'item' . DIRECTORY_SEPARATOR . 'reaction' ) ) $this->mkdir( $cache_dir . DIRECTORY_SEPARATOR . 'item' . DIRECTORY_SEPARATOR . 'reaction' );
|
24 |
if( ! is_dir( $cache_dir . DIRECTORY_SEPARATOR . 'item' . DIRECTORY_SEPARATOR . 'option' ) ) $this->mkdir( $cache_dir . DIRECTORY_SEPARATOR . 'item' . DIRECTORY_SEPARATOR . 'option' );
|
25 |
|
26 |
$this->dir = $cache_dir;
|
65 |
$cache_dir . DIRECTORY_SEPARATOR . 'item' . DIRECTORY_SEPARATOR . 'post',
|
66 |
$cache_dir . DIRECTORY_SEPARATOR . 'item' . DIRECTORY_SEPARATOR . 'tag',
|
67 |
$cache_dir . DIRECTORY_SEPARATOR . 'item' . DIRECTORY_SEPARATOR . 'url',
|
68 |
+
$cache_dir . DIRECTORY_SEPARATOR . 'item' . DIRECTORY_SEPARATOR . 'avatar',
|
69 |
+
$cache_dir . DIRECTORY_SEPARATOR . 'item' . DIRECTORY_SEPARATOR . 'reaction',
|
70 |
$cache_dir . DIRECTORY_SEPARATOR . 'item' . DIRECTORY_SEPARATOR . 'option',
|
71 |
];
|
72 |
$this->mkdir( $dirs );
|
86 |
|
87 |
public function get( $key, $type = 'loop', $template = null ) {
|
88 |
$template = ( $template ) ?: WPF()->current_object['template'];
|
89 |
+
$loop_templates = [ 'forum', 'topic', 'post', 'tag' ];
|
90 |
if( $type === 'loop' && $template ) {
|
91 |
if( $this->exists( $key, $template ) ) {
|
92 |
if( in_array( $template, $loop_templates ) ) {
|
102 |
public function get_item( $id, $type = 'post', $sub_type = '' ) {
|
103 |
if( $id ) {
|
104 |
$key = $id . '_' . $this->lang;
|
105 |
+
$domain_path = preg_replace('|https?\:\/\/|is', '', get_site_url() );
|
106 |
if( $this->exists( $key, 'item', $type, $sub_type ) ) {
|
107 |
$cache_file = $this->dir . '/item/' . $type . '/' . ( $sub_type ? $sub_type . '_' : '' ) . $key;
|
108 |
$array = wpforo_get_file_content( $cache_file );
|
109 |
+
$data = @unserialize( $array );
|
110 |
+
if( $type === 'url' ) {
|
111 |
+
// Always make sure the cached URLs are pointed to current website
|
112 |
+
if( strpos( $data, $domain_path ) === FALSE ) return null;
|
113 |
+
}
|
114 |
+
return $data;
|
115 |
}
|
116 |
}
|
117 |
+
return null;
|
118 |
}
|
119 |
|
120 |
public function get_html() {
|
305 |
$dirs = [ $this->dir . '/tag' ];
|
306 |
}
|
307 |
} elseif( $template === 'option' ) {
|
308 |
+
$dirs = [ $this->dir . '/item/option' ];
|
309 |
} elseif( $template === 'url' ) {
|
310 |
+
$dirs = [ $this->dir . '/item/url' ];
|
311 |
+
} elseif( $template === 'avatar' ) {
|
312 |
+
if( $id ){
|
313 |
+
$file = $this->dir . '/item/avatar/' . $id . '_' . $this->lang;
|
314 |
+
$this->clean_file( $file );
|
315 |
+
} else {
|
316 |
+
$dirs = [ $this->dir . '/item/avatar' ];
|
317 |
+
}
|
318 |
+
} elseif( $template === 'reaction' ) {
|
319 |
+
if( $id ){
|
320 |
+
$file = $this->dir . '/item/reaction/' . $id . '_' . $this->lang;
|
321 |
+
$this->clean_file( $file );
|
322 |
+
} else {
|
323 |
+
$dirs = [ $this->dir . '/item/reaction' ];
|
324 |
+
}
|
325 |
+
} elseif( $template === 'user' ) {
|
326 |
if( wpforo_setting( 'seo', 'seo_profile' ) ) WPF()->seo->clear_cache();
|
327 |
} elseif( $template === 'loop' ) {
|
328 |
$dirs = [ $this->dir . '/forum', $this->dir . '/topic', $this->dir . '/post' ];
|
331 |
$dirs = [ $this->dir . '/item/post', $this->dir . '/item/topic', $this->dir . '/item/forum' ];
|
332 |
WPF()->seo->clear_cache();
|
333 |
} else {
|
334 |
+
$dirs = [ $this->dir . '/forum', $this->dir . '/topic', $this->dir . '/post', $this->dir . '/tag', $this->dir . '/item/post', $this->dir . '/item/topic', $this->dir . '/item/forum', $this->dir . '/item/tag', $this->dir . '/item/url', $this->dir . '/item/avatar', $this->dir . '/item/option' ];
|
335 |
WPF()->seo->clear_cache();
|
336 |
}
|
337 |
|
435 |
} else {
|
436 |
$board_paths[] = '/' . WPF()->board->get_current( 'slug' ) . '/';
|
437 |
}
|
438 |
+
|
439 |
$board_paths[] = '/' . wpforo_settings_get_slug('member') . '/';
|
440 |
$board_paths[] = '/' . wpforo_settings_get_slug('register') . '/';
|
441 |
$board_paths[] = '/' . wpforo_settings_get_slug('login') . '/';
|
504 |
public function cache_plugins_status(){
|
505 |
$not_exluded = [];
|
506 |
$cache_plugins = $this->cache_plugins();
|
507 |
+
$excluded = wpforo_get_option( 'wpforo_excluded_cache', '', false );
|
508 |
$excluded = explode(',', $excluded );
|
509 |
if( ! empty( $cache_plugins ) ){
|
510 |
foreach( $cache_plugins as $cache_plugin ){
|
classes/Forms.php
CHANGED
@@ -7,7 +7,6 @@ if( ! defined( 'ABSPATH' ) ) exit;
|
|
7 |
|
8 |
class Forms {
|
9 |
public $default;
|
10 |
-
public $user_dir;
|
11 |
public $field_dir;
|
12 |
public $current;
|
13 |
|
@@ -16,8 +15,7 @@ class Forms {
|
|
16 |
}
|
17 |
|
18 |
private function init_defaults() {
|
19 |
-
$this->
|
20 |
-
$this->field_dir = '/users/fields/';
|
21 |
$this->default = [
|
22 |
'label' => '',
|
23 |
'title' => '',
|
@@ -450,9 +448,8 @@ class Forms {
|
|
450 |
$f['value'] = wpforo_fix_upload_url( $f['value'] );
|
451 |
|
452 |
if( wpfval( WPF()->current_object['user'], 'userid' ) ) {
|
453 |
-
$
|
454 |
-
$
|
455 |
-
$delete_url = wp_nonce_url( wpforo_home_url( $delete ), 'wpforo_delete_profile_field', 'foro_n' );
|
456 |
$delete_html = ' | <a href="' . $delete_url . '" title="' . wpforo_phrase( 'Delete this file', false ) . '" onclick="return confirm(\'' . wpforo_phrase( 'Are you sure you want to delete this file?', false ) . '\')"><i class="fas fa-times" style="color:#e86666; font-size:14px; line-height:14px;"></i></a>';
|
457 |
} else {
|
458 |
$delete_html = ' | <span data-fieldkey="' . $f['fieldKey'] . '" style="cursor: pointer;" class="wpforo-delete-custom-file" title="' . wpforo_phrase( 'Delete this file', false ) . '"><i class="fas fa-times" style="color:#e86666; font-size:14px; line-height:14px;"></i></span>';
|
@@ -1072,7 +1069,7 @@ class Forms {
|
|
1072 |
if( ! empty( $file_data ) ) {
|
1073 |
foreach( $file_data as $file_field_name => $file_name ) {
|
1074 |
$field_name_folder = substr( $file_field_name, 6 );
|
1075 |
-
$file_upload_dir = wpforo_fix_dir_sep( WPF()->folders['
|
1076 |
$file_path = $file_upload_dir . $file_name;
|
1077 |
$file['files'][ $file_field_name ] = $file_path;
|
1078 |
$file['fields'][ $file_field_name ] = $this->field_dir . $userid . '/' . $field_name_folder . '/' . $file_name;
|
7 |
|
8 |
class Forms {
|
9 |
public $default;
|
|
|
10 |
public $field_dir;
|
11 |
public $current;
|
12 |
|
15 |
}
|
16 |
|
17 |
private function init_defaults() {
|
18 |
+
$this->field_dir = '/wpforo/users/fields/';
|
|
|
19 |
$this->default = [
|
20 |
'label' => '',
|
21 |
'title' => '',
|
448 |
$f['value'] = wpforo_fix_upload_url( $f['value'] );
|
449 |
|
450 |
if( wpfval( WPF()->current_object['user'], 'userid' ) ) {
|
451 |
+
$delete = '?wpfaction=ucf_file_delete&foro_f=' . $f['name'] . '&foro_u=' . WPF()->current_object['user']['userid'];
|
452 |
+
$delete_url = wp_nonce_url( $delete, 'wpforo_delete_profile_field', 'foro_n' );
|
|
|
453 |
$delete_html = ' | <a href="' . $delete_url . '" title="' . wpforo_phrase( 'Delete this file', false ) . '" onclick="return confirm(\'' . wpforo_phrase( 'Are you sure you want to delete this file?', false ) . '\')"><i class="fas fa-times" style="color:#e86666; font-size:14px; line-height:14px;"></i></a>';
|
454 |
} else {
|
455 |
$delete_html = ' | <span data-fieldkey="' . $f['fieldKey'] . '" style="cursor: pointer;" class="wpforo-delete-custom-file" title="' . wpforo_phrase( 'Delete this file', false ) . '"><i class="fas fa-times" style="color:#e86666; font-size:14px; line-height:14px;"></i></span>';
|
1069 |
if( ! empty( $file_data ) ) {
|
1070 |
foreach( $file_data as $file_field_name => $file_name ) {
|
1071 |
$field_name_folder = substr( $file_field_name, 6 );
|
1072 |
+
$file_upload_dir = wpforo_fix_dir_sep( WPF()->folders['wp_upload']['dir'] . $this->field_dir . $userid . DIRECTORY_SEPARATOR . $field_name_folder ) . DIRECTORY_SEPARATOR;
|
1073 |
$file_path = $file_upload_dir . $file_name;
|
1074 |
$file['files'][ $file_field_name ] = $file_path;
|
1075 |
$file['fields'][ $file_field_name ] = $this->field_dir . $userid . '/' . $field_name_folder . '/' . $file_name;
|
classes/Forums.php
CHANGED
@@ -798,14 +798,15 @@ class Forums {
|
|
798 |
$selected = (array) $selected;
|
799 |
|
800 |
foreach( $forumids as $forumid ) {
|
|
|
801 |
if( ! $forumid || ( ! wpforo_is_admin() && ! WPF()->perm->forum_can( 'vf', $forumid ) ) || ( wpforo_is_admin() && ! WPF()->usergroup->can_manage_forum() ) ) continue;
|
802 |
$depth = 0;
|
803 |
$this->count_depth( $forumid, $depth );
|
804 |
$forum = wpforo_forum( $forumid );
|
805 |
$name = wpfval($forum, 'title');
|
806 |
-
if( $type
|
807 |
-
|
808 |
-
|
809 |
} elseif( $type === 'drag_menu' ) {
|
810 |
switch( $forum['layout'] ) {
|
811 |
case 2:
|
@@ -822,28 +823,28 @@ class Forums {
|
|
822 |
}
|
823 |
?>
|
824 |
|
825 |
-
<li id="menu-item-<?php echo
|
826 |
-
<input id="forumid-<?php echo
|
827 |
-
<input id="parentid-<?php echo
|
828 |
-
<input id="order-<?php echo
|
829 |
<dl class="menu-item-bar">
|
830 |
<dt class="menu-item-handle forum_width">
|
831 |
<span class="item-title forumtitle"><span style="font-weight:400; cursor:help;" title="Forum ID"><?php echo $forumid; ?> | </span> <?php echo apply_filters( 'wpforo_dashboard_forums_item_name', esc_html($name), $forumid); ?></span>
|
832 |
<span class="item-controls">
|
833 |
<span class="wpforo-cat-layout"><?php echo( $depth != 0 ? __( 'Topics', 'wpforo' ) . ' (' . intval( $forum['topics'] ) . ') , ' . __( 'Posts', 'wpforo' ) . ' (' . intval( $forum['posts'] ) . ') | ' : '' ) ?><?php echo( $depth == 0 ? '( <i>' . esc_html( $layout_name ) . '</i> ) | ' : '' ); ?></span>
|
834 |
<span class="menu_add">
|
835 |
-
<a href="<?php echo admin_url( 'admin.php?page=' . wpforo_prefix_slug( 'forums' ) . '&action=add&parentid=' .
|
836 |
<span class="dashicons dashicons-plus" title="<?php if( $depth ) : _e( 'Add a new Subforum', 'wpforo' ); else: _e( 'Add a new Forum in this Category', 'wpforo' ); endif; ?>"></span>
|
837 |
</a>
|
838 |
</span> |
|
839 |
<span class="menu_edit">
|
840 |
-
<a href="<?php echo admin_url( 'admin.php?page=' . wpforo_prefix_slug( 'forums' ) . '&id=' .
|
841 |
<span class="dashicons dashicons-edit" title="<?php _e( 'edit', 'wpforo' ) ?>"></span>
|
842 |
</a>
|
843 |
</span> |
|
844 |
<?php if( WPF()->usergroup->can_manage_forum() ): ?>
|
845 |
<span class="menu_delete">
|
846 |
-
<a href="<?php echo admin_url( 'admin.php?page=' . wpforo_prefix_slug( 'forums' ) . '&id=' .
|
847 |
<span class="dashicons dashicons-trash" title="<?php _e( 'delete', 'wpforo' ) ?>"></span>
|
848 |
</a>
|
849 |
</span> |
|
@@ -866,15 +867,14 @@ class Forums {
|
|
866 |
if( isset( $old_depth ) && $old_depth < $depth ) echo '<dl><dd>';
|
867 |
if( isset( $old_depth ) && $old_depth > $depth ) echo '</dd></dl>';
|
868 |
$old_depth = $depth;
|
869 |
-
|
870 |
-
|
871 |
-
|
872 |
-
|
873 |
-
|
874 |
-
|
875 |
-
|
876 |
-
|
877 |
-
}
|
878 |
} elseif( $type === 'subscribe_manager_form' ) {
|
879 |
?>
|
880 |
<li>
|
@@ -882,9 +882,9 @@ class Forums {
|
|
882 |
$forum_topic_attr = '';
|
883 |
$forum_attr = '';
|
884 |
if( key_exists( $forumid, $selected ) ) {
|
885 |
-
if( $selected[ $forumid ]
|
886 |
$forum_topic_attr = ' checked ';
|
887 |
-
} elseif( $selected[ $forumid ]
|
888 |
$forum_attr = ' checked ';
|
889 |
}
|
890 |
}
|
798 |
$selected = (array) $selected;
|
799 |
|
800 |
foreach( $forumids as $forumid ) {
|
801 |
+
$forumid = intval( $forumid );
|
802 |
if( ! $forumid || ( ! wpforo_is_admin() && ! WPF()->perm->forum_can( 'vf', $forumid ) ) || ( wpforo_is_admin() && ! WPF()->usergroup->can_manage_forum() ) ) continue;
|
803 |
$depth = 0;
|
804 |
$this->count_depth( $forumid, $depth );
|
805 |
$forum = wpforo_forum( $forumid );
|
806 |
$name = wpfval($forum, 'title');
|
807 |
+
if( $type === 'select_box' ) { ?>
|
808 |
+
<option value="<?php echo $forumid ?>" <?php echo( ( ! $cats && $depth == 0 || ( in_array( $forumid, $disabled ) ) ) ? ' disabled ' : '' );
|
809 |
+
echo( in_array( $forumid, $selected ) ? ' selected ' : '' ) ?> > <?php echo esc_html( str_repeat( '— ', $depth ) . trim( $name ) ) ?></option><?php
|
810 |
} elseif( $type === 'drag_menu' ) {
|
811 |
switch( $forum['layout'] ) {
|
812 |
case 2:
|
823 |
}
|
824 |
?>
|
825 |
|
826 |
+
<li id="menu-item-<?php echo $forumid ?>" class="menu-item menu-item-depth-<?php echo esc_attr( $depth ) ?>">
|
827 |
+
<input id="forumid-<?php echo $forumid ?>" type="hidden" name="forum[<?php echo $forumid ?>][forumid]"/>
|
828 |
+
<input id="parentid-<?php echo $forumid ?>" type="hidden" name="forum[<?php echo $forumid ?>][parentid]"/>
|
829 |
+
<input id="order-<?php echo $forumid ?>" type="hidden" name="forum[<?php echo $forumid ?>][order]"/>
|
830 |
<dl class="menu-item-bar">
|
831 |
<dt class="menu-item-handle forum_width">
|
832 |
<span class="item-title forumtitle"><span style="font-weight:400; cursor:help;" title="Forum ID"><?php echo $forumid; ?> | </span> <?php echo apply_filters( 'wpforo_dashboard_forums_item_name', esc_html($name), $forumid); ?></span>
|
833 |
<span class="item-controls">
|
834 |
<span class="wpforo-cat-layout"><?php echo( $depth != 0 ? __( 'Topics', 'wpforo' ) . ' (' . intval( $forum['topics'] ) . ') , ' . __( 'Posts', 'wpforo' ) . ' (' . intval( $forum['posts'] ) . ') | ' : '' ) ?><?php echo( $depth == 0 ? '( <i>' . esc_html( $layout_name ) . '</i> ) | ' : '' ); ?></span>
|
835 |
<span class="menu_add">
|
836 |
+
<a href="<?php echo admin_url( 'admin.php?page=' . wpforo_prefix_slug( 'forums' ) . '&action=add&parentid=' . $forumid ) ?>">
|
837 |
<span class="dashicons dashicons-plus" title="<?php if( $depth ) : _e( 'Add a new Subforum', 'wpforo' ); else: _e( 'Add a new Forum in this Category', 'wpforo' ); endif; ?>"></span>
|
838 |
</a>
|
839 |
</span> |
|
840 |
<span class="menu_edit">
|
841 |
+
<a href="<?php echo admin_url( 'admin.php?page=' . wpforo_prefix_slug( 'forums' ) . '&id=' . $forumid . '&action=edit' ) ?>">
|
842 |
<span class="dashicons dashicons-edit" title="<?php _e( 'edit', 'wpforo' ) ?>"></span>
|
843 |
</a>
|
844 |
</span> |
|
845 |
<?php if( WPF()->usergroup->can_manage_forum() ): ?>
|
846 |
<span class="menu_delete">
|
847 |
+
<a href="<?php echo admin_url( 'admin.php?page=' . wpforo_prefix_slug( 'forums' ) . '&id=' . $forumid . '&action=del' ) ?>">
|
848 |
<span class="dashicons dashicons-trash" title="<?php _e( 'delete', 'wpforo' ) ?>"></span>
|
849 |
</a>
|
850 |
</span> |
|
867 |
if( isset( $old_depth ) && $old_depth < $depth ) echo '<dl><dd>';
|
868 |
if( isset( $old_depth ) && $old_depth > $depth ) echo '</dd></dl>';
|
869 |
$old_depth = $depth;
|
870 |
+
printf(
|
871 |
+
'<span class="wpf-dl-item %1$s"><a href="%2$s"><span class="wpf-circle wpf-s" style="display: inline-flex; %3$s"><i class="%4$s"></i></span><span class="wpf-dl-item-label">%5$s</span></a></span>',
|
872 |
+
( in_array( $forumid, $selected ) ? 'wpf-dl-current' : '' ),
|
873 |
+
esc_url( wpforo_forum( $forumid, 'url' ) ),
|
874 |
+
( ($forum['color'] = trim( $forum['color'] )) ? 'color: ' . $forum['color'] . ';' : ''),
|
875 |
+
$forum['icon'],
|
876 |
+
esc_html( $name )
|
877 |
+
);
|
|
|
878 |
} elseif( $type === 'subscribe_manager_form' ) {
|
879 |
?>
|
880 |
<li>
|
882 |
$forum_topic_attr = '';
|
883 |
$forum_attr = '';
|
884 |
if( key_exists( $forumid, $selected ) ) {
|
885 |
+
if( $selected[ $forumid ] === 'forum-topic' ) {
|
886 |
$forum_topic_attr = ' checked ';
|
887 |
+
} elseif( $selected[ $forumid ] === 'forum' ) {
|
888 |
$forum_attr = ' checked ';
|
889 |
}
|
890 |
}
|
classes/Members.php
CHANGED
@@ -129,6 +129,8 @@ class Members {
|
|
129 |
add_action( 'wpforo_after_delete_reaction', [$this, 'after_delete_reaction'] );
|
130 |
|
131 |
add_action( 'wpforo_after_delete_user', [$this, 'after_delete_user'], 11, 2 );
|
|
|
|
|
132 |
}
|
133 |
|
134 |
public function init_list_table() {
|
@@ -147,8 +149,8 @@ class Members {
|
|
147 |
$reaction_types = array_map( '__return_zero', array_flip( Reactions::get_type_list() ) );
|
148 |
$member = array_merge( $this->default->member, (array) $member );
|
149 |
$member['userid'] = wpforo_bigintval( $member['userid'] );
|
150 |
-
$member['first_name'] = trim( strip_tags( $member['first_name'] ) );
|
151 |
-
$member['last_name'] = trim( strip_tags( $member['last_name'] ) );
|
152 |
$member['groupid'] = intval( $member['groupid'] );
|
153 |
$member['secondary_groupids'] = array_map( 'intval', (array) ( is_scalar( $member['secondary_groupids'] ) ? explode( ',', $member['secondary_groupids'] ) : $member['secondary_groupids'] ) );
|
154 |
$member['secondary_groupids'] = array_diff( $member['secondary_groupids'], (array) $member['groupid'] );
|
@@ -175,7 +177,7 @@ class Members {
|
|
175 |
$member['points'] = $member['custom_points'] ?: $this->calc_points( $member );
|
176 |
$member['rating'] = $this->calc_rating( $member['points'] );
|
177 |
|
178 |
-
$member['online_time'] = (int) ( !is_numeric( $member['online_time'] ) ? strtotime( $member['online_time'] ) : $member['online_time'] );
|
179 |
$member['is_email_confirmed'] = (bool) (int) $member['is_email_confirmed'];
|
180 |
$member['is_mention_muted'] = (bool) (int) $member['is_mention_muted'];
|
181 |
|
@@ -266,7 +268,7 @@ class Members {
|
|
266 |
);
|
267 |
},
|
268 |
'callback_for_get_url' => function() use ( $userid ){
|
269 |
-
return trim( WPF()->member->get_profile_url( $userid ), '/' ) . '/?wpfaction=user_delete';
|
270 |
},
|
271 |
'confirm_msg' => wpforo_phrase( 'Please confirm you want to do this action?', false ),
|
272 |
],
|
@@ -584,7 +586,35 @@ class Members {
|
|
584 |
}
|
585 |
|
586 |
//Check file uploading custom fields and merge to $user array
|
587 |
-
$file_data
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
588 |
$file_fields = WPF()->form->prepare_file_args( $file_data, $userid );
|
589 |
if( wpfval( $file_fields, 'fields' ) ) {
|
590 |
$user = array_merge( $file_fields['fields'], $user );
|
@@ -1186,7 +1216,7 @@ class Members {
|
|
1186 |
INNER JOIN `" . WPF()->tables->profiles . "` p ON p.`userid` = u.`ID`
|
1187 |
LEFT JOIN `" . WPF()->tables->usergroups . "` ug ON ug.`groupid` = p.`groupid`
|
1188 |
LEFT JOIN `" . WPF()->db->usermeta . "` fn ON fn.`user_id` = u.`ID` AND fn.`meta_key` LIKE 'first_name'
|
1189 |
-
LEFT JOIN `" . WPF()->db->usermeta . "` ln ON ln.`user_id` = u.`ID` AND
|
1190 |
$wheres = [];
|
1191 |
if( $userid ) $wheres[] = "`ID` = $userid";
|
1192 |
if( $user_nicename ) $wheres[] = "`user_nicename` = '" . esc_sql( $user_nicename ) . "'";
|
@@ -1476,8 +1506,16 @@ class Members {
|
|
1476 |
}
|
1477 |
|
1478 |
public function _get_avatar_url( $userid ) {
|
|
|
|
|
|
|
|
|
|
|
1479 |
$avatar_url = WPF()->db->get_var( WPF()->db->prepare( "SELECT `avatar` FROM `" . WPF()->tables->profiles . "` WHERE `userid` = %d", wpforo_bigintval( $userid ) ) );
|
1480 |
-
|
|
|
|
|
|
|
1481 |
return apply_filters( 'wpforo_avatar_url', $avatar_url, $userid );
|
1482 |
}
|
1483 |
|
@@ -1710,6 +1748,7 @@ class Members {
|
|
1710 |
|
1711 |
public function reset( $userid ) {
|
1712 |
if( ! $userid ) return;
|
|
|
1713 |
delete_user_meta( intval( $userid ), '_wpf_member_obj' );
|
1714 |
if( wpforo_setting( 'seo', 'seo_profile' ) ) WPF()->seo->clear_cache();
|
1715 |
}
|
@@ -3197,10 +3236,12 @@ class Members {
|
|
3197 |
}
|
3198 |
|
3199 |
public function after_password_reset( $user ) {
|
3200 |
-
|
3201 |
-
|
3202 |
-
|
3203 |
-
|
|
|
|
|
3204 |
}
|
3205 |
|
3206 |
public function wp_login( $user_login, $user ) {
|
@@ -3542,6 +3583,21 @@ class Members {
|
|
3542 |
if( $reassign ) $this->rebuild_stats( $reassign );
|
3543 |
}
|
3544 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3545 |
public function get_activity_url( $filter = '', $boardid = null, $arg = null ) {
|
3546 |
if( !$arg ) $arg = WPF()->current_object['user'];
|
3547 |
$url = rtrim( $this->get_profile_url( $arg, 'activity' ), '/' );
|
@@ -3583,11 +3639,11 @@ class Members {
|
|
3583 |
$sql = "SELECT `userid` FROM `". WPF()->tables->profiles ."`
|
3584 |
WHERE `status` IN ('" . $status . "')
|
3585 |
AND `groupid` IN (" . $groupids . ")
|
3586 |
-
ORDER BY `userid` DESC";
|
3587 |
} else {
|
3588 |
$sql = "SELECT `userid` FROM `". WPF()->tables->profiles ."`
|
3589 |
WHERE `groupid` IN (" . $groupids . ")
|
3590 |
-
ORDER BY `userid` DESC";
|
3591 |
}
|
3592 |
|
3593 |
$memberid = WPF()->db->get_var( $sql );
|
129 |
add_action( 'wpforo_after_delete_reaction', [$this, 'after_delete_reaction'] );
|
130 |
|
131 |
add_action( 'wpforo_after_delete_user', [$this, 'after_delete_user'], 11, 2 );
|
132 |
+
|
133 |
+
add_action( 'wpforo_after_activate_user', [$this, 'after_activate_user'] );
|
134 |
}
|
135 |
|
136 |
public function init_list_table() {
|
149 |
$reaction_types = array_map( '__return_zero', array_flip( Reactions::get_type_list() ) );
|
150 |
$member = array_merge( $this->default->member, (array) $member );
|
151 |
$member['userid'] = wpforo_bigintval( $member['userid'] );
|
152 |
+
$member['first_name'] = trim( strip_tags( (string) $member['first_name'] ) );
|
153 |
+
$member['last_name'] = trim( strip_tags( (string) $member['last_name'] ) );
|
154 |
$member['groupid'] = intval( $member['groupid'] );
|
155 |
$member['secondary_groupids'] = array_map( 'intval', (array) ( is_scalar( $member['secondary_groupids'] ) ? explode( ',', $member['secondary_groupids'] ) : $member['secondary_groupids'] ) );
|
156 |
$member['secondary_groupids'] = array_diff( $member['secondary_groupids'], (array) $member['groupid'] );
|
177 |
$member['points'] = $member['custom_points'] ?: $this->calc_points( $member );
|
178 |
$member['rating'] = $this->calc_rating( $member['points'] );
|
179 |
|
180 |
+
$member['online_time'] = (int) ( !is_numeric( $member['online_time'] ) ? strtotime( (string) $member['online_time'] ) : $member['online_time'] );
|
181 |
$member['is_email_confirmed'] = (bool) (int) $member['is_email_confirmed'];
|
182 |
$member['is_mention_muted'] = (bool) (int) $member['is_mention_muted'];
|
183 |
|
268 |
);
|
269 |
},
|
270 |
'callback_for_get_url' => function() use ( $userid ){
|
271 |
+
return wp_nonce_url( trim( WPF()->member->get_profile_url( $userid ), '/' ) . '/?wpfaction=user_delete', 'user_delete', '_wpfnonce' );
|
272 |
},
|
273 |
'confirm_msg' => wpforo_phrase( 'Please confirm you want to do this action?', false ),
|
274 |
],
|
586 |
}
|
587 |
|
588 |
//Check file uploading custom fields and merge to $user array
|
589 |
+
$file_data = isset( $_FILES['data']['name'] ) && $_FILES['data']['name'] && is_array( $_FILES['data']['name'] )
|
590 |
+
? array_filter( $_FILES['data']['name'], function( $key ){
|
591 |
+
if( trim($key) && ($field = $this->get_field( $key )) ){
|
592 |
+
if( wpfval( $field, 'type' ) === 'file' ){
|
593 |
+
$mime_type = wpfval( $_FILES, 'data', 'type', $key );
|
594 |
+
$mime_types = wp_get_mime_types();
|
595 |
+
$allowed_mime_types = get_allowed_mime_types();
|
596 |
+
$name = wpfval( $_FILES, 'data', 'name', $key );
|
597 |
+
$ext = pathinfo( $name, PATHINFO_EXTENSION );
|
598 |
+
$size = intval( $field['fileSize'] );
|
599 |
+
$fileExtensions = array_filter( (array) (is_scalar( $field['fileExtensions'] ) ? explode( ',', trim( (string) $field['fileExtensions'] ) ) : $field['fileExtensions']) );
|
600 |
+
if( $fileExtensions ) {
|
601 |
+
if( in_array( $ext, $fileExtensions ) ) {
|
602 |
+
$extensions = explode( '|', array_search( $mime_type, $mime_types ) );
|
603 |
+
$e = in_array( $ext, $extensions );
|
604 |
+
} else {
|
605 |
+
$e = false;
|
606 |
+
}
|
607 |
+
} else {
|
608 |
+
$extensions = explode( '|', array_search( $mime_type, $allowed_mime_types ) );
|
609 |
+
$e = in_array( $ext, $extensions );
|
610 |
+
}
|
611 |
+
|
612 |
+
return ! empty( $e ) && wpfval( $_FILES, 'data', 'size', $key ) <= ( $size * 1024 * 1024 );
|
613 |
+
}
|
614 |
+
}
|
615 |
+
return false;
|
616 |
+
}, ARRAY_FILTER_USE_KEY )
|
617 |
+
: [];
|
618 |
$file_fields = WPF()->form->prepare_file_args( $file_data, $userid );
|
619 |
if( wpfval( $file_fields, 'fields' ) ) {
|
620 |
$user = array_merge( $file_fields['fields'], $user );
|
1216 |
INNER JOIN `" . WPF()->tables->profiles . "` p ON p.`userid` = u.`ID`
|
1217 |
LEFT JOIN `" . WPF()->tables->usergroups . "` ug ON ug.`groupid` = p.`groupid`
|
1218 |
LEFT JOIN `" . WPF()->db->usermeta . "` fn ON fn.`user_id` = u.`ID` AND fn.`meta_key` LIKE 'first_name'
|
1219 |
+
LEFT JOIN `" . WPF()->db->usermeta . "` ln ON ln.`user_id` = u.`ID` AND ln.`meta_key` LIKE 'last_name'";
|
1220 |
$wheres = [];
|
1221 |
if( $userid ) $wheres[] = "`ID` = $userid";
|
1222 |
if( $user_nicename ) $wheres[] = "`user_nicename` = '" . esc_sql( $user_nicename ) . "'";
|
1506 |
}
|
1507 |
|
1508 |
public function _get_avatar_url( $userid ) {
|
1509 |
+
$cache = WPF()->cache->on();
|
1510 |
+
$cache_avatar = apply_filters( 'wpforo_avatar_cache', true, $userid );
|
1511 |
+
if( $cache && $cache_avatar && $avatar_url = WPF()->cache->get_item( $userid, 'avatar') ) {
|
1512 |
+
return str_replace('#', '', (string) $avatar_url );
|
1513 |
+
}
|
1514 |
$avatar_url = WPF()->db->get_var( WPF()->db->prepare( "SELECT `avatar` FROM `" . WPF()->tables->profiles . "` WHERE `userid` = %d", wpforo_bigintval( $userid ) ) );
|
1515 |
+
if( $cache && $userid ) {
|
1516 |
+
$cached_avatar_url = ( $avatar_url ) ? : '#';
|
1517 |
+
WPF()->cache->create( 'item', [ $userid => $cached_avatar_url ], 'avatar' );
|
1518 |
+
}
|
1519 |
return apply_filters( 'wpforo_avatar_url', $avatar_url, $userid );
|
1520 |
}
|
1521 |
|
1748 |
|
1749 |
public function reset( $userid ) {
|
1750 |
if( ! $userid ) return;
|
1751 |
+
wpforo_clean_cache( 'avatar', $userid );
|
1752 |
delete_user_meta( intval( $userid ), '_wpf_member_obj' );
|
1753 |
if( wpforo_setting( 'seo', 'seo_profile' ) ) WPF()->seo->clear_cache();
|
1754 |
}
|
3236 |
}
|
3237 |
|
3238 |
public function after_password_reset( $user ) {
|
3239 |
+
if( $this->get_status( $user->ID ) !== 'banned' ){
|
3240 |
+
$data = [ 'status' => 'active', 'is_email_confirmed' => 1 ];
|
3241 |
+
if( wpforo_setting( 'authorization', 'manually_approval' ) ) $data['status'] = 'inactive';
|
3242 |
+
$this->update_profile_fields( $user->ID, $data, false );
|
3243 |
+
$this->reset( $user->ID );
|
3244 |
+
}
|
3245 |
}
|
3246 |
|
3247 |
public function wp_login( $user_login, $user ) {
|
3583 |
if( $reassign ) $this->rebuild_stats( $reassign );
|
3584 |
}
|
3585 |
|
3586 |
+
public function after_activate_user( $userid ){
|
3587 |
+
$user = get_user_by( 'ID', $userid );
|
3588 |
+
if( $user ){
|
3589 |
+
$sbj = wpforo_setting( 'email', 'after_user_approve_email_subject' );
|
3590 |
+
$msg = wpforo_setting( 'email', 'after_user_approve_email_message' );
|
3591 |
+
$blogname = get_option('blogname', '');
|
3592 |
+
$login_url = wpforo_login_url( '' );
|
3593 |
+
$login_link = sprintf( '<a href="%1$s">%2$s</a>', $login_url, $blogname );
|
3594 |
+
|
3595 |
+
$sbj = str_replace( [ '[blogname]', '[user_login]', '[login_link]', '[login_url]' ], [ $blogname, $user->user_login, $login_link, $login_url ], $sbj );
|
3596 |
+
$msg = str_replace( [ '[blogname]', '[user_login]', '[login_link]', '[login_url]' ], [ $blogname, $user->user_login, $login_link, $login_url ], $msg );
|
3597 |
+
wpforo_send_email( $user->user_email, $sbj, $msg );
|
3598 |
+
}
|
3599 |
+
}
|
3600 |
+
|
3601 |
public function get_activity_url( $filter = '', $boardid = null, $arg = null ) {
|
3602 |
if( !$arg ) $arg = WPF()->current_object['user'];
|
3603 |
$url = rtrim( $this->get_profile_url( $arg, 'activity' ), '/' );
|
3639 |
$sql = "SELECT `userid` FROM `". WPF()->tables->profiles ."`
|
3640 |
WHERE `status` IN ('" . $status . "')
|
3641 |
AND `groupid` IN (" . $groupids . ")
|
3642 |
+
ORDER BY `userid` DESC LIMIT 1";
|
3643 |
} else {
|
3644 |
$sql = "SELECT `userid` FROM `". WPF()->tables->profiles ."`
|
3645 |
WHERE `groupid` IN (" . $groupids . ")
|
3646 |
+
ORDER BY `userid` DESC LIMIT 1";
|
3647 |
}
|
3648 |
|
3649 |
$memberid = WPF()->db->get_var( $sql );
|
classes/Moderation.php
CHANGED
@@ -97,7 +97,7 @@ class Moderation {
|
|
97 |
}
|
98 |
|
99 |
public function get_view_url( $arg ) {
|
100 |
-
return WPF()->post->
|
101 |
}
|
102 |
|
103 |
public function akismet_topic( $item ) {
|
@@ -148,7 +148,7 @@ class Moderation {
|
|
148 |
$post['comment_author_url'] = WPF()->member->get_profile_url( WPF()->current_userid );
|
149 |
$post['comment_post_modified_gmt'] = $topic['modified'];
|
150 |
$post['comment_content'] = $item['body'];
|
151 |
-
$post['permalink'] = WPF()->topic->
|
152 |
|
153 |
$response = Akismet::http_post( Akismet::build_query( $post ), 'comment-check' );
|
154 |
if( $response[1] == 'true' ) {
|
97 |
}
|
98 |
|
99 |
public function get_view_url( $arg ) {
|
100 |
+
return WPF()->post->get_url( $arg );
|
101 |
}
|
102 |
|
103 |
public function akismet_topic( $item ) {
|
148 |
$post['comment_author_url'] = WPF()->member->get_profile_url( WPF()->current_userid );
|
149 |
$post['comment_post_modified_gmt'] = $topic['modified'];
|
150 |
$post['comment_content'] = $item['body'];
|
151 |
+
$post['permalink'] = WPF()->topic->get_url( $item['topicid'] );
|
152 |
|
153 |
$response = Akismet::http_post( Akismet::build_query( $post ), 'comment-check' );
|
154 |
if( $response[1] == 'true' ) {
|
classes/Phrases.php
CHANGED
@@ -52,8 +52,8 @@ class Phrases {
|
|
52 |
(`langid`, `phrase_key`, `phrase_value`, `package`)
|
53 |
VALUES (%d, %s, %s, %s)",
|
54 |
intval( $args['langid'] ),
|
55 |
-
stripslashes( $args['key'] ),
|
56 |
-
stripslashes( $args['value'] ),
|
57 |
stripslashes( $args['package'] )
|
58 |
);
|
59 |
if( false !== WPF()->db->query( $sql ) ) {
|
@@ -72,8 +72,13 @@ class Phrases {
|
|
72 |
if( ! $args && ! empty( $_REQUEST['phrases'] ) ) $args = $_REQUEST['phrases'];
|
73 |
if( ! empty( $args ) ) {
|
74 |
foreach( $args as $phraseid => $phrase ) {
|
75 |
-
WPF()->db->update(
|
76 |
-
|
|
|
|
|
|
|
|
|
|
|
77 |
}
|
78 |
$this->clear_cache();
|
79 |
WPF()->notice->add( 'Phrase successfully updates', 'success' );
|
52 |
(`langid`, `phrase_key`, `phrase_value`, `package`)
|
53 |
VALUES (%d, %s, %s, %s)",
|
54 |
intval( $args['langid'] ),
|
55 |
+
sanitize_text_field( stripslashes( $args['key'] ) ),
|
56 |
+
sanitize_text_field( stripslashes( $args['value'] ) ),
|
57 |
stripslashes( $args['package'] )
|
58 |
);
|
59 |
if( false !== WPF()->db->query( $sql ) ) {
|
72 |
if( ! $args && ! empty( $_REQUEST['phrases'] ) ) $args = $_REQUEST['phrases'];
|
73 |
if( ! empty( $args ) ) {
|
74 |
foreach( $args as $phraseid => $phrase ) {
|
75 |
+
WPF()->db->update(
|
76 |
+
WPF()->tables->phrases,
|
77 |
+
[ 'phrase_value' => sanitize_text_field( stripslashes( $phrase ) ) ],
|
78 |
+
[ 'phraseid' => intval( $phraseid ) ],
|
79 |
+
[ '%s' ],
|
80 |
+
[ '%d' ]
|
81 |
+
);
|
82 |
}
|
83 |
$this->clear_cache();
|
84 |
WPF()->notice->add( 'Phrase successfully updates', 'success' );
|
classes/Posts.php
CHANGED
@@ -189,7 +189,7 @@ class Posts {
|
|
189 |
$post['postid'] = $postid;
|
190 |
$post['status'] = $status;
|
191 |
$post['private'] = $private;
|
192 |
-
$post['posturl'] = $this->
|
193 |
|
194 |
if( $root_exists ) WPF()->topic->rebuild_threads( $topic, $root );
|
195 |
|
@@ -440,7 +440,11 @@ class Posts {
|
|
440 |
}
|
441 |
}
|
442 |
|
443 |
-
if( $post )
|
|
|
|
|
|
|
|
|
444 |
|
445 |
return apply_filters( 'wpforo_get_post', $post );
|
446 |
}
|
@@ -1152,17 +1156,35 @@ class Posts {
|
|
1152 |
return (int) WPF()->db->get_var( $sql );
|
1153 |
}
|
1154 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1155 |
/**
|
1156 |
* return post full url by id
|
1157 |
*
|
|
|
|
|
1158 |
* @param int|array $arg
|
1159 |
*
|
1160 |
* @return string $url
|
1161 |
-
* @since 1.0.0
|
1162 |
-
*
|
1163 |
*/
|
1164 |
-
function
|
1165 |
-
|
|
|
|
|
|
|
|
|
|
|
1166 |
|
1167 |
if( isset( $arg ) && ! is_array( $arg ) ) {
|
1168 |
$postid = wpforo_bigintval( $arg );
|
@@ -1174,10 +1196,10 @@ class Posts {
|
|
1174 |
|
1175 |
if( ! empty( $post ) && is_array( $post ) && ! empty( $postid ) ) {
|
1176 |
|
1177 |
-
|
1178 |
-
|
1179 |
-
|
1180 |
-
|
1181 |
|
1182 |
$forum_slug = ( wpfval( $post, 'forumid' ) ) ? wpforo_forum( $post['forumid'], 'slug' ) : $this->get_forumslug_byid( $postid );
|
1183 |
$topic_slug = ( wpfval( $post, 'topicid' ) ) ? wpforo_topic( $post['topicid'], 'slug' ) : $this->get_topicslug_byid( $postid );
|
@@ -1188,9 +1210,9 @@ class Posts {
|
|
1188 |
$items_per_page = $this->get_option_items_per_page( WPF()->forum->get_layout( $post['forumid'] ) );
|
1189 |
|
1190 |
if( $position <= $items_per_page ) {
|
1191 |
-
|
1192 |
-
|
1193 |
-
|
1194 |
}
|
1195 |
if( $position && $items_per_page ) {
|
1196 |
$paged = (int) ceil( $position / $items_per_page );
|
@@ -1198,14 +1220,28 @@ class Posts {
|
|
1198 |
$paged = 1;
|
1199 |
}
|
1200 |
|
1201 |
-
|
1202 |
-
|
1203 |
-
|
1204 |
-
|
1205 |
|
1206 |
return wpforo_home_url();
|
1207 |
}
|
1208 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1209 |
|
1210 |
/**
|
1211 |
*
|
@@ -1936,7 +1972,8 @@ class Posts {
|
|
1936 |
$forum = WPF()->forum->get_forum( $post['forumid'] );
|
1937 |
$fields = WPF()->post->get_topic_fields_list( false, $forum, ! WPF()->current_userid );
|
1938 |
foreach( $fields as $field ) {
|
1939 |
-
|
|
|
1940 |
$field = WPF()->post->get_field( $field, 'topic', $forum );
|
1941 |
if( ! (int) wpfval( $field, 'isDefault' ) ) {
|
1942 |
$field['value'] = $postmeta;
|
189 |
$post['postid'] = $postid;
|
190 |
$post['status'] = $status;
|
191 |
$post['private'] = $private;
|
192 |
+
$post['posturl'] = $this->get_url( $postid );
|
193 |
|
194 |
if( $root_exists ) WPF()->topic->rebuild_threads( $topic, $root );
|
195 |
|
440 |
}
|
441 |
}
|
442 |
|
443 |
+
if ( $post ) {
|
444 |
+
$post['url'] = $this->get_url( $post );
|
445 |
+
$post['full_url'] = $this->get_full_url( $post );
|
446 |
+
$post['short_url'] = $this->get_short_url( $post );
|
447 |
+
}
|
448 |
|
449 |
return apply_filters( 'wpforo_get_post', $post );
|
450 |
}
|
1156 |
return (int) WPF()->db->get_var( $sql );
|
1157 |
}
|
1158 |
|
1159 |
+
/**
|
1160 |
+
* @deprecated since 2.0.10 instead this method use get_url()
|
1161 |
+
*
|
1162 |
+
* @since 1.0.0
|
1163 |
+
*
|
1164 |
+
* @param $arg
|
1165 |
+
*
|
1166 |
+
* @return string
|
1167 |
+
*/
|
1168 |
+
function get_post_url( $arg ){
|
1169 |
+
return $this->get_url( $arg );
|
1170 |
+
}
|
1171 |
+
|
1172 |
/**
|
1173 |
* return post full url by id
|
1174 |
*
|
1175 |
+
* @since 2.0.10
|
1176 |
+
*
|
1177 |
* @param int|array $arg
|
1178 |
*
|
1179 |
* @return string $url
|
|
|
|
|
1180 |
*/
|
1181 |
+
function get_url( $arg ) {
|
1182 |
+
if( wpforo_setting( 'board', 'url_structure' ) === 'short' ) return $this->get_short_url( $arg );
|
1183 |
+
return $this->get_full_url( $arg );
|
1184 |
+
}
|
1185 |
+
|
1186 |
+
public function get_full_url( $arg ) {
|
1187 |
+
$cache = WPF()->cache->on();
|
1188 |
|
1189 |
if( isset( $arg ) && ! is_array( $arg ) ) {
|
1190 |
$postid = wpforo_bigintval( $arg );
|
1196 |
|
1197 |
if( ! empty( $post ) && is_array( $post ) && ! empty( $postid ) ) {
|
1198 |
|
1199 |
+
if( $cache ) {
|
1200 |
+
$post_url = WPF()->cache->get_item( $postid, 'url', 'post' );
|
1201 |
+
if( $post_url ) return $post_url;
|
1202 |
+
}
|
1203 |
|
1204 |
$forum_slug = ( wpfval( $post, 'forumid' ) ) ? wpforo_forum( $post['forumid'], 'slug' ) : $this->get_forumslug_byid( $postid );
|
1205 |
$topic_slug = ( wpfval( $post, 'topicid' ) ) ? wpforo_topic( $post['topicid'], 'slug' ) : $this->get_topicslug_byid( $postid );
|
1210 |
$items_per_page = $this->get_option_items_per_page( WPF()->forum->get_layout( $post['forumid'] ) );
|
1211 |
|
1212 |
if( $position <= $items_per_page ) {
|
1213 |
+
$post_url = wpforo_home_url( $url ) . "#post-" . wpforo_bigintval( $postid );
|
1214 |
+
if( $cache ) WPF()->cache->create( 'item', [ 'post_' . intval( $postid ) => $post_url ], 'url' );
|
1215 |
+
return $post_url;
|
1216 |
}
|
1217 |
if( $position && $items_per_page ) {
|
1218 |
$paged = (int) ceil( $position / $items_per_page );
|
1220 |
$paged = 1;
|
1221 |
}
|
1222 |
|
1223 |
+
$post_url = wpforo_home_url( $url . "/" . wpforo_settings_get_slug( 'paged' ) . "/" . $paged ) . "#post-" . wpforo_bigintval( $postid );
|
1224 |
+
if( $cache ) WPF()->cache->create( 'item', [ 'post_' . intval( $postid ) => $post_url ], 'url' );
|
1225 |
+
return $post_url;
|
1226 |
+
}
|
1227 |
|
1228 |
return wpforo_home_url();
|
1229 |
}
|
1230 |
|
1231 |
+
public function get_short_url( $arg ) {
|
1232 |
+
if( is_numeric( $arg ) ){
|
1233 |
+
$postid = $arg;
|
1234 |
+
}elseif( wpfkey( $arg, 'postid' ) ){
|
1235 |
+
$postid = $arg['postid'];
|
1236 |
+
}elseif ( wpfkey( $arg, 'first_postid' ) ){
|
1237 |
+
$postid = $arg['first_postid'];
|
1238 |
+
}else{
|
1239 |
+
$postid = 0;
|
1240 |
+
}
|
1241 |
+
|
1242 |
+
if( $postid = wpforo_bigintval( $postid ) ) return wpforo_home_url( '/' . wpforo_settings_get_slug( 'postid' ) . '/' . $postid . '/' );
|
1243 |
+
return wpforo_home_url();
|
1244 |
+
}
|
1245 |
|
1246 |
/**
|
1247 |
*
|
1972 |
$forum = WPF()->forum->get_forum( $post['forumid'] );
|
1973 |
$fields = WPF()->post->get_topic_fields_list( false, $forum, ! WPF()->current_userid );
|
1974 |
foreach( $fields as $field ) {
|
1975 |
+
$display = apply_filters( 'wpforo_topic_fields_filter', true, $field, $post );
|
1976 |
+
if( $display && $postmeta = wpfval( $postmetas, $field ) ) {
|
1977 |
$field = WPF()->post->get_field( $field, 'topic', $forum );
|
1978 |
if( ! (int) wpfval( $field, 'isDefault' ) ) {
|
1979 |
$field['value'] = $postmeta;
|
classes/Settings.php
CHANGED
@@ -193,6 +193,18 @@ class Settings {
|
|
193 |
"description_original" => "wpForo has own cache system, enable this to reduce sql requests and make your forum run faster.",
|
194 |
"docurl" => "https://wpforo.com/docs/wpforo-v2/settings/board-settings/#enable-cache",
|
195 |
],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
196 |
],
|
197 |
],
|
198 |
'components' => [
|
@@ -1766,6 +1778,34 @@ class Settings {
|
|
1766 |
"description_original" => "[user_login] - Registered user login [reset_password_url] - Link to open password reset form",
|
1767 |
"docurl" => "https://wpforo.com/community/faq/wpforo-email-shortcodes/",
|
1768 |
],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1769 |
],
|
1770 |
],
|
1771 |
'subscriptions' => [
|
@@ -3346,8 +3386,9 @@ class Settings {
|
|
3346 |
if( ! $max_upload_size || $max_upload_size > 10485760 ) $max_upload_size = 10485760;
|
3347 |
|
3348 |
$this->_slugs = [
|
3349 |
-
'paged'
|
3350 |
-
'postid'
|
|
|
3351 |
];
|
3352 |
$this->_slugs = (array) apply_filters( 'wpforo_settings_init__slugs', $this->_slugs );
|
3353 |
|
@@ -3508,6 +3549,7 @@ class Settings {
|
|
3508 |
$this->_board = [
|
3509 |
'under_construction' => false,
|
3510 |
'cache' => true,
|
|
|
3511 |
];
|
3512 |
$this->_forums = [
|
3513 |
'layout_extended_intro_topics_toggle' => true,
|
@@ -3795,6 +3837,8 @@ class Settings {
|
|
3795 |
'wp_new_user_notification_email_message' => __( "Username: [user_login]\n\nTo set your password, visit the following address:\n\n[set_password_url]\n\n", 'wpforo' ),
|
3796 |
'overwrite_reset_password_email' => true,
|
3797 |
'reset_password_email_message' => __( "Hello! \n\n You asked us to reset your password for your account using the email address [user_login]. \n\n If this was a mistake, or you didn't ask for a password reset, just ignore this email and nothing will happen. \n\n To reset your password, visit the following address: \n\n [reset_password_url] \n\n Thanks!", 'wpforo' ),
|
|
|
|
|
3798 |
];
|
3799 |
$this->_subscriptions = [
|
3800 |
'subscribe_confirmation' => true,
|
193 |
"description_original" => "wpForo has own cache system, enable this to reduce sql requests and make your forum run faster.",
|
194 |
"docurl" => "https://wpforo.com/docs/wpforo-v2/settings/board-settings/#enable-cache",
|
195 |
],
|
196 |
+
"url_structure" => [
|
197 |
+
"type" => "radio",
|
198 |
+
"label" => esc_html__( "URL Structure", "wpforo" ),
|
199 |
+
"label_original" => "URL Structure",
|
200 |
+
"description" => esc_html__( "This option allows managing topic and post URL structure. By default, URLs are built based on topic titles. You can change them to ID and make them shorter.", "wpforo" ),
|
201 |
+
"description_original" => "This option allows managing topic and post URL structure. By default, URLs are built based on topic titles. You can change them to ID and make them shorter.",
|
202 |
+
"variants" => [
|
203 |
+
[ 'value' => 'short', 'label' => __( 'ID', 'wpforo' ), 'title' => 'https://example.com/postid/123/' ],
|
204 |
+
[ 'value' => 'full', 'label' => __( 'Title', 'wpforo' ), 'title' => 'https://example.com/community/sample-forum/sample-topic/' ],
|
205 |
+
],
|
206 |
+
"docurl" => "",
|
207 |
+
],
|
208 |
],
|
209 |
],
|
210 |
'components' => [
|
1778 |
"description_original" => "[user_login] - Registered user login [reset_password_url] - Link to open password reset form",
|
1779 |
"docurl" => "https://wpforo.com/community/faq/wpforo-email-shortcodes/",
|
1780 |
],
|
1781 |
+
"after_user_approve_email_subject" => [
|
1782 |
+
"type" => "text",
|
1783 |
+
"label" => esc_html__( "Message Subject", "wpforo" ),
|
1784 |
+
"label_original" => "Message Subject",
|
1785 |
+
"description" => esc_html__( "", "wpforo" ),
|
1786 |
+
"description_original" => "",
|
1787 |
+
"docurl" => "",
|
1788 |
+
],
|
1789 |
+
"after_user_approve_email_message" => [
|
1790 |
+
"type" => "richeditor",
|
1791 |
+
"media_buttons" => true,
|
1792 |
+
"label" => esc_html__( "Message Body", "wpforo" ),
|
1793 |
+
"label_original" => "Message Body",
|
1794 |
+
"description" => sprintf(
|
1795 |
+
'<ul class="wpf-email-shortcodes">
|
1796 |
+
<li>[blogname] - %1$s</li>
|
1797 |
+
<li>[user_login] - %2$s</li>
|
1798 |
+
<li>[login_link] - %3$s</li>
|
1799 |
+
<li>[login_url] - %4$s</li>
|
1800 |
+
</ul>',
|
1801 |
+
__( 'WordPress Blog Name', 'wpforo' ),
|
1802 |
+
__( 'Approved User Login', 'wpforo' ),
|
1803 |
+
__( 'Approved User Login Link', 'wpforo' ),
|
1804 |
+
__( 'Approved User Login URL', 'wpforo' )
|
1805 |
+
),
|
1806 |
+
"description_original" => "[user_login] - Approved User Login [login_link] - Approved User Login Link [login_url] - Approved User Login URL ",
|
1807 |
+
"docurl" => "",
|
1808 |
+
],
|
1809 |
],
|
1810 |
],
|
1811 |
'subscriptions' => [
|
3386 |
if( ! $max_upload_size || $max_upload_size > 10485760 ) $max_upload_size = 10485760;
|
3387 |
|
3388 |
$this->_slugs = [
|
3389 |
+
'paged' => 'paged',
|
3390 |
+
'postid' => 'postid',
|
3391 |
+
'topicid' => 'topicid',
|
3392 |
];
|
3393 |
$this->_slugs = (array) apply_filters( 'wpforo_settings_init__slugs', $this->_slugs );
|
3394 |
|
3549 |
$this->_board = [
|
3550 |
'under_construction' => false,
|
3551 |
'cache' => true,
|
3552 |
+
'url_structure' => 'full',
|
3553 |
];
|
3554 |
$this->_forums = [
|
3555 |
'layout_extended_intro_topics_toggle' => true,
|
3837 |
'wp_new_user_notification_email_message' => __( "Username: [user_login]\n\nTo set your password, visit the following address:\n\n[set_password_url]\n\n", 'wpforo' ),
|
3838 |
'overwrite_reset_password_email' => true,
|
3839 |
'reset_password_email_message' => __( "Hello! \n\n You asked us to reset your password for your account using the email address [user_login]. \n\n If this was a mistake, or you didn't ask for a password reset, just ignore this email and nothing will happen. \n\n To reset your password, visit the following address: \n\n [reset_password_url] \n\n Thanks!", 'wpforo' ),
|
3840 |
+
'after_user_approve_email_subject' => __( '[blogname] - Your Account Has been Approved', 'wpforo' ),
|
3841 |
+
'after_user_approve_email_message' => __( 'Hi [user_login] , Thank you for your registration. Your account has been approved. Your can login here: [login_link]', 'wpforo' ),
|
3842 |
];
|
3843 |
$this->_subscriptions = [
|
3844 |
'subscribe_confirmation' => true,
|
classes/Template.php
CHANGED
@@ -61,6 +61,7 @@ class Template {
|
|
61 |
} );
|
62 |
|
63 |
add_filter( 'wpforo_content_after', [ $this, 'do_spoilers' ] );
|
|
|
64 |
add_action( 'wp_footer', [ $this, 'add_footer_html' ], 999999 );
|
65 |
|
66 |
add_action( 'wpforo_profile_head_right', function( $user ){
|
@@ -986,7 +987,7 @@ class Template {
|
|
986 |
$style = ( $layout === 3 && ! wpforo_setting( 'posting', 'qa_display_answer_editor' ) ) ? 'style="display: none;"' : '';
|
987 |
$parentid = ( $layout === 3 && ! WPF()->topic->can_answer( $topic['topicid'] ) ) ? wpforo_bigintval( wpfval( $topic, 'first_postid' ) ) : 0;
|
988 |
$v = $values;
|
989 |
-
if( ! trim( wpfval( $v, 'title' ) ) ) $v['title'] = $topic['title'];
|
990 |
?>
|
991 |
<div class="wpf-form-wrapper wpfel-<?php echo $layout ?>" <?php echo $style ?>>
|
992 |
<?php if( ! $values ): ?>
|
@@ -1733,8 +1734,8 @@ class Template {
|
|
1733 |
}
|
1734 |
break;
|
1735 |
case 'link':
|
1736 |
-
$full_url = esc_url( wpforo_post( $postid, '
|
1737 |
-
$short_url = esc_url(
|
1738 |
$title = esc_attr( wpforo_phrase( 'Post link', false ) );
|
1739 |
$button_html[] = sprintf(
|
1740 |
'<span class="wpf-action" title="%1$s" data-copy-wpf-furl="%2$s" data-copy-wpf-shurl="%3$s"><i class="fas fa-link wpfsx"></i></span>',
|
@@ -2739,18 +2740,46 @@ class Template {
|
|
2739 |
|
2740 |
public function do_spoilers( $text ) {
|
2741 |
$text = preg_replace(
|
2742 |
-
'#(?:<(p|a|span|blockquote|b|i|pre|font|del|strike|strong|em|div|u|center|marquee|table|tr|td|th|tt|sup|sub|s|ul|ol|li|small|code|h\d)(?:[\r\n\t\s\0]+[^<>]*?)?>[\r\n\t\s\0]*)\[[\r\n\t\s\0]*spoiler(?:[\r\n\t\s\0]*title[\r\n\t\s\0]*=[\r\n\t\s\0]*\"([^\"]+)\")?[\r\n\t\s\0]
|
2743 |
'<div class="wpf-spoiler-wrap"><div class="wpf-spoiler-head"><i class="wpf-spoiler-chevron-name">' . wpforo_phrase( 'Spoiler', false ) . '</i><i class="wpf-spoiler-chevron fas fa-chevron-down"></i><div class="wpf-spoiler-title">$2</div></div><div class="wpf-spoiler-body">',
|
2744 |
$text,
|
2745 |
- 1,
|
2746 |
$count1
|
2747 |
);
|
2748 |
-
$text = preg_replace( '#\[[\r\n\t\s\0]*spoiler(?:[\r\n\t\s\0]*title[\r\n\t\s\0]*=[\r\n\t\s\0]*\"([^\"]+)\")?[\r\n\t\s\0]
|
2749 |
-
$text = preg_replace( '#(?:<(p|a|span|blockquote|b|i|pre|font|del|strike|strong|em|div|u|center|marquee|table|tr|td|th|tt|sup|sub|s|ul|ol|li|small|code|h\d)(?:[\r\n\t\s\0]+[^<>]*?)?>[\r\n\t\s\0]*)\[[\r\n\t\s\0]*/[\r\n\t\s\0]*spoiler[\r\n\t\s\0]
|
2750 |
|
2751 |
-
return preg_replace( '#\[[\r\n\t\s\0]*/[\r\n\t\s\0]*spoiler[\r\n\t\s\0]
|
2752 |
}
|
2753 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2754 |
public function please_login() {
|
2755 |
if( ! wpforo_is_bot() ) {
|
2756 |
$html = sprintf(
|
@@ -2882,8 +2911,16 @@ class Template {
|
|
2882 |
public function change_cover_button( $user ) {
|
2883 |
if( WPF()->usergroup->can( 'upc' ) && WPF()->perm->user_can_edit_account( $user ) ){
|
2884 |
return sprintf(
|
2885 |
-
'<div class="wpf-edit-cover" wpf-tooltip="%1$s" wpf-tooltip-position="top" wpf-tooltip-size="small"
|
2886 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2887 |
);
|
2888 |
}
|
2889 |
|
61 |
} );
|
62 |
|
63 |
add_filter( 'wpforo_content_after', [ $this, 'do_spoilers' ] );
|
64 |
+
add_filter( 'wpforo_content_after', [ $this, 'apply_quotes' ] );
|
65 |
add_action( 'wp_footer', [ $this, 'add_footer_html' ], 999999 );
|
66 |
|
67 |
add_action( 'wpforo_profile_head_right', function( $user ){
|
987 |
$style = ( $layout === 3 && ! wpforo_setting( 'posting', 'qa_display_answer_editor' ) ) ? 'style="display: none;"' : '';
|
988 |
$parentid = ( $layout === 3 && ! WPF()->topic->can_answer( $topic['topicid'] ) ) ? wpforo_bigintval( wpfval( $topic, 'first_postid' ) ) : 0;
|
989 |
$v = $values;
|
990 |
+
if( ! trim( (string) wpfval( $v, 'title' ) ) ) $v['title'] = $topic['title'];
|
991 |
?>
|
992 |
<div class="wpf-form-wrapper wpfel-<?php echo $layout ?>" <?php echo $style ?>>
|
993 |
<?php if( ! $values ): ?>
|
1734 |
}
|
1735 |
break;
|
1736 |
case 'link':
|
1737 |
+
$full_url = esc_url( wpforo_post( $postid, 'full_url' ) );
|
1738 |
+
$short_url = esc_url( wpforo_post( $postid, 'short_url' ) );
|
1739 |
$title = esc_attr( wpforo_phrase( 'Post link', false ) );
|
1740 |
$button_html[] = sprintf(
|
1741 |
'<span class="wpf-action" title="%1$s" data-copy-wpf-furl="%2$s" data-copy-wpf-shurl="%3$s"><i class="fas fa-link wpfsx"></i></span>',
|
2740 |
|
2741 |
public function do_spoilers( $text ) {
|
2742 |
$text = preg_replace(
|
2743 |
+
'#(?:<(p|a|span|blockquote|b|i|pre|font|del|strike|strong|em|div|u|center|marquee|table|tr|td|th|tt|sup|sub|s|ul|ol|li|small|code|h\d)(?:[\r\n\t\s\0]+[^<>]*?)?>[\r\n\t\s\0]*)\[[\r\n\t\s\0]*spoiler(?:[\r\n\t\s\0]*title[\r\n\t\s\0]*=[\r\n\t\s\0]*\"([^\"]+)\")?[\r\n\t\s\0]*](?:[\r\n\t\s\0]*</\1>)#iu',
|
2744 |
'<div class="wpf-spoiler-wrap"><div class="wpf-spoiler-head"><i class="wpf-spoiler-chevron-name">' . wpforo_phrase( 'Spoiler', false ) . '</i><i class="wpf-spoiler-chevron fas fa-chevron-down"></i><div class="wpf-spoiler-title">$2</div></div><div class="wpf-spoiler-body">',
|
2745 |
$text,
|
2746 |
- 1,
|
2747 |
$count1
|
2748 |
);
|
2749 |
+
$text = preg_replace( '#\[[\r\n\t\s\0]*spoiler(?:[\r\n\t\s\0]*title[\r\n\t\s\0]*=[\r\n\t\s\0]*\"([^\"]+)\")?[\r\n\t\s\0]*]#iu', '<div class="wpf-spoiler-wrap"><div class="wpf-spoiler-head"><i class="wpf-spoiler-chevron-name">' . wpforo_phrase( 'Spoiler', false ) . '</i><i class="wpf-spoiler-chevron fas fa-chevron-down"></i><div class="wpf-spoiler-title">$1</div></div><div class="wpf-spoiler-body">', $text, - 1, $count2 );
|
2750 |
+
$text = preg_replace( '#(?:<(p|a|span|blockquote|b|i|pre|font|del|strike|strong|em|div|u|center|marquee|table|tr|td|th|tt|sup|sub|s|ul|ol|li|small|code|h\d)(?:[\r\n\t\s\0]+[^<>]*?)?>[\r\n\t\s\0]*)\[[\r\n\t\s\0]*/[\r\n\t\s\0]*spoiler[\r\n\t\s\0]*](?:[\r\n\t\s\0]*</\1>)#iu', '</div></div>', $text, $count1 );
|
2751 |
|
2752 |
+
return preg_replace( '#\[[\r\n\t\s\0]*/[\r\n\t\s\0]*spoiler[\r\n\t\s\0]*]#iu', '</div></div>', $text, $count2 );
|
2753 |
}
|
2754 |
|
2755 |
+
public function apply_quotes( $text ) {
|
2756 |
+
$text = preg_replace_callback( '#\[quote(\s[^\[\]]+|\s?)?]#iu', function( $m ){
|
2757 |
+
$userid = 0;
|
2758 |
+
$postid = 0;
|
2759 |
+
$mention = '';
|
2760 |
+
$posted_by = '';
|
2761 |
+
if( preg_match( '#data-userid=[\'"](\d+)[\'"]#iu', $m[1], $u ) ) $userid = wpforo_bigintval( $u[1] );
|
2762 |
+
if( preg_match( '#data-postid=[\'"](\d+)[\'"]#iu', $m[1], $p ) ) $postid = wpforo_bigintval( $p[1] );
|
2763 |
+
|
2764 |
+
if( $userid ){
|
2765 |
+
$profiles_mention_nicknames = wpforo_setting( 'profiles', 'mention_nicknames' );
|
2766 |
+
$posted_by = $mention = trim( $profiles_mention_nicknames ? wpforo_member( $userid, 'user_nicename' ) : wpforo_member( $userid, 'display_name' ) );
|
2767 |
+
if( $profiles_mention_nicknames ) $posted_by = '@' . $posted_by;
|
2768 |
+
}
|
2769 |
+
|
2770 |
+
return sprintf(
|
2771 |
+
'<blockquote data-userid="%1$d" data-postid="%2$d" data-mention="%3$s"><div class="wpforo-post-quote-head">%4$s %5$s</div>',
|
2772 |
+
$userid,
|
2773 |
+
$postid,
|
2774 |
+
$mention,
|
2775 |
+
( $posted_by ? sprintf('<div class="wpforo-post-quote-author"><strong> Posted by: %1$s </strong></div>', $posted_by) : '' ),
|
2776 |
+
( $postid ? sprintf( '<div class="wpforo-post-quote-link"><a href="%1$s" title="%2$s">↑</a></div>', WPF()->post->get_url( $postid ), wpforo_phrase( 'go to original post', false ) ) : '' )
|
2777 |
+
);
|
2778 |
+
}, $text );
|
2779 |
+
|
2780 |
+
return preg_replace( '#\[/quote]#iu', '</blockquote>', $text );
|
2781 |
+
}
|
2782 |
+
|
2783 |
public function please_login() {
|
2784 |
if( ! wpforo_is_bot() ) {
|
2785 |
$html = sprintf(
|
2911 |
public function change_cover_button( $user ) {
|
2912 |
if( WPF()->usergroup->can( 'upc' ) && WPF()->perm->user_can_edit_account( $user ) ){
|
2913 |
return sprintf(
|
2914 |
+
'<div class="wpf-edit-cover" wpf-tooltip="%1$s" wpf-tooltip-position="top" wpf-tooltip-size="small">
|
2915 |
+
<i class="fas fa-images" data-action="editcover"></i>
|
2916 |
+
<ul class="wpf-edit-cover-options">
|
2917 |
+
<li class="wpf-upload-cover"><i class="fas fa-upload"></i> %2$s</li>
|
2918 |
+
<li class="wpf-delete-cover"><i class="fas fa-rotate-left"></i> %3$s</li>
|
2919 |
+
</ul>
|
2920 |
+
</div>',
|
2921 |
+
wpforo_phrase('Change Cover Image', false),
|
2922 |
+
wpforo_phrase('Upload New Cover', false),
|
2923 |
+
wpforo_phrase( 'Set the Default', false )
|
2924 |
);
|
2925 |
}
|
2926 |
|
classes/Topics.php
CHANGED
@@ -198,7 +198,7 @@ class Topics {
|
|
198 |
$args['type'] = $type;
|
199 |
$args['status'] = $status;
|
200 |
$args['private'] = $private;
|
201 |
-
$args['url'] = $args['topicurl'] = $this->
|
202 |
if( $tags && ! $status && ! $private ) $this->add_tags( $tags );
|
203 |
|
204 |
do_action( 'wpforo_after_add_topic', $args, $forum );
|
@@ -528,7 +528,11 @@ class Topics {
|
|
528 |
}
|
529 |
}
|
530 |
|
531 |
-
if( $topic )
|
|
|
|
|
|
|
|
|
532 |
|
533 |
return $topic;
|
534 |
}
|
@@ -1064,16 +1068,41 @@ class Topics {
|
|
1064 |
return false;
|
1065 |
}
|
1066 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1067 |
public function _get_topic_url( $topic, $forum = [], $_cache = true ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1068 |
if( ! is_array( $topic ) ) $topic = $this->get_topic( $topic );
|
1069 |
if( $topic ) {
|
1070 |
-
|
1071 |
-
|
1072 |
-
|
1073 |
-
|
1074 |
-
|
1075 |
-
|
1076 |
-
|
1077 |
if( is_array( $forum ) && ! empty( $forum ) ) {
|
1078 |
$forum_slug = $forum['slug'];
|
1079 |
} else {
|
@@ -1085,19 +1114,51 @@ class Topics {
|
|
1085 |
}
|
1086 |
}
|
1087 |
if( wpfval( $topic, 'slug' ) ) {
|
1088 |
-
|
1089 |
-
|
1090 |
-
|
1091 |
-
|
1092 |
}
|
1093 |
|
1094 |
return wpforo_home_url();
|
1095 |
}
|
1096 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1097 |
public function get_topic_url( $topic, $forum = [], $_cache = true ) {
|
1098 |
-
return
|
1099 |
}
|
1100 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1101 |
|
1102 |
function get_count( $args = [] ) {
|
1103 |
$sql = "SELECT SQL_NO_CACHE COUNT(*) FROM `" . WPF()->tables->topics . "`";
|
198 |
$args['type'] = $type;
|
199 |
$args['status'] = $status;
|
200 |
$args['private'] = $private;
|
201 |
+
$args['url'] = $args['topicurl'] = $this->get_url( $topicid );
|
202 |
if( $tags && ! $status && ! $private ) $this->add_tags( $tags );
|
203 |
|
204 |
do_action( 'wpforo_after_add_topic', $args, $forum );
|
528 |
}
|
529 |
}
|
530 |
|
531 |
+
if( $topic ) {
|
532 |
+
$topic['url'] = $this->get_url( $topic, [], false );
|
533 |
+
$topic['full_url'] = $this->get_full_url( $topic, [], false );
|
534 |
+
$topic['short_url'] = $this->get_short_url( $topic );
|
535 |
+
}
|
536 |
|
537 |
return $topic;
|
538 |
}
|
1068 |
return false;
|
1069 |
}
|
1070 |
|
1071 |
+
/**
|
1072 |
+
* @deprecated since 2.0.10 instead this method use _get_url()
|
1073 |
+
*
|
1074 |
+
* @param $topic
|
1075 |
+
* @param $forum
|
1076 |
+
* @param $_cache
|
1077 |
+
*
|
1078 |
+
* @return string
|
1079 |
+
*/
|
1080 |
public function _get_topic_url( $topic, $forum = [], $_cache = true ) {
|
1081 |
+
return $this->_get_url( $topic, $forum, $_cache );
|
1082 |
+
}
|
1083 |
+
|
1084 |
+
/**
|
1085 |
+
* @param $topic
|
1086 |
+
* @param $forum
|
1087 |
+
* @param $_cache
|
1088 |
+
*
|
1089 |
+
* @return string
|
1090 |
+
*/
|
1091 |
+
public function _get_url( $topic, $forum = [], $_cache = true ) {
|
1092 |
+
if( wpforo_setting( 'board', 'url_structure' ) === 'short' ) return $this->get_short_url( $topic );
|
1093 |
+
return $this->get_full_url( $topic, $forum, $_cache );
|
1094 |
+
}
|
1095 |
+
|
1096 |
+
public function get_full_url( $topic, $forum = [], $_cache = true ) {
|
1097 |
if( ! is_array( $topic ) ) $topic = $this->get_topic( $topic );
|
1098 |
if( $topic ) {
|
1099 |
+
$cache = WPF()->cache->on();
|
1100 |
+
// $_cache is used to stop caching on merge and move actions,
|
1101 |
+
// otherwise the merging and splitting go to redirection loop
|
1102 |
+
if( $_cache && $cache && wpfval($topic, 'topicid') ) {
|
1103 |
+
$topic_url = (string) WPF()->cache->get_item( $topic['topicid'], 'url', 'topic' );
|
1104 |
+
if( $topic_url ) return $topic_url;
|
1105 |
+
}
|
1106 |
if( is_array( $forum ) && ! empty( $forum ) ) {
|
1107 |
$forum_slug = $forum['slug'];
|
1108 |
} else {
|
1114 |
}
|
1115 |
}
|
1116 |
if( wpfval( $topic, 'slug' ) ) {
|
1117 |
+
$topic_url = wpforo_home_url( $forum_slug . '/' . $topic['slug'] );
|
1118 |
+
if( $cache ) WPF()->cache->create( 'item', [ 'topic_' . intval( $topic['topicid'] ) => $topic_url ], 'url' );
|
1119 |
+
return $topic_url;
|
1120 |
+
}
|
1121 |
}
|
1122 |
|
1123 |
return wpforo_home_url();
|
1124 |
}
|
1125 |
|
1126 |
+
public function get_short_url( $arg ) {
|
1127 |
+
if( is_numeric( $arg ) ){
|
1128 |
+
$topicid = $arg;
|
1129 |
+
}elseif( wpfkey( $arg, 'topicid' ) ){
|
1130 |
+
$topicid = $arg['topicid'];
|
1131 |
+
}else{
|
1132 |
+
$topicid = 0;
|
1133 |
+
}
|
1134 |
+
|
1135 |
+
if( $topicid = wpforo_bigintval( $topicid ) ) return wpforo_home_url( '/' . wpforo_settings_get_slug( 'topicid' ) . '/' . $topicid . '/' );
|
1136 |
+
return wpforo_home_url();
|
1137 |
+
}
|
1138 |
+
|
1139 |
+
/**
|
1140 |
+
* @deprecated since 2.0.10 instead this method use get_url()
|
1141 |
+
*
|
1142 |
+
* @param $topic
|
1143 |
+
* @param $forum
|
1144 |
+
* @param $_cache
|
1145 |
+
*
|
1146 |
+
* @return string
|
1147 |
+
*/
|
1148 |
public function get_topic_url( $topic, $forum = [], $_cache = true ) {
|
1149 |
+
return $this->get_url( $topic, $forum, $_cache );
|
1150 |
}
|
1151 |
|
1152 |
+
/**
|
1153 |
+
* @param $topic
|
1154 |
+
* @param $forum
|
1155 |
+
* @param $_cache
|
1156 |
+
*
|
1157 |
+
* @return string
|
1158 |
+
*/
|
1159 |
+
public function get_url( $topic, $forum = [], $_cache = true ) {
|
1160 |
+
return (string) wpforo_ram_get( [ $this, '_get_url' ], $topic, $forum, $_cache );
|
1161 |
+
}
|
1162 |
|
1163 |
function get_count( $args = [] ) {
|
1164 |
$sql = "SELECT SQL_NO_CACHE COUNT(*) FROM `" . WPF()->tables->topics . "`";
|
includes/functions-template.php
CHANGED
@@ -269,7 +269,11 @@ function wpforo_post( $postid, $var = 'item', $echo = false ) {
|
|
269 |
if( empty( $post ) ) {
|
270 |
$post = [];
|
271 |
if( ! $cache && $var === 'url' ) {
|
272 |
-
$post['url'] = WPF()->post->
|
|
|
|
|
|
|
|
|
273 |
} elseif( ! $cache && $var === 'is_answered' ) {
|
274 |
$post['is_answered'] = WPF()->post->is_answered( $postid );
|
275 |
} elseif( ! $cache && $var === 'likes_count' ) {
|
@@ -279,7 +283,9 @@ function wpforo_post( $postid, $var = 'item', $echo = false ) {
|
|
279 |
} else {
|
280 |
$post = WPF()->post->get_post( $postid );
|
281 |
if( ! empty( $post ) ) {
|
282 |
-
$post['url'] = WPF()->post->
|
|
|
|
|
283 |
$post['is_answered'] = WPF()->post->is_answered( $postid );
|
284 |
$post['likes_count'] = WPF()->reaction->get_post_reactions_count( $postid );
|
285 |
$post['likers_usernames'] = WPF()->reaction->get_post_reactions_user_dnames( $postid );
|
@@ -308,11 +314,17 @@ function wpforo_topic( $topicid, $var = 'item', $echo = false ) {
|
|
308 |
if( empty( $topic ) ) {
|
309 |
$topic = [];
|
310 |
if( ! $cache && $var === 'url' ) {
|
311 |
-
$topic['url'] = WPF()->topic->
|
|
|
|
|
|
|
|
|
312 |
} else {
|
313 |
$topic = WPF()->topic->get_topic( $topicid );
|
314 |
if( ! empty( $topic ) ) {
|
315 |
-
$topic['url']
|
|
|
|
|
316 |
if( ! empty( $topic ) ) {
|
317 |
$cache_item = [ $topicid => $topic ];
|
318 |
WPF()->cache->create( 'item', $cache_item, 'topic' );
|
@@ -988,7 +1000,7 @@ function wpforo_activity_content_delete( $item = [] ) {
|
|
988 |
function wpforo_activity_content_on_post_status_change( $post, $status = 0 ) {
|
989 |
if( ! empty( $post ) ) {
|
990 |
$post['status'] = $status;
|
991 |
-
$post['posturl'] = WPF()->post->
|
992 |
if( ! (int) wpfval( $post, 'is_first_post' ) ) {
|
993 |
if( $status ) {
|
994 |
wpforo_activity_content_delete( $post );
|
@@ -1003,7 +1015,7 @@ add_action( 'wpforo_post_status_update', 'wpforo_activity_content_on_post_status
|
|
1003 |
function wpforo_activity_content_on_topic_status_change( $topic, $status = 0 ) {
|
1004 |
if( ! empty( $topic ) ) {
|
1005 |
$topic['status'] = $status;
|
1006 |
-
$topic['topicurl'] = WPF()->topic->
|
1007 |
if( $status ) {
|
1008 |
wpforo_activity_content_delete( $topic );
|
1009 |
} else {
|
269 |
if( empty( $post ) ) {
|
270 |
$post = [];
|
271 |
if( ! $cache && $var === 'url' ) {
|
272 |
+
$post['url'] = WPF()->post->get_url( $postid );
|
273 |
+
} elseif( ! $cache && $var === 'full_url' ) {
|
274 |
+
$post['full_url'] = WPF()->post->get_full_url( $postid );
|
275 |
+
} elseif( ! $cache && $var === 'short_url' ) {
|
276 |
+
$post['short_url'] = WPF()->post->get_short_url( $postid );
|
277 |
} elseif( ! $cache && $var === 'is_answered' ) {
|
278 |
$post['is_answered'] = WPF()->post->is_answered( $postid );
|
279 |
} elseif( ! $cache && $var === 'likes_count' ) {
|
283 |
} else {
|
284 |
$post = WPF()->post->get_post( $postid );
|
285 |
if( ! empty( $post ) ) {
|
286 |
+
$post['url'] = WPF()->post->get_url( $post );
|
287 |
+
$post['full_url'] = WPF()->post->get_full_url( $post );
|
288 |
+
$post['short_url'] = WPF()->post->get_short_url( $post );
|
289 |
$post['is_answered'] = WPF()->post->is_answered( $postid );
|
290 |
$post['likes_count'] = WPF()->reaction->get_post_reactions_count( $postid );
|
291 |
$post['likers_usernames'] = WPF()->reaction->get_post_reactions_user_dnames( $postid );
|
314 |
if( empty( $topic ) ) {
|
315 |
$topic = [];
|
316 |
if( ! $cache && $var === 'url' ) {
|
317 |
+
$topic['url'] = WPF()->topic->get_url( $topicid );
|
318 |
+
}elseif( ! $cache && $var === 'full_url' ) {
|
319 |
+
$topic['full_url'] = WPF()->topic->get_full_url( $topicid );
|
320 |
+
}elseif( ! $cache && $var === 'short_url' ) {
|
321 |
+
$topic['short_url'] = WPF()->topic->get_short_url( $topicid );
|
322 |
} else {
|
323 |
$topic = WPF()->topic->get_topic( $topicid );
|
324 |
if( ! empty( $topic ) ) {
|
325 |
+
$topic['url'] = WPF()->topic->get_url( $topic );
|
326 |
+
$topic['full_url'] = WPF()->topic->get_full_url( $topic );
|
327 |
+
$topic['short_url'] = WPF()->topic->get_short_url( $topic );
|
328 |
if( ! empty( $topic ) ) {
|
329 |
$cache_item = [ $topicid => $topic ];
|
330 |
WPF()->cache->create( 'item', $cache_item, 'topic' );
|
1000 |
function wpforo_activity_content_on_post_status_change( $post, $status = 0 ) {
|
1001 |
if( ! empty( $post ) ) {
|
1002 |
$post['status'] = $status;
|
1003 |
+
$post['posturl'] = WPF()->post->get_url( $post['postid'] );
|
1004 |
if( ! (int) wpfval( $post, 'is_first_post' ) ) {
|
1005 |
if( $status ) {
|
1006 |
wpforo_activity_content_delete( $post );
|
1015 |
function wpforo_activity_content_on_topic_status_change( $topic, $status = 0 ) {
|
1016 |
if( ! empty( $topic ) ) {
|
1017 |
$topic['status'] = $status;
|
1018 |
+
$topic['topicurl'] = WPF()->topic->get_url( $topic['topicid'] );
|
1019 |
if( $status ) {
|
1020 |
wpforo_activity_content_delete( $topic );
|
1021 |
} else {
|
includes/functions.php
CHANGED
@@ -336,7 +336,7 @@ function wpforo_get_addons_info( $base = null ) {
|
|
336 |
'class' => 'wpForoWooMembers',
|
337 |
'deps' => [],
|
338 |
'title' => 'WooCommerce Memberships Integration',
|
339 |
-
'thumb' => WPFORO_URL . '/assets/addons/wpforo-
|
340 |
'desc' => __( 'Allows to setup membership access to your forums and topics through WooCommerce Memberships plugin.', 'wpforo' ),
|
341 |
'url' => 'https://gvectors.com/product/wpforo-woocommerce-memberships/',
|
342 |
],
|
@@ -804,10 +804,11 @@ function wpforo_screen_option() { ?>
|
|
804 |
|
805 |
function wpforo_strip_shortcodes( $text, $only_wpforo_shortcodes = false ) {
|
806 |
$text = apply_filters( 'wpforo_strip_shortcodes', $text, $only_wpforo_shortcodes );
|
807 |
-
$text = preg_replace( '#\[attach[^\[\]]
|
808 |
-
$text = preg_replace( '#\[spoiler[^\[\]]
|
809 |
-
$text = preg_replace( '#\[
|
810 |
-
$text = preg_replace( '#\[
|
|
|
811 |
// $text = preg_replace('#(?:{\w+})?:[^/.\s]+:#iu', '', $text);
|
812 |
if( ! $only_wpforo_shortcodes ) $text = strip_shortcodes( $text );
|
813 |
|
@@ -815,11 +816,12 @@ function wpforo_strip_shortcodes( $text, $only_wpforo_shortcodes = false ) {
|
|
815 |
}
|
816 |
|
817 |
function wpforo_strip_quotes( $text ) {
|
818 |
-
|
|
|
819 |
}
|
820 |
|
821 |
function wpforo_strip_urls( $text ) {
|
822 |
-
return preg_replace( '#(?:[^\'\"]|^)(https?://[^\s\'\"<>]+)(?:[^\'\"]|$)#
|
823 |
}
|
824 |
|
825 |
function wpforo_text( $text, $length = 0, $echo = true, $strip_tags = true, $strip_urls = true, $strip_shortcodes = true, $strip_quotes = true ) {
|
@@ -2141,7 +2143,7 @@ function wpforo_key( $array = [], $value = '', $type = 'default' ) {
|
|
2141 |
}
|
2142 |
|
2143 |
function wpforo_unslashe( $data ) {
|
2144 |
-
$data = is_array( $data ) ? array_map( 'wpforo_unslashe', $data ) : stripslashes( $data );
|
2145 |
|
2146 |
return $data;
|
2147 |
}
|
@@ -2719,7 +2721,7 @@ function wpforo_get_topic_slug_from_url( $url = '' ) {
|
|
2719 |
|
2720 |
if( is_wpforo_url( $url ) ) {
|
2721 |
if( preg_match( '#/' . preg_quote( wpforo_settings_get_slug( 'postid' ) ) . '/(\d+)/?$#isu', strtok( $url, '?' ), $match ) ) {
|
2722 |
-
$url = WPF()->post->
|
2723 |
}
|
2724 |
if( preg_match( '#^[\r\n\t\s]*https?://[^\r\n\t\s]+?/[^/]+?/([^/]+?)(?:/' . wpforo_settings_get_slug( 'paged' ) . '/\d+/?)?(?:/?\#post-\d+)?/?[\r\n\t\s]*$#isu', $url, $match ) ) {
|
2725 |
return $match[1];
|
@@ -2801,7 +2803,7 @@ function is_wpforo_multiboard() {
|
|
2801 |
}
|
2802 |
|
2803 |
function wpforo_get_redirect_to() {
|
2804 |
-
if( ! ( ( $redirect_to = urldecode( wpfval( $_GET, 'redirect_to' ) ) ) && wpforo_is_url_internal( $redirect_to ) ) ) {
|
2805 |
$redirect_to = preg_replace( '#/?\?.*$#isu', '', wpforo_get_request_uri() );
|
2806 |
}
|
2807 |
|
@@ -2916,79 +2918,87 @@ function wpforo_setting( $group, $name ) {
|
|
2916 |
return null;
|
2917 |
}
|
2918 |
|
2919 |
-
function
|
2920 |
-
$forumid
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2921 |
$topicid = ( wpforo_bigintval( wpfval( $pitem, 'topicid' ) ) ?: wpforo_bigintval( wpfval( $item, 'topicid' ) ) );
|
2922 |
-
$postid = ( wpforo_bigintval( wpfval( $item, 'postid' ) )
|
2923 |
-
|
2924 |
-
return preg_replace_callback( '#\[[^\[\]]+?]#iu', function( $match ) use ( $forumid, $topicid, $postid, $user, $owner, $unsubscribe_link ){
|
2925 |
-
$body_length = apply_filters( 'wpforo_email_notification_post_body_length', 1000 );
|
2926 |
-
$value = '';
|
2927 |
-
$shortcode = $match[0];
|
2928 |
-
|
2929 |
-
if( $shortcode === '[forum_link]' ){
|
2930 |
-
if( $forumid ){
|
2931 |
-
$value = sprintf( '<a target="_blank" href="%1$s">%2$s</a>', esc_url( wpforo_forum( $forumid, 'url' ) ), sanitize_text_field( wpforo_forum( $forumid, 'title' ) ) );
|
2932 |
-
$value = stripslashes( $value );
|
2933 |
-
}
|
2934 |
-
}elseif ( $shortcode === '[topic_link]' ){
|
2935 |
-
if( $topicid ){
|
2936 |
-
$value = sprintf( '<a target="_blank" href="%1$s">%2$s</a>', esc_url( wpforo_topic( $topicid, 'url' ) ), sanitize_text_field( wpforo_topic( $topicid, 'title' ) ) );
|
2937 |
-
$value = stripslashes( $value );
|
2938 |
-
}
|
2939 |
-
}elseif ( $shortcode === '[post_link]' ){
|
2940 |
-
if( $postid ){
|
2941 |
-
$value = sprintf( '<a target="_blank" href="%1$s">%2$s</a>', esc_url( wpforo_post( $postid, 'url' ) ), sanitize_text_field( wpforo_post( $postid, 'title' ) ) );
|
2942 |
-
$value = stripslashes( $value );
|
2943 |
-
}
|
2944 |
-
}elseif ( $shortcode === '[unsubscribe_link]' ){
|
2945 |
-
if( $unsubscribe_link ){
|
2946 |
-
$value = sprintf( '<br><a target="_blank" href="%1$s">%2$s</a>', esc_url( $unsubscribe_link ), wpforo_phrase( 'Unsubscribe', false ) );
|
2947 |
-
$value = stripslashes( $value );
|
2948 |
-
}
|
2949 |
-
}elseif ( preg_match( '#\[user_([^\[\]]+?)]#iu', $shortcode, $match ) ){
|
2950 |
-
if( wpforo_bigintval( wpfval( $user, 'userid' ) ) ){
|
2951 |
-
$value = wpforo_user_field_shortcode_to_value( '['. $match[1] .']', $user['userid'] );
|
2952 |
-
if( ! $value || ! ( is_string( $value ) || is_numeric( $value ) ) ) $value = '';
|
2953 |
-
}else{
|
2954 |
-
if( $shortcode === '[user_display_name]' ){
|
2955 |
-
$value = wpfval( $user, 'display_name' ) ?: wpforo_phrase( 'Anonymous', false );
|
2956 |
-
}elseif( $shortcode === '[user_user_email]' ){
|
2957 |
-
$value = (string) wpfval( $user, 'user_email' );
|
2958 |
-
}
|
2959 |
-
}
|
2960 |
-
}elseif ( preg_match( '#\[owner_([^\[\]]+?)]#iu', $shortcode, $match ) ){
|
2961 |
-
if( wpforo_bigintval( wpfval( $owner, 'userid' ) ) ){
|
2962 |
-
$value = wpforo_user_field_shortcode_to_value( '['. $match[1] .']', $owner['userid'] );
|
2963 |
-
if( ! $value || ! ( is_string( $value ) || is_numeric( $value ) ) ) $value = '';
|
2964 |
-
}else{
|
2965 |
-
if( $shortcode === '[owner_display_name]' ){
|
2966 |
-
$value = wpfval( $owner, 'display_name' ) ?: wpforo_phrase( 'Anonymous', false );
|
2967 |
-
}elseif( $shortcode === '[owner_user_email]' ){
|
2968 |
-
$value = (string) wpfval( $owner, 'user_email' );
|
2969 |
-
}
|
2970 |
-
}
|
2971 |
-
}elseif ( preg_match( '#\[forum_([^\[\]]+?)]#iu', $shortcode, $match ) ){
|
2972 |
-
if( $forumid ){
|
2973 |
-
$value = wpforo_forum_field_shortcode_to_value( '['. $match[1] .']', $forumid );
|
2974 |
-
if( ! $value || ! ( is_string( $value ) || is_numeric( $value ) ) ) $value = '';
|
2975 |
-
}
|
2976 |
-
}elseif ( preg_match( '#\[topic_([^\[\]]+?)]#iu', $shortcode, $match ) ){
|
2977 |
-
if( $topicid ){
|
2978 |
-
$value = wpforo_topic_field_shortcode_to_value( '['. $match[1] .']', $topicid );
|
2979 |
-
if( ! $value || ! ( is_string( $value ) || is_numeric( $value ) ) ) $value = '';
|
2980 |
-
if( $match[1] === 'body' ) $value = wpforo_text( wpforo_kses( $value, 'email' ), $body_length, false, false, false, true, false );
|
2981 |
-
}
|
2982 |
-
}elseif ( preg_match( '#\[post_([^\[\]]+?)]#iu', $shortcode, $match ) ){
|
2983 |
-
if( $postid ){
|
2984 |
-
$value = wpforo_post_field_shortcode_to_value( '['. $match[1] .']', $postid );
|
2985 |
-
if( ! $value || ! ( is_string( $value ) || is_numeric( $value ) ) ) $value = '';
|
2986 |
-
if( $match[1] === 'body' ) $value = wpforo_text( wpforo_kses( $value, 'email' ), $body_length, false, false, false, true, false );
|
2987 |
-
}
|
2988 |
-
}
|
2989 |
|
2990 |
-
|
2991 |
-
}, $txt );
|
2992 |
}
|
2993 |
|
2994 |
function wpforo_send_email( $email, $sbj, $msg, $headers = '' ){
|
336 |
'class' => 'wpForoWooMembers',
|
337 |
'deps' => [],
|
338 |
'title' => 'WooCommerce Memberships Integration',
|
339 |
+
'thumb' => WPFORO_URL . '/assets/addons/wpforo-woocomerce-memberships/header.png',
|
340 |
'desc' => __( 'Allows to setup membership access to your forums and topics through WooCommerce Memberships plugin.', 'wpforo' ),
|
341 |
'url' => 'https://gvectors.com/product/wpforo-woocommerce-memberships/',
|
342 |
],
|
804 |
|
805 |
function wpforo_strip_shortcodes( $text, $only_wpforo_shortcodes = false ) {
|
806 |
$text = apply_filters( 'wpforo_strip_shortcodes', $text, $only_wpforo_shortcodes );
|
807 |
+
$text = preg_replace( '#\[attach[^\[\]]*][^\[\]]*\[/attach]#iu', '', $text );
|
808 |
+
$text = preg_replace( '#\[spoiler[^\[\]]*][^\[\]]*\[/spoiler]#iu', '', $text );
|
809 |
+
$text = preg_replace( '#\[quote[^\[\]]*][^\[\]]*\[/quote]#iu', '', $text );
|
810 |
+
$text = preg_replace( '#\[wpfgiphy[^\[\]]+?]#iu', '', $text );
|
811 |
+
$text = preg_replace( '#\[wpftenor[^\[\]]+?]#iu', '', $text );
|
812 |
// $text = preg_replace('#(?:{\w+})?:[^/.\s]+:#iu', '', $text);
|
813 |
if( ! $only_wpforo_shortcodes ) $text = strip_shortcodes( $text );
|
814 |
|
816 |
}
|
817 |
|
818 |
function wpforo_strip_quotes( $text ) {
|
819 |
+
$text = preg_replace( '#<(blockquote)[^<>]*?data-userid[^<>]*?>(?:.*?(?R)*.*?)*?</\1>#isu', '', $text );
|
820 |
+
return preg_replace( '#\[(quote)[^\[\]]*?data-userid[^\[\]]*?](?:.*?(?R)*.*?)*?\[/\1]#isu', '', $text );
|
821 |
}
|
822 |
|
823 |
function wpforo_strip_urls( $text ) {
|
824 |
+
return preg_replace( '#(?:[^\'\"]|^)(https?://[^\s\'\"<>]+)(?:[^\'\"]|$)#iu', '', $text );
|
825 |
}
|
826 |
|
827 |
function wpforo_text( $text, $length = 0, $echo = true, $strip_tags = true, $strip_urls = true, $strip_shortcodes = true, $strip_quotes = true ) {
|
2143 |
}
|
2144 |
|
2145 |
function wpforo_unslashe( $data ) {
|
2146 |
+
$data = is_array( $data ) ? array_map( 'wpforo_unslashe', $data ) : stripslashes( (string) $data );
|
2147 |
|
2148 |
return $data;
|
2149 |
}
|
2721 |
|
2722 |
if( is_wpforo_url( $url ) ) {
|
2723 |
if( preg_match( '#/' . preg_quote( wpforo_settings_get_slug( 'postid' ) ) . '/(\d+)/?$#isu', strtok( $url, '?' ), $match ) ) {
|
2724 |
+
$url = WPF()->post->get_url( $match[1] );
|
2725 |
}
|
2726 |
if( preg_match( '#^[\r\n\t\s]*https?://[^\r\n\t\s]+?/[^/]+?/([^/]+?)(?:/' . wpforo_settings_get_slug( 'paged' ) . '/\d+/?)?(?:/?\#post-\d+)?/?[\r\n\t\s]*$#isu', $url, $match ) ) {
|
2727 |
return $match[1];
|
2803 |
}
|
2804 |
|
2805 |
function wpforo_get_redirect_to() {
|
2806 |
+
if( ! ( ( $redirect_to = urldecode( (string) wpfval( $_GET, 'redirect_to' ) ) ) && wpforo_is_url_internal( $redirect_to ) ) ) {
|
2807 |
$redirect_to = preg_replace( '#/?\?.*$#isu', '', wpforo_get_request_uri() );
|
2808 |
}
|
2809 |
|
2918 |
return null;
|
2919 |
}
|
2920 |
|
2921 |
+
function _wpforo_apply_email_shortcodes( $txt, $args ){
|
2922 |
+
$forumid = (int) wpfval( $args, 'forumid' );
|
2923 |
+
$topicid = wpforo_bigintval( wpfval( $args, 'topicid' ) );
|
2924 |
+
$postid = wpforo_bigintval( wpfval( $args, 'postid' ) );
|
2925 |
+
$user = (array) wpfval( $args, 'user' );
|
2926 |
+
$owner = (array) wpfval( $args, 'owner' );
|
2927 |
+
$unsubscribe_link = (string) wpfval( $args, 'unsubscribe_link' );
|
2928 |
+
|
2929 |
+
return preg_replace_callback( '#\[[^\[\]]+?]#iu', function ( $match ) use ( $forumid, $topicid, $postid, $user, $owner, $unsubscribe_link ) {
|
2930 |
+
$body_length = apply_filters( 'wpforo_email_notification_post_body_length', 1000 );
|
2931 |
+
$value = '';
|
2932 |
+
$shortcode = $match[0];
|
2933 |
+
|
2934 |
+
if ( $shortcode === '[unsubscribe_link]' ) {
|
2935 |
+
if ( $unsubscribe_link ) {
|
2936 |
+
$value = sprintf( '<br><a target="_blank" href="%1$s">%2$s</a>', esc_url( $unsubscribe_link ), wpforo_phrase( 'Unsubscribe', false ) );
|
2937 |
+
$value = stripslashes( $value );
|
2938 |
+
}
|
2939 |
+
} elseif ( strpos( $shortcode, '[user_' ) === 0 ) {
|
2940 |
+
if ( wpforo_bigintval( wpfval( $user, 'userid' ) ) ) {
|
2941 |
+
$value = wpforo_user_field_shortcode_to_value( $shortcode, $user['userid'] );
|
2942 |
+
if ( ! $value || ! ( is_string( $value ) || is_numeric( $value ) ) ) {
|
2943 |
+
$value = '';
|
2944 |
+
}
|
2945 |
+
} else {
|
2946 |
+
if ( $shortcode === '[user_display_name]' ) {
|
2947 |
+
$value = wpfval( $user, 'display_name' ) ?: wpforo_phrase( 'Anonymous', false );
|
2948 |
+
} elseif ( $shortcode === '[user_user_email]' ) {
|
2949 |
+
$value = (string) wpfval( $user, 'user_email' );
|
2950 |
+
}
|
2951 |
+
}
|
2952 |
+
} elseif ( strpos( $shortcode, '[owner_' ) === 0 ) {
|
2953 |
+
if ( wpforo_bigintval( wpfval( $owner, 'userid' ) ) ) {
|
2954 |
+
$value = wpforo_user_field_shortcode_to_value( $shortcode, $owner['userid'] );
|
2955 |
+
if ( ! $value || ! ( is_string( $value ) || is_numeric( $value ) ) ) {
|
2956 |
+
$value = '';
|
2957 |
+
}
|
2958 |
+
} else {
|
2959 |
+
if ( $shortcode === '[owner_display_name]' ) {
|
2960 |
+
$value = wpfval( $owner, 'display_name' ) ?: wpforo_phrase( 'Anonymous', false );
|
2961 |
+
} elseif ( $shortcode === '[owner_user_email]' ) {
|
2962 |
+
$value = (string) wpfval( $owner, 'user_email' );
|
2963 |
+
}
|
2964 |
+
}
|
2965 |
+
} elseif ( strpos( $shortcode, '[forum_' ) === 0 ) {
|
2966 |
+
if ( $forumid ) {
|
2967 |
+
$value = wpforo_forum_field_shortcode_to_value( $shortcode, $forumid );
|
2968 |
+
if ( ! $value || ! ( is_string( $value ) || is_numeric( $value ) ) ) {
|
2969 |
+
$value = '';
|
2970 |
+
}
|
2971 |
+
}
|
2972 |
+
} elseif ( strpos( $shortcode, '[topic_' ) === 0 ) {
|
2973 |
+
if ( $topicid ) {
|
2974 |
+
$value = wpforo_topic_field_shortcode_to_value( $shortcode, $topicid );
|
2975 |
+
if ( ! $value || ! ( is_string( $value ) || is_numeric( $value ) ) ) {
|
2976 |
+
$value = '';
|
2977 |
+
}elseif ( $shortcode === '[topic_body]' ) {
|
2978 |
+
$value = wpforo_text( wpforo_kses( $value, 'email' ), $body_length, false, false, false, true, false );
|
2979 |
+
}
|
2980 |
+
}
|
2981 |
+
} elseif ( strpos( $shortcode, '[post_' ) === 0 ) {
|
2982 |
+
if ( $postid ) {
|
2983 |
+
$value = wpforo_post_field_shortcode_to_value( $shortcode, $postid );
|
2984 |
+
if ( ! $value || ! ( is_string( $value ) || is_numeric( $value ) ) ) {
|
2985 |
+
$value = '';
|
2986 |
+
}elseif ( $shortcode === '[post_body]' ) {
|
2987 |
+
$value = wpforo_text( wpforo_kses( $value, 'email' ), $body_length, false, false, false, true, false );
|
2988 |
+
}
|
2989 |
+
}
|
2990 |
+
}
|
2991 |
+
|
2992 |
+
return $value;
|
2993 |
+
}, $txt );
|
2994 |
+
}
|
2995 |
+
|
2996 |
+
function wpforo_apply_email_shortcodes( $txt, $pitem, $item, $owner, $user, $unsubscribe_link ) {
|
2997 |
+
$forumid = ( intval( wpfval( $pitem, 'forumid' ) ) ?: intval( wpfval( $item, 'forumid' ) ) );
|
2998 |
$topicid = ( wpforo_bigintval( wpfval( $pitem, 'topicid' ) ) ?: wpforo_bigintval( wpfval( $item, 'topicid' ) ) );
|
2999 |
+
$postid = ( wpforo_bigintval( wpfval( $item, 'postid' ) ) ?: wpforo_bigintval( wpfval( $item, 'first_postid' ) ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3000 |
|
3001 |
+
return _wpforo_apply_email_shortcodes( $txt, compact('forumid', 'topicid', 'postid', 'owner', 'user', 'unsubscribe_link') );
|
|
|
3002 |
}
|
3003 |
|
3004 |
function wpforo_send_email( $email, $sbj, $msg, $headers = '' ){
|
includes/hooks.php
CHANGED
@@ -189,17 +189,24 @@ add_filter( 'pre_update_option', function( $value, $option, $old_value ) {
|
|
189 |
return $value;
|
190 |
}, 10, 3 );*/
|
191 |
|
192 |
-
function
|
193 |
-
$
|
194 |
if( $filename ) {
|
195 |
-
$
|
196 |
-
$
|
197 |
-
|
198 |
-
|
199 |
-
|
|
|
200 |
|
201 |
-
|
|
|
|
|
|
|
|
|
202 |
}
|
|
|
|
|
203 |
}
|
204 |
|
205 |
add_shortcode( 'wpforo', function ( $atts ) {
|
@@ -266,8 +273,10 @@ add_filter( 'rewrite_rules_array', function( $rules ) {
|
|
266 |
if( function_exists('pll_languages_list') ) $rewrite_prefix = '(?:(' . implode('|', pll_languages_list()) . ')/)?';
|
267 |
|
268 |
if( ! WPF()->board->get_current( 'is_standalone' ) ) {
|
|
|
269 |
$boards = WPF()->board->get_boards( [ 'status' => true ] );
|
270 |
foreach( $boards as $board ) {
|
|
|
271 |
$route = urldecode( $board['slug'] );
|
272 |
$route = preg_replace( '#^/?index\.php/?#isu', '', $route );
|
273 |
$route = trim( $route, '/' );
|
@@ -276,7 +285,7 @@ add_filter( 'rewrite_rules_array', function( $rules ) {
|
|
276 |
if( ! array_key_exists( $pattern, $rules ) ) $rules = array_merge( [ $pattern => $to_url ], $rules );
|
277 |
}
|
278 |
|
279 |
-
$pageid = wpforo_get_option( 'wpforo_pageid', 0 );
|
280 |
foreach( WPF()->board->routes as $route ) {
|
281 |
// $route = utf8_uri_encode( urldecode( $route ) );
|
282 |
$route = urldecode( $route );
|
@@ -602,8 +611,7 @@ function wpf_quote() {
|
|
602 |
return;
|
603 |
}
|
604 |
$post = apply_filters( 'wpforo_quote_post_ajax', $post );
|
605 |
-
|
606 |
-
$response = '<blockquote data-userid="' . $post['userid'] . '" data-postid="' . $post['postid'] . '" data-mention="' . esc_attr( ( wpforo_setting( 'profiles', 'mention_nicknames' ) ? $poster['user_nicename'] : '' ) ) . '"><div class="wpforo-post-quote-author"><strong> ' . wpforo_phrase( 'Posted by', false ) . ': ' . esc_textarea( '@' . $poster['user_nicename'] ) . ' </strong></div>' . wpautop( $post['body'] ) . '</blockquote><br />';
|
607 |
wp_send_json_success( $response );
|
608 |
}
|
609 |
|
@@ -621,11 +629,11 @@ function wpf_report() {
|
|
621 |
}
|
622 |
|
623 |
############### Sending Email ##################
|
624 |
-
$report_text = substr( $_POST['reportmsg'], 0, 1000 );
|
625 |
$postid = intval( $_POST['postid'] );
|
626 |
$reporter = '<a href="' . WPF()->current_user['profile_url'] . '">' . ( WPF()->current_user['display_name'] ? WPF()->current_user['display_name'] : urldecode( WPF()->current_user['user_nicename'] ) ) . '</a>';
|
627 |
$reportmsg = wpforo_kses( $report_text, 'email' );
|
628 |
-
$post_url = WPF()->post->
|
629 |
|
630 |
$subject = wpforo_setting( 'email', 'report_email_subject' );
|
631 |
$message = wpforo_setting( 'email', 'report_email_message' );
|
@@ -997,7 +1005,7 @@ function wpforo_post_url_fixer() {
|
|
997 |
}
|
998 |
set_transient( 'wpforo_post_url_fixer' . $referer_hash, $nowtime, 1000 );
|
999 |
if( $post = WPF()->post->get_post( $postid ) ) {
|
1000 |
-
echo WPF()->post->
|
1001 |
}
|
1002 |
}
|
1003 |
}
|
@@ -1160,10 +1168,10 @@ function wpforo_frontend_register_scripts() {
|
|
1160 |
'suggest',
|
1161 |
'wpforo-frontend-js',
|
1162 |
], WPFORO_VERSION, true );
|
1163 |
-
wp_register_style( 'wpforo-style',
|
1164 |
-
wp_register_style( 'wpforo-style-rtl',
|
1165 |
-
wp_register_style( 'wpforo-widgets',
|
1166 |
-
wp_register_style( 'wpforo-widgets-rtl',
|
1167 |
wp_register_script( 'wpforo-widgets-js', WPFORO_URL . '/assets/js/widgets.js', [ 'jquery' ], WPFORO_VERSION, true );
|
1168 |
$wpforo_widgets = [
|
1169 |
'ajax_url' => wpforo_get_ajax_url(),
|
@@ -1265,6 +1273,7 @@ function wpforo_admin_enqueue() {
|
|
1265 |
'pick' => __( 'Select Color' ),
|
1266 |
] );
|
1267 |
wp_register_script( 'wpforo-contenthover-addons', WPFORO_URL . '/admin/assets/js/contenthover/jquery.contenthover.min.js', [ 'jquery' ], WPFORO_VERSION, false );
|
|
|
1268 |
wp_register_script( 'wpforo-backend-js', WPFORO_URL . '/admin/assets/js/backend.js', [ 'jquery' ], WPFORO_VERSION, false );
|
1269 |
wp_localize_script( 'wpforo-backend-js', 'wpforo_admin', [
|
1270 |
'phrases' => [
|
@@ -1347,6 +1356,10 @@ function wpforo_admin_enqueue() {
|
|
1347 |
if( ( 'user-edit' === $screen->id || 'profile' === $screen->id ) ) {
|
1348 |
wp_enqueue_style( 'wpforo-font-awesome' );
|
1349 |
}
|
|
|
|
|
|
|
|
|
1350 |
}
|
1351 |
|
1352 |
add_action( 'admin_enqueue_scripts', 'wpforo_admin_enqueue' );
|
@@ -1886,7 +1899,7 @@ add_filter( 'wpforo_body_text_filter', function( $text ) {
|
|
1886 |
|
1887 |
add_action( 'wp_footer', function() { WPF()->cache->create(); } );
|
1888 |
|
1889 |
-
add_filter( 'retrieve_password_message', function( $message, $key, $user_login
|
1890 |
$reset_password_url = '';
|
1891 |
if( preg_match( wpforo_get_wprp_url_pattern(), $message, $match ) ) {
|
1892 |
if( wpforo_setting( 'authorization', 'use_our_lostpassword_url' ) ) {
|
@@ -1903,16 +1916,17 @@ add_filter( 'retrieve_password_message', function( $message, $key, $user_login =
|
|
1903 |
[ $user_login, $reset_password_url, ],
|
1904 |
wpforo_setting( 'email', 'reset_password_email_message' )
|
1905 |
);
|
|
|
1906 |
add_filter( 'wp_mail_content_type', '__wpforo_set_html_content_type', 999 );
|
1907 |
}
|
1908 |
|
1909 |
return $message;
|
1910 |
-
}, 999,
|
1911 |
|
1912 |
function wpforo_user_field_shortcode_to_value( $shortcode, $userid = null ) {
|
1913 |
$value = null;
|
1914 |
|
1915 |
-
if( $shortcode && ($field = preg_replace( '#^\s*\[?\s*(?:fields_)?([^\[\]]+?)\s*]?\s*$#iu', '$1', $shortcode )) ) {
|
1916 |
if( ! $userid ) $userid = WPF()->current_userid;
|
1917 |
$value = wpforo_member( $userid, $field );
|
1918 |
}
|
@@ -1923,9 +1937,16 @@ function wpforo_user_field_shortcode_to_value( $shortcode, $userid = null ) {
|
|
1923 |
function wpforo_forum_field_shortcode_to_value( $shortcode, $forumid ) {
|
1924 |
$value = null;
|
1925 |
|
1926 |
-
if( $
|
1927 |
-
|
1928 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1929 |
|
1930 |
return $value;
|
1931 |
}
|
@@ -1933,9 +1954,16 @@ function wpforo_forum_field_shortcode_to_value( $shortcode, $forumid ) {
|
|
1933 |
function wpforo_topic_field_shortcode_to_value( $shortcode, $topicid ) {
|
1934 |
$value = null;
|
1935 |
|
1936 |
-
|
1937 |
-
|
1938 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1939 |
|
1940 |
return $value;
|
1941 |
}
|
@@ -1943,9 +1971,16 @@ function wpforo_topic_field_shortcode_to_value( $shortcode, $topicid ) {
|
|
1943 |
function wpforo_post_field_shortcode_to_value( $shortcode, $postid ) {
|
1944 |
$value = null;
|
1945 |
|
1946 |
-
|
1947 |
-
|
1948 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1949 |
|
1950 |
return $value;
|
1951 |
}
|
189 |
return $value;
|
190 |
}, 10, 3 );*/
|
191 |
|
192 |
+
function wpftpl_url( $filename ) {
|
193 |
+
$tpl_url = '';
|
194 |
if( $filename ) {
|
195 |
+
if( $tpl_url = locate_template( 'wpforo/' . $filename ) ) $tpl_url = get_template_directory_uri() . '/wpforo/' . $filename;
|
196 |
+
if( ! $tpl_url ) $tpl_url = WPF()->tpl->template_url . '/' . $filename;
|
197 |
+
}
|
198 |
+
|
199 |
+
return apply_filters( 'wpforo_wpftpl_url', $tpl_url, $filename );
|
200 |
+
}
|
201 |
|
202 |
+
function wpftpl( $filename ) {
|
203 |
+
$tpl = '';
|
204 |
+
if( $filename ) {
|
205 |
+
$tpl = locate_template( 'wpforo/' . $filename );
|
206 |
+
if( ! $tpl ) $tpl = WPF()->tpl->template_dir . '/' . $filename;
|
207 |
}
|
208 |
+
|
209 |
+
return apply_filters( 'wpforo_wpftpl', $tpl, $filename );
|
210 |
}
|
211 |
|
212 |
add_shortcode( 'wpforo', function ( $atts ) {
|
273 |
if( function_exists('pll_languages_list') ) $rewrite_prefix = '(?:(' . implode('|', pll_languages_list()) . ')/)?';
|
274 |
|
275 |
if( ! WPF()->board->get_current( 'is_standalone' ) ) {
|
276 |
+
$pageid = 0;
|
277 |
$boards = WPF()->board->get_boards( [ 'status' => true ] );
|
278 |
foreach( $boards as $board ) {
|
279 |
+
if( $board['boardid'] === 0 ) $pageid = $board['pageid'];
|
280 |
$route = urldecode( $board['slug'] );
|
281 |
$route = preg_replace( '#^/?index\.php/?#isu', '', $route );
|
282 |
$route = trim( $route, '/' );
|
285 |
if( ! array_key_exists( $pattern, $rules ) ) $rules = array_merge( [ $pattern => $to_url ], $rules );
|
286 |
}
|
287 |
|
288 |
+
if( ! $pageid ) $pageid = wpforo_get_option( 'wpforo_pageid', 0 );
|
289 |
foreach( WPF()->board->routes as $route ) {
|
290 |
// $route = utf8_uri_encode( urldecode( $route ) );
|
291 |
$route = urldecode( $route );
|
611 |
return;
|
612 |
}
|
613 |
$post = apply_filters( 'wpforo_quote_post_ajax', $post );
|
614 |
+
$response = sprintf( '[quote data-userid="%1$d" data-postid="%2$d"]%3$s[/quote]<p></p>', $post['userid'], $post['postid'], wpautop( $post['body'] ) );
|
|
|
615 |
wp_send_json_success( $response );
|
616 |
}
|
617 |
|
629 |
}
|
630 |
|
631 |
############### Sending Email ##################
|
632 |
+
$report_text = substr( strip_tags( $_POST['reportmsg'] ), 0, 1000 );
|
633 |
$postid = intval( $_POST['postid'] );
|
634 |
$reporter = '<a href="' . WPF()->current_user['profile_url'] . '">' . ( WPF()->current_user['display_name'] ? WPF()->current_user['display_name'] : urldecode( WPF()->current_user['user_nicename'] ) ) . '</a>';
|
635 |
$reportmsg = wpforo_kses( $report_text, 'email' );
|
636 |
+
$post_url = WPF()->post->get_url( $postid );
|
637 |
|
638 |
$subject = wpforo_setting( 'email', 'report_email_subject' );
|
639 |
$message = wpforo_setting( 'email', 'report_email_message' );
|
1005 |
}
|
1006 |
set_transient( 'wpforo_post_url_fixer' . $referer_hash, $nowtime, 1000 );
|
1007 |
if( $post = WPF()->post->get_post( $postid ) ) {
|
1008 |
+
echo WPF()->post->get_url( $post );
|
1009 |
}
|
1010 |
}
|
1011 |
}
|
1168 |
'suggest',
|
1169 |
'wpforo-frontend-js',
|
1170 |
], WPFORO_VERSION, true );
|
1171 |
+
wp_register_style( 'wpforo-style', wpftpl_url( 'style.css' ), false, WPFORO_VERSION );
|
1172 |
+
wp_register_style( 'wpforo-style-rtl', wpftpl_url( 'style-rtl.css' ), false, WPFORO_VERSION );
|
1173 |
+
wp_register_style( 'wpforo-widgets', wpftpl_url( 'widgets.css' ), [], WPFORO_VERSION );
|
1174 |
+
wp_register_style( 'wpforo-widgets-rtl', wpftpl_url( 'widgets-rtl.css' ), [], WPFORO_VERSION );
|
1175 |
wp_register_script( 'wpforo-widgets-js', WPFORO_URL . '/assets/js/widgets.js', [ 'jquery' ], WPFORO_VERSION, true );
|
1176 |
$wpforo_widgets = [
|
1177 |
'ajax_url' => wpforo_get_ajax_url(),
|
1273 |
'pick' => __( 'Select Color' ),
|
1274 |
] );
|
1275 |
wp_register_script( 'wpforo-contenthover-addons', WPFORO_URL . '/admin/assets/js/contenthover/jquery.contenthover.min.js', [ 'jquery' ], WPFORO_VERSION, false );
|
1276 |
+
wp_register_script( 'wpforo-backend-widgets-js', WPFORO_URL . '/admin/assets/js/widgets.js', [ 'jquery' ], WPFORO_VERSION, true );
|
1277 |
wp_register_script( 'wpforo-backend-js', WPFORO_URL . '/admin/assets/js/backend.js', [ 'jquery' ], WPFORO_VERSION, false );
|
1278 |
wp_localize_script( 'wpforo-backend-js', 'wpforo_admin', [
|
1279 |
'phrases' => [
|
1356 |
if( ( 'user-edit' === $screen->id || 'profile' === $screen->id ) ) {
|
1357 |
wp_enqueue_style( 'wpforo-font-awesome' );
|
1358 |
}
|
1359 |
+
|
1360 |
+
if( $screen->id === 'widgets' ){
|
1361 |
+
wp_enqueue_script( 'wpforo-backend-widgets-js' );
|
1362 |
+
}
|
1363 |
}
|
1364 |
|
1365 |
add_action( 'admin_enqueue_scripts', 'wpforo_admin_enqueue' );
|
1899 |
|
1900 |
add_action( 'wp_footer', function() { WPF()->cache->create(); } );
|
1901 |
|
1902 |
+
add_filter( 'retrieve_password_message', function( $message, $key, $user_login, $user_data ) {
|
1903 |
$reset_password_url = '';
|
1904 |
if( preg_match( wpforo_get_wprp_url_pattern(), $message, $match ) ) {
|
1905 |
if( wpforo_setting( 'authorization', 'use_our_lostpassword_url' ) ) {
|
1916 |
[ $user_login, $reset_password_url, ],
|
1917 |
wpforo_setting( 'email', 'reset_password_email_message' )
|
1918 |
);
|
1919 |
+
$message = _wpforo_apply_email_shortcodes( $message, [ 'user' => [ 'userid' => $user_data->ID ] ] );
|
1920 |
add_filter( 'wp_mail_content_type', '__wpforo_set_html_content_type', 999 );
|
1921 |
}
|
1922 |
|
1923 |
return $message;
|
1924 |
+
}, 999, 4 );
|
1925 |
|
1926 |
function wpforo_user_field_shortcode_to_value( $shortcode, $userid = null ) {
|
1927 |
$value = null;
|
1928 |
|
1929 |
+
if( $shortcode && ($field = preg_replace( '#^\s*\[?\s*(?:user_|owner_)?(?:fields_)?([^\[\]]+?)\s*]?\s*$#iu', '$1', $shortcode )) ) {
|
1930 |
if( ! $userid ) $userid = WPF()->current_userid;
|
1931 |
$value = wpforo_member( $userid, $field );
|
1932 |
}
|
1937 |
function wpforo_forum_field_shortcode_to_value( $shortcode, $forumid ) {
|
1938 |
$value = null;
|
1939 |
|
1940 |
+
if( $forumid ){
|
1941 |
+
if( $shortcode && ($field = preg_replace( '#^\s*\[?\s*(?:forum_)?(?:fields_)?([^\[\]]+?)\s*]?\s*$#iu', '$1', $shortcode )) ) {
|
1942 |
+
if( $field === 'link' ){
|
1943 |
+
$value = sprintf( '<a target="_blank" href="%1$s">%2$s</a>', esc_url( wpforo_forum( $forumid, 'url' ) ), sanitize_text_field( wpforo_forum( $forumid, 'title' ) ) );
|
1944 |
+
$value = stripslashes( $value );
|
1945 |
+
}else{
|
1946 |
+
$value = wpforo_forum( $forumid, $field );
|
1947 |
+
}
|
1948 |
+
}
|
1949 |
+
}
|
1950 |
|
1951 |
return $value;
|
1952 |
}
|
1954 |
function wpforo_topic_field_shortcode_to_value( $shortcode, $topicid ) {
|
1955 |
$value = null;
|
1956 |
|
1957 |
+
if( $topicid ){
|
1958 |
+
if( $shortcode && ($field = preg_replace( '#^\s*\[?\s*(?:topic_)?(?:fields_)?([^\[\]]+?)\s*]?\s*$#iu', '$1', $shortcode )) ) {
|
1959 |
+
if( $field === 'link' ){
|
1960 |
+
$value = sprintf( '<a target="_blank" href="%1$s">%2$s</a>', esc_url( wpforo_topic( $topicid, 'url' ) ), sanitize_text_field( wpforo_topic( $topicid, 'title' ) ) );
|
1961 |
+
$value = stripslashes( $value );
|
1962 |
+
}else{
|
1963 |
+
$value = wpforo_topic( $topicid, $field );
|
1964 |
+
}
|
1965 |
+
}
|
1966 |
+
}
|
1967 |
|
1968 |
return $value;
|
1969 |
}
|
1971 |
function wpforo_post_field_shortcode_to_value( $shortcode, $postid ) {
|
1972 |
$value = null;
|
1973 |
|
1974 |
+
if($postid ){
|
1975 |
+
if( $shortcode && ($field = preg_replace( '#^\s*\[?\s*(?:post_)?(?:fields_)?([^\[\]]+?)\s*]?\s*$#iu', '$1', $shortcode )) ) {
|
1976 |
+
if( $field === 'link' ){
|
1977 |
+
$value = sprintf( '<a target="_blank" href="%1$s">%2$s</a>', esc_url( wpforo_post( $postid, 'url' ) ), sanitize_text_field( wpforo_post( $postid, 'title' ) ) );
|
1978 |
+
$value = stripslashes( $value );
|
1979 |
+
}else{
|
1980 |
+
$value = wpforo_post( $postid, $field );
|
1981 |
+
}
|
1982 |
+
}
|
1983 |
+
}
|
1984 |
|
1985 |
return $value;
|
1986 |
}
|
includes/install-sql.php
CHANGED
@@ -160,7 +160,7 @@ if( ! function_exists( 'wpforo_get_install_sqls' ) ) {
|
|
160 |
KEY `forumid_answer_first` (`forumid`, `is_answer`, `is_first_post`)
|
161 |
) ENGINE=$engine $charset_collate",
|
162 |
WPF()->tables->profiles => "CREATE TABLE IF NOT EXISTS `" . WPF()->tables->profiles . "` (
|
163 |
-
`userid`
|
164 |
`title` VARCHAR(255) NOT NULL DEFAULT 'member',
|
165 |
`groupid` INT UNSIGNED NOT NULL,
|
166 |
`secondary_groupids` VARCHAR(255) NOT NULL DEFAULT '',
|
160 |
KEY `forumid_answer_first` (`forumid`, `is_answer`, `is_first_post`)
|
161 |
) ENGINE=$engine $charset_collate",
|
162 |
WPF()->tables->profiles => "CREATE TABLE IF NOT EXISTS `" . WPF()->tables->profiles . "` (
|
163 |
+
`userid` BIGINT UNSIGNED NOT NULL,
|
164 |
`title` VARCHAR(255) NOT NULL DEFAULT 'member',
|
165 |
`groupid` INT UNSIGNED NOT NULL,
|
166 |
`secondary_groupids` VARCHAR(255) NOT NULL DEFAULT '',
|
includes/installation.php
CHANGED
@@ -1483,6 +1483,7 @@ function wpforo_database_fixer( $problems ) {
|
|
1483 |
$board['settings']['title'] = ( wpfval($_general, 'title') ) ? : 'Forum';
|
1484 |
$board['settings']['desc'] = ( wpfval($_general, 'description') ) ? : 'Discussion Board';
|
1485 |
$settings = json_encode($board['settings']);
|
|
|
1486 |
$slug = basename( trim( wpforo_get_option( 'wpforo_permastruct', 'community', false ), '/' ) );
|
1487 |
$board['slug'] = ( $slug ) ? : 'community';
|
1488 |
$board['locale'] = wpforo_get_site_default_locale();
|
1483 |
$board['settings']['title'] = ( wpfval($_general, 'title') ) ? : 'Forum';
|
1484 |
$board['settings']['desc'] = ( wpfval($_general, 'description') ) ? : 'Discussion Board';
|
1485 |
$settings = json_encode($board['settings']);
|
1486 |
+
WPF()->db->query("UPDATE `" . WPF()->tables->boards . "` SET `slug` = CONCAT('community-', `boardid`) WHERE `slug` = 'community' AND `boardid` != 0");
|
1487 |
$slug = basename( trim( wpforo_get_option( 'wpforo_permastruct', 'community', false ), '/' ) );
|
1488 |
$board['slug'] = ( $slug ) ? : 'community';
|
1489 |
$board['locale'] = wpforo_get_site_default_locale();
|
integrations/UltimateMember.php
CHANGED
@@ -15,7 +15,6 @@ class UltimateMember {
|
|
15 |
$this->um_init();
|
16 |
if( wpforo_setting( 'um', 'forum_tab' ) ) {
|
17 |
add_filter( 'um_profile_tabs', [ $this, 'um_tabs' ], 999 );
|
18 |
-
add_filter( 'um_user_profile_tabs', [ $this, 'um_tabs' ], 998 );
|
19 |
add_filter( 'um_user_profile_tabs', [ $this, 'um_user_tabs' ], 999 );
|
20 |
add_action( 'um_profile_content_foro_default', [ $this, 'um_default_tab_content' ] );
|
21 |
add_action( 'um_profile_content_foro_topics', [ $this, 'um_user_topics' ] );
|
@@ -496,7 +495,7 @@ class UltimateMember {
|
|
496 |
function um_notification_on_post_status_change( $post, $status = 0 ) {
|
497 |
if( ! $post || ! wpforo_setting( 'um', 'notification' ) ) return;
|
498 |
$post['status'] = $status = intval($status);
|
499 |
-
$post['posturl'] = WPF()->post->
|
500 |
if( ($topic = WPF()->topic->get_topic( wpfval( $post, 'topicid' ) )) && ! $status ){
|
501 |
$this->um_add_notification( $post, $topic );
|
502 |
}
|
15 |
$this->um_init();
|
16 |
if( wpforo_setting( 'um', 'forum_tab' ) ) {
|
17 |
add_filter( 'um_profile_tabs', [ $this, 'um_tabs' ], 999 );
|
|
|
18 |
add_filter( 'um_user_profile_tabs', [ $this, 'um_user_tabs' ], 999 );
|
19 |
add_action( 'um_profile_content_foro_default', [ $this, 'um_default_tab_content' ] );
|
20 |
add_action( 'um_profile_content_foro_topics', [ $this, 'um_user_topics' ] );
|
495 |
function um_notification_on_post_status_change( $post, $status = 0 ) {
|
496 |
if( ! $post || ! wpforo_setting( 'um', 'notification' ) ) return;
|
497 |
$post['status'] = $status = intval($status);
|
498 |
+
$post['posturl'] = WPF()->post->get_url( $post['postid'] );
|
499 |
if( ($topic = WPF()->topic->get_topic( wpfval( $post, 'topicid' ) )) && ! $status ){
|
500 |
$this->um_add_notification( $post, $topic );
|
501 |
}
|
languages/wpforo.pot
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
msgid ""
|
5 |
msgstr ""
|
6 |
"Project-Id-Version: Forum - wpForo\n"
|
7 |
-
"POT-Creation-Date: 2022-09
|
8 |
"PO-Revision-Date: 2016-06-28 21:09+0400\n"
|
9 |
"Last-Translator: \n"
|
10 |
"Language-Team: \n"
|
@@ -123,7 +123,7 @@ msgstr ""
|
|
123 |
msgid "Other"
|
124 |
msgstr ""
|
125 |
|
126 |
-
#: admin/includes/deactivation-dialog.php:142 includes/hooks.php:
|
127 |
msgid "Please provide more information"
|
128 |
msgstr ""
|
129 |
|
@@ -148,63 +148,63 @@ msgid "Overview"
|
|
148 |
msgstr ""
|
149 |
|
150 |
#: admin/index.php:54 admin/index.php:201 admin/pages/dashboard.php:25
|
151 |
-
#: admin/tools-tabs/misc.php:67 includes/hooks.php:
|
152 |
#: includes/phrases.php:309 integrations/BuddyPress.php:12
|
153 |
#: integrations/BuddyPress.php:44 integrations/BuddyPress.php:117
|
154 |
-
#: widgets/Forums.php:
|
155 |
msgid "Forums"
|
156 |
msgstr ""
|
157 |
|
158 |
#: admin/index.php:59 admin/index.php:151 admin/index.php:206
|
159 |
-
#: admin/pages/settings.php:163 includes/hooks.php:
|
160 |
-
#: includes/hooks.php:
|
161 |
msgid "Settings"
|
162 |
msgstr ""
|
163 |
|
164 |
-
#: admin/index.php:64 admin/index.php:211 includes/hooks.php:
|
165 |
-
#: includes/hooks.php:
|
166 |
msgid "Moderation"
|
167 |
msgstr ""
|
168 |
|
169 |
-
#: admin/index.php:69 admin/index.php:216 includes/hooks.php:
|
170 |
-
#: includes/hooks.php:
|
171 |
msgid "Phrases"
|
172 |
msgstr ""
|
173 |
|
174 |
-
#: admin/index.php:74 admin/index.php:221 includes/hooks.php:
|
175 |
-
#: includes/hooks.php:
|
176 |
msgid "Tools"
|
177 |
msgstr ""
|
178 |
|
179 |
#: admin/index.php:82 admin/index.php:136 admin/pages/board.php:16
|
180 |
-
#: includes/hooks.php:10 includes/hooks.php:
|
181 |
msgid "Boards"
|
182 |
msgstr ""
|
183 |
|
184 |
-
#: admin/index.php:86 admin/index.php:140 includes/hooks.php:
|
185 |
-
#: includes/hooks.php:
|
186 |
msgid "Accesses"
|
187 |
msgstr ""
|
188 |
|
189 |
#: admin/index.php:90 admin/index.php:144 admin/pages/usergroup.php:12
|
190 |
-
#: admin/pages/usergroup.php:160 includes/hooks.php:
|
191 |
msgid "Usergroups"
|
192 |
msgstr ""
|
193 |
|
194 |
#: admin/index.php:93 admin/index.php:147 admin/pages/dashboard.php:37
|
195 |
#: admin/pages/member.php:10 admin/pages/usergroup.php:37
|
196 |
-
#: admin/tools-tabs/misc.php:87 includes/hooks.php:
|
197 |
#: includes/phrases.php:364
|
198 |
msgid "Members"
|
199 |
msgstr ""
|
200 |
|
201 |
-
#: admin/index.php:97 admin/index.php:156 includes/hooks.php:
|
202 |
-
#: includes/hooks.php:
|
203 |
msgid "Themes"
|
204 |
msgstr ""
|
205 |
|
206 |
#: admin/index.php:102 admin/index.php:161 admin/pages/board.php:116
|
207 |
-
#: admin/pages/settings.php:22 includes/hooks.php:
|
208 |
#: includes/phrases.php:211
|
209 |
msgid "Addons"
|
210 |
msgstr ""
|
@@ -243,7 +243,7 @@ msgid "Edit"
|
|
243 |
msgstr ""
|
244 |
|
245 |
#: admin/listtables/Boards.php:86 admin/listtables/Moderations.php:94
|
246 |
-
#: admin/pages/forum.php:273 admin/pages/usergroup.php:78 classes/Forums.php:
|
247 |
#: includes/phrases.php:541
|
248 |
msgid "View"
|
249 |
msgstr ""
|
@@ -256,12 +256,12 @@ msgstr ""
|
|
256 |
msgid "Are you sure you want to DELETE this board and his data permanently?"
|
257 |
msgstr ""
|
258 |
|
259 |
-
#: admin/listtables/Boards.php:88 admin/listtables/Members.php:
|
260 |
-
#: admin/listtables/Members.php:
|
261 |
#: admin/listtables/Moderations.php:208 admin/pages/forum.php:272
|
262 |
#: admin/pages/themes.php:68 admin/pages/usergroup.php:76
|
263 |
#: admin/pages/usergroup.php:295 admin/settings/antispam.php:64
|
264 |
-
#: includes/hooks.php:
|
265 |
msgid "Delete"
|
266 |
msgstr ""
|
267 |
|
@@ -298,102 +298,107 @@ msgstr ""
|
|
298 |
msgid "default"
|
299 |
msgstr ""
|
300 |
|
301 |
-
#: admin/listtables/Members.php:
|
302 |
msgid "Edit User"
|
303 |
msgstr ""
|
304 |
|
305 |
-
#: admin/listtables/Members.php:
|
306 |
msgid "Edit Profile"
|
307 |
msgstr ""
|
308 |
|
309 |
-
#: admin/listtables/Members.php:
|
310 |
msgid "Ban"
|
311 |
msgstr ""
|
312 |
|
313 |
-
#: admin/listtables/Members.php:
|
314 |
msgid "Are you sure, you want to BAN this user?"
|
315 |
msgstr ""
|
316 |
|
317 |
-
#: admin/listtables/Members.php:
|
318 |
msgid "Unban"
|
319 |
msgstr ""
|
320 |
|
321 |
-
#: admin/listtables/Members.php:
|
322 |
msgid "Are you sure, you want to UNBAN this user?"
|
323 |
msgstr ""
|
324 |
|
325 |
-
#: admin/listtables/Members.php:
|
326 |
#: admin/pages/themes.php:67 includes/phrases.php:203
|
327 |
msgid "Activate"
|
328 |
msgstr ""
|
329 |
|
330 |
-
#: admin/listtables/Members.php:
|
331 |
msgid "Are you sure, you want to activate this user?"
|
332 |
msgstr ""
|
333 |
|
334 |
-
#: admin/listtables/Members.php:
|
335 |
msgid "Deactivate"
|
336 |
msgstr ""
|
337 |
|
338 |
-
#: admin/listtables/Members.php:
|
339 |
msgid "Are you sure, you want to deactivate this user?"
|
340 |
msgstr ""
|
341 |
|
342 |
-
#: admin/listtables/Members.php:
|
343 |
#: admin/listtables/Phrases.php:133 admin/pages/usergroup.php:41
|
|
|
344 |
msgid "ID"
|
345 |
msgstr ""
|
346 |
|
347 |
-
#: admin/listtables/Members.php:
|
348 |
msgid "Display Name"
|
349 |
msgstr ""
|
350 |
|
351 |
-
#: admin/listtables/Members.php:
|
352 |
msgid "Login"
|
353 |
msgstr ""
|
354 |
|
355 |
-
#: admin/listtables/Members.php:
|
356 |
msgid "Email"
|
357 |
msgstr ""
|
358 |
|
359 |
-
#: admin/listtables/Members.php:
|
360 |
msgid "Group"
|
361 |
msgstr ""
|
362 |
|
363 |
-
#: admin/listtables/Members.php:
|
|
|
|
|
|
|
|
|
364 |
#: admin/pages/usergroup.php:162 includes/phrases.php:17
|
365 |
msgid "Status"
|
366 |
msgstr ""
|
367 |
|
368 |
-
#: admin/listtables/Members.php:
|
369 |
msgid "Last Login"
|
370 |
msgstr ""
|
371 |
|
372 |
-
#: admin/listtables/Members.php:
|
373 |
msgid "Forum Posts"
|
374 |
msgstr ""
|
375 |
|
376 |
-
#: admin/listtables/Members.php:
|
377 |
msgid "Blog Posts"
|
378 |
msgstr ""
|
379 |
|
380 |
-
#: admin/listtables/Members.php:
|
381 |
msgid "Blog Comments"
|
382 |
msgstr ""
|
383 |
|
384 |
-
#: admin/listtables/Members.php:
|
385 |
msgid "Change usergroup to…"
|
386 |
msgstr ""
|
387 |
|
388 |
-
#: admin/listtables/Members.php:
|
389 |
msgid "Change"
|
390 |
msgstr ""
|
391 |
|
392 |
-
#: admin/listtables/Members.php:
|
393 |
msgid "filter by group"
|
394 |
msgstr ""
|
395 |
|
396 |
-
#: admin/listtables/Members.php:
|
397 |
msgid "filter by status"
|
398 |
msgstr ""
|
399 |
|
@@ -417,9 +422,10 @@ msgstr ""
|
|
417 |
msgid "Are you sure you want to DELETE this item?"
|
418 |
msgstr ""
|
419 |
|
420 |
-
#: admin/listtables/Moderations.php:152
|
421 |
-
#:
|
422 |
-
#: widgets/
|
|
|
423 |
msgid "Title"
|
424 |
msgstr ""
|
425 |
|
@@ -492,13 +498,13 @@ msgstr ""
|
|
492 |
#: admin/pages/forum.php:238 admin/pages/forum.php:285 admin/pages/forum.php:325
|
493 |
#: admin/pages/forum.php:401 admin/pages/forum.php:409 admin/pages/phrase.php:167
|
494 |
#: admin/pages/usergroup.php:30 admin/pages/usergroup.php:36
|
495 |
-
#: admin/pages/usergroup.php:342 admin/settings/board.php:
|
496 |
#: admin/settings/general.php:24 admin/settings/styles.php:12
|
497 |
-
#: classes/Settings.php:
|
498 |
msgid "Read the documentation"
|
499 |
msgstr ""
|
500 |
|
501 |
-
#: admin/pages/accesses.php:29 includes/hooks.php:
|
502 |
#: includes/phrases.php:207
|
503 |
msgid "Add New Forum Access"
|
504 |
msgstr ""
|
@@ -525,7 +531,7 @@ msgstr ""
|
|
525 |
msgid "Admin"
|
526 |
msgstr ""
|
527 |
|
528 |
-
#: admin/pages/accesses.php:68 classes/Forums.php:
|
529 |
msgid "edit"
|
530 |
msgstr ""
|
531 |
|
@@ -535,7 +541,7 @@ msgid ""
|
|
535 |
"this access will lost all forum permissions."
|
536 |
msgstr ""
|
537 |
|
538 |
-
#: admin/pages/accesses.php:75 classes/Forums.php:
|
539 |
msgid "delete"
|
540 |
msgstr ""
|
541 |
|
@@ -697,7 +703,7 @@ msgstr ""
|
|
697 |
msgid "one URL per line"
|
698 |
msgstr ""
|
699 |
|
700 |
-
#: admin/pages/dashboard.php:7 includes/hooks.php:
|
701 |
msgid "Forum Dashboard"
|
702 |
msgstr ""
|
703 |
|
@@ -705,11 +711,11 @@ msgstr ""
|
|
705 |
msgid "Board Statistic"
|
706 |
msgstr ""
|
707 |
|
708 |
-
#: admin/pages/dashboard.php:29 classes/Forums.php:
|
709 |
msgid "Topics"
|
710 |
msgstr ""
|
711 |
|
712 |
-
#: admin/pages/dashboard.php:33 classes/Forums.php:
|
713 |
msgid "Posts"
|
714 |
msgstr ""
|
715 |
|
@@ -1014,7 +1020,7 @@ msgid ""
|
|
1014 |
msgstr ""
|
1015 |
|
1016 |
#: admin/pages/member.php:17 admin/pages/moderation.php:18
|
1017 |
-
#: admin/pages/phrase.php:142 classes/Settings.php:
|
1018 |
msgid "Filter"
|
1019 |
msgstr ""
|
1020 |
|
@@ -1292,7 +1298,7 @@ msgstr ""
|
|
1292 |
msgid "Usergroup"
|
1293 |
msgstr ""
|
1294 |
|
1295 |
-
#: admin/pages/usergroup.php:38 classes/Settings.php:
|
1296 |
msgid "Default"
|
1297 |
msgstr ""
|
1298 |
|
@@ -1304,7 +1310,7 @@ msgstr ""
|
|
1304 |
#: admin/settings/styles.php:64 admin/settings/styles.php:72
|
1305 |
#: admin/settings/styles.php:77 admin/settings/styles.php:83
|
1306 |
#: admin/settings/styles.php:93 admin/settings/styles.php:98
|
1307 |
-
#: admin/settings/styles.php:104 classes/Settings.php:
|
1308 |
#: includes/phrases.php:242
|
1309 |
msgid "Color"
|
1310 |
msgstr ""
|
@@ -1575,7 +1581,7 @@ msgstr ""
|
|
1575 |
msgid "Facebook API"
|
1576 |
msgstr ""
|
1577 |
|
1578 |
-
#: admin/settings/board.php:
|
1579 |
msgid "Permalinks"
|
1580 |
msgstr ""
|
1581 |
|
@@ -1607,6 +1613,14 @@ msgstr ""
|
|
1607 |
msgid "This message comes from Reset Password form."
|
1608 |
msgstr ""
|
1609 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1610 |
#: admin/settings/forums.php:8 admin/settings/topics.php:8
|
1611 |
msgid "Extended Forum Layout"
|
1612 |
msgstr ""
|
@@ -1674,8 +1688,8 @@ msgstr ""
|
|
1674 |
msgid "Post Content"
|
1675 |
msgstr ""
|
1676 |
|
1677 |
-
#: admin/settings/rating.php:12 classes/Settings.php:
|
1678 |
-
#: classes/Settings.php:
|
1679 |
msgid "Member Reputation and Titles"
|
1680 |
msgstr ""
|
1681 |
|
@@ -1706,7 +1720,7 @@ msgstr ""
|
|
1706 |
msgid "General Share Buttons"
|
1707 |
msgstr ""
|
1708 |
|
1709 |
-
#: admin/settings/social.php:113 classes/Settings.php:
|
1710 |
msgid "Post Sharing Toggle"
|
1711 |
msgstr ""
|
1712 |
|
@@ -1870,12 +1884,24 @@ msgid "General"
|
|
1870 |
msgstr ""
|
1871 |
|
1872 |
#: admin/settings/topics.php:68 admin/tools-tabs/cleanup.php:40
|
1873 |
-
#: classes/Settings.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
1874 |
msgid "Yes"
|
1875 |
msgstr ""
|
1876 |
|
1877 |
#: admin/settings/topics.php:69 admin/tools-tabs/cleanup.php:41
|
1878 |
-
#: classes/Settings.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
1879 |
msgid "No"
|
1880 |
msgstr ""
|
1881 |
|
@@ -2225,187 +2251,187 @@ msgstr ""
|
|
2225 |
msgid "User registration is disabled"
|
2226 |
msgstr ""
|
2227 |
|
2228 |
-
#: classes/Actions.php:
|
2229 |
msgid "Theme file not readable"
|
2230 |
msgstr ""
|
2231 |
|
2232 |
-
#: classes/Actions.php:
|
2233 |
msgid "Theme Successfully Activated"
|
2234 |
msgstr ""
|
2235 |
|
2236 |
-
#: classes/Actions.php:
|
2237 |
msgid "Theme delete error"
|
2238 |
msgstr ""
|
2239 |
|
2240 |
-
#: classes/Actions.php:
|
2241 |
msgid "Theme delete success"
|
2242 |
msgstr ""
|
2243 |
|
2244 |
-
#: classes/Cache.php:
|
2245 |
msgid "Please navigate in Dashboard to Settings > WP Super Cache"
|
2246 |
msgstr ""
|
2247 |
|
2248 |
-
#: classes/Cache.php:
|
2249 |
msgid "Go to Advanced Tab, scroll down to \"Rejected URL Strings\" option"
|
2250 |
msgstr ""
|
2251 |
|
2252 |
-
#: classes/Cache.php:
|
2253 |
msgid ""
|
2254 |
"Insert the URL path(s) of your forum page(s) one per line in the option "
|
2255 |
"textarea:"
|
2256 |
msgstr ""
|
2257 |
|
2258 |
-
#: classes/Cache.php:
|
2259 |
-
#: classes/Cache.php:
|
2260 |
msgid "Save it and delete all caches."
|
2261 |
msgstr ""
|
2262 |
|
2263 |
-
#: classes/Cache.php:
|
2264 |
msgid "Please navigate in Dashboard to LiteSpeed Cache > Cache admin page"
|
2265 |
msgstr ""
|
2266 |
|
2267 |
-
#: classes/Cache.php:
|
2268 |
msgid "Go to Exclude Tab, find the \"Do Not Cache URIs\" option"
|
2269 |
msgstr ""
|
2270 |
|
2271 |
-
#: classes/Cache.php:
|
2272 |
msgid "Please navigate in Dashboard to WP Rocket > Advanced Rules Tab"
|
2273 |
msgstr ""
|
2274 |
|
2275 |
-
#: classes/Cache.php:
|
2276 |
msgid "Scroll down to \"Never cache (URLs)\" option"
|
2277 |
msgstr ""
|
2278 |
|
2279 |
-
#: classes/Cache.php:
|
2280 |
msgid ""
|
2281 |
"Insert the URL path(s) of your forum page(s) one per line with wildcard (.*) "
|
2282 |
"in the option textarea:"
|
2283 |
msgstr ""
|
2284 |
|
2285 |
-
#: classes/Cache.php:
|
2286 |
msgid "Please navigate in Dashboard to WP Fastest Cache > Exclude Tab"
|
2287 |
msgstr ""
|
2288 |
|
2289 |
-
#: classes/Cache.php:
|
2290 |
msgid "In the \"Exclude Pages\" section click the [Add New Rule] button"
|
2291 |
msgstr ""
|
2292 |
|
2293 |
-
#: classes/Cache.php:
|
2294 |
msgid ""
|
2295 |
"Select [Start with] option in the drop-down menu and insert the URL path(s) of "
|
2296 |
"your forum page(s) one per rule in the next field:"
|
2297 |
msgstr ""
|
2298 |
|
2299 |
-
#: classes/Cache.php:
|
2300 |
msgid ""
|
2301 |
"If you have more than one forum pages (boards) you should create separate "
|
2302 |
"rules for each forum board."
|
2303 |
msgstr ""
|
2304 |
|
2305 |
-
#: classes/Cache.php:
|
2306 |
msgid "Save rules and delete all caches."
|
2307 |
msgstr ""
|
2308 |
|
2309 |
-
#: classes/Cache.php:
|
2310 |
msgid "Please navigate in Dashboard to Performance > Page Cache admin page"
|
2311 |
msgstr ""
|
2312 |
|
2313 |
-
#: classes/Cache.php:
|
2314 |
msgid "Go to Advanced Tab, scroll down to Rejected URL Strings option"
|
2315 |
msgstr ""
|
2316 |
|
2317 |
-
#: classes/Cache.php:
|
2318 |
msgid ""
|
2319 |
"Scroll to Advanced section and insert the URL path(s) of your forum page(s) "
|
2320 |
"one per line in the \"Never cache the following pages\" textarea:"
|
2321 |
msgstr ""
|
2322 |
|
2323 |
-
#: classes/Cache.php:
|
2324 |
msgid "Please navigate in Dashboard to WP-Optimize > Cache admin page"
|
2325 |
msgstr ""
|
2326 |
|
2327 |
-
#: classes/Cache.php:
|
2328 |
msgid ""
|
2329 |
"Go to Advanced Settings Tab, find the \"URLs to exclude from caching\" option"
|
2330 |
msgstr ""
|
2331 |
|
2332 |
-
#: classes/Cache.php:
|
2333 |
msgid ""
|
2334 |
"Insert the URL path(s) of your forum page(s) one per line with wildcard [*] in "
|
2335 |
"the option textarea:"
|
2336 |
msgstr ""
|
2337 |
|
2338 |
-
#: classes/Cache.php:
|
2339 |
msgid "Please navigate in Dashboard to SG Optimizer > Caching admin page"
|
2340 |
msgstr ""
|
2341 |
|
2342 |
-
#: classes/Cache.php:
|
2343 |
msgid ""
|
2344 |
"Scroll to Exclude URLs from Caching section and click the \"pencil\" button, "
|
2345 |
"enable it, and click the button again"
|
2346 |
msgstr ""
|
2347 |
|
2348 |
-
#: classes/Cache.php:
|
2349 |
msgid ""
|
2350 |
"Insert the URL path(s) of your forum page(s) with wildcard [*] in the pop-up "
|
2351 |
"filed:"
|
2352 |
msgstr ""
|
2353 |
|
2354 |
-
#: classes/Forums.php:
|
2355 |
msgid "Add a new Subforum"
|
2356 |
msgstr ""
|
2357 |
|
2358 |
-
#: classes/Forums.php:
|
2359 |
msgid "Add a new Forum in this Category"
|
2360 |
msgstr ""
|
2361 |
|
2362 |
-
#: classes/Members.php:
|
2363 |
msgid "<strong>ERROR</strong>: Please enter a username."
|
2364 |
msgstr ""
|
2365 |
|
2366 |
-
#: classes/Members.php:
|
2367 |
msgid ""
|
2368 |
"<strong>ERROR</strong>: This username is invalid because it uses illegal "
|
2369 |
"characters. Please enter a valid username."
|
2370 |
msgstr ""
|
2371 |
|
2372 |
-
#: classes/Members.php:
|
2373 |
msgid ""
|
2374 |
"<strong>ERROR</strong>: This username is already registered. Please choose "
|
2375 |
"another one."
|
2376 |
msgstr ""
|
2377 |
|
2378 |
-
#: classes/Members.php:
|
2379 |
msgid "<strong>ERROR</strong>: Sorry, that username is not allowed."
|
2380 |
msgstr ""
|
2381 |
|
2382 |
-
#: classes/Members.php:
|
2383 |
msgid "<strong>ERROR</strong>: Please type your email address."
|
2384 |
msgstr ""
|
2385 |
|
2386 |
-
#: classes/Members.php:
|
2387 |
msgid "<strong>ERROR</strong>: The email address isn’t correct."
|
2388 |
msgstr ""
|
2389 |
|
2390 |
-
#: classes/Members.php:
|
2391 |
msgid ""
|
2392 |
"<strong>ERROR</strong>: This email is already registered, please choose "
|
2393 |
"another one."
|
2394 |
msgstr ""
|
2395 |
|
2396 |
-
#: classes/Members.php:
|
2397 |
msgid "What should be done with wpForo content owned by this user?"
|
2398 |
msgstr ""
|
2399 |
|
2400 |
-
#: classes/Members.php:
|
2401 |
msgid "What should be done with wpForo content owned by these users?"
|
2402 |
msgstr ""
|
2403 |
|
2404 |
-
#: classes/Members.php:
|
2405 |
msgid "Delete all wpForo content."
|
2406 |
msgstr ""
|
2407 |
|
2408 |
-
#: classes/Members.php:
|
2409 |
msgid "Attribute all content to:"
|
2410 |
msgstr ""
|
2411 |
|
@@ -2660,11 +2686,21 @@ msgid ""
|
|
2660 |
"forum run faster."
|
2661 |
msgstr ""
|
2662 |
|
2663 |
-
#: classes/Settings.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2664 |
msgid "Display Components"
|
2665 |
msgstr ""
|
2666 |
|
2667 |
-
#: classes/Settings.php:
|
2668 |
msgid ""
|
2669 |
"wpForo is a forum plugin which is loaded in one WordPress page, so the whole "
|
2670 |
"forum with its categories, forums, topics, members and profile pages are "
|
@@ -2673,59 +2709,59 @@ msgid ""
|
|
2673 |
"settings, especially here, in the Display Components admin page."
|
2674 |
msgstr ""
|
2675 |
|
2676 |
-
#: classes/Settings.php:
|
2677 |
msgid "Frontend Admin Control Panel"
|
2678 |
msgstr ""
|
2679 |
|
2680 |
-
#: classes/Settings.php:
|
2681 |
msgid ""
|
2682 |
"This is a section with some important buttons for quick actions and accesses "
|
2683 |
"to certain admin pages. it's located in the forum home page under the forum "
|
2684 |
"list. This section is only available for website administrators."
|
2685 |
msgstr ""
|
2686 |
|
2687 |
-
#: classes/Settings.php:
|
2688 |
msgid "Show Forum Page Title"
|
2689 |
msgstr ""
|
2690 |
|
2691 |
-
#: classes/Settings.php:
|
2692 |
msgid "Show Forum Menu Bar"
|
2693 |
msgstr ""
|
2694 |
|
2695 |
-
#: classes/Settings.php:
|
2696 |
msgid ""
|
2697 |
"This menu bar contains the forum menu, notification bell and forum search "
|
2698 |
"section."
|
2699 |
msgstr ""
|
2700 |
|
2701 |
-
#: classes/Settings.php:
|
2702 |
msgid "Show Search Section in the Forum Menu Bar"
|
2703 |
msgstr ""
|
2704 |
|
2705 |
-
#: classes/Settings.php:
|
2706 |
msgid "Show Breadcrumb"
|
2707 |
msgstr ""
|
2708 |
|
2709 |
-
#: classes/Settings.php:
|
2710 |
msgid "Show Forum Footer"
|
2711 |
msgstr ""
|
2712 |
|
2713 |
-
#: classes/Settings.php:
|
2714 |
msgid ""
|
2715 |
"Forum footer is located at the bottom of all forum content. It includes forum "
|
2716 |
"statistic, last registered user and post information. As well as it contains "
|
2717 |
"the 'Mark all read' button and forums/topics icon description."
|
2718 |
msgstr ""
|
2719 |
|
2720 |
-
#: classes/Settings.php:
|
2721 |
msgid "Show Forum Statistic"
|
2722 |
msgstr ""
|
2723 |
|
2724 |
-
#: classes/Settings.php:
|
2725 |
msgid "Help wpForo to grow, show plugin info"
|
2726 |
msgstr ""
|
2727 |
|
2728 |
-
#: classes/Settings.php:
|
2729 |
msgid ""
|
2730 |
"Please enable this option to help wpForo get more popularity as your thank to "
|
2731 |
"the hard work we do for you totally free. This option adds a very small icon "
|
@@ -2733,11 +2769,11 @@ msgid ""
|
|
2733 |
"forum solution you use."
|
2734 |
msgstr ""
|
2735 |
|
2736 |
-
#: classes/Settings.php:
|
2737 |
msgid "Display Forums"
|
2738 |
msgstr ""
|
2739 |
|
2740 |
-
#: classes/Settings.php:
|
2741 |
msgid ""
|
2742 |
"Here you can manage forum specific components which are displayed on the "
|
2743 |
"frontend. All options are grouped by forum layouts. You can find all necessary "
|
@@ -2745,83 +2781,83 @@ msgid ""
|
|
2745 |
"own specific features."
|
2746 |
msgstr ""
|
2747 |
|
2748 |
-
#: classes/Settings.php:
|
2749 |
msgid "Extended Layout - Recent topics"
|
2750 |
msgstr ""
|
2751 |
|
2752 |
-
#: classes/Settings.php:
|
2753 |
-
#: classes/Settings.php:
|
2754 |
msgid "Collapsed"
|
2755 |
msgstr ""
|
2756 |
|
2757 |
-
#: classes/Settings.php:
|
2758 |
-
#: classes/Settings.php:
|
2759 |
msgid "Expanded"
|
2760 |
msgstr ""
|
2761 |
|
2762 |
-
#: classes/Settings.php:
|
2763 |
msgid "Extended Layout - Number of Recent topics"
|
2764 |
msgstr ""
|
2765 |
|
2766 |
-
#: classes/Settings.php:
|
2767 |
msgid "Extended Layout - Recent topic length"
|
2768 |
msgstr ""
|
2769 |
|
2770 |
-
#: classes/Settings.php:
|
2771 |
msgid ""
|
2772 |
"Set this option value 0 if you want to show the whole title in recent topic "
|
2773 |
"area."
|
2774 |
msgstr ""
|
2775 |
|
2776 |
-
#: classes/Settings.php:
|
2777 |
msgid "Simplified Layout - Display Add Topic Button on Forum List"
|
2778 |
msgstr ""
|
2779 |
|
2780 |
-
#: classes/Settings.php:
|
2781 |
msgid "Q&A Layout - Recent topics"
|
2782 |
msgstr ""
|
2783 |
|
2784 |
-
#: classes/Settings.php:
|
2785 |
msgid "Q&A Layout - Number of Recent topics"
|
2786 |
msgstr ""
|
2787 |
|
2788 |
-
#: classes/Settings.php:
|
2789 |
msgid "Q&A Layout - Recent topic length"
|
2790 |
msgstr ""
|
2791 |
|
2792 |
-
#: classes/Settings.php:
|
2793 |
msgid "Q&A Layout - Display Add Topic Button on Forum List"
|
2794 |
msgstr ""
|
2795 |
|
2796 |
-
#: classes/Settings.php:
|
2797 |
msgid "Threaded Layout - Forums List"
|
2798 |
msgstr ""
|
2799 |
|
2800 |
-
#: classes/Settings.php:
|
2801 |
msgid "Threaded Layout - Display Sub Forums with Parent Forums"
|
2802 |
msgstr ""
|
2803 |
|
2804 |
-
#: classes/Settings.php:
|
2805 |
msgid "Threaded Layout - Display Thread Filtering Buttons"
|
2806 |
msgstr ""
|
2807 |
|
2808 |
-
#: classes/Settings.php:
|
2809 |
msgid "Threaded Layout - Display Add Topic Button on Forum List"
|
2810 |
msgstr ""
|
2811 |
|
2812 |
-
#: classes/Settings.php:
|
2813 |
msgid "Threaded Layout - Number of Recent topics"
|
2814 |
msgstr ""
|
2815 |
|
2816 |
-
#: classes/Settings.php:
|
2817 |
msgid "Threaded Layout - Recent topic length"
|
2818 |
msgstr ""
|
2819 |
|
2820 |
-
#: classes/Settings.php:
|
2821 |
msgid "Colors & Styles"
|
2822 |
msgstr ""
|
2823 |
|
2824 |
-
#: classes/Settings.php:
|
2825 |
msgid ""
|
2826 |
"Here you can change your forum style. There are six predefined styles "
|
2827 |
"(default, red, green, orange, gray and dark), these are set of different "
|
@@ -2830,41 +2866,41 @@ msgid ""
|
|
2830 |
"Also, you can change font size of forums, topics and post content."
|
2831 |
msgstr ""
|
2832 |
|
2833 |
-
#: classes/Settings.php:
|
2834 |
msgid "Font Sizes"
|
2835 |
msgstr ""
|
2836 |
|
2837 |
-
#: classes/Settings.php:
|
2838 |
msgid ""
|
2839 |
"These options allow you to change the font sizes of forum and topic titles as "
|
2840 |
"well as the font size of post content."
|
2841 |
msgstr ""
|
2842 |
|
2843 |
-
#: classes/Settings.php:
|
2844 |
msgid "Forums font size:"
|
2845 |
msgstr ""
|
2846 |
|
2847 |
-
#: classes/Settings.php:
|
2848 |
msgid "Topics font size:"
|
2849 |
msgstr ""
|
2850 |
|
2851 |
-
#: classes/Settings.php:
|
2852 |
msgid "Post content font size:"
|
2853 |
msgstr ""
|
2854 |
|
2855 |
-
#: classes/Settings.php:
|
2856 |
msgid "Custom CSS Code"
|
2857 |
msgstr ""
|
2858 |
|
2859 |
-
#: classes/Settings.php:
|
2860 |
msgid "Forum Color Styles"
|
2861 |
msgstr ""
|
2862 |
|
2863 |
-
#: classes/Settings.php:
|
2864 |
msgid "Display Topics & Posts"
|
2865 |
msgstr ""
|
2866 |
|
2867 |
-
#: classes/Settings.php:
|
2868 |
msgid ""
|
2869 |
"This is the right place to manage topics and posts displaying options. Here "
|
2870 |
"you can manage the number of topics and posts per page, also you can display "
|
@@ -2872,93 +2908,93 @@ msgid ""
|
|
2872 |
"are grouped by forum layouts."
|
2873 |
msgstr ""
|
2874 |
|
2875 |
-
#: classes/Settings.php:
|
2876 |
msgid "Extended Layout - Recent posts"
|
2877 |
msgstr ""
|
2878 |
|
2879 |
-
#: classes/Settings.php:
|
2880 |
msgid "Extended Layout - Number of Recent posts"
|
2881 |
msgstr ""
|
2882 |
|
2883 |
-
#: classes/Settings.php:
|
2884 |
msgid ""
|
2885 |
"Set this option value 0 if you want to show all posts in recent posts area."
|
2886 |
msgstr ""
|
2887 |
|
2888 |
-
#: classes/Settings.php:
|
2889 |
msgid "Extended Layout - Recent post length"
|
2890 |
msgstr ""
|
2891 |
|
2892 |
-
#: classes/Settings.php:
|
2893 |
msgid "Q&A Layout - Number of Answers per Page"
|
2894 |
msgstr ""
|
2895 |
|
2896 |
-
#: classes/Settings.php:
|
2897 |
msgid "Q&A Layout - Number of Comments per Answer"
|
2898 |
msgstr ""
|
2899 |
|
2900 |
-
#: classes/Settings.php:
|
2901 |
msgid ""
|
2902 |
"This is the number of comments under the answers before clicking the [load "
|
2903 |
"more comments] button. Set this option value 0 if you want to show all "
|
2904 |
"comments."
|
2905 |
msgstr ""
|
2906 |
|
2907 |
-
#: classes/Settings.php:
|
2908 |
msgid "Q&A Layout - Enable Comments on the First Post (question)"
|
2909 |
msgstr ""
|
2910 |
|
2911 |
-
#: classes/Settings.php:
|
2912 |
msgid "Threaded Layout - Number of Parent Posts per Page"
|
2913 |
msgstr ""
|
2914 |
|
2915 |
-
#: classes/Settings.php:
|
2916 |
msgid "Threaded Layout - Replies Nesting Levels Deep"
|
2917 |
msgstr ""
|
2918 |
|
2919 |
-
#: classes/Settings.php:
|
2920 |
msgid "Threaded Layout - First Post Reply Button"
|
2921 |
msgstr ""
|
2922 |
|
2923 |
-
#: classes/Settings.php:
|
2924 |
msgid "Number of Topics per Page"
|
2925 |
msgstr ""
|
2926 |
|
2927 |
-
#: classes/Settings.php:
|
2928 |
msgid "Number of Posts per Page"
|
2929 |
msgstr ""
|
2930 |
|
2931 |
-
#: classes/Settings.php:
|
2932 |
msgid "Maximum Number of Search Results"
|
2933 |
msgstr ""
|
2934 |
|
2935 |
-
#: classes/Settings.php:
|
2936 |
msgid "Stick Topic's First Post on Top for Certain Forum Layout"
|
2937 |
msgstr ""
|
2938 |
|
2939 |
-
#: classes/Settings.php:
|
2940 |
msgid ""
|
2941 |
"This option keeps the first topic post on top when you navigate through pages "
|
2942 |
"of that topic. You can manage this option by forum layouts."
|
2943 |
msgstr ""
|
2944 |
|
2945 |
-
#: classes/Settings.php:
|
2946 |
msgid "Recent Posts Display Type"
|
2947 |
msgstr ""
|
2948 |
|
2949 |
-
#: classes/Settings.php:
|
2950 |
msgid "Display Topic Statistics and Overview Panel"
|
2951 |
msgstr ""
|
2952 |
|
2953 |
-
#: classes/Settings.php:
|
2954 |
msgid "Keep Expanded Topic Overview in the Statistic Panel"
|
2955 |
msgstr ""
|
2956 |
|
2957 |
-
#: classes/Settings.php:
|
2958 |
msgid "Topic Tags"
|
2959 |
msgstr ""
|
2960 |
|
2961 |
-
#: classes/Settings.php:
|
2962 |
msgid ""
|
2963 |
"Tags are a free form method of categorization, currently being used to group "
|
2964 |
"and categorize similar topics. The goal of using these tags in the forum is to "
|
@@ -2966,37 +3002,37 @@ msgid ""
|
|
2966 |
"the size of the tag, the more discussions about the topic."
|
2967 |
msgstr ""
|
2968 |
|
2969 |
-
#: classes/Settings.php:
|
2970 |
msgid "Maximum Number of Tags per Topic"
|
2971 |
msgstr ""
|
2972 |
|
2973 |
-
#: classes/Settings.php:
|
2974 |
msgid "Number of Tags per Page"
|
2975 |
msgstr ""
|
2976 |
|
2977 |
-
#: classes/Settings.php:
|
2978 |
msgid "Maximum Tag Length"
|
2979 |
msgstr ""
|
2980 |
|
2981 |
-
#: classes/Settings.php:
|
2982 |
msgid "Maximum Number of Suggested Tags"
|
2983 |
msgstr ""
|
2984 |
|
2985 |
-
#: classes/Settings.php:
|
2986 |
msgid ""
|
2987 |
"Tags are suggested while you type in the tag field. Using this option you can "
|
2988 |
"limit the maximum number of suggested tags."
|
2989 |
msgstr ""
|
2990 |
|
2991 |
-
#: classes/Settings.php:
|
2992 |
msgid "Force Lowercase Tags"
|
2993 |
msgstr ""
|
2994 |
|
2995 |
-
#: classes/Settings.php:
|
2996 |
msgid "Posting & Editor Settings"
|
2997 |
msgstr ""
|
2998 |
|
2999 |
-
#: classes/Settings.php:
|
3000 |
msgid ""
|
3001 |
"Here, you can find all settings related to topic and post creation including "
|
3002 |
"rich editor settings, text limitations, attachments control, option to enable "
|
@@ -3005,202 +3041,202 @@ msgid ""
|
|
3005 |
"general for all forum layouts."
|
3006 |
msgstr ""
|
3007 |
|
3008 |
-
#: classes/Settings.php:
|
3009 |
msgid "Q&A Layout - Display Answer Editor"
|
3010 |
msgstr ""
|
3011 |
|
3012 |
-
#: classes/Settings.php:
|
3013 |
msgid "Q&A Layout - Comment Form Type"
|
3014 |
msgstr ""
|
3015 |
|
3016 |
-
#: classes/Settings.php:
|
3017 |
msgid "Text Editor"
|
3018 |
msgstr ""
|
3019 |
|
3020 |
-
#: classes/Settings.php:
|
3021 |
msgid "Visual Editor"
|
3022 |
msgstr ""
|
3023 |
|
3024 |
-
#: classes/Settings.php:
|
3025 |
msgid "Threaded Layout - Reply Form Type"
|
3026 |
msgstr ""
|
3027 |
|
3028 |
-
#: classes/Settings.php:
|
3029 |
msgid "Topic Title Minimum Length"
|
3030 |
msgstr ""
|
3031 |
|
3032 |
-
#: classes/Settings.php:
|
3033 |
msgid "Topic Title Maximum Length"
|
3034 |
msgstr ""
|
3035 |
|
3036 |
-
#: classes/Settings.php:
|
3037 |
msgid "Topic title length cannot be set more than 250 character."
|
3038 |
msgstr ""
|
3039 |
|
3040 |
-
#: classes/Settings.php:
|
3041 |
msgid "Topic Content Minimum Length"
|
3042 |
msgstr ""
|
3043 |
|
3044 |
-
#: classes/Settings.php:
|
3045 |
msgid "Topic Content Maximum Length"
|
3046 |
msgstr ""
|
3047 |
|
3048 |
-
#: classes/Settings.php:
|
3049 |
msgid "Set this option value 0 to remove this limit."
|
3050 |
msgstr ""
|
3051 |
|
3052 |
-
#: classes/Settings.php:
|
3053 |
msgid "Reply Content Minimum Length"
|
3054 |
msgstr ""
|
3055 |
|
3056 |
-
#: classes/Settings.php:
|
3057 |
msgid "Reply Content Maximum Length"
|
3058 |
msgstr ""
|
3059 |
|
3060 |
-
#: classes/Settings.php:
|
3061 |
msgid "Comment Content Minimum Length"
|
3062 |
msgstr ""
|
3063 |
|
3064 |
-
#: classes/Settings.php:
|
3065 |
msgid "Comment Content Maximum Length"
|
3066 |
msgstr ""
|
3067 |
|
3068 |
-
#: classes/Settings.php:
|
3069 |
msgid "Allow Edit Own Topic within (minutes)"
|
3070 |
msgstr ""
|
3071 |
|
3072 |
-
#: classes/Settings.php:
|
3073 |
msgid "Set this option value 0 to remove time limit."
|
3074 |
msgstr ""
|
3075 |
|
3076 |
-
#: classes/Settings.php:
|
3077 |
msgid "Allow Delete Own Topic within (minutes)"
|
3078 |
msgstr ""
|
3079 |
|
3080 |
-
#: classes/Settings.php:
|
3081 |
msgid "Allow Edit Own Post within (minutes)"
|
3082 |
msgstr ""
|
3083 |
|
3084 |
-
#: classes/Settings.php:
|
3085 |
msgid "Allow Delete Own Post within (minutes)"
|
3086 |
msgstr ""
|
3087 |
|
3088 |
-
#: classes/Settings.php:
|
3089 |
msgid "Display Topic Editing Information"
|
3090 |
msgstr ""
|
3091 |
|
3092 |
-
#: classes/Settings.php:
|
3093 |
msgid ""
|
3094 |
"The topic edit logging information 'This post was modified 2 hours ago by "
|
3095 |
"John' is displayed under modified topic first post content..."
|
3096 |
msgstr ""
|
3097 |
|
3098 |
-
#: classes/Settings.php:
|
3099 |
msgid "Display Post Editing Information"
|
3100 |
msgstr ""
|
3101 |
|
3102 |
-
#: classes/Settings.php:
|
3103 |
msgid ""
|
3104 |
"The post edit logging information 'This post was modified 2 hours ago by John' "
|
3105 |
"is displayed under modified post content..."
|
3106 |
msgstr ""
|
3107 |
|
3108 |
-
#: classes/Settings.php:
|
3109 |
msgid "Limit Post Editing Information"
|
3110 |
msgstr ""
|
3111 |
|
3112 |
-
#: classes/Settings.php:
|
3113 |
msgid ""
|
3114 |
"Limit the post edit logging information 'This post was modified 2 hours ago by "
|
3115 |
"John'. Set this option value 0 if you want to disable limiting."
|
3116 |
msgstr ""
|
3117 |
|
3118 |
-
#: classes/Settings.php:
|
3119 |
msgid "Post Preview"
|
3120 |
msgstr ""
|
3121 |
|
3122 |
-
#: classes/Settings.php:
|
3123 |
msgid "Post Revisions and Draft Saving"
|
3124 |
msgstr ""
|
3125 |
|
3126 |
-
#: classes/Settings.php:
|
3127 |
msgid "Auto Drafting Interval"
|
3128 |
msgstr ""
|
3129 |
|
3130 |
-
#: classes/Settings.php:
|
3131 |
msgid "disabled"
|
3132 |
msgstr ""
|
3133 |
|
3134 |
-
#: classes/Settings.php:
|
3135 |
msgid "15 seconds"
|
3136 |
msgstr ""
|
3137 |
|
3138 |
-
#: classes/Settings.php:
|
3139 |
msgid "30 seconds"
|
3140 |
msgstr ""
|
3141 |
|
3142 |
-
#: classes/Settings.php:
|
3143 |
msgid "1 minute"
|
3144 |
msgstr ""
|
3145 |
|
3146 |
-
#: classes/Settings.php:
|
3147 |
msgid "2 minute"
|
3148 |
msgstr ""
|
3149 |
|
3150 |
-
#: classes/Settings.php:
|
3151 |
msgid "5 minute"
|
3152 |
msgstr ""
|
3153 |
|
3154 |
-
#: classes/Settings.php:
|
3155 |
msgid "Max Number of Revisions"
|
3156 |
msgstr ""
|
3157 |
|
3158 |
-
#: classes/Settings.php:
|
3159 |
msgid "Maximum upload file size"
|
3160 |
msgstr ""
|
3161 |
|
3162 |
-
#: classes/Settings.php:
|
3163 |
msgid ""
|
3164 |
"You can not set this value more than 'upload_max_filesize' and "
|
3165 |
"'post_max_size'. If you want to increase server parameters please contact to "
|
3166 |
"your hosting service support."
|
3167 |
msgstr ""
|
3168 |
|
3169 |
-
#: classes/Settings.php:
|
3170 |
msgid "Insert Forum Attachments to Media Library"
|
3171 |
msgstr ""
|
3172 |
|
3173 |
-
#: classes/Settings.php:
|
3174 |
msgid ""
|
3175 |
"Enable this option to be able manage forum attachments in Dashboard > Media > "
|
3176 |
"Library admin page."
|
3177 |
msgstr ""
|
3178 |
|
3179 |
-
#: classes/Settings.php:
|
3180 |
msgid "Toolbar Location of the Topic Editor"
|
3181 |
msgstr ""
|
3182 |
|
3183 |
-
#: classes/Settings.php:
|
3184 |
msgid "Top"
|
3185 |
msgstr ""
|
3186 |
|
3187 |
-
#: classes/Settings.php:
|
3188 |
msgid "Bottom"
|
3189 |
msgstr ""
|
3190 |
|
3191 |
-
#: classes/Settings.php:
|
3192 |
msgid "Toolbar Location of the Reply Editor"
|
3193 |
msgstr ""
|
3194 |
|
3195 |
-
#: classes/Settings.php:
|
3196 |
msgid "Enable WordPress Shortcodes in Post Content"
|
3197 |
msgstr ""
|
3198 |
|
3199 |
-
#: classes/Settings.php:
|
3200 |
msgid "Allow extra HTML tags"
|
3201 |
msgstr ""
|
3202 |
|
3203 |
-
#: classes/Settings.php:
|
3204 |
msgid ""
|
3205 |
"By default, wpForo allows all secure HTML tags in post content. Allowing a new "
|
3206 |
"HTML tag may affect your forum security. For example the <iframe> and "
|
@@ -3210,11 +3246,11 @@ msgid ""
|
|
3210 |
"</code>"
|
3211 |
msgstr ""
|
3212 |
|
3213 |
-
#: classes/Settings.php:
|
3214 |
msgid "Display Members"
|
3215 |
msgstr ""
|
3216 |
|
3217 |
-
#: classes/Settings.php:
|
3218 |
msgid ""
|
3219 |
"This is the members' directory setting page. wpForo forum has a members' page "
|
3220 |
"where you can see all members. The members' page is called members directory, "
|
@@ -3223,65 +3259,65 @@ msgid ""
|
|
3223 |
"will be one for all boards."
|
3224 |
msgstr ""
|
3225 |
|
3226 |
-
#: classes/Settings.php:
|
3227 |
msgid "Members List Ordering"
|
3228 |
msgstr ""
|
3229 |
|
3230 |
-
#: classes/Settings.php:
|
3231 |
msgid "Last Online time"
|
3232 |
msgstr ""
|
3233 |
|
3234 |
-
#: classes/Settings.php:
|
3235 |
msgid "Posts Ascending"
|
3236 |
msgstr ""
|
3237 |
|
3238 |
-
#: classes/Settings.php:
|
3239 |
msgid "Posts Descending"
|
3240 |
msgstr ""
|
3241 |
|
3242 |
-
#: classes/Settings.php:
|
3243 |
msgid "Join Date Ascending"
|
3244 |
msgstr ""
|
3245 |
|
3246 |
-
#: classes/Settings.php:
|
3247 |
msgid "Join Date Descending"
|
3248 |
msgstr ""
|
3249 |
|
3250 |
-
#: classes/Settings.php:
|
3251 |
msgid "Display Name A->Z"
|
3252 |
msgstr ""
|
3253 |
|
3254 |
-
#: classes/Settings.php:
|
3255 |
msgid "Display Name Z->A"
|
3256 |
msgstr ""
|
3257 |
|
3258 |
-
#: classes/Settings.php:
|
3259 |
msgid "Hide Inactive Members"
|
3260 |
msgstr ""
|
3261 |
|
3262 |
-
#: classes/Settings.php:
|
3263 |
msgid ""
|
3264 |
"Members who have not confirmed their email after the registration are set as "
|
3265 |
"'inactive'. In most cases they are spam bots."
|
3266 |
msgstr ""
|
3267 |
|
3268 |
-
#: classes/Settings.php:
|
3269 |
msgid "Number of Members per Page"
|
3270 |
msgstr ""
|
3271 |
|
3272 |
-
#: classes/Settings.php:
|
3273 |
msgid "Members Search Type"
|
3274 |
msgstr ""
|
3275 |
|
3276 |
-
#: classes/Settings.php:
|
3277 |
msgid "Search"
|
3278 |
msgstr ""
|
3279 |
|
3280 |
-
#: classes/Settings.php:
|
3281 |
msgid "Member Profile"
|
3282 |
msgstr ""
|
3283 |
|
3284 |
-
#: classes/Settings.php:
|
3285 |
msgid ""
|
3286 |
"wpForo forum has a powerful user profile system which can be managed in this "
|
3287 |
"setting page. Here you can hide/show forum header and footer on profile pages, "
|
@@ -3290,96 +3326,96 @@ msgid ""
|
|
3290 |
"plugins, you can switch forum profile page to the plugin profile page."
|
3291 |
msgstr ""
|
3292 |
|
3293 |
-
#: classes/Settings.php:
|
3294 |
msgid "Profile Page"
|
3295 |
msgstr ""
|
3296 |
|
3297 |
-
#: classes/Settings.php:
|
3298 |
msgid ""
|
3299 |
"wpForo Profile only for the forum, WordPress Profile for others, including "
|
3300 |
"comment authors, post authors and etc..."
|
3301 |
msgstr ""
|
3302 |
|
3303 |
#. Plugin Name of the plugin/theme
|
3304 |
-
#: classes/Settings.php:
|
3305 |
msgid "wpForo"
|
3306 |
msgstr ""
|
3307 |
|
3308 |
-
#: classes/Settings.php:
|
3309 |
msgid ""
|
3310 |
"wpForo Profile for the whole website including forum, comment authors, post "
|
3311 |
"authors and etc..."
|
3312 |
msgstr ""
|
3313 |
|
3314 |
-
#: classes/Settings.php:
|
3315 |
msgid "BuddyPress"
|
3316 |
msgstr ""
|
3317 |
|
3318 |
-
#: classes/Settings.php:
|
3319 |
msgid "BuddyPress Profile for the whole website including forum."
|
3320 |
msgstr ""
|
3321 |
|
3322 |
-
#: classes/Settings.php:
|
3323 |
msgid "Ultimate Member"
|
3324 |
msgstr ""
|
3325 |
|
3326 |
-
#: classes/Settings.php:
|
3327 |
msgid "Ultimate Member Profile for the whole website including forum."
|
3328 |
msgstr ""
|
3329 |
|
3330 |
-
#: classes/Settings.php:
|
3331 |
msgid "Show Forum Header on Profile Pages"
|
3332 |
msgstr ""
|
3333 |
|
3334 |
-
#: classes/Settings.php:
|
3335 |
msgid "Show Forum Footer under Profile Pages"
|
3336 |
msgstr ""
|
3337 |
|
3338 |
-
#: classes/Settings.php:
|
3339 |
msgid "Members URL Structure"
|
3340 |
msgstr ""
|
3341 |
|
3342 |
-
#: classes/Settings.php:
|
3343 |
msgid "By default "
|
3344 |
msgstr ""
|
3345 |
|
3346 |
-
#: classes/Settings.php:
|
3347 |
msgid "Online Status Timeout (minutes)"
|
3348 |
msgstr ""
|
3349 |
|
3350 |
-
#: classes/Settings.php:
|
3351 |
msgid "Member Custom Titles"
|
3352 |
msgstr ""
|
3353 |
|
3354 |
-
#: classes/Settings.php:
|
3355 |
msgid "Member Custom Title by Default"
|
3356 |
msgstr ""
|
3357 |
|
3358 |
-
#: classes/Settings.php:
|
3359 |
msgid "Display Member Primary Usergroup"
|
3360 |
msgstr ""
|
3361 |
|
3362 |
-
#: classes/Settings.php:
|
3363 |
msgid ""
|
3364 |
"The names of selected usergroups will be displayed under the corresponding "
|
3365 |
"usergroup's users avatar in forum posts."
|
3366 |
msgstr ""
|
3367 |
|
3368 |
-
#: classes/Settings.php:
|
3369 |
msgid "Display Member Secondary Usergroup"
|
3370 |
msgstr ""
|
3371 |
|
3372 |
-
#: classes/Settings.php:
|
3373 |
msgid ""
|
3374 |
"The names of selected secondary usergroups will be displayed under the "
|
3375 |
"corresponding usergroup's users avatar in forum posts."
|
3376 |
msgstr ""
|
3377 |
|
3378 |
-
#: classes/Settings.php:
|
3379 |
msgid "Display Member Nicknames"
|
3380 |
msgstr ""
|
3381 |
|
3382 |
-
#: classes/Settings.php:
|
3383 |
msgid ""
|
3384 |
"Nicknames are displayed with '@' symbol, like @john and are used for the user "
|
3385 |
"mentioning in posts. Please note, that this is not the user login name "
|
@@ -3387,11 +3423,11 @@ msgid ""
|
|
3387 |
"profile account page to secure the login name."
|
3388 |
msgstr ""
|
3389 |
|
3390 |
-
#: classes/Settings.php:
|
3391 |
msgid "Enable Avatars"
|
3392 |
msgstr ""
|
3393 |
|
3394 |
-
#: classes/Settings.php:
|
3395 |
msgid ""
|
3396 |
"Using this option you can disable user avatars for the forum but you cannot "
|
3397 |
"show avatars if the WordPress native avatar option is disabled. So please make "
|
@@ -3399,46 +3435,46 @@ msgid ""
|
|
3399 |
"admin page."
|
3400 |
msgstr ""
|
3401 |
|
3402 |
-
#: classes/Settings.php:
|
3403 |
msgid "Enable Custom Avatars"
|
3404 |
msgstr ""
|
3405 |
|
3406 |
-
#: classes/Settings.php:
|
3407 |
msgid ""
|
3408 |
"By default wpForo uses WordPress avatars. In most cases it's the Gravatar. If "
|
3409 |
"this option is enabled, users will be able to set their avatars with external "
|
3410 |
"URLs or upload from their devices."
|
3411 |
msgstr ""
|
3412 |
|
3413 |
-
#: classes/Settings.php:
|
3414 |
msgid "Site-wide Usage of Forum Profile Avatar"
|
3415 |
msgstr ""
|
3416 |
|
3417 |
-
#: classes/Settings.php:
|
3418 |
msgid ""
|
3419 |
"If this option is enabled, wpForo will try to use its avatar in all available "
|
3420 |
"places."
|
3421 |
msgstr ""
|
3422 |
|
3423 |
-
#: classes/Settings.php:
|
3424 |
msgid "The Default Profile Cover Image"
|
3425 |
msgstr ""
|
3426 |
|
3427 |
-
#: classes/Settings.php:
|
3428 |
msgid "Allow Member Signature"
|
3429 |
msgstr ""
|
3430 |
|
3431 |
-
#: classes/Settings.php:
|
3432 |
msgid ""
|
3433 |
"You can edit usergroups and enable/disable the signature for each usergroups "
|
3434 |
"individually."
|
3435 |
msgstr ""
|
3436 |
|
3437 |
-
#: classes/Settings.php:
|
3438 |
msgid "Member Rating"
|
3439 |
msgstr ""
|
3440 |
|
3441 |
-
#: classes/Settings.php:
|
3442 |
msgid ""
|
3443 |
"wpForo has built-in member reputation system based on points user get when he/"
|
3444 |
"she creates new topic, posts, when gets likes or dislikes. This system grants "
|
@@ -3446,55 +3482,55 @@ msgid ""
|
|
3446 |
"posts, titles, badges) can be customized and changed in this admin section."
|
3447 |
msgstr ""
|
3448 |
|
3449 |
-
#: classes/Settings.php:
|
3450 |
msgid ""
|
3451 |
" For an advanced user ranking and members' point awarding system we recommend "
|
3452 |
"using myCRED plugin with the integration addon: "
|
3453 |
msgstr ""
|
3454 |
|
3455 |
-
#: classes/Settings.php:
|
3456 |
msgid "Enable Member Rating Badges"
|
3457 |
msgstr ""
|
3458 |
|
3459 |
-
#: classes/Settings.php:
|
3460 |
msgid "Enable Member Rating Titles"
|
3461 |
msgstr ""
|
3462 |
|
3463 |
-
#: classes/Settings.php:
|
3464 |
msgid "Points for One Topic"
|
3465 |
msgstr ""
|
3466 |
|
3467 |
-
#: classes/Settings.php:
|
3468 |
msgid "Points for One Post"
|
3469 |
msgstr ""
|
3470 |
|
3471 |
-
#: classes/Settings.php:
|
3472 |
msgid "Points for One Like"
|
3473 |
msgstr ""
|
3474 |
|
3475 |
-
#: classes/Settings.php:
|
3476 |
msgid "Points for One Dislike"
|
3477 |
msgstr ""
|
3478 |
|
3479 |
-
#: classes/Settings.php:
|
3480 |
msgid ""
|
3481 |
"This should be set a negative value like '-1' to decrease the user reputation "
|
3482 |
"points if he/she receives dislikes."
|
3483 |
msgstr ""
|
3484 |
|
3485 |
-
#: classes/Settings.php:
|
3486 |
msgid "Enable Reputation Titles for Selected Usergroups"
|
3487 |
msgstr ""
|
3488 |
|
3489 |
-
#: classes/Settings.php:
|
3490 |
msgid "Enable Reputation Badges for Selected Usergroups"
|
3491 |
msgstr ""
|
3492 |
|
3493 |
-
#: classes/Settings.php:
|
3494 |
msgid "Login & Registration"
|
3495 |
msgstr ""
|
3496 |
|
3497 |
-
#: classes/Settings.php:
|
3498 |
msgid ""
|
3499 |
"wpForo is one of the very rare plugins which has its own user registration and "
|
3500 |
"login pages. Both features are based on WordPress functions. Here you can "
|
@@ -3503,59 +3539,59 @@ msgid ""
|
|
3503 |
"actions."
|
3504 |
msgstr ""
|
3505 |
|
3506 |
-
#: classes/Settings.php:
|
3507 |
msgid ""
|
3508 |
"If you need to customize the registration form and add custom fields, you "
|
3509 |
"should check out user custom field builder addon:"
|
3510 |
msgstr ""
|
3511 |
|
3512 |
-
#: classes/Settings.php:
|
3513 |
msgid "Enable User Registration"
|
3514 |
msgstr ""
|
3515 |
|
3516 |
-
#: classes/Settings.php:
|
3517 |
msgid ""
|
3518 |
"This option is not synced with WordPress 'Anyone can register' option in "
|
3519 |
"Dashboard > Settings > General admin page. If this option is enabled new users "
|
3520 |
"will always be able to register."
|
3521 |
msgstr ""
|
3522 |
|
3523 |
-
#: classes/Settings.php:
|
3524 |
msgid "Enable User Registration email confirmation"
|
3525 |
msgstr ""
|
3526 |
|
3527 |
-
#: classes/Settings.php:
|
3528 |
msgid ""
|
3529 |
"If you have enabled this option, after registering, user can not login without "
|
3530 |
"confirming the email."
|
3531 |
msgstr ""
|
3532 |
|
3533 |
-
#: classes/Settings.php:
|
3534 |
msgid "Enable User Manually Approval System"
|
3535 |
msgstr ""
|
3536 |
|
3537 |
-
#: classes/Settings.php:
|
3538 |
msgid ""
|
3539 |
"If you have enabled this option, after registering, user can not login without "
|
3540 |
"manually approving of administrator."
|
3541 |
msgstr ""
|
3542 |
|
3543 |
-
#: classes/Settings.php:
|
3544 |
msgid "Admin Contacting Form under the \"Awaiting approval\" Message"
|
3545 |
msgstr ""
|
3546 |
|
3547 |
-
#: classes/Settings.php:
|
3548 |
msgid ""
|
3549 |
"This option displays a contact form under the 'Awaiting approval' text to "
|
3550 |
"allow inactive users send a message to website administrator. This message "
|
3551 |
"will be sent to the administrator email address."
|
3552 |
msgstr ""
|
3553 |
|
3554 |
-
#: classes/Settings.php:
|
3555 |
msgid "Role-Usergroup Synchronization"
|
3556 |
msgstr ""
|
3557 |
|
3558 |
-
#: classes/Settings.php:
|
3559 |
msgid ""
|
3560 |
"Keep enabled this option to synch WordPress User Roles with Forum Usergroups. "
|
3561 |
"This connection allows to automatically change Usergroup of a user when his/"
|
@@ -3566,11 +3602,11 @@ msgid ""
|
|
3566 |
"they are only controlled by forum Usergroups."
|
3567 |
msgstr ""
|
3568 |
|
3569 |
-
#: classes/Settings.php:
|
3570 |
msgid "User Delete Method"
|
3571 |
msgstr ""
|
3572 |
|
3573 |
-
#: classes/Settings.php:
|
3574 |
msgid ""
|
3575 |
"Choose which method to use when user delete action comes. [Soft] option will "
|
3576 |
"not remove any content this user has already created. It'll only remove the "
|
@@ -3579,41 +3615,41 @@ msgid ""
|
|
3579 |
"user has already created."
|
3580 |
msgstr ""
|
3581 |
|
3582 |
-
#: classes/Settings.php:
|
3583 |
msgid "Soft"
|
3584 |
msgstr ""
|
3585 |
|
3586 |
-
#: classes/Settings.php:
|
3587 |
msgid ""
|
3588 |
"This method will delete only profile information so all content which created "
|
3589 |
"this user will be kept and renamed as Anonymous."
|
3590 |
msgstr ""
|
3591 |
|
3592 |
-
#: classes/Settings.php:
|
3593 |
msgid "Hard"
|
3594 |
msgstr ""
|
3595 |
|
3596 |
-
#: classes/Settings.php:
|
3597 |
msgid "This method will also remove all user information and content."
|
3598 |
msgstr ""
|
3599 |
|
3600 |
-
#: classes/Settings.php:
|
3601 |
msgid "Replace Registration Page URL to Forum Registration Page URL"
|
3602 |
msgstr ""
|
3603 |
|
3604 |
-
#: classes/Settings.php:
|
3605 |
msgid "Replace Login Page URL to Forum Login Page URL"
|
3606 |
msgstr ""
|
3607 |
|
3608 |
-
#: classes/Settings.php:
|
3609 |
msgid "Replace Reset Password Page URL to Forum Reset Password Page URL"
|
3610 |
msgstr ""
|
3611 |
|
3612 |
-
#: classes/Settings.php:
|
3613 |
msgid "Custom Authorization URLs"
|
3614 |
msgstr ""
|
3615 |
|
3616 |
-
#: classes/Settings.php:
|
3617 |
msgid ""
|
3618 |
"Use this option only if you have set other pages for authorization. wpForo "
|
3619 |
"doesn't change its own URLs, these options are only for other plugin "
|
@@ -3621,82 +3657,82 @@ msgid ""
|
|
3621 |
"you can set your profile plugin url"
|
3622 |
msgstr ""
|
3623 |
|
3624 |
-
#: classes/Settings.php:
|
3625 |
msgid "Login URL"
|
3626 |
msgstr ""
|
3627 |
|
3628 |
-
#: classes/Settings.php:
|
3629 |
msgid "Register URL"
|
3630 |
msgstr ""
|
3631 |
|
3632 |
-
#: classes/Settings.php:
|
3633 |
msgid "Lost Password"
|
3634 |
msgstr ""
|
3635 |
|
3636 |
-
#: classes/Settings.php:
|
3637 |
msgid "Custom Redirection URLs after following actions:"
|
3638 |
msgstr ""
|
3639 |
|
3640 |
-
#: classes/Settings.php:
|
3641 |
msgid "For member profile, account and subscription pages use following URLs:"
|
3642 |
msgstr ""
|
3643 |
|
3644 |
-
#: classes/Settings.php:
|
3645 |
msgid "Facebook API Configuration"
|
3646 |
msgstr ""
|
3647 |
|
3648 |
-
#: classes/Settings.php:
|
3649 |
msgid ""
|
3650 |
"In order to get an App ID and Secret Key from Facebook, you’ll need to "
|
3651 |
"register a new application. Don’t worry – its very easy, and your application "
|
3652 |
"doesn't need to do anything. We only need the keys."
|
3653 |
msgstr ""
|
3654 |
|
3655 |
-
#: classes/Settings.php:
|
3656 |
msgid "Please follow to this instruction"
|
3657 |
msgstr ""
|
3658 |
|
3659 |
-
#: classes/Settings.php:
|
3660 |
msgid "App ID"
|
3661 |
msgstr ""
|
3662 |
|
3663 |
-
#: classes/Settings.php:
|
3664 |
msgid "App Secret"
|
3665 |
msgstr ""
|
3666 |
|
3667 |
-
#: classes/Settings.php:
|
3668 |
msgid "Facebook Login"
|
3669 |
msgstr ""
|
3670 |
|
3671 |
-
#: classes/Settings.php:
|
3672 |
msgid "Adds Facebook Login button on Registration and Login pages."
|
3673 |
msgstr ""
|
3674 |
|
3675 |
-
#: classes/Settings.php:
|
3676 |
msgid "Facebook Login button on User Login page"
|
3677 |
msgstr ""
|
3678 |
|
3679 |
-
#: classes/Settings.php:
|
3680 |
msgid "Facebook Login button on User Registration page"
|
3681 |
msgstr ""
|
3682 |
|
3683 |
-
#: classes/Settings.php:
|
3684 |
msgid "Redirect to this page after success login"
|
3685 |
msgstr ""
|
3686 |
|
3687 |
-
#: classes/Settings.php:
|
3688 |
msgid "Custom URL, e.g.:"
|
3689 |
msgstr ""
|
3690 |
|
3691 |
-
#: classes/Settings.php:
|
3692 |
msgid "Redirect to custom URL after success login"
|
3693 |
msgstr ""
|
3694 |
|
3695 |
-
#: classes/Settings.php:
|
3696 |
msgid "Email Settings"
|
3697 |
msgstr ""
|
3698 |
|
3699 |
-
#: classes/Settings.php:
|
3700 |
msgid ""
|
3701 |
"Here, you can configure header information (FROM name and email) of forum "
|
3702 |
"specific emails. You can set administrators and moderators email addresses to "
|
@@ -3704,119 +3740,135 @@ msgid ""
|
|
3704 |
"find user registration, password resetting and post reporting email templates."
|
3705 |
msgstr ""
|
3706 |
|
3707 |
-
#: classes/Settings.php:
|
3708 |
msgid "FROM Name"
|
3709 |
msgstr ""
|
3710 |
|
3711 |
-
#: classes/Settings.php:
|
3712 |
msgid "FROM Email Address"
|
3713 |
msgstr ""
|
3714 |
|
3715 |
-
#: classes/Settings.php:
|
3716 |
msgid "Forum Admins Email Addresses"
|
3717 |
msgstr ""
|
3718 |
|
3719 |
-
#: classes/Settings.php:
|
3720 |
msgid ""
|
3721 |
"Comma separated email addresses of forum administrators to get forum "
|
3722 |
"notifications. For example post report messages."
|
3723 |
msgstr ""
|
3724 |
|
3725 |
-
#: classes/Settings.php:
|
3726 |
msgid "Notify Admins via Email on New Topic"
|
3727 |
msgstr ""
|
3728 |
|
3729 |
-
#: classes/Settings.php:
|
3730 |
msgid ""
|
3731 |
"Send Notification emails to all email addresses (comma separated ) of forum "
|
3732 |
"administrators when a new Topic is created."
|
3733 |
msgstr ""
|
3734 |
|
3735 |
-
#: classes/Settings.php:
|
3736 |
msgid "Notify Admins via Email on New Post"
|
3737 |
msgstr ""
|
3738 |
|
3739 |
-
#: classes/Settings.php:
|
3740 |
msgid ""
|
3741 |
"Send Notification emails to all email addresses (comma separated ) of forum "
|
3742 |
"administrators when a new Reply is created."
|
3743 |
msgstr ""
|
3744 |
|
3745 |
-
#: classes/Settings.php:
|
3746 |
msgid "Stop Sending Emails to Admins on New User Registration"
|
3747 |
msgstr ""
|
3748 |
|
3749 |
-
#: classes/Settings.php:
|
3750 |
msgid ""
|
3751 |
"If you have enabled this option, after registering, the admin will not receive "
|
3752 |
"an email notification for newly registered user."
|
3753 |
msgstr ""
|
3754 |
|
3755 |
-
#: classes/Settings.php:
|
3756 |
msgid "Report Message Subject"
|
3757 |
msgstr ""
|
3758 |
|
3759 |
-
#: classes/Settings.php:
|
3760 |
msgid "Report Message Body"
|
3761 |
msgstr ""
|
3762 |
|
3763 |
-
#: classes/Settings.php:
|
3764 |
msgid "Reporter user display name"
|
3765 |
msgstr ""
|
3766 |
|
3767 |
-
#: classes/Settings.php:
|
3768 |
msgid "Reporter user message"
|
3769 |
msgstr ""
|
3770 |
|
3771 |
-
#: classes/Settings.php:
|
3772 |
msgid "Reported post URL"
|
3773 |
msgstr ""
|
3774 |
|
3775 |
-
#: classes/Settings.php:
|
3776 |
msgid "Overwrite WordPress New User Registration Email for Admins"
|
3777 |
msgstr ""
|
3778 |
|
3779 |
-
#: classes/Settings.php:
|
3780 |
msgid "Message Subject"
|
3781 |
msgstr ""
|
3782 |
|
3783 |
-
#: classes/Settings.php:
|
3784 |
msgid "Message Body"
|
3785 |
msgstr ""
|
3786 |
|
3787 |
-
#: classes/Settings.php:
|
3788 |
msgid "Website name"
|
3789 |
msgstr ""
|
3790 |
|
3791 |
-
#: classes/Settings.php:
|
3792 |
msgid "Registered user login"
|
3793 |
msgstr ""
|
3794 |
|
3795 |
-
#: classes/Settings.php:
|
3796 |
msgid "Registered user email"
|
3797 |
msgstr ""
|
3798 |
|
3799 |
-
#: classes/Settings.php:
|
3800 |
msgid "Overwrite WordPress New User Registration Email for Users"
|
3801 |
msgstr ""
|
3802 |
|
3803 |
-
#: classes/Settings.php:
|
3804 |
msgid "Link to open password reset form"
|
3805 |
msgstr ""
|
3806 |
|
3807 |
-
#: classes/Settings.php:
|
3808 |
msgid "Overwrite WordPress Reset Password Emails"
|
3809 |
msgstr ""
|
3810 |
|
3811 |
-
#: classes/Settings.php:
|
3812 |
msgid "Reset Password message body"
|
3813 |
msgstr ""
|
3814 |
|
3815 |
-
#: classes/Settings.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3816 |
msgid "Subscriptions & Mentioning"
|
3817 |
msgstr ""
|
3818 |
|
3819 |
-
#: classes/Settings.php:
|
3820 |
msgid ""
|
3821 |
"wpForo has almost all kind of way to keep forum users updated about the latest "
|
3822 |
"posted content. Users can subscribe to forums and topics, they can be "
|
@@ -3825,49 +3877,49 @@ msgid ""
|
|
3825 |
"this admin section."
|
3826 |
msgstr ""
|
3827 |
|
3828 |
-
#: classes/Settings.php:
|
3829 |
msgid "Enable Subscription Confirmation"
|
3830 |
msgstr ""
|
3831 |
|
3832 |
-
#: classes/Settings.php:
|
3833 |
msgid "Forum and Topic subscription with double opt-in/confirmation system."
|
3834 |
msgstr ""
|
3835 |
|
3836 |
-
#: classes/Settings.php:
|
3837 |
msgid "Topic subscription option on post editor"
|
3838 |
msgstr ""
|
3839 |
|
3840 |
-
#: classes/Settings.php:
|
3841 |
msgid ""
|
3842 |
"This option adds topic subscription checkbox next to new topic and post submit "
|
3843 |
"button."
|
3844 |
msgstr ""
|
3845 |
|
3846 |
-
#: classes/Settings.php:
|
3847 |
msgid "Topic subscription option on post editor - checked/enabled"
|
3848 |
msgstr ""
|
3849 |
|
3850 |
-
#: classes/Settings.php:
|
3851 |
msgid ""
|
3852 |
"Enable this option if you want the topic subscription checkbox to be checked "
|
3853 |
"by default."
|
3854 |
msgstr ""
|
3855 |
|
3856 |
-
#: classes/Settings.php:
|
3857 |
msgid "Enable User Mentioning"
|
3858 |
msgstr ""
|
3859 |
|
3860 |
-
#: classes/Settings.php:
|
3861 |
msgid ""
|
3862 |
"If this option is enabled, users will receive email notification when someone "
|
3863 |
"uses @nickname of the user in posts."
|
3864 |
msgstr ""
|
3865 |
|
3866 |
-
#: classes/Settings.php:
|
3867 |
msgid "Enable User Following"
|
3868 |
msgstr ""
|
3869 |
|
3870 |
-
#: classes/Settings.php:
|
3871 |
msgid ""
|
3872 |
"If this option is enabled, the [Follow] button will be displayed on user's "
|
3873 |
"profile pages, allowing users to subscribe to certain users topics and posts. "
|
@@ -3875,155 +3927,155 @@ msgid ""
|
|
3875 |
"a new topic or post."
|
3876 |
msgstr ""
|
3877 |
|
3878 |
-
#: classes/Settings.php:
|
3879 |
msgid "Subscribe confirmation email subject"
|
3880 |
msgstr ""
|
3881 |
|
3882 |
-
#: classes/Settings.php:
|
3883 |
msgid "Subscribe confirmation email message"
|
3884 |
msgstr ""
|
3885 |
|
3886 |
-
#: classes/Settings.php:
|
3887 |
msgid "Subscribed forum or topic title"
|
3888 |
msgstr ""
|
3889 |
|
3890 |
-
#: classes/Settings.php:
|
3891 |
-
#: classes/Settings.php:
|
3892 |
msgid "Subscriber display name"
|
3893 |
msgstr ""
|
3894 |
|
3895 |
-
#: classes/Settings.php:
|
3896 |
msgid "Link to confirm subscription"
|
3897 |
msgstr ""
|
3898 |
|
3899 |
-
#: classes/Settings.php:
|
3900 |
msgid "New topic notification email subject"
|
3901 |
msgstr ""
|
3902 |
|
3903 |
-
#: classes/Settings.php:
|
3904 |
msgid "New topic notification email message"
|
3905 |
msgstr ""
|
3906 |
|
3907 |
-
#: classes/Settings.php:
|
3908 |
msgid "New topic author display name"
|
3909 |
msgstr ""
|
3910 |
|
3911 |
-
#: classes/Settings.php:
|
3912 |
msgid "Forum title / link"
|
3913 |
msgstr ""
|
3914 |
|
3915 |
-
#: classes/Settings.php:
|
3916 |
msgid "Topic title / link"
|
3917 |
msgstr ""
|
3918 |
|
3919 |
-
#: classes/Settings.php:
|
3920 |
msgid "New topic title"
|
3921 |
msgstr ""
|
3922 |
|
3923 |
-
#: classes/Settings.php:
|
3924 |
msgid "New topic excerpt"
|
3925 |
msgstr ""
|
3926 |
|
3927 |
-
#: classes/Settings.php:
|
3928 |
msgid "Link to unsubscribe"
|
3929 |
msgstr ""
|
3930 |
|
3931 |
-
#: classes/Settings.php:
|
3932 |
msgid "New reply notification email subject"
|
3933 |
msgstr ""
|
3934 |
|
3935 |
-
#: classes/Settings.php:
|
3936 |
msgid "New reply notification email message"
|
3937 |
msgstr ""
|
3938 |
|
3939 |
-
#: classes/Settings.php:
|
3940 |
msgid "New reply author display name"
|
3941 |
msgstr ""
|
3942 |
|
3943 |
-
#: classes/Settings.php:
|
3944 |
msgid "New reply title"
|
3945 |
msgstr ""
|
3946 |
|
3947 |
-
#: classes/Settings.php:
|
3948 |
msgid "New reply excerpt"
|
3949 |
msgstr ""
|
3950 |
|
3951 |
-
#: classes/Settings.php:
|
3952 |
msgid "User mention message subject"
|
3953 |
msgstr ""
|
3954 |
|
3955 |
-
#: classes/Settings.php:
|
3956 |
msgid "User Mention message body"
|
3957 |
msgstr ""
|
3958 |
|
3959 |
-
#: classes/Settings.php:
|
3960 |
msgid "Mentioned user display name"
|
3961 |
msgstr ""
|
3962 |
|
3963 |
-
#: classes/Settings.php:
|
3964 |
msgid "Post author display name"
|
3965 |
msgstr ""
|
3966 |
|
3967 |
-
#: classes/Settings.php:
|
3968 |
msgid "Topic title"
|
3969 |
msgstr ""
|
3970 |
|
3971 |
-
#: classes/Settings.php:
|
3972 |
msgid "Link to the post"
|
3973 |
msgstr ""
|
3974 |
|
3975 |
-
#: classes/Settings.php:
|
3976 |
msgid "Mentioned post excerpt"
|
3977 |
msgstr ""
|
3978 |
|
3979 |
-
#: classes/Settings.php:
|
3980 |
msgid "User following notification email subject"
|
3981 |
msgstr ""
|
3982 |
|
3983 |
-
#: classes/Settings.php:
|
3984 |
msgid "User following notification email message"
|
3985 |
msgstr ""
|
3986 |
|
3987 |
-
#: classes/Settings.php:
|
3988 |
msgid "New post author display name"
|
3989 |
msgstr ""
|
3990 |
|
3991 |
-
#: classes/Settings.php:
|
3992 |
msgid "New post title"
|
3993 |
msgstr ""
|
3994 |
|
3995 |
-
#: classes/Settings.php:
|
3996 |
msgid "New post excerpt"
|
3997 |
msgstr ""
|
3998 |
|
3999 |
-
#: classes/Settings.php:
|
4000 |
msgid "Forum Notifications"
|
4001 |
msgstr ""
|
4002 |
|
4003 |
-
#: classes/Settings.php:
|
4004 |
msgid ""
|
4005 |
"As an addition to email notification functions, wpForo has in-forum "
|
4006 |
"notification system. You can see the notification bell on forum menu bar or in "
|
4007 |
"the sidebar with 'My Profile and Notifications' widget."
|
4008 |
msgstr ""
|
4009 |
|
4010 |
-
#: classes/Settings.php:
|
4011 |
msgid "Enable User Notification"
|
4012 |
msgstr ""
|
4013 |
|
4014 |
-
#: classes/Settings.php:
|
4015 |
msgid "Enable User Notification Live Update"
|
4016 |
msgstr ""
|
4017 |
|
4018 |
-
#: classes/Settings.php:
|
4019 |
msgid "Display User Notification Bell on Menu Bar"
|
4020 |
msgstr ""
|
4021 |
|
4022 |
-
#: classes/Settings.php:
|
4023 |
msgid "Action Logging & Views"
|
4024 |
msgstr ""
|
4025 |
|
4026 |
-
#: classes/Settings.php:
|
4027 |
msgid ""
|
4028 |
"wpForo logging system allows tracking and providing live information about "
|
4029 |
"forum viewers. It detects read/unread status of forums and posts for guests "
|
@@ -4031,80 +4083,80 @@ msgid ""
|
|
4031 |
"features of the forum logging system."
|
4032 |
msgstr ""
|
4033 |
|
4034 |
-
#: classes/Settings.php:
|
4035 |
msgid "Log Viewed Forums and Topics"
|
4036 |
msgstr ""
|
4037 |
|
4038 |
-
#: classes/Settings.php:
|
4039 |
msgid "Track Forum and Topic Current Viewers"
|
4040 |
msgstr ""
|
4041 |
|
4042 |
-
#: classes/Settings.php:
|
4043 |
msgid "Topic Links - Jump to First Unread Post"
|
4044 |
msgstr ""
|
4045 |
|
4046 |
-
#: classes/Settings.php:
|
4047 |
msgid ""
|
4048 |
"If this option is enabled, all topic links on forums page and on topics page "
|
4049 |
"will refer to the first unread post. This behavior is only enabled for logged-"
|
4050 |
"in users."
|
4051 |
msgstr ""
|
4052 |
|
4053 |
-
#: classes/Settings.php:
|
4054 |
msgid "Jump to First Unread Post with [new] Button in Topic Link"
|
4055 |
msgstr ""
|
4056 |
|
4057 |
-
#: classes/Settings.php:
|
4058 |
msgid ""
|
4059 |
"Adds [new] button at the and of topic links, which jumps to the first unread "
|
4060 |
"post."
|
4061 |
msgstr ""
|
4062 |
|
4063 |
-
#: classes/Settings.php:
|
4064 |
msgid "Display Forum Current Viewers"
|
4065 |
msgstr ""
|
4066 |
|
4067 |
-
#: classes/Settings.php:
|
4068 |
msgid ""
|
4069 |
"Displays information about forum current viewers (x viewing) next to forum "
|
4070 |
"title."
|
4071 |
msgstr ""
|
4072 |
|
4073 |
-
#: classes/Settings.php:
|
4074 |
msgid "Display Topic Current Viewers"
|
4075 |
msgstr ""
|
4076 |
|
4077 |
-
#: classes/Settings.php:
|
4078 |
msgid ""
|
4079 |
"Displays information about topic current viewers (x viewing) next to topic "
|
4080 |
"title"
|
4081 |
msgstr ""
|
4082 |
|
4083 |
-
#: classes/Settings.php:
|
4084 |
msgid "Display Recent Viewers in the Topic Footer"
|
4085 |
msgstr ""
|
4086 |
|
4087 |
-
#: classes/Settings.php:
|
4088 |
msgid ""
|
4089 |
"Displays information about topic recent viewers (users visited within last one "
|
4090 |
"hour)"
|
4091 |
msgstr ""
|
4092 |
|
4093 |
-
#: classes/Settings.php:
|
4094 |
msgid "Display Administrators in the Topic Recent Viewers Section"
|
4095 |
msgstr ""
|
4096 |
|
4097 |
-
#: classes/Settings.php:
|
4098 |
msgid ""
|
4099 |
"By disabling this option you can exclude forum administrators from the topic "
|
4100 |
"viewers section."
|
4101 |
msgstr ""
|
4102 |
|
4103 |
-
#: classes/Settings.php:
|
4104 |
msgid "wpForo SEO"
|
4105 |
msgstr ""
|
4106 |
|
4107 |
-
#: classes/Settings.php:
|
4108 |
msgid ""
|
4109 |
"wpForo comes with built-in powerful forum SEO features. wpForo doesn't need "
|
4110 |
"any SEO plugin, however you should use SEO plugins for other parts of your "
|
@@ -4112,56 +4164,56 @@ msgid ""
|
|
4112 |
"pages and generates all necessary SEO meta tags."
|
4113 |
msgstr ""
|
4114 |
|
4115 |
-
#: classes/Settings.php:
|
4116 |
msgid "Enable Meta Titles"
|
4117 |
msgstr ""
|
4118 |
|
4119 |
-
#: classes/Settings.php:
|
4120 |
msgid "Enable Meta Tags"
|
4121 |
msgstr ""
|
4122 |
|
4123 |
-
#: classes/Settings.php:
|
4124 |
msgid "Enable User Profile Page indexing"
|
4125 |
msgstr ""
|
4126 |
|
4127 |
-
#: classes/Settings.php:
|
4128 |
msgid "Enable Forums Sitemap"
|
4129 |
msgstr ""
|
4130 |
|
4131 |
-
#: classes/Settings.php:
|
4132 |
msgid "Enable Topics Sitemap"
|
4133 |
msgstr ""
|
4134 |
|
4135 |
-
#: classes/Settings.php:
|
4136 |
msgid "Enable Members Sitemap"
|
4137 |
msgstr ""
|
4138 |
|
4139 |
-
#: classes/Settings.php:
|
4140 |
msgid "Allowed dofollow domains"
|
4141 |
msgstr ""
|
4142 |
|
4143 |
-
#: classes/Settings.php:
|
4144 |
msgid ""
|
4145 |
"wpForo adds nofollow to all links with external URLs. If you want to keep some "
|
4146 |
"domains as internal please insert domains one per line in the textarea bellow."
|
4147 |
msgstr ""
|
4148 |
|
4149 |
-
#: classes/Settings.php:
|
4150 |
msgid "Noindex forum page URLs"
|
4151 |
msgstr ""
|
4152 |
|
4153 |
-
#: classes/Settings.php:
|
4154 |
msgid ""
|
4155 |
"The noIndex code tells Google and other search engines to NOT index the page, "
|
4156 |
"so that it cannot be found in search results. Please insert page URLs you do "
|
4157 |
"not want to be indexed one per line in the textarea bellow."
|
4158 |
msgstr ""
|
4159 |
|
4160 |
-
#: classes/Settings.php:
|
4161 |
msgid "Spam Protection"
|
4162 |
msgstr ""
|
4163 |
|
4164 |
-
#: classes/Settings.php:
|
4165 |
msgid ""
|
4166 |
"Here you can find many ways to protect your forum from spammers. Most of them "
|
4167 |
"are already configured and enabled with default values. You can make spam "
|
@@ -4170,59 +4222,59 @@ msgid ""
|
|
4170 |
"Akismet."
|
4171 |
msgstr ""
|
4172 |
|
4173 |
-
#: classes/Settings.php:
|
4174 |
msgid "Enable wpForo Spam Control"
|
4175 |
msgstr ""
|
4176 |
|
4177 |
-
#: classes/Settings.php:
|
4178 |
msgid "Ban user when spam is suspected"
|
4179 |
msgstr ""
|
4180 |
|
4181 |
-
#: classes/Settings.php:
|
4182 |
msgid "Spam Suspicion Level for Topics"
|
4183 |
msgstr ""
|
4184 |
|
4185 |
-
#: classes/Settings.php:
|
4186 |
msgid "Spam Suspicion Level for Posts"
|
4187 |
msgstr ""
|
4188 |
|
4189 |
-
#: classes/Settings.php:
|
4190 |
msgid "User is New (under hard spam control) during first [X] posts"
|
4191 |
msgstr ""
|
4192 |
|
4193 |
-
#: classes/Settings.php:
|
4194 |
msgid "Posts must be manually approved"
|
4195 |
msgstr ""
|
4196 |
|
4197 |
-
#: classes/Settings.php:
|
4198 |
msgid "Min number of posts to be able to edit profile information"
|
4199 |
msgstr ""
|
4200 |
|
4201 |
-
#: classes/Settings.php:
|
4202 |
msgid "Min number of posts to be able to attach files"
|
4203 |
msgstr ""
|
4204 |
|
4205 |
-
#: classes/Settings.php:
|
4206 |
msgid "Min number of posts to be able to post links"
|
4207 |
msgstr ""
|
4208 |
|
4209 |
-
#: classes/Settings.php:
|
4210 |
msgid "Do not allow attaching files with following extensions"
|
4211 |
msgstr ""
|
4212 |
|
4213 |
-
#: classes/Settings.php:
|
4214 |
msgid "Enable File Scanner"
|
4215 |
msgstr ""
|
4216 |
|
4217 |
-
#: classes/Settings.php:
|
4218 |
msgid "Exclude file extensions"
|
4219 |
msgstr ""
|
4220 |
|
4221 |
-
#: classes/Settings.php:
|
4222 |
msgid "Google reCAPTCHA"
|
4223 |
msgstr ""
|
4224 |
|
4225 |
-
#: classes/Settings.php:
|
4226 |
msgid ""
|
4227 |
"reCAPTCHA protects you against spam and other types of automated abuse. It "
|
4228 |
"makes secure topic and post editors when Guest Posting is allowed, also it "
|
@@ -4230,65 +4282,65 @@ msgid ""
|
|
4230 |
"built-in reCAPTCHA version 2, \"I'm not a robot\" checkbox."
|
4231 |
msgstr ""
|
4232 |
|
4233 |
-
#: classes/Settings.php:
|
4234 |
msgid "reCAPTCHA API Keys"
|
4235 |
msgstr ""
|
4236 |
|
4237 |
-
#: classes/Settings.php:
|
4238 |
msgid "(version 2, \"I'm not a robot\" checkbox)"
|
4239 |
msgstr ""
|
4240 |
|
4241 |
-
#: classes/Settings.php:
|
4242 |
msgid ""
|
4243 |
"To start using reCAPTCHA, you need to sign up for an API key pair for your "
|
4244 |
"site."
|
4245 |
msgstr ""
|
4246 |
|
4247 |
-
#: classes/Settings.php:
|
4248 |
msgid "Register your site and get API keys here »"
|
4249 |
msgstr ""
|
4250 |
|
4251 |
-
#: classes/Settings.php:
|
4252 |
msgid "reCAPTCHA Theme"
|
4253 |
msgstr ""
|
4254 |
|
4255 |
-
#: classes/Settings.php:
|
4256 |
msgid "Guest Topic Editor"
|
4257 |
msgstr ""
|
4258 |
|
4259 |
-
#: classes/Settings.php:
|
4260 |
msgid "Guest Post Editor"
|
4261 |
msgstr ""
|
4262 |
|
4263 |
-
#: classes/Settings.php:
|
4264 |
msgid "wpForo Login Form"
|
4265 |
msgstr ""
|
4266 |
|
4267 |
-
#: classes/Settings.php:
|
4268 |
msgid "wpForo Registration Form"
|
4269 |
msgstr ""
|
4270 |
|
4271 |
-
#: classes/Settings.php:
|
4272 |
msgid "wpForo Reset Password Form"
|
4273 |
msgstr ""
|
4274 |
|
4275 |
-
#: classes/Settings.php:
|
4276 |
msgid "WordPress Login Form"
|
4277 |
msgstr ""
|
4278 |
|
4279 |
-
#: classes/Settings.php:
|
4280 |
msgid "WordPress Registration Form"
|
4281 |
msgstr ""
|
4282 |
|
4283 |
-
#: classes/Settings.php:
|
4284 |
msgid "WordPress Reset Password Form"
|
4285 |
msgstr ""
|
4286 |
|
4287 |
-
#: classes/Settings.php:
|
4288 |
msgid "Akismet Antispam Integration"
|
4289 |
msgstr ""
|
4290 |
|
4291 |
-
#: classes/Settings.php:
|
4292 |
msgid ""
|
4293 |
"Akismet checks your forum posts with authors form submissions against their "
|
4294 |
"global database of spam to prevent your site from publishing malicious "
|
@@ -4296,21 +4348,21 @@ msgid ""
|
|
4296 |
"Control more intuitive and productive."
|
4297 |
msgstr ""
|
4298 |
|
4299 |
-
#: classes/Settings.php:
|
4300 |
msgid "Enable Akismet Integration"
|
4301 |
msgstr ""
|
4302 |
|
4303 |
-
#: classes/Settings.php:
|
4304 |
msgid ""
|
4305 |
"Please make sure the Akismet plugin installed and the Akismet API keys are "
|
4306 |
"configured."
|
4307 |
msgstr ""
|
4308 |
|
4309 |
-
#: classes/Settings.php:
|
4310 |
msgid "Forum Feed / RSS"
|
4311 |
msgstr ""
|
4312 |
|
4313 |
-
#: classes/Settings.php:
|
4314 |
msgid ""
|
4315 |
"RSS (Rich Site Summary; originally RDF Site Summary; often called Really "
|
4316 |
"Simple Syndication) uses a family of standard web feed formats to publish "
|
@@ -4319,27 +4371,27 @@ msgid ""
|
|
4319 |
"post titles/links/excerpt publishing date and author’s name."
|
4320 |
msgstr ""
|
4321 |
|
4322 |
-
#: classes/Settings.php:
|
4323 |
msgid "Enable RSS Feed"
|
4324 |
msgstr ""
|
4325 |
|
4326 |
-
#: classes/Settings.php:
|
4327 |
msgid "Enable General RSS Feed"
|
4328 |
msgstr ""
|
4329 |
|
4330 |
-
#: classes/Settings.php:
|
4331 |
msgid "Enable Forum RSS Feed"
|
4332 |
msgstr ""
|
4333 |
|
4334 |
-
#: classes/Settings.php:
|
4335 |
msgid "Enable Topic RSS Feed"
|
4336 |
msgstr ""
|
4337 |
|
4338 |
-
#: classes/Settings.php:
|
4339 |
msgid "Social Share"
|
4340 |
msgstr ""
|
4341 |
|
4342 |
-
#: classes/Settings.php:
|
4343 |
msgid ""
|
4344 |
"Here you can find social network sharing options. wpForo allows sharing almost "
|
4345 |
"all forum content (forums, topics, posts individually). The share button style "
|
@@ -4347,11 +4399,11 @@ msgid ""
|
|
4347 |
"type, location, etc..."
|
4348 |
msgstr ""
|
4349 |
|
4350 |
-
#: classes/Settings.php:
|
4351 |
msgid "Active Share Buttons"
|
4352 |
msgstr ""
|
4353 |
|
4354 |
-
#: classes/Settings.php:
|
4355 |
msgid ""
|
4356 |
"Check the checkbox share options to activate. Please note, that the Facebook "
|
4357 |
"share button cannot be activated without Facebook API ID. Please follow to the "
|
@@ -4360,30 +4412,30 @@ msgid ""
|
|
4360 |
"button."
|
4361 |
msgstr ""
|
4362 |
|
4363 |
-
#: classes/Settings.php:
|
4364 |
msgid "Enable General Share Buttons"
|
4365 |
msgstr ""
|
4366 |
|
4367 |
-
#: classes/Settings.php:
|
4368 |
msgid ""
|
4369 |
"General share buttons are forum and topic sharing buttons. They are located on "
|
4370 |
"the top and the bottom of each page. You can manage location of these buttons "
|
4371 |
"using 'Share Buttons Location' options below."
|
4372 |
msgstr ""
|
4373 |
|
4374 |
-
#: classes/Settings.php:
|
4375 |
msgid "Enable Post Sharing Toggle"
|
4376 |
msgstr ""
|
4377 |
|
4378 |
-
#: classes/Settings.php:
|
4379 |
msgid "General Share Buttons Color"
|
4380 |
msgstr ""
|
4381 |
|
4382 |
-
#: classes/Settings.php:
|
4383 |
msgid "General Share Buttons Type"
|
4384 |
msgstr ""
|
4385 |
|
4386 |
-
#: classes/Settings.php:
|
4387 |
msgid ""
|
4388 |
"Post sharing toggle allows you to share posts individually. You can see post "
|
4389 |
"sharing toggles on the left, right side or in top bar of each post. The toggle "
|
@@ -4393,38 +4445,38 @@ msgid ""
|
|
4393 |
"original colors on mouse hover."
|
4394 |
msgstr ""
|
4395 |
|
4396 |
-
#: classes/Settings.php:
|
4397 |
msgid "Post Sharing Toggle View"
|
4398 |
msgstr ""
|
4399 |
|
4400 |
-
#: classes/Settings.php:
|
4401 |
msgid "Post Sharing Toggle Icon"
|
4402 |
msgstr ""
|
4403 |
|
4404 |
-
#: classes/Settings.php:
|
4405 |
msgid "General Share Button Locations"
|
4406 |
msgstr ""
|
4407 |
|
4408 |
-
#: classes/Settings.php:
|
4409 |
msgid ""
|
4410 |
"The general share buttons can be displayed on both (top and bottom) locations."
|
4411 |
msgstr ""
|
4412 |
|
4413 |
-
#: classes/Settings.php:
|
4414 |
msgid "Post Sharing Toggle Locations"
|
4415 |
msgstr ""
|
4416 |
|
4417 |
-
#: classes/Settings.php:
|
4418 |
msgid ""
|
4419 |
"The post sharing toggle can be displayed either on the left side or on the top "
|
4420 |
"of each post."
|
4421 |
msgstr ""
|
4422 |
|
4423 |
-
#: classes/Settings.php:
|
4424 |
msgid "BuddyPress Integration"
|
4425 |
msgstr ""
|
4426 |
|
4427 |
-
#: classes/Settings.php:
|
4428 |
msgid ""
|
4429 |
"wpForo is well integrated with BuddyPress and with all plugins and themes "
|
4430 |
"based on BuddyPress. The integration includes changing forum profile page URL "
|
@@ -4432,41 +4484,41 @@ msgid ""
|
|
4432 |
"BuddyPress profile page."
|
4433 |
msgstr ""
|
4434 |
|
4435 |
-
#: classes/Settings.php:
|
4436 |
msgid "BuddyPress Activity Integration"
|
4437 |
msgstr ""
|
4438 |
|
4439 |
-
#: classes/Settings.php:
|
4440 |
msgid ""
|
4441 |
"Posts members activity (new topic, new reply, post like) to BuddyPress Profile "
|
4442 |
"Activity page."
|
4443 |
msgstr ""
|
4444 |
|
4445 |
-
#: classes/Settings.php:
|
4446 |
msgid "BuddyPress Notification Integration"
|
4447 |
msgstr ""
|
4448 |
|
4449 |
-
#: classes/Settings.php:
|
4450 |
msgid ""
|
4451 |
"Creates notification on new forum reply in BuddyPress Profile Notification "
|
4452 |
"page."
|
4453 |
msgstr ""
|
4454 |
|
4455 |
-
#: classes/Settings.php:
|
4456 |
msgid "BuddyPress Profile Forum Tab Integration"
|
4457 |
msgstr ""
|
4458 |
|
4459 |
-
#: classes/Settings.php:
|
4460 |
msgid ""
|
4461 |
"Adds 'Forums' tab with 'Created Topics', 'Posted Replies', 'Liked Posts' and "
|
4462 |
"'Subscriptions' sub-tabs to BuddyPress Profile page."
|
4463 |
msgstr ""
|
4464 |
|
4465 |
-
#: classes/Settings.php:
|
4466 |
msgid "Ultimate Members Integration"
|
4467 |
msgstr ""
|
4468 |
|
4469 |
-
#: classes/Settings.php:
|
4470 |
msgid ""
|
4471 |
"wpForo is well integrated with Ultimate Members plugin. The integration "
|
4472 |
"includes changing forum profile page URL to Ultimate Members profile page URL, "
|
@@ -4474,80 +4526,80 @@ msgid ""
|
|
4474 |
"Ultimate Members' Real-time Notifications addon."
|
4475 |
msgstr ""
|
4476 |
|
4477 |
-
#: classes/Settings.php:
|
4478 |
msgid "Ultimate Member Notification Integration"
|
4479 |
msgstr ""
|
4480 |
|
4481 |
-
#: classes/Settings.php:
|
4482 |
msgid ""
|
4483 |
"Creates notification on new forum reply in Ultimate Member Real-time "
|
4484 |
"Notification system. This integration requires"
|
4485 |
msgstr ""
|
4486 |
|
4487 |
-
#: classes/Settings.php:
|
4488 |
msgid "plugin."
|
4489 |
msgstr ""
|
4490 |
|
4491 |
-
#: classes/Settings.php:
|
4492 |
msgid "Ultimate Member Profile Forum Tab Integration"
|
4493 |
msgstr ""
|
4494 |
|
4495 |
-
#: classes/Settings.php:
|
4496 |
msgid ""
|
4497 |
"Adds 'Forums' tab with 'Created Topics', 'Posted Replies', 'Liked Posts' and "
|
4498 |
"'Subscriptions' sub-tabs to Ultimate Member Profile page."
|
4499 |
msgstr ""
|
4500 |
|
4501 |
-
#: classes/Settings.php:
|
4502 |
msgid "Privacy & Forum Rules"
|
4503 |
msgstr ""
|
4504 |
|
4505 |
-
#: classes/Settings.php:
|
4506 |
msgid "Contact Information"
|
4507 |
msgstr ""
|
4508 |
|
4509 |
-
#: classes/Settings.php:
|
4510 |
msgid ""
|
4511 |
"According to the GDPR, all users should have an option to contact website "
|
4512 |
"administrator in following cases: "
|
4513 |
msgstr ""
|
4514 |
|
4515 |
-
#: classes/Settings.php:
|
4516 |
msgid "Obtain personal data and created content"
|
4517 |
msgstr ""
|
4518 |
|
4519 |
-
#: classes/Settings.php:
|
4520 |
msgid "Delete account with created content"
|
4521 |
msgstr ""
|
4522 |
|
4523 |
-
#: classes/Settings.php:
|
4524 |
msgid "Report user data access and control issue"
|
4525 |
msgstr ""
|
4526 |
|
4527 |
-
#: classes/Settings.php:
|
4528 |
msgid "Report user rights violation"
|
4529 |
msgstr ""
|
4530 |
|
4531 |
-
#: classes/Settings.php:
|
4532 |
msgid "URL to contact forum administrator"
|
4533 |
msgstr ""
|
4534 |
|
4535 |
-
#: classes/Settings.php:
|
4536 |
msgid "Checkbox: I Accept Website Terms and Privacy Policy"
|
4537 |
msgstr ""
|
4538 |
|
4539 |
-
#: classes/Settings.php:
|
4540 |
msgid ""
|
4541 |
"If this option is enabled, users must accept forum Terms and Privacy Policy by "
|
4542 |
"checking the required checkbox on registration form to be able create a forum "
|
4543 |
"account. The checkbox label can be managed in Forums > Phrases admin page."
|
4544 |
msgstr ""
|
4545 |
|
4546 |
-
#: classes/Settings.php:
|
4547 |
msgid "Checkbox: I Agree to Receive an Email Confirmation"
|
4548 |
msgstr ""
|
4549 |
|
4550 |
-
#: classes/Settings.php:
|
4551 |
msgid ""
|
4552 |
"If this option is enabled, users must agree to receive an email confirmation "
|
4553 |
"with a link to set a password by checking the required checkbox on "
|
@@ -4555,26 +4607,26 @@ msgid ""
|
|
4555 |
"managed in Forums > Phrases admin page."
|
4556 |
msgstr ""
|
4557 |
|
4558 |
-
#: classes/Settings.php:
|
4559 |
msgid "Page URL to Website Terms"
|
4560 |
msgstr ""
|
4561 |
|
4562 |
-
#: classes/Settings.php:
|
4563 |
msgid ""
|
4564 |
"Please insert URLs to your website Terms and Conditions. Links to these pages "
|
4565 |
"will be included in registration form checkbox label (I'm agree with website "
|
4566 |
"terms and privacy policy)."
|
4567 |
msgstr ""
|
4568 |
|
4569 |
-
#: classes/Settings.php:
|
4570 |
msgid "Page URL to website terms"
|
4571 |
msgstr ""
|
4572 |
|
4573 |
-
#: classes/Settings.php:
|
4574 |
msgid "Page URL to Website Privacy Policy"
|
4575 |
msgstr ""
|
4576 |
|
4577 |
-
#: classes/Settings.php:
|
4578 |
msgid ""
|
4579 |
"Please insert URLs to your website Terms and Privacy Policy pages. Links to "
|
4580 |
"these pages will be included in registration form checkbox label (I'm agree "
|
@@ -4583,26 +4635,26 @@ msgid ""
|
|
4583 |
"your website main Privacy Policy. Thus it should be linked to according pages."
|
4584 |
msgstr ""
|
4585 |
|
4586 |
-
#: classes/Settings.php:
|
4587 |
msgid "Page URL to website privacy policy"
|
4588 |
msgstr ""
|
4589 |
|
4590 |
-
#: classes/Settings.php:
|
4591 |
msgid "Checkbox: I Agree to Forum Privacy Policy"
|
4592 |
msgstr ""
|
4593 |
|
4594 |
-
#: classes/Settings.php:
|
4595 |
msgid ""
|
4596 |
"If this option is enabled, users must accept forum Terms and Privacy Policy by "
|
4597 |
"checking the required checkbox on registration form to be able create a forum "
|
4598 |
"account. The checkbox label can be managed in Forums > Phrases admin page"
|
4599 |
msgstr ""
|
4600 |
|
4601 |
-
#: classes/Settings.php:
|
4602 |
msgid "Forum Privacy Policy with GDPR compliant Template"
|
4603 |
msgstr ""
|
4604 |
|
4605 |
-
#: classes/Settings.php:
|
4606 |
msgid ""
|
4607 |
"This is an example of forum Privacy Policy with GDPR compliant. It adapted to "
|
4608 |
"wpForo plugin functions and features. <u>In case you enable this privacy "
|
@@ -4616,11 +4668,11 @@ msgid ""
|
|
4616 |
"privacy policy page for website please add a link to that page."
|
4617 |
msgstr ""
|
4618 |
|
4619 |
-
#: classes/Settings.php:
|
4620 |
msgid "Checkbox: I Agree to create a forum account on Facebook Login"
|
4621 |
msgstr ""
|
4622 |
|
4623 |
-
#: classes/Settings.php:
|
4624 |
msgid ""
|
4625 |
"If this option is enabled, the Facebook Login button becomes not-clickable "
|
4626 |
"until user accept automatic account creation process based on his/her Facebook "
|
@@ -4628,18 +4680,18 @@ msgid ""
|
|
4628 |
"displayed with Facebook Login button to comply with the GDPR"
|
4629 |
msgstr ""
|
4630 |
|
4631 |
-
#: classes/Settings.php:
|
4632 |
msgid ""
|
4633 |
"The note text and the label of this checkbox can be managed in Forums > "
|
4634 |
"Phrases admin page. Search the label phrase, click on edit button and change "
|
4635 |
"it."
|
4636 |
msgstr ""
|
4637 |
|
4638 |
-
#: classes/Settings.php:
|
4639 |
msgid "Forum Cookies"
|
4640 |
msgstr ""
|
4641 |
|
4642 |
-
#: classes/Settings.php:
|
4643 |
msgid ""
|
4644 |
"Please note, that this option is only related to wpForo cookies. This doesn't "
|
4645 |
"disable WordPress and other plugins cookies. wpForo stores a small amount of "
|
@@ -4652,11 +4704,11 @@ msgid ""
|
|
4652 |
"these fields when he/she posts a new reply or creates a new topic."
|
4653 |
msgstr ""
|
4654 |
|
4655 |
-
#: classes/Settings.php:
|
4656 |
msgid "Checkbox: I Accept Forum Rules"
|
4657 |
msgstr ""
|
4658 |
|
4659 |
-
#: classes/Settings.php:
|
4660 |
msgid ""
|
4661 |
"If this option is enabled, users must accept forum rules by checking the "
|
4662 |
"required checkbox on registration form to be able create a forum account. The "
|
@@ -4664,117 +4716,117 @@ msgid ""
|
|
4664 |
"Search the label phrase, click on edit button and change it."
|
4665 |
msgstr ""
|
4666 |
|
4667 |
-
#: classes/Settings.php:
|
4668 |
msgid "Forum Rules Text"
|
4669 |
msgstr ""
|
4670 |
|
4671 |
-
#: classes/Settings.php:
|
4672 |
msgid "This is a basic example of forum rules provided by"
|
4673 |
msgstr ""
|
4674 |
|
4675 |
-
#: classes/Settings.php:
|
4676 |
msgid "You should edit this text and adapt it to your community rules."
|
4677 |
msgstr ""
|
4678 |
|
4679 |
-
#: classes/Settings.php:
|
4680 |
msgid "TB"
|
4681 |
msgstr ""
|
4682 |
|
4683 |
-
#: classes/Settings.php:
|
4684 |
msgid "GB"
|
4685 |
msgstr ""
|
4686 |
|
4687 |
-
#: classes/Settings.php:
|
4688 |
msgid "MB"
|
4689 |
msgstr ""
|
4690 |
|
4691 |
-
#: classes/Settings.php:
|
4692 |
msgid "KB"
|
4693 |
msgstr ""
|
4694 |
|
4695 |
-
#: classes/Settings.php:
|
4696 |
msgid "B"
|
4697 |
msgstr ""
|
4698 |
|
4699 |
-
#: classes/Settings.php:
|
4700 |
msgid "Min Allowed Size is "
|
4701 |
msgstr ""
|
4702 |
|
4703 |
-
#: classes/Settings.php:
|
4704 |
msgid "Max Allowed Size is "
|
4705 |
msgstr ""
|
4706 |
|
4707 |
-
#: classes/Settings.php:
|
4708 |
msgid "Server \"upload_max_filesize\" is "
|
4709 |
msgstr ""
|
4710 |
|
4711 |
-
#: classes/Settings.php:
|
4712 |
msgid "Server \"post_max_size\" is "
|
4713 |
msgstr ""
|
4714 |
|
4715 |
-
#: classes/Settings.php:
|
4716 |
msgid "Minute"
|
4717 |
msgstr ""
|
4718 |
|
4719 |
-
#: classes/Settings.php:
|
4720 |
msgid "Rating Level"
|
4721 |
msgstr ""
|
4722 |
|
4723 |
-
#: classes/Settings.php:
|
4724 |
msgid "Min Number of Points"
|
4725 |
msgstr ""
|
4726 |
|
4727 |
-
#: classes/Settings.php:
|
4728 |
msgid "Member Title"
|
4729 |
msgstr ""
|
4730 |
|
4731 |
-
#: classes/Settings.php:
|
4732 |
msgid "Short Badge"
|
4733 |
msgstr ""
|
4734 |
|
4735 |
-
#: classes/Settings.php:
|
4736 |
msgid "Full Badge"
|
4737 |
msgstr ""
|
4738 |
|
4739 |
-
#: classes/Settings.php:
|
4740 |
msgid "Rating Color"
|
4741 |
msgstr ""
|
4742 |
|
4743 |
-
#: classes/Settings.php:
|
4744 |
msgid "Rating Icon"
|
4745 |
msgstr ""
|
4746 |
|
4747 |
-
#: classes/Settings.php:
|
4748 |
msgid "More"
|
4749 |
msgstr ""
|
4750 |
|
4751 |
-
#: classes/Settings.php:
|
4752 |
msgid "Level"
|
4753 |
msgstr ""
|
4754 |
|
4755 |
-
#: classes/Settings.php:
|
4756 |
msgid "Number of Posts"
|
4757 |
msgstr ""
|
4758 |
|
4759 |
-
#: classes/Settings.php:
|
4760 |
msgid "Custom Title"
|
4761 |
msgstr ""
|
4762 |
|
4763 |
-
#: classes/Settings.php:
|
4764 |
msgid "Badge Icon"
|
4765 |
msgstr ""
|
4766 |
|
4767 |
-
#: classes/Settings.php:
|
4768 |
-
#: includes/installation.php:
|
4769 |
#: includes/options-migration.php:98 includes/phrases.php:287
|
4770 |
msgid "Forum"
|
4771 |
msgstr ""
|
4772 |
|
4773 |
-
#: classes/Settings.php:
|
4774 |
msgid "Forum Post Report"
|
4775 |
msgstr ""
|
4776 |
|
4777 |
-
#: classes/Settings.php:
|
4778 |
msgid ""
|
4779 |
"<strong>Report details:</strong>\n"
|
4780 |
" Reporter: [reporter], <br>\n"
|
@@ -4783,11 +4835,11 @@ msgid ""
|
|
4783 |
" [post_url]"
|
4784 |
msgstr ""
|
4785 |
|
4786 |
-
#: classes/Settings.php:
|
4787 |
msgid "[blogname] New User Registration"
|
4788 |
msgstr ""
|
4789 |
|
4790 |
-
#: classes/Settings.php:
|
4791 |
msgid ""
|
4792 |
"New user registration on your site [blogname]:\n"
|
4793 |
"\n"
|
@@ -4796,11 +4848,11 @@ msgid ""
|
|
4796 |
"Email: [user_email]\n"
|
4797 |
msgstr ""
|
4798 |
|
4799 |
-
#: classes/Settings.php:
|
4800 |
msgid "[blogname] Your username and password info"
|
4801 |
msgstr ""
|
4802 |
|
4803 |
-
#: classes/Settings.php:
|
4804 |
msgid ""
|
4805 |
"Username: [user_login]\n"
|
4806 |
"\n"
|
@@ -4810,7 +4862,7 @@ msgid ""
|
|
4810 |
"\n"
|
4811 |
msgstr ""
|
4812 |
|
4813 |
-
#: classes/Settings.php:
|
4814 |
msgid ""
|
4815 |
"Hello! \n"
|
4816 |
"\n"
|
@@ -4827,11 +4879,21 @@ msgid ""
|
|
4827 |
" Thanks!"
|
4828 |
msgstr ""
|
4829 |
|
4830 |
-
#: classes/Settings.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4831 |
msgid "Please confirm subscription to [entry_title]"
|
4832 |
msgstr ""
|
4833 |
|
4834 |
-
#: classes/Settings.php:
|
4835 |
msgid ""
|
4836 |
"Hello [user_display_name]!<br>\n"
|
4837 |
" Thank you for subscribing.<br>\n"
|
@@ -4842,11 +4904,11 @@ msgid ""
|
|
4842 |
" [confirm_link]"
|
4843 |
msgstr ""
|
4844 |
|
4845 |
-
#: classes/Settings.php:
|
4846 |
msgid "New Topic"
|
4847 |
msgstr ""
|
4848 |
|
4849 |
-
#: classes/Settings.php:
|
4850 |
msgid ""
|
4851 |
"Hello [user_display_name]!<br>\n"
|
4852 |
" New topic has been created on your subscribed forum - [forum_link].\n"
|
@@ -4860,12 +4922,12 @@ msgid ""
|
|
4860 |
" [unsubscribe_link]"
|
4861 |
msgstr ""
|
4862 |
|
4863 |
-
#: classes/Settings.php:
|
4864 |
#: includes/phrases.php:1071
|
4865 |
msgid "New Reply"
|
4866 |
msgstr ""
|
4867 |
|
4868 |
-
#: classes/Settings.php:
|
4869 |
msgid ""
|
4870 |
"Hello [user_display_name]!<br>\n"
|
4871 |
" New reply has been posted on your subscribed topic - [topic_link].\n"
|
@@ -4879,11 +4941,11 @@ msgid ""
|
|
4879 |
" [unsubscribe_link]"
|
4880 |
msgstr ""
|
4881 |
|
4882 |
-
#: classes/Settings.php:
|
4883 |
msgid "You have been mentioned in forum post"
|
4884 |
msgstr ""
|
4885 |
|
4886 |
-
#: classes/Settings.php:
|
4887 |
msgid ""
|
4888 |
"Hi [user_display_name]! <br>\n"
|
4889 |
"\n"
|
@@ -4893,11 +4955,11 @@ msgid ""
|
|
4893 |
" [post_link]"
|
4894 |
msgstr ""
|
4895 |
|
4896 |
-
#: classes/Settings.php:
|
4897 |
msgid "New Post from [owner_display_name]"
|
4898 |
msgstr ""
|
4899 |
|
4900 |
-
#: classes/Settings.php:
|
4901 |
msgid ""
|
4902 |
"Hello [user_display_name]!<br>\n"
|
4903 |
" New content has been posted by [owner_display_name] you are following.\n"
|
@@ -4911,23 +4973,23 @@ msgid ""
|
|
4911 |
" [unsubscribe_link]"
|
4912 |
msgstr ""
|
4913 |
|
4914 |
-
#: classes/Template.php:
|
4915 |
msgid "Insert link"
|
4916 |
msgstr ""
|
4917 |
|
4918 |
-
#: classes/Template.php:
|
4919 |
msgid "Link Text"
|
4920 |
msgstr ""
|
4921 |
|
4922 |
-
#: classes/Template.php:
|
4923 |
msgid "Open link in a new tab"
|
4924 |
msgstr ""
|
4925 |
|
4926 |
-
#: classes/Template.php:
|
4927 |
msgid "Insert Spoiler"
|
4928 |
msgstr ""
|
4929 |
|
4930 |
-
#: classes/Template.php:
|
4931 |
msgid "Spoiler"
|
4932 |
msgstr ""
|
4933 |
|
@@ -5031,7 +5093,7 @@ msgstr ""
|
|
5031 |
msgid "wpForo Menu"
|
5032 |
msgstr ""
|
5033 |
|
5034 |
-
#: includes/functions-template.php:
|
5035 |
msgid "No Title"
|
5036 |
msgstr ""
|
5037 |
|
@@ -5182,7 +5244,7 @@ msgstr ""
|
|
5182 |
msgid "Apply"
|
5183 |
msgstr ""
|
5184 |
|
5185 |
-
#: includes/functions.php:
|
5186 |
#, php-format
|
5187 |
msgid "Could not write file %s"
|
5188 |
msgstr ""
|
@@ -5201,66 +5263,66 @@ msgstr ""
|
|
5201 |
msgid "Uninstall"
|
5202 |
msgstr ""
|
5203 |
|
5204 |
-
#: includes/hooks.php:
|
5205 |
msgid "Clear"
|
5206 |
msgstr ""
|
5207 |
|
5208 |
-
#: includes/hooks.php:
|
5209 |
msgid "Select Color"
|
5210 |
msgstr ""
|
5211 |
|
5212 |
-
#: includes/hooks.php:
|
5213 |
msgid "Move"
|
5214 |
msgstr ""
|
5215 |
|
5216 |
-
#: includes/hooks.php:
|
5217 |
msgid "Please choose one reasons before sending a feedback!"
|
5218 |
msgstr ""
|
5219 |
|
5220 |
-
#: includes/hooks.php:
|
5221 |
msgid ""
|
5222 |
"With the email address, please check the \"I agree to receive email\" checkbox "
|
5223 |
"to proceed."
|
5224 |
msgstr ""
|
5225 |
|
5226 |
-
#: includes/hooks.php:
|
5227 |
msgid "Please fill your email address for feedback"
|
5228 |
msgstr ""
|
5229 |
|
5230 |
-
#: includes/hooks.php:
|
5231 |
msgid "Your email address is not valid"
|
5232 |
msgstr ""
|
5233 |
|
5234 |
-
#: includes/hooks.php:
|
5235 |
msgid ""
|
5236 |
"IMPORTANT: wpForo can't work with default permalink, please change permalink "
|
5237 |
"structure"
|
5238 |
msgstr ""
|
5239 |
|
5240 |
-
#: includes/hooks.php:
|
5241 |
msgid "Forum Profile Fields - wpForo"
|
5242 |
msgstr ""
|
5243 |
|
5244 |
-
#: includes/hooks.php:
|
5245 |
msgid "Forum - Usergroup"
|
5246 |
msgstr ""
|
5247 |
|
5248 |
-
#: includes/hooks.php:
|
5249 |
#, php-format
|
5250 |
msgid ""
|
5251 |
"Forum Usergroups are synched with User Roles based on the %s. When you change "
|
5252 |
"this user Role the Usergroup is automatically changed according to that table."
|
5253 |
msgstr ""
|
5254 |
|
5255 |
-
#: includes/hooks.php:
|
5256 |
msgid "Synced with user role"
|
5257 |
msgstr ""
|
5258 |
|
5259 |
-
#: includes/hooks.php:
|
5260 |
msgid "Role-Usergroup Synchronization is Turned ON!"
|
5261 |
msgstr ""
|
5262 |
|
5263 |
-
#: includes/hooks.php:
|
5264 |
msgid ""
|
5265 |
"This user Usergroup is automatically changed according to current Role. If you "
|
5266 |
"want to disable Role-Usergroup synchronization and manage Usergroups and User "
|
@@ -5268,19 +5330,19 @@ msgid ""
|
|
5268 |
"admin page and disable \"Role-Usergroup Synchronization\" option."
|
5269 |
msgstr ""
|
5270 |
|
5271 |
-
#: includes/hooks.php:
|
5272 |
msgid "Forum - Secondary Usergroups"
|
5273 |
msgstr ""
|
5274 |
|
5275 |
-
#: includes/hooks.php:
|
5276 |
msgid "Forum - User Timezone"
|
5277 |
msgstr ""
|
5278 |
|
5279 |
-
#: includes/hooks.php:
|
5280 |
msgid "User Reputation"
|
5281 |
msgstr ""
|
5282 |
|
5283 |
-
#: includes/hooks.php:
|
5284 |
msgid ""
|
5285 |
"By default all members get rating badges and titles based on number of posts. "
|
5286 |
"However, using this option you can grant lower or higher rating to certain "
|
@@ -5288,49 +5350,49 @@ msgid ""
|
|
5288 |
"be managed in Forums > Settings > Members Tab."
|
5289 |
msgstr ""
|
5290 |
|
5291 |
-
#: includes/hooks.php:
|
5292 |
msgid "Default Rating"
|
5293 |
msgstr ""
|
5294 |
|
5295 |
-
#: includes/hooks.php:
|
5296 |
msgid "Custom Rating"
|
5297 |
msgstr ""
|
5298 |
|
5299 |
-
#: includes/hooks.php:
|
5300 |
msgid "Rating Title"
|
5301 |
msgstr ""
|
5302 |
|
5303 |
-
#: includes/hooks.php:
|
5304 |
msgid "Rating Badge"
|
5305 |
msgstr ""
|
5306 |
|
5307 |
-
#: includes/hooks.php:
|
5308 |
-
#: includes/hooks.php:
|
5309 |
msgid "Add New Forum"
|
5310 |
msgstr ""
|
5311 |
|
5312 |
-
#: includes/hooks.php:
|
5313 |
msgid "Add New User Group"
|
5314 |
msgstr ""
|
5315 |
|
5316 |
-
#: includes/hooks.php:
|
5317 |
-
#: includes/hooks.php:
|
5318 |
msgid "Add New Phrase"
|
5319 |
msgstr ""
|
5320 |
|
5321 |
-
#: includes/hooks.php:
|
5322 |
msgid "Visit Forum"
|
5323 |
msgstr ""
|
5324 |
|
5325 |
-
#: includes/hooks.php:
|
5326 |
msgid "Add New Usergroup"
|
5327 |
msgstr ""
|
5328 |
|
5329 |
-
#: includes/hooks.php:
|
5330 |
msgid "Add New Board"
|
5331 |
msgstr ""
|
5332 |
|
5333 |
-
#: includes/hooks.php:
|
5334 |
#, php-format
|
5335 |
msgid ""
|
5336 |
"IMPORTANT! The forum registration form is probably under risk of spam attacks. "
|
@@ -5340,98 +5402,98 @@ msgid ""
|
|
5340 |
"dismiss this message."
|
5341 |
msgstr ""
|
5342 |
|
5343 |
-
#: includes/hooks.php:
|
5344 |
msgid "wpForo Polls addon is disabled!"
|
5345 |
msgstr ""
|
5346 |
|
5347 |
-
#: includes/hooks.php:
|
5348 |
msgid ""
|
5349 |
" Your addon version is not compatible with the current version of wpForo. "
|
5350 |
"Please update the addon or downgrade wpForo to 1.7.7"
|
5351 |
msgstr ""
|
5352 |
|
5353 |
-
#: includes/hooks.php:
|
5354 |
msgid "dismiss"
|
5355 |
msgstr ""
|
5356 |
|
5357 |
-
#: includes/installation.php:
|
5358 |
msgid "Start Profile Synchronization"
|
5359 |
msgstr ""
|
5360 |
|
5361 |
-
#: includes/installation.php:
|
5362 |
msgid "Continue Synchronization"
|
5363 |
msgstr ""
|
5364 |
|
5365 |
-
#: includes/installation.php:
|
5366 |
msgid ""
|
5367 |
"This process may take a few seconds or dozens of minutes, please be patient "
|
5368 |
"and don't close this page."
|
5369 |
msgstr ""
|
5370 |
|
5371 |
-
#: includes/installation.php:
|
5372 |
msgid "You can permanently disable this message using this documentation"
|
5373 |
msgstr ""
|
5374 |
|
5375 |
-
#: includes/installation.php:
|
5376 |
msgid "wpForo Forum Installation | "
|
5377 |
msgstr ""
|
5378 |
|
5379 |
-
#: includes/installation.php:
|
5380 |
msgid ""
|
5381 |
"Forum users' profile data are not synchronized yet, this step is required! "
|
5382 |
"Please click the button below to complete installation."
|
5383 |
msgstr ""
|
5384 |
|
5385 |
-
#: includes/installation.php:
|
5386 |
msgid "wpForo Database Update Problem - Action Required!"
|
5387 |
msgstr ""
|
5388 |
|
5389 |
-
#: includes/installation.php:
|
5390 |
msgid ""
|
5391 |
"Forum database is not updated properly. Please click the button below for "
|
5392 |
"further instruction."
|
5393 |
msgstr ""
|
5394 |
|
5395 |
-
#: includes/installation.php:
|
5396 |
msgid "Exclude forum page(s) from"
|
5397 |
msgstr ""
|
5398 |
|
5399 |
-
#: includes/installation.php:
|
5400 |
msgid "plugin"
|
5401 |
msgstr ""
|
5402 |
|
5403 |
-
#: includes/installation.php:
|
5404 |
#, php-format
|
5405 |
msgid ""
|
5406 |
"If you have already excluded the forum page from your cache plugin please "
|
5407 |
"ignore and close this message using the top %s (x) button."
|
5408 |
msgstr ""
|
5409 |
|
5410 |
-
#: includes/installation.php:
|
5411 |
msgid "left"
|
5412 |
msgstr ""
|
5413 |
|
5414 |
-
#: includes/installation.php:
|
5415 |
msgid "right"
|
5416 |
msgstr ""
|
5417 |
|
5418 |
-
#: includes/installation.php:
|
5419 |
msgid "Please find more information here: "
|
5420 |
msgstr ""
|
5421 |
|
5422 |
-
#: includes/installation.php:
|
5423 |
msgid " and "
|
5424 |
msgstr ""
|
5425 |
|
5426 |
-
#: includes/installation.php:
|
5427 |
msgid "conflict"
|
5428 |
msgstr ""
|
5429 |
|
5430 |
-
#: includes/installation.php:
|
5431 |
msgid "Action Required!"
|
5432 |
msgstr ""
|
5433 |
|
5434 |
-
#: includes/installation.php:
|
5435 |
msgid ""
|
5436 |
"Please exclude the forum page from your cache plugin! wpForo has a built-in "
|
5437 |
"cache system. It does dynamic cache of all forum pages, which will be affected "
|
@@ -5439,24 +5501,24 @@ msgid ""
|
|
5439 |
"The user login and logout actions will also be corrupted."
|
5440 |
msgstr ""
|
5441 |
|
5442 |
-
#: includes/installation.php:
|
5443 |
#: includes/options-migration.php:20
|
5444 |
msgid "Discussion Board"
|
5445 |
msgstr ""
|
5446 |
|
5447 |
-
#: includes/installation.php:
|
5448 |
msgid "Main Category"
|
5449 |
msgstr ""
|
5450 |
|
5451 |
-
#: includes/installation.php:
|
5452 |
msgid "This is a simple category / section"
|
5453 |
msgstr ""
|
5454 |
|
5455 |
-
#: includes/installation.php:
|
5456 |
msgid "Main Forum"
|
5457 |
msgstr ""
|
5458 |
|
5459 |
-
#: includes/installation.php:
|
5460 |
msgid "This is a simple parent forum"
|
5461 |
msgstr ""
|
5462 |
|
@@ -6442,11 +6504,11 @@ msgstr ""
|
|
6442 |
msgid "Dismiss this notice."
|
6443 |
msgstr ""
|
6444 |
|
6445 |
-
#: includes/phrases.php:256
|
6446 |
msgid "Display Avatars"
|
6447 |
msgstr ""
|
6448 |
|
6449 |
-
#: includes/phrases.php:258
|
6450 |
msgid "Display with Avatars"
|
6451 |
msgstr ""
|
6452 |
|
@@ -6753,7 +6815,7 @@ msgstr ""
|
|
6753 |
msgid "My Profile"
|
6754 |
msgstr ""
|
6755 |
|
6756 |
-
#: includes/phrases.php:377 wpforo.php:
|
6757 |
msgid ""
|
6758 |
"NOTE: If you're going to add widgets in this sidebar, please use 'Full Width' "
|
6759 |
"template for wpForo index page to avoid sidebar duplication."
|
@@ -6787,8 +6849,8 @@ msgstr ""
|
|
6787 |
msgid "No topics were found here"
|
6788 |
msgstr ""
|
6789 |
|
6790 |
-
#: includes/phrases.php:396 widgets/OnlineMembers.php:
|
6791 |
-
#: widgets/RecentPosts.php:
|
6792 |
msgid "Number of Items"
|
6793 |
msgstr ""
|
6794 |
|
@@ -7408,7 +7470,7 @@ msgstr ""
|
|
7408 |
msgid "wpForo Navigation"
|
7409 |
msgstr ""
|
7410 |
|
7411 |
-
#: includes/phrases.php:596 wpforo.php:
|
7412 |
msgid "wpForo Sidebar"
|
7413 |
msgstr ""
|
7414 |
|
@@ -9254,10 +9316,6 @@ msgstr ""
|
|
9254 |
msgid "Role-Usergroup synchronization is complete!"
|
9255 |
msgstr ""
|
9256 |
|
9257 |
-
#: includes/phrases.php:1204
|
9258 |
-
msgid "Secondary Groups"
|
9259 |
-
msgstr ""
|
9260 |
-
|
9261 |
#: includes/phrases.php:1205
|
9262 |
msgid "Secondary Usergroup"
|
9263 |
msgstr ""
|
@@ -9418,29 +9476,29 @@ msgstr ""
|
|
9418 |
msgid "Search Forums..."
|
9419 |
msgstr ""
|
9420 |
|
9421 |
-
#: integrations/UltimateMember.php:
|
9422 |
msgid "User leaves a reply to wpForo topic"
|
9423 |
msgstr ""
|
9424 |
|
9425 |
-
#: integrations/UltimateMember.php:
|
9426 |
msgid "When a member replies to one of my forum topics"
|
9427 |
msgstr ""
|
9428 |
|
9429 |
-
#: integrations/UltimateMember.php:
|
9430 |
msgid "User replied to wpForo post"
|
9431 |
msgstr ""
|
9432 |
|
9433 |
-
#: integrations/UltimateMember.php:
|
9434 |
msgid "When a member replies to one of my post in forum topics"
|
9435 |
msgstr ""
|
9436 |
|
9437 |
-
#: integrations/UltimateMember.php:
|
9438 |
msgid ""
|
9439 |
"<strong>{member}</strong> has <strong>replied</strong> to a topic you started "
|
9440 |
"on the forum."
|
9441 |
msgstr ""
|
9442 |
|
9443 |
-
#: integrations/UltimateMember.php:
|
9444 |
msgid ""
|
9445 |
"<strong>{member}</strong> has <strong>replied</strong> to your post on the "
|
9446 |
"forum."
|
@@ -9463,14 +9521,33 @@ msgid ""
|
|
9463 |
"Forums » Moderation admin page."
|
9464 |
msgstr ""
|
9465 |
|
9466 |
-
#: widgets/Forums.php:
|
9467 |
msgid "Display as dropdown"
|
9468 |
msgstr ""
|
9469 |
|
9470 |
-
#: widgets/OnlineMembers.php:
|
|
|
|
|
|
|
|
|
9471 |
msgid "User Groups"
|
9472 |
msgstr ""
|
9473 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9474 |
#: widgets/Profile.php:130
|
9475 |
msgid "Title for Users"
|
9476 |
msgstr ""
|
@@ -9503,67 +9580,75 @@ msgstr ""
|
|
9503 |
msgid "Hide this widget for guests"
|
9504 |
msgstr ""
|
9505 |
|
9506 |
-
#: widgets/RecentPosts.php:
|
9507 |
msgid "Created Date"
|
9508 |
msgstr ""
|
9509 |
|
9510 |
-
#: widgets/RecentPosts.php:
|
9511 |
msgid "Modified Date"
|
9512 |
msgstr ""
|
9513 |
|
9514 |
-
#: widgets/RecentPosts.php:
|
9515 |
msgid "DESC"
|
9516 |
msgstr ""
|
9517 |
|
9518 |
-
#: widgets/RecentPosts.php:
|
9519 |
msgid "ASC"
|
9520 |
msgstr ""
|
9521 |
|
9522 |
-
#: widgets/RecentPosts.php:
|
9523 |
msgid "Filter by forums"
|
9524 |
msgstr ""
|
9525 |
|
9526 |
-
#: widgets/RecentPosts.php:
|
9527 |
msgid "Autofilter by current forum"
|
9528 |
msgstr ""
|
9529 |
|
9530 |
-
#: widgets/RecentPosts.php:
|
9531 |
msgid "Order by"
|
9532 |
msgstr ""
|
9533 |
|
9534 |
-
#: widgets/RecentPosts.php:
|
9535 |
msgid "Limit Per Topic"
|
9536 |
msgstr ""
|
9537 |
|
9538 |
-
#: widgets/RecentPosts.php:
|
9539 |
msgid "set 0 to remove this limit"
|
9540 |
msgstr ""
|
9541 |
|
9542 |
-
#: widgets/RecentPosts.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9543 |
msgid "Display Only Unread Posts"
|
9544 |
msgstr ""
|
9545 |
|
9546 |
-
#: widgets/RecentPosts.php:
|
9547 |
msgid "Display [new] indicator"
|
9548 |
msgstr ""
|
9549 |
|
9550 |
-
#: widgets/RecentTopics.php:
|
9551 |
msgid "Posts Count"
|
9552 |
msgstr ""
|
9553 |
|
9554 |
-
#: widgets/RecentTopics.php:
|
9555 |
msgid "Views Count"
|
9556 |
msgstr ""
|
9557 |
|
9558 |
-
#: widgets/RecentTopics.php:
|
9559 |
-
msgid "
|
9560 |
msgstr ""
|
9561 |
|
9562 |
-
#: widgets/
|
9563 |
-
msgid "
|
9564 |
msgstr ""
|
9565 |
|
9566 |
-
#: widgets/Tags.php:
|
9567 |
msgid "Topic Counts"
|
9568 |
msgstr ""
|
9569 |
|
4 |
msgid ""
|
5 |
msgstr ""
|
6 |
"Project-Id-Version: Forum - wpForo\n"
|
7 |
+
"POT-Creation-Date: 2022-11-09 00:21+0400\n"
|
8 |
"PO-Revision-Date: 2016-06-28 21:09+0400\n"
|
9 |
"Last-Translator: \n"
|
10 |
"Language-Team: \n"
|
123 |
msgid "Other"
|
124 |
msgstr ""
|
125 |
|
126 |
+
#: admin/includes/deactivation-dialog.php:142 includes/hooks.php:1299
|
127 |
msgid "Please provide more information"
|
128 |
msgstr ""
|
129 |
|
148 |
msgstr ""
|
149 |
|
150 |
#: admin/index.php:54 admin/index.php:201 admin/pages/dashboard.php:25
|
151 |
+
#: admin/tools-tabs/misc.php:67 includes/hooks.php:2233 includes/hooks.php:2437
|
152 |
#: includes/phrases.php:309 integrations/BuddyPress.php:12
|
153 |
#: integrations/BuddyPress.php:44 integrations/BuddyPress.php:117
|
154 |
+
#: widgets/Forums.php:23
|
155 |
msgid "Forums"
|
156 |
msgstr ""
|
157 |
|
158 |
#: admin/index.php:59 admin/index.php:151 admin/index.php:206
|
159 |
+
#: admin/pages/settings.php:163 includes/hooks.php:2249 includes/hooks.php:2453
|
160 |
+
#: includes/hooks.php:2558
|
161 |
msgid "Settings"
|
162 |
msgstr ""
|
163 |
|
164 |
+
#: admin/index.php:64 admin/index.php:211 includes/hooks.php:2267
|
165 |
+
#: includes/hooks.php:2471
|
166 |
msgid "Moderation"
|
167 |
msgstr ""
|
168 |
|
169 |
+
#: admin/index.php:69 admin/index.php:216 includes/hooks.php:2317
|
170 |
+
#: includes/hooks.php:2480 includes/phrases.php:791
|
171 |
msgid "Phrases"
|
172 |
msgstr ""
|
173 |
|
174 |
+
#: admin/index.php:74 admin/index.php:221 includes/hooks.php:2258
|
175 |
+
#: includes/hooks.php:2462 includes/phrases.php:916
|
176 |
msgid "Tools"
|
177 |
msgstr ""
|
178 |
|
179 |
#: admin/index.php:82 admin/index.php:136 admin/pages/board.php:16
|
180 |
+
#: includes/hooks.php:10 includes/hooks.php:2501
|
181 |
msgid "Boards"
|
182 |
msgstr ""
|
183 |
|
184 |
+
#: admin/index.php:86 admin/index.php:140 includes/hooks.php:2276
|
185 |
+
#: includes/hooks.php:2517
|
186 |
msgid "Accesses"
|
187 |
msgstr ""
|
188 |
|
189 |
#: admin/index.php:90 admin/index.php:144 admin/pages/usergroup.php:12
|
190 |
+
#: admin/pages/usergroup.php:160 includes/hooks.php:2301 includes/hooks.php:2533
|
191 |
msgid "Usergroups"
|
192 |
msgstr ""
|
193 |
|
194 |
#: admin/index.php:93 admin/index.php:147 admin/pages/dashboard.php:37
|
195 |
#: admin/pages/member.php:10 admin/pages/usergroup.php:37
|
196 |
+
#: admin/tools-tabs/misc.php:87 includes/hooks.php:2292 includes/hooks.php:2549
|
197 |
#: includes/phrases.php:364
|
198 |
msgid "Members"
|
199 |
msgstr ""
|
200 |
|
201 |
+
#: admin/index.php:97 admin/index.php:156 includes/hooks.php:2333
|
202 |
+
#: includes/hooks.php:2567 includes/phrases.php:792
|
203 |
msgid "Themes"
|
204 |
msgstr ""
|
205 |
|
206 |
#: admin/index.php:102 admin/index.php:161 admin/pages/board.php:116
|
207 |
+
#: admin/pages/settings.php:22 includes/hooks.php:2342 includes/hooks.php:2576
|
208 |
#: includes/phrases.php:211
|
209 |
msgid "Addons"
|
210 |
msgstr ""
|
243 |
msgstr ""
|
244 |
|
245 |
#: admin/listtables/Boards.php:86 admin/listtables/Moderations.php:94
|
246 |
+
#: admin/pages/forum.php:273 admin/pages/usergroup.php:78 classes/Forums.php:854
|
247 |
#: includes/phrases.php:541
|
248 |
msgid "View"
|
249 |
msgstr ""
|
256 |
msgid "Are you sure you want to DELETE this board and his data permanently?"
|
257 |
msgstr ""
|
258 |
|
259 |
+
#: admin/listtables/Boards.php:88 admin/listtables/Members.php:106
|
260 |
+
#: admin/listtables/Members.php:263 admin/listtables/Moderations.php:103
|
261 |
#: admin/listtables/Moderations.php:208 admin/pages/forum.php:272
|
262 |
#: admin/pages/themes.php:68 admin/pages/usergroup.php:76
|
263 |
#: admin/pages/usergroup.php:295 admin/settings/antispam.php:64
|
264 |
+
#: includes/hooks.php:1281 includes/phrases.php:252
|
265 |
msgid "Delete"
|
266 |
msgstr ""
|
267 |
|
298 |
msgid "default"
|
299 |
msgstr ""
|
300 |
|
301 |
+
#: admin/listtables/Members.php:100
|
302 |
msgid "Edit User"
|
303 |
msgstr ""
|
304 |
|
305 |
+
#: admin/listtables/Members.php:101
|
306 |
msgid "Edit Profile"
|
307 |
msgstr ""
|
308 |
|
309 |
+
#: admin/listtables/Members.php:102 admin/listtables/Members.php:261
|
310 |
msgid "Ban"
|
311 |
msgstr ""
|
312 |
|
313 |
+
#: admin/listtables/Members.php:102
|
314 |
msgid "Are you sure, you want to BAN this user?"
|
315 |
msgstr ""
|
316 |
|
317 |
+
#: admin/listtables/Members.php:103 admin/listtables/Members.php:262
|
318 |
msgid "Unban"
|
319 |
msgstr ""
|
320 |
|
321 |
+
#: admin/listtables/Members.php:103
|
322 |
msgid "Are you sure, you want to UNBAN this user?"
|
323 |
msgstr ""
|
324 |
|
325 |
+
#: admin/listtables/Members.php:104 admin/listtables/Members.php:259
|
326 |
#: admin/pages/themes.php:67 includes/phrases.php:203
|
327 |
msgid "Activate"
|
328 |
msgstr ""
|
329 |
|
330 |
+
#: admin/listtables/Members.php:104
|
331 |
msgid "Are you sure, you want to activate this user?"
|
332 |
msgstr ""
|
333 |
|
334 |
+
#: admin/listtables/Members.php:105 admin/listtables/Members.php:260
|
335 |
msgid "Deactivate"
|
336 |
msgstr ""
|
337 |
|
338 |
+
#: admin/listtables/Members.php:105
|
339 |
msgid "Are you sure, you want to deactivate this user?"
|
340 |
msgstr ""
|
341 |
|
342 |
+
#: admin/listtables/Members.php:176 admin/listtables/Moderations.php:151
|
343 |
#: admin/listtables/Phrases.php:133 admin/pages/usergroup.php:41
|
344 |
+
#: classes/Settings.php:203
|
345 |
msgid "ID"
|
346 |
msgstr ""
|
347 |
|
348 |
+
#: admin/listtables/Members.php:177 includes/phrases.php:257
|
349 |
msgid "Display Name"
|
350 |
msgstr ""
|
351 |
|
352 |
+
#: admin/listtables/Members.php:178 includes/phrases.php:347
|
353 |
msgid "Login"
|
354 |
msgstr ""
|
355 |
|
356 |
+
#: admin/listtables/Members.php:179 includes/phrases.php:261
|
357 |
msgid "Email"
|
358 |
msgstr ""
|
359 |
|
360 |
+
#: admin/listtables/Members.php:180 includes/phrases.php:317
|
361 |
msgid "Group"
|
362 |
msgstr ""
|
363 |
|
364 |
+
#: admin/listtables/Members.php:181 includes/phrases.php:1204
|
365 |
+
msgid "Secondary Groups"
|
366 |
+
msgstr ""
|
367 |
+
|
368 |
+
#: admin/listtables/Members.php:182 admin/pages/board.php:173
|
369 |
#: admin/pages/usergroup.php:162 includes/phrases.php:17
|
370 |
msgid "Status"
|
371 |
msgstr ""
|
372 |
|
373 |
+
#: admin/listtables/Members.php:183
|
374 |
msgid "Last Login"
|
375 |
msgstr ""
|
376 |
|
377 |
+
#: admin/listtables/Members.php:184 includes/phrases.php:831
|
378 |
msgid "Forum Posts"
|
379 |
msgstr ""
|
380 |
|
381 |
+
#: admin/listtables/Members.php:185 includes/phrases.php:832
|
382 |
msgid "Blog Posts"
|
383 |
msgstr ""
|
384 |
|
385 |
+
#: admin/listtables/Members.php:186 includes/phrases.php:833
|
386 |
msgid "Blog Comments"
|
387 |
msgstr ""
|
388 |
|
389 |
+
#: admin/listtables/Members.php:289
|
390 |
msgid "Change usergroup to…"
|
391 |
msgstr ""
|
392 |
|
393 |
+
#: admin/listtables/Members.php:292 admin/pages/phrase.php:176
|
394 |
msgid "Change"
|
395 |
msgstr ""
|
396 |
|
397 |
+
#: admin/listtables/Members.php:403 includes/phrases.php:536
|
398 |
msgid "filter by group"
|
399 |
msgstr ""
|
400 |
|
401 |
+
#: admin/listtables/Members.php:425
|
402 |
msgid "filter by status"
|
403 |
msgstr ""
|
404 |
|
422 |
msgid "Are you sure you want to DELETE this item?"
|
423 |
msgstr ""
|
424 |
|
425 |
+
#: admin/listtables/Moderations.php:152 classes/Settings.php:204
|
426 |
+
#: includes/phrases.php:520 widgets/Forums.php:85 widgets/OnlineMembers.php:87
|
427 |
+
#: widgets/RecentPosts.php:231 widgets/RecentTopics.php:152 widgets/Search.php:63
|
428 |
+
#: widgets/Tags.php:78
|
429 |
msgid "Title"
|
430 |
msgstr ""
|
431 |
|
498 |
#: admin/pages/forum.php:238 admin/pages/forum.php:285 admin/pages/forum.php:325
|
499 |
#: admin/pages/forum.php:401 admin/pages/forum.php:409 admin/pages/phrase.php:167
|
500 |
#: admin/pages/usergroup.php:30 admin/pages/usergroup.php:36
|
501 |
+
#: admin/pages/usergroup.php:342 admin/settings/board.php:16
|
502 |
#: admin/settings/general.php:24 admin/settings/styles.php:12
|
503 |
+
#: classes/Settings.php:2877
|
504 |
msgid "Read the documentation"
|
505 |
msgstr ""
|
506 |
|
507 |
+
#: admin/pages/accesses.php:29 includes/hooks.php:2283 includes/hooks.php:2524
|
508 |
#: includes/phrases.php:207
|
509 |
msgid "Add New Forum Access"
|
510 |
msgstr ""
|
531 |
msgid "Admin"
|
532 |
msgstr ""
|
533 |
|
534 |
+
#: admin/pages/accesses.php:68 classes/Forums.php:842 includes/phrases.php:567
|
535 |
msgid "edit"
|
536 |
msgstr ""
|
537 |
|
541 |
"this access will lost all forum permissions."
|
542 |
msgstr ""
|
543 |
|
544 |
+
#: admin/pages/accesses.php:75 classes/Forums.php:848 includes/phrases.php:566
|
545 |
msgid "delete"
|
546 |
msgstr ""
|
547 |
|
703 |
msgid "one URL per line"
|
704 |
msgstr ""
|
705 |
|
706 |
+
#: admin/pages/dashboard.php:7 includes/hooks.php:2225
|
707 |
msgid "Forum Dashboard"
|
708 |
msgstr ""
|
709 |
|
711 |
msgid "Board Statistic"
|
712 |
msgstr ""
|
713 |
|
714 |
+
#: admin/pages/dashboard.php:29 classes/Forums.php:834 includes/phrases.php:524
|
715 |
msgid "Topics"
|
716 |
msgstr ""
|
717 |
|
718 |
+
#: admin/pages/dashboard.php:33 classes/Forums.php:834 includes/phrases.php:418
|
719 |
msgid "Posts"
|
720 |
msgstr ""
|
721 |
|
1020 |
msgstr ""
|
1021 |
|
1022 |
#: admin/pages/member.php:17 admin/pages/moderation.php:18
|
1023 |
+
#: admin/pages/phrase.php:142 classes/Settings.php:1109
|
1024 |
msgid "Filter"
|
1025 |
msgstr ""
|
1026 |
|
1298 |
msgid "Usergroup"
|
1299 |
msgstr ""
|
1300 |
|
1301 |
+
#: admin/pages/usergroup.php:38 classes/Settings.php:1137 includes/hooks.php:1272
|
1302 |
msgid "Default"
|
1303 |
msgstr ""
|
1304 |
|
1310 |
#: admin/settings/styles.php:64 admin/settings/styles.php:72
|
1311 |
#: admin/settings/styles.php:77 admin/settings/styles.php:83
|
1312 |
#: admin/settings/styles.php:93 admin/settings/styles.php:98
|
1313 |
+
#: admin/settings/styles.php:104 classes/Settings.php:3362
|
1314 |
#: includes/phrases.php:242
|
1315 |
msgid "Color"
|
1316 |
msgstr ""
|
1581 |
msgid "Facebook API"
|
1582 |
msgstr ""
|
1583 |
|
1584 |
+
#: admin/settings/board.php:14 admin/settings/general.php:22
|
1585 |
msgid "Permalinks"
|
1586 |
msgstr ""
|
1587 |
|
1613 |
msgid "This message comes from Reset Password form."
|
1614 |
msgstr ""
|
1615 |
|
1616 |
+
#: admin/settings/email.php:55
|
1617 |
+
msgid "After User Approve Email"
|
1618 |
+
msgstr ""
|
1619 |
+
|
1620 |
+
#: admin/settings/email.php:56
|
1621 |
+
msgid "This message comes when moderators has been manually approved a user"
|
1622 |
+
msgstr ""
|
1623 |
+
|
1624 |
#: admin/settings/forums.php:8 admin/settings/topics.php:8
|
1625 |
msgid "Extended Forum Layout"
|
1626 |
msgstr ""
|
1688 |
msgid "Post Content"
|
1689 |
msgstr ""
|
1690 |
|
1691 |
+
#: admin/settings/rating.php:12 classes/Settings.php:1308
|
1692 |
+
#: classes/Settings.php:1368 includes/phrases.php:361
|
1693 |
msgid "Member Reputation and Titles"
|
1694 |
msgstr ""
|
1695 |
|
1720 |
msgid "General Share Buttons"
|
1721 |
msgstr ""
|
1722 |
|
1723 |
+
#: admin/settings/social.php:113 classes/Settings.php:2584
|
1724 |
msgid "Post Sharing Toggle"
|
1725 |
msgstr ""
|
1726 |
|
1884 |
msgstr ""
|
1885 |
|
1886 |
#: admin/settings/topics.php:68 admin/tools-tabs/cleanup.php:40
|
1887 |
+
#: classes/Settings.php:2831 includes/phrases.php:552 widgets/Forums.php:99
|
1888 |
+
#: widgets/OnlineMembers.php:103 widgets/RecentPosts.php:245
|
1889 |
+
#: widgets/RecentPosts.php:261 widgets/RecentPosts.php:307
|
1890 |
+
#: widgets/RecentPosts.php:315 widgets/RecentPosts.php:323
|
1891 |
+
#: widgets/RecentPosts.php:332 widgets/RecentTopics.php:166
|
1892 |
+
#: widgets/RecentTopics.php:182 widgets/RecentTopics.php:211
|
1893 |
+
#: widgets/RecentTopics.php:220 widgets/Tags.php:90
|
1894 |
msgid "Yes"
|
1895 |
msgstr ""
|
1896 |
|
1897 |
#: admin/settings/topics.php:69 admin/tools-tabs/cleanup.php:41
|
1898 |
+
#: classes/Settings.php:2832 includes/phrases.php:382 widgets/Forums.php:102
|
1899 |
+
#: widgets/OnlineMembers.php:106 widgets/RecentPosts.php:248
|
1900 |
+
#: widgets/RecentPosts.php:264 widgets/RecentPosts.php:310
|
1901 |
+
#: widgets/RecentPosts.php:318 widgets/RecentPosts.php:326
|
1902 |
+
#: widgets/RecentPosts.php:335 widgets/RecentTopics.php:169
|
1903 |
+
#: widgets/RecentTopics.php:185 widgets/RecentTopics.php:214
|
1904 |
+
#: widgets/RecentTopics.php:223 widgets/Tags.php:93
|
1905 |
msgid "No"
|
1906 |
msgstr ""
|
1907 |
|
2251 |
msgid "User registration is disabled"
|
2252 |
msgstr ""
|
2253 |
|
2254 |
+
#: classes/Actions.php:2130 classes/Template.php:2361 includes/phrases.php:513
|
2255 |
msgid "Theme file not readable"
|
2256 |
msgstr ""
|
2257 |
|
2258 |
+
#: classes/Actions.php:2136
|
2259 |
msgid "Theme Successfully Activated"
|
2260 |
msgstr ""
|
2261 |
|
2262 |
+
#: classes/Actions.php:2157
|
2263 |
msgid "Theme delete error"
|
2264 |
msgstr ""
|
2265 |
|
2266 |
+
#: classes/Actions.php:2164
|
2267 |
msgid "Theme delete success"
|
2268 |
msgstr ""
|
2269 |
|
2270 |
+
#: classes/Cache.php:447
|
2271 |
msgid "Please navigate in Dashboard to Settings > WP Super Cache"
|
2272 |
msgstr ""
|
2273 |
|
2274 |
+
#: classes/Cache.php:448
|
2275 |
msgid "Go to Advanced Tab, scroll down to \"Rejected URL Strings\" option"
|
2276 |
msgstr ""
|
2277 |
|
2278 |
+
#: classes/Cache.php:449 classes/Cache.php:457
|
2279 |
msgid ""
|
2280 |
"Insert the URL path(s) of your forum page(s) one per line in the option "
|
2281 |
"textarea:"
|
2282 |
msgstr ""
|
2283 |
|
2284 |
+
#: classes/Cache.php:450 classes/Cache.php:458 classes/Cache.php:466
|
2285 |
+
#: classes/Cache.php:483 classes/Cache.php:491 classes/Cache.php:499
|
2286 |
msgid "Save it and delete all caches."
|
2287 |
msgstr ""
|
2288 |
|
2289 |
+
#: classes/Cache.php:455
|
2290 |
msgid "Please navigate in Dashboard to LiteSpeed Cache > Cache admin page"
|
2291 |
msgstr ""
|
2292 |
|
2293 |
+
#: classes/Cache.php:456
|
2294 |
msgid "Go to Exclude Tab, find the \"Do Not Cache URIs\" option"
|
2295 |
msgstr ""
|
2296 |
|
2297 |
+
#: classes/Cache.php:463
|
2298 |
msgid "Please navigate in Dashboard to WP Rocket > Advanced Rules Tab"
|
2299 |
msgstr ""
|
2300 |
|
2301 |
+
#: classes/Cache.php:464
|
2302 |
msgid "Scroll down to \"Never cache (URLs)\" option"
|
2303 |
msgstr ""
|
2304 |
|
2305 |
+
#: classes/Cache.php:465
|
2306 |
msgid ""
|
2307 |
"Insert the URL path(s) of your forum page(s) one per line with wildcard (.*) "
|
2308 |
"in the option textarea:"
|
2309 |
msgstr ""
|
2310 |
|
2311 |
+
#: classes/Cache.php:471
|
2312 |
msgid "Please navigate in Dashboard to WP Fastest Cache > Exclude Tab"
|
2313 |
msgstr ""
|
2314 |
|
2315 |
+
#: classes/Cache.php:472
|
2316 |
msgid "In the \"Exclude Pages\" section click the [Add New Rule] button"
|
2317 |
msgstr ""
|
2318 |
|
2319 |
+
#: classes/Cache.php:473
|
2320 |
msgid ""
|
2321 |
"Select [Start with] option in the drop-down menu and insert the URL path(s) of "
|
2322 |
"your forum page(s) one per rule in the next field:"
|
2323 |
msgstr ""
|
2324 |
|
2325 |
+
#: classes/Cache.php:474
|
2326 |
msgid ""
|
2327 |
"If you have more than one forum pages (boards) you should create separate "
|
2328 |
"rules for each forum board."
|
2329 |
msgstr ""
|
2330 |
|
2331 |
+
#: classes/Cache.php:475
|
2332 |
msgid "Save rules and delete all caches."
|
2333 |
msgstr ""
|
2334 |
|
2335 |
+
#: classes/Cache.php:480
|
2336 |
msgid "Please navigate in Dashboard to Performance > Page Cache admin page"
|
2337 |
msgstr ""
|
2338 |
|
2339 |
+
#: classes/Cache.php:481
|
2340 |
msgid "Go to Advanced Tab, scroll down to Rejected URL Strings option"
|
2341 |
msgstr ""
|
2342 |
|
2343 |
+
#: classes/Cache.php:482
|
2344 |
msgid ""
|
2345 |
"Scroll to Advanced section and insert the URL path(s) of your forum page(s) "
|
2346 |
"one per line in the \"Never cache the following pages\" textarea:"
|
2347 |
msgstr ""
|
2348 |
|
2349 |
+
#: classes/Cache.php:488
|
2350 |
msgid "Please navigate in Dashboard to WP-Optimize > Cache admin page"
|
2351 |
msgstr ""
|
2352 |
|
2353 |
+
#: classes/Cache.php:489
|
2354 |
msgid ""
|
2355 |
"Go to Advanced Settings Tab, find the \"URLs to exclude from caching\" option"
|
2356 |
msgstr ""
|
2357 |
|
2358 |
+
#: classes/Cache.php:490
|
2359 |
msgid ""
|
2360 |
"Insert the URL path(s) of your forum page(s) one per line with wildcard [*] in "
|
2361 |
"the option textarea:"
|
2362 |
msgstr ""
|
2363 |
|
2364 |
+
#: classes/Cache.php:496
|
2365 |
msgid "Please navigate in Dashboard to SG Optimizer > Caching admin page"
|
2366 |
msgstr ""
|
2367 |
|
2368 |
+
#: classes/Cache.php:497
|
2369 |
msgid ""
|
2370 |
"Scroll to Exclude URLs from Caching section and click the \"pencil\" button, "
|
2371 |
"enable it, and click the button again"
|
2372 |
msgstr ""
|
2373 |
|
2374 |
+
#: classes/Cache.php:498
|
2375 |
msgid ""
|
2376 |
"Insert the URL path(s) of your forum page(s) with wildcard [*] in the pop-up "
|
2377 |
"filed:"
|
2378 |
msgstr ""
|
2379 |
|
2380 |
+
#: classes/Forums.php:837
|
2381 |
msgid "Add a new Subforum"
|
2382 |
msgstr ""
|
2383 |
|
2384 |
+
#: classes/Forums.php:837
|
2385 |
msgid "Add a new Forum in this Category"
|
2386 |
msgstr ""
|
2387 |
|
2388 |
+
#: classes/Members.php:409
|
2389 |
msgid "<strong>ERROR</strong>: Please enter a username."
|
2390 |
msgstr ""
|
2391 |
|
2392 |
+
#: classes/Members.php:414
|
2393 |
msgid ""
|
2394 |
"<strong>ERROR</strong>: This username is invalid because it uses illegal "
|
2395 |
"characters. Please enter a valid username."
|
2396 |
msgstr ""
|
2397 |
|
2398 |
+
#: classes/Members.php:423
|
2399 |
msgid ""
|
2400 |
"<strong>ERROR</strong>: This username is already registered. Please choose "
|
2401 |
"another one."
|
2402 |
msgstr ""
|
2403 |
|
2404 |
+
#: classes/Members.php:428
|
2405 |
msgid "<strong>ERROR</strong>: Sorry, that username is not allowed."
|
2406 |
msgstr ""
|
2407 |
|
2408 |
+
#: classes/Members.php:433
|
2409 |
msgid "<strong>ERROR</strong>: Please type your email address."
|
2410 |
msgstr ""
|
2411 |
|
2412 |
+
#: classes/Members.php:438
|
2413 |
msgid "<strong>ERROR</strong>: The email address isn’t correct."
|
2414 |
msgstr ""
|
2415 |
|
2416 |
+
#: classes/Members.php:443
|
2417 |
msgid ""
|
2418 |
"<strong>ERROR</strong>: This email is already registered, please choose "
|
2419 |
"another one."
|
2420 |
msgstr ""
|
2421 |
|
2422 |
+
#: classes/Members.php:1845
|
2423 |
msgid "What should be done with wpForo content owned by this user?"
|
2424 |
msgstr ""
|
2425 |
|
2426 |
+
#: classes/Members.php:1848
|
2427 |
msgid "What should be done with wpForo content owned by these users?"
|
2428 |
msgstr ""
|
2429 |
|
2430 |
+
#: classes/Members.php:1852
|
2431 |
msgid "Delete all wpForo content."
|
2432 |
msgstr ""
|
2433 |
|
2434 |
+
#: classes/Members.php:1854
|
2435 |
msgid "Attribute all content to:"
|
2436 |
msgstr ""
|
2437 |
|
2686 |
"forum run faster."
|
2687 |
msgstr ""
|
2688 |
|
2689 |
+
#: classes/Settings.php:198
|
2690 |
+
msgid "URL Structure"
|
2691 |
+
msgstr ""
|
2692 |
+
|
2693 |
+
#: classes/Settings.php:200
|
2694 |
+
msgid ""
|
2695 |
+
"This option allows managing topic and post URL structure. By default, URLs are "
|
2696 |
+
"built based on topic titles. You can change them to ID and make them shorter."
|
2697 |
+
msgstr ""
|
2698 |
+
|
2699 |
+
#: classes/Settings.php:211
|
2700 |
msgid "Display Components"
|
2701 |
msgstr ""
|
2702 |
|
2703 |
+
#: classes/Settings.php:214
|
2704 |
msgid ""
|
2705 |
"wpForo is a forum plugin which is loaded in one WordPress page, so the whole "
|
2706 |
"forum with its categories, forums, topics, members and profile pages are "
|
2709 |
"settings, especially here, in the Display Components admin page."
|
2710 |
msgstr ""
|
2711 |
|
2712 |
+
#: classes/Settings.php:225
|
2713 |
msgid "Frontend Admin Control Panel"
|
2714 |
msgstr ""
|
2715 |
|
2716 |
+
#: classes/Settings.php:227
|
2717 |
msgid ""
|
2718 |
"This is a section with some important buttons for quick actions and accesses "
|
2719 |
"to certain admin pages. it's located in the forum home page under the forum "
|
2720 |
"list. This section is only available for website administrators."
|
2721 |
msgstr ""
|
2722 |
|
2723 |
+
#: classes/Settings.php:233 includes/phrases.php:482
|
2724 |
msgid "Show Forum Page Title"
|
2725 |
msgstr ""
|
2726 |
|
2727 |
+
#: classes/Settings.php:241
|
2728 |
msgid "Show Forum Menu Bar"
|
2729 |
msgstr ""
|
2730 |
|
2731 |
+
#: classes/Settings.php:243
|
2732 |
msgid ""
|
2733 |
"This menu bar contains the forum menu, notification bell and forum search "
|
2734 |
"section."
|
2735 |
msgstr ""
|
2736 |
|
2737 |
+
#: classes/Settings.php:249
|
2738 |
msgid "Show Search Section in the Forum Menu Bar"
|
2739 |
msgstr ""
|
2740 |
|
2741 |
+
#: classes/Settings.php:257 includes/phrases.php:481
|
2742 |
msgid "Show Breadcrumb"
|
2743 |
msgstr ""
|
2744 |
|
2745 |
+
#: classes/Settings.php:265
|
2746 |
msgid "Show Forum Footer"
|
2747 |
msgstr ""
|
2748 |
|
2749 |
+
#: classes/Settings.php:267
|
2750 |
msgid ""
|
2751 |
"Forum footer is located at the bottom of all forum content. It includes forum "
|
2752 |
"statistic, last registered user and post information. As well as it contains "
|
2753 |
"the 'Mark all read' button and forums/topics icon description."
|
2754 |
msgstr ""
|
2755 |
|
2756 |
+
#: classes/Settings.php:273 includes/phrases.php:483
|
2757 |
msgid "Show Forum Statistic"
|
2758 |
msgstr ""
|
2759 |
|
2760 |
+
#: classes/Settings.php:281 includes/phrases.php:320
|
2761 |
msgid "Help wpForo to grow, show plugin info"
|
2762 |
msgstr ""
|
2763 |
|
2764 |
+
#: classes/Settings.php:283 includes/phrases.php:412
|
2765 |
msgid ""
|
2766 |
"Please enable this option to help wpForo get more popularity as your thank to "
|
2767 |
"the hard work we do for you totally free. This option adds a very small icon "
|
2769 |
"forum solution you use."
|
2770 |
msgstr ""
|
2771 |
|
2772 |
+
#: classes/Settings.php:290
|
2773 |
msgid "Display Forums"
|
2774 |
msgstr ""
|
2775 |
|
2776 |
+
#: classes/Settings.php:294
|
2777 |
msgid ""
|
2778 |
"Here you can manage forum specific components which are displayed on the "
|
2779 |
"frontend. All options are grouped by forum layouts. You can find all necessary "
|
2781 |
"own specific features."
|
2782 |
msgstr ""
|
2783 |
|
2784 |
+
#: classes/Settings.php:305
|
2785 |
msgid "Extended Layout - Recent topics"
|
2786 |
msgstr ""
|
2787 |
|
2788 |
+
#: classes/Settings.php:310 classes/Settings.php:348 classes/Settings.php:386
|
2789 |
+
#: classes/Settings.php:574 classes/Settings.php:2597 includes/phrases.php:241
|
2790 |
msgid "Collapsed"
|
2791 |
msgstr ""
|
2792 |
|
2793 |
+
#: classes/Settings.php:311 classes/Settings.php:349 classes/Settings.php:387
|
2794 |
+
#: classes/Settings.php:575 classes/Settings.php:2598 includes/phrases.php:275
|
2795 |
msgid "Expanded"
|
2796 |
msgstr ""
|
2797 |
|
2798 |
+
#: classes/Settings.php:318
|
2799 |
msgid "Extended Layout - Number of Recent topics"
|
2800 |
msgstr ""
|
2801 |
|
2802 |
+
#: classes/Settings.php:327
|
2803 |
msgid "Extended Layout - Recent topic length"
|
2804 |
msgstr ""
|
2805 |
|
2806 |
+
#: classes/Settings.php:329 classes/Settings.php:367
|
2807 |
msgid ""
|
2808 |
"Set this option value 0 if you want to show the whole title in recent topic "
|
2809 |
"area."
|
2810 |
msgstr ""
|
2811 |
|
2812 |
+
#: classes/Settings.php:335
|
2813 |
msgid "Simplified Layout - Display Add Topic Button on Forum List"
|
2814 |
msgstr ""
|
2815 |
|
2816 |
+
#: classes/Settings.php:343
|
2817 |
msgid "Q&A Layout - Recent topics"
|
2818 |
msgstr ""
|
2819 |
|
2820 |
+
#: classes/Settings.php:356
|
2821 |
msgid "Q&A Layout - Number of Recent topics"
|
2822 |
msgstr ""
|
2823 |
|
2824 |
+
#: classes/Settings.php:365
|
2825 |
msgid "Q&A Layout - Recent topic length"
|
2826 |
msgstr ""
|
2827 |
|
2828 |
+
#: classes/Settings.php:373
|
2829 |
msgid "Q&A Layout - Display Add Topic Button on Forum List"
|
2830 |
msgstr ""
|
2831 |
|
2832 |
+
#: classes/Settings.php:381
|
2833 |
msgid "Threaded Layout - Forums List"
|
2834 |
msgstr ""
|
2835 |
|
2836 |
+
#: classes/Settings.php:393
|
2837 |
msgid "Threaded Layout - Display Sub Forums with Parent Forums"
|
2838 |
msgstr ""
|
2839 |
|
2840 |
+
#: classes/Settings.php:401
|
2841 |
msgid "Threaded Layout - Display Thread Filtering Buttons"
|
2842 |
msgstr ""
|
2843 |
|
2844 |
+
#: classes/Settings.php:409
|
2845 |
msgid "Threaded Layout - Display Add Topic Button on Forum List"
|
2846 |
msgstr ""
|
2847 |
|
2848 |
+
#: classes/Settings.php:418
|
2849 |
msgid "Threaded Layout - Number of Recent topics"
|
2850 |
msgstr ""
|
2851 |
|
2852 |
+
#: classes/Settings.php:427
|
2853 |
msgid "Threaded Layout - Recent topic length"
|
2854 |
msgstr ""
|
2855 |
|
2856 |
+
#: classes/Settings.php:437
|
2857 |
msgid "Colors & Styles"
|
2858 |
msgstr ""
|
2859 |
|
2860 |
+
#: classes/Settings.php:440
|
2861 |
msgid ""
|
2862 |
"Here you can change your forum style. There are six predefined styles "
|
2863 |
"(default, red, green, orange, gray and dark), these are set of different "
|
2866 |
"Also, you can change font size of forums, topics and post content."
|
2867 |
msgstr ""
|
2868 |
|
2869 |
+
#: classes/Settings.php:451
|
2870 |
msgid "Font Sizes"
|
2871 |
msgstr ""
|
2872 |
|
2873 |
+
#: classes/Settings.php:453
|
2874 |
msgid ""
|
2875 |
"These options allow you to change the font sizes of forum and topic titles as "
|
2876 |
"well as the font size of post content."
|
2877 |
msgstr ""
|
2878 |
|
2879 |
+
#: classes/Settings.php:460
|
2880 |
msgid "Forums font size:"
|
2881 |
msgstr ""
|
2882 |
|
2883 |
+
#: classes/Settings.php:486
|
2884 |
msgid "Topics font size:"
|
2885 |
msgstr ""
|
2886 |
|
2887 |
+
#: classes/Settings.php:512
|
2888 |
msgid "Post content font size:"
|
2889 |
msgstr ""
|
2890 |
|
2891 |
+
#: classes/Settings.php:538 includes/phrases.php:247
|
2892 |
msgid "Custom CSS Code"
|
2893 |
msgstr ""
|
2894 |
|
2895 |
+
#: classes/Settings.php:546
|
2896 |
msgid "Forum Color Styles"
|
2897 |
msgstr ""
|
2898 |
|
2899 |
+
#: classes/Settings.php:555
|
2900 |
msgid "Display Topics & Posts"
|
2901 |
msgstr ""
|
2902 |
|
2903 |
+
#: classes/Settings.php:558
|
2904 |
msgid ""
|
2905 |
"This is the right place to manage topics and posts displaying options. Here "
|
2906 |
"you can manage the number of topics and posts per page, also you can display "
|
2908 |
"are grouped by forum layouts."
|
2909 |
msgstr ""
|
2910 |
|
2911 |
+
#: classes/Settings.php:569
|
2912 |
msgid "Extended Layout - Recent posts"
|
2913 |
msgstr ""
|
2914 |
|
2915 |
+
#: classes/Settings.php:582
|
2916 |
msgid "Extended Layout - Number of Recent posts"
|
2917 |
msgstr ""
|
2918 |
|
2919 |
+
#: classes/Settings.php:584
|
2920 |
msgid ""
|
2921 |
"Set this option value 0 if you want to show all posts in recent posts area."
|
2922 |
msgstr ""
|
2923 |
|
2924 |
+
#: classes/Settings.php:591
|
2925 |
msgid "Extended Layout - Recent post length"
|
2926 |
msgstr ""
|
2927 |
|
2928 |
+
#: classes/Settings.php:600
|
2929 |
msgid "Q&A Layout - Number of Answers per Page"
|
2930 |
msgstr ""
|
2931 |
|
2932 |
+
#: classes/Settings.php:609
|
2933 |
msgid "Q&A Layout - Number of Comments per Answer"
|
2934 |
msgstr ""
|
2935 |
|
2936 |
+
#: classes/Settings.php:611
|
2937 |
msgid ""
|
2938 |
"This is the number of comments under the answers before clicking the [load "
|
2939 |
"more comments] button. Set this option value 0 if you want to show all "
|
2940 |
"comments."
|
2941 |
msgstr ""
|
2942 |
|
2943 |
+
#: classes/Settings.php:617
|
2944 |
msgid "Q&A Layout - Enable Comments on the First Post (question)"
|
2945 |
msgstr ""
|
2946 |
|
2947 |
+
#: classes/Settings.php:626
|
2948 |
msgid "Threaded Layout - Number of Parent Posts per Page"
|
2949 |
msgstr ""
|
2950 |
|
2951 |
+
#: classes/Settings.php:636
|
2952 |
msgid "Threaded Layout - Replies Nesting Levels Deep"
|
2953 |
msgstr ""
|
2954 |
|
2955 |
+
#: classes/Settings.php:644
|
2956 |
msgid "Threaded Layout - First Post Reply Button"
|
2957 |
msgstr ""
|
2958 |
|
2959 |
+
#: classes/Settings.php:653 includes/phrases.php:399
|
2960 |
msgid "Number of Topics per Page"
|
2961 |
msgstr ""
|
2962 |
|
2963 |
+
#: classes/Settings.php:662 includes/phrases.php:398
|
2964 |
msgid "Number of Posts per Page"
|
2965 |
msgstr ""
|
2966 |
|
2967 |
+
#: classes/Settings.php:671
|
2968 |
msgid "Maximum Number of Search Results"
|
2969 |
msgstr ""
|
2970 |
|
2971 |
+
#: classes/Settings.php:679
|
2972 |
msgid "Stick Topic's First Post on Top for Certain Forum Layout"
|
2973 |
msgstr ""
|
2974 |
|
2975 |
+
#: classes/Settings.php:681
|
2976 |
msgid ""
|
2977 |
"This option keeps the first topic post on top when you navigate through pages "
|
2978 |
"of that topic. You can manage this option by forum layouts."
|
2979 |
msgstr ""
|
2980 |
|
2981 |
+
#: classes/Settings.php:687
|
2982 |
msgid "Recent Posts Display Type"
|
2983 |
msgstr ""
|
2984 |
|
2985 |
+
#: classes/Settings.php:699
|
2986 |
msgid "Display Topic Statistics and Overview Panel"
|
2987 |
msgstr ""
|
2988 |
|
2989 |
+
#: classes/Settings.php:707
|
2990 |
msgid "Keep Expanded Topic Overview in the Statistic Panel"
|
2991 |
msgstr ""
|
2992 |
|
2993 |
+
#: classes/Settings.php:716 includes/phrases.php:987 widgets/Tags.php:22
|
2994 |
msgid "Topic Tags"
|
2995 |
msgstr ""
|
2996 |
|
2997 |
+
#: classes/Settings.php:719
|
2998 |
msgid ""
|
2999 |
"Tags are a free form method of categorization, currently being used to group "
|
3000 |
"and categorize similar topics. The goal of using these tags in the forum is to "
|
3002 |
"the size of the tag, the more discussions about the topic."
|
3003 |
msgstr ""
|
3004 |
|
3005 |
+
#: classes/Settings.php:731
|
3006 |
msgid "Maximum Number of Tags per Topic"
|
3007 |
msgstr ""
|
3008 |
|
3009 |
+
#: classes/Settings.php:740
|
3010 |
msgid "Number of Tags per Page"
|
3011 |
msgstr ""
|
3012 |
|
3013 |
+
#: classes/Settings.php:750
|
3014 |
msgid "Maximum Tag Length"
|
3015 |
msgstr ""
|
3016 |
|
3017 |
+
#: classes/Settings.php:759
|
3018 |
msgid "Maximum Number of Suggested Tags"
|
3019 |
msgstr ""
|
3020 |
|
3021 |
+
#: classes/Settings.php:761
|
3022 |
msgid ""
|
3023 |
"Tags are suggested while you type in the tag field. Using this option you can "
|
3024 |
"limit the maximum number of suggested tags."
|
3025 |
msgstr ""
|
3026 |
|
3027 |
+
#: classes/Settings.php:767
|
3028 |
msgid "Force Lowercase Tags"
|
3029 |
msgstr ""
|
3030 |
|
3031 |
+
#: classes/Settings.php:776
|
3032 |
msgid "Posting & Editor Settings"
|
3033 |
msgstr ""
|
3034 |
|
3035 |
+
#: classes/Settings.php:779
|
3036 |
msgid ""
|
3037 |
"Here, you can find all settings related to topic and post creation including "
|
3038 |
"rich editor settings, text limitations, attachments control, option to enable "
|
3041 |
"general for all forum layouts."
|
3042 |
msgstr ""
|
3043 |
|
3044 |
+
#: classes/Settings.php:790
|
3045 |
msgid "Q&A Layout - Display Answer Editor"
|
3046 |
msgstr ""
|
3047 |
|
3048 |
+
#: classes/Settings.php:798
|
3049 |
msgid "Q&A Layout - Comment Form Type"
|
3050 |
msgstr ""
|
3051 |
|
3052 |
+
#: classes/Settings.php:803 classes/Settings.php:815
|
3053 |
msgid "Text Editor"
|
3054 |
msgstr ""
|
3055 |
|
3056 |
+
#: classes/Settings.php:804 classes/Settings.php:816
|
3057 |
msgid "Visual Editor"
|
3058 |
msgstr ""
|
3059 |
|
3060 |
+
#: classes/Settings.php:810
|
3061 |
msgid "Threaded Layout - Reply Form Type"
|
3062 |
msgstr ""
|
3063 |
|
3064 |
+
#: classes/Settings.php:823
|
3065 |
msgid "Topic Title Minimum Length"
|
3066 |
msgstr ""
|
3067 |
|
3068 |
+
#: classes/Settings.php:833
|
3069 |
msgid "Topic Title Maximum Length"
|
3070 |
msgstr ""
|
3071 |
|
3072 |
+
#: classes/Settings.php:835
|
3073 |
msgid "Topic title length cannot be set more than 250 character."
|
3074 |
msgstr ""
|
3075 |
|
3076 |
+
#: classes/Settings.php:842
|
3077 |
msgid "Topic Content Minimum Length"
|
3078 |
msgstr ""
|
3079 |
|
3080 |
+
#: classes/Settings.php:851
|
3081 |
msgid "Topic Content Maximum Length"
|
3082 |
msgstr ""
|
3083 |
|
3084 |
+
#: classes/Settings.php:853 classes/Settings.php:871 classes/Settings.php:889
|
3085 |
msgid "Set this option value 0 to remove this limit."
|
3086 |
msgstr ""
|
3087 |
|
3088 |
+
#: classes/Settings.php:860
|
3089 |
msgid "Reply Content Minimum Length"
|
3090 |
msgstr ""
|
3091 |
|
3092 |
+
#: classes/Settings.php:869
|
3093 |
msgid "Reply Content Maximum Length"
|
3094 |
msgstr ""
|
3095 |
|
3096 |
+
#: classes/Settings.php:878
|
3097 |
msgid "Comment Content Minimum Length"
|
3098 |
msgstr ""
|
3099 |
|
3100 |
+
#: classes/Settings.php:887
|
3101 |
msgid "Comment Content Maximum Length"
|
3102 |
msgstr ""
|
3103 |
|
3104 |
+
#: classes/Settings.php:896
|
3105 |
msgid "Allow Edit Own Topic within (minutes)"
|
3106 |
msgstr ""
|
3107 |
|
3108 |
+
#: classes/Settings.php:898 classes/Settings.php:916 classes/Settings.php:925
|
3109 |
msgid "Set this option value 0 to remove time limit."
|
3110 |
msgstr ""
|
3111 |
|
3112 |
+
#: classes/Settings.php:905
|
3113 |
msgid "Allow Delete Own Topic within (minutes)"
|
3114 |
msgstr ""
|
3115 |
|
3116 |
+
#: classes/Settings.php:914
|
3117 |
msgid "Allow Edit Own Post within (minutes)"
|
3118 |
msgstr ""
|
3119 |
|
3120 |
+
#: classes/Settings.php:923
|
3121 |
msgid "Allow Delete Own Post within (minutes)"
|
3122 |
msgstr ""
|
3123 |
|
3124 |
+
#: classes/Settings.php:931
|
3125 |
msgid "Display Topic Editing Information"
|
3126 |
msgstr ""
|
3127 |
|
3128 |
+
#: classes/Settings.php:933
|
3129 |
msgid ""
|
3130 |
"The topic edit logging information 'This post was modified 2 hours ago by "
|
3131 |
"John' is displayed under modified topic first post content..."
|
3132 |
msgstr ""
|
3133 |
|
3134 |
+
#: classes/Settings.php:939
|
3135 |
msgid "Display Post Editing Information"
|
3136 |
msgstr ""
|
3137 |
|
3138 |
+
#: classes/Settings.php:941
|
3139 |
msgid ""
|
3140 |
"The post edit logging information 'This post was modified 2 hours ago by John' "
|
3141 |
"is displayed under modified post content..."
|
3142 |
msgstr ""
|
3143 |
|
3144 |
+
#: classes/Settings.php:948
|
3145 |
msgid "Limit Post Editing Information"
|
3146 |
msgstr ""
|
3147 |
|
3148 |
+
#: classes/Settings.php:950
|
3149 |
msgid ""
|
3150 |
"Limit the post edit logging information 'This post was modified 2 hours ago by "
|
3151 |
"John'. Set this option value 0 if you want to disable limiting."
|
3152 |
msgstr ""
|
3153 |
|
3154 |
+
#: classes/Settings.php:956
|
3155 |
msgid "Post Preview"
|
3156 |
msgstr ""
|
3157 |
|
3158 |
+
#: classes/Settings.php:964
|
3159 |
msgid "Post Revisions and Draft Saving"
|
3160 |
msgstr ""
|
3161 |
|
3162 |
+
#: classes/Settings.php:972
|
3163 |
msgid "Auto Drafting Interval"
|
3164 |
msgstr ""
|
3165 |
|
3166 |
+
#: classes/Settings.php:977
|
3167 |
msgid "disabled"
|
3168 |
msgstr ""
|
3169 |
|
3170 |
+
#: classes/Settings.php:978
|
3171 |
msgid "15 seconds"
|
3172 |
msgstr ""
|
3173 |
|
3174 |
+
#: classes/Settings.php:979
|
3175 |
msgid "30 seconds"
|
3176 |
msgstr ""
|
3177 |
|
3178 |
+
#: classes/Settings.php:980
|
3179 |
msgid "1 minute"
|
3180 |
msgstr ""
|
3181 |
|
3182 |
+
#: classes/Settings.php:981
|
3183 |
msgid "2 minute"
|
3184 |
msgstr ""
|
3185 |
|
3186 |
+
#: classes/Settings.php:982
|
3187 |
msgid "5 minute"
|
3188 |
msgstr ""
|
3189 |
|
3190 |
+
#: classes/Settings.php:989
|
3191 |
msgid "Max Number of Revisions"
|
3192 |
msgstr ""
|
3193 |
|
3194 |
+
#: classes/Settings.php:998 includes/phrases.php:355
|
3195 |
msgid "Maximum upload file size"
|
3196 |
msgstr ""
|
3197 |
|
3198 |
+
#: classes/Settings.php:1000
|
3199 |
msgid ""
|
3200 |
"You can not set this value more than 'upload_max_filesize' and "
|
3201 |
"'post_max_size'. If you want to increase server parameters please contact to "
|
3202 |
"your hosting service support."
|
3203 |
msgstr ""
|
3204 |
|
3205 |
+
#: classes/Settings.php:1006 includes/phrases.php:828
|
3206 |
msgid "Insert Forum Attachments to Media Library"
|
3207 |
msgstr ""
|
3208 |
|
3209 |
+
#: classes/Settings.php:1008 includes/phrases.php:829
|
3210 |
msgid ""
|
3211 |
"Enable this option to be able manage forum attachments in Dashboard > Media > "
|
3212 |
"Library admin page."
|
3213 |
msgstr ""
|
3214 |
|
3215 |
+
#: classes/Settings.php:1014
|
3216 |
msgid "Toolbar Location of the Topic Editor"
|
3217 |
msgstr ""
|
3218 |
|
3219 |
+
#: classes/Settings.php:1019 classes/Settings.php:1031
|
3220 |
msgid "Top"
|
3221 |
msgstr ""
|
3222 |
|
3223 |
+
#: classes/Settings.php:1020 classes/Settings.php:1032
|
3224 |
msgid "Bottom"
|
3225 |
msgstr ""
|
3226 |
|
3227 |
+
#: classes/Settings.php:1026
|
3228 |
msgid "Toolbar Location of the Reply Editor"
|
3229 |
msgstr ""
|
3230 |
|
3231 |
+
#: classes/Settings.php:1038
|
3232 |
msgid "Enable WordPress Shortcodes in Post Content"
|
3233 |
msgstr ""
|
3234 |
|
3235 |
+
#: classes/Settings.php:1046
|
3236 |
msgid "Allow extra HTML tags"
|
3237 |
msgstr ""
|
3238 |
|
3239 |
+
#: classes/Settings.php:1048
|
3240 |
msgid ""
|
3241 |
"By default, wpForo allows all secure HTML tags in post content. Allowing a new "
|
3242 |
"HTML tag may affect your forum security. For example the <iframe> and "
|
3246 |
"</code>"
|
3247 |
msgstr ""
|
3248 |
|
3249 |
+
#: classes/Settings.php:1055
|
3250 |
msgid "Display Members"
|
3251 |
msgstr ""
|
3252 |
|
3253 |
+
#: classes/Settings.php:1058
|
3254 |
msgid ""
|
3255 |
"This is the members' directory setting page. wpForo forum has a members' page "
|
3256 |
"where you can see all members. The members' page is called members directory, "
|
3259 |
"will be one for all boards."
|
3260 |
msgstr ""
|
3261 |
|
3262 |
+
#: classes/Settings.php:1069
|
3263 |
msgid "Members List Ordering"
|
3264 |
msgstr ""
|
3265 |
|
3266 |
+
#: classes/Settings.php:1074
|
3267 |
msgid "Last Online time"
|
3268 |
msgstr ""
|
3269 |
|
3270 |
+
#: classes/Settings.php:1075
|
3271 |
msgid "Posts Ascending"
|
3272 |
msgstr ""
|
3273 |
|
3274 |
+
#: classes/Settings.php:1076
|
3275 |
msgid "Posts Descending"
|
3276 |
msgstr ""
|
3277 |
|
3278 |
+
#: classes/Settings.php:1077
|
3279 |
msgid "Join Date Ascending"
|
3280 |
msgstr ""
|
3281 |
|
3282 |
+
#: classes/Settings.php:1078
|
3283 |
msgid "Join Date Descending"
|
3284 |
msgstr ""
|
3285 |
|
3286 |
+
#: classes/Settings.php:1079
|
3287 |
msgid "Display Name A->Z"
|
3288 |
msgstr ""
|
3289 |
|
3290 |
+
#: classes/Settings.php:1080
|
3291 |
msgid "Display Name Z->A"
|
3292 |
msgstr ""
|
3293 |
|
3294 |
+
#: classes/Settings.php:1086
|
3295 |
msgid "Hide Inactive Members"
|
3296 |
msgstr ""
|
3297 |
|
3298 |
+
#: classes/Settings.php:1088
|
3299 |
msgid ""
|
3300 |
"Members who have not confirmed their email after the registration are set as "
|
3301 |
"'inactive'. In most cases they are spam bots."
|
3302 |
msgstr ""
|
3303 |
|
3304 |
+
#: classes/Settings.php:1095
|
3305 |
msgid "Number of Members per Page"
|
3306 |
msgstr ""
|
3307 |
|
3308 |
+
#: classes/Settings.php:1103 includes/phrases.php:888
|
3309 |
msgid "Members Search Type"
|
3310 |
msgstr ""
|
3311 |
|
3312 |
+
#: classes/Settings.php:1108 includes/phrases.php:461
|
3313 |
msgid "Search"
|
3314 |
msgstr ""
|
3315 |
|
3316 |
+
#: classes/Settings.php:1116 includes/phrases.php:835
|
3317 |
msgid "Member Profile"
|
3318 |
msgstr ""
|
3319 |
|
3320 |
+
#: classes/Settings.php:1119
|
3321 |
msgid ""
|
3322 |
"wpForo forum has a powerful user profile system which can be managed in this "
|
3323 |
"setting page. Here you can hide/show forum header and footer on profile pages, "
|
3326 |
"plugins, you can switch forum profile page to the plugin profile page."
|
3327 |
msgstr ""
|
3328 |
|
3329 |
+
#: classes/Settings.php:1130
|
3330 |
msgid "Profile Page"
|
3331 |
msgstr ""
|
3332 |
|
3333 |
+
#: classes/Settings.php:1138
|
3334 |
msgid ""
|
3335 |
"wpForo Profile only for the forum, WordPress Profile for others, including "
|
3336 |
"comment authors, post authors and etc..."
|
3337 |
msgstr ""
|
3338 |
|
3339 |
#. Plugin Name of the plugin/theme
|
3340 |
+
#: classes/Settings.php:1142
|
3341 |
msgid "wpForo"
|
3342 |
msgstr ""
|
3343 |
|
3344 |
+
#: classes/Settings.php:1143
|
3345 |
msgid ""
|
3346 |
"wpForo Profile for the whole website including forum, comment authors, post "
|
3347 |
"authors and etc..."
|
3348 |
msgstr ""
|
3349 |
|
3350 |
+
#: classes/Settings.php:1147
|
3351 |
msgid "BuddyPress"
|
3352 |
msgstr ""
|
3353 |
|
3354 |
+
#: classes/Settings.php:1148
|
3355 |
msgid "BuddyPress Profile for the whole website including forum."
|
3356 |
msgstr ""
|
3357 |
|
3358 |
+
#: classes/Settings.php:1153
|
3359 |
msgid "Ultimate Member"
|
3360 |
msgstr ""
|
3361 |
|
3362 |
+
#: classes/Settings.php:1154
|
3363 |
msgid "Ultimate Member Profile for the whole website including forum."
|
3364 |
msgstr ""
|
3365 |
|
3366 |
+
#: classes/Settings.php:1162
|
3367 |
msgid "Show Forum Header on Profile Pages"
|
3368 |
msgstr ""
|
3369 |
|
3370 |
+
#: classes/Settings.php:1170
|
3371 |
msgid "Show Forum Footer under Profile Pages"
|
3372 |
msgstr ""
|
3373 |
|
3374 |
+
#: classes/Settings.php:1178
|
3375 |
msgid "Members URL Structure"
|
3376 |
msgstr ""
|
3377 |
|
3378 |
+
#: classes/Settings.php:1180
|
3379 |
msgid "By default "
|
3380 |
msgstr ""
|
3381 |
|
3382 |
+
#: classes/Settings.php:1190
|
3383 |
msgid "Online Status Timeout (minutes)"
|
3384 |
msgstr ""
|
3385 |
|
3386 |
+
#: classes/Settings.php:1198
|
3387 |
msgid "Member Custom Titles"
|
3388 |
msgstr ""
|
3389 |
|
3390 |
+
#: classes/Settings.php:1206
|
3391 |
msgid "Member Custom Title by Default"
|
3392 |
msgstr ""
|
3393 |
|
3394 |
+
#: classes/Settings.php:1214
|
3395 |
msgid "Display Member Primary Usergroup"
|
3396 |
msgstr ""
|
3397 |
|
3398 |
+
#: classes/Settings.php:1216
|
3399 |
msgid ""
|
3400 |
"The names of selected usergroups will be displayed under the corresponding "
|
3401 |
"usergroup's users avatar in forum posts."
|
3402 |
msgstr ""
|
3403 |
|
3404 |
+
#: classes/Settings.php:1222
|
3405 |
msgid "Display Member Secondary Usergroup"
|
3406 |
msgstr ""
|
3407 |
|
3408 |
+
#: classes/Settings.php:1224
|
3409 |
msgid ""
|
3410 |
"The names of selected secondary usergroups will be displayed under the "
|
3411 |
"corresponding usergroup's users avatar in forum posts."
|
3412 |
msgstr ""
|
3413 |
|
3414 |
+
#: classes/Settings.php:1230
|
3415 |
msgid "Display Member Nicknames"
|
3416 |
msgstr ""
|
3417 |
|
3418 |
+
#: classes/Settings.php:1232
|
3419 |
msgid ""
|
3420 |
"Nicknames are displayed with '@' symbol, like @john and are used for the user "
|
3421 |
"mentioning in posts. Please note, that this is not the user login name "
|
3423 |
"profile account page to secure the login name."
|
3424 |
msgstr ""
|
3425 |
|
3426 |
+
#: classes/Settings.php:1238 includes/phrases.php:263
|
3427 |
msgid "Enable Avatars"
|
3428 |
msgstr ""
|
3429 |
|
3430 |
+
#: classes/Settings.php:1240
|
3431 |
msgid ""
|
3432 |
"Using this option you can disable user avatars for the forum but you cannot "
|
3433 |
"show avatars if the WordPress native avatar option is disabled. So please make "
|
3435 |
"admin page."
|
3436 |
msgstr ""
|
3437 |
|
3438 |
+
#: classes/Settings.php:1246 includes/phrases.php:264
|
3439 |
msgid "Enable Custom Avatars"
|
3440 |
msgstr ""
|
3441 |
|
3442 |
+
#: classes/Settings.php:1248
|
3443 |
msgid ""
|
3444 |
"By default wpForo uses WordPress avatars. In most cases it's the Gravatar. If "
|
3445 |
"this option is enabled, users will be able to set their avatars with external "
|
3446 |
"URLs or upload from their devices."
|
3447 |
msgstr ""
|
3448 |
|
3449 |
+
#: classes/Settings.php:1254
|
3450 |
msgid "Site-wide Usage of Forum Profile Avatar"
|
3451 |
msgstr ""
|
3452 |
|
3453 |
+
#: classes/Settings.php:1256
|
3454 |
msgid ""
|
3455 |
"If this option is enabled, wpForo will try to use its avatar in all available "
|
3456 |
"places."
|
3457 |
msgstr ""
|
3458 |
|
3459 |
+
#: classes/Settings.php:1262
|
3460 |
msgid "The Default Profile Cover Image"
|
3461 |
msgstr ""
|
3462 |
|
3463 |
+
#: classes/Settings.php:1270 includes/phrases.php:217
|
3464 |
msgid "Allow Member Signature"
|
3465 |
msgstr ""
|
3466 |
|
3467 |
+
#: classes/Settings.php:1272
|
3468 |
msgid ""
|
3469 |
"You can edit usergroups and enable/disable the signature for each usergroups "
|
3470 |
"individually."
|
3471 |
msgstr ""
|
3472 |
|
3473 |
+
#: classes/Settings.php:1279 includes/phrases.php:358
|
3474 |
msgid "Member Rating"
|
3475 |
msgstr ""
|
3476 |
|
3477 |
+
#: classes/Settings.php:1282
|
3478 |
msgid ""
|
3479 |
"wpForo has built-in member reputation system based on points user get when he/"
|
3480 |
"she creates new topic, posts, when gets likes or dislikes. This system grants "
|
3482 |
"posts, titles, badges) can be customized and changed in this admin section."
|
3483 |
msgstr ""
|
3484 |
|
3485 |
+
#: classes/Settings.php:1282
|
3486 |
msgid ""
|
3487 |
" For an advanced user ranking and members' point awarding system we recommend "
|
3488 |
"using myCRED plugin with the integration addon: "
|
3489 |
msgstr ""
|
3490 |
|
3491 |
+
#: classes/Settings.php:1293
|
3492 |
msgid "Enable Member Rating Badges"
|
3493 |
msgstr ""
|
3494 |
|
3495 |
+
#: classes/Settings.php:1301 includes/phrases.php:267
|
3496 |
msgid "Enable Member Rating Titles"
|
3497 |
msgstr ""
|
3498 |
|
3499 |
+
#: classes/Settings.php:1317
|
3500 |
msgid "Points for One Topic"
|
3501 |
msgstr ""
|
3502 |
|
3503 |
+
#: classes/Settings.php:1326
|
3504 |
msgid "Points for One Post"
|
3505 |
msgstr ""
|
3506 |
|
3507 |
+
#: classes/Settings.php:1335
|
3508 |
msgid "Points for One Like"
|
3509 |
msgstr ""
|
3510 |
|
3511 |
+
#: classes/Settings.php:1344
|
3512 |
msgid "Points for One Dislike"
|
3513 |
msgstr ""
|
3514 |
|
3515 |
+
#: classes/Settings.php:1346
|
3516 |
msgid ""
|
3517 |
"This should be set a negative value like '-1' to decrease the user reputation "
|
3518 |
"points if he/she receives dislikes."
|
3519 |
msgstr ""
|
3520 |
|
3521 |
+
#: classes/Settings.php:1352
|
3522 |
msgid "Enable Reputation Titles for Selected Usergroups"
|
3523 |
msgstr ""
|
3524 |
|
3525 |
+
#: classes/Settings.php:1360
|
3526 |
msgid "Enable Reputation Badges for Selected Usergroups"
|
3527 |
msgstr ""
|
3528 |
|
3529 |
+
#: classes/Settings.php:1377
|
3530 |
msgid "Login & Registration"
|
3531 |
msgstr ""
|
3532 |
|
3533 |
+
#: classes/Settings.php:1380
|
3534 |
msgid ""
|
3535 |
"wpForo is one of the very rare plugins which has its own user registration and "
|
3536 |
"login pages. Both features are based on WordPress functions. Here you can "
|
3539 |
"actions."
|
3540 |
msgstr ""
|
3541 |
|
3542 |
+
#: classes/Settings.php:1380
|
3543 |
msgid ""
|
3544 |
"If you need to customize the registration form and add custom fields, you "
|
3545 |
"should check out user custom field builder addon:"
|
3546 |
msgstr ""
|
3547 |
|
3548 |
+
#: classes/Settings.php:1391 includes/phrases.php:824
|
3549 |
msgid "Enable User Registration"
|
3550 |
msgstr ""
|
3551 |
|
3552 |
+
#: classes/Settings.php:1393
|
3553 |
msgid ""
|
3554 |
"This option is not synced with WordPress 'Anyone can register' option in "
|
3555 |
"Dashboard > Settings > General admin page. If this option is enabled new users "
|
3556 |
"will always be able to register."
|
3557 |
msgstr ""
|
3558 |
|
3559 |
+
#: classes/Settings.php:1399
|
3560 |
msgid "Enable User Registration email confirmation"
|
3561 |
msgstr ""
|
3562 |
|
3563 |
+
#: classes/Settings.php:1401
|
3564 |
msgid ""
|
3565 |
"If you have enabled this option, after registering, user can not login without "
|
3566 |
"confirming the email."
|
3567 |
msgstr ""
|
3568 |
|
3569 |
+
#: classes/Settings.php:1407
|
3570 |
msgid "Enable User Manually Approval System"
|
3571 |
msgstr ""
|
3572 |
|
3573 |
+
#: classes/Settings.php:1409
|
3574 |
msgid ""
|
3575 |
"If you have enabled this option, after registering, user can not login without "
|
3576 |
"manually approving of administrator."
|
3577 |
msgstr ""
|
3578 |
|
3579 |
+
#: classes/Settings.php:1415
|
3580 |
msgid "Admin Contacting Form under the \"Awaiting approval\" Message"
|
3581 |
msgstr ""
|
3582 |
|
3583 |
+
#: classes/Settings.php:1417
|
3584 |
msgid ""
|
3585 |
"This option displays a contact form under the 'Awaiting approval' text to "
|
3586 |
"allow inactive users send a message to website administrator. This message "
|
3587 |
"will be sent to the administrator email address."
|
3588 |
msgstr ""
|
3589 |
|
3590 |
+
#: classes/Settings.php:1423
|
3591 |
msgid "Role-Usergroup Synchronization"
|
3592 |
msgstr ""
|
3593 |
|
3594 |
+
#: classes/Settings.php:1425
|
3595 |
msgid ""
|
3596 |
"Keep enabled this option to synch WordPress User Roles with Forum Usergroups. "
|
3597 |
"This connection allows to automatically change Usergroup of a user when his/"
|
3602 |
"they are only controlled by forum Usergroups."
|
3603 |
msgstr ""
|
3604 |
|
3605 |
+
#: classes/Settings.php:1431
|
3606 |
msgid "User Delete Method"
|
3607 |
msgstr ""
|
3608 |
|
3609 |
+
#: classes/Settings.php:1433
|
3610 |
msgid ""
|
3611 |
"Choose which method to use when user delete action comes. [Soft] option will "
|
3612 |
"not remove any content this user has already created. It'll only remove the "
|
3615 |
"user has already created."
|
3616 |
msgstr ""
|
3617 |
|
3618 |
+
#: classes/Settings.php:1436
|
3619 |
msgid "Soft"
|
3620 |
msgstr ""
|
3621 |
|
3622 |
+
#: classes/Settings.php:1436
|
3623 |
msgid ""
|
3624 |
"This method will delete only profile information so all content which created "
|
3625 |
"this user will be kept and renamed as Anonymous."
|
3626 |
msgstr ""
|
3627 |
|
3628 |
+
#: classes/Settings.php:1437
|
3629 |
msgid "Hard"
|
3630 |
msgstr ""
|
3631 |
|
3632 |
+
#: classes/Settings.php:1437
|
3633 |
msgid "This method will also remove all user information and content."
|
3634 |
msgstr ""
|
3635 |
|
3636 |
+
#: classes/Settings.php:1443 includes/phrases.php:446
|
3637 |
msgid "Replace Registration Page URL to Forum Registration Page URL"
|
3638 |
msgstr ""
|
3639 |
|
3640 |
+
#: classes/Settings.php:1451 includes/phrases.php:445
|
3641 |
msgid "Replace Login Page URL to Forum Login Page URL"
|
3642 |
msgstr ""
|
3643 |
|
3644 |
+
#: classes/Settings.php:1459 includes/phrases.php:886
|
3645 |
msgid "Replace Reset Password Page URL to Forum Reset Password Page URL"
|
3646 |
msgstr ""
|
3647 |
|
3648 |
+
#: classes/Settings.php:1467 includes/phrases.php:248
|
3649 |
msgid "Custom Authorization URLs"
|
3650 |
msgstr ""
|
3651 |
|
3652 |
+
#: classes/Settings.php:1469
|
3653 |
msgid ""
|
3654 |
"Use this option only if you have set other pages for authorization. wpForo "
|
3655 |
"doesn't change its own URLs, these options are only for other plugin "
|
3657 |
"you can set your profile plugin url"
|
3658 |
msgstr ""
|
3659 |
|
3660 |
+
#: classes/Settings.php:1476 includes/phrases.php:348
|
3661 |
msgid "Login URL"
|
3662 |
msgstr ""
|
3663 |
|
3664 |
+
#: classes/Settings.php:1484 includes/phrases.php:438
|
3665 |
msgid "Register URL"
|
3666 |
msgstr ""
|
3667 |
|
3668 |
+
#: classes/Settings.php:1492
|
3669 |
msgid "Lost Password"
|
3670 |
msgstr ""
|
3671 |
|
3672 |
+
#: classes/Settings.php:1500
|
3673 |
msgid "Custom Redirection URLs after following actions:"
|
3674 |
msgstr ""
|
3675 |
|
3676 |
+
#: classes/Settings.php:1502
|
3677 |
msgid "For member profile, account and subscription pages use following URLs:"
|
3678 |
msgstr ""
|
3679 |
|
3680 |
+
#: classes/Settings.php:1533
|
3681 |
msgid "Facebook API Configuration"
|
3682 |
msgstr ""
|
3683 |
|
3684 |
+
#: classes/Settings.php:1535
|
3685 |
msgid ""
|
3686 |
"In order to get an App ID and Secret Key from Facebook, you’ll need to "
|
3687 |
"register a new application. Don’t worry – its very easy, and your application "
|
3688 |
"doesn't need to do anything. We only need the keys."
|
3689 |
msgstr ""
|
3690 |
|
3691 |
+
#: classes/Settings.php:1535
|
3692 |
msgid "Please follow to this instruction"
|
3693 |
msgstr ""
|
3694 |
|
3695 |
+
#: classes/Settings.php:1542
|
3696 |
msgid "App ID"
|
3697 |
msgstr ""
|
3698 |
|
3699 |
+
#: classes/Settings.php:1550
|
3700 |
msgid "App Secret"
|
3701 |
msgstr ""
|
3702 |
|
3703 |
+
#: classes/Settings.php:1558
|
3704 |
msgid "Facebook Login"
|
3705 |
msgstr ""
|
3706 |
|
3707 |
+
#: classes/Settings.php:1560
|
3708 |
msgid "Adds Facebook Login button on Registration and Login pages."
|
3709 |
msgstr ""
|
3710 |
|
3711 |
+
#: classes/Settings.php:1566
|
3712 |
msgid "Facebook Login button on User Login page"
|
3713 |
msgstr ""
|
3714 |
|
3715 |
+
#: classes/Settings.php:1574
|
3716 |
msgid "Facebook Login button on User Registration page"
|
3717 |
msgstr ""
|
3718 |
|
3719 |
+
#: classes/Settings.php:1582
|
3720 |
msgid "Redirect to this page after success login"
|
3721 |
msgstr ""
|
3722 |
|
3723 |
+
#: classes/Settings.php:1595
|
3724 |
msgid "Custom URL, e.g.:"
|
3725 |
msgstr ""
|
3726 |
|
3727 |
+
#: classes/Settings.php:1596
|
3728 |
msgid "Redirect to custom URL after success login"
|
3729 |
msgstr ""
|
3730 |
|
3731 |
+
#: classes/Settings.php:1605
|
3732 |
msgid "Email Settings"
|
3733 |
msgstr ""
|
3734 |
|
3735 |
+
#: classes/Settings.php:1608
|
3736 |
msgid ""
|
3737 |
"Here, you can configure header information (FROM name and email) of forum "
|
3738 |
"specific emails. You can set administrators and moderators email addresses to "
|
3740 |
"find user registration, password resetting and post reporting email templates."
|
3741 |
msgstr ""
|
3742 |
|
3743 |
+
#: classes/Settings.php:1619
|
3744 |
msgid "FROM Name"
|
3745 |
msgstr ""
|
3746 |
|
3747 |
+
#: classes/Settings.php:1627
|
3748 |
msgid "FROM Email Address"
|
3749 |
msgstr ""
|
3750 |
|
3751 |
+
#: classes/Settings.php:1635
|
3752 |
msgid "Forum Admins Email Addresses"
|
3753 |
msgstr ""
|
3754 |
|
3755 |
+
#: classes/Settings.php:1637 includes/phrases.php:243
|
3756 |
msgid ""
|
3757 |
"Comma separated email addresses of forum administrators to get forum "
|
3758 |
"notifications. For example post report messages."
|
3759 |
msgstr ""
|
3760 |
|
3761 |
+
#: classes/Settings.php:1643
|
3762 |
msgid "Notify Admins via Email on New Topic"
|
3763 |
msgstr ""
|
3764 |
|
3765 |
+
#: classes/Settings.php:1645
|
3766 |
msgid ""
|
3767 |
"Send Notification emails to all email addresses (comma separated ) of forum "
|
3768 |
"administrators when a new Topic is created."
|
3769 |
msgstr ""
|
3770 |
|
3771 |
+
#: classes/Settings.php:1651
|
3772 |
msgid "Notify Admins via Email on New Post"
|
3773 |
msgstr ""
|
3774 |
|
3775 |
+
#: classes/Settings.php:1653
|
3776 |
msgid ""
|
3777 |
"Send Notification emails to all email addresses (comma separated ) of forum "
|
3778 |
"administrators when a new Reply is created."
|
3779 |
msgstr ""
|
3780 |
|
3781 |
+
#: classes/Settings.php:1659
|
3782 |
msgid "Stop Sending Emails to Admins on New User Registration"
|
3783 |
msgstr ""
|
3784 |
|
3785 |
+
#: classes/Settings.php:1661
|
3786 |
msgid ""
|
3787 |
"If you have enabled this option, after registering, the admin will not receive "
|
3788 |
"an email notification for newly registered user."
|
3789 |
msgstr ""
|
3790 |
|
3791 |
+
#: classes/Settings.php:1667
|
3792 |
msgid "Report Message Subject"
|
3793 |
msgstr ""
|
3794 |
|
3795 |
+
#: classes/Settings.php:1676
|
3796 |
msgid "Report Message Body"
|
3797 |
msgstr ""
|
3798 |
|
3799 |
+
#: classes/Settings.php:1684
|
3800 |
msgid "Reporter user display name"
|
3801 |
msgstr ""
|
3802 |
|
3803 |
+
#: classes/Settings.php:1685
|
3804 |
msgid "Reporter user message"
|
3805 |
msgstr ""
|
3806 |
|
3807 |
+
#: classes/Settings.php:1686
|
3808 |
msgid "Reported post URL"
|
3809 |
msgstr ""
|
3810 |
|
3811 |
+
#: classes/Settings.php:1693
|
3812 |
msgid "Overwrite WordPress New User Registration Email for Admins"
|
3813 |
msgstr ""
|
3814 |
|
3815 |
+
#: classes/Settings.php:1701 classes/Settings.php:1735 classes/Settings.php:1783
|
3816 |
msgid "Message Subject"
|
3817 |
msgstr ""
|
3818 |
|
3819 |
+
#: classes/Settings.php:1710 classes/Settings.php:1744 classes/Settings.php:1792
|
3820 |
msgid "Message Body"
|
3821 |
msgstr ""
|
3822 |
|
3823 |
+
#: classes/Settings.php:1718
|
3824 |
msgid "Website name"
|
3825 |
msgstr ""
|
3826 |
|
3827 |
+
#: classes/Settings.php:1719 classes/Settings.php:1751 classes/Settings.php:1775
|
3828 |
msgid "Registered user login"
|
3829 |
msgstr ""
|
3830 |
|
3831 |
+
#: classes/Settings.php:1720
|
3832 |
msgid "Registered user email"
|
3833 |
msgstr ""
|
3834 |
|
3835 |
+
#: classes/Settings.php:1727
|
3836 |
msgid "Overwrite WordPress New User Registration Email for Users"
|
3837 |
msgstr ""
|
3838 |
|
3839 |
+
#: classes/Settings.php:1752 classes/Settings.php:1776
|
3840 |
msgid "Link to open password reset form"
|
3841 |
msgstr ""
|
3842 |
|
3843 |
+
#: classes/Settings.php:1759
|
3844 |
msgid "Overwrite WordPress Reset Password Emails"
|
3845 |
msgstr ""
|
3846 |
|
3847 |
+
#: classes/Settings.php:1768
|
3848 |
msgid "Reset Password message body"
|
3849 |
msgstr ""
|
3850 |
|
3851 |
+
#: classes/Settings.php:1801
|
3852 |
+
msgid "WordPress Blog Name"
|
3853 |
+
msgstr ""
|
3854 |
+
|
3855 |
+
#: classes/Settings.php:1802
|
3856 |
+
msgid "Approved User Login"
|
3857 |
+
msgstr ""
|
3858 |
+
|
3859 |
+
#: classes/Settings.php:1803
|
3860 |
+
msgid "Approved User Login Link"
|
3861 |
+
msgstr ""
|
3862 |
+
|
3863 |
+
#: classes/Settings.php:1804
|
3864 |
+
msgid "Approved User Login URL"
|
3865 |
+
msgstr ""
|
3866 |
+
|
3867 |
+
#: classes/Settings.php:1812
|
3868 |
msgid "Subscriptions & Mentioning"
|
3869 |
msgstr ""
|
3870 |
|
3871 |
+
#: classes/Settings.php:1815
|
3872 |
msgid ""
|
3873 |
"wpForo has almost all kind of way to keep forum users updated about the latest "
|
3874 |
"posted content. Users can subscribe to forums and topics, they can be "
|
3877 |
"this admin section."
|
3878 |
msgstr ""
|
3879 |
|
3880 |
+
#: classes/Settings.php:1826 includes/phrases.php:800
|
3881 |
msgid "Enable Subscription Confirmation"
|
3882 |
msgstr ""
|
3883 |
|
3884 |
+
#: classes/Settings.php:1828 includes/phrases.php:801
|
3885 |
msgid "Forum and Topic subscription with double opt-in/confirmation system."
|
3886 |
msgstr ""
|
3887 |
|
3888 |
+
#: classes/Settings.php:1834
|
3889 |
msgid "Topic subscription option on post editor"
|
3890 |
msgstr ""
|
3891 |
|
3892 |
+
#: classes/Settings.php:1836
|
3893 |
msgid ""
|
3894 |
"This option adds topic subscription checkbox next to new topic and post submit "
|
3895 |
"button."
|
3896 |
msgstr ""
|
3897 |
|
3898 |
+
#: classes/Settings.php:1842
|
3899 |
msgid "Topic subscription option on post editor - checked/enabled"
|
3900 |
msgstr ""
|
3901 |
|
3902 |
+
#: classes/Settings.php:1844
|
3903 |
msgid ""
|
3904 |
"Enable this option if you want the topic subscription checkbox to be checked "
|
3905 |
"by default."
|
3906 |
msgstr ""
|
3907 |
|
3908 |
+
#: classes/Settings.php:1850
|
3909 |
msgid "Enable User Mentioning"
|
3910 |
msgstr ""
|
3911 |
|
3912 |
+
#: classes/Settings.php:1852
|
3913 |
msgid ""
|
3914 |
"If this option is enabled, users will receive email notification when someone "
|
3915 |
"uses @nickname of the user in posts."
|
3916 |
msgstr ""
|
3917 |
|
3918 |
+
#: classes/Settings.php:1858
|
3919 |
msgid "Enable User Following"
|
3920 |
msgstr ""
|
3921 |
|
3922 |
+
#: classes/Settings.php:1860
|
3923 |
msgid ""
|
3924 |
"If this option is enabled, the [Follow] button will be displayed on user's "
|
3925 |
"profile pages, allowing users to subscribe to certain users topics and posts. "
|
3927 |
"a new topic or post."
|
3928 |
msgstr ""
|
3929 |
|
3930 |
+
#: classes/Settings.php:1866 includes/phrases.php:500
|
3931 |
msgid "Subscribe confirmation email subject"
|
3932 |
msgstr ""
|
3933 |
|
3934 |
+
#: classes/Settings.php:1875 includes/phrases.php:499
|
3935 |
msgid "Subscribe confirmation email message"
|
3936 |
msgstr ""
|
3937 |
|
3938 |
+
#: classes/Settings.php:1883
|
3939 |
msgid "Subscribed forum or topic title"
|
3940 |
msgstr ""
|
3941 |
|
3942 |
+
#: classes/Settings.php:1884 classes/Settings.php:1913 classes/Settings.php:1946
|
3943 |
+
#: classes/Settings.php:2007
|
3944 |
msgid "Subscriber display name"
|
3945 |
msgstr ""
|
3946 |
|
3947 |
+
#: classes/Settings.php:1885
|
3948 |
msgid "Link to confirm subscription"
|
3949 |
msgstr ""
|
3950 |
|
3951 |
+
#: classes/Settings.php:1892 includes/phrases.php:381
|
3952 |
msgid "New topic notification email subject"
|
3953 |
msgstr ""
|
3954 |
|
3955 |
+
#: classes/Settings.php:1901 includes/phrases.php:380
|
3956 |
msgid "New topic notification email message"
|
3957 |
msgstr ""
|
3958 |
|
3959 |
+
#: classes/Settings.php:1914
|
3960 |
msgid "New topic author display name"
|
3961 |
msgstr ""
|
3962 |
|
3963 |
+
#: classes/Settings.php:1915
|
3964 |
msgid "Forum title / link"
|
3965 |
msgstr ""
|
3966 |
|
3967 |
+
#: classes/Settings.php:1916 classes/Settings.php:1948
|
3968 |
msgid "Topic title / link"
|
3969 |
msgstr ""
|
3970 |
|
3971 |
+
#: classes/Settings.php:1917
|
3972 |
msgid "New topic title"
|
3973 |
msgstr ""
|
3974 |
|
3975 |
+
#: classes/Settings.php:1918
|
3976 |
msgid "New topic excerpt"
|
3977 |
msgstr ""
|
3978 |
|
3979 |
+
#: classes/Settings.php:1919 classes/Settings.php:1951 classes/Settings.php:2011
|
3980 |
msgid "Link to unsubscribe"
|
3981 |
msgstr ""
|
3982 |
|
3983 |
+
#: classes/Settings.php:1926 includes/phrases.php:379
|
3984 |
msgid "New reply notification email subject"
|
3985 |
msgstr ""
|
3986 |
|
3987 |
+
#: classes/Settings.php:1935 includes/phrases.php:378
|
3988 |
msgid "New reply notification email message"
|
3989 |
msgstr ""
|
3990 |
|
3991 |
+
#: classes/Settings.php:1947
|
3992 |
msgid "New reply author display name"
|
3993 |
msgstr ""
|
3994 |
|
3995 |
+
#: classes/Settings.php:1949
|
3996 |
msgid "New reply title"
|
3997 |
msgstr ""
|
3998 |
|
3999 |
+
#: classes/Settings.php:1950
|
4000 |
msgid "New reply excerpt"
|
4001 |
msgstr ""
|
4002 |
|
4003 |
+
#: classes/Settings.php:1958
|
4004 |
msgid "User mention message subject"
|
4005 |
msgstr ""
|
4006 |
|
4007 |
+
#: classes/Settings.php:1967
|
4008 |
msgid "User Mention message body"
|
4009 |
msgstr ""
|
4010 |
|
4011 |
+
#: classes/Settings.php:1977
|
4012 |
msgid "Mentioned user display name"
|
4013 |
msgstr ""
|
4014 |
|
4015 |
+
#: classes/Settings.php:1978
|
4016 |
msgid "Post author display name"
|
4017 |
msgstr ""
|
4018 |
|
4019 |
+
#: classes/Settings.php:1979 includes/phrases.php:523
|
4020 |
msgid "Topic title"
|
4021 |
msgstr ""
|
4022 |
|
4023 |
+
#: classes/Settings.php:1980
|
4024 |
msgid "Link to the post"
|
4025 |
msgstr ""
|
4026 |
|
4027 |
+
#: classes/Settings.php:1981
|
4028 |
msgid "Mentioned post excerpt"
|
4029 |
msgstr ""
|
4030 |
|
4031 |
+
#: classes/Settings.php:1988
|
4032 |
msgid "User following notification email subject"
|
4033 |
msgstr ""
|
4034 |
|
4035 |
+
#: classes/Settings.php:1997
|
4036 |
msgid "User following notification email message"
|
4037 |
msgstr ""
|
4038 |
|
4039 |
+
#: classes/Settings.php:2008
|
4040 |
msgid "New post author display name"
|
4041 |
msgstr ""
|
4042 |
|
4043 |
+
#: classes/Settings.php:2009
|
4044 |
msgid "New post title"
|
4045 |
msgstr ""
|
4046 |
|
4047 |
+
#: classes/Settings.php:2010
|
4048 |
msgid "New post excerpt"
|
4049 |
msgstr ""
|
4050 |
|
4051 |
+
#: classes/Settings.php:2019
|
4052 |
msgid "Forum Notifications"
|
4053 |
msgstr ""
|
4054 |
|
4055 |
+
#: classes/Settings.php:2022
|
4056 |
msgid ""
|
4057 |
"As an addition to email notification functions, wpForo has in-forum "
|
4058 |
"notification system. You can see the notification bell on forum menu bar or in "
|
4059 |
"the sidebar with 'My Profile and Notifications' widget."
|
4060 |
msgstr ""
|
4061 |
|
4062 |
+
#: classes/Settings.php:2033
|
4063 |
msgid "Enable User Notification"
|
4064 |
msgstr ""
|
4065 |
|
4066 |
+
#: classes/Settings.php:2041
|
4067 |
msgid "Enable User Notification Live Update"
|
4068 |
msgstr ""
|
4069 |
|
4070 |
+
#: classes/Settings.php:2049
|
4071 |
msgid "Display User Notification Bell on Menu Bar"
|
4072 |
msgstr ""
|
4073 |
|
4074 |
+
#: classes/Settings.php:2058
|
4075 |
msgid "Action Logging & Views"
|
4076 |
msgstr ""
|
4077 |
|
4078 |
+
#: classes/Settings.php:2061
|
4079 |
msgid ""
|
4080 |
"wpForo logging system allows tracking and providing live information about "
|
4081 |
"forum viewers. It detects read/unread status of forums and posts for guests "
|
4083 |
"features of the forum logging system."
|
4084 |
msgstr ""
|
4085 |
|
4086 |
+
#: classes/Settings.php:2072 includes/phrases.php:885
|
4087 |
msgid "Log Viewed Forums and Topics"
|
4088 |
msgstr ""
|
4089 |
|
4090 |
+
#: classes/Settings.php:2080
|
4091 |
msgid "Track Forum and Topic Current Viewers"
|
4092 |
msgstr ""
|
4093 |
|
4094 |
+
#: classes/Settings.php:2088
|
4095 |
msgid "Topic Links - Jump to First Unread Post"
|
4096 |
msgstr ""
|
4097 |
|
4098 |
+
#: classes/Settings.php:2090
|
4099 |
msgid ""
|
4100 |
"If this option is enabled, all topic links on forums page and on topics page "
|
4101 |
"will refer to the first unread post. This behavior is only enabled for logged-"
|
4102 |
"in users."
|
4103 |
msgstr ""
|
4104 |
|
4105 |
+
#: classes/Settings.php:2096
|
4106 |
msgid "Jump to First Unread Post with [new] Button in Topic Link"
|
4107 |
msgstr ""
|
4108 |
|
4109 |
+
#: classes/Settings.php:2098
|
4110 |
msgid ""
|
4111 |
"Adds [new] button at the and of topic links, which jumps to the first unread "
|
4112 |
"post."
|
4113 |
msgstr ""
|
4114 |
|
4115 |
+
#: classes/Settings.php:2104
|
4116 |
msgid "Display Forum Current Viewers"
|
4117 |
msgstr ""
|
4118 |
|
4119 |
+
#: classes/Settings.php:2106
|
4120 |
msgid ""
|
4121 |
"Displays information about forum current viewers (x viewing) next to forum "
|
4122 |
"title."
|
4123 |
msgstr ""
|
4124 |
|
4125 |
+
#: classes/Settings.php:2112
|
4126 |
msgid "Display Topic Current Viewers"
|
4127 |
msgstr ""
|
4128 |
|
4129 |
+
#: classes/Settings.php:2114
|
4130 |
msgid ""
|
4131 |
"Displays information about topic current viewers (x viewing) next to topic "
|
4132 |
"title"
|
4133 |
msgstr ""
|
4134 |
|
4135 |
+
#: classes/Settings.php:2120
|
4136 |
msgid "Display Recent Viewers in the Topic Footer"
|
4137 |
msgstr ""
|
4138 |
|
4139 |
+
#: classes/Settings.php:2122
|
4140 |
msgid ""
|
4141 |
"Displays information about topic recent viewers (users visited within last one "
|
4142 |
"hour)"
|
4143 |
msgstr ""
|
4144 |
|
4145 |
+
#: classes/Settings.php:2128
|
4146 |
msgid "Display Administrators in the Topic Recent Viewers Section"
|
4147 |
msgstr ""
|
4148 |
|
4149 |
+
#: classes/Settings.php:2130
|
4150 |
msgid ""
|
4151 |
"By disabling this option you can exclude forum administrators from the topic "
|
4152 |
"viewers section."
|
4153 |
msgstr ""
|
4154 |
|
4155 |
+
#: classes/Settings.php:2137
|
4156 |
msgid "wpForo SEO"
|
4157 |
msgstr ""
|
4158 |
|
4159 |
+
#: classes/Settings.php:2140
|
4160 |
msgid ""
|
4161 |
"wpForo comes with built-in powerful forum SEO features. wpForo doesn't need "
|
4162 |
"any SEO plugin, however you should use SEO plugins for other parts of your "
|
4164 |
"pages and generates all necessary SEO meta tags."
|
4165 |
msgstr ""
|
4166 |
|
4167 |
+
#: classes/Settings.php:2151
|
4168 |
msgid "Enable Meta Titles"
|
4169 |
msgstr ""
|
4170 |
|
4171 |
+
#: classes/Settings.php:2159
|
4172 |
msgid "Enable Meta Tags"
|
4173 |
msgstr ""
|
4174 |
|
4175 |
+
#: classes/Settings.php:2167
|
4176 |
msgid "Enable User Profile Page indexing"
|
4177 |
msgstr ""
|
4178 |
|
4179 |
+
#: classes/Settings.php:2175
|
4180 |
msgid "Enable Forums Sitemap"
|
4181 |
msgstr ""
|
4182 |
|
4183 |
+
#: classes/Settings.php:2183
|
4184 |
msgid "Enable Topics Sitemap"
|
4185 |
msgstr ""
|
4186 |
|
4187 |
+
#: classes/Settings.php:2191
|
4188 |
msgid "Enable Members Sitemap"
|
4189 |
msgstr ""
|
4190 |
|
4191 |
+
#: classes/Settings.php:2200
|
4192 |
msgid "Allowed dofollow domains"
|
4193 |
msgstr ""
|
4194 |
|
4195 |
+
#: classes/Settings.php:2202
|
4196 |
msgid ""
|
4197 |
"wpForo adds nofollow to all links with external URLs. If you want to keep some "
|
4198 |
"domains as internal please insert domains one per line in the textarea bellow."
|
4199 |
msgstr ""
|
4200 |
|
4201 |
+
#: classes/Settings.php:2209
|
4202 |
msgid "Noindex forum page URLs"
|
4203 |
msgstr ""
|
4204 |
|
4205 |
+
#: classes/Settings.php:2211
|
4206 |
msgid ""
|
4207 |
"The noIndex code tells Google and other search engines to NOT index the page, "
|
4208 |
"so that it cannot be found in search results. Please insert page URLs you do "
|
4209 |
"not want to be indexed one per line in the textarea bellow."
|
4210 |
msgstr ""
|
4211 |
|
4212 |
+
#: classes/Settings.php:2218
|
4213 |
msgid "Spam Protection"
|
4214 |
msgstr ""
|
4215 |
|
4216 |
+
#: classes/Settings.php:2221
|
4217 |
msgid ""
|
4218 |
"Here you can find many ways to protect your forum from spammers. Most of them "
|
4219 |
"are already configured and enabled with default values. You can make spam "
|
4222 |
"Akismet."
|
4223 |
msgstr ""
|
4224 |
|
4225 |
+
#: classes/Settings.php:2232
|
4226 |
msgid "Enable wpForo Spam Control"
|
4227 |
msgstr ""
|
4228 |
|
4229 |
+
#: classes/Settings.php:2240
|
4230 |
msgid "Ban user when spam is suspected"
|
4231 |
msgstr ""
|
4232 |
|
4233 |
+
#: classes/Settings.php:2250
|
4234 |
msgid "Spam Suspicion Level for Topics"
|
4235 |
msgstr ""
|
4236 |
|
4237 |
+
#: classes/Settings.php:2260
|
4238 |
msgid "Spam Suspicion Level for Posts"
|
4239 |
msgstr ""
|
4240 |
|
4241 |
+
#: classes/Settings.php:2269
|
4242 |
msgid "User is New (under hard spam control) during first [X] posts"
|
4243 |
msgstr ""
|
4244 |
|
4245 |
+
#: classes/Settings.php:2277
|
4246 |
msgid "Posts must be manually approved"
|
4247 |
msgstr ""
|
4248 |
|
4249 |
+
#: classes/Settings.php:2286
|
4250 |
msgid "Min number of posts to be able to edit profile information"
|
4251 |
msgstr ""
|
4252 |
|
4253 |
+
#: classes/Settings.php:2295
|
4254 |
msgid "Min number of posts to be able to attach files"
|
4255 |
msgstr ""
|
4256 |
|
4257 |
+
#: classes/Settings.php:2304
|
4258 |
msgid "Min number of posts to be able to post links"
|
4259 |
msgstr ""
|
4260 |
|
4261 |
+
#: classes/Settings.php:2312
|
4262 |
msgid "Do not allow attaching files with following extensions"
|
4263 |
msgstr ""
|
4264 |
|
4265 |
+
#: classes/Settings.php:2320
|
4266 |
msgid "Enable File Scanner"
|
4267 |
msgstr ""
|
4268 |
|
4269 |
+
#: classes/Settings.php:2328
|
4270 |
msgid "Exclude file extensions"
|
4271 |
msgstr ""
|
4272 |
|
4273 |
+
#: classes/Settings.php:2337 includes/hooks.php:2682
|
4274 |
msgid "Google reCAPTCHA"
|
4275 |
msgstr ""
|
4276 |
|
4277 |
+
#: classes/Settings.php:2340
|
4278 |
msgid ""
|
4279 |
"reCAPTCHA protects you against spam and other types of automated abuse. It "
|
4280 |
"makes secure topic and post editors when Guest Posting is allowed, also it "
|
4282 |
"built-in reCAPTCHA version 2, \"I'm not a robot\" checkbox."
|
4283 |
msgstr ""
|
4284 |
|
4285 |
+
#: classes/Settings.php:2351
|
4286 |
msgid "reCAPTCHA API Keys"
|
4287 |
msgstr ""
|
4288 |
|
4289 |
+
#: classes/Settings.php:2351
|
4290 |
msgid "(version 2, \"I'm not a robot\" checkbox)"
|
4291 |
msgstr ""
|
4292 |
|
4293 |
+
#: classes/Settings.php:2353
|
4294 |
msgid ""
|
4295 |
"To start using reCAPTCHA, you need to sign up for an API key pair for your "
|
4296 |
"site."
|
4297 |
msgstr ""
|
4298 |
|
4299 |
+
#: classes/Settings.php:2353
|
4300 |
msgid "Register your site and get API keys here »"
|
4301 |
msgstr ""
|
4302 |
|
4303 |
+
#: classes/Settings.php:2376
|
4304 |
msgid "reCAPTCHA Theme"
|
4305 |
msgstr ""
|
4306 |
|
4307 |
+
#: classes/Settings.php:2388
|
4308 |
msgid "Guest Topic Editor"
|
4309 |
msgstr ""
|
4310 |
|
4311 |
+
#: classes/Settings.php:2396
|
4312 |
msgid "Guest Post Editor"
|
4313 |
msgstr ""
|
4314 |
|
4315 |
+
#: classes/Settings.php:2404
|
4316 |
msgid "wpForo Login Form"
|
4317 |
msgstr ""
|
4318 |
|
4319 |
+
#: classes/Settings.php:2412
|
4320 |
msgid "wpForo Registration Form"
|
4321 |
msgstr ""
|
4322 |
|
4323 |
+
#: classes/Settings.php:2420
|
4324 |
msgid "wpForo Reset Password Form"
|
4325 |
msgstr ""
|
4326 |
|
4327 |
+
#: classes/Settings.php:2428
|
4328 |
msgid "WordPress Login Form"
|
4329 |
msgstr ""
|
4330 |
|
4331 |
+
#: classes/Settings.php:2436
|
4332 |
msgid "WordPress Registration Form"
|
4333 |
msgstr ""
|
4334 |
|
4335 |
+
#: classes/Settings.php:2444
|
4336 |
msgid "WordPress Reset Password Form"
|
4337 |
msgstr ""
|
4338 |
|
4339 |
+
#: classes/Settings.php:2453
|
4340 |
msgid "Akismet Antispam Integration"
|
4341 |
msgstr ""
|
4342 |
|
4343 |
+
#: classes/Settings.php:2456
|
4344 |
msgid ""
|
4345 |
"Akismet checks your forum posts with authors form submissions against their "
|
4346 |
"global database of spam to prevent your site from publishing malicious "
|
4348 |
"Control more intuitive and productive."
|
4349 |
msgstr ""
|
4350 |
|
4351 |
+
#: classes/Settings.php:2467
|
4352 |
msgid "Enable Akismet Integration"
|
4353 |
msgstr ""
|
4354 |
|
4355 |
+
#: classes/Settings.php:2469
|
4356 |
msgid ""
|
4357 |
"Please make sure the Akismet plugin installed and the Akismet API keys are "
|
4358 |
"configured."
|
4359 |
msgstr ""
|
4360 |
|
4361 |
+
#: classes/Settings.php:2476
|
4362 |
msgid "Forum Feed / RSS"
|
4363 |
msgstr ""
|
4364 |
|
4365 |
+
#: classes/Settings.php:2479
|
4366 |
msgid ""
|
4367 |
"RSS (Rich Site Summary; originally RDF Site Summary; often called Really "
|
4368 |
"Simple Syndication) uses a family of standard web feed formats to publish "
|
4371 |
"post titles/links/excerpt publishing date and author’s name."
|
4372 |
msgstr ""
|
4373 |
|
4374 |
+
#: classes/Settings.php:2490 includes/phrases.php:887
|
4375 |
msgid "Enable RSS Feed"
|
4376 |
msgstr ""
|
4377 |
|
4378 |
+
#: classes/Settings.php:2498
|
4379 |
msgid "Enable General RSS Feed"
|
4380 |
msgstr ""
|
4381 |
|
4382 |
+
#: classes/Settings.php:2506
|
4383 |
msgid "Enable Forum RSS Feed"
|
4384 |
msgstr ""
|
4385 |
|
4386 |
+
#: classes/Settings.php:2514
|
4387 |
msgid "Enable Topic RSS Feed"
|
4388 |
msgstr ""
|
4389 |
|
4390 |
+
#: classes/Settings.php:2523
|
4391 |
msgid "Social Share"
|
4392 |
msgstr ""
|
4393 |
|
4394 |
+
#: classes/Settings.php:2526
|
4395 |
msgid ""
|
4396 |
"Here you can find social network sharing options. wpForo allows sharing almost "
|
4397 |
"all forum content (forums, topics, posts individually). The share button style "
|
4399 |
"type, location, etc..."
|
4400 |
msgstr ""
|
4401 |
|
4402 |
+
#: classes/Settings.php:2536
|
4403 |
msgid "Active Share Buttons"
|
4404 |
msgstr ""
|
4405 |
|
4406 |
+
#: classes/Settings.php:2538
|
4407 |
msgid ""
|
4408 |
"Check the checkbox share options to activate. Please note, that the Facebook "
|
4409 |
"share button cannot be activated without Facebook API ID. Please follow to the "
|
4412 |
"button."
|
4413 |
msgstr ""
|
4414 |
|
4415 |
+
#: classes/Settings.php:2544
|
4416 |
msgid "Enable General Share Buttons"
|
4417 |
msgstr ""
|
4418 |
|
4419 |
+
#: classes/Settings.php:2546
|
4420 |
msgid ""
|
4421 |
"General share buttons are forum and topic sharing buttons. They are located on "
|
4422 |
"the top and the bottom of each page. You can manage location of these buttons "
|
4423 |
"using 'Share Buttons Location' options below."
|
4424 |
msgstr ""
|
4425 |
|
4426 |
+
#: classes/Settings.php:2552
|
4427 |
msgid "Enable Post Sharing Toggle"
|
4428 |
msgstr ""
|
4429 |
|
4430 |
+
#: classes/Settings.php:2560
|
4431 |
msgid "General Share Buttons Color"
|
4432 |
msgstr ""
|
4433 |
|
4434 |
+
#: classes/Settings.php:2572
|
4435 |
msgid "General Share Buttons Type"
|
4436 |
msgstr ""
|
4437 |
|
4438 |
+
#: classes/Settings.php:2586
|
4439 |
msgid ""
|
4440 |
"Post sharing toggle allows you to share posts individually. You can see post "
|
4441 |
"sharing toggles on the left, right side or in top bar of each post. The toggle "
|
4445 |
"original colors on mouse hover."
|
4446 |
msgstr ""
|
4447 |
|
4448 |
+
#: classes/Settings.php:2592
|
4449 |
msgid "Post Sharing Toggle View"
|
4450 |
msgstr ""
|
4451 |
|
4452 |
+
#: classes/Settings.php:2604
|
4453 |
msgid "Post Sharing Toggle Icon"
|
4454 |
msgstr ""
|
4455 |
|
4456 |
+
#: classes/Settings.php:2616
|
4457 |
msgid "General Share Button Locations"
|
4458 |
msgstr ""
|
4459 |
|
4460 |
+
#: classes/Settings.php:2618
|
4461 |
msgid ""
|
4462 |
"The general share buttons can be displayed on both (top and bottom) locations."
|
4463 |
msgstr ""
|
4464 |
|
4465 |
+
#: classes/Settings.php:2623
|
4466 |
msgid "Post Sharing Toggle Locations"
|
4467 |
msgstr ""
|
4468 |
|
4469 |
+
#: classes/Settings.php:2625
|
4470 |
msgid ""
|
4471 |
"The post sharing toggle can be displayed either on the left side or on the top "
|
4472 |
"of each post."
|
4473 |
msgstr ""
|
4474 |
|
4475 |
+
#: classes/Settings.php:2632
|
4476 |
msgid "BuddyPress Integration"
|
4477 |
msgstr ""
|
4478 |
|
4479 |
+
#: classes/Settings.php:2635
|
4480 |
msgid ""
|
4481 |
"wpForo is well integrated with BuddyPress and with all plugins and themes "
|
4482 |
"based on BuddyPress. The integration includes changing forum profile page URL "
|
4484 |
"BuddyPress profile page."
|
4485 |
msgstr ""
|
4486 |
|
4487 |
+
#: classes/Settings.php:2646
|
4488 |
msgid "BuddyPress Activity Integration"
|
4489 |
msgstr ""
|
4490 |
|
4491 |
+
#: classes/Settings.php:2648
|
4492 |
msgid ""
|
4493 |
"Posts members activity (new topic, new reply, post like) to BuddyPress Profile "
|
4494 |
"Activity page."
|
4495 |
msgstr ""
|
4496 |
|
4497 |
+
#: classes/Settings.php:2654
|
4498 |
msgid "BuddyPress Notification Integration"
|
4499 |
msgstr ""
|
4500 |
|
4501 |
+
#: classes/Settings.php:2656
|
4502 |
msgid ""
|
4503 |
"Creates notification on new forum reply in BuddyPress Profile Notification "
|
4504 |
"page."
|
4505 |
msgstr ""
|
4506 |
|
4507 |
+
#: classes/Settings.php:2662
|
4508 |
msgid "BuddyPress Profile Forum Tab Integration"
|
4509 |
msgstr ""
|
4510 |
|
4511 |
+
#: classes/Settings.php:2664
|
4512 |
msgid ""
|
4513 |
"Adds 'Forums' tab with 'Created Topics', 'Posted Replies', 'Liked Posts' and "
|
4514 |
"'Subscriptions' sub-tabs to BuddyPress Profile page."
|
4515 |
msgstr ""
|
4516 |
|
4517 |
+
#: classes/Settings.php:2671
|
4518 |
msgid "Ultimate Members Integration"
|
4519 |
msgstr ""
|
4520 |
|
4521 |
+
#: classes/Settings.php:2674
|
4522 |
msgid ""
|
4523 |
"wpForo is well integrated with Ultimate Members plugin. The integration "
|
4524 |
"includes changing forum profile page URL to Ultimate Members profile page URL, "
|
4526 |
"Ultimate Members' Real-time Notifications addon."
|
4527 |
msgstr ""
|
4528 |
|
4529 |
+
#: classes/Settings.php:2685
|
4530 |
msgid "Ultimate Member Notification Integration"
|
4531 |
msgstr ""
|
4532 |
|
4533 |
+
#: classes/Settings.php:2687
|
4534 |
msgid ""
|
4535 |
"Creates notification on new forum reply in Ultimate Member Real-time "
|
4536 |
"Notification system. This integration requires"
|
4537 |
msgstr ""
|
4538 |
|
4539 |
+
#: classes/Settings.php:2687
|
4540 |
msgid "plugin."
|
4541 |
msgstr ""
|
4542 |
|
4543 |
+
#: classes/Settings.php:2693
|
4544 |
msgid "Ultimate Member Profile Forum Tab Integration"
|
4545 |
msgstr ""
|
4546 |
|
4547 |
+
#: classes/Settings.php:2695
|
4548 |
msgid ""
|
4549 |
"Adds 'Forums' tab with 'Created Topics', 'Posted Replies', 'Liked Posts' and "
|
4550 |
"'Subscriptions' sub-tabs to Ultimate Member Profile page."
|
4551 |
msgstr ""
|
4552 |
|
4553 |
+
#: classes/Settings.php:2702
|
4554 |
msgid "Privacy & Forum Rules"
|
4555 |
msgstr ""
|
4556 |
|
4557 |
+
#: classes/Settings.php:2715
|
4558 |
msgid "Contact Information"
|
4559 |
msgstr ""
|
4560 |
|
4561 |
+
#: classes/Settings.php:2717
|
4562 |
msgid ""
|
4563 |
"According to the GDPR, all users should have an option to contact website "
|
4564 |
"administrator in following cases: "
|
4565 |
msgstr ""
|
4566 |
|
4567 |
+
#: classes/Settings.php:2717
|
4568 |
msgid "Obtain personal data and created content"
|
4569 |
msgstr ""
|
4570 |
|
4571 |
+
#: classes/Settings.php:2717
|
4572 |
msgid "Delete account with created content"
|
4573 |
msgstr ""
|
4574 |
|
4575 |
+
#: classes/Settings.php:2717
|
4576 |
msgid "Report user data access and control issue"
|
4577 |
msgstr ""
|
4578 |
|
4579 |
+
#: classes/Settings.php:2717
|
4580 |
msgid "Report user rights violation"
|
4581 |
msgstr ""
|
4582 |
|
4583 |
+
#: classes/Settings.php:2720
|
4584 |
msgid "URL to contact forum administrator"
|
4585 |
msgstr ""
|
4586 |
|
4587 |
+
#: classes/Settings.php:2724
|
4588 |
msgid "Checkbox: I Accept Website Terms and Privacy Policy"
|
4589 |
msgstr ""
|
4590 |
|
4591 |
+
#: classes/Settings.php:2726
|
4592 |
msgid ""
|
4593 |
"If this option is enabled, users must accept forum Terms and Privacy Policy by "
|
4594 |
"checking the required checkbox on registration form to be able create a forum "
|
4595 |
"account. The checkbox label can be managed in Forums > Phrases admin page."
|
4596 |
msgstr ""
|
4597 |
|
4598 |
+
#: classes/Settings.php:2732
|
4599 |
msgid "Checkbox: I Agree to Receive an Email Confirmation"
|
4600 |
msgstr ""
|
4601 |
|
4602 |
+
#: classes/Settings.php:2734
|
4603 |
msgid ""
|
4604 |
"If this option is enabled, users must agree to receive an email confirmation "
|
4605 |
"with a link to set a password by checking the required checkbox on "
|
4607 |
"managed in Forums > Phrases admin page."
|
4608 |
msgstr ""
|
4609 |
|
4610 |
+
#: classes/Settings.php:2740
|
4611 |
msgid "Page URL to Website Terms"
|
4612 |
msgstr ""
|
4613 |
|
4614 |
+
#: classes/Settings.php:2742
|
4615 |
msgid ""
|
4616 |
"Please insert URLs to your website Terms and Conditions. Links to these pages "
|
4617 |
"will be included in registration form checkbox label (I'm agree with website "
|
4618 |
"terms and privacy policy)."
|
4619 |
msgstr ""
|
4620 |
|
4621 |
+
#: classes/Settings.php:2745
|
4622 |
msgid "Page URL to website terms"
|
4623 |
msgstr ""
|
4624 |
|
4625 |
+
#: classes/Settings.php:2749
|
4626 |
msgid "Page URL to Website Privacy Policy"
|
4627 |
msgstr ""
|
4628 |
|
4629 |
+
#: classes/Settings.php:2751
|
4630 |
msgid ""
|
4631 |
"Please insert URLs to your website Terms and Privacy Policy pages. Links to "
|
4632 |
"these pages will be included in registration form checkbox label (I'm agree "
|
4635 |
"your website main Privacy Policy. Thus it should be linked to according pages."
|
4636 |
msgstr ""
|
4637 |
|
4638 |
+
#: classes/Settings.php:2754
|
4639 |
msgid "Page URL to website privacy policy"
|
4640 |
msgstr ""
|
4641 |
|
4642 |
+
#: classes/Settings.php:2758
|
4643 |
msgid "Checkbox: I Agree to Forum Privacy Policy"
|
4644 |
msgstr ""
|
4645 |
|
4646 |
+
#: classes/Settings.php:2760
|
4647 |
msgid ""
|
4648 |
"If this option is enabled, users must accept forum Terms and Privacy Policy by "
|
4649 |
"checking the required checkbox on registration form to be able create a forum "
|
4650 |
"account. The checkbox label can be managed in Forums > Phrases admin page"
|
4651 |
msgstr ""
|
4652 |
|
4653 |
+
#: classes/Settings.php:2769
|
4654 |
msgid "Forum Privacy Policy with GDPR compliant Template"
|
4655 |
msgstr ""
|
4656 |
|
4657 |
+
#: classes/Settings.php:2771
|
4658 |
msgid ""
|
4659 |
"This is an example of forum Privacy Policy with GDPR compliant. It adapted to "
|
4660 |
"wpForo plugin functions and features. <u>In case you enable this privacy "
|
4668 |
"privacy policy page for website please add a link to that page."
|
4669 |
msgstr ""
|
4670 |
|
4671 |
+
#: classes/Settings.php:2776
|
4672 |
msgid "Checkbox: I Agree to create a forum account on Facebook Login"
|
4673 |
msgstr ""
|
4674 |
|
4675 |
+
#: classes/Settings.php:2778
|
4676 |
msgid ""
|
4677 |
"If this option is enabled, the Facebook Login button becomes not-clickable "
|
4678 |
"until user accept automatic account creation process based on his/her Facebook "
|
4680 |
"displayed with Facebook Login button to comply with the GDPR"
|
4681 |
msgstr ""
|
4682 |
|
4683 |
+
#: classes/Settings.php:2778
|
4684 |
msgid ""
|
4685 |
"The note text and the label of this checkbox can be managed in Forums > "
|
4686 |
"Phrases admin page. Search the label phrase, click on edit button and change "
|
4687 |
"it."
|
4688 |
msgstr ""
|
4689 |
|
4690 |
+
#: classes/Settings.php:2784
|
4691 |
msgid "Forum Cookies"
|
4692 |
msgstr ""
|
4693 |
|
4694 |
+
#: classes/Settings.php:2786
|
4695 |
msgid ""
|
4696 |
"Please note, that this option is only related to wpForo cookies. This doesn't "
|
4697 |
"disable WordPress and other plugins cookies. wpForo stores a small amount of "
|
4704 |
"these fields when he/she posts a new reply or creates a new topic."
|
4705 |
msgstr ""
|
4706 |
|
4707 |
+
#: classes/Settings.php:2792
|
4708 |
msgid "Checkbox: I Accept Forum Rules"
|
4709 |
msgstr ""
|
4710 |
|
4711 |
+
#: classes/Settings.php:2794
|
4712 |
msgid ""
|
4713 |
"If this option is enabled, users must accept forum rules by checking the "
|
4714 |
"required checkbox on registration form to be able create a forum account. The "
|
4716 |
"Search the label phrase, click on edit button and change it."
|
4717 |
msgstr ""
|
4718 |
|
4719 |
+
#: classes/Settings.php:2803
|
4720 |
msgid "Forum Rules Text"
|
4721 |
msgstr ""
|
4722 |
|
4723 |
+
#: classes/Settings.php:2805
|
4724 |
msgid "This is a basic example of forum rules provided by"
|
4725 |
msgstr ""
|
4726 |
|
4727 |
+
#: classes/Settings.php:2805
|
4728 |
msgid "You should edit this text and adapt it to your community rules."
|
4729 |
msgstr ""
|
4730 |
|
4731 |
+
#: classes/Settings.php:3065
|
4732 |
msgid "TB"
|
4733 |
msgstr ""
|
4734 |
|
4735 |
+
#: classes/Settings.php:3070
|
4736 |
msgid "GB"
|
4737 |
msgstr ""
|
4738 |
|
4739 |
+
#: classes/Settings.php:3075 includes/phrases.php:352
|
4740 |
msgid "MB"
|
4741 |
msgstr ""
|
4742 |
|
4743 |
+
#: classes/Settings.php:3080
|
4744 |
msgid "KB"
|
4745 |
msgstr ""
|
4746 |
|
4747 |
+
#: classes/Settings.php:3085
|
4748 |
msgid "B"
|
4749 |
msgstr ""
|
4750 |
|
4751 |
+
#: classes/Settings.php:3104
|
4752 |
msgid "Min Allowed Size is "
|
4753 |
msgstr ""
|
4754 |
|
4755 |
+
#: classes/Settings.php:3105
|
4756 |
msgid "Max Allowed Size is "
|
4757 |
msgstr ""
|
4758 |
|
4759 |
+
#: classes/Settings.php:3106 includes/phrases.php:474
|
4760 |
msgid "Server \"upload_max_filesize\" is "
|
4761 |
msgstr ""
|
4762 |
|
4763 |
+
#: classes/Settings.php:3107 includes/phrases.php:473
|
4764 |
msgid "Server \"post_max_size\" is "
|
4765 |
msgstr ""
|
4766 |
|
4767 |
+
#: classes/Settings.php:3113
|
4768 |
msgid "Minute"
|
4769 |
msgstr ""
|
4770 |
|
4771 |
+
#: classes/Settings.php:3325 includes/hooks.php:1551 includes/phrases.php:433
|
4772 |
msgid "Rating Level"
|
4773 |
msgstr ""
|
4774 |
|
4775 |
+
#: classes/Settings.php:3326
|
4776 |
msgid "Min Number of Points"
|
4777 |
msgstr ""
|
4778 |
|
4779 |
+
#: classes/Settings.php:3327 includes/phrases.php:362
|
4780 |
msgid "Member Title"
|
4781 |
msgstr ""
|
4782 |
|
4783 |
+
#: classes/Settings.php:3328 includes/phrases.php:479
|
4784 |
msgid "Short Badge"
|
4785 |
msgstr ""
|
4786 |
|
4787 |
+
#: classes/Settings.php:3329 includes/phrases.php:314
|
4788 |
msgid "Full Badge"
|
4789 |
msgstr ""
|
4790 |
|
4791 |
+
#: classes/Settings.php:3330 includes/phrases.php:431
|
4792 |
msgid "Rating Color"
|
4793 |
msgstr ""
|
4794 |
|
4795 |
+
#: classes/Settings.php:3331 includes/phrases.php:432
|
4796 |
msgid "Rating Icon"
|
4797 |
msgstr ""
|
4798 |
|
4799 |
+
#: classes/Settings.php:3333 includes/phrases.php:373
|
4800 |
msgid "More"
|
4801 |
msgstr ""
|
4802 |
|
4803 |
+
#: classes/Settings.php:3338 includes/hooks.php:1564 includes/phrases.php:344
|
4804 |
msgid "Level"
|
4805 |
msgstr ""
|
4806 |
|
4807 |
+
#: classes/Settings.php:3342 includes/phrases.php:397
|
4808 |
msgid "Number of Posts"
|
4809 |
msgstr ""
|
4810 |
|
4811 |
+
#: classes/Settings.php:3348 includes/phrases.php:249
|
4812 |
msgid "Custom Title"
|
4813 |
msgstr ""
|
4814 |
|
4815 |
+
#: classes/Settings.php:3369 includes/phrases.php:234
|
4816 |
msgid "Badge Icon"
|
4817 |
msgstr ""
|
4818 |
|
4819 |
+
#: classes/Settings.php:3824 includes/installation.php:549
|
4820 |
+
#: includes/installation.php:1479 includes/options-migration.php:19
|
4821 |
#: includes/options-migration.php:98 includes/phrases.php:287
|
4822 |
msgid "Forum"
|
4823 |
msgstr ""
|
4824 |
|
4825 |
+
#: classes/Settings.php:3830 includes/options-migration.php:111
|
4826 |
msgid "Forum Post Report"
|
4827 |
msgstr ""
|
4828 |
|
4829 |
+
#: classes/Settings.php:3831 includes/options-migration.php:112
|
4830 |
msgid ""
|
4831 |
"<strong>Report details:</strong>\n"
|
4832 |
" Reporter: [reporter], <br>\n"
|
4835 |
" [post_url]"
|
4836 |
msgstr ""
|
4837 |
|
4838 |
+
#: classes/Settings.php:3833 includes/options-migration.php:114
|
4839 |
msgid "[blogname] New User Registration"
|
4840 |
msgstr ""
|
4841 |
|
4842 |
+
#: classes/Settings.php:3834 includes/options-migration.php:115
|
4843 |
msgid ""
|
4844 |
"New user registration on your site [blogname]:\n"
|
4845 |
"\n"
|
4848 |
"Email: [user_email]\n"
|
4849 |
msgstr ""
|
4850 |
|
4851 |
+
#: classes/Settings.php:3836 includes/options-migration.php:117
|
4852 |
msgid "[blogname] Your username and password info"
|
4853 |
msgstr ""
|
4854 |
|
4855 |
+
#: classes/Settings.php:3837 includes/options-migration.php:118
|
4856 |
msgid ""
|
4857 |
"Username: [user_login]\n"
|
4858 |
"\n"
|
4862 |
"\n"
|
4863 |
msgstr ""
|
4864 |
|
4865 |
+
#: classes/Settings.php:3839 includes/options-migration.php:120
|
4866 |
msgid ""
|
4867 |
"Hello! \n"
|
4868 |
"\n"
|
4879 |
" Thanks!"
|
4880 |
msgstr ""
|
4881 |
|
4882 |
+
#: classes/Settings.php:3840
|
4883 |
+
msgid "[blogname] - Your Account Has been Approved"
|
4884 |
+
msgstr ""
|
4885 |
+
|
4886 |
+
#: classes/Settings.php:3841
|
4887 |
+
msgid ""
|
4888 |
+
"Hi [user_login] , Thank you for your registration. Your account has been "
|
4889 |
+
"approved. Your can login here: [login_link]"
|
4890 |
+
msgstr ""
|
4891 |
+
|
4892 |
+
#: classes/Settings.php:3849 includes/options-migration.php:103
|
4893 |
msgid "Please confirm subscription to [entry_title]"
|
4894 |
msgstr ""
|
4895 |
|
4896 |
+
#: classes/Settings.php:3850
|
4897 |
msgid ""
|
4898 |
"Hello [user_display_name]!<br>\n"
|
4899 |
" Thank you for subscribing.<br>\n"
|
4904 |
" [confirm_link]"
|
4905 |
msgstr ""
|
4906 |
|
4907 |
+
#: classes/Settings.php:3851 includes/options-migration.php:105
|
4908 |
msgid "New Topic"
|
4909 |
msgstr ""
|
4910 |
|
4911 |
+
#: classes/Settings.php:3852
|
4912 |
msgid ""
|
4913 |
"Hello [user_display_name]!<br>\n"
|
4914 |
" New topic has been created on your subscribed forum - [forum_link].\n"
|
4922 |
" [unsubscribe_link]"
|
4923 |
msgstr ""
|
4924 |
|
4925 |
+
#: classes/Settings.php:3853 includes/options-migration.php:107
|
4926 |
#: includes/phrases.php:1071
|
4927 |
msgid "New Reply"
|
4928 |
msgstr ""
|
4929 |
|
4930 |
+
#: classes/Settings.php:3854
|
4931 |
msgid ""
|
4932 |
"Hello [user_display_name]!<br>\n"
|
4933 |
" New reply has been posted on your subscribed topic - [topic_link].\n"
|
4941 |
" [unsubscribe_link]"
|
4942 |
msgstr ""
|
4943 |
|
4944 |
+
#: classes/Settings.php:3855 includes/options-migration.php:122
|
4945 |
msgid "You have been mentioned in forum post"
|
4946 |
msgstr ""
|
4947 |
|
4948 |
+
#: classes/Settings.php:3856
|
4949 |
msgid ""
|
4950 |
"Hi [user_display_name]! <br>\n"
|
4951 |
"\n"
|
4955 |
" [post_link]"
|
4956 |
msgstr ""
|
4957 |
|
4958 |
+
#: classes/Settings.php:3857
|
4959 |
msgid "New Post from [owner_display_name]"
|
4960 |
msgstr ""
|
4961 |
|
4962 |
+
#: classes/Settings.php:3858
|
4963 |
msgid ""
|
4964 |
"Hello [user_display_name]!<br>\n"
|
4965 |
" New content has been posted by [owner_display_name] you are following.\n"
|
4973 |
" [unsubscribe_link]"
|
4974 |
msgstr ""
|
4975 |
|
4976 |
+
#: classes/Template.php:851
|
4977 |
msgid "Insert link"
|
4978 |
msgstr ""
|
4979 |
|
4980 |
+
#: classes/Template.php:852
|
4981 |
msgid "Link Text"
|
4982 |
msgstr ""
|
4983 |
|
4984 |
+
#: classes/Template.php:853
|
4985 |
msgid "Open link in a new tab"
|
4986 |
msgstr ""
|
4987 |
|
4988 |
+
#: classes/Template.php:854
|
4989 |
msgid "Insert Spoiler"
|
4990 |
msgstr ""
|
4991 |
|
4992 |
+
#: classes/Template.php:855 includes/phrases.php:1214
|
4993 |
msgid "Spoiler"
|
4994 |
msgstr ""
|
4995 |
|
5093 |
msgid "wpForo Menu"
|
5094 |
msgstr ""
|
5095 |
|
5096 |
+
#: includes/functions-template.php:2244
|
5097 |
msgid "No Title"
|
5098 |
msgstr ""
|
5099 |
|
5244 |
msgid "Apply"
|
5245 |
msgstr ""
|
5246 |
|
5247 |
+
#: includes/functions.php:1260
|
5248 |
#, php-format
|
5249 |
msgid "Could not write file %s"
|
5250 |
msgstr ""
|
5263 |
msgid "Uninstall"
|
5264 |
msgstr ""
|
5265 |
|
5266 |
+
#: includes/hooks.php:1271
|
5267 |
msgid "Clear"
|
5268 |
msgstr ""
|
5269 |
|
5270 |
+
#: includes/hooks.php:1273
|
5271 |
msgid "Select Color"
|
5272 |
msgstr ""
|
5273 |
|
5274 |
+
#: includes/hooks.php:1280 includes/phrases.php:183
|
5275 |
msgid "Move"
|
5276 |
msgstr ""
|
5277 |
|
5278 |
+
#: includes/hooks.php:1298
|
5279 |
msgid "Please choose one reasons before sending a feedback!"
|
5280 |
msgstr ""
|
5281 |
|
5282 |
+
#: includes/hooks.php:1300
|
5283 |
msgid ""
|
5284 |
"With the email address, please check the \"I agree to receive email\" checkbox "
|
5285 |
"to proceed."
|
5286 |
msgstr ""
|
5287 |
|
5288 |
+
#: includes/hooks.php:1301
|
5289 |
msgid "Please fill your email address for feedback"
|
5290 |
msgstr ""
|
5291 |
|
5292 |
+
#: includes/hooks.php:1302
|
5293 |
msgid "Your email address is not valid"
|
5294 |
msgstr ""
|
5295 |
|
5296 |
+
#: includes/hooks.php:1371
|
5297 |
msgid ""
|
5298 |
"IMPORTANT: wpForo can't work with default permalink, please change permalink "
|
5299 |
"structure"
|
5300 |
msgstr ""
|
5301 |
|
5302 |
+
#: includes/hooks.php:1456
|
5303 |
msgid "Forum Profile Fields - wpForo"
|
5304 |
msgstr ""
|
5305 |
|
5306 |
+
#: includes/hooks.php:1465
|
5307 |
msgid "Forum - Usergroup"
|
5308 |
msgstr ""
|
5309 |
|
5310 |
+
#: includes/hooks.php:1470
|
5311 |
#, php-format
|
5312 |
msgid ""
|
5313 |
"Forum Usergroups are synched with User Roles based on the %s. When you change "
|
5314 |
"this user Role the Usergroup is automatically changed according to that table."
|
5315 |
msgstr ""
|
5316 |
|
5317 |
+
#: includes/hooks.php:1477
|
5318 |
msgid "Synced with user role"
|
5319 |
msgstr ""
|
5320 |
|
5321 |
+
#: includes/hooks.php:1482
|
5322 |
msgid "Role-Usergroup Synchronization is Turned ON!"
|
5323 |
msgstr ""
|
5324 |
|
5325 |
+
#: includes/hooks.php:1485
|
5326 |
msgid ""
|
5327 |
"This user Usergroup is automatically changed according to current Role. If you "
|
5328 |
"want to disable Role-Usergroup synchronization and manage Usergroups and User "
|
5330 |
"admin page and disable \"Role-Usergroup Synchronization\" option."
|
5331 |
msgstr ""
|
5332 |
|
5333 |
+
#: includes/hooks.php:1499
|
5334 |
msgid "Forum - Secondary Usergroups"
|
5335 |
msgstr ""
|
5336 |
|
5337 |
+
#: includes/hooks.php:1523
|
5338 |
msgid "Forum - User Timezone"
|
5339 |
msgstr ""
|
5340 |
|
5341 |
+
#: includes/hooks.php:1534
|
5342 |
msgid "User Reputation"
|
5343 |
msgstr ""
|
5344 |
|
5345 |
+
#: includes/hooks.php:1536
|
5346 |
msgid ""
|
5347 |
"By default all members get rating badges and titles based on number of posts. "
|
5348 |
"However, using this option you can grant lower or higher rating to certain "
|
5350 |
"be managed in Forums > Settings > Members Tab."
|
5351 |
msgstr ""
|
5352 |
|
5353 |
+
#: includes/hooks.php:1541
|
5354 |
msgid "Default Rating"
|
5355 |
msgstr ""
|
5356 |
|
5357 |
+
#: includes/hooks.php:1544
|
5358 |
msgid "Custom Rating"
|
5359 |
msgstr ""
|
5360 |
|
5361 |
+
#: includes/hooks.php:1552 includes/phrases.php:865
|
5362 |
msgid "Rating Title"
|
5363 |
msgstr ""
|
5364 |
|
5365 |
+
#: includes/hooks.php:1553 includes/phrases.php:430
|
5366 |
msgid "Rating Badge"
|
5367 |
msgstr ""
|
5368 |
|
5369 |
+
#: includes/hooks.php:2192 includes/hooks.php:2240 includes/hooks.php:2376
|
5370 |
+
#: includes/hooks.php:2444
|
5371 |
msgid "Add New Forum"
|
5372 |
msgstr ""
|
5373 |
|
5374 |
+
#: includes/hooks.php:2199 includes/hooks.php:2383
|
5375 |
msgid "Add New User Group"
|
5376 |
msgstr ""
|
5377 |
|
5378 |
+
#: includes/hooks.php:2206 includes/hooks.php:2324 includes/hooks.php:2390
|
5379 |
+
#: includes/hooks.php:2487
|
5380 |
msgid "Add New Phrase"
|
5381 |
msgstr ""
|
5382 |
|
5383 |
+
#: includes/hooks.php:2215 includes/hooks.php:2427
|
5384 |
msgid "Visit Forum"
|
5385 |
msgstr ""
|
5386 |
|
5387 |
+
#: includes/hooks.php:2308 includes/hooks.php:2540
|
5388 |
msgid "Add New Usergroup"
|
5389 |
msgstr ""
|
5390 |
|
5391 |
+
#: includes/hooks.php:2508
|
5392 |
msgid "Add New Board"
|
5393 |
msgstr ""
|
5394 |
|
5395 |
+
#: includes/hooks.php:2681 includes/phrases.php:1086
|
5396 |
#, php-format
|
5397 |
msgid ""
|
5398 |
"IMPORTANT! The forum registration form is probably under risk of spam attacks. "
|
5402 |
"dismiss this message."
|
5403 |
msgstr ""
|
5404 |
|
5405 |
+
#: includes/hooks.php:2711
|
5406 |
msgid "wpForo Polls addon is disabled!"
|
5407 |
msgstr ""
|
5408 |
|
5409 |
+
#: includes/hooks.php:2711
|
5410 |
msgid ""
|
5411 |
" Your addon version is not compatible with the current version of wpForo. "
|
5412 |
"Please update the addon or downgrade wpForo to 1.7.7"
|
5413 |
msgstr ""
|
5414 |
|
5415 |
+
#: includes/hooks.php:2712
|
5416 |
msgid "dismiss"
|
5417 |
msgstr ""
|
5418 |
|
5419 |
+
#: includes/installation.php:444
|
5420 |
msgid "Start Profile Synchronization"
|
5421 |
msgstr ""
|
5422 |
|
5423 |
+
#: includes/installation.php:444
|
5424 |
msgid "Continue Synchronization"
|
5425 |
msgstr ""
|
5426 |
|
5427 |
+
#: includes/installation.php:447
|
5428 |
msgid ""
|
5429 |
"This process may take a few seconds or dozens of minutes, please be patient "
|
5430 |
"and don't close this page."
|
5431 |
msgstr ""
|
5432 |
|
5433 |
+
#: includes/installation.php:448
|
5434 |
msgid "You can permanently disable this message using this documentation"
|
5435 |
msgstr ""
|
5436 |
|
5437 |
+
#: includes/installation.php:450
|
5438 |
msgid "wpForo Forum Installation | "
|
5439 |
msgstr ""
|
5440 |
|
5441 |
+
#: includes/installation.php:451
|
5442 |
msgid ""
|
5443 |
"Forum users' profile data are not synchronized yet, this step is required! "
|
5444 |
"Please click the button below to complete installation."
|
5445 |
msgstr ""
|
5446 |
|
5447 |
+
#: includes/installation.php:459
|
5448 |
msgid "wpForo Database Update Problem - Action Required!"
|
5449 |
msgstr ""
|
5450 |
|
5451 |
+
#: includes/installation.php:460
|
5452 |
msgid ""
|
5453 |
"Forum database is not updated properly. Please click the button below for "
|
5454 |
"further instruction."
|
5455 |
msgstr ""
|
5456 |
|
5457 |
+
#: includes/installation.php:471
|
5458 |
msgid "Exclude forum page(s) from"
|
5459 |
msgstr ""
|
5460 |
|
5461 |
+
#: includes/installation.php:471
|
5462 |
msgid "plugin"
|
5463 |
msgstr ""
|
5464 |
|
5465 |
+
#: includes/installation.php:475
|
5466 |
#, php-format
|
5467 |
msgid ""
|
5468 |
"If you have already excluded the forum page from your cache plugin please "
|
5469 |
"ignore and close this message using the top %s (x) button."
|
5470 |
msgstr ""
|
5471 |
|
5472 |
+
#: includes/installation.php:475
|
5473 |
msgid "left"
|
5474 |
msgstr ""
|
5475 |
|
5476 |
+
#: includes/installation.php:475
|
5477 |
msgid "right"
|
5478 |
msgstr ""
|
5479 |
|
5480 |
+
#: includes/installation.php:476
|
5481 |
msgid "Please find more information here: "
|
5482 |
msgstr ""
|
5483 |
|
5484 |
+
#: includes/installation.php:477
|
5485 |
msgid " and "
|
5486 |
msgstr ""
|
5487 |
|
5488 |
+
#: includes/installation.php:477
|
5489 |
msgid "conflict"
|
5490 |
msgstr ""
|
5491 |
|
5492 |
+
#: includes/installation.php:477
|
5493 |
msgid "Action Required!"
|
5494 |
msgstr ""
|
5495 |
|
5496 |
+
#: includes/installation.php:478
|
5497 |
msgid ""
|
5498 |
"Please exclude the forum page from your cache plugin! wpForo has a built-in "
|
5499 |
"cache system. It does dynamic cache of all forum pages, which will be affected "
|
5501 |
"The user login and logout actions will also be corrupted."
|
5502 |
msgstr ""
|
5503 |
|
5504 |
+
#: includes/installation.php:550 includes/installation.php:1480
|
5505 |
#: includes/options-migration.php:20
|
5506 |
msgid "Discussion Board"
|
5507 |
msgstr ""
|
5508 |
|
5509 |
+
#: includes/installation.php:1178
|
5510 |
msgid "Main Category"
|
5511 |
msgstr ""
|
5512 |
|
5513 |
+
#: includes/installation.php:1178
|
5514 |
msgid "This is a simple category / section"
|
5515 |
msgstr ""
|
5516 |
|
5517 |
+
#: includes/installation.php:1179
|
5518 |
msgid "Main Forum"
|
5519 |
msgstr ""
|
5520 |
|
5521 |
+
#: includes/installation.php:1179
|
5522 |
msgid "This is a simple parent forum"
|
5523 |
msgstr ""
|
5524 |
|
6504 |
msgid "Dismiss this notice."
|
6505 |
msgstr ""
|
6506 |
|
6507 |
+
#: includes/phrases.php:256
|
6508 |
msgid "Display Avatars"
|
6509 |
msgstr ""
|
6510 |
|
6511 |
+
#: includes/phrases.php:258
|
6512 |
msgid "Display with Avatars"
|
6513 |
msgstr ""
|
6514 |
|
6815 |
msgid "My Profile"
|
6816 |
msgstr ""
|
6817 |
|
6818 |
+
#: includes/phrases.php:377 wpforo.php:308
|
6819 |
msgid ""
|
6820 |
"NOTE: If you're going to add widgets in this sidebar, please use 'Full Width' "
|
6821 |
"template for wpForo index page to avoid sidebar duplication."
|
6849 |
msgid "No topics were found here"
|
6850 |
msgstr ""
|
6851 |
|
6852 |
+
#: includes/phrases.php:396 widgets/OnlineMembers.php:97
|
6853 |
+
#: widgets/RecentPosts.php:294 widgets/RecentTopics.php:205 widgets/Tags.php:97
|
6854 |
msgid "Number of Items"
|
6855 |
msgstr ""
|
6856 |
|
7470 |
msgid "wpForo Navigation"
|
7471 |
msgstr ""
|
7472 |
|
7473 |
+
#: includes/phrases.php:596 wpforo.php:307
|
7474 |
msgid "wpForo Sidebar"
|
7475 |
msgstr ""
|
7476 |
|
9316 |
msgid "Role-Usergroup synchronization is complete!"
|
9317 |
msgstr ""
|
9318 |
|
|
|
|
|
|
|
|
|
9319 |
#: includes/phrases.php:1205
|
9320 |
msgid "Secondary Usergroup"
|
9321 |
msgstr ""
|
9476 |
msgid "Search Forums..."
|
9477 |
msgstr ""
|
9478 |
|
9479 |
+
#: integrations/UltimateMember.php:49 integrations/UltimateMember.php:432
|
9480 |
msgid "User leaves a reply to wpForo topic"
|
9481 |
msgstr ""
|
9482 |
|
9483 |
+
#: integrations/UltimateMember.php:51 integrations/UltimateMember.php:434
|
9484 |
msgid "When a member replies to one of my forum topics"
|
9485 |
msgstr ""
|
9486 |
|
9487 |
+
#: integrations/UltimateMember.php:54 integrations/UltimateMember.php:437
|
9488 |
msgid "User replied to wpForo post"
|
9489 |
msgstr ""
|
9490 |
|
9491 |
+
#: integrations/UltimateMember.php:56 integrations/UltimateMember.php:439
|
9492 |
msgid "When a member replies to one of my post in forum topics"
|
9493 |
msgstr ""
|
9494 |
|
9495 |
+
#: integrations/UltimateMember.php:433
|
9496 |
msgid ""
|
9497 |
"<strong>{member}</strong> has <strong>replied</strong> to a topic you started "
|
9498 |
"on the forum."
|
9499 |
msgstr ""
|
9500 |
|
9501 |
+
#: integrations/UltimateMember.php:438
|
9502 |
msgid ""
|
9503 |
"<strong>{member}</strong> has <strong>replied</strong> to your post on the "
|
9504 |
"forum."
|
9521 |
"Forums » Moderation admin page."
|
9522 |
msgstr ""
|
9523 |
|
9524 |
+
#: widgets/Forums.php:97
|
9525 |
msgid "Display as dropdown"
|
9526 |
msgstr ""
|
9527 |
|
9528 |
+
#: widgets/OnlineMembers.php:22
|
9529 |
+
msgid "Online Members"
|
9530 |
+
msgstr ""
|
9531 |
+
|
9532 |
+
#: widgets/OnlineMembers.php:91
|
9533 |
msgid "User Groups"
|
9534 |
msgstr ""
|
9535 |
|
9536 |
+
#: widgets/OnlineMembers.php:101 widgets/RecentPosts.php:305
|
9537 |
+
#: widgets/RecentTopics.php:209
|
9538 |
+
msgid "Display with avatars"
|
9539 |
+
msgstr ""
|
9540 |
+
|
9541 |
+
#: widgets/OnlineMembers.php:110 widgets/RecentPosts.php:339
|
9542 |
+
#: widgets/RecentTopics.php:227
|
9543 |
+
msgid "Auto Refresh Interval Seconds"
|
9544 |
+
msgstr ""
|
9545 |
+
|
9546 |
+
#: widgets/OnlineMembers.php:112 widgets/RecentPosts.php:302
|
9547 |
+
#: widgets/RecentPosts.php:341 widgets/RecentTopics.php:229
|
9548 |
+
msgid "Set 0 to disable autorefresh"
|
9549 |
+
msgstr ""
|
9550 |
+
|
9551 |
#: widgets/Profile.php:130
|
9552 |
msgid "Title for Users"
|
9553 |
msgstr ""
|
9580 |
msgid "Hide this widget for guests"
|
9581 |
msgstr ""
|
9582 |
|
9583 |
+
#: widgets/RecentPosts.php:41 widgets/RecentTopics.php:37
|
9584 |
msgid "Created Date"
|
9585 |
msgstr ""
|
9586 |
|
9587 |
+
#: widgets/RecentPosts.php:42 widgets/RecentTopics.php:38
|
9588 |
msgid "Modified Date"
|
9589 |
msgstr ""
|
9590 |
|
9591 |
+
#: widgets/RecentPosts.php:45 widgets/RecentTopics.php:43
|
9592 |
msgid "DESC"
|
9593 |
msgstr ""
|
9594 |
|
9595 |
+
#: widgets/RecentPosts.php:46 widgets/RecentTopics.php:44
|
9596 |
msgid "ASC"
|
9597 |
msgstr ""
|
9598 |
|
9599 |
+
#: widgets/RecentPosts.php:243 widgets/RecentTopics.php:164
|
9600 |
msgid "Filter by forums"
|
9601 |
msgstr ""
|
9602 |
|
9603 |
+
#: widgets/RecentPosts.php:259 widgets/RecentTopics.php:180
|
9604 |
msgid "Autofilter by current forum"
|
9605 |
msgstr ""
|
9606 |
|
9607 |
+
#: widgets/RecentPosts.php:268 widgets/RecentTopics.php:189
|
9608 |
msgid "Order by"
|
9609 |
msgstr ""
|
9610 |
|
9611 |
+
#: widgets/RecentPosts.php:286
|
9612 |
msgid "Limit Per Topic"
|
9613 |
msgstr ""
|
9614 |
|
9615 |
+
#: widgets/RecentPosts.php:291
|
9616 |
msgid "set 0 to remove this limit"
|
9617 |
msgstr ""
|
9618 |
|
9619 |
+
#: widgets/RecentPosts.php:300
|
9620 |
+
msgid "Excerpt Length"
|
9621 |
+
msgstr ""
|
9622 |
+
|
9623 |
+
#: widgets/RecentPosts.php:314
|
9624 |
+
msgid "Exclude First Posts"
|
9625 |
+
msgstr ""
|
9626 |
+
|
9627 |
+
#: widgets/RecentPosts.php:322
|
9628 |
msgid "Display Only Unread Posts"
|
9629 |
msgstr ""
|
9630 |
|
9631 |
+
#: widgets/RecentPosts.php:330
|
9632 |
msgid "Display [new] indicator"
|
9633 |
msgstr ""
|
9634 |
|
9635 |
+
#: widgets/RecentTopics.php:39
|
9636 |
msgid "Posts Count"
|
9637 |
msgstr ""
|
9638 |
|
9639 |
+
#: widgets/RecentTopics.php:40
|
9640 |
msgid "Views Count"
|
9641 |
msgstr ""
|
9642 |
|
9643 |
+
#: widgets/RecentTopics.php:218
|
9644 |
+
msgid "Refer topics to first unread post"
|
9645 |
msgstr ""
|
9646 |
|
9647 |
+
#: widgets/Search.php:22
|
9648 |
+
msgid "Forum Search"
|
9649 |
msgstr ""
|
9650 |
|
9651 |
+
#: widgets/Tags.php:88
|
9652 |
msgid "Topic Counts"
|
9653 |
msgstr ""
|
9654 |
|
modules/mentioning/classes/Actions.php
CHANGED
@@ -69,7 +69,7 @@ class Actions {
|
|
69 |
'itemid' => ( wpfval( $item, 'postid' ) ? $item['postid'] : $item['first_postid'] ),
|
70 |
'userid' => $user['userid'],
|
71 |
'content' => ( wpfval( $item, 'body' ) ? $item['body'] : $item['title'] ),
|
72 |
-
'permalink' => ( wpfval( $item, 'posturl' ) ? $item['posturl'] : $item
|
73 |
];
|
74 |
WPF()->activity->add_notification( 'new_mention', $args );
|
75 |
}
|
69 |
'itemid' => ( wpfval( $item, 'postid' ) ? $item['postid'] : $item['first_postid'] ),
|
70 |
'userid' => $user['userid'],
|
71 |
'content' => ( wpfval( $item, 'body' ) ? $item['body'] : $item['title'] ),
|
72 |
+
'permalink' => ( wpfval( $item, 'posturl' ) ? $item['posturl'] : ( wpfval($item, 'topicurl' ) ?: WPF()->topic->get_url( $item ) ) ),
|
73 |
];
|
74 |
WPF()->activity->add_notification( 'new_mention', $args );
|
75 |
}
|
modules/reactions/Reactions.php
CHANGED
@@ -5,377 +5,554 @@ namespace wpforo\modules\reactions;
|
|
5 |
use stdClass;
|
6 |
use wpforo\modules\reactions\classes\Template;
|
7 |
use wpforo\modules\reactions\classes\Actions;
|
|
|
8 |
|
9 |
// Exit if accessed directly
|
10 |
if( ! defined( 'ABSPATH' ) ) exit;
|
11 |
|
12 |
class Reactions {
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
341 |
FROM `" . WPF()->db->users . "` u
|
342 |
INNER JOIN `" . WPF()->tables->reactions . "` r ON r.`userid` = u.`ID`
|
343 |
WHERE r.`postid` = %d
|
344 |
ORDER BY r.`userid` = %d DESC, r.`reactionid` DESC LIMIT 3",
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
|
|
377 |
]);
|
378 |
-
|
379 |
-
|
380 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
381 |
}
|
5 |
use stdClass;
|
6 |
use wpforo\modules\reactions\classes\Template;
|
7 |
use wpforo\modules\reactions\classes\Actions;
|
8 |
+
use wpforo\wpforo;
|
9 |
|
10 |
// Exit if accessed directly
|
11 |
if( ! defined( 'ABSPATH' ) ) exit;
|
12 |
|
13 |
class Reactions {
|
14 |
+
public $default;
|
15 |
+
/* @var Template */ public $Template;
|
16 |
+
/* @var Actions */ public $Actions;
|
17 |
+
|
18 |
+
public function __construct() {
|
19 |
+
$this->init_defaults();
|
20 |
+
$this->init_classes();
|
21 |
+
}
|
22 |
+
|
23 |
+
private function init_classes() {
|
24 |
+
$this->Template = new Template();
|
25 |
+
$this->Actions = new Actions();
|
26 |
+
}
|
27 |
+
|
28 |
+
static public function get_types(){
|
29 |
+
return (array) apply_filters( 'wpforo_reactions_set_types', [
|
30 |
+
'up' => [
|
31 |
+
'label' => wpforo_phrase( 'Like', false ),
|
32 |
+
'icon' => sprintf( '<i class="far fa-thumbs-up" title="%1$s"></i>', wpforo_phrase( 'Like', false ) ),
|
33 |
+
'color' => '#3f7796',
|
34 |
+
'reaction' => 1,
|
35 |
+
],
|
36 |
+
'down' => [
|
37 |
+
'label' => wpforo_phrase( 'Dislike', false ),
|
38 |
+
'icon' => sprintf( '<i class="far fa-thumbs-down" title="%1$s"></i>', wpforo_phrase( 'Dislike', false ) ),
|
39 |
+
'color' => '#f42d2c',
|
40 |
+
'reaction' => - 1,
|
41 |
+
],
|
42 |
+
] );
|
43 |
+
}
|
44 |
+
|
45 |
+
static public function get_type_list() {
|
46 |
+
return array_keys( self::get_types() );
|
47 |
+
}
|
48 |
+
|
49 |
+
private function init_defaults() {
|
50 |
+
$this->default = new stdClass();
|
51 |
+
$this->default->reaction = [
|
52 |
+
'reactionid' => 0,
|
53 |
+
'userid' => 0,
|
54 |
+
'postid' => 0,
|
55 |
+
'post_userid' => 0,
|
56 |
+
'reaction' => 1,
|
57 |
+
'type' => 'up',
|
58 |
+
'name' => '',
|
59 |
+
'email' => '',
|
60 |
+
];
|
61 |
+
$this->default->reaction_format = [
|
62 |
+
'reactionid' => '%d',
|
63 |
+
'userid' => '%d',
|
64 |
+
'postid' => '%d',
|
65 |
+
'post_userid' => '%d',
|
66 |
+
'reaction' => '%d',
|
67 |
+
'type' => '%s',
|
68 |
+
'name' => '%s',
|
69 |
+
'email' => '%s',
|
70 |
+
];
|
71 |
+
$this->default->sql_select_args = [
|
72 |
+
'reactionid' => null,
|
73 |
+
'userid' => null,
|
74 |
+
'postid' => null,
|
75 |
+
'postid_include' => [],
|
76 |
+
'postid_exclude' => [],
|
77 |
+
'post_userid' => null,
|
78 |
+
'reaction_include' => [],
|
79 |
+
'reaction_exclude' => [],
|
80 |
+
'type_include' => [],
|
81 |
+
'type_exclude' => [],
|
82 |
+
'name' => null,
|
83 |
+
'email' => null,
|
84 |
+
'orderby' => null,
|
85 |
+
'offset' => null,
|
86 |
+
'row_count' => null,
|
87 |
+
];
|
88 |
+
}
|
89 |
+
|
90 |
+
/**
|
91 |
+
* @param $reaction
|
92 |
+
*
|
93 |
+
* @return array
|
94 |
+
*/
|
95 |
+
public function decode( $reaction ) {
|
96 |
+
$reaction = array_merge( $this->default->reaction, (array) $reaction );
|
97 |
+
$reaction['reactionid'] = wpforo_bigintval( $reaction['reactionid'] );
|
98 |
+
$reaction['userid'] = wpforo_bigintval( $reaction['userid'] );
|
99 |
+
$reaction['postid'] = wpforo_bigintval( $reaction['postid'] );
|
100 |
+
$reaction['post_userid'] = wpforo_bigintval( $reaction['post_userid'] );
|
101 |
+
$reaction['reaction'] = intval( $reaction['reaction'] );
|
102 |
+
$reaction['name'] = trim( strip_tags( $reaction['name'] ) );
|
103 |
+
$reaction['email'] = sanitize_email( $reaction['email'] );
|
104 |
+
if( ! ( $reaction['type'] = trim( strip_tags( $reaction['type'] ) ) ) ) $reaction['type'] = 'up';
|
105 |
+
|
106 |
+
return $reaction;
|
107 |
+
}
|
108 |
+
|
109 |
+
public function decode_item( $reaction ) {
|
110 |
+
if( isset($reaction['reactionid']) ) $reaction['reactionid'] = wpforo_bigintval( $reaction['reactionid'] );
|
111 |
+
if( isset($reaction['userid']) ) $reaction['userid'] = wpforo_bigintval( $reaction['userid'] );
|
112 |
+
if( isset($reaction['postid']) ) $reaction['postid'] = wpforo_bigintval( $reaction['postid'] );
|
113 |
+
if( isset($reaction['post_userid']) ) $reaction['post_userid'] = wpforo_bigintval( $reaction['post_userid'] );
|
114 |
+
if( isset($reaction['reaction']) ) $reaction['reaction'] = intval( $reaction['reaction'] );
|
115 |
+
if( isset($reaction['name']) ) $reaction['name'] = trim( strip_tags( $reaction['name'] ) );
|
116 |
+
if( isset($reaction['email']) ) $reaction['email'] = sanitize_email( $reaction['email'] );
|
117 |
+
if( isset($reaction['type']) ) {
|
118 |
+
if( ! ( $reaction['type'] = trim( strip_tags( $reaction['type'] ) ) ) ) $reaction['type'] = 'up';
|
119 |
+
}
|
120 |
+
return $reaction;
|
121 |
+
}
|
122 |
+
|
123 |
+
/**
|
124 |
+
* @param $reaction
|
125 |
+
*
|
126 |
+
* @return array
|
127 |
+
*/
|
128 |
+
private function encode( $reaction ) {
|
129 |
+
return $this->decode( $reaction );
|
130 |
+
}
|
131 |
+
|
132 |
+
/**
|
133 |
+
* @param $reaction
|
134 |
+
*
|
135 |
+
* @return false|int
|
136 |
+
*/
|
137 |
+
public function add( $reaction ) {
|
138 |
+
$reaction = $this->encode( $reaction );
|
139 |
+
unset( $reaction['reactionid'] );
|
140 |
+
$reaction = wpforo_array_ordered_intersect_key( $reaction, $this->default->reaction_format );
|
141 |
+
if( WPF()->db->insert(
|
142 |
+
WPF()->tables->reactions,
|
143 |
+
$reaction,
|
144 |
+
wpforo_array_ordered_intersect_key( $this->default->reaction_format, $reaction )
|
145 |
+
) ) {
|
146 |
+
$reaction['reactionid'] = WPF()->db->insert_id;
|
147 |
+
do_action( 'wpforo_after_add_reaction', $reaction );
|
148 |
+
if( wpfval( $fields, 'postid' ) ) {
|
149 |
+
$this->create_reaction_cache( $reaction['postid'] );
|
150 |
+
}
|
151 |
+
return $reaction['reactionid'];
|
152 |
+
}
|
153 |
+
|
154 |
+
return false;
|
155 |
+
}
|
156 |
+
|
157 |
+
/**
|
158 |
+
* @param array $fields
|
159 |
+
* @param array|int $where
|
160 |
+
* @param string $table
|
161 |
+
*
|
162 |
+
* @return bool
|
163 |
+
*/
|
164 |
+
public function edit( $fields, $where, $table = '' ) {
|
165 |
+
if( is_numeric( $where ) ) $where = [ 'reactionid' => wpforo_bigintval( $where ) ];
|
166 |
+
$fields = wpforo_array_ordered_intersect_key( $fields, $this->default->reaction_format );
|
167 |
+
if( false !== WPF()->db->update(
|
168 |
+
$table ?: WPF()->tables->reactions,
|
169 |
+
$fields = wpforo_array_ordered_intersect_key( $this->encode( $fields ), $fields ),
|
170 |
+
$where = wpforo_array_ordered_intersect_key( $where, $this->default->reaction_format ),
|
171 |
+
wpforo_array_ordered_intersect_key( $this->default->reaction_format, $fields ),
|
172 |
+
wpforo_array_ordered_intersect_key( $this->default->reaction_format, $where )
|
173 |
+
) ) {
|
174 |
+
do_action( 'wpforo_after_edit_reaction', $fields, $where );
|
175 |
+
if( wpfval( $fields, 'postid' ) ) {
|
176 |
+
wpforo_clean_cache( 'reaction', $fields['postid'] );
|
177 |
+
}
|
178 |
+
return true;
|
179 |
+
}
|
180 |
+
|
181 |
+
return false;
|
182 |
+
}
|
183 |
+
|
184 |
+
public function edit_for_all_active_boards( $fields, $where ) {
|
185 |
+
foreach( WPF()->get_active_boards_tables( 'reactions' ) as $table ) $this->edit( $fields, $where, $table );
|
186 |
+
}
|
187 |
+
|
188 |
+
/**
|
189 |
+
* @param array|int $args
|
190 |
+
* @param string $operator
|
191 |
+
* @param string $table
|
192 |
+
*
|
193 |
+
* @return bool
|
194 |
+
*/
|
195 |
+
public function delete( $args, $operator = 'AND', $table = '' ) {
|
196 |
+
if( is_numeric( $args ) ) $args = [ 'reactionid' => wpforo_bigintval( $args ) ];
|
197 |
+
$operator = trim( strtoupper( $operator ) );
|
198 |
+
if( ! in_array( $operator, [ 'AND', 'OR' ], true ) ) $operator = 'AND';
|
199 |
+
|
200 |
+
do_action( 'wpforo_before_delete_reaction', $args, $operator );
|
201 |
+
|
202 |
+
$sql = "DELETE FROM " . ( $table ?: WPF()->tables->reactions );
|
203 |
+
if( $wheres = $this->build_sql_wheres( $args ) ) $sql .= " WHERE " . implode( " $operator ", $wheres );
|
204 |
+
|
205 |
+
$args = $this->parse_args( $args );
|
206 |
+
if( $args['orderby'] ) $sql .= " ORDER BY " . $args['orderby'];
|
207 |
+
if( $args['row_count'] ) $sql .= " LIMIT " . intval( $args['row_count'] );
|
208 |
+
|
209 |
+
$r = WPF()->db->query( $sql );
|
210 |
+
|
211 |
+
do_action( 'wpforo_after_delete_reaction', $args, $operator );
|
212 |
+
|
213 |
+
if( wpfval( $args, 'postid' ) ) wpforo_clean_cache( 'reaction', $args['postid'] );
|
214 |
+
|
215 |
+
return false !== $r;
|
216 |
+
}
|
217 |
+
|
218 |
+
public function delete_for_all_active_boards( $args, $operator = 'AND' ) {
|
219 |
+
foreach( WPF()->get_active_boards_tables( 'reactions' ) as $table ) $this->delete( $args, $operator, $table );
|
220 |
+
}
|
221 |
+
|
222 |
+
private function parse_args( $args ) {
|
223 |
+
$args = wpforo_parse_args( $args, $this->default->sql_select_args );
|
224 |
+
$args = wpforo_array_ordered_intersect_key( $args, $this->default->sql_select_args );
|
225 |
+
$args['postid_include'] = wpforo_parse_args( $args['postid_include'] );
|
226 |
+
$args['postid_exclude'] = wpforo_parse_args( $args['postid_exclude'] );
|
227 |
+
$args['reaction_include'] = wpforo_parse_args( $args['reaction_include'] );
|
228 |
+
$args['reaction_exclude'] = wpforo_parse_args( $args['reaction_exclude'] );
|
229 |
+
$args['type_include'] = wpforo_parse_args( $args['type_include'] );
|
230 |
+
$args['type_exclude'] = wpforo_parse_args( $args['type_exclude'] );
|
231 |
+
$args['orderby'] = sanitize_sql_orderby( $args['orderby'] );
|
232 |
+
|
233 |
+
return $args;
|
234 |
+
}
|
235 |
+
|
236 |
+
private function build_sql_wheres( $args ) {
|
237 |
+
$args = $this->parse_args( $args );
|
238 |
+
$wheres = [];
|
239 |
+
|
240 |
+
if( ! is_null( $args['reactionid'] ) ) $wheres[] = "`reactionid` = '" . wpforo_bigintval( $args['reactionid'] ) . "'";
|
241 |
+
if( ! is_null( $args['userid'] ) ) $wheres[] = "`userid` = '" . wpforo_bigintval( $args['userid'] ) . "'";
|
242 |
+
if( ! is_null( $args['postid'] ) ) $wheres[] = "`postid` = '" . wpforo_bigintval( $args['postid'] ) . "'";
|
243 |
+
if( ! is_null( $args['post_userid'] ) ) $wheres[] = "`post_userid` = '" . wpforo_bigintval( $args['post_userid'] ) . "'";
|
244 |
+
|
245 |
+
if( ! is_null( $args['name'] ) ) $wheres[] = "`name` = '" . esc_sql( $args['name'] ) . "'";
|
246 |
+
if( ! is_null( $args['email'] ) ) $wheres[] = "`email` = '" . esc_sql( $args['email'] ) . "'";
|
247 |
+
|
248 |
+
if( ! empty( $args['postid_include'] ) ) $wheres[] = "`postid` IN(" . implode( ',', array_map( 'wpforo_bigintval', $args['postid_include'] ) ) . ")";
|
249 |
+
if( ! empty( $args['postid_exclude'] ) ) $wheres[] = "`postid` NOT IN(" . implode( ',', array_map( 'wpforo_bigintval', $args['postid_exclude'] ) ) . ")";
|
250 |
+
|
251 |
+
if( ! empty( $args['reaction_include'] ) ) $wheres[] = "`reaction` IN(" . implode( ',', array_map( 'intval', $args['reaction_include'] ) ) . ")";
|
252 |
+
if( ! empty( $args['reaction_exclude'] ) ) $wheres[] = "`reaction` NOT IN(" . implode( ',', array_map( 'intval', $args['reaction_exclude'] ) ) . ")";
|
253 |
+
|
254 |
+
if( ! empty( $args['type_include'] ) ) $wheres[] = "`type` IN('" . implode( "','", array_map( 'trim', $args['type_include'] ) ) . "')";
|
255 |
+
if( ! empty( $args['type_exclude'] ) ) $wheres[] = "`type` NOT IN(" . implode( "','", array_map( 'trim', $args['type_exclude'] ) ) . "')";
|
256 |
+
|
257 |
+
return $wheres;
|
258 |
+
}
|
259 |
+
|
260 |
+
/**
|
261 |
+
* @param $args
|
262 |
+
* @param $select
|
263 |
+
* @param $operator
|
264 |
+
*
|
265 |
+
* @return string
|
266 |
+
*/
|
267 |
+
private function build_sql_select( $args, $select = '', $operator = 'AND' ) {
|
268 |
+
if( ! $select ) $select = '*';
|
269 |
+
$operator = trim( strtoupper( $operator ) );
|
270 |
+
if( ! in_array( $operator, [ 'AND', 'OR' ], true ) ) $operator = 'AND';
|
271 |
+
|
272 |
+
$sql = "SELECT $select FROM " . WPF()->tables->reactions;
|
273 |
+
if( $wheres = $this->build_sql_wheres( $args ) ) $sql .= " WHERE " . implode( " $operator ", $wheres );
|
274 |
+
|
275 |
+
$args = $this->parse_args( $args );
|
276 |
+
if( $args['orderby'] ) $sql .= " ORDER BY " . $args['orderby'];
|
277 |
+
if( $args['row_count'] ) $sql .= " LIMIT " . intval( $args['offset'] ) . "," . intval( $args['row_count'] );
|
278 |
+
|
279 |
+
return $sql;
|
280 |
+
}
|
281 |
+
|
282 |
+
/**
|
283 |
+
* @param array|numeric $args
|
284 |
+
*
|
285 |
+
* @return array
|
286 |
+
*/
|
287 |
+
public function _get_reaction( $args, $operator = 'AND' ) {
|
288 |
+
|
289 |
+
$cache = WPF()->cache->on();
|
290 |
+
if( is_numeric( $args ) ) $args = [ 'reactionid' => wpforo_bigintval( $args ) ];
|
291 |
+
|
292 |
+
// get_reaction_cache() returns all reactions of the requested postid
|
293 |
+
// and filtered by other $args, so this function always returns
|
294 |
+
// an array of reaction arrays, example: array( [0] => array(...) )
|
295 |
+
// @TODO: currently the cache filter only works by $operator = 'AND' state
|
296 |
+
// Need to add 'OR' filter to $this->filter_reactions() function
|
297 |
+
$reactions = $this->get_reaction_cache( $args );
|
298 |
+
|
299 |
+
// $reactions can be either empty array, array of arrays or NULL
|
300 |
+
// 1. empty array: post has no reaction matched to the $args attributes
|
301 |
+
// 2. array of arrays: post has some reactions and $args matched
|
302 |
+
// 3. NULL: there is no reaction cache for this post or the cache is disabled
|
303 |
+
if( !is_null( $reactions ) ) return array_shift( $reactions );
|
304 |
+
|
305 |
+
// If there is no reaction cache it creates a new cache file
|
306 |
+
// The cache is based on postid, each cache item contains all reactions of the postid
|
307 |
+
$reactions = $this->get_post_reactions_and_cache( $args );
|
308 |
+
if( !is_null( $reactions ) ) return array_shift( $reactions );
|
309 |
+
|
310 |
+
// In case there is no postid in the $args, the original SQL query is executed
|
311 |
+
if( ! wpfkey( $args, 'orderby' ) ) $args['orderby'] = '`reactionid` DESC';
|
312 |
+
$reaction = (array) WPF()->db->get_row( $this->build_sql_select( $args, '', $operator ), ARRAY_A );
|
313 |
+
if( $reaction ) $reaction = $this->decode( $reaction );
|
314 |
+
|
315 |
+
return $reaction;
|
316 |
+
}
|
317 |
+
|
318 |
+
public function get_reaction( $args, $operator = 'AND' ) {
|
319 |
+
return wpforo_ram_get( [ $this, '_get_reaction' ], $args, $operator );
|
320 |
+
}
|
321 |
+
|
322 |
+
/**
|
323 |
+
* @param array $args
|
324 |
+
*
|
325 |
+
* @return array
|
326 |
+
*/
|
327 |
+
public function _get_reactions( $args = [], $operator = 'AND' ) {
|
328 |
+
return array_map( [ $this, 'decode' ], (array) WPF()->db->get_results( $this->build_sql_select( $args, '', $operator ), ARRAY_A ) );
|
329 |
+
}
|
330 |
+
|
331 |
+
public function get_reactions( $args = [], $operator = 'AND' ) {
|
332 |
+
return wpforo_ram_get( [ $this, '_get_reactions' ], $args, $operator );
|
333 |
+
}
|
334 |
+
|
335 |
+
public function _get_reactions_col( $col, $args = [], $operator = 'AND' ){
|
336 |
+
$r = WPF()->db->get_col( $this->build_sql_select( $args, "`$col`", $operator ) );
|
337 |
+
if( $this->default->reaction_format[$col] === '%d' ) $r = array_map( 'wpforo_bigintval', $r );
|
338 |
+
return $r;
|
339 |
+
}
|
340 |
+
|
341 |
+
public function get_reactions_col( $col, $args = [], $operator = 'AND' ){
|
342 |
+
return wpforo_ram_get( [ $this, '_get_reactions_col' ], $col, $args, $operator );
|
343 |
+
}
|
344 |
+
|
345 |
+
/**
|
346 |
+
* @param array $args
|
347 |
+
*
|
348 |
+
* @return int
|
349 |
+
*/
|
350 |
+
public function _get_count( $args = [], $operator = 'AND' ) {
|
351 |
+
$reactions = $this->get_reaction_cache( $args );
|
352 |
+
if( !is_null( $reactions ) ) return count( (array) $reactions );
|
353 |
+
|
354 |
+
// If there is no reaction cache it creates a new cache file
|
355 |
+
// The cache is based on postid, each cache item contains all reactions of the postid
|
356 |
+
$reactions = $this->get_post_reactions_and_cache( $args );
|
357 |
+
if( !is_null( $reactions ) ) return count( $reactions );
|
358 |
+
|
359 |
+
return (int) WPF()->db->get_var( $this->build_sql_select( $args, 'COUNT(*)', $operator ) );
|
360 |
+
}
|
361 |
+
|
362 |
+
public function get_count( $args = [], $operator = 'AND' ) {
|
363 |
+
return wpforo_ram_get( [$this, '_get_count'], $args, $operator );
|
364 |
+
}
|
365 |
+
|
366 |
+
/**
|
367 |
+
* @param array|int $args
|
368 |
+
*
|
369 |
+
* @return int
|
370 |
+
*/
|
371 |
+
public function get_sum( $args = [], $operator = 'AND' ) {
|
372 |
+
if( is_numeric( $args ) ) $args = [ 'postid' => wpforo_bigintval( $args ) ];
|
373 |
+
return (int) WPF()->db->get_var( $this->build_sql_select( $args, 'SUM(`reaction`)', $operator ) );
|
374 |
+
}
|
375 |
+
|
376 |
+
public function get_reacted_count( $userid, $types = [] ){
|
377 |
+
return $this->get_count( [ 'userid' => $userid, 'type_include' => $types ] );
|
378 |
+
}
|
379 |
+
|
380 |
+
public function get_received_reactions_count( $userid, $types = [] ){
|
381 |
+
return $this->get_count( [ 'post_userid' => $userid, 'type_include' => $types ] );
|
382 |
+
}
|
383 |
+
|
384 |
+
public function get_post_reactions_count( $postid, $types = [] ) {
|
385 |
+
return $this->get_count( [ 'postid' => $postid, 'type_include' => $types ] );
|
386 |
+
}
|
387 |
+
|
388 |
+
public function get_post_reactions_user_dnames( $postid ) {
|
389 |
+
return WPF()->db->get_results(
|
390 |
+
WPF()->db->prepare(
|
391 |
+
"SELECT u.`ID` as userid, u.`display_name`
|
392 |
FROM `" . WPF()->db->users . "` u
|
393 |
INNER JOIN `" . WPF()->tables->reactions . "` r ON r.`userid` = u.`ID`
|
394 |
WHERE r.`postid` = %d
|
395 |
ORDER BY r.`userid` = %d DESC, r.`reactionid` DESC LIMIT 3",
|
396 |
+
$postid,
|
397 |
+
WPF()->current_userid
|
398 |
+
),
|
399 |
+
ARRAY_A
|
400 |
+
);
|
401 |
+
}
|
402 |
+
|
403 |
+
public function get_user_reaction( $postid, $userid = 0 ){
|
404 |
+
if( ! ( $userid = wpforo_bigintval( $userid ) ) ) {
|
405 |
+
$userid = WPF()->current_userid;
|
406 |
+
}
|
407 |
+
$reaction = $this->get_reaction( ['postid' => $postid, 'userid' => $userid] );
|
408 |
+
if( $reaction ) return $reaction;
|
409 |
+
return null;
|
410 |
+
}
|
411 |
+
|
412 |
+
public function get_user_reaction_reaction( $postid, $userid = 0 ){
|
413 |
+
$reaction = $this->get_user_reaction( $postid, $userid );
|
414 |
+
return wpfval( $reaction, 'reaction' );
|
415 |
+
}
|
416 |
+
|
417 |
+
public function is_reacted( $postid, $userid = 0, $type = [] ) {
|
418 |
+
if( ! ( $userid = wpforo_bigintval( $userid ) ) ) {
|
419 |
+
$userid = WPF()->current_userid;
|
420 |
+
}
|
421 |
+
return (bool) $this->get_reaction( ['postid' => $postid, 'userid' => $userid, 'type_include' => (array) $type] );
|
422 |
+
}
|
423 |
+
|
424 |
+
public function get_likes_for_topic( $topicid ) {
|
425 |
+
if( $postids = WPF()->topic->get_postids( $topicid ) ){
|
426 |
+
return $this->get_sum([
|
427 |
+
'postid_include' => $postids,
|
428 |
+
'type_include' => ['up', 'down'],
|
429 |
]);
|
430 |
+
}
|
431 |
+
return 0;
|
432 |
+
}
|
433 |
+
|
434 |
+
/**
|
435 |
+
* @param array | reaction array, the postid in the array is required
|
436 |
+
*
|
437 |
+
* @return mixed | NULL: if the cache is not found | []: if there is no reaction | array( array(...), array(...) ): the reaction
|
438 |
+
*/
|
439 |
+
public function get_reaction_cache( $args ){
|
440 |
+
$cache = WPF()->cache->on();
|
441 |
+
$cache_reaction = apply_filters( 'wpforo_reaction_cache', true, $args );
|
442 |
+
if( $cache && $cache_reaction && wpfval($args, 'postid') ) {
|
443 |
+
$reactions = WPF()->cache->get_item( $args['postid'], 'reaction');
|
444 |
+
if( !empty( $reactions ) ){
|
445 |
+
return $this->filter_reactions( $args, $reactions );
|
446 |
+
}
|
447 |
+
}
|
448 |
+
return NULL;
|
449 |
+
}
|
450 |
+
|
451 |
+
public function filter_reactions( $args, $reactions ){
|
452 |
+
$args = $this->decode_item( $args );
|
453 |
+
|
454 |
+
foreach( $reactions as $reaction_key => $reaction ){
|
455 |
+
$match = true;
|
456 |
+
$reaction = $this->decode_item( $reaction );
|
457 |
+
|
458 |
+
// The posts with no reactions are also cached with array(reactionid => 0) value
|
459 |
+
// This stops another sql query to check and return no value
|
460 |
+
// So in the cache files there are at least one array of reaction
|
461 |
+
// If we found this array, it means the post doesn't have reactions and [] is returned
|
462 |
+
if( wpfkey($reaction, 'reactionid') ){
|
463 |
+
if( 0 === intval($reaction['reactionid']) ){
|
464 |
+
return [];
|
465 |
+
}
|
466 |
+
}
|
467 |
+
|
468 |
+
// Filter reactions based on requested arguments
|
469 |
+
foreach( $args as $key => $value ){
|
470 |
+
if( !is_array( $value ) ){
|
471 |
+
// If even one attribute doesn't match to the
|
472 |
+
// corresponding attribute of the reaction,
|
473 |
+
// the filter loop is stopped and $match becomes false
|
474 |
+
if( $value !== $reaction[$key] ) {
|
475 |
+
$match = false; break;
|
476 |
+
}
|
477 |
+
}
|
478 |
+
else {
|
479 |
+
// -----------
|
480 |
+
if( !empty( $value ) ){
|
481 |
+
if( $key === 'reaction_include' ){
|
482 |
+
foreach( $value as $v ){
|
483 |
+
if( $v !== $reaction['reactionid'] ) {
|
484 |
+
$match = false; break 2;
|
485 |
+
}
|
486 |
+
}
|
487 |
+
}
|
488 |
+
elseif( $key === 'reaction_exclude' ){
|
489 |
+
foreach( $value as $v ){
|
490 |
+
if( $v === $reaction['reactionid'] ) {
|
491 |
+
$match = false; break 2;
|
492 |
+
}
|
493 |
+
}
|
494 |
+
}
|
495 |
+
elseif( $key === 'type_include' ){
|
496 |
+
foreach( $value as $v ){
|
497 |
+
if( $v !== $reaction['type'] ) {
|
498 |
+
$match = false; break 2;
|
499 |
+
}
|
500 |
+
}
|
501 |
+
}
|
502 |
+
elseif( $key === 'type_exclude' ){
|
503 |
+
foreach( $value as $v ){
|
504 |
+
if( $v === $reaction['type'] ) {
|
505 |
+
$match = false; break 2;
|
506 |
+
}
|
507 |
+
}
|
508 |
+
}
|
509 |
+
else {
|
510 |
+
foreach( $value as $v ){
|
511 |
+
if( $v !== $reaction[$key] ) {
|
512 |
+
$match = false; break 2;
|
513 |
+
}
|
514 |
+
}
|
515 |
+
}
|
516 |
+
}
|
517 |
+
//------------
|
518 |
+
}
|
519 |
+
}
|
520 |
+
|
521 |
+
if( !$match ) {
|
522 |
+
unset( $reactions[ $reaction_key ] );
|
523 |
+
}
|
524 |
+
}
|
525 |
+
return $reactions;
|
526 |
+
}
|
527 |
+
|
528 |
+
public function create_reaction_cache( $postid, $post_reactions = [] ){
|
529 |
+
$cache = WPF()->cache->on();
|
530 |
+
$cache_reaction = apply_filters( 'wpforo_reaction_cache', true, [ 'postid' => $postid ] );
|
531 |
+
if( $cache && $cache_reaction && $postid ){
|
532 |
+
$post_reactions = ( !empty( $post_reactions ) ) ? $post_reactions : $this->get_reactions( [ 'postid' => $postid ] );
|
533 |
+
if( empty( $post_reactions ) ) $post_reactions[0] = $this->default->reaction;
|
534 |
+
WPF()->cache->create( 'item', [ $postid => $post_reactions ], 'reaction' );
|
535 |
+
}
|
536 |
+
}
|
537 |
+
|
538 |
+
public function get_post_reactions_and_cache( $args ){
|
539 |
+
$cache = WPF()->cache->on();
|
540 |
+
// If there is no reaction cache it creates a new cache file
|
541 |
+
// The cache is based on postid, each cache item contains all reactions of the postid
|
542 |
+
if( $cache && wpfval( $args, 'postid' ) ){
|
543 |
+
//If no reaction cache found for current postid, it creates new one.
|
544 |
+
$reactions = $this->get_reactions( [ 'postid' => $args['postid'] ] );
|
545 |
+
$this->create_reaction_cache( $args['postid'], $reactions );
|
546 |
+
//The reactions of current postid are filtered for current $args
|
547 |
+
if( !empty( $reactions ) ){
|
548 |
+
$reactions = $this->filter_reactions( $args, $reactions );
|
549 |
+
if( is_array( $reactions ) && !empty( $reactions ) ) {
|
550 |
+
return array_map( function( $reaction ) { return $this->decode( $reaction ); }, $reactions );
|
551 |
+
}
|
552 |
+
} else {
|
553 |
+
return [];
|
554 |
+
}
|
555 |
+
}
|
556 |
+
return NULL;
|
557 |
+
}
|
558 |
}
|
modules/subscriptions/Subscriptions.php
CHANGED
@@ -330,7 +330,7 @@ class Subscriptions {
|
|
330 |
if( $args['type'] === 'forum' ) {
|
331 |
$url = WPF()->forum->get_forum_url( $args['itemid'] ) . '/';
|
332 |
} elseif( $args['type'] === 'topic' ) {
|
333 |
-
$url = WPF()->topic->
|
334 |
} else {
|
335 |
$url = wpforo_home_url();
|
336 |
}
|
330 |
if( $args['type'] === 'forum' ) {
|
331 |
$url = WPF()->forum->get_forum_url( $args['itemid'] ) . '/';
|
332 |
} elseif( $args['type'] === 'topic' ) {
|
333 |
+
$url = WPF()->topic->get_url( $args['itemid'] ) . '/';
|
334 |
} else {
|
335 |
$url = wpforo_home_url();
|
336 |
}
|
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: 5.1
|
5 |
-
Tested up to: 6.
|
6 |
-
Stable tag: 2.0
|
7 |
Requires PHP: 5.6 and higher
|
8 |
License: GPLv2 or later
|
9 |
License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
@@ -163,6 +163,47 @@ Find wpForo forum plugin addons on [gVectors Team website...](https://gvectors.c
|
|
163 |
|
164 |
== Changelog ==
|
165 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
166 |
= wpForo Forum 2.0.1 - 2.0.9 | 03.08.2022 - 18.09.2022 =
|
167 |
|
168 |
[wpForo Forum v2.0 Release Summary](https://wpforo.com/community/wpforo-announcements/wpforo-2-0-1-is-released/)
|
2 |
Contributors: gVectors Team
|
3 |
Tags: forum, forums, forum plugin, WordPress forum plugin, community, discussion
|
4 |
Requires at least: 5.1
|
5 |
+
Tested up to: 6.1
|
6 |
+
Stable tag: 2.1.0
|
7 |
Requires PHP: 5.6 and higher
|
8 |
License: GPLv2 or later
|
9 |
License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
163 |
|
164 |
== Changelog ==
|
165 |
|
166 |
+
= wpForo Forum 2.1.0 | 08.11.2022 =
|
167 |
+
|
168 |
+
[wpForo Forum v2.1.0 Release Summary](https://wpforo.com/community/wpforo-announcements/wpforo-2-1-0-is-released/)
|
169 |
+
|
170 |
+
* Added: Notification via email when the user become approved
|
171 |
+
* Added: User approval email template "subject" and "message body"
|
172 |
+
* Added: AJAX powered forum widgets
|
173 |
+
* Added: Post reactions caching (likes, dislikes)
|
174 |
+
* Added: Filter by Forums for Recent Topics widget
|
175 |
+
* Added: Filter by Forums for Recent Posts widget
|
176 |
+
* Added: Option to show only replies (skip first post) in Recent Posts widget
|
177 |
+
* Added: Option to manage post excerpt length in Recent Posts widget
|
178 |
+
* Added: Update-safe way to customize style.css of wpForo themes
|
179 |
+
* Added: Button to reset the profile cover image (delete the current one)
|
180 |
+
* Added: Insert selected quotes to the reply editor
|
181 |
+
* Added: Email shortcodes in the reset password template
|
182 |
+
* Added: Secondary usergroup in the Dashboard Members list
|
183 |
+
* Security: Strip all tags in a post reporting message
|
184 |
+
* Security: Fixed XSS vulnerability
|
185 |
+
* Security: Fixed CSRF in user deleting action
|
186 |
+
* Optimization: SQL optimization for forum statistic
|
187 |
+
* Optimization: Caching of avatar source URLs to decrease sql queries
|
188 |
+
* Filter Hook: `wpforo_topic_fields_filter` (allows filtering topic fields)
|
189 |
+
* Filter Hook: `wpforo_avatar_cache` (allows disabling avatar cache)
|
190 |
+
* Fixed Bug: PHP Warning - undefined array key "topicurl" in Actions.php
|
191 |
+
* Fixed Bug: Issue with Classic theme's "Add topic" button
|
192 |
+
* Fixed Bug: Usergroup selecting issue in Online Members widget
|
193 |
+
* Fixed Bug: Issue with Forum Tab in UM profile page
|
194 |
+
* Fixed Bug: Empty widget when recent topics are located in private forums
|
195 |
+
* Fixed Bug: Avoid "board slug duplication error" when executing db fixer SQL
|
196 |
+
* Fixed Bug: Popup message issue when unsubscribing from a forum or topic
|
197 |
+
* Fixed Bug: Banned users become active when they change their passwords
|
198 |
+
* Fixed Bug: Twitter link closing tag on profile page
|
199 |
+
|
200 |
+
|
201 |
+
IMPORTANT NOTES for UPDATE
|
202 |
+
|
203 |
+
- After the update, please delete all caches and purge CDN if you have
|
204 |
+
- After the update, please flush Redis Object Cache if you have this cache enabled
|
205 |
+
|
206 |
+
|
207 |
= wpForo Forum 2.0.1 - 2.0.9 | 03.08.2022 - 18.09.2022 =
|
208 |
|
209 |
[wpForo Forum v2.0 Release Summary](https://wpforo.com/community/wpforo-announcements/wpforo-2-0-1-is-released/)
|
themes/2022/members.php
CHANGED
@@ -51,7 +51,7 @@ $members = WPF()->current_object['members'];
|
|
51 |
<?php
|
52 |
switch ($key){
|
53 |
case 'facebook': echo '<a href="' . esc_url_raw($value) . '"><i class="fa-brands fa-facebook-square"></i></a>'; break;
|
54 |
-
case 'twitter': echo '<a href="' . esc_url_raw($value) . '"><i class="fa-brands fa-twitter-square"></i>'; break;
|
55 |
case 'youtube': echo '<a href="' . esc_url_raw($value) . '"><i class="fa-brands fa-youtube"></i></a>'; break;
|
56 |
case 'vkontakte': echo '<a href="' . esc_url_raw($value) . '"><i class="fa-brands fa-vk"></i></a>'; break;
|
57 |
case 'linkedin': echo '<a href="' . esc_url_raw($value) . '"><i class="fa-brands fa-linkedin"></i></a>'; break;
|
51 |
<?php
|
52 |
switch ($key){
|
53 |
case 'facebook': echo '<a href="' . esc_url_raw($value) . '"><i class="fa-brands fa-facebook-square"></i></a>'; break;
|
54 |
+
case 'twitter': echo '<a href="' . esc_url_raw($value) . '"><i class="fa-brands fa-twitter-square"></i></a>'; break;
|
55 |
case 'youtube': echo '<a href="' . esc_url_raw($value) . '"><i class="fa-brands fa-youtube"></i></a>'; break;
|
56 |
case 'vkontakte': echo '<a href="' . esc_url_raw($value) . '"><i class="fa-brands fa-vk"></i></a>'; break;
|
57 |
case 'linkedin': echo '<a href="' . esc_url_raw($value) . '"><i class="fa-brands fa-linkedin"></i></a>'; break;
|
themes/2022/profile-activity.php
CHANGED
@@ -26,7 +26,7 @@ $activities = (array) wpfval( WPF()->current_object, 'activities' );
|
|
26 |
<div class="wpf-activity-data">
|
27 |
<div class="wpf-activity-top">
|
28 |
<div class="wpf-activity-title">
|
29 |
-
<a href="<?php echo esc_url_raw( WPF()->topic->
|
30 |
<?php echo $activity['title'] ?>
|
31 |
</a>
|
32 |
</div>
|
@@ -63,7 +63,7 @@ $activities = (array) wpfval( WPF()->current_object, 'activities' );
|
|
63 |
<div class="wpf-activity-data">
|
64 |
<div class="wpf-activity-top">
|
65 |
<div class="wpf-activity-title">
|
66 |
-
<a href="<?php echo esc_url_raw( WPF()->post->
|
67 |
<?php echo $activity['title'] ?>
|
68 |
</a>
|
69 |
<p><?php echo wpforo_text( $activity['body'], 150, false ) ?></p>
|
26 |
<div class="wpf-activity-data">
|
27 |
<div class="wpf-activity-top">
|
28 |
<div class="wpf-activity-title">
|
29 |
+
<a href="<?php echo esc_url_raw( WPF()->topic->get_url( $activity['topicid'] )) ?>">
|
30 |
<?php echo $activity['title'] ?>
|
31 |
</a>
|
32 |
</div>
|
63 |
<div class="wpf-activity-data">
|
64 |
<div class="wpf-activity-top">
|
65 |
<div class="wpf-activity-title">
|
66 |
+
<a href="<?php echo esc_url_raw( WPF()->post->get_url( $activity['postid'] ) ) ?>">
|
67 |
<?php echo $activity['title'] ?>
|
68 |
</a>
|
69 |
<p><?php echo wpforo_text( $activity['body'], 150, false ) ?></p>
|
themes/2022/profile-favored.php
CHANGED
@@ -46,7 +46,7 @@ $posts = (array) wpfval( WPF()->current_object, 'favored_posts' );
|
|
46 |
<div class="wpf-activity-data">
|
47 |
<div class="wpf-activity-top">
|
48 |
<div class="wpf-activity-title">
|
49 |
-
<a href="<?php echo esc_url_raw( WPF()->post->
|
50 |
<?php echo $post['title'] ?>
|
51 |
</a>
|
52 |
<p><?php echo wpforo_text( $post['body'], 150, false ) ?></p>
|
46 |
<div class="wpf-activity-data">
|
47 |
<div class="wpf-activity-top">
|
48 |
<div class="wpf-activity-title">
|
49 |
+
<a href="<?php echo esc_url_raw( WPF()->post->get_url( $post['postid'] ) ) ?>">
|
50 |
<?php echo $post['title'] ?>
|
51 |
</a>
|
52 |
<p><?php echo wpforo_text( $post['body'], 150, false ) ?></p>
|
themes/2022/profile-subscriptions.php
CHANGED
@@ -18,7 +18,7 @@ $subscribes = (array) wpfval( WPF()->current_object, 'subscribes' );
|
|
18 |
$item_url = WPF()->forum->get_forum_url( $item['forumid'] );
|
19 |
} elseif( $subscribe['type'] === 'topic' ) {
|
20 |
$item = WPF()->topic->get_topic( $subscribe['itemid'] );
|
21 |
-
$item_url = WPF()->topic->
|
22 |
} elseif( in_array( $subscribe['type'], [ 'forums', 'forums-topics' ] ) ) {
|
23 |
$item = [ 'title' => wpforo_phrase( 'All ' . $subscribe['type'], false ) ];
|
24 |
$item_url = '#';
|
18 |
$item_url = WPF()->forum->get_forum_url( $item['forumid'] );
|
19 |
} elseif( $subscribe['type'] === 'topic' ) {
|
20 |
$item = WPF()->topic->get_topic( $subscribe['itemid'] );
|
21 |
+
$item_url = WPF()->topic->get_url( $item['topicid'] );
|
22 |
} elseif( in_array( $subscribe['type'], [ 'forums', 'forums-topics' ] ) ) {
|
23 |
$item = [ 'title' => wpforo_phrase( 'All ' . $subscribe['type'], false ) ];
|
24 |
$item_url = '#';
|
themes/2022/recent.php
CHANGED
@@ -218,7 +218,7 @@ if( $type === 'topics' ) {
|
|
218 |
}
|
219 |
}
|
220 |
$topic_url = wpforo_topic( $topic['topicid'], 'url' );
|
221 |
-
$topic_posturl = ( $view == 'unread' && wpfval( $last_post, 'url' ) ) ? $last_post['url'] : WPF()->topic->
|
222 |
$post_toglle = wpforo_setting( 'topics', 'layout_extended_intro_posts_toggle' );
|
223 |
?>
|
224 |
<tr class="wpf-ttr <?php wpforo_unread( $topic['topicid'], 'topic' ); ?>">
|
@@ -292,7 +292,7 @@ if( $type === 'topics' ) {
|
|
292 |
<?php endif; ?>
|
293 |
</td>
|
294 |
<td class="wpf-spost-title">
|
295 |
-
<a href="<?php echo esc_url( WPF()->post->
|
296 |
<p style="font-size:12px"><?php wpforo_member_link( $member, 'by' ); ?>, <?php wpforo_date( $post['created'] ); ?></p>
|
297 |
<div class="wpf-spost-forum">
|
298 |
<span class="wpf-spost-forum-label"><?php wpforo_phrase('Forum') ?></span>
|
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' ); ?>">
|
292 |
<?php endif; ?>
|
293 |
</td>
|
294 |
<td class="wpf-spost-title">
|
295 |
+
<a href="<?php echo esc_url( WPF()->post->get_url( $postid ) ) ?>" class="wpf-spost-title-link" title="<?php wpforo_phrase( 'View entire post' ) ?>"><?php echo esc_html( $title ) ?> <i class="fas fa-chevron-right" style="font-size:11px;"></i></a>
|
296 |
<p style="font-size:12px"><?php wpforo_member_link( $member, 'by' ); ?>, <?php wpforo_date( $post['created'] ); ?></p>
|
297 |
<div class="wpf-spost-forum">
|
298 |
<span class="wpf-spost-forum-label"><?php wpforo_phrase('Forum') ?></span>
|
themes/2022/search.php
CHANGED
@@ -38,7 +38,7 @@ $posts = WPF()->current_object['posts'];
|
|
38 |
<tr class="wpf-ttr">
|
39 |
<td class="wpf-spost-icon"><i class="fas fa-comments fa-1x wpfcl-0"></i></td>
|
40 |
<td class="wpf-spost-title">
|
41 |
-
<a href="<?php echo esc_url( WPF()->post->
|
42 |
</td>
|
43 |
<?php if( ! $is_tag ): ?>
|
44 |
<td class="wpf-spost-result wpfcl-5"><?php echo( isset( $post['matches'] ) ? ceil( $post['matches'] ) : '' ) ?> <?php wpforo_phrase( 'relevance' ) ?></td>
|
38 |
<tr class="wpf-ttr">
|
39 |
<td class="wpf-spost-icon"><i class="fas fa-comments fa-1x wpfcl-0"></i></td>
|
40 |
<td class="wpf-spost-title">
|
41 |
+
<a href="<?php echo esc_url( WPF()->post->get_url( $post['postid'] ) ) ?>" title="<?php wpforo_phrase( 'View entire post' ) ?>"><?php echo esc_html( $post['title'] ) ?> <i class="fas fa-chevron-right" style="font-size:11px;"></i></a>
|
42 |
</td>
|
43 |
<?php if( ! $is_tag ): ?>
|
44 |
<td class="wpf-spost-result wpfcl-5"><?php echo( isset( $post['matches'] ) ? ceil( $post['matches'] ) : '' ) ?> <?php wpforo_phrase( 'relevance' ) ?></td>
|
themes/2022/style-rtl.css
CHANGED
@@ -247,6 +247,9 @@ RTL Style of Classic Theme
|
|
247 |
#wpforo #wpforo-wrap .wpforo-revision-body blockquote{display:block; margin:5px 0 15px 0; width:90%; padding:10px; font-size:13px;}
|
248 |
#wpforo #wpforo-wrap .wpforo-post .wpforo-post-quote-author,
|
249 |
#wpforo #wpforo-wrap .wpforo-revision-body .wpforo-post-quote-author{padding:5px 0; font-weight:bold;}
|
|
|
|
|
|
|
250 |
#wpforo #wpforo-wrap .wpforo-post .wpforo-post-code,
|
251 |
#wpforo #wpforo-wrap .wpforo-revision-body .wpforo-post-code{max-width:90%; overflow-x:auto; padding:5px 10px 15px 10px; margin:10px 0; font-size:12px }
|
252 |
#wpforo #wpforo-wrap .wpforo-post code,
|
@@ -988,6 +991,9 @@ RTL Style of Classic Theme
|
|
988 |
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-panel .wpforo-profile-head-data .wpf-profile-head-right{display: flex; justify-content: flex-end; align-items: flex-end;}
|
989 |
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-panel .wpf-edit-cover{font-size: 20px; padding: 0 4px; margin: 0; line-height: 18px; color: #555; cursor: pointer;}
|
990 |
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-panel .wpf-edit-cover i{background-color: #ccc; opacity: 0.7; padding: 1px 2px; border-radius: 3px;}
|
|
|
|
|
|
|
991 |
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-bottom{padding: 18px 180px 0 0px; display: flex; justify-content: space-between; align-items: flex-start; width: 100%; margin-top: -12px;}
|
992 |
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-bottom .wpfp-flex{flex-grow: 1;}
|
993 |
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-bottom .wpfp-box{padding-left: 16px; margin-left: 0;}
|
247 |
#wpforo #wpforo-wrap .wpforo-revision-body blockquote{display:block; margin:5px 0 15px 0; width:90%; padding:10px; font-size:13px;}
|
248 |
#wpforo #wpforo-wrap .wpforo-post .wpforo-post-quote-author,
|
249 |
#wpforo #wpforo-wrap .wpforo-revision-body .wpforo-post-quote-author{padding:5px 0; font-weight:bold;}
|
250 |
+
#wpforo #wpforo-wrap .wpforo-post .wpforo-post-quote-head,
|
251 |
+
#wpforo #wpforo-wrap .wpforo-comment .wpforo-post-quote-head,
|
252 |
+
#wpforo #wpforo-wrap .wpforo-revision-body .wpforo-post-quote-head{ display: flex; justify-content: space-between; flex-wrap: nowrap; }
|
253 |
#wpforo #wpforo-wrap .wpforo-post .wpforo-post-code,
|
254 |
#wpforo #wpforo-wrap .wpforo-revision-body .wpforo-post-code{max-width:90%; overflow-x:auto; padding:5px 10px 15px 10px; margin:10px 0; font-size:12px }
|
255 |
#wpforo #wpforo-wrap .wpforo-post code,
|
991 |
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-panel .wpforo-profile-head-data .wpf-profile-head-right{display: flex; justify-content: flex-end; align-items: flex-end;}
|
992 |
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-panel .wpf-edit-cover{font-size: 20px; padding: 0 4px; margin: 0; line-height: 18px; color: #555; cursor: pointer;}
|
993 |
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-panel .wpf-edit-cover i{background-color: #ccc; opacity: 0.7; padding: 1px 2px; border-radius: 3px;}
|
994 |
+
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-panel .wpf-edit-cover ul.wpf-edit-cover-options{ position: absolute; z-index: 1; min-width: 150px; background-color: white; color: black; display: none; flex-direction: column; font-size: 12px; left: 35px; bottom: 0; }
|
995 |
+
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-panel .wpf-edit-cover ul.wpf-edit-cover-options li{ opacity: 0.7; flex-grow: 1; flex-shrink: 0; width: 100%; white-space: nowrap; padding: 7px 15px; }
|
996 |
+
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-panel .wpf-edit-cover ul.wpf-edit-cover-options li:hover{ opacity: 1; }
|
997 |
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-bottom{padding: 18px 180px 0 0px; display: flex; justify-content: space-between; align-items: flex-start; width: 100%; margin-top: -12px;}
|
998 |
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-bottom .wpfp-flex{flex-grow: 1;}
|
999 |
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-bottom .wpfp-box{padding-left: 16px; margin-left: 0;}
|
themes/2022/style.css
CHANGED
@@ -253,6 +253,9 @@ Author: gVectors Team
|
|
253 |
#wpforo #wpforo-wrap .wpforo-revision-body blockquote{display:block; margin:5px 0 15px 0; width:90%; padding:10px; font-size:13px;}
|
254 |
#wpforo #wpforo-wrap .wpforo-post .wpforo-post-quote-author,
|
255 |
#wpforo #wpforo-wrap .wpforo-revision-body .wpforo-post-quote-author{padding:5px 0; font-weight:bold;}
|
|
|
|
|
|
|
256 |
#wpforo #wpforo-wrap .wpforo-post .wpforo-post-code,
|
257 |
#wpforo #wpforo-wrap .wpforo-revision-body .wpforo-post-code{max-width:90%; overflow-x:auto; padding:5px 10px 15px 10px; margin:10px 0; font-size:12px }
|
258 |
#wpforo #wpforo-wrap .wpforo-post code,
|
@@ -992,9 +995,12 @@ Author: gVectors Team
|
|
992 |
#wpforo #wpforo-wrap .wpforo-profile .wpf-profile-details .wpfp-name .wpf-author-nicename {display: inline-block;border-left: 2px solid #bbb; font-weight: normal; padding-left: 8px; margin-left: 6px; line-height: 20px; vertical-align: initial; color: #111; font-size: 15px;}
|
993 |
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-panel .wpforo-profile-head-data .wpfp-box{padding-right: 16px; margin-right: 0;}
|
994 |
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-panel .wpforo-profile-head-data .wpf-profile-head-right{display: flex; justify-content: flex-end; align-items: flex-end;}
|
995 |
-
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-panel .wpf-edit-cover{font-size: 20px; padding: 0 4px; margin: 0; line-height: 18px; color: #555; cursor: pointer;}
|
996 |
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-panel .wpf-edit-cover i{background-color: #ccc; opacity: 0.7; padding: 1px 2px; border-radius: 3px;}
|
997 |
-
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-
|
|
|
|
|
|
|
998 |
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-bottom .wpfp-flex{flex-grow: 1;}
|
999 |
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-bottom .wpfp-box{padding-right: 16px; margin-right: 0;}
|
1000 |
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-bottom .wpfp-reputation{border-right: none; line-height: 30px;}
|
253 |
#wpforo #wpforo-wrap .wpforo-revision-body blockquote{display:block; margin:5px 0 15px 0; width:90%; padding:10px; font-size:13px;}
|
254 |
#wpforo #wpforo-wrap .wpforo-post .wpforo-post-quote-author,
|
255 |
#wpforo #wpforo-wrap .wpforo-revision-body .wpforo-post-quote-author{padding:5px 0; font-weight:bold;}
|
256 |
+
#wpforo #wpforo-wrap .wpforo-post .wpforo-post-quote-head,
|
257 |
+
#wpforo #wpforo-wrap .wpforo-comment .wpforo-post-quote-head,
|
258 |
+
#wpforo #wpforo-wrap .wpforo-revision-body .wpforo-post-quote-head{ display: flex; justify-content: space-between; flex-wrap: nowrap; }
|
259 |
#wpforo #wpforo-wrap .wpforo-post .wpforo-post-code,
|
260 |
#wpforo #wpforo-wrap .wpforo-revision-body .wpforo-post-code{max-width:90%; overflow-x:auto; padding:5px 10px 15px 10px; margin:10px 0; font-size:12px }
|
261 |
#wpforo #wpforo-wrap .wpforo-post code,
|
995 |
#wpforo #wpforo-wrap .wpforo-profile .wpf-profile-details .wpfp-name .wpf-author-nicename {display: inline-block;border-left: 2px solid #bbb; font-weight: normal; padding-left: 8px; margin-left: 6px; line-height: 20px; vertical-align: initial; color: #111; font-size: 15px;}
|
996 |
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-panel .wpforo-profile-head-data .wpfp-box{padding-right: 16px; margin-right: 0;}
|
997 |
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-panel .wpforo-profile-head-data .wpf-profile-head-right{display: flex; justify-content: flex-end; align-items: flex-end;}
|
998 |
+
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-panel .wpf-edit-cover{font-size: 20px; padding: 0 4px; margin: 0; line-height: 18px; color: #555; cursor: pointer; position: relative;}
|
999 |
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-panel .wpf-edit-cover i{background-color: #ccc; opacity: 0.7; padding: 1px 2px; border-radius: 3px;}
|
1000 |
+
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-panel .wpf-edit-cover ul.wpf-edit-cover-options{ position: absolute; z-index: 1; min-width: 150px; background-color: white; color: black; display: none; flex-direction: column; font-size: 12px; right: 35px; bottom: 0; }
|
1001 |
+
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-panel .wpf-edit-cover ul.wpf-edit-cover-options li{ opacity: 0.7; flex-grow: 1; flex-shrink: 0; width: 100%; white-space: nowrap; padding: 7px 15px; }
|
1002 |
+
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-panel .wpf-edit-cover ul.wpf-edit-cover-options li:hover{ opacity: 1; }
|
1003 |
+
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-bottom{padding: 18px 0 0 180px; display: flex; justify-content: space-between; align-items: flex-start; width: 100%; margin-top: -12px;}
|
1004 |
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-bottom .wpfp-flex{flex-grow: 1;}
|
1005 |
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-bottom .wpfp-box{padding-right: 16px; margin-right: 0;}
|
1006 |
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-bottom .wpfp-reputation{border-right: none; line-height: 30px;}
|
themes/2022/styles/matrix.css
CHANGED
@@ -69,6 +69,7 @@
|
|
69 |
#wpf-widget-profile .wpf-notifications .wpf-notification-content li:hover{background: __WPFCOLOR_9__;}
|
70 |
#wpf-widget-profile .wpf-notifications .wpf-notification-content li:hover .wpf-nleft i{color: __WPFCOLOR_20__;}
|
71 |
|
|
|
72 |
|
73 |
#wpforo #wpforo-wrap #wpforo-poweredby{ color: __WPFCOLOR_3__; }
|
74 |
#wpforo #wpforo-wrap #wpforo-poweredby a{ color: __WPFCOLOR_12__; }
|
69 |
#wpf-widget-profile .wpf-notifications .wpf-notification-content li:hover{background: __WPFCOLOR_9__;}
|
70 |
#wpf-widget-profile .wpf-notifications .wpf-notification-content li:hover .wpf-nleft i{color: __WPFCOLOR_20__;}
|
71 |
|
72 |
+
#wpforo #wpforo-wrap .wpforo-profile .wpforo-profile-head-panel .wpf-edit-cover ul.wpf-edit-cover-options{ background-color: __WPFCOLOR_7__; }
|
73 |
|
74 |
#wpforo #wpforo-wrap #wpforo-poweredby{ color: __WPFCOLOR_3__; }
|
75 |
#wpforo #wpforo-wrap #wpforo-poweredby a{ color: __WPFCOLOR_12__; }
|
themes/2022/widgets-rtl.css
CHANGED
@@ -74,8 +74,8 @@
|
|
74 |
#wpf-widget-forums .wpforo-widget-content dl{ display:block; padding:0; margin:0;}
|
75 |
#wpforo #wpf-widget-forums .wpforo-widget-content dd,
|
76 |
#wpf-widget-forums .wpforo-widget-content dd{ display:block; margin-right:15px;}
|
77 |
-
#wpforo #wpf-widget-forums .wpforo-widget-content
|
78 |
-
#wpf-widget-forums .wpforo-widget-content
|
79 |
#wpforo .wpforo-widget-wrap ul.wpf-widget-tags,
|
80 |
.wpforo-widget-wrap ul.wpf-widget-tags{display: flex;flex-flow: row wrap;justify-content:start;}
|
81 |
#wpforo .wpforo-widget-wrap .wpf-widget-tags li,
|
@@ -199,4 +199,4 @@
|
|
199 |
#wpf-widget-recent-replies .wpforo-list-item-right p.postuser{font-size:13px;}
|
200 |
#wpforo #wpf-widget-recent-replies .wpforo-list-item-right p.postdate,
|
201 |
#wpf-widget-recent-replies .wpforo-list-item-right p.postdate{font-size:13px;}
|
202 |
-
}
|
74 |
#wpf-widget-forums .wpforo-widget-content dl{ display:block; padding:0; margin:0;}
|
75 |
#wpforo #wpf-widget-forums .wpforo-widget-content dd,
|
76 |
#wpf-widget-forums .wpforo-widget-content dd{ display:block; margin-right:15px;}
|
77 |
+
#wpforo #wpf-widget-forums .wpforo-widget-content .wpf-dl-current .wpf-dl-item-label,
|
78 |
+
#wpf-widget-forums .wpforo-widget-content .wpf-dl-current .wpf-dl-item-label{ font-weight: 700; color: #666; }
|
79 |
#wpforo .wpforo-widget-wrap ul.wpf-widget-tags,
|
80 |
.wpforo-widget-wrap ul.wpf-widget-tags{display: flex;flex-flow: row wrap;justify-content:start;}
|
81 |
#wpforo .wpforo-widget-wrap .wpf-widget-tags li,
|
199 |
#wpf-widget-recent-replies .wpforo-list-item-right p.postuser{font-size:13px;}
|
200 |
#wpforo #wpf-widget-recent-replies .wpforo-list-item-right p.postdate,
|
201 |
#wpf-widget-recent-replies .wpforo-list-item-right p.postdate{font-size:13px;}
|
202 |
+
}
|
themes/2022/widgets.css
CHANGED
@@ -78,8 +78,8 @@
|
|
78 |
#wpf-widget-forums .wpforo-widget-content dl{ display:block; padding:0; margin:0;}
|
79 |
#wpforo #wpf-widget-forums .wpforo-widget-content dd,
|
80 |
#wpf-widget-forums .wpforo-widget-content dd{ display:block; margin-left:15px;}
|
81 |
-
#wpforo #wpf-widget-forums .wpforo-widget-content
|
82 |
-
#wpf-widget-forums .wpforo-widget-content
|
83 |
#wpforo .wpforo-widget-wrap ul.wpf-widget-tags,
|
84 |
.wpforo-widget-wrap ul.wpf-widget-tags{display: flex;flex-flow: row wrap;justify-content:start;}
|
85 |
#wpforo .wpforo-widget-wrap .wpf-widget-tags li,
|
@@ -203,4 +203,4 @@
|
|
203 |
#wpf-widget-recent-replies .wpforo-list-item-right p.postuser{font-size:13px;}
|
204 |
#wpforo #wpf-widget-recent-replies .wpforo-list-item-right p.postdate,
|
205 |
#wpf-widget-recent-replies .wpforo-list-item-right p.postdate{font-size:13px;}
|
206 |
-
}
|
78 |
#wpf-widget-forums .wpforo-widget-content dl{ display:block; padding:0; margin:0;}
|
79 |
#wpforo #wpf-widget-forums .wpforo-widget-content dd,
|
80 |
#wpf-widget-forums .wpforo-widget-content dd{ display:block; margin-left:15px;}
|
81 |
+
#wpforo #wpf-widget-forums .wpforo-widget-content .wpf-dl-current .wpf-dl-item-label,
|
82 |
+
#wpf-widget-forums .wpforo-widget-content .wpf-dl-current .wpf-dl-item-label{ font-weight: 700; color: #666; }
|
83 |
#wpforo .wpforo-widget-wrap ul.wpf-widget-tags,
|
84 |
.wpforo-widget-wrap ul.wpf-widget-tags{display: flex;flex-flow: row wrap;justify-content:start;}
|
85 |
#wpforo .wpforo-widget-wrap .wpf-widget-tags li,
|
203 |
#wpf-widget-recent-replies .wpforo-list-item-right p.postuser{font-size:13px;}
|
204 |
#wpforo #wpf-widget-recent-replies .wpforo-list-item-right p.postdate,
|
205 |
#wpf-widget-recent-replies .wpforo-list-item-right p.postdate{font-size:13px;}
|
206 |
+
}
|
themes/classic/layouts/1/forum.php
CHANGED
@@ -13,7 +13,7 @@ if( ! defined( 'ABSPATH' ) ) exit;
|
|
13 |
*/
|
14 |
?>
|
15 |
|
16 |
-
<div class="wpfl-1">
|
17 |
<div class="wpforo-category">
|
18 |
<div class="cat-title" title="<?php echo esc_attr( $cat['description'] ); ?>"><?php echo esc_html( $cat['title'] ); ?></div>
|
19 |
<div class="cat-stat-posts"><?php wpforo_phrase( 'Posts' ); ?></div>
|
13 |
*/
|
14 |
?>
|
15 |
|
16 |
+
<div class="wpfl-1 wpforo-section">
|
17 |
<div class="wpforo-category">
|
18 |
<div class="cat-title" title="<?php echo esc_attr( $cat['description'] ); ?>"><?php echo esc_html( $cat['title'] ); ?></div>
|
19 |
<div class="cat-stat-posts"><?php wpforo_phrase( 'Posts' ); ?></div>
|
themes/classic/layouts/2/forum.php
CHANGED
@@ -13,7 +13,7 @@ if( ! defined( 'ABSPATH' ) ) exit;
|
|
13 |
*/
|
14 |
?>
|
15 |
|
16 |
-
<div class="wpfl-2">
|
17 |
<div class="wpforo-category">
|
18 |
<div class="cat-title" title="<?php echo esc_attr( $cat['description'] ); ?>"><?php echo esc_html( $cat['title'] ); ?></div>
|
19 |
<div class="cat-lastpostinfo"><?php wpforo_phrase( 'Last Post Info' ); ?></div>
|
13 |
*/
|
14 |
?>
|
15 |
|
16 |
+
<div class="wpfl-2 wpforo-section">
|
17 |
<div class="wpforo-category">
|
18 |
<div class="cat-title" title="<?php echo esc_attr( $cat['description'] ); ?>"><?php echo esc_html( $cat['title'] ); ?></div>
|
19 |
<div class="cat-lastpostinfo"><?php wpforo_phrase( 'Last Post Info' ); ?></div>
|
themes/classic/layouts/3/forum.php
CHANGED
@@ -13,7 +13,7 @@ if( ! defined( 'ABSPATH' ) ) exit;
|
|
13 |
*/
|
14 |
?>
|
15 |
|
16 |
-
<div class="wpfl-3">
|
17 |
<div class="wpforo-category">
|
18 |
<div class="cat-title" title="<?php echo esc_attr( $cat['description'] ); ?>"><?php echo esc_html( $cat['title'] ); ?></div>
|
19 |
<div class="cat-stat-posts"><?php wpforo_phrase( 'Posts' ) ?></div>
|
13 |
*/
|
14 |
?>
|
15 |
|
16 |
+
<div class="wpfl-3 wpforo-section">
|
17 |
<div class="wpforo-category">
|
18 |
<div class="cat-title" title="<?php echo esc_attr( $cat['description'] ); ?>"><?php echo esc_html( $cat['title'] ); ?></div>
|
19 |
<div class="cat-stat-posts"><?php wpforo_phrase( 'Posts' ) ?></div>
|
themes/classic/layouts/4/forum.php
CHANGED
@@ -27,7 +27,7 @@ if( ! wpforo_setting( 'forums', 'layout_threaded_display_subforums' ) ) {
|
|
27 |
$childs = apply_filters( 'wpforo_forum_list_threaded_layout', $childs );
|
28 |
?>
|
29 |
|
30 |
-
<div id="wpf-cat-<?php echo $cat['forumid'] ?>" class="wpfl-4">
|
31 |
<div class="wpforo-category">
|
32 |
<div class="cat-title" title="<?php echo esc_attr( $cat['description'] ); ?>"><?php echo esc_html( $cat['title'] ); ?></div>
|
33 |
</div>
|
27 |
$childs = apply_filters( 'wpforo_forum_list_threaded_layout', $childs );
|
28 |
?>
|
29 |
|
30 |
+
<div id="wpf-cat-<?php echo $cat['forumid'] ?>" class="wpfl-4 wpforo-section">
|
31 |
<div class="wpforo-category">
|
32 |
<div class="cat-title" title="<?php echo esc_attr( $cat['description'] ); ?>"><?php echo esc_html( $cat['title'] ); ?></div>
|
33 |
</div>
|
themes/classic/profile-activity.php
CHANGED
@@ -15,10 +15,10 @@ $activities = (array) wpfval( WPF()->current_object, 'activities' );
|
|
15 |
<td class="activity-title">
|
16 |
<?php
|
17 |
if( $activity['is_first_post'] ) {
|
18 |
-
$href = esc_url( WPF()->topic->
|
19 |
$link_text = wpforo_text( $activity['title'], 60, false );
|
20 |
} else {
|
21 |
-
$href = esc_url( WPF()->post->
|
22 |
if( ! $link_text = wpforo_text( $activity['body'], 60, false ) ) {
|
23 |
$link_text = wpforo_text( $activity['title'], 60, false );
|
24 |
}
|
15 |
<td class="activity-title">
|
16 |
<?php
|
17 |
if( $activity['is_first_post'] ) {
|
18 |
+
$href = esc_url( WPF()->topic->get_url( $activity['topicid'] ) );
|
19 |
$link_text = wpforo_text( $activity['title'], 60, false );
|
20 |
} else {
|
21 |
+
$href = esc_url( WPF()->post->get_url( $activity['postid'] ) );
|
22 |
if( ! $link_text = wpforo_text( $activity['body'], 60, false ) ) {
|
23 |
$link_text = wpforo_text( $activity['title'], 60, false );
|
24 |
}
|
themes/classic/profile-favored.php
CHANGED
@@ -46,7 +46,7 @@ $posts = (array) wpfval( WPF()->current_object, 'favored_posts' );
|
|
46 |
<div class="wpf-activity-data">
|
47 |
<div class="wpf-activity-top">
|
48 |
<div class="wpf-activity-title">
|
49 |
-
<a href="<?php echo esc_url_raw( WPF()->post->
|
50 |
<?php echo $post['title'] ?>
|
51 |
</a>
|
52 |
<p><?php echo wpforo_text( $post['body'], 150, false ) ?></p>
|
46 |
<div class="wpf-activity-data">
|
47 |
<div class="wpf-activity-top">
|
48 |
<div class="wpf-activity-title">
|
49 |
+
<a href="<?php echo esc_url_raw( WPF()->post->get_url( $post['postid'] ) ) ?>">
|
50 |
<?php echo $post['title'] ?>
|
51 |
</a>
|
52 |
<p><?php echo wpforo_text( $post['body'], 150, false ) ?></p>
|
themes/classic/profile-subscriptions.php
CHANGED
@@ -17,7 +17,7 @@ $subscribes = (array) wpfval( WPF()->current_object, 'subscribes' );
|
|
17 |
$item_url = WPF()->forum->get_forum_url( $item['forumid'] );
|
18 |
} elseif( $subscribe['type'] === 'topic' ) {
|
19 |
$item = WPF()->topic->get_topic( $subscribe['itemid'] );
|
20 |
-
$item_url = WPF()->topic->
|
21 |
} elseif( in_array( $subscribe['type'], [ 'forums', 'forums-topics' ] ) ) {
|
22 |
$item = [ 'title' => wpforo_phrase( 'All ' . $subscribe['type'], false ) ];
|
23 |
$item_url = '#';
|
17 |
$item_url = WPF()->forum->get_forum_url( $item['forumid'] );
|
18 |
} elseif( $subscribe['type'] === 'topic' ) {
|
19 |
$item = WPF()->topic->get_topic( $subscribe['itemid'] );
|
20 |
+
$item_url = WPF()->topic->get_url( $item['topicid'] );
|
21 |
} elseif( in_array( $subscribe['type'], [ 'forums', 'forums-topics' ] ) ) {
|
22 |
$item = [ 'title' => wpforo_phrase( 'All ' . $subscribe['type'], false ) ];
|
23 |
$item_url = '#';
|
themes/classic/recent.php
CHANGED
@@ -218,7 +218,7 @@ if( $type === 'topics' ) {
|
|
218 |
}
|
219 |
}
|
220 |
$topic_url = wpforo_topic( $topic['topicid'], 'url' );
|
221 |
-
$topic_posturl = ( $view == 'unread' && wpfval( $last_post, 'url' ) ) ? $last_post['url'] : WPF()->topic->
|
222 |
$post_toglle = wpforo_setting( 'topics', 'layout_extended_intro_posts_toggle' );
|
223 |
?>
|
224 |
<tr class="wpf-ttr <?php wpforo_unread( $topic['topicid'], 'topic' ); ?>">
|
@@ -289,7 +289,7 @@ if( $type === 'topics' ) {
|
|
289 |
<?php endif; ?>
|
290 |
</td>
|
291 |
<td class="wpf-spost-title">
|
292 |
-
<a href="<?php echo esc_url( WPF()->post->
|
293 |
<p style="font-size:12px"><?php wpforo_member_link( $member, 'by' ); ?>, <?php wpforo_date( $post['created'] ); ?></p>
|
294 |
</td>
|
295 |
<td class="wpf-spost-forum"><a href="<?php echo $forum['url'] ?>"><?php echo esc_html( $forum['title'] ); ?></a></td>
|
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' ); ?>">
|
289 |
<?php endif; ?>
|
290 |
</td>
|
291 |
<td class="wpf-spost-title">
|
292 |
+
<a href="<?php echo esc_url( WPF()->post->get_url( $postid ) ) ?>" class="wpf-spost-title-link" title="<?php wpforo_phrase( 'View entire post' ) ?>"><?php echo esc_html( $title ) ?> <i class="fas fa-chevron-right" style="font-size:11px;"></i></a>
|
293 |
<p style="font-size:12px"><?php wpforo_member_link( $member, 'by' ); ?>, <?php wpforo_date( $post['created'] ); ?></p>
|
294 |
</td>
|
295 |
<td class="wpf-spost-forum"><a href="<?php echo $forum['url'] ?>"><?php echo esc_html( $forum['title'] ); ?></a></td>
|
themes/classic/search.php
CHANGED
@@ -38,7 +38,7 @@ $posts = WPF()->current_object['posts'];
|
|
38 |
<tr class="wpf-ttr">
|
39 |
<td class="wpf-spost-icon"><i class="fas fa-comments fa-1x wpfcl-0"></i></td>
|
40 |
<td class="wpf-spost-title">
|
41 |
-
<a href="<?php echo esc_url( WPF()->post->
|
42 |
</td>
|
43 |
<?php if( ! $is_tag ): ?>
|
44 |
<td class="wpf-spost-result wpfcl-5"><?php echo( isset( $post['matches'] ) ? ceil( $post['matches'] ) : '' ) ?><?php wpforo_phrase( 'relevance' ) ?></td>
|
38 |
<tr class="wpf-ttr">
|
39 |
<td class="wpf-spost-icon"><i class="fas fa-comments fa-1x wpfcl-0"></i></td>
|
40 |
<td class="wpf-spost-title">
|
41 |
+
<a href="<?php echo esc_url( WPF()->post->get_url( $post['postid'] ) ) ?>" title="<?php wpforo_phrase( 'View entire post' ) ?>"><?php echo esc_html( $post['title'] ) ?> <i class="fas fa-chevron-right" style="font-size:11px;"></i></a>
|
42 |
</td>
|
43 |
<?php if( ! $is_tag ): ?>
|
44 |
<td class="wpf-spost-result wpfcl-5"><?php echo( isset( $post['matches'] ) ? ceil( $post['matches'] ) : '' ) ?><?php wpforo_phrase( 'relevance' ) ?></td>
|
themes/classic/style-rtl.css
CHANGED
@@ -233,6 +233,9 @@ RTL Style of Classic Theme
|
|
233 |
#wpforo #wpforo-wrap .wpforo-revision-body blockquote{display:block; margin:5px 0 15px 0; width:90%; padding:10px; font-size:13px;}
|
234 |
#wpforo #wpforo-wrap .wpforo-post .wpforo-post-quote-author,
|
235 |
#wpforo #wpforo-wrap .wpforo-revision-body .wpforo-post-quote-author{padding:5px 0; font-weight:bold;}
|
|
|
|
|
|
|
236 |
#wpforo #wpforo-wrap .wpforo-post .wpforo-post-code,
|
237 |
#wpforo #wpforo-wrap .wpforo-revision-body .wpforo-post-code{max-width:90%; overflow-x:auto; padding:5px 10px 15px 10px; margin:10px 0; font-size:12px }
|
238 |
#wpforo #wpforo-wrap .wpforo-post code,
|
233 |
#wpforo #wpforo-wrap .wpforo-revision-body blockquote{display:block; margin:5px 0 15px 0; width:90%; padding:10px; font-size:13px;}
|
234 |
#wpforo #wpforo-wrap .wpforo-post .wpforo-post-quote-author,
|
235 |
#wpforo #wpforo-wrap .wpforo-revision-body .wpforo-post-quote-author{padding:5px 0; font-weight:bold;}
|
236 |
+
#wpforo #wpforo-wrap .wpforo-post .wpforo-post-quote-head,
|
237 |
+
#wpforo #wpforo-wrap .wpforo-comment .wpforo-post-quote-head,
|
238 |
+
#wpforo #wpforo-wrap .wpforo-revision-body .wpforo-post-quote-head{ display: flex; justify-content: space-between; flex-wrap: nowrap; }
|
239 |
#wpforo #wpforo-wrap .wpforo-post .wpforo-post-code,
|
240 |
#wpforo #wpforo-wrap .wpforo-revision-body .wpforo-post-code{max-width:90%; overflow-x:auto; padding:5px 10px 15px 10px; margin:10px 0; font-size:12px }
|
241 |
#wpforo #wpforo-wrap .wpforo-post code,
|
themes/classic/style.css
CHANGED
@@ -238,6 +238,9 @@ Author: gVectors Team
|
|
238 |
#wpforo #wpforo-wrap .wpforo-revision-body blockquote{display:block; margin:5px 0 15px 0; width:90%; padding:10px; font-size:13px;}
|
239 |
#wpforo #wpforo-wrap .wpforo-post .wpforo-post-quote-author,
|
240 |
#wpforo #wpforo-wrap .wpforo-revision-body .wpforo-post-quote-author{padding:5px 0; font-weight:bold;}
|
|
|
|
|
|
|
241 |
#wpforo #wpforo-wrap .wpforo-post .wpforo-post-code,
|
242 |
#wpforo #wpforo-wrap .wpforo-revision-body .wpforo-post-code{max-width:90%; overflow-x:auto; padding:5px 10px 15px 10px; margin:10px 0; font-size:12px }
|
243 |
#wpforo #wpforo-wrap .wpforo-post code,
|
238 |
#wpforo #wpforo-wrap .wpforo-revision-body blockquote{display:block; margin:5px 0 15px 0; width:90%; padding:10px; font-size:13px;}
|
239 |
#wpforo #wpforo-wrap .wpforo-post .wpforo-post-quote-author,
|
240 |
#wpforo #wpforo-wrap .wpforo-revision-body .wpforo-post-quote-author{padding:5px 0; font-weight:bold;}
|
241 |
+
#wpforo #wpforo-wrap .wpforo-post .wpforo-post-quote-head,
|
242 |
+
#wpforo #wpforo-wrap .wpforo-comment .wpforo-post-quote-head,
|
243 |
+
#wpforo #wpforo-wrap .wpforo-revision-body .wpforo-post-quote-head{ display: flex; justify-content: space-between; flex-wrap: nowrap; }
|
244 |
#wpforo #wpforo-wrap .wpforo-post .wpforo-post-code,
|
245 |
#wpforo #wpforo-wrap .wpforo-revision-body .wpforo-post-code{max-width:90%; overflow-x:auto; padding:5px 10px 15px 10px; margin:10px 0; font-size:12px }
|
246 |
#wpforo #wpforo-wrap .wpforo-post code,
|
themes/classic/widgets-rtl.css
CHANGED
@@ -73,8 +73,8 @@
|
|
73 |
#wpf-widget-forums .wpforo-widget-content dl{ display:block; padding:0; margin:0;}
|
74 |
#wpforo #wpf-widget-forums .wpforo-widget-content dd,
|
75 |
#wpf-widget-forums .wpforo-widget-content dd{ display:block; margin-right:15px;}
|
76 |
-
#wpforo #wpf-widget-forums .wpforo-widget-content
|
77 |
-
#wpf-widget-forums .wpforo-widget-content
|
78 |
#wpforo .wpforo-widget-wrap ul.wpf-widget-tags,
|
79 |
.wpforo-widget-wrap ul.wpf-widget-tags{display: flex;flex-flow: row wrap;justify-content:start;}
|
80 |
#wpforo .wpforo-widget-wrap .wpf-widget-tags li,
|
@@ -200,4 +200,4 @@
|
|
200 |
#wpf-widget-recent-replies .wpforo-list-item-right p.postuser{font-size:13px;}
|
201 |
#wpforo #wpf-widget-recent-replies .wpforo-list-item-right p.postdate,
|
202 |
#wpf-widget-recent-replies .wpforo-list-item-right p.postdate{font-size:13px;}
|
203 |
-
}
|
73 |
#wpf-widget-forums .wpforo-widget-content dl{ display:block; padding:0; margin:0;}
|
74 |
#wpforo #wpf-widget-forums .wpforo-widget-content dd,
|
75 |
#wpf-widget-forums .wpforo-widget-content dd{ display:block; margin-right:15px;}
|
76 |
+
#wpforo #wpf-widget-forums .wpforo-widget-content .wpf-dl-current .wpf-dl-item-label,
|
77 |
+
#wpf-widget-forums .wpforo-widget-content .wpf-dl-current .wpf-dl-item-label{ font-weight: 700; color: #666; }
|
78 |
#wpforo .wpforo-widget-wrap ul.wpf-widget-tags,
|
79 |
.wpforo-widget-wrap ul.wpf-widget-tags{display: flex;flex-flow: row wrap;justify-content:start;}
|
80 |
#wpforo .wpforo-widget-wrap .wpf-widget-tags li,
|
200 |
#wpf-widget-recent-replies .wpforo-list-item-right p.postuser{font-size:13px;}
|
201 |
#wpforo #wpf-widget-recent-replies .wpforo-list-item-right p.postdate,
|
202 |
#wpf-widget-recent-replies .wpforo-list-item-right p.postdate{font-size:13px;}
|
203 |
+
}
|
themes/classic/widgets.css
CHANGED
@@ -73,8 +73,8 @@
|
|
73 |
#wpf-widget-forums .wpforo-widget-content dl{ display:block; padding:0; margin:0;}
|
74 |
#wpforo #wpf-widget-forums .wpforo-widget-content dd,
|
75 |
#wpf-widget-forums .wpforo-widget-content dd{ display:block; margin-left:15px;}
|
76 |
-
#wpforo #wpf-widget-forums .wpforo-widget-content
|
77 |
-
#wpf-widget-forums .wpforo-widget-content
|
78 |
#wpforo .wpforo-widget-wrap ul.wpf-widget-tags,
|
79 |
.wpforo-widget-wrap ul.wpf-widget-tags{display: flex;flex-flow: row wrap;justify-content:start;}
|
80 |
#wpforo .wpforo-widget-wrap .wpf-widget-tags li,
|
@@ -200,4 +200,4 @@
|
|
200 |
#wpf-widget-recent-replies .wpforo-list-item-right p.postuser{font-size:13px;}
|
201 |
#wpforo #wpf-widget-recent-replies .wpforo-list-item-right p.postdate,
|
202 |
#wpf-widget-recent-replies .wpforo-list-item-right p.postdate{font-size:13px;}
|
203 |
-
}
|
73 |
#wpf-widget-forums .wpforo-widget-content dl{ display:block; padding:0; margin:0;}
|
74 |
#wpforo #wpf-widget-forums .wpforo-widget-content dd,
|
75 |
#wpf-widget-forums .wpforo-widget-content dd{ display:block; margin-left:15px;}
|
76 |
+
#wpforo #wpf-widget-forums .wpforo-widget-content .wpf-dl-current .wpf-dl-item-label,
|
77 |
+
#wpf-widget-forums .wpforo-widget-content .wpf-dl-current .wpf-dl-item-label{ font-weight: 700; color: #666; }
|
78 |
#wpforo .wpforo-widget-wrap ul.wpf-widget-tags,
|
79 |
.wpforo-widget-wrap ul.wpf-widget-tags{display: flex;flex-flow: row wrap;justify-content:start;}
|
80 |
#wpforo .wpforo-widget-wrap .wpf-widget-tags li,
|
200 |
#wpf-widget-recent-replies .wpforo-list-item-right p.postuser{font-size:13px;}
|
201 |
#wpforo #wpf-widget-recent-replies .wpforo-list-item-right p.postdate,
|
202 |
#wpf-widget-recent-replies .wpforo-list-item-right p.postdate{font-size:13px;}
|
203 |
+
}
|
widgets/Forums.php
CHANGED
@@ -13,22 +13,23 @@ class Forums extends WP_Widget {
|
|
13 |
function __construct() {
|
14 |
parent::__construct( 'wpforo_forums', 'wpForo Forums', [ 'description' => 'Forum tree.' ] );
|
15 |
$this->init_local_vars();
|
|
|
|
|
16 |
}
|
17 |
|
18 |
private function init_local_vars() {
|
19 |
$this->default_instance = [
|
|
|
20 |
'title' => __( 'Forums', 'wpforo' ),
|
21 |
'dropdown' => false,
|
22 |
];
|
23 |
}
|
24 |
|
25 |
-
public function
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
}
|
31 |
-
echo '<div class="wpforo-widget-content">';
|
32 |
if ( wpfval( $instance, 'dropdown' ) ) {
|
33 |
$forum_urls = [];
|
34 |
$forums = array_filter( WPF()->forum->get_forums(), function ( $forum ) {
|
@@ -41,46 +42,76 @@ class Forums extends WP_Widget {
|
|
41 |
}
|
42 |
if ( ! empty( $forum_urls ) ) {
|
43 |
echo '<select onchange="window.location.href = wpf_forum_urls[\'forum_\' + this.value]">';
|
44 |
-
WPF()->forum->tree( 'select_box', true, WPF()->current_object['forumid']
|
45 |
echo '</select>';
|
46 |
?>
|
47 |
-
<script>
|
48 |
-
var
|
|
|
|
|
49 |
<?php
|
50 |
}
|
51 |
} else {
|
52 |
-
WPF()->forum->tree( 'front_list', true, [], false );
|
53 |
}
|
54 |
-
|
55 |
-
|
56 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
}
|
58 |
|
59 |
public function form( $instance ) {
|
60 |
-
$
|
61 |
-
$
|
|
|
|
|
|
|
62 |
?>
|
63 |
-
<
|
64 |
-
<
|
65 |
-
|
66 |
-
<
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
77 |
<?php
|
78 |
}
|
79 |
|
80 |
public function update( $new_instance, $old_instance ) {
|
|
|
81 |
$instance = [];
|
82 |
-
$instance['
|
83 |
-
$instance['
|
|
|
84 |
|
85 |
return $instance;
|
86 |
}
|
13 |
function __construct() {
|
14 |
parent::__construct( 'wpforo_forums', 'wpForo Forums', [ 'description' => 'Forum tree.' ] );
|
15 |
$this->init_local_vars();
|
16 |
+
add_action( 'wp_ajax_wpforo_load_ajax_widget_Forums', [ $this, 'load_ajax_widget' ] );
|
17 |
+
add_action( 'wp_ajax_nopriv_wpforo_load_ajax_widget_Forums', [ $this, 'load_ajax_widget' ] );
|
18 |
}
|
19 |
|
20 |
private function init_local_vars() {
|
21 |
$this->default_instance = [
|
22 |
+
'boardid' => 0,
|
23 |
'title' => __( 'Forums', 'wpforo' ),
|
24 |
'dropdown' => false,
|
25 |
];
|
26 |
}
|
27 |
|
28 |
+
public function load_ajax_widget() {
|
29 |
+
$_POST = wp_unslash( $_POST );
|
30 |
+
$instance = json_decode( (string) wpfval( $_POST, 'instance' ), true );
|
31 |
+
ob_start();
|
32 |
+
|
|
|
|
|
33 |
if ( wpfval( $instance, 'dropdown' ) ) {
|
34 |
$forum_urls = [];
|
35 |
$forums = array_filter( WPF()->forum->get_forums(), function ( $forum ) {
|
42 |
}
|
43 |
if ( ! empty( $forum_urls ) ) {
|
44 |
echo '<select onchange="window.location.href = wpf_forum_urls[\'forum_\' + this.value]">';
|
45 |
+
WPF()->forum->tree( 'select_box', true, WPF()->current_object['forumid'] );
|
46 |
echo '</select>';
|
47 |
?>
|
48 |
+
<script>
|
49 |
+
var wpf_forum_json = '<?php echo json_encode( $forum_urls ) ?>';
|
50 |
+
var wpf_forum_urls = JSON.parse(wpf_forum_json);
|
51 |
+
</script>
|
52 |
<?php
|
53 |
}
|
54 |
} else {
|
55 |
+
WPF()->forum->tree( 'front_list', true, WPF()->current_object['forumid'], false );
|
56 |
}
|
57 |
+
|
58 |
+
wp_send_json_success( [ 'html' => ob_get_clean() ] );
|
59 |
+
}
|
60 |
+
|
61 |
+
public function widget( $args, $instance ) {
|
62 |
+
wp_enqueue_script( 'wpforo-widgets-js' );
|
63 |
+
$instance = wpforo_parse_args( $instance, $this->default_instance );
|
64 |
+
$data = [
|
65 |
+
'boardid' => $instance['boardid'],
|
66 |
+
'action' => 'wpforo_load_ajax_widget_Forums',
|
67 |
+
'instance' => $instance,
|
68 |
+
];
|
69 |
+
if( WPF()->board->get_current( 'boardid' ) !== $instance['boardid'] ) $data['referer'] = home_url();
|
70 |
+
$json = json_encode( $data );
|
71 |
+
echo $args['before_widget'] . '<div id="wpf-widget-forums" class="wpforo-widget-wrap">';
|
72 |
+
if ( $instance['title'] ) echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'] ) . $args['after_title'];
|
73 |
+
echo '<div class="wpforo-widget-content wpforo-ajax-widget" data-json="' . esc_attr( $json ) . '"></div></div>' . $args['after_widget'];
|
74 |
}
|
75 |
|
76 |
public function form( $instance ) {
|
77 |
+
$instance = wpforo_parse_args( $instance, $this->default_instance );
|
78 |
+
$boardid = (int) $instance['boardid'];
|
79 |
+
$title = (string) $instance['title'];
|
80 |
+
$dropdown = (bool) $instance['dropdown'];
|
81 |
+
WPF()->change_board( $boardid );
|
82 |
?>
|
83 |
+
<div class="wpf-wdg-wrapper">
|
84 |
+
<p>
|
85 |
+
<label><?php _e( 'Title', 'wpforo' ); ?>:</label>
|
86 |
+
<label>
|
87 |
+
<input class="widefat" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>">
|
88 |
+
</label>
|
89 |
+
</p>
|
90 |
+
<p>
|
91 |
+
<label for="<?php echo $this->get_field_id( 'boardid' ) ?>"></label>
|
92 |
+
<select id="<?php echo $this->get_field_id( 'boardid' ) ?>" name="<?php echo esc_attr( $this->get_field_name( 'boardid' ) ); ?>">
|
93 |
+
<?php echo WPF()->board->dropdown( $boardid ) ?>
|
94 |
+
</select>
|
95 |
+
</p>
|
96 |
+
<p>
|
97 |
+
<span><?php _e( 'Display as dropdown', 'wpforo' ); ?> : </span>
|
98 |
+
|
99 |
+
<label for="<?php echo $this->get_field_id( 'dropdown' ) ?>_1"><?php _e( 'Yes', 'wpforo' ); ?></label>
|
100 |
+
<input id="<?php echo $this->get_field_id( 'dropdown' ) ?>_1" value="1" <?php checked( $dropdown ); ?> type="radio" name="<?php echo esc_attr( $this->get_field_name( 'dropdown' ) ); ?>">
|
101 |
+
|
102 |
+
<label for="<?php echo $this->get_field_id( 'dropdown' ) ?>_0"><?php _e( 'No', 'wpforo' ); ?></label>
|
103 |
+
<input id="<?php echo $this->get_field_id( 'dropdown' ) ?>_0" value="0" <?php checked( $dropdown, false ); ?> type="radio" name="<?php echo esc_attr( $this->get_field_name( 'dropdown' ) ); ?>">
|
104 |
+
</p>
|
105 |
+
</div>
|
106 |
<?php
|
107 |
}
|
108 |
|
109 |
public function update( $new_instance, $old_instance ) {
|
110 |
+
$new_instance = wpforo_parse_args( $new_instance, $this->default_instance );
|
111 |
$instance = [];
|
112 |
+
$instance['boardid'] = (int) $new_instance['boardid'];
|
113 |
+
$instance['title'] = strip_tags( (string) $new_instance['title'] );
|
114 |
+
$instance['dropdown'] = (bool) (int) $new_instance['dropdown'];
|
115 |
|
116 |
return $instance;
|
117 |
}
|
widgets/OnlineMembers.php
CHANGED
@@ -5,22 +5,33 @@ namespace wpforo\widgets;
|
|
5 |
use WP_Widget;
|
6 |
|
7 |
class OnlineMembers extends WP_Widget {
|
|
|
|
|
|
|
|
|
|
|
8 |
function __construct() {
|
9 |
parent::__construct( 'wpforo_online_members', 'wpForo Online Members', [ 'description' => 'Online members.' ] );
|
|
|
|
|
|
|
10 |
}
|
11 |
|
12 |
-
|
13 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
$groupids = ( ! empty( $instance['groupids'] ) ? array_filter( wpforo_parse_args( json_decode( $instance['groupids'], true ) ) ) : WPF()->usergroup->get_visible_usergroup_ids() );
|
21 |
-
// widget content from front end
|
22 |
-
$online_members = WPF()->member->get_online_members( $instance['count'], $groupids );
|
23 |
-
echo '<div class="wpforo-widget-content">';
|
24 |
if( ! empty( $online_members ) ) {
|
25 |
echo '<ul>
|
26 |
<li>
|
@@ -45,55 +56,73 @@ class OnlineMembers extends WP_Widget {
|
|
45 |
} else {
|
46 |
echo '<p class="wpf-widget-note"> ' . wpforo_phrase( 'No online members at the moment', false ) . '</p>';
|
47 |
}
|
48 |
-
|
49 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
50 |
}
|
51 |
|
52 |
public function form( $instance ) {
|
53 |
-
$
|
54 |
-
$
|
55 |
-
$
|
56 |
-
$
|
|
|
|
|
57 |
?>
|
58 |
-
<
|
59 |
-
<
|
60 |
-
|
61 |
-
<input class="widefat" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text"
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
<label>
|
68 |
-
<select name="<?php echo esc_attr( $this->get_field_name( 'groupids' ) ); ?>[]" multiple>
|
69 |
-
<?php WPF()->usergroup->show_selectbox( $groupids ) ?>
|
70 |
</select>
|
71 |
-
</
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
<input<?php checked( $display_avatar ); ?> type="
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
|
|
|
|
|
|
88 |
<?php
|
89 |
}
|
90 |
|
91 |
public function update( $new_instance, $old_instance ) {
|
92 |
-
$
|
93 |
-
$instance
|
94 |
-
$instance['
|
95 |
-
$instance['
|
96 |
-
$instance['
|
|
|
|
|
97 |
|
98 |
return $instance;
|
99 |
}
|
5 |
use WP_Widget;
|
6 |
|
7 |
class OnlineMembers extends WP_Widget {
|
8 |
+
/**
|
9 |
+
* @var array
|
10 |
+
*/
|
11 |
+
private $default_instance;
|
12 |
+
|
13 |
function __construct() {
|
14 |
parent::__construct( 'wpforo_online_members', 'wpForo Online Members', [ 'description' => 'Online members.' ] );
|
15 |
+
$this->init_local_vars();
|
16 |
+
add_action( 'wp_ajax_wpforo_load_ajax_widget_OnlineMembers', [ $this, 'load_ajax_widget' ] );
|
17 |
+
add_action( 'wp_ajax_nopriv_wpforo_load_ajax_widget_OnlineMembers', [ $this, 'load_ajax_widget' ] );
|
18 |
}
|
19 |
|
20 |
+
private function init_local_vars() {
|
21 |
+
$this->default_instance = [
|
22 |
+
'title' => __( 'Online Members', 'wpforo' ),
|
23 |
+
'count' => 15,
|
24 |
+
'display_avatar' => true,
|
25 |
+
'groupids' => WPF()->usergroup->get_visible_usergroup_ids(),
|
26 |
+
'refresh_interval' => 0,
|
27 |
+
];
|
28 |
+
}
|
29 |
|
30 |
+
public function load_ajax_widget() {
|
31 |
+
$_POST = wp_unslash( $_POST );
|
32 |
+
$instance = json_decode( (string) wpfval( $_POST, 'instance' ), true );
|
33 |
+
$online_members = WPF()->member->get_online_members( $instance['count'], $instance['groupids'] );
|
34 |
+
ob_start();
|
|
|
|
|
|
|
|
|
35 |
if( ! empty( $online_members ) ) {
|
36 |
echo '<ul>
|
37 |
<li>
|
56 |
} else {
|
57 |
echo '<p class="wpf-widget-note"> ' . wpforo_phrase( 'No online members at the moment', false ) . '</p>';
|
58 |
}
|
59 |
+
wp_send_json_success( ['html' => ob_get_clean()] );
|
60 |
+
}
|
61 |
+
|
62 |
+
public function widget( $args, $instance ) {
|
63 |
+
$instance = wpforo_parse_args( $instance, $this->default_instance );
|
64 |
+
$data = [
|
65 |
+
'boardid' => 0,
|
66 |
+
'action' => 'wpforo_load_ajax_widget_OnlineMembers',
|
67 |
+
'instance' => $instance,
|
68 |
+
];
|
69 |
+
if( WPF()->board->get_current( 'boardid' ) !== 0 ) $data['referer'] = home_url();
|
70 |
+
$json = json_encode( $data );
|
71 |
+
wp_enqueue_script( 'wpforo-widgets-js' );
|
72 |
+
echo $args['before_widget'] . '<div id="wpf-widget-online-users" class="wpforo-widget-wrap">';
|
73 |
+
if( $instance['title'] ) echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'] ) . $args['after_title'];
|
74 |
+
echo '<div class="wpforo-widget-content wpforo-ajax-widget" data-json="' . esc_attr( $json ) . '"></div></div>' . $args['after_widget'];
|
75 |
}
|
76 |
|
77 |
public function form( $instance ) {
|
78 |
+
$instance = wpforo_parse_args( $instance, $this->default_instance );
|
79 |
+
$title = (string) $instance['title'];
|
80 |
+
$count = (int) $instance['count'];
|
81 |
+
$display_avatar = (bool) $instance['display_avatar'];
|
82 |
+
$groupids = array_filter( wpforo_parse_args( ( wpforo_is_json( $instance['groupids'] ) ? json_decode( $instance['groupids'], true ) : $instance['groupids'] ) ) );
|
83 |
+
$refresh_interval = (int) $instance['refresh_interval'];
|
84 |
?>
|
85 |
+
<div class="wpf-wdg-wrapper">
|
86 |
+
<p>
|
87 |
+
<label for="<?php echo $this->get_field_id( 'title' ) ?>"><?php _e( 'Title', 'wpforo' ); ?>:</label>
|
88 |
+
<input id="<?php echo $this->get_field_id( 'title' ) ?>" class="widefat" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>">
|
89 |
+
</p>
|
90 |
+
<p>
|
91 |
+
<label for="<?php echo $this->get_field_id( 'groupids' ) ?>"><?php _e( 'User Groups', 'wpforo' ); ?></label>
|
92 |
+
<select id="<?php echo $this->get_field_id( 'groupids' ) ?>" name="<?php echo esc_attr( $this->get_field_name( 'groupids' ) ); ?>[]" multiple required>
|
93 |
+
<?php WPF()->usergroup->show_selectbox( $groupids, 4 ) ?>
|
|
|
|
|
|
|
94 |
</select>
|
95 |
+
</p>
|
96 |
+
<p>
|
97 |
+
<label for="<?php echo $this->get_field_id( 'count' ) ?>"><?php _e( 'Number of Items', 'wpforo' ); ?></label>
|
98 |
+
<input id="<?php echo $this->get_field_id( 'count' ) ?>" type="number" min="1" style="width: 53px;" name="<?php echo esc_attr( $this->get_field_name( 'count' ) ); ?>" value="<?php echo esc_attr( $count ); ?>">
|
99 |
+
</p>
|
100 |
+
<p>
|
101 |
+
<span><?php _e( 'Display with avatars', 'wpforo' ); ?> : </span>
|
102 |
+
|
103 |
+
<label for="<?php echo $this->get_field_id( 'display_avatar' ) ?>_1"><?php _e( 'Yes', 'wpforo' ); ?></label>
|
104 |
+
<input id="<?php echo $this->get_field_id( 'display_avatar' ) ?>_1" value="1" <?php checked( $display_avatar ); ?> type="radio" name="<?php echo esc_attr( $this->get_field_name( 'display_avatar' ) ); ?>">
|
105 |
+
|
106 |
+
<label for="<?php echo $this->get_field_id( 'display_avatar' ) ?>_0"><?php _e( 'No', 'wpforo' ); ?></label>
|
107 |
+
<input id="<?php echo $this->get_field_id( 'display_avatar' ) ?>_0" value="0" <?php checked( $display_avatar, false ); ?> type="radio" name="<?php echo esc_attr( $this->get_field_name( 'display_avatar' ) ); ?>">
|
108 |
+
</p>
|
109 |
+
<p>
|
110 |
+
<label for="<?php echo $this->get_field_id( 'refresh_interval' ) ?>"><?php _e( 'Auto Refresh Interval Seconds', 'wpforo' ); ?></label>
|
111 |
+
<input id="<?php echo $this->get_field_id( 'refresh_interval' ) ?>" type="number" min="0" style="display: inline-block; width: 53px;" name="<?php echo esc_attr( $this->get_field_name( 'refresh_interval' ) ); ?>" value="<?php echo esc_attr( $refresh_interval ); ?>">
|
112 |
+
<span style="color: #ccc"><?php _e( 'Set 0 to disable autorefresh', 'wpforo' ) ?></span>
|
113 |
+
</p>
|
114 |
+
</div>
|
115 |
<?php
|
116 |
}
|
117 |
|
118 |
public function update( $new_instance, $old_instance ) {
|
119 |
+
$new_instance = wpforo_parse_args( $new_instance, $this->default_instance );
|
120 |
+
$instance = [];
|
121 |
+
$instance['title'] = strip_tags( (string) $new_instance['title'] );
|
122 |
+
$instance['count'] = (int) $new_instance['count'];
|
123 |
+
$instance['display_avatar'] = (bool) (int) $new_instance['display_avatar'];
|
124 |
+
$instance['groupids'] = array_filter( wpforo_parse_args( $new_instance['groupids'] ) );
|
125 |
+
$instance['refresh_interval'] = (int) $new_instance['refresh_interval'];
|
126 |
|
127 |
return $instance;
|
128 |
}
|
widgets/RecentPosts.php
CHANGED
@@ -12,21 +12,30 @@ class RecentPosts extends WP_Widget {
|
|
12 |
function __construct() {
|
13 |
parent::__construct( 'wpforo_recent_posts', 'wpForo Recent Posts', [ 'description' => 'Your forum\'s recent posts.' ] );
|
14 |
$this->init_local_vars();
|
|
|
|
|
|
|
|
|
|
|
15 |
}
|
16 |
|
17 |
private function init_local_vars() {
|
18 |
$this->default_instance = [
|
|
|
19 |
'title' => 'Recent Posts',
|
20 |
'forumids' => [],
|
21 |
'orderby' => 'created',
|
22 |
'order' => 'DESC',
|
23 |
'count' => 9,
|
24 |
'limit_per_topic' => 0,
|
25 |
-
'display_avatar' =>
|
26 |
'forumids_filter' => false,
|
27 |
'current_forumid_filter' => false,
|
|
|
28 |
'display_only_unread' => false,
|
29 |
'display_new_indicator' => false,
|
|
|
|
|
30 |
];
|
31 |
$this->orderby_fields = [
|
32 |
'created' => __( 'Created Date', 'wpforo' ),
|
@@ -38,157 +47,158 @@ class RecentPosts extends WP_Widget {
|
|
38 |
];
|
39 |
}
|
40 |
|
41 |
-
public function
|
42 |
-
|
43 |
-
$
|
44 |
-
$instance
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
$display_widget = true;
|
50 |
-
}
|
51 |
-
|
52 |
-
if( $display_widget ) {
|
53 |
-
if( $instance['current_forumid_filter'] && $current_forumid = wpfval( WPF()->current_object, 'forumid' ) ) {
|
54 |
-
$instance['forumids'] = (array) $current_forumid;
|
55 |
-
}
|
56 |
-
|
57 |
-
echo $args['before_widget'];//This is an HTML content//
|
58 |
-
echo '<div id="wpf-widget-recent-replies" class="wpforo-widget-wrap">';
|
59 |
|
60 |
-
|
61 |
-
|
|
|
|
|
|
|
|
|
62 |
}
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
$grouped_postids = WPF()->post->get_posts( $posts_args );
|
84 |
-
}
|
85 |
-
if( ! empty( $grouped_postids ) ) {
|
86 |
-
$grouped_postids = implode( ',', $grouped_postids );
|
87 |
-
$postids = array_filter( array_map( 'wpforo_bigintval', explode( ',', $grouped_postids ) ) );
|
88 |
-
rsort( $postids );
|
89 |
-
foreach( $postids as $postid ) {
|
90 |
-
$class = '';
|
91 |
-
$post = wpforo_post( $postid );
|
92 |
-
if( ! wpfval($post, 'forumid') ) continue;
|
93 |
-
if( ! WPF()->post->view_access( $post ) ) continue;
|
94 |
-
$current = $post['topicid'] == wpfval( WPF()->current_object, 'topicid' );
|
95 |
-
if( ! $current ) {
|
96 |
-
$class = 'class="' . ( $instance['display_only_unread'] ? 'wpf-unread-post' : wpforo_unread( $post['topicid'], 'post', false, $post['postid'] ) ) . '"';
|
97 |
-
}
|
98 |
-
$member = wpforo_member( $post );
|
99 |
-
?>
|
100 |
-
<li <?php echo $class; ?>>
|
101 |
-
<div class="wpforo-list-item ">
|
102 |
-
<?php if( $instance['display_avatar'] ): ?>
|
103 |
-
<?php if( $ug_can_va && $is_avatar ): ?>
|
104 |
-
<div class="wpforo-list-item-left">
|
105 |
-
<?php echo WPF()->member->avatar( $member ); ?>
|
106 |
-
</div>
|
107 |
-
<?php endif; ?>
|
108 |
-
<?php endif; ?>
|
109 |
-
<div class="wpforo-list-item-right" <?php if( ! $instance['display_avatar'] || !wpforo_setting('profiles', 'avatars') ): ?> style="width:100%"<?php endif; ?>>
|
110 |
-
<p class="posttitle">
|
111 |
-
<a href="<?php echo esc_url( $post['url'] ) ?>"><?php
|
112 |
-
if( $t = esc_html( trim( $post['title'] ) ) ) {
|
113 |
-
echo $t;
|
114 |
-
} else {
|
115 |
-
echo wpforo_phrase( 'RE', false, 'default' ) . ': ' . esc_html( trim( wpforo_topic( $post['topicid'], 'title' ) ) );
|
116 |
-
} ?>
|
117 |
-
</a>
|
118 |
-
<?php if( ! $current && $instance['display_new_indicator'] ) wpforo_unread_button( $post['topicid'], '', true, $post['postid'] ) ?>
|
119 |
-
</p>
|
120 |
-
<p class="posttext"><?php echo esc_html( wpforo_text( $post['body'], 55 ) ); ?></p>
|
121 |
-
<p class="postuser"><?php wpforo_phrase( 'by' ) ?> <?php wpforo_member_link( $member ) ?>
|
122 |
-
, <?php esc_html( wpforo_date( $post['created'] ) ) ?></p>
|
123 |
</div>
|
124 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
125 |
</div>
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
$error_message = ( $instance['display_only_unread'] ) ? 'No new posts found' : 'No posts found';
|
131 |
-
echo '<li class="wpf-no-post-found">' . wpforo_phrase( $error_message, false ) . '</li>';
|
132 |
}
|
133 |
} else {
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
<div class="wpforo-list-item-right" <?php if( ! $instance['display_avatar'] || !wpforo_setting('profiles', 'avatars') ): ?> style="width:100%"<?php endif; ?>>
|
159 |
-
<p class="posttitle">
|
160 |
-
<a href="<?php echo esc_url( $post_url ) ?>"><?php
|
161 |
-
if( $t = esc_html( trim( $post['title'] ) ) ) {
|
162 |
-
echo $t;
|
163 |
-
} else {
|
164 |
-
echo wpforo_phrase( 'RE', false, 'default' ) . ': ' . esc_html( trim( wpforo_topic( $post['topicid'], 'title' ) ) );
|
165 |
-
} ?>
|
166 |
-
</a>
|
167 |
-
<?php if( ! $current && $instance['display_new_indicator'] ) wpforo_unread_button( $post['topicid'], '', true, $post['postid'] ) ?>
|
168 |
-
</p>
|
169 |
-
<p class="posttext"><?php echo esc_html( wpforo_text( $post['body'], 55 ) ); ?></p>
|
170 |
-
<p class="postuser"><?php wpforo_phrase( 'by' ) ?> <?php wpforo_member_link( $member ) ?>
|
171 |
-
, <?php esc_html( wpforo_date( $post['created'] ) ) ?></p>
|
172 |
</div>
|
173 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
174 |
</div>
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
$error_message = ( $instance['display_only_unread'] ) ? 'No new posts found' : 'No posts found';
|
180 |
-
echo '<li class="wpf-no-post-found">' . wpforo_phrase( $error_message, false ) . '</li>';
|
181 |
}
|
|
|
|
|
|
|
182 |
}
|
183 |
-
echo '</ul></div>';
|
184 |
-
echo '</div>';
|
185 |
-
echo $args['after_widget'];//This is an HTML content//
|
186 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
187 |
}
|
188 |
|
189 |
public function form( $instance ) {
|
190 |
$instance = wpforo_parse_args( $instance, $this->default_instance );
|
191 |
$title = (string) $instance['title'];
|
|
|
192 |
$selected = array_unique( array_filter( array_map( 'intval', (array) $instance['forumids'] ) ) );
|
193 |
$orderby = (string) $instance['orderby'];
|
194 |
$order = (string) $instance['order'];
|
@@ -197,35 +207,26 @@ class RecentPosts extends WP_Widget {
|
|
197 |
$display_avatar = (bool) $instance['display_avatar'];
|
198 |
$forumids_filter = (bool) $instance['forumids_filter'];
|
199 |
$current_forumid_filter = (bool) $instance['current_forumid_filter'];
|
|
|
200 |
$display_only_unread = (bool) $instance['display_only_unread'];
|
201 |
$display_new_indicator = (bool) $instance['display_new_indicator'];
|
|
|
|
|
|
|
202 |
?>
|
203 |
<style>
|
204 |
-
|
205 |
-
display: none;
|
206 |
-
width: 100%;
|
207 |
-
min-height: 170px;
|
208 |
}
|
209 |
|
210 |
-
input.
|
211 |
-
display: block;
|
212 |
}
|
213 |
-
|
214 |
.wpf_wdg_limit_per_topic {
|
215 |
width: 53px;
|
216 |
}
|
217 |
</style>
|
218 |
-
<
|
219 |
-
jQuery(document).ready(function ($) {
|
220 |
-
$('.wpf_wdg_limit_per_topic').change(function () {
|
221 |
-
var wrap = $(this).parents('.wpf_wdg_form_wrap')
|
222 |
-
var disabled = $(this).val() > 0
|
223 |
-
$('.wpf_wdg_orderby', wrap).attr('disabled', disabled)
|
224 |
-
$('.wpf_wdg_order', wrap).attr('disabled', disabled)
|
225 |
-
})
|
226 |
-
})
|
227 |
-
</script>
|
228 |
-
<div class="wpf_wdg_form_wrap">
|
229 |
<p>
|
230 |
<label for="<?php echo $this->get_field_id( 'title' ) ?>"><?php _e( 'Title', 'wpforo' ); ?>:</label>
|
231 |
<input id="<?php echo $this->get_field_id( 'title' ) ?>" class="widefat"
|
@@ -233,18 +234,35 @@ class RecentPosts extends WP_Widget {
|
|
233 |
value="<?php echo esc_attr( $title ); ?>">
|
234 |
</p>
|
235 |
<p>
|
236 |
-
<label for="<?php echo $this->get_field_id('
|
237 |
-
<
|
238 |
-
|
239 |
-
<?php WPF()->forum->tree( 'select_box', false, $selected, false ) ?>
|
240 |
</select>
|
241 |
</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
242 |
<p>
|
243 |
-
<
|
244 |
-
|
245 |
-
<
|
246 |
-
|
247 |
-
|
|
|
|
|
248 |
</p>
|
249 |
<p>
|
250 |
<label for="<?php echo $this->get_field_id( 'orderby' ) ?>"><?php _e( 'Order by', 'wpforo' ); ?>
|
@@ -279,24 +297,48 @@ class RecentPosts extends WP_Widget {
|
|
279 |
value="<?php echo esc_attr( $count ); ?>">
|
280 |
</p>
|
281 |
<p>
|
282 |
-
<label for="<?php echo $this->get_field_id( '
|
283 |
-
|
284 |
-
|
285 |
-
<?php _e( 'Display with Avatars', 'wpforo' ); ?></label>
|
286 |
</p>
|
287 |
<p>
|
288 |
-
<
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
293 |
</p>
|
294 |
<p>
|
295 |
-
<
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
300 |
</p>
|
301 |
</div>
|
302 |
<?php
|
@@ -305,18 +347,28 @@ class RecentPosts extends WP_Widget {
|
|
305 |
public function update( $new_instance, $old_instance ) {
|
306 |
$new_instance = wpforo_parse_args( $new_instance, $this->default_instance );
|
307 |
$instance = [];
|
308 |
-
$instance['title'] = (
|
309 |
-
$instance['
|
310 |
-
$instance['
|
|
|
311 |
$instance['orderby'] = ( ! empty( $new_instance['orderby'] ) && key_exists( $new_instance['orderby'], $this->orderby_fields ) ) ? $new_instance['orderby'] : $this->default_instance['orderby'];
|
312 |
$instance['order'] = ( ! empty( $new_instance['order'] ) && key_exists( $new_instance['order'], $this->order_fields ) ) ? $new_instance['order'] : $this->default_instance['order'];
|
313 |
-
$instance['count'] = (
|
314 |
-
$instance['
|
315 |
-
$instance['
|
316 |
-
$instance['
|
317 |
-
$instance['
|
318 |
-
$instance['
|
|
|
|
|
|
|
319 |
|
320 |
return $instance;
|
321 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
322 |
}
|
12 |
function __construct() {
|
13 |
parent::__construct( 'wpforo_recent_posts', 'wpForo Recent Posts', [ 'description' => 'Your forum\'s recent posts.' ] );
|
14 |
$this->init_local_vars();
|
15 |
+
add_action( 'wp_ajax_wpforo_load_ajax_widget_RecentPosts', [ $this, 'load_ajax_widget' ] );
|
16 |
+
add_action( 'wp_ajax_nopriv_wpforo_load_ajax_widget_RecentPosts', [ $this, 'load_ajax_widget' ] );
|
17 |
+
if( is_admin() ) {
|
18 |
+
add_action( 'wp_ajax_wpforo_get_forum_tree', [ $this, 'get_forum_tree' ] );
|
19 |
+
}
|
20 |
}
|
21 |
|
22 |
private function init_local_vars() {
|
23 |
$this->default_instance = [
|
24 |
+
'boardid' => 0,
|
25 |
'title' => 'Recent Posts',
|
26 |
'forumids' => [],
|
27 |
'orderby' => 'created',
|
28 |
'order' => 'DESC',
|
29 |
'count' => 9,
|
30 |
'limit_per_topic' => 0,
|
31 |
+
'display_avatar' => true,
|
32 |
'forumids_filter' => false,
|
33 |
'current_forumid_filter' => false,
|
34 |
+
'exclude_firstposts' => false,
|
35 |
'display_only_unread' => false,
|
36 |
'display_new_indicator' => false,
|
37 |
+
'refresh_interval' => 0,
|
38 |
+
'excerpt_length' => 55,
|
39 |
];
|
40 |
$this->orderby_fields = [
|
41 |
'created' => __( 'Created Date', 'wpforo' ),
|
47 |
];
|
48 |
}
|
49 |
|
50 |
+
public function load_ajax_widget() {
|
51 |
+
$_POST = wp_unslash( $_POST );
|
52 |
+
$is_user_logged_in = (bool) WPF()->current_userid;
|
53 |
+
$instance = json_decode( (string) wpfval( $_POST, 'instance' ), true );
|
54 |
+
$post_args = json_decode( (string) wpfval( $_POST, 'post_args' ), true );
|
55 |
+
$post_args['private'] = ( ! $is_user_logged_in || ! WPF()->usergroup->can( 'aum' ) ) ? 0 : null;
|
56 |
+
$post_args['status'] = ( ! $is_user_logged_in || ! WPF()->usergroup->can( 'aum' ) ) ? 0 : null;
|
57 |
+
$print_avatar = $instance['display_avatar'] && wpforo_setting( 'profiles', 'avatars' ) && WPF()->usergroup->can( 'va' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
|
59 |
+
ob_start();
|
60 |
+
if( $post_args['limit_per_topic'] ) {
|
61 |
+
if( $instance['display_only_unread'] && $is_user_logged_in ) {
|
62 |
+
$grouped_postids = WPF()->post->get_unread_posts( $post_args, $post_args['row_count'] );
|
63 |
+
} else {
|
64 |
+
$grouped_postids = WPF()->post->get_posts( $post_args );
|
65 |
}
|
66 |
+
if( ! empty( $grouped_postids ) ) {
|
67 |
+
$grouped_postids = implode( ',', $grouped_postids );
|
68 |
+
$postids = array_filter( array_map( 'wpforo_bigintval', explode( ',', $grouped_postids ) ) );
|
69 |
+
rsort( $postids );
|
70 |
+
foreach( $postids as $postid ) {
|
71 |
+
$class = '';
|
72 |
+
$post = wpforo_post( $postid );
|
73 |
+
if( ! wpfval($post, 'forumid') ) continue;
|
74 |
+
if( ! WPF()->post->view_access( $post ) ) continue;
|
75 |
+
$current = $post['topicid'] == wpfval( WPF()->current_object, 'topicid' );
|
76 |
+
if( ! $current ) {
|
77 |
+
$class = 'class="' . ( $instance['display_only_unread'] ? 'wpf-unread-post' : wpforo_unread( $post['topicid'], 'post', false, $post['postid'] ) ) . '"';
|
78 |
+
}
|
79 |
+
$member = wpforo_member( $post );
|
80 |
+
?>
|
81 |
+
<li <?php echo $class; ?>>
|
82 |
+
<div class="wpforo-list-item ">
|
83 |
+
<?php if( $print_avatar ): ?>
|
84 |
+
<div class="wpforo-list-item-left">
|
85 |
+
<?php echo WPF()->member->avatar( $member ); ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
86 |
</div>
|
87 |
+
<?php endif; ?>
|
88 |
+
<div class="wpforo-list-item-right" <?php if( ! $print_avatar ): ?> style="width: 100%"<?php endif; ?>>
|
89 |
+
<p class="posttitle">
|
90 |
+
<a href="<?php echo esc_url( $post['url'] ) ?>"><?php
|
91 |
+
if( $t = esc_html( trim( $post['title'] ) ) ) {
|
92 |
+
echo $t;
|
93 |
+
} else {
|
94 |
+
echo wpforo_phrase( 'RE', false, 'default' ) . ': ' . esc_html( trim( wpforo_topic( $post['topicid'], 'title' ) ) );
|
95 |
+
} ?>
|
96 |
+
</a>
|
97 |
+
<?php if( ! $current && $instance['display_new_indicator'] ) wpforo_unread_button( $post['topicid'], '', true, $post['postid'] ) ?>
|
98 |
+
</p>
|
99 |
+
<p class="posttext"><?php echo esc_html( wpforo_text( $post['body'], $instance['excerpt_length'] ) ); ?></p>
|
100 |
+
<p class="postuser"><?php wpforo_phrase( 'by' ) ?> <?php wpforo_member_link( $member ) ?>
|
101 |
+
, <?php esc_html( wpforo_date( $post['created'] ) ) ?></p>
|
102 |
</div>
|
103 |
+
<div class="wpf-clear"></div>
|
104 |
+
</div>
|
105 |
+
</li>
|
106 |
+
<?php
|
|
|
|
|
107 |
}
|
108 |
} else {
|
109 |
+
$error_message = ( $instance['display_only_unread'] ) ? 'No new posts found' : 'No posts found';
|
110 |
+
echo '<li class="wpf-no-post-found">' . wpforo_phrase( $error_message, false ) . '</li>';
|
111 |
+
}
|
112 |
+
} else {
|
113 |
+
if( $instance['display_only_unread'] && $is_user_logged_in ) {
|
114 |
+
$recent_posts = WPF()->post->get_unread_posts( $post_args, $post_args['row_count'] );
|
115 |
+
} else {
|
116 |
+
$recent_posts = WPF()->post->get_posts( $post_args );
|
117 |
+
}
|
118 |
+
if( ! empty( $recent_posts ) ) {
|
119 |
+
foreach( $recent_posts as $post ) {
|
120 |
+
$class = '';
|
121 |
+
$post_url = wpforo_post( $post['postid'], 'url' );
|
122 |
+
$member = wpforo_member( $post );
|
123 |
+
$current = $post['topicid'] == wpfval( WPF()->current_object, 'topicid' );
|
124 |
+
if( ! $current ) {
|
125 |
+
$class = 'class="' . ( $instance['display_only_unread'] ? 'wpf-unread-post' : wpforo_unread( $post['topicid'], 'post', false, $post['postid'] ) ) . '"';
|
126 |
+
}
|
127 |
+
?>
|
128 |
+
<li <?php echo $class; ?>>
|
129 |
+
<div class="wpforo-list-item">
|
130 |
+
<?php if( $print_avatar ): ?>
|
131 |
+
<div class="wpforo-list-item-left">
|
132 |
+
<?php echo WPF()->member->avatar( $member ); ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
133 |
</div>
|
134 |
+
<?php endif; ?>
|
135 |
+
<div class="wpforo-list-item-right" <?php if( ! $print_avatar ): ?> style="width:100%"<?php endif; ?>>
|
136 |
+
<p class="posttitle">
|
137 |
+
<a href="<?php echo esc_url( $post_url ) ?>"><?php
|
138 |
+
if( $t = esc_html( trim( $post['title'] ) ) ) {
|
139 |
+
echo $t;
|
140 |
+
} else {
|
141 |
+
echo wpforo_phrase( 'RE', false, 'default' ) . ': ' . esc_html( trim( wpforo_topic( $post['topicid'], 'title' ) ) );
|
142 |
+
} ?>
|
143 |
+
</a>
|
144 |
+
<?php if( ! $current && $instance['display_new_indicator'] ) wpforo_unread_button( $post['topicid'], '', true, $post['postid'] ) ?>
|
145 |
+
</p>
|
146 |
+
<p class="posttext"><?php echo esc_html( wpforo_text( $post['body'], $instance['excerpt_length'] ) ); ?></p>
|
147 |
+
<p class="postuser"><?php wpforo_phrase( 'by' ) ?> <?php wpforo_member_link( $member ) ?>
|
148 |
+
, <?php esc_html( wpforo_date( $post['created'] ) ) ?></p>
|
149 |
</div>
|
150 |
+
<div class="wpf-clear"></div>
|
151 |
+
</div>
|
152 |
+
</li>
|
153 |
+
<?php
|
|
|
|
|
154 |
}
|
155 |
+
} else {
|
156 |
+
$error_message = ( $instance['display_only_unread'] ) ? 'No new posts found' : 'No posts found';
|
157 |
+
echo '<li class="wpf-no-post-found">' . wpforo_phrase( $error_message, false ) . '</li>';
|
158 |
}
|
|
|
|
|
|
|
159 |
}
|
160 |
+
|
161 |
+
wp_send_json_success( [ 'html' => sprintf( '<ul>%1$s</ul>', ob_get_clean() ) ] );
|
162 |
+
}
|
163 |
+
|
164 |
+
public function widget( $args, $instance ) {
|
165 |
+
wp_enqueue_script( 'wpforo-widgets-js' );
|
166 |
+
$is_user_logged_in = (bool) WPF()->current_userid;
|
167 |
+
$instance = wpforo_parse_args( $instance, $this->default_instance );
|
168 |
+
if( $instance['display_only_unread'] ) {
|
169 |
+
$display_widget = $is_user_logged_in;
|
170 |
+
$display_widget = apply_filters( 'wpforo_widget_display_recent_posts', $display_widget );
|
171 |
+
} else {
|
172 |
+
$display_widget = true;
|
173 |
+
}
|
174 |
+
if( ! $display_widget ) return;
|
175 |
+
|
176 |
+
if( $instance['current_forumid_filter'] && $instance['boardid'] === WPF()->board->get_current( 'boardid' ) && $current_forumid = wpfval( WPF()->current_object, 'forumid' ) ) $instance['forumids'] = (array) $current_forumid;
|
177 |
+
$data = [
|
178 |
+
'boardid' => $instance['boardid'],
|
179 |
+
'action' => 'wpforo_load_ajax_widget_RecentPosts',
|
180 |
+
'instance' => $instance,
|
181 |
+
'post_args' => [
|
182 |
+
'forumids' => ( $instance['forumids'] ?: $this->default_instance['forumids'] ),
|
183 |
+
'orderby' => ( key_exists( $instance['orderby'], $this->orderby_fields ) ? $instance['orderby'] : $this->default_instance['orderby'] ),
|
184 |
+
'order' => ( key_exists( $instance['order'], $this->order_fields ) ? $instance['order'] : $this->default_instance['order'] ),
|
185 |
+
'row_count' => ( intval( $instance['count'] ) ?: $this->default_instance['count'] ),
|
186 |
+
'limit_per_topic' => ( intval( $instance['limit_per_topic'] ) ?: $this->default_instance['limit_per_topic'] ),
|
187 |
+
'is_first_post' => $instance['exclude_firstposts'] ? false : null,
|
188 |
+
'check_private' => true,
|
189 |
+
]
|
190 |
+
];
|
191 |
+
if( WPF()->board->get_current( 'boardid' ) !== $instance['boardid'] ) $data['referer'] = home_url();
|
192 |
+
$json = json_encode( $data );
|
193 |
+
echo $args['before_widget'] . '<div id="wpf-widget-recent-replies" class="wpforo-widget-wrap">';
|
194 |
+
if( ! empty( $instance['title'] ) ) echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'] ) . $args['after_title'];
|
195 |
+
echo '<div class="wpforo-widget-content wpforo-ajax-widget" data-json="' . esc_attr( $json ) . '"></div></div>' . $args['after_widget'];
|
196 |
}
|
197 |
|
198 |
public function form( $instance ) {
|
199 |
$instance = wpforo_parse_args( $instance, $this->default_instance );
|
200 |
$title = (string) $instance['title'];
|
201 |
+
$boardid = (int) $instance['boardid'];
|
202 |
$selected = array_unique( array_filter( array_map( 'intval', (array) $instance['forumids'] ) ) );
|
203 |
$orderby = (string) $instance['orderby'];
|
204 |
$order = (string) $instance['order'];
|
207 |
$display_avatar = (bool) $instance['display_avatar'];
|
208 |
$forumids_filter = (bool) $instance['forumids_filter'];
|
209 |
$current_forumid_filter = (bool) $instance['current_forumid_filter'];
|
210 |
+
$exclude_firstposts = (bool) $instance['exclude_firstposts'];
|
211 |
$display_only_unread = (bool) $instance['display_only_unread'];
|
212 |
$display_new_indicator = (bool) $instance['display_new_indicator'];
|
213 |
+
$refresh_interval = (int) $instance['refresh_interval'];
|
214 |
+
$excerpt_length = (int) $instance['excerpt_length'];
|
215 |
+
WPF()->change_board( $boardid );
|
216 |
?>
|
217 |
<style>
|
218 |
+
.wpf-wdg-wrapper .wpf_wdg_forumids_wrap {
|
219 |
+
display: none !important;
|
|
|
|
|
220 |
}
|
221 |
|
222 |
+
.wpf-wdg-wrapper input.wpf_wdg_forumids_filter_1:checked ~ .wpf_wdg_forumids_wrap {
|
223 |
+
display: block !important;
|
224 |
}
|
|
|
225 |
.wpf_wdg_limit_per_topic {
|
226 |
width: 53px;
|
227 |
}
|
228 |
</style>
|
229 |
+
<div class="wpf-wdg-wrapper">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
230 |
<p>
|
231 |
<label for="<?php echo $this->get_field_id( 'title' ) ?>"><?php _e( 'Title', 'wpforo' ); ?>:</label>
|
232 |
<input id="<?php echo $this->get_field_id( 'title' ) ?>" class="widefat"
|
234 |
value="<?php echo esc_attr( $title ); ?>">
|
235 |
</p>
|
236 |
<p>
|
237 |
+
<label for="<?php echo $this->get_field_id( 'boardid' ) ?>"></label>
|
238 |
+
<select id="<?php echo $this->get_field_id( 'boardid' ) ?>" class="wpf_wdg_boardid" name="<?php echo esc_attr( $this->get_field_name( 'boardid' ) ); ?>">
|
239 |
+
<?php echo WPF()->board->dropdown( $boardid ) ?>
|
|
|
240 |
</select>
|
241 |
</p>
|
242 |
+
<div>
|
243 |
+
<span><?php _e( 'Filter by forums', 'wpforo' ); ?> :</span>
|
244 |
+
|
245 |
+
<label for="<?php echo $this->get_field_id( 'forumids_filter' ) ?>_1"><?php _e( 'Yes', 'wpforo' ); ?></label>
|
246 |
+
<input id="<?php echo $this->get_field_id( 'forumids_filter' ) ?>_1" value="1" class="wpf_wdg_forumids_filter_1" name="<?php echo esc_attr( $this->get_field_name( 'forumids_filter' ) ); ?>" <?php checked( $forumids_filter ); ?> type="radio">
|
247 |
+
|
248 |
+
<label for="<?php echo $this->get_field_id( 'forumids_filter' ) ?>_0"><?php _e( 'No', 'wpforo' ); ?></label>
|
249 |
+
<input id="<?php echo $this->get_field_id( 'forumids_filter' ) ?>_0" value="0" class="wpf_wdg_forumids_filter_0" name="<?php echo esc_attr( $this->get_field_name( 'forumids_filter' ) ); ?>" <?php checked( $forumids_filter, false ); ?> type="radio">
|
250 |
+
|
251 |
+
<div class="wpf_wdg_forumids_wrap">
|
252 |
+
<label for="<?php echo $this->get_field_id( 'forumids' ) ?>"></label>
|
253 |
+
<select id="<?php echo $this->get_field_id( 'forumids' ) ?>" class="wpf_wdg_forumids" name="<?php echo esc_attr( $this->get_field_name( 'forumids' ) ); ?>[]" multiple>
|
254 |
+
<?php WPF()->forum->tree( 'select_box', false, $selected ) ?>
|
255 |
+
</select>
|
256 |
+
</div>
|
257 |
+
</div>
|
258 |
<p>
|
259 |
+
<span><?php _e( 'Autofilter by current forum', 'wpforo' ); ?> : </span>
|
260 |
+
|
261 |
+
<label for="<?php echo $this->get_field_id( 'current_forumid_filter' ) ?>_1"><?php _e( 'Yes', 'wpforo' ); ?></label>
|
262 |
+
<input id="<?php echo $this->get_field_id( 'current_forumid_filter' ) ?>_1" name="<?php echo esc_attr( $this->get_field_name( 'current_forumid_filter' ) ); ?>" value="1" <?php checked( $current_forumid_filter ); ?> type="radio">
|
263 |
+
|
264 |
+
<label for="<?php echo $this->get_field_id( 'current_forumid_filter' ) ?>_0"><?php _e( 'No', 'wpforo' ); ?></label>
|
265 |
+
<input id="<?php echo $this->get_field_id( 'current_forumid_filter' ) ?>_0" name="<?php echo esc_attr( $this->get_field_name( 'current_forumid_filter' ) ); ?>" value="0" <?php checked( $current_forumid_filter, false ); ?> type="radio">
|
266 |
</p>
|
267 |
<p>
|
268 |
<label for="<?php echo $this->get_field_id( 'orderby' ) ?>"><?php _e( 'Order by', 'wpforo' ); ?>
|
297 |
value="<?php echo esc_attr( $count ); ?>">
|
298 |
</p>
|
299 |
<p>
|
300 |
+
<label for="<?php echo $this->get_field_id( 'excerpt_length' ) ?>"><?php _e( 'Excerpt Length', 'wpforo' ); ?></label>
|
301 |
+
<input id="<?php echo $this->get_field_id( 'excerpt_length' ) ?>" type="number" min="0" style="display: inline-block; width: 53px;" name="<?php echo esc_attr( $this->get_field_name( 'excerpt_length' ) ); ?>" value="<?php echo esc_attr( $excerpt_length ); ?>">
|
302 |
+
<span style="color: #ccc"><?php _e( 'Set 0 to disable autorefresh', 'wpforo' ) ?></span>
|
|
|
303 |
</p>
|
304 |
<p>
|
305 |
+
<span><?php _e( 'Display with avatars', 'wpforo' ); ?> : </span>
|
306 |
+
|
307 |
+
<label for="<?php echo $this->get_field_id( 'display_avatar' ) ?>_1"><?php _e( 'Yes', 'wpforo' ); ?></label>
|
308 |
+
<input id="<?php echo $this->get_field_id( 'display_avatar' ) ?>_1" value="1" <?php checked( $display_avatar ); ?> type="radio" name="<?php echo esc_attr( $this->get_field_name( 'display_avatar' ) ); ?>">
|
309 |
+
|
310 |
+
<label for="<?php echo $this->get_field_id( 'display_avatar' ) ?>_0"><?php _e( 'No', 'wpforo' ); ?></label>
|
311 |
+
<input id="<?php echo $this->get_field_id( 'display_avatar' ) ?>_0" value="0" <?php checked( $display_avatar, false ); ?> type="radio" name="<?php echo esc_attr( $this->get_field_name( 'display_avatar' ) ); ?>">
|
312 |
+
</p>
|
313 |
+
<p>
|
314 |
+
<span><?php _e( 'Exclude First Posts', 'wpforo' ); ?></span>
|
315 |
+
<label for="<?php echo $this->get_field_id( 'exclude_firstposts' ) ?>_1"><?php _e( 'Yes', 'wpforo' ); ?></label>
|
316 |
+
<input id="<?php echo $this->get_field_id( 'exclude_firstposts' ) ?>_1" value="1" <?php checked( $exclude_firstposts ); ?> type="radio" name="<?php echo esc_attr( $this->get_field_name( 'exclude_firstposts' ) ); ?>">
|
317 |
+
|
318 |
+
<label for="<?php echo $this->get_field_id( 'exclude_firstposts' ) ?>_0"><?php _e( 'No', 'wpforo' ); ?></label>
|
319 |
+
<input id="<?php echo $this->get_field_id( 'exclude_firstposts' ) ?>_0" value="0" <?php checked( $exclude_firstposts, false ); ?> type="radio" name="<?php echo esc_attr( $this->get_field_name( 'exclude_firstposts' ) ); ?>">
|
320 |
+
</p>
|
321 |
+
<p>
|
322 |
+
<span><?php _e( 'Display Only Unread Posts', 'wpforo' ); ?></span>
|
323 |
+
<label for="<?php echo $this->get_field_id( 'display_only_unread' ) ?>_1"><?php _e( 'Yes', 'wpforo' ); ?></label>
|
324 |
+
<input id="<?php echo $this->get_field_id( 'display_only_unread' ) ?>_1" value="1" <?php checked( $display_only_unread ); ?> type="radio" name="<?php echo esc_attr( $this->get_field_name( 'display_only_unread' ) ); ?>">
|
325 |
+
|
326 |
+
<label for="<?php echo $this->get_field_id( 'display_only_unread' ) ?>_0"><?php _e( 'No', 'wpforo' ); ?></label>
|
327 |
+
<input id="<?php echo $this->get_field_id( 'display_only_unread' ) ?>_0" value="0" <?php checked( $display_only_unread, false ); ?> type="radio" name="<?php echo esc_attr( $this->get_field_name( 'display_only_unread' ) ); ?>">
|
328 |
</p>
|
329 |
<p>
|
330 |
+
<span><?php _e( 'Display [new] indicator', 'wpforo' ); ?> : </span>
|
331 |
+
|
332 |
+
<label for="<?php echo $this->get_field_id( 'display_new_indicator' ) ?>_1"><?php _e( 'Yes', 'wpforo' ); ?></label>
|
333 |
+
<input id="<?php echo $this->get_field_id( 'display_new_indicator' ) ?>_1" value="1" <?php checked( $display_new_indicator ); ?> type="radio" name="<?php echo esc_attr( $this->get_field_name( 'display_new_indicator' ) ); ?>">
|
334 |
+
|
335 |
+
<label for="<?php echo $this->get_field_id( 'display_new_indicator' ) ?>_0"><?php _e( 'No', 'wpforo' ); ?></label>
|
336 |
+
<input id="<?php echo $this->get_field_id( 'display_new_indicator' ) ?>_0" value="0" <?php checked( $display_new_indicator, false ); ?> type="radio" name="<?php echo esc_attr( $this->get_field_name( 'display_new_indicator' ) ); ?>">
|
337 |
+
</p>
|
338 |
+
<p>
|
339 |
+
<label for="<?php echo $this->get_field_id( 'refresh_interval' ) ?>"><?php _e( 'Auto Refresh Interval Seconds', 'wpforo' ); ?></label>
|
340 |
+
<input id="<?php echo $this->get_field_id( 'refresh_interval' ) ?>" type="number" min="0" style="display: inline-block; width: 53px;" name="<?php echo esc_attr( $this->get_field_name( 'refresh_interval' ) ); ?>" value="<?php echo esc_attr( $refresh_interval ); ?>">
|
341 |
+
<span style="color: #ccc"><?php _e( 'Set 0 to disable autorefresh', 'wpforo' ) ?></span>
|
342 |
</p>
|
343 |
</div>
|
344 |
<?php
|
347 |
public function update( $new_instance, $old_instance ) {
|
348 |
$new_instance = wpforo_parse_args( $new_instance, $this->default_instance );
|
349 |
$instance = [];
|
350 |
+
$instance['title'] = strip_tags( (string) $new_instance['title'] );
|
351 |
+
$instance['boardid'] = (int) $new_instance['boardid'];
|
352 |
+
$instance['forumids_filter'] = (bool) (int) $new_instance['forumids_filter'];
|
353 |
+
$instance['forumids'] = array_unique( array_filter( array_map( 'intval', (array) $new_instance['forumids'] ) ) );
|
354 |
$instance['orderby'] = ( ! empty( $new_instance['orderby'] ) && key_exists( $new_instance['orderby'], $this->orderby_fields ) ) ? $new_instance['orderby'] : $this->default_instance['orderby'];
|
355 |
$instance['order'] = ( ! empty( $new_instance['order'] ) && key_exists( $new_instance['order'], $this->order_fields ) ) ? $new_instance['order'] : $this->default_instance['order'];
|
356 |
+
$instance['count'] = (int) $new_instance['count'];
|
357 |
+
$instance['display_avatar'] = (bool) (int) $new_instance['display_avatar'];
|
358 |
+
$instance['current_forumid_filter'] = (bool) (int) $new_instance['current_forumid_filter'];
|
359 |
+
$instance['limit_per_topic'] = (int) $new_instance['limit_per_topic'];
|
360 |
+
$instance['exclude_firstposts'] = (bool) (int) $new_instance['exclude_firstposts'];
|
361 |
+
$instance['display_only_unread'] = (bool) (int) $new_instance['display_only_unread'];
|
362 |
+
$instance['display_new_indicator'] = (bool) (int) $new_instance['display_new_indicator'];
|
363 |
+
$instance['refresh_interval'] = (int) $new_instance['refresh_interval'];
|
364 |
+
$instance['excerpt_length'] = (int) $new_instance['excerpt_length'];
|
365 |
|
366 |
return $instance;
|
367 |
}
|
368 |
+
|
369 |
+
public function get_forum_tree() {
|
370 |
+
ob_start();
|
371 |
+
WPF()->forum->tree( 'select_box', false, [] );
|
372 |
+
wp_send_json_success( [ 'html' => ob_get_clean() ] );
|
373 |
+
}
|
374 |
}
|
widgets/RecentTopics.php
CHANGED
@@ -12,19 +12,26 @@ class RecentTopics extends WP_Widget {
|
|
12 |
function __construct() {
|
13 |
parent::__construct( 'wpforo_recent_topics', 'wpForo Recent Topics', [ 'description' => 'Your forum\'s recent topics.' ] );
|
14 |
$this->init_local_vars();
|
|
|
|
|
|
|
|
|
|
|
15 |
}
|
16 |
|
17 |
private function init_local_vars() {
|
18 |
$this->default_instance = [
|
|
|
19 |
'title' => 'Recent Topics',
|
20 |
'forumids' => [],
|
21 |
'orderby' => 'created',
|
22 |
'order' => 'DESC',
|
23 |
'count' => 9,
|
24 |
-
'display_avatar' =>
|
25 |
'forumids_filter' => false,
|
26 |
'current_forumid_filter' => false,
|
27 |
'goto_unread' => false,
|
|
|
28 |
];
|
29 |
$this->orderby_fields = [
|
30 |
'created' => __( 'Created Date', 'wpforo' ),
|
@@ -38,74 +45,88 @@ class RecentTopics extends WP_Widget {
|
|
38 |
];
|
39 |
}
|
40 |
|
41 |
-
public function
|
42 |
-
|
|
|
|
|
|
|
|
|
|
|
43 |
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
'orderby' => ( key_exists( $instance['orderby'], $this->orderby_fields ) ? $instance['orderby'] : $this->default_instance['orderby'] ),
|
59 |
-
'order' => ( key_exists( $instance['order'], $this->order_fields ) ? $instance['order'] : $this->default_instance['order'] ),
|
60 |
-
'row_count' => ( ( $count = intval( $instance['count'] ) ) ? $count : $this->default_instance['count'] ),
|
61 |
-
'private' => $private,
|
62 |
-
'status' => $status,
|
63 |
-
];
|
64 |
-
$topics = WPF()->topic->get_topics( $topic_args );
|
65 |
-
$ug_can_va = WPF()->usergroup->can( 'va' );
|
66 |
-
$is_avatar = wpforo_setting( 'profiles', 'avatars' );
|
67 |
-
echo '<div class="wpforo-widget-content"><ul>';
|
68 |
foreach( $topics as $topic ) {
|
69 |
$topic_url = wpforo_topic( $topic['topicid'], 'url' );
|
70 |
$member = wpforo_member( $topic );
|
71 |
-
|
72 |
-
|
73 |
-
<
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
<
|
83 |
-
<?php if( wpfval( $instance, 'goto_unread' ) ): ?>
|
84 |
-
<?php wpforo_topic_title( $topic, $topic_url, '{p}{au}{t}{/a}' ) ?>
|
85 |
-
<?php if( $topic['topicid'] != wpfval( WPF()->current_object, 'topicid' ) ): ?>
|
86 |
-
<?php wpforo_unread_button( $topic['topicid'], $topic_url ); ?>
|
87 |
-
<?php endif; ?>
|
88 |
-
<?php else: ?>
|
89 |
-
<?php wpforo_topic_title( $topic, $topic_url, '{p}{a}{t}{/a}' ) ?>
|
90 |
-
<?php endif; ?>
|
91 |
-
</p>
|
92 |
-
<p class="postuser"><?php wpforo_phrase( 'by' ) ?> <?php wpforo_member_link( $member ) ?>, <span
|
93 |
-
style="white-space:nowrap;"><?php esc_html( wpforo_date( $topic['created'] ) ) ?></span>
|
94 |
-
</p>
|
95 |
</div>
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
100 |
}
|
101 |
-
|
102 |
-
|
103 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
104 |
}
|
105 |
|
106 |
public function form( $instance ) {
|
107 |
$instance = wpforo_parse_args( $instance, $this->default_instance );
|
108 |
$title = (string) $instance['title'];
|
|
|
109 |
$selected = array_unique( array_filter( array_map( 'intval', (array) $instance['forumids'] ) ) );
|
110 |
$orderby = (string) $instance['orderby'];
|
111 |
$order = (string) $instance['order'];
|
@@ -114,94 +135,124 @@ class RecentTopics extends WP_Widget {
|
|
114 |
$forumids_filter = (bool) $instance['forumids_filter'];
|
115 |
$current_forumid_filter = (bool) $instance['current_forumid_filter'];
|
116 |
$goto_unread = (bool) $instance['goto_unread'];
|
|
|
|
|
117 |
?>
|
118 |
<style>
|
119 |
-
|
120 |
-
display: none;
|
121 |
-
width: 100%;
|
122 |
-
min-height: 170px;
|
123 |
}
|
124 |
|
125 |
-
input.
|
126 |
-
display: block;
|
127 |
}
|
128 |
</style>
|
129 |
-
<
|
130 |
-
<
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
<
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
type="checkbox">
|
141 |
-
<label for="<?php echo $this->get_field_id( 'forumids' ) ?>"></label>
|
142 |
-
<select id="<?php echo $this->get_field_id( 'forumids' ) ?>" class="wpf_wdg_forumids"
|
143 |
-
name="<?php echo esc_attr( $this->get_field_name( 'forumids' ) ); ?>[]" multiple>
|
144 |
-
<?php WPF()->forum->tree( 'select_box', false, $selected ) ?>
|
145 |
-
</select>
|
146 |
-
</p>
|
147 |
-
<p>
|
148 |
-
<label for="<?php echo $this->get_field_id( 'current_forumid_filter' ) ?>"><?php _e( 'Autofilter by current forum', 'wpforo' ); ?>
|
149 |
-
:</label>
|
150 |
-
<input id="<?php echo $this->get_field_id( 'current_forumid_filter' ) ?>"
|
151 |
-
name="<?php echo esc_attr( $this->get_field_name( 'current_forumid_filter' ) ); ?>" <?php checked( $current_forumid_filter ); ?>
|
152 |
-
type="checkbox">
|
153 |
-
</p>
|
154 |
-
<p>
|
155 |
-
<label for="<?php echo $this->get_field_id( 'orderby' ) ?>"><?php _e( 'Order by', 'wpforo' ); ?>:</label>
|
156 |
-
<select name="<?php echo esc_attr( $this->get_field_name( 'orderby' ) ); ?>"
|
157 |
-
id="<?php echo $this->get_field_id( 'orderby' ) ?>">
|
158 |
-
<?php foreach( $this->orderby_fields as $orderby_key => $orderby_field ) : ?>
|
159 |
-
<option value="<?php echo $orderby_key; ?>"<?php echo( $orderby_key == $orderby ? ' selected' : '' ); ?>><?php echo $orderby_field; ?></option>
|
160 |
-
<?php endforeach; ?>
|
161 |
-
</select>
|
162 |
-
<label>
|
163 |
-
<select name="<?php echo esc_attr( $this->get_field_name( 'order' ) ); ?>">
|
164 |
-
<?php foreach( $this->order_fields as $order_key => $order_field ) : ?>
|
165 |
-
<option value="<?php echo $order_key; ?>"<?php echo( $order_key == $order ? ' selected' : '' ); ?>><?php echo $order_field; ?></option>
|
166 |
-
<?php endforeach; ?>
|
167 |
</select>
|
168 |
-
</
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
<
|
186 |
-
|
187 |
-
|
188 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
189 |
<?php
|
190 |
}
|
191 |
|
192 |
public function update( $new_instance, $old_instance ) {
|
193 |
$new_instance = wpforo_parse_args( $new_instance, $this->default_instance );
|
194 |
$instance = [];
|
195 |
-
$instance['title'] = (
|
196 |
-
|
197 |
-
$instance['
|
|
|
198 |
$instance['orderby'] = ( ! empty( $new_instance['orderby'] ) && key_exists( $new_instance['orderby'], $this->orderby_fields ) ) ? $new_instance['orderby'] : $this->default_instance['orderby'];
|
199 |
$instance['order'] = ( ! empty( $new_instance['order'] ) && key_exists( $new_instance['order'], $this->order_fields ) ) ? $new_instance['order'] : $this->default_instance['order'];
|
200 |
-
$instance['count'] = (
|
201 |
-
$instance['display_avatar'] =
|
202 |
-
$instance['current_forumid_filter'] =
|
203 |
-
$instance['goto_unread'] =
|
|
|
204 |
|
205 |
return $instance;
|
206 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
207 |
}
|
12 |
function __construct() {
|
13 |
parent::__construct( 'wpforo_recent_topics', 'wpForo Recent Topics', [ 'description' => 'Your forum\'s recent topics.' ] );
|
14 |
$this->init_local_vars();
|
15 |
+
add_action( 'wp_ajax_wpforo_load_ajax_widget_RecentTopics', [ $this, 'load_ajax_widget' ] );
|
16 |
+
add_action( 'wp_ajax_nopriv_wpforo_load_ajax_widget_RecentTopics', [ $this, 'load_ajax_widget' ] );
|
17 |
+
if( is_admin() ) {
|
18 |
+
add_action( 'wp_ajax_wpforo_get_forum_tree', [ $this, 'get_forum_tree' ] );
|
19 |
+
}
|
20 |
}
|
21 |
|
22 |
private function init_local_vars() {
|
23 |
$this->default_instance = [
|
24 |
+
'boardid' => 0,
|
25 |
'title' => 'Recent Topics',
|
26 |
'forumids' => [],
|
27 |
'orderby' => 'created',
|
28 |
'order' => 'DESC',
|
29 |
'count' => 9,
|
30 |
+
'display_avatar' => true,
|
31 |
'forumids_filter' => false,
|
32 |
'current_forumid_filter' => false,
|
33 |
'goto_unread' => false,
|
34 |
+
'refresh_interval' => 0,
|
35 |
];
|
36 |
$this->orderby_fields = [
|
37 |
'created' => __( 'Created Date', 'wpforo' ),
|
45 |
];
|
46 |
}
|
47 |
|
48 |
+
public function load_ajax_widget() {
|
49 |
+
$_POST = wp_unslash( $_POST );
|
50 |
+
$is_user_logged_in = (bool) WPF()->current_userid;
|
51 |
+
$instance = json_decode( (string) wpfval( $_POST, 'instance' ), true );
|
52 |
+
$topic_args = json_decode( (string) wpfval( $_POST, 'topic_args' ), true );
|
53 |
+
$topic_args['private'] = ( ! $is_user_logged_in || ! WPF()->usergroup->can( 'aum' ) ) ? 0 : null;;
|
54 |
+
$topic_args['status'] = ( ! $is_user_logged_in || ! WPF()->usergroup->can( 'aum' ) ) ? 0 : null;
|
55 |
|
56 |
+
$row_count = (int) wpfval( $topic_args, 'row_count' );
|
57 |
+
$topics = [];
|
58 |
+
$topic_args['offset'] = 0;
|
59 |
+
while( $row_count && count( $topics ) < $row_count ){
|
60 |
+
if( ! ( $_topics = WPF()->topic->get_topics( $topic_args ) ) ) break;
|
61 |
+
|
62 |
+
$topics = array_merge( $topics, $_topics );
|
63 |
+
$topic_args['offset'] += $row_count;
|
64 |
+
}
|
65 |
+
array_splice( $topics, $row_count );
|
66 |
+
|
67 |
+
$print_avatar = $instance['display_avatar'] && wpforo_setting( 'profiles', 'avatars' ) && WPF()->usergroup->can( 'va' );
|
68 |
+
|
69 |
+
$lis = '';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
foreach( $topics as $topic ) {
|
71 |
$topic_url = wpforo_topic( $topic['topicid'], 'url' );
|
72 |
$member = wpforo_member( $topic );
|
73 |
+
|
74 |
+
$lis .= sprintf(
|
75 |
+
'<li>
|
76 |
+
<div class="wpforo-list-item">
|
77 |
+
%1$s
|
78 |
+
<div class="wpforo-list-item-right" %2$s>
|
79 |
+
<p class="posttitle">%3$s</p>
|
80 |
+
<p class="postuser">
|
81 |
+
%4$s %5$s <span style="white-space: nowrap;">%6$s</span>
|
82 |
+
</p>
|
83 |
+
</div>
|
84 |
+
<div class="wpf-clear"></div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
85 |
</div>
|
86 |
+
</li>',
|
87 |
+
( $print_avatar ? sprintf( '<div class="wpforo-list-item-left">%1$s</div>', WPF()->member->avatar( $member ) ) : '' ),
|
88 |
+
( !$print_avatar ? 'style="width: 100%"' : '' ),
|
89 |
+
( wpfval( $instance, 'goto_unread' ) ?
|
90 |
+
wpforo_topic_title( $topic, $topic_url, '{p}{au}{t}{/a}', false ) .
|
91 |
+
( $topic['topicid'] != wpfval( WPF()->current_object, 'topicid' ) ? wpforo_unread_button( $topic['topicid'], $topic_url, false ) : '' )
|
92 |
+
:
|
93 |
+
wpforo_topic_title( $topic, $topic_url, '{p}{a}{t}{/a}', false )
|
94 |
+
),
|
95 |
+
wpforo_phrase( 'by', false ),
|
96 |
+
wpforo_member_link( $member, '', 30, '', false ),
|
97 |
+
esc_html( wpforo_date( $topic['created'], 'ago', false ) )
|
98 |
+
);
|
99 |
}
|
100 |
+
|
101 |
+
wp_send_json_success( [ 'html' => sprintf( '<ul>%1$s</ul>', $lis ) ] );
|
102 |
+
}
|
103 |
+
|
104 |
+
public function widget( $args, $instance ) {
|
105 |
+
wp_enqueue_script( 'wpforo-widgets-js' );
|
106 |
+
$instance = wpforo_parse_args( $instance, $this->default_instance );
|
107 |
+
if( $instance['current_forumid_filter'] && $instance['boardid'] === WPF()->board->get_current( 'boardid' ) && $current_forumid = wpfval( WPF()->current_object, 'forumid' ) ) $instance['forumids'] = (array) $current_forumid;
|
108 |
+
$data = [
|
109 |
+
'boardid' => $instance['boardid'],
|
110 |
+
'action' => 'wpforo_load_ajax_widget_RecentTopics',
|
111 |
+
'instance' => $instance,
|
112 |
+
'topic_args' => [
|
113 |
+
'forumids' => ( $instance['forumids'] ?: $this->default_instance['forumids'] ),
|
114 |
+
'orderby' => ( key_exists( $instance['orderby'], $this->orderby_fields ) ? $instance['orderby'] : $this->default_instance['orderby'] ),
|
115 |
+
'order' => ( key_exists( $instance['order'], $this->order_fields ) ? $instance['order'] : $this->default_instance['order'] ),
|
116 |
+
'row_count' => ( ( $count = intval( $instance['count'] ) ) ? $count : $this->default_instance['count'] ),
|
117 |
+
],
|
118 |
+
];
|
119 |
+
if( WPF()->board->get_current( 'boardid' ) !== $instance['boardid'] ) $data['referer'] = home_url();
|
120 |
+
$json = json_encode( $data );
|
121 |
+
echo $args['before_widget'] . '<div id="wpf-widget-recent-replies" class="wpforo-widget-wrap">';
|
122 |
+
if( ! empty( $instance['title'] ) ) echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'] ) . $args['after_title'];
|
123 |
+
echo '<div class="wpforo-widget-content wpforo-ajax-widget" data-json="' . esc_attr( $json ) . '"></div></div>' . $args['after_widget'];
|
124 |
}
|
125 |
|
126 |
public function form( $instance ) {
|
127 |
$instance = wpforo_parse_args( $instance, $this->default_instance );
|
128 |
$title = (string) $instance['title'];
|
129 |
+
$boardid = (int) $instance['boardid'];
|
130 |
$selected = array_unique( array_filter( array_map( 'intval', (array) $instance['forumids'] ) ) );
|
131 |
$orderby = (string) $instance['orderby'];
|
132 |
$order = (string) $instance['order'];
|
135 |
$forumids_filter = (bool) $instance['forumids_filter'];
|
136 |
$current_forumid_filter = (bool) $instance['current_forumid_filter'];
|
137 |
$goto_unread = (bool) $instance['goto_unread'];
|
138 |
+
$refresh_interval = (int) $instance['refresh_interval'];
|
139 |
+
WPF()->change_board( $boardid );
|
140 |
?>
|
141 |
<style>
|
142 |
+
.wpf-wdg-wrapper .wpf_wdg_forumids_wrap {
|
143 |
+
display: none !important;
|
|
|
|
|
144 |
}
|
145 |
|
146 |
+
.wpf-wdg-wrapper input.wpf_wdg_forumids_filter_1:checked ~ .wpf_wdg_forumids_wrap {
|
147 |
+
display: block !important;
|
148 |
}
|
149 |
</style>
|
150 |
+
<div class="wpf-wdg-wrapper">
|
151 |
+
<p>
|
152 |
+
<label for="<?php echo $this->get_field_id( 'title' ) ?>"><?php _e( 'Title', 'wpforo' ); ?>:</label>
|
153 |
+
<input id="<?php echo $this->get_field_id( 'title' ) ?>" class="widefat"
|
154 |
+
name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text"
|
155 |
+
value="<?php echo esc_attr( $title ); ?>">
|
156 |
+
</p>
|
157 |
+
<p>
|
158 |
+
<label for="<?php echo $this->get_field_id( 'boardid' ) ?>"></label>
|
159 |
+
<select id="<?php echo $this->get_field_id( 'boardid' ) ?>" class="wpf_wdg_boardid" name="<?php echo esc_attr( $this->get_field_name( 'boardid' ) ); ?>">
|
160 |
+
<?php echo WPF()->board->dropdown( $boardid ) ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
161 |
</select>
|
162 |
+
</p>
|
163 |
+
<div>
|
164 |
+
<span><?php _e( 'Filter by forums', 'wpforo' ); ?> :</span>
|
165 |
+
|
166 |
+
<label for="<?php echo $this->get_field_id( 'forumids_filter' ) ?>_1"><?php _e( 'Yes', 'wpforo' ); ?></label>
|
167 |
+
<input id="<?php echo $this->get_field_id( 'forumids_filter' ) ?>_1" value="1" class="wpf_wdg_forumids_filter_1" name="<?php echo esc_attr( $this->get_field_name( 'forumids_filter' ) ); ?>" <?php checked( $forumids_filter ); ?> type="radio">
|
168 |
+
|
169 |
+
<label for="<?php echo $this->get_field_id( 'forumids_filter' ) ?>_0"><?php _e( 'No', 'wpforo' ); ?></label>
|
170 |
+
<input id="<?php echo $this->get_field_id( 'forumids_filter' ) ?>_0" value="0" class="wpf_wdg_forumids_filter_0" name="<?php echo esc_attr( $this->get_field_name( 'forumids_filter' ) ); ?>" <?php checked( $forumids_filter, false ); ?> type="radio">
|
171 |
+
|
172 |
+
<div class="wpf_wdg_forumids_wrap">
|
173 |
+
<label for="<?php echo $this->get_field_id( 'forumids' ) ?>"></label>
|
174 |
+
<select id="<?php echo $this->get_field_id( 'forumids' ) ?>" class="wpf_wdg_forumids" name="<?php echo esc_attr( $this->get_field_name( 'forumids' ) ); ?>[]" multiple>
|
175 |
+
<?php WPF()->forum->tree( 'select_box', false, $selected ) ?>
|
176 |
+
</select>
|
177 |
+
</div>
|
178 |
+
</div>
|
179 |
+
<p>
|
180 |
+
<span><?php _e( 'Autofilter by current forum', 'wpforo' ); ?> : </span>
|
181 |
+
|
182 |
+
<label for="<?php echo $this->get_field_id( 'current_forumid_filter' ) ?>_1"><?php _e( 'Yes', 'wpforo' ); ?></label>
|
183 |
+
<input id="<?php echo $this->get_field_id( 'current_forumid_filter' ) ?>_1" name="<?php echo esc_attr( $this->get_field_name( 'current_forumid_filter' ) ); ?>" value="1" <?php checked( $current_forumid_filter ); ?> type="radio">
|
184 |
+
|
185 |
+
<label for="<?php echo $this->get_field_id( 'current_forumid_filter' ) ?>_0"><?php _e( 'No', 'wpforo' ); ?></label>
|
186 |
+
<input id="<?php echo $this->get_field_id( 'current_forumid_filter' ) ?>_0" name="<?php echo esc_attr( $this->get_field_name( 'current_forumid_filter' ) ); ?>" value="0" <?php checked( $current_forumid_filter, false ); ?> type="radio">
|
187 |
+
</p>
|
188 |
+
<p>
|
189 |
+
<label for="<?php echo $this->get_field_id( 'orderby' ) ?>"><?php _e( 'Order by', 'wpforo' ); ?>:</label>
|
190 |
+
<select name="<?php echo esc_attr( $this->get_field_name( 'orderby' ) ); ?>"
|
191 |
+
id="<?php echo $this->get_field_id( 'orderby' ) ?>">
|
192 |
+
<?php foreach( $this->orderby_fields as $orderby_key => $orderby_field ) : ?>
|
193 |
+
<option value="<?php echo $orderby_key; ?>"<?php echo( $orderby_key == $orderby ? ' selected' : '' ); ?>><?php echo $orderby_field; ?></option>
|
194 |
+
<?php endforeach; ?>
|
195 |
+
</select>
|
196 |
+
<label>
|
197 |
+
<select name="<?php echo esc_attr( $this->get_field_name( 'order' ) ); ?>">
|
198 |
+
<?php foreach( $this->order_fields as $order_key => $order_field ) : ?>
|
199 |
+
<option value="<?php echo $order_key; ?>"<?php echo( $order_key == $order ? ' selected' : '' ); ?>><?php echo $order_field; ?></option>
|
200 |
+
<?php endforeach; ?>
|
201 |
+
</select>
|
202 |
+
</label>
|
203 |
+
</p>
|
204 |
+
<p>
|
205 |
+
<label for="<?php echo $this->get_field_id( 'count' ) ?>"><?php _e( 'Number of Items', 'wpforo' ); ?></label>
|
206 |
+
<input id="<?php echo $this->get_field_id( 'count' ) ?>" type="number" min="1" style="width: 53px;" name="<?php echo esc_attr( $this->get_field_name( 'count' ) ); ?>" value="<?php echo esc_attr( $count ); ?>">
|
207 |
+
</p>
|
208 |
+
<p>
|
209 |
+
<span><?php _e( 'Display with avatars', 'wpforo' ); ?> : </span>
|
210 |
+
|
211 |
+
<label for="<?php echo $this->get_field_id( 'display_avatar' ) ?>_1"><?php _e( 'Yes', 'wpforo' ); ?></label>
|
212 |
+
<input id="<?php echo $this->get_field_id( 'display_avatar' ) ?>_1" value="1" <?php checked( $display_avatar ); ?> type="radio" name="<?php echo esc_attr( $this->get_field_name( 'display_avatar' ) ); ?>">
|
213 |
+
|
214 |
+
<label for="<?php echo $this->get_field_id( 'display_avatar' ) ?>_0"><?php _e( 'No', 'wpforo' ); ?></label>
|
215 |
+
<input id="<?php echo $this->get_field_id( 'display_avatar' ) ?>_0" value="0" <?php checked( $display_avatar, false ); ?> type="radio" name="<?php echo esc_attr( $this->get_field_name( 'display_avatar' ) ); ?>">
|
216 |
+
</p>
|
217 |
+
<p>
|
218 |
+
<span><?php _e( 'Refer topics to first unread post', 'wpforo' ); ?> : </span>
|
219 |
+
|
220 |
+
<label for="<?php echo $this->get_field_id( 'goto_unread' ) ?>_1"><?php _e( 'Yes', 'wpforo' ); ?></label>
|
221 |
+
<input id="<?php echo $this->get_field_id( 'goto_unread' ) ?>_1" <?php checked( $goto_unread ); ?> type="radio" name="<?php echo esc_attr( $this->get_field_name( 'goto_unread' ) ); ?>">
|
222 |
+
|
223 |
+
<label for="<?php echo $this->get_field_id( 'goto_unread' ) ?>_0"><?php _e( 'No', 'wpforo' ); ?></label>
|
224 |
+
<input id="<?php echo $this->get_field_id( 'goto_unread' ) ?>_0" <?php checked( $goto_unread, false ); ?> type="radio" name="<?php echo esc_attr( $this->get_field_name( 'goto_unread' ) ); ?>">
|
225 |
+
</p>
|
226 |
+
<p>
|
227 |
+
<label for="<?php echo $this->get_field_id( 'refresh_interval' ) ?>"><?php _e( 'Auto Refresh Interval Seconds', 'wpforo' ); ?></label>
|
228 |
+
<input id="<?php echo $this->get_field_id( 'refresh_interval' ) ?>" type="number" min="0" style="display: inline-block; width: 53px;" name="<?php echo esc_attr( $this->get_field_name( 'refresh_interval' ) ); ?>" value="<?php echo esc_attr( $refresh_interval ); ?>">
|
229 |
+
<span style="color: #ccc"><?php _e( 'Set 0 to disable autorefresh', 'wpforo' ) ?></span>
|
230 |
+
</p>
|
231 |
+
</div>
|
232 |
<?php
|
233 |
}
|
234 |
|
235 |
public function update( $new_instance, $old_instance ) {
|
236 |
$new_instance = wpforo_parse_args( $new_instance, $this->default_instance );
|
237 |
$instance = [];
|
238 |
+
$instance['title'] = strip_tags( (string) $new_instance['title'] );
|
239 |
+
$instance['boardid'] = (int) $new_instance['boardid'];
|
240 |
+
$instance['forumids_filter'] = (bool) (int) $new_instance['forumids_filter'];
|
241 |
+
$instance['forumids'] = array_unique( array_filter( array_map( 'intval', (array) $new_instance['forumids'] ) ) );
|
242 |
$instance['orderby'] = ( ! empty( $new_instance['orderby'] ) && key_exists( $new_instance['orderby'], $this->orderby_fields ) ) ? $new_instance['orderby'] : $this->default_instance['orderby'];
|
243 |
$instance['order'] = ( ! empty( $new_instance['order'] ) && key_exists( $new_instance['order'], $this->order_fields ) ) ? $new_instance['order'] : $this->default_instance['order'];
|
244 |
+
$instance['count'] = (int) $new_instance['count'];
|
245 |
+
$instance['display_avatar'] = (bool) (int) $new_instance['display_avatar'];
|
246 |
+
$instance['current_forumid_filter'] = (bool) (int) $new_instance['current_forumid_filter'];
|
247 |
+
$instance['goto_unread'] = (bool) (int) $new_instance['goto_unread'];
|
248 |
+
$instance['refresh_interval'] = (int) $new_instance['refresh_interval'];
|
249 |
|
250 |
return $instance;
|
251 |
}
|
252 |
+
|
253 |
+
public function get_forum_tree( ) {
|
254 |
+
ob_start();
|
255 |
+
WPF()->forum->tree( 'select_box', false, [] );
|
256 |
+
wp_send_json_success( [ 'html' => ob_get_clean() ] );
|
257 |
+
}
|
258 |
}
|
widgets/Search.php
CHANGED
@@ -5,48 +5,78 @@ namespace wpforo\widgets;
|
|
5 |
use WP_Widget;
|
6 |
|
7 |
class Search extends WP_Widget {
|
|
|
|
|
|
|
|
|
|
|
8 |
function __construct() {
|
9 |
parent::__construct( 'wpforo_search', 'wpForo Search', [ 'description' => 'wpForo search form' ] );
|
|
|
|
|
|
|
10 |
}
|
11 |
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
<?php wpforo_make_hidden_fields_from_url( wpforo_home_url() ) ?>
|
24 |
<label class="wpf-search-widget-label">
|
25 |
<input type="text" placeholder="<?php wpforo_phrase( 'Search...' ) ?>" name="wpfs" class="wpfw-100" value="<?php echo isset( $_GET['wpfs'] ) ? esc_attr( sanitize_text_field( $_GET['wpfs'] ) ) : '' ?>">
|
26 |
-
<svg onclick="
|
27 |
</label>
|
28 |
</form>
|
29 |
-
|
30 |
-
|
31 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
}
|
33 |
|
34 |
public function form( $instance ) {
|
35 |
-
$
|
|
|
|
|
36 |
?>
|
37 |
<p>
|
38 |
-
<label><?php _e( 'Title', 'wpforo' ); ?>:</label>
|
39 |
-
<
|
40 |
-
|
41 |
-
|
42 |
-
|
|
|
|
|
|
|
43 |
</p>
|
44 |
<?php
|
45 |
}
|
46 |
|
47 |
public function update( $new_instance, $old_instance ) {
|
48 |
-
$
|
49 |
-
$instance
|
|
|
|
|
50 |
|
51 |
return $instance;
|
52 |
}
|
5 |
use WP_Widget;
|
6 |
|
7 |
class Search extends WP_Widget {
|
8 |
+
/**
|
9 |
+
* @var array
|
10 |
+
*/
|
11 |
+
private $default_instance;
|
12 |
+
|
13 |
function __construct() {
|
14 |
parent::__construct( 'wpforo_search', 'wpForo Search', [ 'description' => 'wpForo search form' ] );
|
15 |
+
$this->init_local_vars();
|
16 |
+
add_action( 'wp_ajax_wpforo_load_ajax_widget_Search', [ $this, 'load_ajax_widget' ] );
|
17 |
+
add_action( 'wp_ajax_nopriv_wpforo_load_ajax_widget_Search', [ $this, 'load_ajax_widget' ] );
|
18 |
}
|
19 |
|
20 |
+
private function init_local_vars() {
|
21 |
+
$this->default_instance = [
|
22 |
+
'title' => __( 'Forum Search', 'wpforo' ),
|
23 |
+
'boardid' => 0,
|
24 |
+
];
|
25 |
+
}
|
26 |
+
|
27 |
+
public function load_ajax_widget() {
|
28 |
+
ob_start(); ?>
|
29 |
+
|
30 |
+
<form action="<?php echo wpforo_home_url() ?>" method="GET" id="wpforo-search-form">
|
31 |
<?php wpforo_make_hidden_fields_from_url( wpforo_home_url() ) ?>
|
32 |
<label class="wpf-search-widget-label">
|
33 |
<input type="text" placeholder="<?php wpforo_phrase( 'Search...' ) ?>" name="wpfs" class="wpfw-100" value="<?php echo isset( $_GET['wpfs'] ) ? esc_attr( sanitize_text_field( $_GET['wpfs'] ) ) : '' ?>">
|
34 |
+
<svg onclick="this.closest('form').submit();" viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g id="Guide"/><g id="Layer_2"><path d="M13.85,13.15l-2.69-2.69c0.74-0.9,1.2-2.03,1.2-3.28C12.37,4.33,10.04,2,7.18,2S2,4.33,2,7.18s2.33,5.18,5.18,5.18 c1.25,0,2.38-0.46,3.28-1.2l2.69,2.69c0.1,0.1,0.23,0.15,0.35,0.15s0.26-0.05,0.35-0.15C14.05,13.66,14.05,13.34,13.85,13.15z M3,7.18C3,4.88,4.88,3,7.18,3s4.18,1.88,4.18,4.18s-1.88,4.18-4.18,4.18S3,9.49,3,7.18z"/></g></svg>
|
35 |
</label>
|
36 |
</form>
|
37 |
+
|
38 |
+
<?php
|
39 |
+
wp_send_json_success( [ 'html' => ob_get_clean() ] );
|
40 |
+
}
|
41 |
+
|
42 |
+
public function widget( $args, $instance ) {
|
43 |
+
wp_enqueue_script( 'wpforo-widgets-js' );
|
44 |
+
$instance = wpforo_parse_args( $instance, $this->default_instance );
|
45 |
+
$data = [
|
46 |
+
'boardid' => $instance['boardid'],
|
47 |
+
'action' => 'wpforo_load_ajax_widget_Search',
|
48 |
+
];
|
49 |
+
if( WPF()->board->get_current( 'boardid' ) !== $instance['boardid'] ) $data['referer'] = home_url();
|
50 |
+
$json = json_encode( $data );
|
51 |
+
|
52 |
+
echo $args['before_widget'] . '<div id="wpf-widget-search" class="wpforo-widget-wrap">';
|
53 |
+
if( $instance['title'] ) echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'] ) . $args['after_title'];
|
54 |
+
echo '<div class="wpforo-widget-content wpforo-ajax-widget" data-json="' . esc_attr( $json ) . '"></div></div>' . $args['after_widget'];
|
55 |
}
|
56 |
|
57 |
public function form( $instance ) {
|
58 |
+
$instance = wpforo_parse_args( $instance, $this->default_instance );
|
59 |
+
$boardid = (int) $instance['boardid'];
|
60 |
+
$title = (string) $instance['title'];
|
61 |
?>
|
62 |
<p>
|
63 |
+
<label for="<?php echo $this->get_field_id( 'title' ) ?>"><?php _e( 'Title', 'wpforo' ); ?>:</label>
|
64 |
+
<input id="<?php echo $this->get_field_id( 'title' ) ?>" class="widefat" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>">
|
65 |
+
</p>
|
66 |
+
<p>
|
67 |
+
<label for="<?php echo $this->get_field_id( 'boardid' ) ?>"></label>
|
68 |
+
<select id="<?php echo $this->get_field_id( 'boardid' ) ?>" name="<?php echo esc_attr( $this->get_field_name( 'boardid' ) ); ?>">
|
69 |
+
<?php echo WPF()->board->dropdown( $boardid ) ?>
|
70 |
+
</select>
|
71 |
</p>
|
72 |
<?php
|
73 |
}
|
74 |
|
75 |
public function update( $new_instance, $old_instance ) {
|
76 |
+
$new_instance = wpforo_parse_args( $new_instance, $this->default_instance );
|
77 |
+
$instance = [];
|
78 |
+
$instance['boardid'] = (int) $new_instance['boardid'];
|
79 |
+
$instance['title'] = strip_tags( (string) $new_instance['title'] );
|
80 |
|
81 |
return $instance;
|
82 |
}
|
widgets/Tags.php
CHANGED
@@ -5,21 +5,34 @@ namespace wpforo\widgets;
|
|
5 |
use WP_Widget;
|
6 |
|
7 |
class Tags extends WP_Widget {
|
|
|
|
|
|
|
|
|
|
|
8 |
function __construct() {
|
9 |
parent::__construct( 'wpforo_tags', 'wpForo Topic Tags', [ 'description' => 'List of most popular tags' ] );
|
|
|
|
|
|
|
10 |
}
|
11 |
|
12 |
-
|
13 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'] ) . $args['after_title'];
|
19 |
-
}
|
20 |
$tag_args = [ 'row_count' => (int) wpfval( $instance, 'count' ) ];
|
21 |
$tags = WPF()->topic->get_tags( $tag_args, $items_count );
|
22 |
-
|
|
|
23 |
if( ! empty( $tags ) ) {
|
24 |
echo '<ul class="wpf-widget-tags">';
|
25 |
foreach( $tags as $tag ) {
|
@@ -33,48 +46,67 @@ class Tags extends WP_Widget {
|
|
33 |
} else {
|
34 |
echo '<p style="text-align:center">' . wpforo_phrase( 'No tags found', false ) . '</p>';
|
35 |
}
|
36 |
-
|
37 |
-
|
38 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
39 |
}
|
40 |
|
41 |
public function form( $instance ) {
|
42 |
-
$
|
43 |
-
$
|
44 |
-
$
|
|
|
|
|
|
|
45 |
?>
|
46 |
<p>
|
47 |
-
<label><?php _e( 'Title', 'wpforo' ); ?>:</label>
|
48 |
-
<
|
49 |
-
|
50 |
-
|
51 |
-
|
|
|
|
|
|
|
52 |
</p>
|
53 |
<p>
|
54 |
-
<
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
</p>
|
62 |
<p>
|
63 |
-
<label><?php _e( 'Number of Items', 'wpforo' ); ?>:</label>
|
64 |
-
<
|
65 |
-
<input type="number" min="1" style="width: 53px;"
|
66 |
-
name="<?php echo esc_attr( $this->get_field_name( 'count' ) ); ?>"
|
67 |
-
value="<?php echo esc_attr( $count ); ?>">
|
68 |
-
</label>
|
69 |
</p>
|
70 |
<?php
|
71 |
}
|
72 |
|
73 |
public function update( $new_instance, $old_instance ) {
|
74 |
-
$
|
75 |
-
$instance
|
76 |
-
$instance['
|
77 |
-
$instance['
|
|
|
|
|
78 |
|
79 |
return $instance;
|
80 |
}
|
5 |
use WP_Widget;
|
6 |
|
7 |
class Tags extends WP_Widget {
|
8 |
+
/**
|
9 |
+
* @var array
|
10 |
+
*/
|
11 |
+
private $default_instance;
|
12 |
+
|
13 |
function __construct() {
|
14 |
parent::__construct( 'wpforo_tags', 'wpForo Topic Tags', [ 'description' => 'List of most popular tags' ] );
|
15 |
+
$this->init_local_vars();
|
16 |
+
add_action( 'wp_ajax_wpforo_load_ajax_widget_Tags', [ $this, 'load_ajax_widget' ] );
|
17 |
+
add_action( 'wp_ajax_nopriv_wpforo_load_ajax_widget_Tags', [ $this, 'load_ajax_widget' ] );
|
18 |
}
|
19 |
|
20 |
+
private function init_local_vars() {
|
21 |
+
$this->default_instance = [
|
22 |
+
'title' => __( 'Topic Tags', 'wpforo' ),
|
23 |
+
'boardid' => 0,
|
24 |
+
'topics' => true,
|
25 |
+
'count' => 20,
|
26 |
+
];
|
27 |
+
}
|
28 |
|
29 |
+
public function load_ajax_widget() {
|
30 |
+
$_POST = wp_unslash( $_POST );
|
31 |
+
$instance = json_decode( (string) wpfval( $_POST, 'instance' ), true );
|
|
|
|
|
32 |
$tag_args = [ 'row_count' => (int) wpfval( $instance, 'count' ) ];
|
33 |
$tags = WPF()->topic->get_tags( $tag_args, $items_count );
|
34 |
+
ob_start();
|
35 |
+
|
36 |
if( ! empty( $tags ) ) {
|
37 |
echo '<ul class="wpf-widget-tags">';
|
38 |
foreach( $tags as $tag ) {
|
46 |
} else {
|
47 |
echo '<p style="text-align:center">' . wpforo_phrase( 'No tags found', false ) . '</p>';
|
48 |
}
|
49 |
+
|
50 |
+
wp_send_json_success( [ 'html' => ob_get_clean() ] );
|
51 |
+
}
|
52 |
+
|
53 |
+
public function widget( $args, $instance ) {
|
54 |
+
wp_enqueue_script( 'wpforo-widgets-js' );
|
55 |
+
$instance = wpforo_parse_args( $instance, $this->default_instance );
|
56 |
+
$data = [
|
57 |
+
'boardid' => $instance['boardid'],
|
58 |
+
'action' => 'wpforo_load_ajax_widget_Tags',
|
59 |
+
'instance' => $instance,
|
60 |
+
];
|
61 |
+
if( WPF()->board->get_current( 'boardid' ) !== $instance['boardid'] ) $data['referer'] = home_url();
|
62 |
+
$json = json_encode( $data );
|
63 |
+
|
64 |
+
echo $args['before_widget'] . '<div id="wpf-widget-tags" class="wpforo-widget-wrap">';
|
65 |
+
if( $instance['title'] ) echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'] ) . $args['after_title'];
|
66 |
+
echo '<div class="wpforo-widget-content wpforo-ajax-widget" data-json="' . esc_attr( $json ) . '"></div></div>' . $args['after_widget'];
|
67 |
}
|
68 |
|
69 |
public function form( $instance ) {
|
70 |
+
$instance = wpforo_parse_args( $instance, $this->default_instance );
|
71 |
+
$boardid = (int) $instance['boardid'];
|
72 |
+
$title = (string) $instance['title'];
|
73 |
+
$topics = (bool) $instance['topics'];
|
74 |
+
$count = (int) $instance['count'];
|
75 |
+
WPF()->change_board( $boardid );
|
76 |
?>
|
77 |
<p>
|
78 |
+
<label for="<?php echo $this->get_field_id( 'title' ) ?>"><?php _e( 'Title', 'wpforo' ); ?>:</label>
|
79 |
+
<input id="<?php echo $this->get_field_id( 'title' ) ?>" class="widefat" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>">
|
80 |
+
</p>
|
81 |
+
<p>
|
82 |
+
<label for="<?php echo $this->get_field_id( 'boardid' ) ?>"></label>
|
83 |
+
<select id="<?php echo $this->get_field_id( 'boardid' ) ?>" name="<?php echo esc_attr( $this->get_field_name( 'boardid' ) ); ?>">
|
84 |
+
<?php echo WPF()->board->dropdown( $boardid ) ?>
|
85 |
+
</select>
|
86 |
</p>
|
87 |
<p>
|
88 |
+
<span><?php _e( 'Topic Counts', 'wpforo' ); ?> : </span>
|
89 |
+
|
90 |
+
<label for="<?php echo $this->get_field_id( 'topics' ) ?>_1"><?php _e( 'Yes', 'wpforo' ); ?></label>
|
91 |
+
<input id="<?php echo $this->get_field_id( 'topics' ) ?>_1" value="1" <?php checked( $topics ); ?> type="radio" name="<?php echo esc_attr( $this->get_field_name( 'topics' ) ); ?>">
|
92 |
+
|
93 |
+
<label for="<?php echo $this->get_field_id( 'topics' ) ?>_0"><?php _e( 'No', 'wpforo' ); ?></label>
|
94 |
+
<input id="<?php echo $this->get_field_id( 'topics' ) ?>_0" value="0" <?php checked( $topics, false ); ?> type="radio" name="<?php echo esc_attr( $this->get_field_name( 'topics' ) ); ?>">
|
95 |
</p>
|
96 |
<p>
|
97 |
+
<label for="<?php echo $this->get_field_id( 'count' ) ?>"><?php _e( 'Number of Items', 'wpforo' ); ?>:</label>
|
98 |
+
<input id="<?php echo $this->get_field_id( 'count' ) ?>" type="number" min="1" style="width: 53px;" name="<?php echo esc_attr( $this->get_field_name( 'count' ) ); ?>" value="<?php echo esc_attr( $count ); ?>">
|
|
|
|
|
|
|
|
|
99 |
</p>
|
100 |
<?php
|
101 |
}
|
102 |
|
103 |
public function update( $new_instance, $old_instance ) {
|
104 |
+
$new_instance = wpforo_parse_args( $new_instance, $this->default_instance );
|
105 |
+
$instance = [];
|
106 |
+
$instance['boardid'] = (int) $new_instance['boardid'];
|
107 |
+
$instance['title'] = strip_tags( (string) $new_instance['title'] );
|
108 |
+
$instance['topics'] = (bool) (int) $new_instance['topics'];
|
109 |
+
$instance['count'] = (int) $new_instance['count'];
|
110 |
|
111 |
return $instance;
|
112 |
}
|
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: 2.0
|
9 |
* Text Domain: wpforo
|
10 |
* Domain Path: /languages
|
11 |
*/
|
12 |
|
13 |
namespace wpforo;
|
14 |
|
15 |
-
define( 'WPFORO_VERSION', '2.0
|
16 |
|
17 |
//Exit if accessed directly
|
18 |
if( ! defined( 'ABSPATH' ) ) exit;
|
@@ -212,6 +212,8 @@ final class wpforo {
|
|
212 |
}
|
213 |
|
214 |
public function change_board( $args = [] ) {
|
|
|
|
|
215 |
do_action( 'wpforo_before_change_board', $args );
|
216 |
|
217 |
$boardid = $this->board->get_current( 'boardid' );
|
@@ -537,7 +539,7 @@ final class wpforo {
|
|
537 |
} elseif( $args['id'] || $args['slug'] ) {
|
538 |
$getid = ( $args['slug'] ?: $args['id'] );
|
539 |
if( $args['item'] === 'topic' ) {
|
540 |
-
$url = $this->topic->
|
541 |
} elseif( $args['item'] === 'profile' ) {
|
542 |
$url = $this->member->get_profile_url( $getid );
|
543 |
} else {
|
@@ -568,8 +570,11 @@ final class wpforo {
|
|
568 |
$url = wpforo_home_url();
|
569 |
}
|
570 |
} elseif( is_wpforo_url( $url ) && preg_match( '#/' . preg_quote( wpforo_settings_get_slug( 'postid' ) ) . '/(\d+)/?$#isu', strtok( $url, '?' ), $matches ) ) {
|
571 |
-
$post_url = $this->post->
|
572 |
if( $post_url !== wpforo_home_url() ) $url = $post_url;
|
|
|
|
|
|
|
573 |
}
|
574 |
|
575 |
if( function_exists( 'pll_default_language' ) ) {
|
@@ -580,7 +585,7 @@ final class wpforo {
|
|
580 |
|
581 |
$url = wpforo_fix_url( $url );
|
582 |
$url = preg_replace( '#\#[^/?&]*$#iu', '', $url );
|
583 |
-
parse_str( parse_url( $url, PHP_URL_QUERY ), $get );
|
584 |
$get = array_merge( (array) $get, $_GET );
|
585 |
$get = wp_unslash( $get );
|
586 |
|
@@ -732,7 +737,7 @@ final class wpforo {
|
|
732 |
$first = key( $posts );
|
733 |
if( isset( $posts[ $first ] ) && ! empty( $posts[ $first ] ) && $this->perm->forum_can( 'vf', $posts[ $first ]['forumid'] ) ) {
|
734 |
$stats['last_post_title'] = $posts[ $first ]['title'];
|
735 |
-
$stats['last_post_url'] = $this->post->
|
736 |
}
|
737 |
|
738 |
$newest_member = $this->member->get_newest_member();
|
@@ -752,7 +757,7 @@ final class wpforo {
|
|
752 |
$posts = $this->topic->get_topics( [ 'orderby' => 'modified', 'order' => 'DESC', 'row_count' => 1 ] );
|
753 |
if( isset( $posts[0] ) && ! empty( $posts[0] ) && $this->perm->forum_can( 'vf', $posts[0]['forumid'] ) ) {
|
754 |
$stats['last_post_title'] = $posts[0]['title'];
|
755 |
-
$stats['last_post_url'] = $this->post->
|
756 |
}
|
757 |
break;
|
758 |
case 'post':
|
@@ -760,7 +765,7 @@ final class wpforo {
|
|
760 |
$posts = $this->topic->get_topics( [ 'orderby' => 'modified', 'order' => 'DESC', 'row_count' => 1 ] );
|
761 |
if( isset( $posts[0] ) && ! empty( $posts[0] ) && $this->perm->forum_can( 'vf', $posts[0]['forumid'] ) ) {
|
762 |
$stats['last_post_title'] = $posts[0]['title'];
|
763 |
-
$stats['last_post_url'] = $this->post->
|
764 |
}
|
765 |
break;
|
766 |
case 'user':
|
@@ -1095,7 +1100,7 @@ final class wpforo {
|
|
1095 |
$current_object['activities'] = $this->post->get_posts( $args, $current_object['items_count'] );
|
1096 |
break;
|
1097 |
case 'favored':
|
1098 |
-
$current_object['filter'] = strtolower( wpfval( WPF()->GET, 'filter' ) );
|
1099 |
if( ! in_array( $current_object['filter'], [ 'likes', 'dislikes' ], true ) ) $current_object['filter'] = 'bookmarks';
|
1100 |
if( $current_object['filter'] === 'likes' ) {
|
1101 |
$postids = $this->reaction->get_reactions_col(
|
@@ -1185,7 +1190,7 @@ final class wpforo {
|
|
1185 |
$args = ( empty( $topic ) ? [ 'slug' => $current_object['forum_slug'] ] : $topic['forumid'] );
|
1186 |
if( $forum = $this->forum->get_forum( $args ) ) {
|
1187 |
if( ! empty( $topic ) && strtolower( $current_object['forum_slug'] ) !== strtolower( $forum['slug'] ) ) {
|
1188 |
-
wp_safe_redirect( $this->topic->
|
1189 |
exit();
|
1190 |
}
|
1191 |
if( $forum['is_cat'] ) $this->current_object['template'] = 'forum';
|
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: 2.1.0
|
9 |
* Text Domain: wpforo
|
10 |
* Domain Path: /languages
|
11 |
*/
|
12 |
|
13 |
namespace wpforo;
|
14 |
|
15 |
+
define( 'WPFORO_VERSION', '2.1.0' );
|
16 |
|
17 |
//Exit if accessed directly
|
18 |
if( ! defined( 'ABSPATH' ) ) exit;
|
212 |
}
|
213 |
|
214 |
public function change_board( $args = [] ) {
|
215 |
+
if( is_null( $this->board ) ) return;
|
216 |
+
|
217 |
do_action( 'wpforo_before_change_board', $args );
|
218 |
|
219 |
$boardid = $this->board->get_current( 'boardid' );
|
539 |
} elseif( $args['id'] || $args['slug'] ) {
|
540 |
$getid = ( $args['slug'] ?: $args['id'] );
|
541 |
if( $args['item'] === 'topic' ) {
|
542 |
+
$url = $this->topic->get_url( $getid );
|
543 |
} elseif( $args['item'] === 'profile' ) {
|
544 |
$url = $this->member->get_profile_url( $getid );
|
545 |
} else {
|
570 |
$url = wpforo_home_url();
|
571 |
}
|
572 |
} elseif( is_wpforo_url( $url ) && preg_match( '#/' . preg_quote( wpforo_settings_get_slug( 'postid' ) ) . '/(\d+)/?$#isu', strtok( $url, '?' ), $matches ) ) {
|
573 |
+
$post_url = $this->post->get_full_url( $matches[1] );
|
574 |
if( $post_url !== wpforo_home_url() ) $url = $post_url;
|
575 |
+
}elseif( is_wpforo_url( $url ) && preg_match( '#/' . preg_quote( wpforo_settings_get_slug( 'topicid' ) ) . '/(\d+)/?$#isu', strtok( $url, '?' ), $matches ) ) {
|
576 |
+
$topic_url = $this->topic->get_full_url( $matches[1] );
|
577 |
+
if( $topic_url !== wpforo_home_url() ) $url = $topic_url;
|
578 |
}
|
579 |
|
580 |
if( function_exists( 'pll_default_language' ) ) {
|
585 |
|
586 |
$url = wpforo_fix_url( $url );
|
587 |
$url = preg_replace( '#\#[^/?&]*$#iu', '', $url );
|
588 |
+
parse_str( (string) parse_url( $url, PHP_URL_QUERY ), $get );
|
589 |
$get = array_merge( (array) $get, $_GET );
|
590 |
$get = wp_unslash( $get );
|
591 |
|
737 |
$first = key( $posts );
|
738 |
if( isset( $posts[ $first ] ) && ! empty( $posts[ $first ] ) && $this->perm->forum_can( 'vf', $posts[ $first ]['forumid'] ) ) {
|
739 |
$stats['last_post_title'] = $posts[ $first ]['title'];
|
740 |
+
$stats['last_post_url'] = $this->post->get_url( $posts[ $first ]['last_post'] );
|
741 |
}
|
742 |
|
743 |
$newest_member = $this->member->get_newest_member();
|
757 |
$posts = $this->topic->get_topics( [ 'orderby' => 'modified', 'order' => 'DESC', 'row_count' => 1 ] );
|
758 |
if( isset( $posts[0] ) && ! empty( $posts[0] ) && $this->perm->forum_can( 'vf', $posts[0]['forumid'] ) ) {
|
759 |
$stats['last_post_title'] = $posts[0]['title'];
|
760 |
+
$stats['last_post_url'] = $this->post->get_url( $posts[0]['last_post'] );
|
761 |
}
|
762 |
break;
|
763 |
case 'post':
|
765 |
$posts = $this->topic->get_topics( [ 'orderby' => 'modified', 'order' => 'DESC', 'row_count' => 1 ] );
|
766 |
if( isset( $posts[0] ) && ! empty( $posts[0] ) && $this->perm->forum_can( 'vf', $posts[0]['forumid'] ) ) {
|
767 |
$stats['last_post_title'] = $posts[0]['title'];
|
768 |
+
$stats['last_post_url'] = $this->post->get_url( $posts[0]['last_post'] );
|
769 |
}
|
770 |
break;
|
771 |
case 'user':
|
1100 |
$current_object['activities'] = $this->post->get_posts( $args, $current_object['items_count'] );
|
1101 |
break;
|
1102 |
case 'favored':
|
1103 |
+
$current_object['filter'] = strtolower( (string) wpfval( WPF()->GET, 'filter' ) );
|
1104 |
if( ! in_array( $current_object['filter'], [ 'likes', 'dislikes' ], true ) ) $current_object['filter'] = 'bookmarks';
|
1105 |
if( $current_object['filter'] === 'likes' ) {
|
1106 |
$postids = $this->reaction->get_reactions_col(
|
1190 |
$args = ( empty( $topic ) ? [ 'slug' => $current_object['forum_slug'] ] : $topic['forumid'] );
|
1191 |
if( $forum = $this->forum->get_forum( $args ) ) {
|
1192 |
if( ! empty( $topic ) && strtolower( $current_object['forum_slug'] ) !== strtolower( $forum['slug'] ) ) {
|
1193 |
+
wp_safe_redirect( $this->topic->get_url( $topic, $forum ), 301 );
|
1194 |
exit();
|
1195 |
}
|
1196 |
if( $forum['is_cat'] ) $this->current_object['template'] = 'forum';
|