WordPress.org

Making WordPress.org

Ticket #2820: 2820-0.diff

File 2820-0.diff, 4.8 KB (added by mayukojpn, 4 years ago)

FIrst patch has unrelated lines, sorry!

  • wordpress.org/public_html/wp-content/plugins/official-wordpress-events/official-wordpress-events.php

    diff --git wordpress.org/public_html/wp-content/plugins/official-wordpress-events/official-wordpress-events.php wordpress.org/public_html/wp-content/plugins/official-wordpress-events/official-wordpress-events.php
    index 412b806..955b482 100644
    Author: WordPress.org Meta Team 
    88*/
    99
    1010class Official_WordPress_Events {
    11         const EVENTS_TABLE          = 'wporg_events';
    12         const WORDCAMP_API_BASE_URL = 'https://central.wordcamp.org/wp-json/';
    13         const MEETUP_API_BASE_URL   = 'https://api.meetup.com/';
    14         const MEETUP_MEMBER_ID      = 72560962;
     11        const EVENTS_TABLE            = 'wporg_events';
     12        const WORDCAMP_API_BASE_URL   = 'https://central.wordcamp.org/wp-json/';
     13        const MEETUP_API_BASE_URL     = 'https://api.meetup.com/';
     14        const MEETUP_MEMBER_ID        = 72560962;
     15        const DOORKEEPER_API_BASE_URL = 'https://api.doorkeeper.jp/';
    1516
    1617        /*
    1718         * @todo
    class Official_WordPress_Events { 
    181182         * @return array
    182183         */
    183184        protected function fetch_upcoming_events() {
    184                 $events = array_merge( $this->get_wordcamp_events(), $this->get_meetup_events() );
     185                $events = array_merge(
     186                        $this->get_wordcamp_events(),
     187                        $this->get_meetup_events(),
     188                        $this->get_jp_doorkeeper_events()
     189                );
    185190
    186191                return $events;
    187192        }
    class Official_WordPress_Events { 
    427432
    428433                return $group_ids;
    429434        }
     435        /**
     436         * Get WordPress meetups from Doorkeeper API
     437         *
     438         * @return array
     439         */
     440        protected function get_jp_doorkeeper_events() {
     441                $utc_offset = 32400;
     442                $events     = array();
     443                $groups     = array(
     444                        '74',   // WordBench Saitama
     445                        //'2169', // WordBench Kobe
     446                        '2366', // WordBench Chiba
     447                        //'2472', // WordBench Osaka
     448                        '2504', // WordBench Tokyo
     449                        '2555', // WordBench Fukuoka
     450                        '2599', // WordBench Nara
     451                        '2969', // WordBench Wakayama
     452                        '2995', // WordBench Oita
     453                        '3032', // WordBench Kumamoto
     454                        '3129', // WordBench Nagoya
     455                        //'3709', // WordBench Kagoshima
     456                        '4074', // Tokyo WordPress Mokumoku Club
     457                        '4194', // WordBench Fukui
     458                        '4664', // Matsudo WordPress Meetup
     459                        //'6945', // WordBench Yamaguchi
     460                        '6883', // WordPress Contribute Club
     461                        '7040', // WordBench Akita
     462                        '7981', // WordBench Ogijima
     463                        '8885', // WordBench Gifu
     464                );
     465
     466                foreach ( $groups as $group_batch ) {
     467                        $request_url = sprintf(
     468                                '%sevents?group_id=%s&time=0,3m',
     469                                self::DOORKEEPER_API_BASE_URL,
     470                                $group_batch
     471                        );
     472
     473                        $this->log( 'fetching more events from: ' . var_export( $request_url, true ) );
     474
     475                        $response = $this->remote_get( $request_url );
     476                        $body     = json_decode( wp_remote_retrieve_body( $response ) );
     477
     478                        $this->log( 'pruned response - ' . print_r( $this->prune_response_for_log( $response ), true ) );
     479
     480                        if ( ! empty ( $body[0] ) ) {
     481                                $meetups = $body[0];
     482
     483                                foreach ( $meetups as $meetup ) {
     484                                        $start_timestamp = $utc_offset + strtotime( $meetup->starts_at ); // convert to seconds
     485                                        $end_timestamp   = $utc_offset + strtotime( $meetup->ends_at );   // convert to seconds
     486
     487                                        //if ( isset( $meetup->venue ) ) {
     488                                        //      $location = $this->format_meetup_venue_location( $meetup->venue );
     489                                        //} else {
     490                                                $geocoded_location = $this->reverse_geocode( $meetup->lat, $meetup->long );
     491                                                $location_parts    = $this->parse_reverse_geocode_address( $geocoded_location->address_components );
     492                                                $location          = sprintf(
     493                                                        '%s%s%s',
     494                                                        $location_parts['city'],
     495                                                        empty( $location_parts['state'] )        ? '' : ', ' . $location_parts['state'],
     496                                                        empty( $location_parts['country_name'] ) ? '' : ', ' . $location_parts['country_name']
     497                                                );
     498                                        //}
     499
     500                                        if ( ! empty( $meetup->venue->country ) ) {
     501                                                $country_code = $meetup->venue->country;
     502                                        } elseif ( ! empty( $location_parts['country_code'] ) ) {
     503                                                $country_code = $location_parts['country_code'];
     504                                        } else {
     505                                                $country_code = '';
     506                                        }
     507
     508                                        $events[] = new Official_WordPress_Event( array(
     509                                                'type'            => 'meetup',
     510                                                'source_id'       => $meetup->id,
     511                                                'title'           => $meetup->title,
     512                                                'url'             => $meetup->public_url,
     513                                                'meetup_name'     => '',
     514                                                'meetup_url'      => '',
     515                                                'description'     => $meetup->description,
     516                                                'num_attendees'   => $meetup->participants,
     517                                                'start_timestamp' => $start_timestamp,
     518                                                'end_timestamp'   => $end_timestamp,
     519                                                'location'        => $location,
     520                                                'country_code'    => $country_code,
     521                                                'latitude'        => $meetup->lat,
     522                                                'longitude'       => $meetup->long,
     523                                        ) );
     524                                }
     525                        }
     526                }
     527
     528                $this->log( sprintf( 'returning %d events', count( $events ) ) );
     529
     530                return $events;
     531        }
     532
    430533
    431534        /**
    432535         * Reverse-geocodes a set of coordinates