wp_ajax_get_community_events

The timeline below displays how wordpress function wp_ajax_get_community_events has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 5.8

/**
 * Handles Ajax requests for community events
 *
 * @since 4.8.0
 */
function wp_ajax_get_community_events()
{
    require_once ABSPATH . 'wp-admin/includes/class-wp-community-events.php';
    check_ajax_referer('community_events');
    $search = isset($_POST['location']) ? wp_unslash($_POST['location']) : '';
    $timezone = isset($_POST['timezone']) ? wp_unslash($_POST['timezone']) : '';
    $user_id = get_current_user_id();
    $saved_location = get_user_option('community-events-location', $user_id);
    $events_client = new WP_Community_Events($user_id, $saved_location);
    $events = $events_client->get_events($search, $timezone);
    $ip_changed = false;
    if (is_wp_error($events)) {
        wp_send_json_error(array('error' => $events->get_error_message()));
    } else {
        if (empty($saved_location['ip']) && !empty($events['location']['ip'])) {
            $ip_changed = true;
        } elseif (isset($saved_location['ip']) && !empty($events['location']['ip']) && $saved_location['ip'] !== $events['location']['ip']) {
            $ip_changed = true;
        }
        /*
         * The location should only be updated when it changes. The API doesn't always return
         * a full location; sometimes it's missing the description or country. The location
         * that was saved during the initial request is known to be good and complete, though.
         * It should be left intact until the user explicitly changes it (either by manually
         * searching for a new location, or by changing their IP address).
         *
         * If the location was updated with an incomplete response from the API, then it could
         * break assumptions that the UI makes (e.g., that there will always be a description
         * that corresponds to a latitude/longitude location).
         *
         * The location is stored network-wide, so that the user doesn't have to set it on each site.
         */
        if ($ip_changed || $search) {
            update_user_meta($user_id, 'community-events-location', $events['location']);
        }
        wp_send_json_success($events);
    }
}

WordPress Version: 5.5

/**
 * Handles Ajax requests for community events
 *
 * @since 4.8.0
 */
function wp_ajax_get_community_events()
{
    require_once ABSPATH . 'wp-admin/includes/class-wp-community-events.php';
    check_ajax_referer('community_events');
    $search = isset($_POST['location']) ? wp_unslash($_POST['location']) : '';
    $timezone = isset($_POST['timezone']) ? wp_unslash($_POST['timezone']) : '';
    $user_id = get_current_user_id();
    $saved_location = get_user_option('community-events-location', $user_id);
    $events_client = new WP_Community_Events($user_id, $saved_location);
    $events = $events_client->get_events($search, $timezone);
    $ip_changed = false;
    if (is_wp_error($events)) {
        wp_send_json_error(array('error' => $events->get_error_message()));
    } else {
        if (empty($saved_location['ip']) && !empty($events['location']['ip'])) {
            $ip_changed = true;
        } elseif (isset($saved_location['ip']) && !empty($events['location']['ip']) && $saved_location['ip'] !== $events['location']['ip']) {
            $ip_changed = true;
        }
        /*
         * The location should only be updated when it changes. The API doesn't always return
         * a full location; sometimes it's missing the description or country. The location
         * that was saved during the initial request is known to be good and complete, though.
         * It should be left intact until the user explicitly changes it (either by manually
         * searching for a new location, or by changing their IP address).
         *
         * If the location was updated with an incomplete response from the API, then it could
         * break assumptions that the UI makes (e.g., that there will always be a description
         * that corresponds to a latitude/longitude location).
         *
         * The location is stored network-wide, so that the user doesn't have to set it on each site.
         */
        if ($ip_changed || $search) {
            update_user_option($user_id, 'community-events-location', $events['location'], true);
        }
        wp_send_json_success($events);
    }
}

WordPress Version: 5.1

/**
 * Handles AJAX requests for community events
 *
 * @since 4.8.0
 */
function wp_ajax_get_community_events()
{
    require_once ABSPATH . 'wp-admin/includes/class-wp-community-events.php';
    check_ajax_referer('community_events');
    $search = isset($_POST['location']) ? wp_unslash($_POST['location']) : '';
    $timezone = isset($_POST['timezone']) ? wp_unslash($_POST['timezone']) : '';
    $user_id = get_current_user_id();
    $saved_location = get_user_option('community-events-location', $user_id);
    $events_client = new WP_Community_Events($user_id, $saved_location);
    $events = $events_client->get_events($search, $timezone);
    $ip_changed = false;
    if (is_wp_error($events)) {
        wp_send_json_error(array('error' => $events->get_error_message()));
    } else {
        if (empty($saved_location['ip']) && !empty($events['location']['ip'])) {
            $ip_changed = true;
        } elseif (isset($saved_location['ip']) && !empty($events['location']['ip']) && $saved_location['ip'] !== $events['location']['ip']) {
            $ip_changed = true;
        }
        /*
         * The location should only be updated when it changes. The API doesn't always return
         * a full location; sometimes it's missing the description or country. The location
         * that was saved during the initial request is known to be good and complete, though.
         * It should be left intact until the user explicitly changes it (either by manually
         * searching for a new location, or by changing their IP address).
         *
         * If the location was updated with an incomplete response from the API, then it could
         * break assumptions that the UI makes (e.g., that there will always be a description
         * that corresponds to a latitude/longitude location).
         *
         * The location is stored network-wide, so that the user doesn't have to set it on each site.
         */
        if ($ip_changed || $search) {
            update_user_option($user_id, 'community-events-location', $events['location'], true);
        }
        wp_send_json_success($events);
    }
}

WordPress Version: 4.8

/**
 * Handles AJAX requests for community events
 *
 * @since 4.8.0
 */
function wp_ajax_get_community_events()
{
    require_once ABSPATH . 'wp-admin/includes/class-wp-community-events.php';
    check_ajax_referer('community_events');
    $search = isset($_POST['location']) ? wp_unslash($_POST['location']) : '';
    $timezone = isset($_POST['timezone']) ? wp_unslash($_POST['timezone']) : '';
    $user_id = get_current_user_id();
    $saved_location = get_user_option('community-events-location', $user_id);
    $events_client = new WP_Community_Events($user_id, $saved_location);
    $events = $events_client->get_events($search, $timezone);
    $ip_changed = false;
    if (is_wp_error($events)) {
        wp_send_json_error(array('error' => $events->get_error_message()));
    } else {
        if (empty($saved_location['ip']) && !empty($events['location']['ip'])) {
            $ip_changed = true;
        } elseif (isset($saved_location['ip']) && !empty($events['location']['ip']) && $saved_location['ip'] !== $events['location']['ip']) {
            $ip_changed = true;
        }
        /*
         * The location should only be updated when it changes. The API doesn't always return
         * a full location; sometimes it's missing the description or country. The location
         * that was saved during the initial request is known to be good and complete, though.
         * It should be left in tact until the user explicitly changes it (either by manually
         * searching for a new location, or by changing their IP address).
         *
         * If the location were updated with an incomplete response from the API, then it could
         * break assumptions that the UI makes (e.g., that there will always be a description
         * that corresponds to a latitude/longitude location).
         *
         * The location is stored network-wide, so that the user doesn't have to set it on each site.
         */
        if ($ip_changed || $search) {
            update_user_option($user_id, 'community-events-location', $events['location'], true);
        }
        wp_send_json_success($events);
    }
}