bbPress - Version 2.6.9

Version Description

Download this release

Release Info

Developer johnjamesjacoby
Plugin Icon 128x128 bbPress
Version 2.6.9
Comparing to
See all releases

Code changes from version 2.6.8 to 2.6.9

Files changed (3) hide show
  1. bbpress.php +3 -3
  2. includes/extend/akismet.php +72 -40
  3. readme.txt +1 -1
bbpress.php CHANGED
@@ -5,7 +5,7 @@
5
  *
6
  * bbPress is forum software with a twist from the creators of WordPress.
7
  *
8
- * $Id: bbpress.php 7222 2021-11-19 16:14:57Z johnjamesjacoby $
9
  *
10
  * @package bbPress
11
  * @subpackage Main
@@ -17,7 +17,7 @@
17
  * Description: bbPress is forum software with a twist from the creators of WordPress.
18
  * Author: The bbPress Contributors
19
  * Author URI: https://bbpress.org
20
- * Version: 2.6.8
21
  * Text Domain: bbpress
22
  * Domain Path: /languages/
23
  * License: GPLv2 or later (license.txt)
@@ -205,7 +205,7 @@ final class bbPress {
205
 
206
  /** Versions **********************************************************/
207
 
208
- $this->version = '2.6.8';
209
  $this->db_version = '263';
210
 
211
  /** Paths *************************************************************/
5
  *
6
  * bbPress is forum software with a twist from the creators of WordPress.
7
  *
8
+ * $Id: bbpress.php 7228 2021-11-29 15:22:27Z johnjamesjacoby $
9
  *
10
  * @package bbPress
11
  * @subpackage Main
17
  * Description: bbPress is forum software with a twist from the creators of WordPress.
18
  * Author: The bbPress Contributors
19
  * Author URI: https://bbpress.org
20
+ * Version: 2.6.9
21
  * Text Domain: bbpress
22
  * Domain Path: /languages/
23
  * License: GPLv2 or later (license.txt)
205
 
206
  /** Versions **********************************************************/
207
 
208
+ $this->version = '2.6.9';
209
  $this->db_version = '263';
210
 
211
  /** Paths *************************************************************/
includes/extend/akismet.php CHANGED
@@ -966,41 +966,73 @@ class BBP_Akismet {
966
  }
967
 
968
  /**
969
- * Deletes old spam topics & replies from the queue after 15 days
970
- * (determined by `_bbp_akismet_delete_spam_interval` filter).
971
  *
972
- * @since 2.6.7 bbPress (r7203)
973
  *
974
- * @global wpdb $wpdb
 
975
  */
976
- public function delete_old_spam() {
977
- global $wpdb;
 
 
 
 
978
 
979
  /**
980
- * Determines how many posts will be deleted in each batch.
981
  *
982
- * @param int The default as defined by AKISMET_DELETE_LIMIT (also used
983
- * in Akismet WordPress plugin).
984
  */
985
- $delete_limit = (int) apply_filters( '_bbp_akismet_delete_spam_limit',
986
- defined( 'AKISMET_DELETE_LIMIT' )
987
- ? AKISMET_DELETE_LIMIT
988
- : 10000
989
- );
990
 
991
- // Validate the deletion limit
992
- $delete_limit = max( 1, intval( $delete_limit ) );
 
 
 
 
 
 
 
 
 
 
 
 
993
 
994
  /**
995
  * Determines how many days a piece of spam will be left in the Spam
996
  * queue before being deleted.
997
  *
998
- * @param int The default number of days.
999
  */
1000
- $delete_interval = (int) apply_filters( '_bbp_akismet_delete_spam_interval', 15 );
 
 
 
 
1001
 
1002
- // Validate the deletion interval
1003
- $delete_interval = max( 1, intval( $delete_interval ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
1004
 
1005
  // Setup the query
1006
  $sql = "SELECT id FROM {$wpdb->posts} WHERE post_type IN ('topic', 'reply') AND post_status = 'spam' AND DATE_SUB(NOW(), INTERVAL %d DAY) > post_date_gmt LIMIT %d";
@@ -1034,11 +1066,11 @@ class BBP_Akismet {
1034
 
1035
  // Prepared as strings since id is an unsigned BIGINT, and using %
1036
  // will constrain the value to the maximum signed BIGINT.
1037
- $format_string = implode( ", ", array_fill( 0, count( $spam_ids ), '%s' ) );
1038
 
1039
  // Run the delete queries
1040
- $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->posts} WHERE post_id IN ( " . $format_string . " )", $spam_ids ) );
1041
- $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->postmeta} WHERE post_id IN ( " . $format_string . " )", $spam_ids ) );
1042
 
1043
  // Clean the post cache for these topics & replies
1044
  clean_post_cache( $spam_ids );
@@ -1068,8 +1100,9 @@ class BBP_Akismet {
1068
  }
1069
 
1070
  /**
1071
- * Deletes `_bbp_akismet_as_submitted` meta keys after 15 days, since they
1072
- * are large and not useful in the long term.
 
1073
  *
1074
  * @since 2.6.7 bbPress (r7203)
1075
  *
@@ -1078,22 +1111,15 @@ class BBP_Akismet {
1078
  public function delete_old_spam_meta() {
1079
  global $wpdb;
1080
 
1081
- /**
1082
- * Determines how many days a piece of spam will be left in the Spam
1083
- * queue before being deleted.
1084
- *
1085
- * @param int The default number of days.
1086
- */
1087
- $interval = (int) apply_filters( '_bbp_akismet_delete_spam_meta_interval', 15 );
1088
-
1089
- // Validate the deletion interval
1090
- $interval = max( 1, intval( $interval ) );
1091
 
1092
  // Setup the query
1093
- $sql = "SELECT m.post_id FROM {$wpdb->postmeta} as m INNER JOIN {$wpdb->posts} as p ON m.post_id = p.id WHERE m.meta_key = '_bbp_akismet_as_submitted' AND DATE_SUB(NOW(), INTERVAL %d DAY) > p.post_date_gmt LIMIT 10000";
1094
 
1095
  // Query loop of topic & reply IDs
1096
- while ( $spam_ids = $wpdb->get_col( $wpdb->prepare( $sql, $interval ) ) ) {
1097
 
1098
  // Exit loop if no spam IDs
1099
  if ( empty( $spam_ids ) ) {
@@ -1134,7 +1160,9 @@ class BBP_Akismet {
1134
  }
1135
 
1136
  /**
1137
- * Clears post meta that no longer has corresponding posts in the database.
 
 
1138
  *
1139
  * @since 2.6.7 bbPress (r7203)
1140
  *
@@ -1143,6 +1171,10 @@ class BBP_Akismet {
1143
  public function delete_orphaned_spam_meta() {
1144
  global $wpdb;
1145
 
 
 
 
 
1146
  $last_meta_id = 0;
1147
 
1148
  // Start time (float)
@@ -1154,10 +1186,10 @@ class BBP_Akismet {
1154
  $max_exec_time = (float) max( ini_get( 'max_execution_time' ) - 5, 3 );
1155
 
1156
  // Setup the query
1157
- $sql = "SELECT m.meta_id, m.post_id, m.meta_key FROM {$wpdb->postmeta} as m LEFT JOIN {$wpdb->posts} as p ON m.post_id = p.id WHERE p.id IS NULL AND m.meta_id > %d ORDER BY m.meta_id LIMIT 1000";
1158
 
1159
  // Query loop of topic & reply IDs
1160
- while ( $spam_meta_results = $wpdb->get_results( $wpdb->prepare( $sql, $last_meta_id ) ) ) {
1161
 
1162
  // Exit loop if no spam IDs
1163
  if ( empty( $spam_meta_results ) ) {
966
  }
967
 
968
  /**
969
+ * Get the number of rows to delete in a single clean-up query.
 
970
  *
971
+ * @since 2.6.9 bbPress (r7225)
972
  *
973
+ * @param string $filter The name of the filter to run.
974
+ * @return int
975
  */
976
+ public function get_delete_limit( $filter = '' ) {
977
+
978
+ // Default filter
979
+ if ( empty( $filter ) ) {
980
+ $filter = '_bbp_akismet_delete_spam_limit';
981
+ }
982
 
983
  /**
984
+ * Determines how many rows will be deleted in each batch.
985
  *
986
+ * @param int The number of rows. Default 1000.
 
987
  */
988
+ $delete_limit = (int) apply_filters( $filter, 1000 );
989
+
990
+ // Validate and return the deletion limit
991
+ return max( 1, $delete_limit );
992
+ }
993
 
994
+ /**
995
+ * Get the interval (in days) for spam to remain in the queue.
996
+ *
997
+ * @since 2.6.9 bbPress (r7225)
998
+ *
999
+ * @param string $filter The name of the filter to run.
1000
+ * @return int
1001
+ */
1002
+ public function get_delete_interval( $filter = '' ) {
1003
+
1004
+ // Default filter
1005
+ if ( empty( $filter ) ) {
1006
+ $filter = '_bbp_akismet_delete_spam_interval';
1007
+ }
1008
 
1009
  /**
1010
  * Determines how many days a piece of spam will be left in the Spam
1011
  * queue before being deleted.
1012
  *
1013
+ * @param int The number of days. Default 15.
1014
  */
1015
+ $delete_interval = (int) apply_filters( $filter, 15 );
1016
+
1017
+ // Validate and return the deletion interval
1018
+ return max( 1, $delete_interval );
1019
+ }
1020
 
1021
+ /**
1022
+ * Deletes old spam topics & replies from the queue after 15 days
1023
+ * (determined by `_bbp_akismet_delete_spam_interval` filter)
1024
+ * since they are not useful in the long term.
1025
+ *
1026
+ * @since 2.6.7 bbPress (r7203)
1027
+ *
1028
+ * @global wpdb $wpdb
1029
+ */
1030
+ public function delete_old_spam() {
1031
+ global $wpdb;
1032
+
1033
+ // Get the deletion limit & interval
1034
+ $delete_limit = $this->get_delete_limit( '_bbp_akismet_delete_spam_limit' );
1035
+ $delete_interval = $this->get_delete_interval( '_bbp_akismet_delete_spam_interval' );
1036
 
1037
  // Setup the query
1038
  $sql = "SELECT id FROM {$wpdb->posts} WHERE post_type IN ('topic', 'reply') AND post_status = 'spam' AND DATE_SUB(NOW(), INTERVAL %d DAY) > post_date_gmt LIMIT %d";
1066
 
1067
  // Prepared as strings since id is an unsigned BIGINT, and using %
1068
  // will constrain the value to the maximum signed BIGINT.
1069
+ $format_string = implode( ', ', array_fill( 0, count( $spam_ids ), '%s' ) );
1070
 
1071
  // Run the delete queries
1072
+ $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->posts} WHERE ID IN ( {$format_string} )", $spam_ids ) );
1073
+ $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->postmeta} WHERE post_id IN ( {$format_string} )", $spam_ids ) );
1074
 
1075
  // Clean the post cache for these topics & replies
1076
  clean_post_cache( $spam_ids );
1100
  }
1101
 
1102
  /**
1103
+ * Deletes `_bbp_akismet_as_submitted` meta keys after 15 days
1104
+ * (determined by `_bbp_akismet_delete_spam_meta_interval` filter)
1105
+ * since they are large and not useful in the long term.
1106
  *
1107
  * @since 2.6.7 bbPress (r7203)
1108
  *
1111
  public function delete_old_spam_meta() {
1112
  global $wpdb;
1113
 
1114
+ // Get the deletion limit & interval
1115
+ $delete_limit = $this->get_delete_limit( '_bbp_akismet_delete_spam_meta_limit' );
1116
+ $delete_interval = $this->get_delete_interval( '_bbp_akismet_delete_spam_meta_interval' );
 
 
 
 
 
 
 
1117
 
1118
  // Setup the query
1119
+ $sql = "SELECT m.post_id FROM {$wpdb->postmeta} as m INNER JOIN {$wpdb->posts} as p ON m.post_id = p.ID WHERE m.meta_key = '_bbp_akismet_as_submitted' AND DATE_SUB(NOW(), INTERVAL %d DAY) > p.post_date_gmt LIMIT %d";
1120
 
1121
  // Query loop of topic & reply IDs
1122
+ while ( $spam_ids = $wpdb->get_col( $wpdb->prepare( $sql, $delete_interval, $delete_limit ) ) ) {
1123
 
1124
  // Exit loop if no spam IDs
1125
  if ( empty( $spam_ids ) ) {
1160
  }
1161
 
1162
  /**
1163
+ * Clears post meta that no longer has corresponding posts in the database
1164
+ * (determined by `_bbp_akismet_delete_spam_orphaned_limit` filter)
1165
+ * since it is not useful in the long term.
1166
  *
1167
  * @since 2.6.7 bbPress (r7203)
1168
  *
1171
  public function delete_orphaned_spam_meta() {
1172
  global $wpdb;
1173
 
1174
+ // Get the deletion limit
1175
+ $delete_limit = $this->get_delete_limit( '_bbp_akismet_delete_spam_orphaned_limit' );
1176
+
1177
+ // Default last meta ID
1178
  $last_meta_id = 0;
1179
 
1180
  // Start time (float)
1186
  $max_exec_time = (float) max( ini_get( 'max_execution_time' ) - 5, 3 );
1187
 
1188
  // Setup the query
1189
+ $sql = "SELECT m.meta_id, m.post_id, m.meta_key FROM {$wpdb->postmeta} as m LEFT JOIN {$wpdb->posts} as p ON m.post_id = p.ID WHERE p.ID IS NULL AND m.meta_id > %d ORDER BY m.meta_id LIMIT %d";
1190
 
1191
  // Query loop of topic & reply IDs
1192
+ while ( $spam_meta_results = $wpdb->get_results( $wpdb->prepare( $sql, $last_meta_id, $delete_limit ) ) ) {
1193
 
1194
  // Exit loop if no spam IDs
1195
  if ( empty( $spam_meta_results ) ) {
readme.txt CHANGED
@@ -2,7 +2,7 @@
2
  Contributors: matt, johnjamesjacoby, jmdodd, netweb, sergeybiryukov
3
  Tags: forum, forums, discussion, support
4
  Tested up to: 5.9
5
- Stable tag: 2.6.8
6
  License: GPLv2 or later
7
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
8
  Requires PHP: 5.6.20
2
  Contributors: matt, johnjamesjacoby, jmdodd, netweb, sergeybiryukov
3
  Tags: forum, forums, discussion, support
4
  Tested up to: 5.9
5
+ Stable tag: 2.6.9
6
  License: GPLv2 or later
7
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
8
  Requires PHP: 5.6.20