Making WordPress.org

Changeset 10417


Ignore:
Timestamp:
10/29/2020 12:00:33 AM (6 years ago)
Author:
coreymckrill
Message:

Official WP Events: Mark events as deleted if their group no longer exists

This handles the scenario where an event in our database is connected to a group
that no longer exists on Meetup.com, and marks the event as deleted instead of
throwing an error.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/wordpress.org/public_html/wp-content/plugins/official-wordpress-events/official-wordpress-events.php

    r10354 r10417  
    808808
    809809                $meetup_client = $this->get_meetup_client();
    810 
    811810                if ( ! empty( $meetup_client->error->errors ) ) {
    812811                        $this->log( 'Failed to instantiate meetup client: ' . wp_json_encode( $meetup_client->error ), true );
     
    814813                }
    815814
     815                $groups = $meetup_client->get_groups();
     816                if ( ! empty( $meetup_client->error->errors ) ) {
     817                        $this->log( 'Failed to fetch groups: ' . wp_json_encode( $meetup_client->error ), true );
     818                        return;
     819                }
     820                $group_urlnames = wp_list_pluck( $groups, 'urlname' );
     821
    816822                foreach ( $chunked_db_events as $group_url => $db_events ) {
    817823                        $url_name = trim( wp_parse_url( $group_url, PHP_URL_PATH ), '/' );
     824
     825                        if ( ! in_array( $url_name, $group_urlnames, true ) ) {
     826                                // The group doesn't exist anymore, mark its events as deleted.
     827                                foreach ( $db_events as $db_event ) {
     828                                        $wpdb->update( self::EVENTS_TABLE, array( 'status' => 'deleted' ), array( 'id' => $db_event->id ) );
     829
     830                                        $this->log( "Group missing. Marked {$db_event->source_id} as deleted." );
     831                                }
     832
     833                                continue;
     834                        }
    818835
    819836                        $events = $meetup_client->get_group_events(
     
    852869                                $wpdb->update( self::EVENTS_TABLE, array( 'status' => 'deleted' ), array( 'id' => $db_event->id ) );
    853870
    854                                 $this->log( "Marked {$db_event->source_id} as deleted." );
     871                                $this->log( "Event missing. Marked {$db_event->source_id} as deleted." );
    855872                        }
    856873                }
Note: See TracChangeset for help on using the changeset viewer.