Skip to:
Content

bbPress.org

Ticket #3395: 3395.3.diff

File 3395.3.diff, 3.7 KB (added by johnjamesjacoby, 3 years ago)
  • src/includes/extend/akismet.php

     
    985985                $delete_limit = (int) apply_filters( '_bbp_akismet_delete_spam_limit',
    986986                        defined( 'AKISMET_DELETE_LIMIT' )
    987987                                ? AKISMET_DELETE_LIMIT
    988                                 : 10000
     988                                : 1000
    989989                );
    990990
    991991                // Validate the deletion limit
     
    10371037                        $format_string = implode( ", ", array_fill( 0, count( $spam_ids ), '%s' ) );
    10381038
    10391039                        // Run the delete queries
    1040                         $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->posts} WHERE post_id IN ( " . $format_string . " )", $spam_ids ) );
     1040                        $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->posts} WHERE ID IN ( " . $format_string . " )", $spam_ids ) );
    10411041                        $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->postmeta} WHERE post_id IN ( " . $format_string . " )", $spam_ids ) );
    10421042
    10431043                        // Clean the post cache for these topics & replies
     
    10791079                global $wpdb;
    10801080
    10811081                /**
     1082                 * Determines how many posts will be deleted in each batch.
     1083                 *
     1084                 * @param int The default as defined by AKISMET_DELETE_LIMIT (also used
     1085                 *            in Akismet WordPress plugin).
     1086                 */
     1087                $delete_limit = (int) apply_filters( '_bbp_akismet_delete_spam_limit',
     1088                        defined( 'AKISMET_DELETE_LIMIT' )
     1089                                ? AKISMET_DELETE_LIMIT
     1090                                : 1000
     1091                );
     1092
     1093                // Validate the deletion limit
     1094                $delete_limit = max( 1, intval( $delete_limit ) );
     1095
     1096                /**
    10821097                 * Determines how many days a piece of spam will be left in the Spam
    10831098                 * queue before being deleted.
    10841099                 *
     
    10901105                $interval = max( 1, intval( $interval ) );
    10911106
    10921107                // 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";
     1108                $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";
    10941109
    10951110                // Query loop of topic & reply IDs
    1096                 while ( $spam_ids = $wpdb->get_col( $wpdb->prepare( $sql, $interval ) ) ) {
     1111                while ( $spam_ids = $wpdb->get_col( $wpdb->prepare( $sql, $interval, $delete_limit ) ) ) {
    10971112
    10981113                        // Exit loop if no spam IDs
    10991114                        if ( empty( $spam_ids ) ) {
     
    11431158        public function delete_orphaned_spam_meta() {
    11441159                global $wpdb;
    11451160
     1161                /**
     1162                 * Determines how many posts will be deleted in each batch.
     1163                 *
     1164                 * @param int The default as defined by AKISMET_DELETE_LIMIT (also used
     1165                 *            in Akismet WordPress plugin).
     1166                 */
     1167                $delete_limit = (int) apply_filters( '_bbp_akismet_delete_spam_limit',
     1168                        defined( 'AKISMET_DELETE_LIMIT' )
     1169                                ? AKISMET_DELETE_LIMIT
     1170                                : 1000
     1171                );
     1172
     1173                // Validate the deletion limit
     1174                $delete_limit = max( 1, intval( $delete_limit ) );
     1175
    11461176                $last_meta_id = 0;
    11471177
    11481178                // Start time (float)
     
    11541184                $max_exec_time = (float) max( ini_get( 'max_execution_time' ) - 5, 3 );
    11551185
    11561186                // 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";
     1187                $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";
    11581188
    11591189                // Query loop of topic & reply IDs
    1160                 while ( $spam_meta_results = $wpdb->get_results( $wpdb->prepare( $sql, $last_meta_id ) ) ) {
     1190                while ( $spam_meta_results = $wpdb->get_results( $wpdb->prepare( $sql, $last_meta_id, $delete_limit ) ) ) {
    11611191
    11621192                        // Exit loop if no spam IDs
    11631193                        if ( empty( $spam_meta_results ) ) {