summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/jetpack/json-endpoints/class.wpcom-json-api-list-invites-endpoint.php')
-rw-r--r--plugins/jetpack/json-endpoints/class.wpcom-json-api-list-invites-endpoint.php158
1 files changed, 0 insertions, 158 deletions
diff --git a/plugins/jetpack/json-endpoints/class.wpcom-json-api-list-invites-endpoint.php b/plugins/jetpack/json-endpoints/class.wpcom-json-api-list-invites-endpoint.php
deleted file mode 100644
index 3fbed890..00000000
--- a/plugins/jetpack/json-endpoints/class.wpcom-json-api-list-invites-endpoint.php
+++ /dev/null
@@ -1,158 +0,0 @@
-<?php
-
-new WPCOM_JSON_API_List_Invites_Endpoint( array(
- 'description' => 'List the invites of a site.',
- 'group' => '__do_not_document',
- 'stat' => 'invites:list',
-
- 'method' => 'GET',
- 'path' => '/sites/%s/invites',
- 'path_labels' => array(
- '$site' => '(int|string) Site ID or domain',
- ),
-
- 'query_parameters' => array(
- 'number' => '(int=25) Limit the total number of invites to be returned.',
- 'offset' => '(int=0) The first n invites to be skipped in the returned array.',
- 'status' => array(
- 'pending' => 'Return only pending invites.',
- 'all' => 'Return all invites, pending and accepted, that have not been deleted.',
- )
- ),
-
- 'response_format' => array(
- 'found' => '(int) The total number of invites found that match the request (ignoring limits and offsets).',
- 'invites' => '(array) Array of invites.',
- ),
-
- 'example_request' => 'https://public-api.wordpress.com/rest/v1/sites/82974409/invites',
- 'example_request_data' => array(
- 'headers' => array(
- 'authorization' => 'Bearer YOUR_API_TOKEN'
- ),
- ),
-) );
-
-class WPCOM_JSON_API_List_Invites_Endpoint extends WPCOM_JSON_API_Endpoint {
- var $blog_id;
- var $is_wpcom;
-
- function callback( $path = '', $blog_id = 0 ) {
- $blog_id = $this->api->switch_to_blog_and_validate_user( $this->api->get_blog_id( $blog_id ) );
- if ( is_wp_error( $blog_id ) ) {
- return $blog_id;
- }
-
- if ( ! is_multisite() ) {
- return new WP_Error( 'forbidden', 'To query invites, site must be on a multisite installation.', 403 );
- }
-
- if ( ! current_user_can( 'promote_users' ) ) {
- return new WP_Error( 'unauthorized', 'Your token must have permission to promote users on this blog.', 401 );
- }
-
- $this->blog_id = $blog_id;
- $this->args = $this->query_args();
- $this->is_wpcom = defined( 'IS_WPCOM' ) && IS_WPCOM;
- $this->found = $this->get_found();
-
- return array(
- 'found' => $this->found,
- 'invites' => $this->get_invites(),
- );
- }
-
- /**
- * Returns the total number of invites, ignoring limits and offsets.
- * @return int
- */
- function get_found() {
- global $wpdb, $wpcom_invite_users;
-
- $total = 0;
- if ( $this->is_wpcom ) {
- $total = $wpcom_invite_users->count_blog_invitiations( $this->blog_id, null, 'pending' == $this->args['status'] );
- } else {
- $total = $invites = $wpdb->get_var(
- $wpdb->prepare(
- "SELECT count( option_id ) FROM $wpdb->options WHERE option_name LIKE %s",
- 'new_user_%'
- )
- );
- }
-
- return intval( $total );
- }
-
- /**
- * Returns the invitations for a given site.
- * @return array
- */
- function get_invites() {
- global $wpdb, $wpcom_invite_users;
-
- $invites = array();
- if ( $this->is_wpcom ) {
- $invites = $wpcom_invite_users->get_blog_invitations(
- $this->blog_id,
- null,
- array(
- 'offset' => intval( $this->args['offset'] ),
- 'per_page' => intval( $this->args['number'] ),
- 'pending_only' => ( 'pending' == $this->args['status'] ),
- )
- );
- } else {
- $invites = $wpdb->get_results(
- $wpdb->prepare(
- "SELECT * FROM $wpdb->options WHERE option_name LIKE %s ORDER BY option_id DESC LIMIT %d, %d",
- 'new_user_%',
- intval( $this->args['offset'] ),
- intval( $this->args['number'] )
- )
- );
- }
-
- return empty( $invites ) ? array() : array_map( array( $this, 'build_invite' ), $invites );
- }
-
- /**
- * Given an invite, returns an array with expected shape.
- * @param array $invite
- * @return array
- */
- function build_invite( $invite ) {
- $invite_key = $this->is_wpcom ? $invite->invite_slug : $invite->option_name;
- $invite = $this->is_wpcom ? (array) $invite : (array) unserialize( $invite->option_value );
-
- return array(
- 'invite_key' => $invite_key,
- 'role' => $this->is_wpcom ? $invite['meta']['role'] : $invite['role'],
- 'user' => $this->get_user( $invite ),
- );
- }
-
- /**
- * Given an invite, returns a user object using the get_author() method in class.json-api-endpoints.php.
- * @param array $invite
- * @return array|string
- */
- function get_user( $invite ) {
- if ( ! $this->is_wpcom ) {
- return $this->get_author( $invite['user_id'] );
- }
-
- $user = get_user_by( 'login', $invite['meta']['sent_to'] );
-
- // If a user did not exist, mock a user to pass to get_author()
- $no_user = false === $user;
- if( $no_user ) {
- $user = new stdClass();
- $user->comment_author = '';
- $user->comment_author_url = '';
- $user->comment_author_email = $invite['meta']['sent_to'];
- }
-
- return $this->get_author( $user, $no_user );
- }
-}