Version Description
Download this release
Release Info
Developer | Tomdever |
Plugin | wpForo Forum |
Version | 1.5.3 |
Comparing to | |
See all releases |
Code changes from version 1.5.2 to 1.5.3
- readme.txt +28 -10
- wpf-admin/xml/english.xml +4 -0
- wpf-assets/js/ajax.js +7 -1
- wpf-assets/js/frontend.js +9 -4
- wpf-includes/class-feed.php +3 -7
- wpf-includes/class-forms.php +1 -1
- wpf-includes/class-forums.php +5 -2
- wpf-includes/class-members.php +24 -8
- wpf-includes/class-moderation.php +50 -19
- wpf-includes/class-permissions.php +4 -3
- wpf-includes/class-posts.php +13 -18
- wpf-includes/class-template.php +25 -29
- wpf-includes/class-topics.php +17 -42
- wpf-includes/functions-installation.php +1 -2
- wpf-includes/functions-template.php +5 -3
- wpf-includes/functions.php +8 -1
- wpf-includes/integration/ultimate-member.php +2 -1
- wpf-includes/wpf-actions.php +16 -2
- wpf-includes/wpf-hooks.php +29 -28
- wpf-includes/wpf-phrases.php +5 -1
- wpf-themes/classic/index.php +3 -3
- wpforo.php +9 -5
readme.txt
CHANGED
@@ -3,7 +3,7 @@ Contributors: gVectors Team
|
|
3 |
Tags: forum, forums, forum plugin, WordPress forum plugin, community, discussion
|
4 |
Requires at least: 4.1
|
5 |
Tested up to: 4.9
|
6 |
-
Stable tag: 1.5.
|
7 |
Requires PHP: 5.5 and higher
|
8 |
License: GPLv2 or later
|
9 |
License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
@@ -159,6 +159,33 @@ Find wpForo forum plugin addons on [gVectors Team website...](https://gvectors.c
|
|
159 |
|
160 |
== Changelog ==
|
161 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
162 |
= wpForo Forum 1.5.2 | 05.09.2018 =
|
163 |
|
164 |
[wpForo v1.5.2 Release Summary](https://wpforo.com/community/wpforo-announcements/wpforo-1-5-2-is-released/)
|
@@ -205,15 +232,6 @@ Find wpForo forum plugin addons on [gVectors Team website...](https://gvectors.c
|
|
205 |
* Fixed Bug: Error on user profile update in dashboard. Warning: array_filter() expects parameter 1 to be array in /class-members.php on line 770
|
206 |
|
207 |
|
208 |
-
UPDATE NOTES:
|
209 |
-
|
210 |
-
- This version is also security fixes, please update it to avoid security issues.
|
211 |
-
- To load your customized colors please refresh forum front-end page twice.
|
212 |
-
- If you have a Cache Plugin, please delete all caches after wpForo update.
|
213 |
-
- If you use CDN and found some issue please purge it.
|
214 |
-
- Forum template files are modified. If you have an old (1.5.1 or lower) customized copy of wpForo forum template files in your WP theme /wpforo/ folder please update them.
|
215 |
-
|
216 |
-
|
217 |
= wpForo Forum 1.5.0 / 1.5.1 | 11.07.2018 =
|
218 |
|
219 |
[wpForo v1.5.0 and 1.5.1 Release Summary](https://wpforo.com/community/wpforo-announcements/wpforo-1-5-0-is-released/)
|
3 |
Tags: forum, forums, forum plugin, WordPress forum plugin, community, discussion
|
4 |
Requires at least: 4.1
|
5 |
Tested up to: 4.9
|
6 |
+
Stable tag: 1.5.3
|
7 |
Requires PHP: 5.5 and higher
|
8 |
License: GPLv2 or later
|
9 |
License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
159 |
|
160 |
== Changelog ==
|
161 |
|
162 |
+
= wpForo Forum 1.5.3 | 13.09.2018 =
|
163 |
+
|
164 |
+
[wpForo v1.5.3 Release Summary](https://wpforo.com/community/wpforo-announcements/wpforo-1-5-3-is-released/)
|
165 |
+
|
166 |
+
* Changed: Change all "Topic" phrases to "Question" in Q&A layout
|
167 |
+
* Changed: Display topic last post date in related topics area
|
168 |
+
* Changed: Allow guests to use default file attachment button
|
169 |
+
* Changed: Post auto-moderation optimization (smarter spam suspicion)
|
170 |
+
* Fixed Bug: Tag counts in Topic Footer
|
171 |
+
* Fixed Bug: Link detection in new users posts (Removed Link)
|
172 |
+
* Fixed Bug: Delete Topic Error in Dashboard > Moderation admin page
|
173 |
+
* Fixed Bug: http_headers ajax request referrer problem
|
174 |
+
* Fixed Bug: Too many redirects on plugin activation
|
175 |
+
* Fixed Bug: Profile fields not saved in Dashboard > Edit Users page
|
176 |
+
* Fixed Bug: Usergroup and Secondary Usergroups not saved
|
177 |
+
* Fixed Bug: Error - "Invalid User ID" on profile update
|
178 |
+
|
179 |
+
|
180 |
+
UPDATE NOTES:
|
181 |
+
|
182 |
+
- This version is also security fixes, please update it to avoid security issues.
|
183 |
+
- To load your customized colors please refresh forum front-end page twice.
|
184 |
+
- If you have a Cache Plugin, please delete all caches after wpForo update.
|
185 |
+
- If you use CDN and found some issue please purge it.
|
186 |
+
- Forum template files are modified. If you have an old (1.5.1 or lower) customized copy of wpForo forum template files in your WP theme /wpforo/ folder please update them.
|
187 |
+
|
188 |
+
|
189 |
= wpForo Forum 1.5.2 | 05.09.2018 =
|
190 |
|
191 |
[wpForo v1.5.2 Release Summary](https://wpforo.com/community/wpforo-announcements/wpforo-1-5-2-is-released/)
|
232 |
* Fixed Bug: Error on user profile update in dashboard. Warning: array_filter() expects parameter 1 to be array in /class-members.php on line 770
|
233 |
|
234 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
235 |
= wpForo Forum 1.5.0 / 1.5.1 | 11.07.2018 =
|
236 |
|
237 |
[wpForo v1.5.0 and 1.5.1 Release Summary](https://wpforo.com/community/wpforo-announcements/wpforo-1-5-0-is-released/)
|
wpf-admin/xml/english.xml
CHANGED
@@ -551,4 +551,8 @@
|
|
551 |
<phrase name="Tags are disabled"><![CDATA[Tags are disabled]]></phrase>
|
552 |
<phrase name="Unread Posts"><![CDATA[Unread Posts]]></phrase>
|
553 |
<phrase name="No unread posts were found"><![CDATA[No unread posts were found]]></phrase>
|
|
|
|
|
|
|
|
|
554 |
</language>
|
551 |
<phrase name="Tags are disabled"><![CDATA[Tags are disabled]]></phrase>
|
552 |
<phrase name="Unread Posts"><![CDATA[Unread Posts]]></phrase>
|
553 |
<phrase name="No unread posts were found"><![CDATA[No unread posts were found]]></phrase>
|
554 |
+
<phrase name="Ask a question"><![CDATA[Ask a question]]></phrase>
|
555 |
+
<phrase name="Your question"><![CDATA[Your question]]></phrase>
|
556 |
+
<phrase name="Question Tags"><![CDATA[Question Tags]]></phrase>
|
557 |
+
<phrase name="This topic doesn't exist or you don't have permissions to see that."><![CDATA[This topic doesn't exist or you don't have permissions to see that.]]></phrase>
|
558 |
</language>
|
wpf-assets/js/ajax.js
CHANGED
@@ -1,3 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
jQuery(document).ready(function ($) {
|
2 |
var wpforo_wrap = $('#wpforo-wrap');
|
3 |
// Like
|
@@ -799,7 +806,6 @@ function wpforo_topic_tools_tab_load() {
|
|
799 |
jQuery('#wpf_tool_tab_content_wrap').html('<i class="fas fa-spinner fa-spin wpf-icon-spinner"></i>');
|
800 |
jQuery.ajax({
|
801 |
type: 'POST',
|
802 |
-
url: wpf_ajax_obj.url,
|
803 |
data: {
|
804 |
active_tab_id: active_tab_id,
|
805 |
action: 'wpforo_active_tab_content_ajax'
|
1 |
+
jQuery.ajaxSetup({
|
2 |
+
url: wpf_ajax_obj.url,
|
3 |
+
data:{
|
4 |
+
referer: window.location.origin + window.location.pathname
|
5 |
+
}
|
6 |
+
});
|
7 |
+
|
8 |
jQuery(document).ready(function ($) {
|
9 |
var wpforo_wrap = $('#wpforo-wrap');
|
10 |
// Like
|
806 |
jQuery('#wpf_tool_tab_content_wrap').html('<i class="fas fa-spinner fa-spin wpf-icon-spinner"></i>');
|
807 |
jQuery.ajax({
|
808 |
type: 'POST',
|
|
|
809 |
data: {
|
810 |
active_tab_id: active_tab_id,
|
811 |
action: 'wpforo_active_tab_content_ajax'
|
wpf-assets/js/frontend.js
CHANGED
@@ -52,7 +52,7 @@ jQuery(document).ready(function($){
|
|
52 |
var stat = $( ".wpf-topic-create" ).is( ":hidden" );
|
53 |
$( ".wpf-topic-create" ).slideToggle( "slow" );
|
54 |
var add_wpftopic = '<i class="fas fa-times" aria-hidden="true"></i>';
|
55 |
-
if( !stat ) add_wpftopic =
|
56 |
$( "#add_wpftopic" ).html(add_wpftopic);
|
57 |
$('html, body').animate({ scrollTop: ($(".wpforo-main").offset().top - 25) }, 415);
|
58 |
});
|
@@ -142,7 +142,9 @@ jQuery(document).ready(function($){
|
|
142 |
|
143 |
//Answer
|
144 |
$( ".wpforo-answer" ).click(function(){
|
145 |
-
|
|
|
|
|
146 |
$("#wpf-msg-box").hide(); $('#wpforo-load').visible();
|
147 |
$("#wpf-reply-form-title").html( wpforo_phrase('Your answer') );
|
148 |
|
@@ -153,7 +155,7 @@ jQuery(document).ready(function($){
|
|
153 |
$( "#wpf_title" ).attr('name', 'post[title]');
|
154 |
$( "#wpf_formaction" ).val( 'add' );
|
155 |
$( "#wpf_formpostid" ).val( '' );
|
156 |
-
$( "#wpf_formbutton" ).val(
|
157 |
$( "#wpf_title").val( wpforo_phrase('Answer to') + ": " + $("#wpf_title").attr('placeholder').replace( wpforo_phrase('re') + ": ", "").replace( wpforo_phrase('Answer to') + ": ", ""));
|
158 |
$('html, body').animate({ scrollTop: $("#wpf-form-wrapper").offset().top }, 500);
|
159 |
|
@@ -167,6 +169,9 @@ jQuery(document).ready(function($){
|
|
167 |
|
168 |
//Comment
|
169 |
$( ".wpforo-childreply" ).click(function(){
|
|
|
|
|
|
|
170 |
$("#wpf-msg-box").hide(); $('#wpforo-load').visible();
|
171 |
$("#wpf-reply-form-title").html( wpforo_phrase('Leave a comment') );
|
172 |
|
@@ -184,7 +189,7 @@ jQuery(document).ready(function($){
|
|
184 |
$( "#wpf_title" ).attr('name', 'post[title]');
|
185 |
$( "#wpf_formaction" ).val( 'add' );
|
186 |
$( "#wpf_formpostid" ).val( '' );
|
187 |
-
$( "#wpf_formbutton" ).val(
|
188 |
$( "#wpf_title").val( wpforo_phrase('re') + ": " + $("#wpf_title").attr('placeholder').replace( wpforo_phrase('re') + ": ", "").replace( wpforo_phrase('Answer to') + ": ", "") );
|
189 |
$('html, body').animate({ scrollTop: $("#wpf-form-wrapper").offset().top }, 800);
|
190 |
|
52 |
var stat = $( ".wpf-topic-create" ).is( ":hidden" );
|
53 |
$( ".wpf-topic-create" ).slideToggle( "slow" );
|
54 |
var add_wpftopic = '<i class="fas fa-times" aria-hidden="true"></i>';
|
55 |
+
if( !stat ) add_wpftopic = $("#wpf_formbutton").val();
|
56 |
$( "#add_wpftopic" ).html(add_wpftopic);
|
57 |
$('html, body').animate({ scrollTop: ($(".wpforo-main").offset().top - 25) }, 415);
|
58 |
});
|
142 |
|
143 |
//Answer
|
144 |
$( ".wpforo-answer" ).click(function(){
|
145 |
+
var phrase = wpforo_phrase('Save') ;
|
146 |
+
if( $(this).data('phrase') !== undefined ) phrase = $(this).data('phrase');
|
147 |
+
|
148 |
$("#wpf-msg-box").hide(); $('#wpforo-load').visible();
|
149 |
$("#wpf-reply-form-title").html( wpforo_phrase('Your answer') );
|
150 |
|
155 |
$( "#wpf_title" ).attr('name', 'post[title]');
|
156 |
$( "#wpf_formaction" ).val( 'add' );
|
157 |
$( "#wpf_formpostid" ).val( '' );
|
158 |
+
$( "#wpf_formbutton" ).val( phrase );
|
159 |
$( "#wpf_title").val( wpforo_phrase('Answer to') + ": " + $("#wpf_title").attr('placeholder').replace( wpforo_phrase('re') + ": ", "").replace( wpforo_phrase('Answer to') + ": ", ""));
|
160 |
$('html, body').animate({ scrollTop: $("#wpf-form-wrapper").offset().top }, 500);
|
161 |
|
169 |
|
170 |
//Comment
|
171 |
$( ".wpforo-childreply" ).click(function(){
|
172 |
+
var phrase = wpforo_phrase('Save') ;
|
173 |
+
if( $(this).data('phrase') !== undefined ) phrase = $(this).data('phrase');
|
174 |
+
|
175 |
$("#wpf-msg-box").hide(); $('#wpforo-load').visible();
|
176 |
$("#wpf-reply-form-title").html( wpforo_phrase('Leave a comment') );
|
177 |
|
189 |
$( "#wpf_title" ).attr('name', 'post[title]');
|
190 |
$( "#wpf_formaction" ).val( 'add' );
|
191 |
$( "#wpf_formpostid" ).val( '' );
|
192 |
+
$( "#wpf_formbutton" ).val( phrase );
|
193 |
$( "#wpf_title").val( wpforo_phrase('re') + ": " + $("#wpf_title").attr('placeholder').replace( wpforo_phrase('re') + ": ", "").replace( wpforo_phrase('Answer to') + ": ", "") );
|
194 |
$('html, body').animate({ scrollTop: $("#wpf-form-wrapper").offset().top }, 800);
|
195 |
|
wpf-includes/class-feed.php
CHANGED
@@ -63,11 +63,7 @@ class wpForoFeed{
|
|
63 |
<?php echo esc_html($forum['title']); ?> - <?php echo esc_html(WPF()->general_options['title']); ?>
|
64 |
<?php endif; ?>
|
65 |
</title>
|
66 |
-
|
67 |
-
<link><?php echo esc_url($forum['forumurl']); ?></link>
|
68 |
-
<?php else: ?>
|
69 |
-
<link><?php echo esc_url_raw( wpforo_home_url() . '?' . $_SERVER['QUERY_STRING'] ); ?></link>
|
70 |
-
<?php endif; ?>
|
71 |
<description><?php echo esc_html(WPF()->general_options['description']); ?></description>
|
72 |
<language><?php bloginfo_rss( 'language' ); ?></language>
|
73 |
<lastBuildDate><?php echo mysql2date('D, d M Y H:i:s +0000', date('Y-m-d H:i:s'), false); ?></lastBuildDate>
|
@@ -80,7 +76,7 @@ class wpForoFeed{
|
|
80 |
<link><?php echo esc_url($topic['topicurl']); ?></link>
|
81 |
<pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', $topic['created'], false); ?></pubDate>
|
82 |
<description><![CDATA[<?php echo wpforo_removebb(esc_html($topic['description'])) ?>]]></description>
|
83 |
-
<content:encoded><![CDATA[<?php echo wpforo_removebb(
|
84 |
<?php if($forum['forumurl'] != '#'): ?><category domain="<?php echo esc_url($forum['forumurl']); ?>"><?php echo esc_html($forum['title']); ?></category><?php endif; ?>
|
85 |
<dc:creator><?php echo esc_html($topic['author']); ?></dc:creator>
|
86 |
<guid isPermaLink="true"><?php echo esc_url($topic['topicurl']); ?></guid>
|
@@ -133,7 +129,7 @@ class wpForoFeed{
|
|
133 |
<link><?php echo esc_url($post['posturl']); ?></link>
|
134 |
<pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', $post['created'], false); ?></pubDate>
|
135 |
<description><![CDATA[<?php echo wpforo_removebb(esc_html($post['description'])) ?>]]></description>
|
136 |
-
<content:encoded><![CDATA[<?php echo wpforo_removebb(
|
137 |
<?php if($forum['forumurl'] != '#'): ?><category domain="<?php echo esc_url($forum['forumurl']); ?>"><?php echo esc_html($forum['title']); ?></category><?php endif; ?>
|
138 |
<dc:creator><?php echo esc_html($post['author']); ?></dc:creator>
|
139 |
<guid isPermaLink="true"><?php echo esc_url($post['posturl']); ?></guid>
|
63 |
<?php echo esc_html($forum['title']); ?> - <?php echo esc_html(WPF()->general_options['title']); ?>
|
64 |
<?php endif; ?>
|
65 |
</title>
|
66 |
+
<link><?php echo esc_url($forum['forumurl']); ?></link>
|
|
|
|
|
|
|
|
|
67 |
<description><?php echo esc_html(WPF()->general_options['description']); ?></description>
|
68 |
<language><?php bloginfo_rss( 'language' ); ?></language>
|
69 |
<lastBuildDate><?php echo mysql2date('D, d M Y H:i:s +0000', date('Y-m-d H:i:s'), false); ?></lastBuildDate>
|
76 |
<link><?php echo esc_url($topic['topicurl']); ?></link>
|
77 |
<pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', $topic['created'], false); ?></pubDate>
|
78 |
<description><![CDATA[<?php echo wpforo_removebb(esc_html($topic['description'])) ?>]]></description>
|
79 |
+
<content:encoded><![CDATA[<?php echo wpforo_removebb($topic['content']) ?>]]></content:encoded>
|
80 |
<?php if($forum['forumurl'] != '#'): ?><category domain="<?php echo esc_url($forum['forumurl']); ?>"><?php echo esc_html($forum['title']); ?></category><?php endif; ?>
|
81 |
<dc:creator><?php echo esc_html($topic['author']); ?></dc:creator>
|
82 |
<guid isPermaLink="true"><?php echo esc_url($topic['topicurl']); ?></guid>
|
129 |
<link><?php echo esc_url($post['posturl']); ?></link>
|
130 |
<pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', $post['created'], false); ?></pubDate>
|
131 |
<description><![CDATA[<?php echo wpforo_removebb(esc_html($post['description'])) ?>]]></description>
|
132 |
+
<content:encoded><![CDATA[<?php echo wpforo_removebb($post['content']) ?>]]></content:encoded>
|
133 |
<?php if($forum['forumurl'] != '#'): ?><category domain="<?php echo esc_url($forum['forumurl']); ?>"><?php echo esc_html($forum['title']); ?></category><?php endif; ?>
|
134 |
<dc:creator><?php echo esc_html($post['author']); ?></dc:creator>
|
135 |
<guid isPermaLink="true"><?php echo esc_url($post['posturl']); ?></guid>
|
wpf-includes/class-forms.php
CHANGED
@@ -998,7 +998,7 @@ class wpForoForm{
|
|
998 |
if( wpfval($field, 'label') ) $label = esc_html($field['label']);
|
999 |
if( wpfval($field, 'type') ) $type = $field['type'];
|
1000 |
if( wpfval($data, 'userid') ) $userid = $data['userid'];
|
1001 |
-
if(
|
1002 |
if( !$this->can_edit( $field ) ) {
|
1003 |
unset($cols[$key]);
|
1004 |
unset($data[$name]);
|
998 |
if( wpfval($field, 'label') ) $label = esc_html($field['label']);
|
999 |
if( wpfval($field, 'type') ) $type = $field['type'];
|
1000 |
if( wpfval($data, 'userid') ) $userid = $data['userid'];
|
1001 |
+
if( $template && $template != 'register' ){
|
1002 |
if( !$this->can_edit( $field ) ) {
|
1003 |
unset($cols[$key]);
|
1004 |
unset($data[$name]);
|
wpf-includes/class-forums.php
CHANGED
@@ -876,7 +876,9 @@ class wpForoForum{
|
|
876 |
*
|
877 |
* @return int layout id
|
878 |
*/
|
879 |
-
function get_layout($args){
|
|
|
|
|
880 |
if(is_array($args)){
|
881 |
$default = array(
|
882 |
'forumid' => NULL, // forum id
|
@@ -908,7 +910,8 @@ class wpForoForum{
|
|
908 |
return $this->get_layout(array( 'forumid' => $forumid ));
|
909 |
}
|
910 |
}
|
911 |
-
|
|
|
912 |
}
|
913 |
|
914 |
function get_forum_url($forum){
|
876 |
*
|
877 |
* @return int layout id
|
878 |
*/
|
879 |
+
function get_layout($args = NULL){
|
880 |
+
if(is_null($args)) $args = WPF()->current_object['forumid'];
|
881 |
+
if(!$args) return false;
|
882 |
if(is_array($args)){
|
883 |
$default = array(
|
884 |
'forumid' => NULL, // forum id
|
910 |
return $this->get_layout(array( 'forumid' => $forumid ));
|
911 |
}
|
912 |
}
|
913 |
+
|
914 |
+
return false;
|
915 |
}
|
916 |
|
917 |
function get_forum_url($forum){
|
wpf-includes/class-members.php
CHANGED
@@ -620,6 +620,8 @@ class wpForoMember{
|
|
620 |
return $user;
|
621 |
}
|
622 |
}
|
|
|
|
|
623 |
}
|
624 |
|
625 |
public function update_user_fields( $userid, $data, $check_permissions = true ){
|
@@ -688,6 +690,9 @@ class wpForoMember{
|
|
688 |
WPF()->perm->can_edit_user( $userid );
|
689 |
}
|
690 |
|
|
|
|
|
|
|
691 |
//Profile Fields
|
692 |
if( wpfkey($data, 'last_login') ){
|
693 |
$profile_fields['last_login'] = $data['last_login'];
|
@@ -1022,13 +1027,17 @@ class wpForoMember{
|
|
1022 |
'last_login' => sanitize_text_field($user->user_registered) ) );
|
1023 |
}
|
1024 |
|
1025 |
-
public function synchronize_users(){
|
1026 |
|
1027 |
if( is_multisite() ){
|
1028 |
-
$sql = "SELECT `user_id` FROM `".WPF()->db->usermeta."` WHERE `meta_key` LIKE '".WPF()->blog_prefix."capabilities' AND `user_id` NOT IN( SELECT `userid` FROM `".WPF()->tables->profiles."` )";
|
1029 |
} else {
|
1030 |
-
$sql = "SELECT `ID` as user_id FROM `".WPF()->db->users."` WHERE `ID` NOT IN( SELECT `userid` FROM `".WPF()->tables->profiles."` )";
|
1031 |
}
|
|
|
|
|
|
|
|
|
1032 |
$userids = WPF()->db->get_col($sql);
|
1033 |
if( !empty($userids) ){
|
1034 |
$roles_usergroups = WPF()->usergroup->get_role_usergroup_relation();
|
@@ -1755,6 +1764,12 @@ class wpForoMember{
|
|
1755 |
public function init_current_user(){
|
1756 |
WPF()->wp_current_user = $current_user = wp_get_current_user();
|
1757 |
if( $current_user->exists() ){
|
|
|
|
|
|
|
|
|
|
|
|
|
1758 |
$user = $this->get_member( $current_user->ID );
|
1759 |
$user_meta = get_user_meta( $current_user->ID );
|
1760 |
$status = ( isset($user['status']) ? $user['status'] : '' );
|
@@ -1764,10 +1779,6 @@ class wpForoMember{
|
|
1764 |
WPF()->current_usermeta = $user_meta;
|
1765 |
WPF()->current_user_groupid = WPF()->current_user['groupid'];
|
1766 |
WPF()->current_user_secondary_groupids = ( wpfkey(WPF()->current_user, 'secondary_groups') ) ? WPF()->current_user['secondary_groups'] : '';
|
1767 |
-
WPF()->current_userid = $current_user->ID;
|
1768 |
-
WPF()->current_username = $current_user->user_login;
|
1769 |
-
WPF()->current_user_email = $current_user->user_email;
|
1770 |
-
WPF()->current_user_display_name = $current_user->display_name;
|
1771 |
$this->update_online_time();
|
1772 |
}
|
1773 |
WPF()->current_user_status = $status;
|
@@ -2864,7 +2875,12 @@ class wpForoMember{
|
|
2864 |
|
2865 |
public function set_usergroup($userid, $groupid){
|
2866 |
if($userid && $groupid){
|
2867 |
-
|
|
|
|
|
|
|
|
|
|
|
2868 |
$this->reset($userid);
|
2869 |
}
|
2870 |
}
|
620 |
return $user;
|
621 |
}
|
622 |
}
|
623 |
+
|
624 |
+
return false;
|
625 |
}
|
626 |
|
627 |
public function update_user_fields( $userid, $data, $check_permissions = true ){
|
690 |
WPF()->perm->can_edit_user( $userid );
|
691 |
}
|
692 |
|
693 |
+
$profile_fields = array();
|
694 |
+
$profile_fields_types = array();
|
695 |
+
|
696 |
//Profile Fields
|
697 |
if( wpfkey($data, 'last_login') ){
|
698 |
$profile_fields['last_login'] = $data['last_login'];
|
1027 |
'last_login' => sanitize_text_field($user->user_registered) ) );
|
1028 |
}
|
1029 |
|
1030 |
+
public function synchronize_users($limit = NULL){
|
1031 |
|
1032 |
if( is_multisite() ){
|
1033 |
+
$sql = "SELECT `user_id` FROM `".WPF()->db->usermeta."` WHERE `meta_key` LIKE '".WPF()->blog_prefix."capabilities' AND `user_id` NOT IN( SELECT `userid` FROM `".WPF()->tables->profiles."` ) ORDER BY `user_id` ASC";
|
1034 |
} else {
|
1035 |
+
$sql = "SELECT `ID` as user_id FROM `".WPF()->db->users."` WHERE `ID` NOT IN( SELECT `userid` FROM `".WPF()->tables->profiles."` ) ORDER BY `ID` ASC";
|
1036 |
}
|
1037 |
+
if( !is_null($limit) ){
|
1038 |
+
$sql .= " LIMIT " . intval($limit);
|
1039 |
+
}
|
1040 |
+
|
1041 |
$userids = WPF()->db->get_col($sql);
|
1042 |
if( !empty($userids) ){
|
1043 |
$roles_usergroups = WPF()->usergroup->get_role_usergroup_relation();
|
1764 |
public function init_current_user(){
|
1765 |
WPF()->wp_current_user = $current_user = wp_get_current_user();
|
1766 |
if( $current_user->exists() ){
|
1767 |
+
|
1768 |
+
WPF()->current_userid = $current_user->ID;
|
1769 |
+
WPF()->current_username = $current_user->user_login;
|
1770 |
+
WPF()->current_user_email = $current_user->user_email;
|
1771 |
+
WPF()->current_user_display_name = $current_user->display_name;
|
1772 |
+
|
1773 |
$user = $this->get_member( $current_user->ID );
|
1774 |
$user_meta = get_user_meta( $current_user->ID );
|
1775 |
$status = ( isset($user['status']) ? $user['status'] : '' );
|
1779 |
WPF()->current_usermeta = $user_meta;
|
1780 |
WPF()->current_user_groupid = WPF()->current_user['groupid'];
|
1781 |
WPF()->current_user_secondary_groupids = ( wpfkey(WPF()->current_user, 'secondary_groups') ) ? WPF()->current_user['secondary_groups'] : '';
|
|
|
|
|
|
|
|
|
1782 |
$this->update_online_time();
|
1783 |
}
|
1784 |
WPF()->current_user_status = $status;
|
2875 |
|
2876 |
public function set_usergroup($userid, $groupid){
|
2877 |
if($userid && $groupid){
|
2878 |
+
if( !$current_groupid = WPF()->db->get_var("SELECT `groupid` FROM ". WPF()->tables->profiles ." WHERE `userid` = " . wpforo_bigintval($userid)) ){
|
2879 |
+
$this->synchronize_user($userid);
|
2880 |
+
}
|
2881 |
+
if( $current_groupid != $groupid ){
|
2882 |
+
WPF()->db->query( "UPDATE `" . WPF()->tables->profiles . "` SET `groupid` = " . intval($groupid) . " WHERE `userid` = " . wpforo_bigintval($userid) );
|
2883 |
+
}
|
2884 |
$this->reset($userid);
|
2885 |
}
|
2886 |
}
|
wpf-includes/class-moderation.php
CHANGED
@@ -16,12 +16,6 @@ class wpForoModeration
|
|
16 |
add_filter('wpforo_add_post_data_filter', array(&$this, 'auto_moderate'));
|
17 |
}
|
18 |
else{
|
19 |
-
if( !WPF()->perm->can_link() ){
|
20 |
-
add_filter('wpforo_add_topic_data_filter', array(&$this, 'remove_links'), 7);
|
21 |
-
add_filter('wpforo_edit_topic_data_filter', array(&$this, 'remove_links'), 7);
|
22 |
-
add_filter('wpforo_add_post_data_filter', array(&$this, 'remove_links'), 7);
|
23 |
-
add_filter('wpforo_edit_post_data_filter', array(&$this, 'remove_links'), 7);
|
24 |
-
}
|
25 |
if( WPF()->member->current_user_is_new() ){
|
26 |
if (class_exists('Akismet')) {
|
27 |
add_filter('wpforo_add_topic_data_filter', array(&$this, 'akismet_topic'), 8);
|
@@ -42,7 +36,13 @@ class wpForoModeration
|
|
42 |
add_filter('wpforo_add_topic_data_filter', array(&$this, 'auto_moderate'), 10);
|
43 |
add_filter('wpforo_add_post_data_filter', array(&$this, 'auto_moderate'), 10);
|
44 |
}
|
45 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
46 |
}
|
47 |
|
48 |
public function get_post_status_dname($status)
|
@@ -266,8 +266,7 @@ class wpForoModeration
|
|
266 |
else{
|
267 |
return $post;
|
268 |
}
|
269 |
-
|
270 |
-
// $len = wpforo_strlen($item);
|
271 |
$item = strip_tags($item);
|
272 |
$is_similar = false;
|
273 |
$post_args = array( 'userid' => $post['userid'] );
|
@@ -364,21 +363,53 @@ class wpForoModeration
|
|
364 |
}
|
365 |
|
366 |
public function remove_links( $item ){
|
367 |
-
if(
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
374 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
375 |
return $item;
|
376 |
}
|
377 |
|
378 |
public function has_link( $content ){
|
379 |
-
|
380 |
-
|
381 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
382 |
return false;
|
383 |
}
|
384 |
|
16 |
add_filter('wpforo_add_post_data_filter', array(&$this, 'auto_moderate'));
|
17 |
}
|
18 |
else{
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
if( WPF()->member->current_user_is_new() ){
|
20 |
if (class_exists('Akismet')) {
|
21 |
add_filter('wpforo_add_topic_data_filter', array(&$this, 'akismet_topic'), 8);
|
36 |
add_filter('wpforo_add_topic_data_filter', array(&$this, 'auto_moderate'), 10);
|
37 |
add_filter('wpforo_add_post_data_filter', array(&$this, 'auto_moderate'), 10);
|
38 |
}
|
39 |
+
if( !WPF()->perm->can_link() ){
|
40 |
+
add_filter('wpforo_add_topic_data_filter', array(&$this, 'remove_links'), 20);
|
41 |
+
add_filter('wpforo_edit_topic_data_filter', array(&$this, 'remove_links'), 20);
|
42 |
+
add_filter('wpforo_add_post_data_filter', array(&$this, 'remove_links'), 20);
|
43 |
+
add_filter('wpforo_edit_post_data_filter', array(&$this, 'remove_links'), 20);
|
44 |
+
}
|
45 |
+
}
|
46 |
}
|
47 |
|
48 |
public function get_post_status_dname($status)
|
266 |
else{
|
267 |
return $post;
|
268 |
}
|
269 |
+
|
|
|
270 |
$item = strip_tags($item);
|
271 |
$is_similar = false;
|
272 |
$post_args = array( 'userid' => $post['userid'] );
|
363 |
}
|
364 |
|
365 |
public function remove_links( $item ){
|
366 |
+
if( wpfval($item, 'body') ){
|
367 |
+
$domain = wpforo_get_request_uri();
|
368 |
+
$urls = wp_extract_urls( $item['body'] );
|
369 |
+
if( !empty($urls) ){
|
370 |
+
foreach( $urls as $k => $url ){
|
371 |
+
$url = parse_url( $url );
|
372 |
+
if( wpfval($url, 'host') ){
|
373 |
+
if( strpos( $domain, $url['host'] ) !== FALSE ) unset($urls[$k]);
|
374 |
+
}
|
375 |
+
}
|
376 |
+
if( !empty($urls) ){
|
377 |
+
$item['body'] = str_replace($urls, ' <span style="color:#aaa;">' . wpforo_phrase('removed link', false, false) . '</span> ', $item['body']);
|
378 |
+
}
|
379 |
+
}
|
380 |
}
|
381 |
+
if( wpfval($item, 'title') ){
|
382 |
+
$domain = wpforo_get_request_uri();
|
383 |
+
$urls = wp_extract_urls( $item['title'] );
|
384 |
+
if( !empty($urls) ){
|
385 |
+
foreach( $urls as $k => $url ){
|
386 |
+
$url = parse_url( $url );
|
387 |
+
if( wpfval($url, 'host') ){
|
388 |
+
if( strpos( $domain, $url['host'] ) !== FALSE ) unset($urls[$k]);
|
389 |
+
}
|
390 |
+
}
|
391 |
+
if( !empty($urls) ){
|
392 |
+
$item['title'] = str_replace($urls, ' -' . wpforo_phrase('removed link', false, false) . '- ', $item['title']);
|
393 |
+
}
|
394 |
+
}
|
395 |
+
}
|
396 |
return $item;
|
397 |
}
|
398 |
|
399 |
public function has_link( $content ){
|
400 |
+
$domain = wpforo_get_request_uri();
|
401 |
+
$urls = wp_extract_urls( $content );
|
402 |
+
if( !empty($urls) ){
|
403 |
+
foreach( $urls as $k => $url ){
|
404 |
+
$url = parse_url( $url );
|
405 |
+
if( wpfval($url, 'host') ){
|
406 |
+
if( strpos( $domain, $url['host'] ) !== FALSE ) unset($urls[$k]);
|
407 |
+
}
|
408 |
+
}
|
409 |
+
}
|
410 |
+
if( !empty($urls) ){
|
411 |
+
return true;
|
412 |
+
}
|
413 |
return false;
|
414 |
}
|
415 |
|
wpf-includes/class-permissions.php
CHANGED
@@ -347,7 +347,7 @@ class wpForoPermissions{
|
|
347 |
$posts = intval($posts);
|
348 |
if( isset(WPF()->tools_antispam['min_number_post_to_link']) ){
|
349 |
$min_posts = intval(WPF()->tools_antispam['min_number_post_to_link']);
|
350 |
-
if( $min_posts
|
351 |
if ( $posts <= $min_posts ) {
|
352 |
return false;
|
353 |
}
|
@@ -358,7 +358,8 @@ class wpForoPermissions{
|
|
358 |
}
|
359 |
|
360 |
public function can_attach(){
|
361 |
-
if(
|
|
|
362 |
$posts = WPF()->member->member_approved_posts( WPF()->current_userid );
|
363 |
$posts = intval($posts);
|
364 |
if( isset(WPF()->tools_antispam['min_number_post_to_attach']) ){
|
@@ -374,7 +375,7 @@ class wpForoPermissions{
|
|
374 |
}
|
375 |
|
376 |
public function can_attach_file_type( $ext = '' ){
|
377 |
-
if(
|
378 |
if( isset(WPF()->tools_antispam['limited_file_ext']) && WPF()->member->current_user_is_new() ){
|
379 |
$expld = explode('|', WPF()->tools_antispam['limited_file_ext'] );
|
380 |
if( in_array($ext, $expld) ){
|
347 |
$posts = intval($posts);
|
348 |
if( isset(WPF()->tools_antispam['min_number_post_to_link']) ){
|
349 |
$min_posts = intval(WPF()->tools_antispam['min_number_post_to_link']);
|
350 |
+
if( $min_posts !== 0 ){
|
351 |
if ( $posts <= $min_posts ) {
|
352 |
return false;
|
353 |
}
|
358 |
}
|
359 |
|
360 |
public function can_attach(){
|
361 |
+
if( !$this->forum_can('a') ) return false;
|
362 |
+
if( !$this->usergroup_can( 'em' ) ){
|
363 |
$posts = WPF()->member->member_approved_posts( WPF()->current_userid );
|
364 |
$posts = intval($posts);
|
365 |
if( isset(WPF()->tools_antispam['min_number_post_to_attach']) ){
|
375 |
}
|
376 |
|
377 |
public function can_attach_file_type( $ext = '' ){
|
378 |
+
if( !$this->usergroup_can( 'em' ) ){
|
379 |
if( isset(WPF()->tools_antispam['limited_file_ext']) && WPF()->member->current_user_is_new() ){
|
380 |
$expld = explode('|', WPF()->tools_antispam['limited_file_ext'] );
|
381 |
if( in_array($ext, $expld) ){
|
wpf-includes/class-posts.php
CHANGED
@@ -325,14 +325,7 @@ class wpForoPost{
|
|
325 |
$this->delete_attachments( $postid );
|
326 |
|
327 |
//Delete post
|
328 |
-
if( WPF()->db->delete(WPF()->tables->posts, array( 'postid' =>
|
329 |
-
$last_post = $this->get_posts( array('topicid' => intval($post['topicid']), 'orderby' => '`created` DESC, `postid` DESC', 'row_count' => 1, 'status' => 0, 'private' => 0) );
|
330 |
-
if(is_array($last_post) && !empty($last_post)){
|
331 |
-
$last_post = $last_post[0];
|
332 |
-
}else{
|
333 |
-
$last_post = array( 'modified' => '0000-00-00 00:00:00', 'created' => '0000-00-00 00:00:00', 'userid' => 0, 'postid' => 0 );
|
334 |
-
}
|
335 |
-
|
336 |
WPF()->db->delete(
|
337 |
WPF()->tables->likes, array( 'postid' => $postid ), array( '%d' )
|
338 |
);
|
@@ -342,8 +335,8 @@ class wpForoPost{
|
|
342 |
|
343 |
$answ_incr = '';
|
344 |
$comm_incr = '';
|
345 |
-
$
|
346 |
-
if(
|
347 |
if($post['parentid']){
|
348 |
$comm_incr = ', `comments` = IF( (`comments` - 1) < 0, 0, `comments` - 1 ) ';
|
349 |
}else{
|
@@ -351,15 +344,17 @@ class wpForoPost{
|
|
351 |
}
|
352 |
}
|
353 |
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
}
|
362 |
-
|
|
|
|
|
363 |
do_action('wpforo_after_delete_post', $post);
|
364 |
|
365 |
if( $post['is_first_post'] ) return WPF()->topic->delete($post['topicid']);
|
325 |
$this->delete_attachments( $postid );
|
326 |
|
327 |
//Delete post
|
328 |
+
if( WPF()->db->delete(WPF()->tables->posts, array( 'postid' => $postid ), array( '%d' )) ){
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
329 |
WPF()->db->delete(
|
330 |
WPF()->tables->likes, array( 'postid' => $postid ), array( '%d' )
|
331 |
);
|
335 |
|
336 |
$answ_incr = '';
|
337 |
$comm_incr = '';
|
338 |
+
$layout = WPF()->forum->get_layout($post['forumid']);
|
339 |
+
if($layout == 3){
|
340 |
if($post['parentid']){
|
341 |
$comm_incr = ', `comments` = IF( (`comments` - 1) < 0, 0, `comments` - 1 ) ';
|
342 |
}else{
|
344 |
}
|
345 |
}
|
346 |
|
347 |
+
WPF()->topic->rebuild_first_last($post['topicid']);
|
348 |
+
WPF()->topic->rebuild_stats($post['topicid']);
|
349 |
+
WPF()->forum->rebuild_last_infos($post['forumid']);
|
350 |
+
WPF()->forum->rebuild_stats($post['forumid']);
|
351 |
+
|
352 |
+
if( false !== WPF()->db->query( "UPDATE IGNORE `".WPF()->tables->profiles."` SET `posts` = IF( (`posts` - 1) < 0, 0, `posts` - 1 ) $answ_incr $comm_incr WHERE `userid` = " . intval($post['userid']) ) ){
|
353 |
+
WPF()->member->reset($post['userid']);
|
354 |
}
|
355 |
+
|
356 |
+
WPF()->notice->add('This post successfully deleted', 'success');
|
357 |
+
|
358 |
do_action('wpforo_after_delete_post', $post);
|
359 |
|
360 |
if( $post['is_first_post'] ) return WPF()->topic->delete($post['topicid']);
|
wpf-includes/class-template.php
CHANGED
@@ -29,6 +29,9 @@ class wpForoTemplate{
|
|
29 |
add_filter("tiny_mce_plugins", array($this, 'filter_tinymce_plugins'), 15);
|
30 |
add_filter("wp_mce_translation", array($this, 'add_tinymce_translations'));
|
31 |
|
|
|
|
|
|
|
32 |
add_action('wp_footer', array($this, 'add_footer_html'), 999999, 0);
|
33 |
|
34 |
//ajax actions hooks
|
@@ -98,6 +101,17 @@ class wpForoTemplate{
|
|
98 |
$mce_translation['Open link in a new tab'] = __( 'Open link in a new tab' );
|
99 |
return $mce_translation;
|
100 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
101 |
|
102 |
function topic_form($forumid){
|
103 |
if(!isset(WPF()->post->options['max_upload_size']) || !WPF()->post->options['max_upload_size']){ $server_mus = wpforo_human_size_to_bytes(ini_get('upload_max_filesize')); if( !$server_mus || $server_mus > 10485760 ) $server_mus = 10485760; WPF()->post->options['max_upload_size'] = $server_mus;}
|
@@ -123,7 +137,7 @@ class wpForoTemplate{
|
|
123 |
</div>
|
124 |
<?php endif; ?>
|
125 |
|
126 |
-
<label style="padding-left:8px;"> <?php wpforo_phrase('Topic Title') ?> * </label>
|
127 |
<input id="wpf_title" class="wpf-subject" type="text" name="topic[title]" autocomplete="off" required autofocus placeholder="<?php esc_attr( wpforo_phrase('Enter title here') ) ?>">
|
128 |
<?php
|
129 |
$content = '';
|
@@ -167,29 +181,20 @@ class wpForoTemplate{
|
|
167 |
<?php endif; ?>
|
168 |
<?php do_action('wpforo_topic_form_buttons_hook'); ?>
|
169 |
</div>
|
170 |
-
<?php if( WPF()->perm->can_attach() ): ?>
|
171 |
-
<?php if(!defined('WPFOROATTACH_BASENAME') && WPF()->perm->forum_can('a', $forumid)): ?>
|
172 |
-
<div class="wpf-default-attachment" style="padding-top:5px;">
|
173 |
-
<label for="wpf_file"><?php wpforo_phrase('Attach file:') ?> </label> <input id="wpf_file" type="file" name="attachfile" />
|
174 |
-
<p><?php wpforo_phrase('Maximum allowed file size is'); echo ' ' . wpforo_print_size(WPF()->post->options['max_upload_size']); ?></p>
|
175 |
-
<div class="wpf-clear"></div>
|
176 |
-
</div>
|
177 |
-
<?php endif; ?>
|
178 |
-
<?php endif; ?>
|
179 |
<?php do_action('wpforo_topic_form_extra_fields_after') ?>
|
180 |
</div>
|
181 |
<?php if( WPF()->post->options['tags'] && WPF()->perm->forum_can('tag', $forumid) ) : ?>
|
182 |
<div class="wpf-topic-tags">
|
183 |
-
<p class="wpf-topic-tags-label"><i class="fas fa-tag"></i> <?php wpforo_phrase('Topic Tags') ?> <span>(<?php wpforo_phrase('Separate tags using a comma') ?>)</span></p>
|
184 |
<input id="wpf_tags" placeholder="<?php echo sprintf(wpforo_phrase('Start typing tags here (maximum %d tags are allowed)...', false), WPF()->post->options['max_tags']) ?>" name="topic[tags]" autocomplete="off" value="" type="text">
|
185 |
<style type="text/css">#wpforo-wrap .wpf-ac-loading {background-image: url('<?php echo WPFORO_URL ?>/wpf-assets/images/ajax_loading.gif');background-repeat: no-repeat;background-position: right center;visibility: visible;} </style>
|
186 |
</div>
|
187 |
<?php endif; ?>
|
188 |
<?php if( wpforo_feature('subscribe_checkbox_on_post_editor') && WPF()->perm->forum_can('sb', $forumid) ) : ?>
|
189 |
-
<div class="wpf-topic-sbs"><input id="wpf-topic-sbs" type="checkbox" name="wpforo_topic_subs" value="1" <?php echo ( wpforo_feature('subscribe_checkbox_default_status') ) ? 'checked="true" ' : ''; ?>/> <label for="wpf-topic-sbs"><?php wpforo_phrase('Subscribe to this topic') ?></label></div>
|
190 |
<?php endif; ?>
|
191 |
<?php do_action('wpforo_editor_topic_submit_before', $forumid) ?>
|
192 |
-
<input id="wpf_formbutton" type="submit" name="topic[save]" class="button button-primary forum_submit" value="<?php wpforo_phrase('Add
|
193 |
<?php do_action('wpforo_editor_topic_submit_after', $forumid) ?>
|
194 |
<div class="wpf-clear"></div>
|
195 |
</form>
|
@@ -294,16 +299,7 @@ class wpForoTemplate{
|
|
294 |
?>
|
295 |
<div class="wpf-extra-fields">
|
296 |
<?php do_action('wpforo_reply_form_extra_fields_before') ?>
|
297 |
-
|
298 |
-
<?php if( WPF()->perm->can_attach() ): ?>
|
299 |
-
<?php if(!defined('WPFOROATTACH_BASENAME') && WPF()->perm->forum_can('a', $forumid)): ?>
|
300 |
-
<div class="wpf-default-attachment">
|
301 |
-
<label for="wpf_file"><?php wpforo_phrase('Attach file:') ?> </label> <input id="wpf_file" type="file" name="attachfile" />
|
302 |
-
<p><?php wpforo_phrase('Maximum allowed file size is'); echo ' ' . wpforo_print_size(WPF()->post->options['max_upload_size']); ?></p>
|
303 |
-
<div class="wpf-clear"></div>
|
304 |
-
</div>
|
305 |
-
<?php endif; ?>
|
306 |
-
<?php endif; ?>
|
307 |
<?php do_action('wpforo_reply_form_extra_fields_after') ?>
|
308 |
</div>
|
309 |
<?php if( WPF()->post->options['tags'] && WPF()->perm->forum_can('tag', $forumid) ) : ?>
|
@@ -317,11 +313,11 @@ class wpForoTemplate{
|
|
317 |
$args = array( "userid" => WPF()->current_userid , "itemid" => intval($topicid), "type" => "topic" );
|
318 |
$subscribe = WPF()->sbscrb->get_subscribe( $args );
|
319 |
if( !isset($subscribe['subid']) ) : ?>
|
320 |
-
<div class="wpf-topic-sbs"><input id="wpf-topic-sbs" type="checkbox" name="wpforo_topic_subs" value="1" <?php echo ( wpforo_feature('subscribe_checkbox_default_status') ) ? 'checked="true" ' : ''; ?> /> <label for="wpf-topic-sbs"><?php wpforo_phrase('Subscribe to this topic') ?></label></div>
|
321 |
<?php endif;
|
322 |
endif; ?>
|
323 |
<?php do_action('wpforo_editor_post_submit_before', $args) ?>
|
324 |
-
<input id="wpf_formbutton" type="submit" name="post[save]" class="button button-primary forum_submit" value="<?php wpforo_phrase('Add Reply') ?>">
|
325 |
<?php do_action('wpforo_editor_post_submit_after', $args) ?>
|
326 |
<div class="wpf-clear"></div>
|
327 |
</form>
|
@@ -656,19 +652,19 @@ class wpForoTemplate{
|
|
656 |
case 'answer':
|
657 |
if( WPF()->perm->forum_can('cr', $forumid) ){
|
658 |
if( WPF()->topic->can_answer($topicid) ){
|
659 |
-
$button_html[] = '<span class="wpforo-answer wpf-button"><i class="fas fa-pencil-alt"></i> ' . wpforo_phrase('Answer', false).'</span>';
|
660 |
}
|
661 |
} else {
|
662 |
-
$button_html[] = '<span class="wpf-button not_reg_user"><i class="fas fa-pencil-alt"></i> ' . wpforo_phrase('Answer', false).'</span>';
|
663 |
}
|
664 |
break;
|
665 |
case 'comment':
|
666 |
if($is_closed) break;
|
667 |
$title = wpforo_phrase('Use comments to ask for more information or suggest improvements. Avoid answering questions in comments.', false);
|
668 |
if( WPF()->perm->forum_can('cr', $forumid) ) {
|
669 |
-
$button_html[] = '<span id="parentpostid'.intval($postid).'" class="wpforo-childreply wpf-button" title="'.esc_attr($title).'"><i class="fas fa-comment"></i> ' . wpforo_phrase('Add a comment', false).'</span>';
|
670 |
}else{
|
671 |
-
$button_html[] = '<span class="not_reg_user wpf-button" title="'.esc_attr($title).'"><i class="fas fa-comment"></i> ' . wpforo_phrase('Add a comment', false).'</span>';
|
672 |
}
|
673 |
break;
|
674 |
case 'quote':
|
29 |
add_filter("tiny_mce_plugins", array($this, 'filter_tinymce_plugins'), 15);
|
30 |
add_filter("wp_mce_translation", array($this, 'add_tinymce_translations'));
|
31 |
|
32 |
+
add_action('wpforo_topic_form_extra_fields_after', array($this, 'add_default_attach_input'));
|
33 |
+
add_action('wpforo_reply_form_extra_fields_after', array($this, 'add_default_attach_input'));
|
34 |
+
|
35 |
add_action('wp_footer', array($this, 'add_footer_html'), 999999, 0);
|
36 |
|
37 |
//ajax actions hooks
|
101 |
$mce_translation['Open link in a new tab'] = __( 'Open link in a new tab' );
|
102 |
return $mce_translation;
|
103 |
}
|
104 |
+
|
105 |
+
public function add_default_attach_input(){
|
106 |
+
if( WPF()->perm->can_attach() ){ ?>
|
107 |
+
<div class="wpf-default-attachment">
|
108 |
+
<label for="wpf_file"><?php wpforo_phrase('Attach file:') ?> </label> <input id="wpf_file" type="file" name="attachfile" />
|
109 |
+
<p><?php wpforo_phrase('Maximum allowed file size is'); echo ' ' . wpforo_print_size(WPF()->post->options['max_upload_size']); ?></p>
|
110 |
+
<div class="wpf-clear"></div>
|
111 |
+
</div>
|
112 |
+
<?php
|
113 |
+
}
|
114 |
+
}
|
115 |
|
116 |
function topic_form($forumid){
|
117 |
if(!isset(WPF()->post->options['max_upload_size']) || !WPF()->post->options['max_upload_size']){ $server_mus = wpforo_human_size_to_bytes(ini_get('upload_max_filesize')); if( !$server_mus || $server_mus > 10485760 ) $server_mus = 10485760; WPF()->post->options['max_upload_size'] = $server_mus;}
|
137 |
</div>
|
138 |
<?php endif; ?>
|
139 |
|
140 |
+
<label style="padding-left:8px;"> <?php wpforo_phrase(( WPF()->forum->get_layout() == 3 ? 'Your question' : 'Topic Title' )) ?> * </label>
|
141 |
<input id="wpf_title" class="wpf-subject" type="text" name="topic[title]" autocomplete="off" required autofocus placeholder="<?php esc_attr( wpforo_phrase('Enter title here') ) ?>">
|
142 |
<?php
|
143 |
$content = '';
|
181 |
<?php endif; ?>
|
182 |
<?php do_action('wpforo_topic_form_buttons_hook'); ?>
|
183 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
184 |
<?php do_action('wpforo_topic_form_extra_fields_after') ?>
|
185 |
</div>
|
186 |
<?php if( WPF()->post->options['tags'] && WPF()->perm->forum_can('tag', $forumid) ) : ?>
|
187 |
<div class="wpf-topic-tags">
|
188 |
+
<p class="wpf-topic-tags-label"><i class="fas fa-tag"></i> <?php wpforo_phrase(( WPF()->forum->get_layout() == 3 ? 'Question Tags' : 'Topic Tags' )) ?> <span>(<?php wpforo_phrase('Separate tags using a comma') ?>)</span></p>
|
189 |
<input id="wpf_tags" placeholder="<?php echo sprintf(wpforo_phrase('Start typing tags here (maximum %d tags are allowed)...', false), WPF()->post->options['max_tags']) ?>" name="topic[tags]" autocomplete="off" value="" type="text">
|
190 |
<style type="text/css">#wpforo-wrap .wpf-ac-loading {background-image: url('<?php echo WPFORO_URL ?>/wpf-assets/images/ajax_loading.gif');background-repeat: no-repeat;background-position: right center;visibility: visible;} </style>
|
191 |
</div>
|
192 |
<?php endif; ?>
|
193 |
<?php if( wpforo_feature('subscribe_checkbox_on_post_editor') && WPF()->perm->forum_can('sb', $forumid) ) : ?>
|
194 |
+
<div class="wpf-topic-sbs"><input id="wpf-topic-sbs" type="checkbox" name="wpforo_topic_subs" value="1" <?php echo ( wpforo_feature('subscribe_checkbox_default_status') ) ? 'checked="true" ' : ''; ?>/> <label for="wpf-topic-sbs"><?php wpforo_phrase(( WPF()->forum->get_layout() == 3 ? 'Subscribe to this question' : 'Subscribe to this topic' ) ) ?></label></div>
|
195 |
<?php endif; ?>
|
196 |
<?php do_action('wpforo_editor_topic_submit_before', $forumid) ?>
|
197 |
+
<input id="wpf_formbutton" type="submit" name="topic[save]" class="button button-primary forum_submit" value="<?php wpforo_phrase(( WPF()->forum->get_layout() == 3 ? 'Ask a question' : 'Add topic' )) ?>">
|
198 |
<?php do_action('wpforo_editor_topic_submit_after', $forumid) ?>
|
199 |
<div class="wpf-clear"></div>
|
200 |
</form>
|
299 |
?>
|
300 |
<div class="wpf-extra-fields">
|
301 |
<?php do_action('wpforo_reply_form_extra_fields_before') ?>
|
302 |
+
<?php do_action('wpforo_reply_form_buttons_hook'); ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
303 |
<?php do_action('wpforo_reply_form_extra_fields_after') ?>
|
304 |
</div>
|
305 |
<?php if( WPF()->post->options['tags'] && WPF()->perm->forum_can('tag', $forumid) ) : ?>
|
313 |
$args = array( "userid" => WPF()->current_userid , "itemid" => intval($topicid), "type" => "topic" );
|
314 |
$subscribe = WPF()->sbscrb->get_subscribe( $args );
|
315 |
if( !isset($subscribe['subid']) ) : ?>
|
316 |
+
<div class="wpf-topic-sbs"><input id="wpf-topic-sbs" type="checkbox" name="wpforo_topic_subs" value="1" <?php echo ( wpforo_feature('subscribe_checkbox_default_status') ) ? 'checked="true" ' : ''; ?> /> <label for="wpf-topic-sbs"><?php wpforo_phrase(( WPF()->forum->get_layout() == 3 ? 'Subscribe to this question' : 'Subscribe to this topic' ) ) ?></label></div>
|
317 |
<?php endif;
|
318 |
endif; ?>
|
319 |
<?php do_action('wpforo_editor_post_submit_before', $args) ?>
|
320 |
+
<input id="wpf_formbutton" type="submit" name="post[save]" class="button button-primary forum_submit" value="<?php wpforo_phrase(( WPF()->forum->get_layout() == 3 ? 'Answer' : 'Add Reply' ) ) ?>">
|
321 |
<?php do_action('wpforo_editor_post_submit_after', $args) ?>
|
322 |
<div class="wpf-clear"></div>
|
323 |
</form>
|
652 |
case 'answer':
|
653 |
if( WPF()->perm->forum_can('cr', $forumid) ){
|
654 |
if( WPF()->topic->can_answer($topicid) ){
|
655 |
+
$button_html[] = '<span class="wpforo-answer wpf-button" data-phrase="' . esc_attr( wpforo_phrase('Answer', false) ).'"><i class="fas fa-pencil-alt"></i> ' . wpforo_phrase('Answer', false).'</span>';
|
656 |
}
|
657 |
} else {
|
658 |
+
$button_html[] = '<span class="wpf-button not_reg_user" data-phrase="' . esc_attr( wpforo_phrase('Answer', false) ).'"><i class="fas fa-pencil-alt"></i> ' . wpforo_phrase('Answer', false).'</span>';
|
659 |
}
|
660 |
break;
|
661 |
case 'comment':
|
662 |
if($is_closed) break;
|
663 |
$title = wpforo_phrase('Use comments to ask for more information or suggest improvements. Avoid answering questions in comments.', false);
|
664 |
if( WPF()->perm->forum_can('cr', $forumid) ) {
|
665 |
+
$button_html[] = '<span id="parentpostid'.intval($postid).'" class="wpforo-childreply wpf-button" title="'.esc_attr($title).'" data-phrase="' . esc_attr( wpforo_phrase('Add a comment', false) ) . '"><i class="fas fa-comment"></i> ' . wpforo_phrase('Add a comment', false).'</span>';
|
666 |
}else{
|
667 |
+
$button_html[] = '<span class="not_reg_user wpf-button" title="'.esc_attr($title).'" data-phrase="' . esc_attr( wpforo_phrase('Add a comment', false) ).'"><i class="fas fa-comment"></i> ' . wpforo_phrase('Add a comment', false).'</span>';
|
668 |
}
|
669 |
break;
|
670 |
case 'quote':
|
wpf-includes/class-topics.php
CHANGED
@@ -425,8 +425,8 @@ class wpForoTopic{
|
|
425 |
if( $forumid = $topic['forumid'] ){
|
426 |
|
427 |
$questions = '';
|
428 |
-
$
|
429 |
-
if(
|
430 |
$questions = ' `questions` = `questions` - 1 ';
|
431 |
$this->users_stats_incr_minus($topicid);
|
432 |
}
|
@@ -448,51 +448,26 @@ class wpForoTopic{
|
|
448 |
}
|
449 |
// END delete topic posts include first post
|
450 |
|
451 |
-
if( WPF()->db->delete(WPF()->tables->topics, array('topicid' => $topicid)) ){
|
452 |
WPF()->db->delete(WPF()->tables->views, array( 'topicid' => $topicid ), array( '%d' ));
|
453 |
-
|
454 |
-
if(
|
455 |
-
|
456 |
-
if( isset($last_topic['last_post']) ) {
|
457 |
-
$last_post = WPF()->post->get_post($last_topic['last_post']);
|
458 |
-
if( is_array($last_post) && !empty($last_post) ){
|
459 |
-
$last_topic['last_post_userid'] = $last_post['userid'];
|
460 |
-
}
|
461 |
-
else{
|
462 |
-
$last_topic['last_post_userid'] = $last_topic['userid'];
|
463 |
-
}
|
464 |
-
}
|
465 |
-
}else{
|
466 |
-
$last_topic = array( 'topicid' => 0, 'last_post' => 0, 'last_post_userid' => 0, 'modified' => '0000-00-00 00:00:00');
|
467 |
-
}
|
468 |
-
|
469 |
-
if(WPF()->db->query(
|
470 |
-
"UPDATE IGNORE ".WPF()->tables->forums."
|
471 |
-
SET
|
472 |
-
`last_topicid` = " . intval($last_topic['topicid']) . ",
|
473 |
-
`last_postid` = " . intval($last_topic['last_post']) . ",
|
474 |
-
`last_userid` = " . intval($last_topic['last_post_userid']) . ",
|
475 |
-
`last_post_date` = '" . esc_sql($last_topic['modified']) . "',
|
476 |
-
`topics` = IF( (`topics` - 1) < 0, 0, `topics` - 1 )
|
477 |
-
WHERE `forumid` = " . intval($forumid)
|
478 |
-
)
|
479 |
-
){
|
480 |
-
if($questions) WPF()->db->query(
|
481 |
-
"UPDATE IGNORE `".WPF()->tables->profiles."`
|
482 |
SET $questions
|
483 |
-
WHERE `userid` = " . intval($topic['userid'])
|
484 |
-
|
485 |
|
486 |
-
|
487 |
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
WPF()->forum->rebuild_last_infos($forumid);
|
492 |
|
493 |
-
|
494 |
-
|
495 |
-
|
|
|
|
|
496 |
}
|
497 |
}
|
498 |
|
425 |
if( $forumid = $topic['forumid'] ){
|
426 |
|
427 |
$questions = '';
|
428 |
+
$layout = WPF()->forum->get_layout($forumid);
|
429 |
+
if($layout == 3){
|
430 |
$questions = ' `questions` = `questions` - 1 ';
|
431 |
$this->users_stats_incr_minus($topicid);
|
432 |
}
|
448 |
}
|
449 |
// END delete topic posts include first post
|
450 |
|
451 |
+
if( WPF()->db->delete(WPF()->tables->topics, array( 'topicid' => $topicid ), array( '%d' )) ){
|
452 |
WPF()->db->delete(WPF()->tables->views, array( 'topicid' => $topicid ), array( '%d' ));
|
453 |
+
|
454 |
+
if($questions) WPF()->db->query(
|
455 |
+
"UPDATE IGNORE `".WPF()->tables->profiles."`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
456 |
SET $questions
|
457 |
+
WHERE `userid` = " . intval($topic['userid'])
|
458 |
+
);
|
459 |
|
460 |
+
do_action( 'wpforo_after_delete_topic', $topic );
|
461 |
|
462 |
+
if( wpfval($topic, 'tags') ) $this->remove_tags( $topic['tags'] );
|
463 |
+
if( $delete_cache ) wpforo_clean_cache('topic', $topicid, $topic);
|
464 |
+
WPF()->member->reset($topic['userid']);
|
|
|
465 |
|
466 |
+
WPF()->forum->rebuild_stats($forumid);
|
467 |
+
WPF()->forum->rebuild_last_infos($forumid);
|
468 |
+
|
469 |
+
WPF()->notice->add('This topic successfully deleted', 'success');
|
470 |
+
return TRUE;
|
471 |
}
|
472 |
}
|
473 |
|
wpf-includes/functions-installation.php
CHANGED
@@ -45,8 +45,7 @@ function wpforo_activation(){
|
|
45 |
@WPF()->db->query( preg_replace('#)[\r\n\t\s]*ENGINE.*$#isu', ')', $sql) );
|
46 |
}
|
47 |
|
48 |
-
|
49 |
-
if( $users <= 100 ) WPF()->member->synchronize_users();
|
50 |
WPF()->member->init_current_user();
|
51 |
|
52 |
add_option( 'wpforo_count_per_page', 10 );
|
45 |
@WPF()->db->query( preg_replace('#)[\r\n\t\s]*ENGINE.*$#isu', ')', $sql) );
|
46 |
}
|
47 |
|
48 |
+
WPF()->member->synchronize_users(100);
|
|
|
49 |
WPF()->member->init_current_user();
|
50 |
|
51 |
add_option( 'wpforo_count_per_page', 10 );
|
wpf-includes/functions-template.php
CHANGED
@@ -1869,7 +1869,8 @@ function wpforo_tags( $topic, $wrap = true, $type = 'medium', $count = false ){
|
|
1869 |
<div class="<?php if( $type != 'text' ) echo 'wpf-tags' ; ?> wpf-tags-<?php echo esc_attr($type) ?>">
|
1870 |
<?php if($type == 'text'): ?><i class="fas fa-tag"></i> <?php wpforo_phrase('Topic Tags'); ?>: <?php endif; ?>
|
1871 |
<?php foreach( $tags as $tag ): ?>
|
1872 |
-
|
|
|
1873 |
<?php endforeach; ?>
|
1874 |
</div>
|
1875 |
<div class="wpf-clear"></div>
|
@@ -1879,7 +1880,8 @@ function wpforo_tags( $topic, $wrap = true, $type = 'medium', $count = false ){
|
|
1879 |
?>
|
1880 |
<div class="<?php if( $type != 'text' ) echo 'wpf-tags'; ?> wpf-tags-<?php echo esc_attr($type) ?>">
|
1881 |
<?php foreach( $tags as $tag ): ?>
|
1882 |
-
|
|
|
1883 |
<?php endforeach; ?>
|
1884 |
</div>
|
1885 |
<?php
|
@@ -1914,7 +1916,7 @@ function wpforo_topic_rel( $topic ){
|
|
1914 |
$data = wpforo_topic($item['topicid']);
|
1915 |
$html .= '<li>' . wpforo_topic_icon( $item, 'all', true, false ) . '
|
1916 |
<a href="' . esc_url( $data['url'] ) . '" title="'.esc_attr($item['title']).'">' . esc_html($item['title']) . '</a>
|
1917 |
-
<div class="wpf-rel-date">' . wpforo_date( $item['
|
1918 |
<div class="wpf-clear"></div>
|
1919 |
</li>';
|
1920 |
}
|
1869 |
<div class="<?php if( $type != 'text' ) echo 'wpf-tags' ; ?> wpf-tags-<?php echo esc_attr($type) ?>">
|
1870 |
<?php if($type == 'text'): ?><i class="fas fa-tag"></i> <?php wpforo_phrase('Topic Tags'); ?>: <?php endif; ?>
|
1871 |
<?php foreach( $tags as $tag ): ?>
|
1872 |
+
<?php $item = wpforo_tag($tag) ?>
|
1873 |
+
<tag><a href="<?php echo wpforo_home_url() . '?wpfin=tag&wpfs=' . $tag ?>"><?php echo esc_html($tag); ?><?php if($count && wpfval($item, 'count') && !$topic['status']) echo ' (' . $item['count'] . ')'; ?></a></tag><?php if($type == 'text') echo '<sep>,</sep> '; ?>
|
1874 |
<?php endforeach; ?>
|
1875 |
</div>
|
1876 |
<div class="wpf-clear"></div>
|
1880 |
?>
|
1881 |
<div class="<?php if( $type != 'text' ) echo 'wpf-tags'; ?> wpf-tags-<?php echo esc_attr($type) ?>">
|
1882 |
<?php foreach( $tags as $tag ): ?>
|
1883 |
+
<?php $item = wpforo_tag($tag) ?>
|
1884 |
+
<tag><a href="<?php echo wpforo_home_url() . '?wpfin=tag&wpfs=' . $tag ?>"><?php echo esc_html($tag); ?><?php if($count && wpfval($item, 'count') && !$topic['status']) echo ' (' . $item['count'] . ')'; ?></a></tag>
|
1885 |
<?php endforeach; ?>
|
1886 |
</div>
|
1887 |
<?php
|
1916 |
$data = wpforo_topic($item['topicid']);
|
1917 |
$html .= '<li>' . wpforo_topic_icon( $item, 'all', true, false ) . '
|
1918 |
<a href="' . esc_url( $data['url'] ) . '" title="'.esc_attr($item['title']).'">' . esc_html($item['title']) . '</a>
|
1919 |
+
<div class="wpf-rel-date">' . wpforo_date( $item['modified'], 'ago', false ) . '</div>
|
1920 |
<div class="wpf-clear"></div>
|
1921 |
</li>';
|
1922 |
}
|
wpf-includes/functions.php
CHANGED
@@ -242,7 +242,14 @@ if(!function_exists('is_serialized')){
|
|
242 |
|
243 |
function wpforo_get_request_uri($with_port = FALSE, $get_referer_when_ajax = TRUE){
|
244 |
if( $get_referer_when_ajax && wpforo_is_ajax() ){
|
245 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
246 |
}
|
247 |
$s = is_ssl() ? 's' : '';
|
248 |
$sp = strtolower($_SERVER["SERVER_PROTOCOL"]);
|
242 |
|
243 |
function wpforo_get_request_uri($with_port = FALSE, $get_referer_when_ajax = TRUE){
|
244 |
if( $get_referer_when_ajax && wpforo_is_ajax() ){
|
245 |
+
if( $referer = wpfval($_REQUEST, 'referer') ) {
|
246 |
+
$referer = preg_replace('#\#[^\/\?\&]*$#isu', '', $referer);
|
247 |
+
return esc_url_raw($referer);
|
248 |
+
}
|
249 |
+
if( isset($_SERVER['HTTP_REFERER']) ){
|
250 |
+
$url = preg_replace('#\#[^\/\?\&]*$#isu', '', $_SERVER['HTTP_REFERER']);
|
251 |
+
return esc_url_raw($url);
|
252 |
+
}
|
253 |
}
|
254 |
$s = is_ssl() ? 's' : '';
|
255 |
$sp = strtolower($_SERVER["SERVER_PROTOCOL"]);
|
wpf-includes/integration/ultimate-member.php
CHANGED
@@ -406,7 +406,8 @@ if( class_exists('UM') ){
|
|
406 |
|
407 |
//Get author information
|
408 |
$author_id = $post['userid'];
|
409 |
-
$topic_author_id
|
|
|
410 |
um_fetch_user( $author_id );
|
411 |
|
412 |
// Hierarchical replies
|
406 |
|
407 |
//Get author information
|
408 |
$author_id = $post['userid'];
|
409 |
+
$topic_author_id = $topic['userid'];
|
410 |
+
$reply_to_item_author_id = 0;
|
411 |
um_fetch_user( $author_id );
|
412 |
|
413 |
// Hierarchical replies
|
wpf-includes/wpf-actions.php
CHANGED
@@ -5,6 +5,20 @@
|
|
5 |
function wpforo_actions(){
|
6 |
do_action( 'wpforo_actions' );
|
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
if( isset($_POST['wpfreg']) && !empty($_POST['wpfreg']) && $userid = WPF()->member->create( $_POST )){
|
9 |
wpforo_verify_form('ref');
|
10 |
WPF()->member->reset($userid);
|
@@ -944,7 +958,7 @@ function wpforo_actions(){
|
|
944 |
|
945 |
if( $_GET['forum'] == 'g' ){
|
946 |
$forum = array();
|
947 |
-
$forum['forumurl'] =
|
948 |
$forum['title'] = '';
|
949 |
}
|
950 |
else{
|
@@ -957,7 +971,7 @@ function wpforo_actions(){
|
|
957 |
if( $_GET['topic'] == 'g' ){
|
958 |
$posts = WPF()->post->get_posts( array( 'row_count' => $topic_rss_items, 'orderby' => '`created` DESC, `postid` DESC', 'check_private' => true ) );
|
959 |
$topic['title'] = '';
|
960 |
-
$topic['topicurl'] =
|
961 |
}
|
962 |
else{
|
963 |
$topicid = intval($_GET['topic']);
|
5 |
function wpforo_actions(){
|
6 |
do_action( 'wpforo_actions' );
|
7 |
|
8 |
+
add_action( 'delete_attachment', 'wpforo_delete_attachment', 10 );
|
9 |
+
if( has_action('wpforo_topic_form_extra_fields_after', array(WPF()->tpl, 'add_default_attach_input')) ){
|
10 |
+
add_filter( 'wpforo_add_topic_data_filter', 'wpforo_add_default_attachment' );
|
11 |
+
add_filter( 'wpforo_edit_topic_data_filter', 'wpforo_add_default_attachment' );
|
12 |
+
add_filter( 'wpforo_add_post_data_filter', 'wpforo_add_default_attachment' );
|
13 |
+
add_filter( 'wpforo_edit_post_data_filter', 'wpforo_add_default_attachment' );
|
14 |
+
add_filter( 'wpforo_body_text_filter', 'wpforo_default_attachments_filter');
|
15 |
+
}
|
16 |
+
|
17 |
+
if( !class_exists('wpForoSmiles') ){
|
18 |
+
add_filter('wpforo_body_text_filter', 'wp_encode_emoji', 9);
|
19 |
+
add_filter('wpforo_body_text_filter', 'convert_smilies');
|
20 |
+
}
|
21 |
+
|
22 |
if( isset($_POST['wpfreg']) && !empty($_POST['wpfreg']) && $userid = WPF()->member->create( $_POST )){
|
23 |
wpforo_verify_form('ref');
|
24 |
WPF()->member->reset($userid);
|
958 |
|
959 |
if( $_GET['forum'] == 'g' ){
|
960 |
$forum = array();
|
961 |
+
$forum['forumurl'] = wpforo_home_url();
|
962 |
$forum['title'] = '';
|
963 |
}
|
964 |
else{
|
971 |
if( $_GET['topic'] == 'g' ){
|
972 |
$posts = WPF()->post->get_posts( array( 'row_count' => $topic_rss_items, 'orderby' => '`created` DESC, `postid` DESC', 'check_private' => true ) );
|
973 |
$topic['title'] = '';
|
974 |
+
$topic['topicurl'] = wpforo_home_url();
|
975 |
}
|
976 |
else{
|
977 |
$topicid = intval($_GET['topic']);
|
wpf-includes/wpf-hooks.php
CHANGED
@@ -1265,7 +1265,7 @@ function wpforo_userform_to_wpuser_html_form($wp_user){
|
|
1265 |
<span style="color: green"><?php _e('Role-Usergroup Synchronization is Turned ON!', 'wpforo'); ?></span><br />
|
1266 |
<p class="description" style="font-weight: normal; font-size: 13px; line-height: 18px;"><?php _e('This user Usergroup is automatically changed according to current Role. If you want to disable Role-Usergroup synchronization and manage Usergroups and User Roles independently, please navigate to <b>Forums > Settings > Features</b> admin page and disable "Role-Usergroup Synchronization" option.', 'wpforo'); ?></p>
|
1267 |
<?php else: ?>
|
1268 |
-
<select id="wpforo_usergroup" name="wpforo_usergroup"
|
1269 |
<?php WPF()->usergroup->show_selectbox($groupid); ?>
|
1270 |
</select>
|
1271 |
<?php endif; ?>
|
@@ -1321,21 +1321,36 @@ function wpforo_do_hook_user_register($userid){
|
|
1321 |
add_action( 'user_register', 'wpforo_do_hook_user_register', 10, 1 );
|
1322 |
|
1323 |
function wpforo_do_hook_update_profile($userid){
|
1324 |
-
|
1325 |
-
|
1326 |
-
|
1327 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1328 |
}
|
1329 |
}
|
1330 |
-
|
1331 |
-
'groupid' => intval($_POST['wpforo_usergroup']),
|
1332 |
-
'site' => esc_url($_POST['url']),
|
1333 |
-
'about' => wpforo_kses($_POST['description'], 'user_description'),
|
1334 |
-
'timezone' => ( isset($_POST['wpforo_usertimezone']) ? sanitize_text_field($_POST['wpforo_usertimezone']) : '' ),
|
1335 |
-
'secondary_groups' => ( isset($secondary_groups) ? $secondary_groups : ' ' ) );
|
1336 |
-
WPF()->member->update($args);
|
1337 |
-
}
|
1338 |
-
WPF()->member->reset($userid);
|
1339 |
}
|
1340 |
add_action('personal_options_update', 'wpforo_do_hook_update_profile');
|
1341 |
add_action('edit_user_profile_update', 'wpforo_do_hook_update_profile');
|
@@ -1849,20 +1864,6 @@ function wpforo_default_attachments_filter($text){
|
|
1849 |
return $text;
|
1850 |
}
|
1851 |
|
1852 |
-
add_action( 'delete_attachment', 'wpforo_delete_attachment', 10 );
|
1853 |
-
if( !defined('WPFOROATTACH_BASENAME') ){
|
1854 |
-
add_filter( 'wpforo_add_topic_data_filter', 'wpforo_add_default_attachment' );
|
1855 |
-
add_filter( 'wpforo_edit_topic_data_filter', 'wpforo_add_default_attachment' );
|
1856 |
-
add_filter( 'wpforo_add_post_data_filter', 'wpforo_add_default_attachment' );
|
1857 |
-
add_filter( 'wpforo_edit_post_data_filter', 'wpforo_add_default_attachment' );
|
1858 |
-
add_filter('wpforo_body_text_filter', 'wpforo_default_attachments_filter');
|
1859 |
-
}
|
1860 |
-
|
1861 |
-
if( !class_exists('wpForoSmiles') ){
|
1862 |
-
add_filter('wpforo_body_text_filter', 'wp_encode_emoji', 9);
|
1863 |
-
add_filter('wpforo_body_text_filter', 'convert_smilies');
|
1864 |
-
}
|
1865 |
-
|
1866 |
function wpforo_content_enable_do_shortcode(){
|
1867 |
if (wpforo_feature('content-do_shortcode')) {
|
1868 |
add_filter('wpforo_content_after', 'do_shortcode', 20);
|
1265 |
<span style="color: green"><?php _e('Role-Usergroup Synchronization is Turned ON!', 'wpforo'); ?></span><br />
|
1266 |
<p class="description" style="font-weight: normal; font-size: 13px; line-height: 18px;"><?php _e('This user Usergroup is automatically changed according to current Role. If you want to disable Role-Usergroup synchronization and manage Usergroups and User Roles independently, please navigate to <b>Forums > Settings > Features</b> admin page and disable "Role-Usergroup Synchronization" option.', 'wpforo'); ?></p>
|
1267 |
<?php else: ?>
|
1268 |
+
<select id="wpforo_usergroup" name="wpforo_usergroup"<?php if( wpforo_is_owner( $wp_user->ID ) || !current_user_can('administrator') ) echo ' disabled="disabled"'; ?>>
|
1269 |
<?php WPF()->usergroup->show_selectbox($groupid); ?>
|
1270 |
</select>
|
1271 |
<?php endif; ?>
|
1321 |
add_action( 'user_register', 'wpforo_do_hook_user_register', 10, 1 );
|
1322 |
|
1323 |
function wpforo_do_hook_update_profile($userid){
|
1324 |
+
if( $userid ){
|
1325 |
+
if( current_user_can( 'create_users' ) || current_user_can( 'edit_user' ) ){
|
1326 |
+
if( wpfval($_POST, 'wpforo_usergroup') || wpfkey($_POST, 'wpforo_usertimezone') ){
|
1327 |
+
$member = wpforo_member($userid);
|
1328 |
+
if( wpfval($member, 'userid') ){
|
1329 |
+
$groupid = $member['groupid'];
|
1330 |
+
$secondary_groups = $member['secondary_groups'];
|
1331 |
+
if( current_user_can('administrator') ){
|
1332 |
+
if( wpfval($_POST, 'wpforo_usergroup') ){
|
1333 |
+
if( $userid != 1 && !wpforo_is_owner( $userid ) && current_user_can('administrator') ){
|
1334 |
+
$groupid = intval($_POST['wpforo_usergroup']);
|
1335 |
+
}
|
1336 |
+
}
|
1337 |
+
if( wpfval($_POST, 'wpforo_secondary_usergroup') ){
|
1338 |
+
if( !empty($_POST['wpforo_secondary_usergroup']) ){
|
1339 |
+
$secondary_groups = array_map('intval', $_POST['wpforo_secondary_usergroup']);
|
1340 |
+
}
|
1341 |
+
}
|
1342 |
+
}
|
1343 |
+
$args = array( 'groupid' => intval($groupid),
|
1344 |
+
'site' => esc_url_raw($_POST['url']),
|
1345 |
+
'about' => wpforo_kses($_POST['description'], 'user_description'),
|
1346 |
+
'timezone' => ( isset($_POST['wpforo_usertimezone']) ? sanitize_text_field($_POST['wpforo_usertimezone']) : '' ),
|
1347 |
+
'secondary_groups' => $secondary_groups );
|
1348 |
+
WPF()->member->update_profile_fields($userid, $args, false);
|
1349 |
+
WPF()->member->reset($userid);
|
1350 |
+
}
|
1351 |
}
|
1352 |
}
|
1353 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1354 |
}
|
1355 |
add_action('personal_options_update', 'wpforo_do_hook_update_profile');
|
1356 |
add_action('edit_user_profile_update', 'wpforo_do_hook_update_profile');
|
1864 |
return $text;
|
1865 |
}
|
1866 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1867 |
function wpforo_content_enable_do_shortcode(){
|
1868 |
if (wpforo_feature('content-do_shortcode')) {
|
1869 |
add_filter('wpforo_content_after', 'do_shortcode', 20);
|
wpf-includes/wpf-phrases.php
CHANGED
@@ -772,7 +772,6 @@ $wpforo_phrases = array(
|
|
772 |
'Nickname validation failed' => __('Nickname validation failed', 'wpforo'),
|
773 |
'Numerical nicknames are not allowed. Please insert another.' => __('Numerical nicknames are not allowed. Please insert another.', 'wpforo'),
|
774 |
'Maximum allowed file size is %s MB' => __('Maximum allowed file size is %s MB', 'wpforo'),
|
775 |
-
'You are not allowed to attach this file type' => __('You are not allowed to attach this file type', 'wpforo'),
|
776 |
'This email address is already registered. Please insert another' => __('This email address is already registered. Please insert another', 'wpforo'),
|
777 |
'Allowed file types: %s' => __('Allowed file types: %s', 'wpforo'),
|
778 |
'Form name not found' => __('Form name not found', 'wpforo'),
|
@@ -821,4 +820,9 @@ $wpforo_phrases = array(
|
|
821 |
'Unread Posts' => __('Unread Posts', 'wpforo'),
|
822 |
'No unread posts were found' => __('No unread posts were found', 'wpforo'),
|
823 |
|
|
|
|
|
|
|
|
|
|
|
824 |
);
|
772 |
'Nickname validation failed' => __('Nickname validation failed', 'wpforo'),
|
773 |
'Numerical nicknames are not allowed. Please insert another.' => __('Numerical nicknames are not allowed. Please insert another.', 'wpforo'),
|
774 |
'Maximum allowed file size is %s MB' => __('Maximum allowed file size is %s MB', 'wpforo'),
|
|
|
775 |
'This email address is already registered. Please insert another' => __('This email address is already registered. Please insert another', 'wpforo'),
|
776 |
'Allowed file types: %s' => __('Allowed file types: %s', 'wpforo'),
|
777 |
'Form name not found' => __('Form name not found', 'wpforo'),
|
820 |
'Unread Posts' => __('Unread Posts', 'wpforo'),
|
821 |
'No unread posts were found' => __('No unread posts were found', 'wpforo'),
|
822 |
|
823 |
+
//1.5.3
|
824 |
+
'Ask a question' => __('Ask a question', 'wpforo'),
|
825 |
+
'Your question' => __('Your question', 'wpforo'),
|
826 |
+
'Question Tags' => __('Question Tags', 'wpforo'),
|
827 |
+
'This topic doesn\'t exist or you don\'t have permissions to see that.' => __('This topic doesn\'t exist or you don\'t have permissions to see that.', 'wpforo'),
|
828 |
);
|
wpf-themes/classic/index.php
CHANGED
@@ -146,7 +146,7 @@
|
|
146 |
</div>
|
147 |
</div>
|
148 |
<?php if( WPF()->perm->forum_can( 'ct', $cat['forumid']) ): ?>
|
149 |
-
<div class="wpf-head-bar-right"><button class="wpf-button" id="add_wpftopic"><?php wpforo_phrase('Add topic') ?></button></div>
|
150 |
<?php elseif( WPF()->current_user_groupid == 4 ) : ?>
|
151 |
<div class="wpf-head-bar-right"><button class="wpf-button not_reg_user" id="add_wpftopic"><?php wpforo_phrase('Add topic') ?></button></div>
|
152 |
<?php endif; ?>
|
@@ -250,13 +250,13 @@
|
|
250 |
<?php do_action( 'wpforo_post_list_footer' ) ?>
|
251 |
|
252 |
<?php else : ?>
|
253 |
-
|
254 |
<?php endif; ?>
|
255 |
|
256 |
<?php endif; ?>
|
257 |
|
258 |
<?php else : ?>
|
259 |
-
|
260 |
<?php endif; ?>
|
261 |
|
262 |
<?php else : ?>
|
146 |
</div>
|
147 |
</div>
|
148 |
<?php if( WPF()->perm->forum_can( 'ct', $cat['forumid']) ): ?>
|
149 |
+
<div class="wpf-head-bar-right"><button class="wpf-button" id="add_wpftopic"><?php wpforo_phrase( ( WPF()->forum->get_layout() == 3 ? 'Ask a question' : 'Add topic' ) ) ?></button></div>
|
150 |
<?php elseif( WPF()->current_user_groupid == 4 ) : ?>
|
151 |
<div class="wpf-head-bar-right"><button class="wpf-button not_reg_user" id="add_wpftopic"><?php wpforo_phrase('Add topic') ?></button></div>
|
152 |
<?php endif; ?>
|
250 |
<?php do_action( 'wpforo_post_list_footer' ) ?>
|
251 |
|
252 |
<?php else : ?>
|
253 |
+
<p class="wpf-p-error"><?php wpforo_phrase('You don\'t have permissions to see this page, please register or login for further information') ?></p>
|
254 |
<?php endif; ?>
|
255 |
|
256 |
<?php endif; ?>
|
257 |
|
258 |
<?php else : ?>
|
259 |
+
<p class="wpf-p-error"><?php wpforo_phrase('This topic doesn\'t exist or you don\'t have permissions to see that.') ?></p>
|
260 |
<?php endif; ?>
|
261 |
|
262 |
<?php else : ?>
|
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 (A. Chakhoyan, R. Hovhannisyan)
|
7 |
* Author URI: https://gvectors.com/
|
8 |
-
* Version: 1.5.
|
9 |
* Text Domain: wpforo
|
10 |
* Domain Path: /wpf-languages
|
11 |
*/
|
12 |
|
13 |
//Exit if accessed directly
|
14 |
if( !defined( 'ABSPATH' ) ) exit;
|
15 |
-
if( !defined( 'WPFORO_VERSION' ) ) define('WPFORO_VERSION', '1.5.
|
16 |
|
17 |
function wpforo_load_plugin_textdomain() { load_plugin_textdomain( 'wpforo', FALSE, basename( dirname( __FILE__ ) ) . '/wpf-languages/' ); }
|
18 |
add_action( 'plugins_loaded', 'wpforo_load_plugin_textdomain' );
|
@@ -195,10 +195,13 @@ if( !class_exists( 'wpForo' ) ) {
|
|
195 |
if( !$db_version || version_compare( $db_version, WPFORO_VERSION, '<') ){
|
196 |
add_action( 'admin_notices', 'wpforo_update_db_notice' );
|
197 |
}
|
|
|
|
|
|
|
|
|
|
|
198 |
if( !WPF()->forum->manage() && wpforo_current_user_is('admin') ){
|
199 |
WPF()->member->set_usergroup(WPF()->current_userid, 1);
|
200 |
-
wp_redirect( wpforo_get_request_uri() );
|
201 |
-
exit;
|
202 |
}
|
203 |
}
|
204 |
}
|
@@ -506,6 +509,7 @@ if( !class_exists( 'wpForo' ) ) {
|
|
506 |
public function init_current_object($url = ''){
|
507 |
$this->current_object = array('template' => '', 'paged' => 1, 'is_404' => false, 'user_is_same_current_user' => false);
|
508 |
if(!$url) $url = wpforo_get_request_uri();
|
|
|
509 |
|
510 |
if( !is_wpforo_page($url) ) return;
|
511 |
|
@@ -694,7 +698,7 @@ if( !class_exists( 'wpForo' ) ) {
|
|
694 |
wp_redirect( wpforo_login_url() );
|
695 |
exit();
|
696 |
}else{
|
697 |
-
$current_object['is_404'] =
|
698 |
$current_object['topic'] = array();
|
699 |
$current_object['topicid'] = 0;
|
700 |
}
|
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 (A. Chakhoyan, R. Hovhannisyan)
|
7 |
* Author URI: https://gvectors.com/
|
8 |
+
* Version: 1.5.3
|
9 |
* Text Domain: wpforo
|
10 |
* Domain Path: /wpf-languages
|
11 |
*/
|
12 |
|
13 |
//Exit if accessed directly
|
14 |
if( !defined( 'ABSPATH' ) ) exit;
|
15 |
+
if( !defined( 'WPFORO_VERSION' ) ) define('WPFORO_VERSION', '1.5.3');
|
16 |
|
17 |
function wpforo_load_plugin_textdomain() { load_plugin_textdomain( 'wpforo', FALSE, basename( dirname( __FILE__ ) ) . '/wpf-languages/' ); }
|
18 |
add_action( 'plugins_loaded', 'wpforo_load_plugin_textdomain' );
|
195 |
if( !$db_version || version_compare( $db_version, WPFORO_VERSION, '<') ){
|
196 |
add_action( 'admin_notices', 'wpforo_update_db_notice' );
|
197 |
}
|
198 |
+
|
199 |
+
$sql = "SELECT `groupid` FROM ". WPF()->tables->profiles ." WHERE `userid` = " . wpforo_bigintval(WPF()->current_userid);
|
200 |
+
if( !$current_groupid = WPF()->db->get_var($sql) ){
|
201 |
+
WPF()->member->synchronize_user(WPF()->current_userid);
|
202 |
+
}
|
203 |
if( !WPF()->forum->manage() && wpforo_current_user_is('admin') ){
|
204 |
WPF()->member->set_usergroup(WPF()->current_userid, 1);
|
|
|
|
|
205 |
}
|
206 |
}
|
207 |
}
|
509 |
public function init_current_object($url = ''){
|
510 |
$this->current_object = array('template' => '', 'paged' => 1, 'is_404' => false, 'user_is_same_current_user' => false);
|
511 |
if(!$url) $url = wpforo_get_request_uri();
|
512 |
+
$url = preg_replace('#\#[^\/\?\&]*$#isu', '', $url);
|
513 |
|
514 |
if( !is_wpforo_page($url) ) return;
|
515 |
|
698 |
wp_redirect( wpforo_login_url() );
|
699 |
exit();
|
700 |
}else{
|
701 |
+
$current_object['is_404'] = false;
|
702 |
$current_object['topic'] = array();
|
703 |
$current_object['topicid'] = 0;
|
704 |
}
|