Making WordPress.org


Ignore:
Timestamp:
10/29/2020 12:00:33 AM (5 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.