mirror of
https://github.com/10h30/ultimatemember.git
synced 2026-06-05 15:09:37 +09:00
- remove extract() from REST API classes;
This commit is contained in:
+119
-218
@@ -1,9 +1,9 @@
|
||||
<?php
|
||||
namespace um\core\rest;
|
||||
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) exit;
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
if ( ! class_exists( 'um\core\rest\API_v1' ) ) {
|
||||
|
||||
@@ -19,7 +19,6 @@ if ( ! class_exists( 'um\core\rest\API_v1' ) ) {
|
||||
*/
|
||||
const VERSION = '1.0';
|
||||
|
||||
|
||||
/**
|
||||
* REST_API constructor.
|
||||
*/
|
||||
@@ -29,7 +28,6 @@ if ( ! class_exists( 'um\core\rest\API_v1' ) ) {
|
||||
add_filter( 'query_vars', array( $this, 'query_vars' ) );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Registers query vars for API access
|
||||
*
|
||||
@@ -59,7 +57,6 @@ if ( ! class_exists( 'um\core\rest\API_v1' ) ) {
|
||||
return $vars;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Validate the API request
|
||||
*/
|
||||
@@ -89,11 +86,9 @@ if ( ! class_exists( 'um\core\rest\API_v1' ) ) {
|
||||
$this->invalid_auth();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retrieve the user ID based on the public key provided
|
||||
*
|
||||
@@ -116,10 +111,10 @@ if ( ! class_exists( 'um\core\rest\API_v1' ) ) {
|
||||
|
||||
if ( false === $user ) {
|
||||
$user = $wpdb->get_var( $wpdb->prepare(
|
||||
"SELECT user_id
|
||||
FROM $wpdb->usermeta
|
||||
WHERE meta_key = 'um_user_public_key' AND
|
||||
meta_value = %s
|
||||
"SELECT user_id
|
||||
FROM $wpdb->usermeta
|
||||
WHERE meta_key = 'um_user_public_key' AND
|
||||
meta_value = %s
|
||||
LIMIT 1",
|
||||
$key
|
||||
) );
|
||||
@@ -134,106 +129,82 @@ if ( ! class_exists( 'um\core\rest\API_v1' ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Process Get users API Request
|
||||
* Process Get users API Request.
|
||||
*
|
||||
* @param $args
|
||||
* @param array $args
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function get_users( $args ) {
|
||||
/**
|
||||
* @var int $number
|
||||
* @var string $orderby
|
||||
* @var string $order
|
||||
* @var string $include
|
||||
* @var string $exclude
|
||||
*/
|
||||
extract( $args );
|
||||
|
||||
$response = array();
|
||||
|
||||
if ( ! $number ) {
|
||||
$number = 10;
|
||||
}
|
||||
$number = array_key_exists( 'number', $args ) && is_numeric( $args['number'] ) ? absint( $args['number'] ) : 10;
|
||||
$orderby = array_key_exists( 'orderby', $args ) ? sanitize_key( $args['orderby'] ) : 'user_registered';
|
||||
$order = array_key_exists( 'order', $args ) ? sanitize_key( $args['order'] ) : 'desc';
|
||||
|
||||
if ( ! $orderby ) {
|
||||
$orderby = 'user_registered';
|
||||
}
|
||||
$loop_a = array(
|
||||
'number' => $number,
|
||||
'orderby' => $orderby,
|
||||
'order' => $order,
|
||||
);
|
||||
|
||||
if ( ! $order ) {
|
||||
$order = 'desc';
|
||||
}
|
||||
|
||||
$loop_a = array( 'number' => $number, 'orderby' => $orderby, 'order' => $order );
|
||||
|
||||
if ( $include ) {
|
||||
$include = explode(',', $include );
|
||||
if ( array_key_exists( 'include', $args ) ) {
|
||||
$include = explode( ',', sanitize_text_field( $args['include'] ) );
|
||||
$loop_a['include'] = $include;
|
||||
}
|
||||
|
||||
if ( $exclude ) {
|
||||
$exclude = explode(',', $exclude );
|
||||
if ( array_key_exists( 'exclude', $args ) ) {
|
||||
$exclude = explode( ',', sanitize_text_field( $args['exclude'] ) );
|
||||
$loop_a['exclude'] = $exclude;
|
||||
}
|
||||
|
||||
$loop = get_users( $loop_a );
|
||||
|
||||
foreach ( $loop as $user ) {
|
||||
|
||||
unset( $user->data->user_status );
|
||||
unset( $user->data->user_activation_key );
|
||||
unset( $user->data->user_pass );
|
||||
unset( $user->data->user_status, $user->data->user_activation_key, $user->data->user_pass );
|
||||
|
||||
um_fetch_user( $user->ID );
|
||||
|
||||
foreach ( $user as $key => $val ) {
|
||||
if ( $key != 'data' ) {
|
||||
if ( 'data' !== $key ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$key = 'profile';
|
||||
$val->roles = $user->roles;
|
||||
$val->first_name = um_user('first_name');
|
||||
$val->last_name = um_user('last_name');
|
||||
$val->account_status = um_user('account_status');
|
||||
$val->profile_pic_original = um_get_user_avatar_url('', 'original');
|
||||
$val->profile_pic_normal = um_get_user_avatar_url('', 200);
|
||||
$val->profile_pic_small = um_get_user_avatar_url('', 40);
|
||||
$val->cover_photo = $this->getsrc( um_user('cover_photo', 1000) );
|
||||
$val->roles = $user->roles;
|
||||
$val->first_name = um_user( 'first_name' );
|
||||
$val->last_name = um_user( 'last_name' );
|
||||
$val->account_status = um_user( 'account_status' );
|
||||
$val->profile_pic_original = um_get_user_avatar_url( '', 'original' );
|
||||
$val->profile_pic_normal = um_get_user_avatar_url( '', 200 );
|
||||
$val->profile_pic_small = um_get_user_avatar_url( '', 40 );
|
||||
$val->cover_photo = $this->getsrc( um_user( 'cover_photo', 1000 ) );
|
||||
|
||||
/**
|
||||
* UM hook
|
||||
* Filters the output data for Rest API userdata call.
|
||||
*
|
||||
* @type filter
|
||||
* @title um_rest_userdata
|
||||
* @description Change output data for Rest API userdata call
|
||||
* @input_vars
|
||||
* [{"var":"$value","type":"array","desc":"Output Data"},
|
||||
* {"var":"$user_id","type":"string","desc":"User ID"}]
|
||||
* @change_log
|
||||
* ["Since: 2.0"]
|
||||
* @usage
|
||||
* <?php add_filter( 'um_rest_userdata', 'function_name', 10, 2 ); ?>
|
||||
* @example
|
||||
* <?php
|
||||
* add_filter( 'um_rest_userdata', 'my_rest_userdata', 10, 2 );
|
||||
* function my_rest_userdata( $value, $user_id ) {
|
||||
* @param {mixed} $val User data value.
|
||||
* @param {int} $user_id User ID.
|
||||
*
|
||||
* @return {mixed} User data value.
|
||||
*
|
||||
* @since 2.0
|
||||
* @hook um_rest_userdata
|
||||
*
|
||||
* @example <caption>Force change the output data for Rest API userdata call.</caption>
|
||||
* function my_custom_um_rest_userdata( $value, $user_id ) {
|
||||
* // your code here
|
||||
* return $value;
|
||||
* return $response;
|
||||
* }
|
||||
* ?>
|
||||
* add_filter( 'um_rest_userdata', 'my_custom_um_rest_userdata', 10, 2 );
|
||||
*/
|
||||
$val = apply_filters( 'um_rest_userdata', $val, $user->ID );
|
||||
$response[ $user->ID ] = $val;
|
||||
$response[ $user->ID ] = apply_filters( 'um_rest_userdata', $val, $user->ID );
|
||||
}
|
||||
}
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Update user API query
|
||||
*
|
||||
@@ -242,26 +213,28 @@ if ( ! class_exists( 'um\core\rest\API_v1' ) ) {
|
||||
* @return array
|
||||
*/
|
||||
public function update_user( $args ) {
|
||||
/**
|
||||
* @var int $id
|
||||
* @var string $data
|
||||
* @var string $value
|
||||
*/
|
||||
extract( $args );
|
||||
|
||||
$response = array();
|
||||
$error = array();
|
||||
$error = array();
|
||||
|
||||
if ( ! $id ) {
|
||||
if ( empty( $args['id'] ) ) {
|
||||
$error['error'] = __( 'You must provide a user ID', 'ultimate-member' );
|
||||
return $error;
|
||||
}
|
||||
|
||||
if ( ! $data ) {
|
||||
if ( empty( $args['data'] ) ) {
|
||||
$error['error'] = __( 'You need to provide data to update', 'ultimate-member' );
|
||||
return $error;
|
||||
}
|
||||
|
||||
if ( ! array_key_exists( 'value', $args ) ) {
|
||||
$error['error'] = __( 'You need to provide value to update', 'ultimate-member' );
|
||||
return $error;
|
||||
}
|
||||
|
||||
$id = absint( $args['id'] );
|
||||
$data = sanitize_text_field( $args['data'] );
|
||||
$value = sanitize_text_field( $args['value'] );
|
||||
|
||||
um_fetch_user( $id );
|
||||
|
||||
switch ( $data ) {
|
||||
@@ -271,35 +244,16 @@ if ( ! class_exists( 'um\core\rest\API_v1' ) ) {
|
||||
break;
|
||||
case 'role':
|
||||
$wp_user_object = new \WP_User( $id );
|
||||
$old_roles = $wp_user_object->roles;
|
||||
$old_roles = $wp_user_object->roles;
|
||||
$wp_user_object->set_role( $value );
|
||||
|
||||
/**
|
||||
* UM hook
|
||||
*
|
||||
* @type action
|
||||
* @title um_after_member_role_upgrade
|
||||
* @description Action after user role was changed
|
||||
* @input_vars
|
||||
* [{"var":"$new_roles","type":"array","desc":"New User Roles"},
|
||||
* {"var":"$old_roles","type":"array","desc":"Old roles"}]
|
||||
* @change_log
|
||||
* ["Since: 2.0"]
|
||||
* @usage add_action( 'um_after_member_role_upgrade', 'function_name', 10, 2 );
|
||||
* @example
|
||||
* <?php
|
||||
* add_action( 'um_after_member_role_upgrade', 'my_after_member_role_upgrade', 10, 2 );
|
||||
* function my_after_member_role_upgrade( $new_roles, $old_roles ) {
|
||||
* // your code here
|
||||
* }
|
||||
* ?>
|
||||
*/
|
||||
/** This action is documented in includes/core/class-user.php */
|
||||
do_action( 'um_after_member_role_upgrade', array( $value ), $old_roles, $id );
|
||||
|
||||
$response['success'] = __( 'User role has been changed.', 'ultimate-member' );
|
||||
break;
|
||||
default:
|
||||
update_user_meta( $id, $data, esc_attr( $value ) );
|
||||
update_user_meta( $id, $data, $value );
|
||||
$response['success'] = __( 'User meta has been changed.', 'ultimate-member' );
|
||||
break;
|
||||
}
|
||||
@@ -307,7 +261,6 @@ if ( ! class_exists( 'um\core\rest\API_v1' ) ) {
|
||||
return $response;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Process delete user via API
|
||||
*
|
||||
@@ -316,19 +269,16 @@ if ( ! class_exists( 'um\core\rest\API_v1' ) ) {
|
||||
* @return array
|
||||
*/
|
||||
public function delete_user( $args ) {
|
||||
/**
|
||||
* @var int $id
|
||||
*/
|
||||
extract( $args );
|
||||
|
||||
$response = array();
|
||||
$error = array();
|
||||
$error = array();
|
||||
|
||||
if ( ! isset( $id ) ) {
|
||||
if ( empty( $args['id'] ) ) {
|
||||
$error['error'] = __( 'You must provide a user ID', 'ultimate-member' );
|
||||
return $error;
|
||||
}
|
||||
|
||||
$id = absint( $args['id'] );
|
||||
|
||||
$user = get_userdata( $id );
|
||||
if ( ! $user ) {
|
||||
$error['error'] = __( 'Invalid user specified', 'ultimate-member' );
|
||||
@@ -343,7 +293,6 @@ if ( ! class_exists( 'um\core\rest\API_v1' ) ) {
|
||||
return $response;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Process Get user API Request
|
||||
*
|
||||
@@ -352,145 +301,101 @@ if ( ! class_exists( 'um\core\rest\API_v1' ) ) {
|
||||
* @return array|mixed
|
||||
*/
|
||||
public function get_auser( $args ) {
|
||||
/**
|
||||
* @var int $um_id
|
||||
* @var string $um_fields
|
||||
*/
|
||||
extract( $args );
|
||||
|
||||
$response = array();
|
||||
$error = array();
|
||||
$error = array();
|
||||
|
||||
if ( ! isset( $id ) ) {
|
||||
$error['error'] = __('You must provide a user ID','ultimate-member');
|
||||
if ( empty( $args['id'] ) ) {
|
||||
$error['error'] = __( 'You must provide a user ID', 'ultimate-member' );
|
||||
return $error;
|
||||
}
|
||||
|
||||
$id = absint( $args['id'] );
|
||||
$user = get_userdata( $id );
|
||||
if ( ! $user ) {
|
||||
$error['error'] = __('Invalid user specified','ultimate-member');
|
||||
$error['error'] = __( 'Invalid user specified', 'ultimate-member' );
|
||||
return $error;
|
||||
}
|
||||
|
||||
unset( $user->data->user_status );
|
||||
unset( $user->data->user_activation_key );
|
||||
unset( $user->data->user_pass );
|
||||
unset( $user->data->user_status, $user->data->user_activation_key, $user->data->user_pass );
|
||||
|
||||
um_fetch_user( $user->ID );
|
||||
|
||||
if ( isset( $fields ) && $fields ) {
|
||||
$fields = explode(',', $fields );
|
||||
$response['ID'] = $user->ID;
|
||||
if ( array_key_exists( 'fields', $args ) ) {
|
||||
$fields = explode( ',', sanitize_text_field( $args['fields'] ) );
|
||||
$response['ID'] = $user->ID;
|
||||
$response['username'] = $user->user_login;
|
||||
foreach ( $fields as $field ) {
|
||||
|
||||
switch ( $field ) {
|
||||
|
||||
default:
|
||||
$response[ $field ] = ( um_profile( $field ) ) ? um_profile( $field ) : '';
|
||||
$profile_data = um_profile( $field );
|
||||
$response[ $field ] = $profile_data ? $profile_data : '';
|
||||
|
||||
/**
|
||||
* UM hook
|
||||
* Filters the output data for Rest API user authentication call.
|
||||
*
|
||||
* @type filter
|
||||
* @title um_rest_get_auser
|
||||
* @description Change output data for Rest API user authentification call
|
||||
* @input_vars
|
||||
* [{"var":"$response","type":"array","desc":"Output Data"},
|
||||
* {"var":"$field","type":"string","desc":"Field Key"},
|
||||
* {"var":"$user_id","type":"int","desc":"User ID"}]
|
||||
* @change_log
|
||||
* ["Since: 2.0"]
|
||||
* @usage
|
||||
* <?php add_filter( 'um_rest_get_auser', 'function_name', 10, 3 ); ?>
|
||||
* @example
|
||||
* <?php
|
||||
* add_filter( 'um_rest_get_auser', 'my_rest_get_auser', 10, 3 );
|
||||
* function my_rest_get_auser( $response, $field, $user_id ) {
|
||||
* @param {array} $response REST API response.
|
||||
* @param {string} $field Field Options.
|
||||
* @param {int} $user_id User ID.
|
||||
*
|
||||
* @return {array} REST API response.
|
||||
*
|
||||
* @since 2.0
|
||||
* @hook um_rest_get_auser
|
||||
*
|
||||
* @example <caption>Force change the output data for Rest API user authentication call.</caption>
|
||||
* function my_custom_um_rest_get_auser( $response, $field, $user_id ) {
|
||||
* // your code here
|
||||
* return $response;
|
||||
* }
|
||||
* ?>
|
||||
* add_filter( 'um_rest_get_auser', 'my_custom_um_rest_get_auser', 10, 3 );
|
||||
*/
|
||||
$response = apply_filters( 'um_rest_get_auser', $response, $field, $user->ID );
|
||||
break;
|
||||
|
||||
case 'cover_photo':
|
||||
$response['cover_photo'] = $this->getsrc( um_user('cover_photo', 1000) );
|
||||
$response['cover_photo'] = $this->getsrc( um_user( 'cover_photo', 1000 ) );
|
||||
break;
|
||||
|
||||
case 'profile_pic':
|
||||
$response['profile_pic_original'] = um_get_user_avatar_url('', 'original');
|
||||
$response['profile_pic_normal'] = um_get_user_avatar_url('', 200);
|
||||
$response['profile_pic_small'] = um_get_user_avatar_url('', 40);
|
||||
$response['profile_pic_original'] = um_get_user_avatar_url( '', 'original' );
|
||||
$response['profile_pic_normal'] = um_get_user_avatar_url( '', 200 );
|
||||
$response['profile_pic_small'] = um_get_user_avatar_url( '', 40 );
|
||||
break;
|
||||
|
||||
case 'status':
|
||||
$response['status'] = um_user('account_status');
|
||||
$response['status'] = um_user( 'account_status' );
|
||||
break;
|
||||
|
||||
case 'role':
|
||||
//get priority role here
|
||||
$response['role'] = um_user( 'role' );
|
||||
break;
|
||||
|
||||
case 'email':
|
||||
case 'user_email':
|
||||
$response['email'] = um_user('user_email');
|
||||
$response['email'] = um_user( 'user_email' );
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
} else {
|
||||
|
||||
foreach ( $user as $key => $val ) {
|
||||
if ( $key != 'data' ) {
|
||||
if ( 'data' !== $key ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$key = 'profile';
|
||||
$val->roles = $user->roles;
|
||||
$val->first_name = um_user( 'first_name' );
|
||||
$val->last_name = um_user('last_name' );
|
||||
$val->account_status = um_user( 'account_status' );
|
||||
$val->roles = $user->roles;
|
||||
$val->first_name = um_user( 'first_name' );
|
||||
$val->last_name = um_user( 'last_name' );
|
||||
$val->account_status = um_user( 'account_status' );
|
||||
$val->profile_pic_original = um_get_user_avatar_url( '', 'original' );
|
||||
$val->profile_pic_normal = um_get_user_avatar_url( '', 200 );
|
||||
$val->profile_pic_small = um_get_user_avatar_url( '', 40 );
|
||||
$val->cover_photo = $this->getsrc( um_user( 'cover_photo', 1000 ) );
|
||||
$val->profile_pic_normal = um_get_user_avatar_url( '', 200 );
|
||||
$val->profile_pic_small = um_get_user_avatar_url( '', 40 );
|
||||
$val->cover_photo = $this->getsrc( um_user( 'cover_photo', 1000 ) );
|
||||
|
||||
/**
|
||||
* UM hook
|
||||
*
|
||||
* @type filter
|
||||
* @title um_rest_userdata
|
||||
* @description Change output data for Rest API userdata call
|
||||
* @input_vars
|
||||
* [{"var":"$value","type":"array","desc":"Output Data"},
|
||||
* {"var":"$user_id","type":"string","desc":"User ID"}]
|
||||
* @change_log
|
||||
* ["Since: 2.0"]
|
||||
* @usage
|
||||
* <?php add_filter( 'um_rest_userdata', 'function_name', 10, 2 ); ?>
|
||||
* @example
|
||||
* <?php
|
||||
* add_filter( 'um_rest_userdata', 'my_rest_userdata', 10, 2 );
|
||||
* function my_rest_userdata( $value, $user_id ) {
|
||||
* // your code here
|
||||
* return $value;
|
||||
* }
|
||||
* ?>
|
||||
*/
|
||||
$val = apply_filters( 'um_rest_userdata', $val, $user->ID );
|
||||
$response = $val;
|
||||
/** This filter is documented in includes/core/rest/class-api-v1.php */
|
||||
$response = apply_filters( 'um_rest_userdata', $val, $user->ID );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get source
|
||||
*
|
||||
@@ -499,13 +404,12 @@ if ( ! class_exists( 'um\core\rest\API_v1' ) ) {
|
||||
* @return string
|
||||
*/
|
||||
public function getsrc( $image ) {
|
||||
if (preg_match('/<img.+?src(?: )*=(?: )*[\'"](.*?)[\'"]/si', $image, $arrResult)) {
|
||||
return $arrResult[1];
|
||||
if ( preg_match( '/<img.+?src(?: )*=(?: )*[\'"](.*?)[\'"]/si', $image, $arr_result ) ) {
|
||||
return $arr_result[1];
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retrieve the output format
|
||||
*/
|
||||
@@ -515,27 +419,24 @@ if ( ! class_exists( 'um\core\rest\API_v1' ) ) {
|
||||
$format = isset( $wp_query->query_vars['format'] ) ? $wp_query->query_vars['format'] : 'json';
|
||||
|
||||
/**
|
||||
* UM hook
|
||||
* Filters the REST API output format. JSON by default.
|
||||
*
|
||||
* @type filter
|
||||
* @title um_api_output_format
|
||||
* @description UM Rest API output format
|
||||
* @input_vars
|
||||
* [{"var":"$format","type":"string","desc":"Format"}]
|
||||
* @change_log
|
||||
* ["Since: 2.0"]
|
||||
* @usage
|
||||
* <?php add_filter( 'um_api_output_format', 'function_name', 10, 1 ); ?>
|
||||
* @example
|
||||
* <?php
|
||||
* add_filter( 'um_api_output_format', 'my_api_output_format', 10, 1 );
|
||||
* function my_api_output_format( $format ) {
|
||||
* @param {string} $format REST API output format.
|
||||
*
|
||||
* @return {string} REST API output format.
|
||||
*
|
||||
* @since 1.3.x
|
||||
* @hook um_api_output_format
|
||||
*
|
||||
* @example <caption>Changing the REST API output format.</caption>
|
||||
* function my_custom_um_api_output_format( $format ) {
|
||||
* // your code here
|
||||
* $format = 'xml';
|
||||
* return $format;
|
||||
* }
|
||||
* ?>
|
||||
* add_filter( 'um_api_output_format', 'my_custom_um_api_output_format' );
|
||||
*/
|
||||
return apply_filters( 'um_api_output_format', $format );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
<?php
|
||||
namespace um\core\rest;
|
||||
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) exit;
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
if ( ! class_exists( 'um\core\rest\API_v2' ) ) {
|
||||
|
||||
|
||||
/**
|
||||
* Class API_v2
|
||||
* @package um\core\rest
|
||||
@@ -19,7 +18,6 @@ if ( ! class_exists( 'um\core\rest\API_v2' ) ) {
|
||||
*/
|
||||
const VERSION = '2.0';
|
||||
|
||||
|
||||
/**
|
||||
* REST_API constructor.
|
||||
*/
|
||||
@@ -29,7 +27,6 @@ if ( ! class_exists( 'um\core\rest\API_v2' ) ) {
|
||||
add_filter( 'query_vars', array( $this, 'query_vars' ) );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Registers query vars for API access
|
||||
*
|
||||
@@ -59,7 +56,6 @@ if ( ! class_exists( 'um\core\rest\API_v2' ) ) {
|
||||
return $vars;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Validate the API request
|
||||
*/
|
||||
@@ -92,7 +88,6 @@ if ( ! class_exists( 'um\core\rest\API_v2' ) ) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retrieve the user ID based on the public key provided
|
||||
*
|
||||
@@ -115,10 +110,10 @@ if ( ! class_exists( 'um\core\rest\API_v2' ) ) {
|
||||
|
||||
if ( false === $user ) {
|
||||
$user = $wpdb->get_var( $wpdb->prepare(
|
||||
"SELECT user_id
|
||||
FROM $wpdb->usermeta
|
||||
WHERE meta_key = 'um_user_public_key' AND
|
||||
meta_value = %s
|
||||
"SELECT user_id
|
||||
FROM $wpdb->usermeta
|
||||
WHERE meta_key = 'um_user_public_key' AND
|
||||
meta_value = %s
|
||||
LIMIT 1",
|
||||
$key
|
||||
) );
|
||||
@@ -133,107 +128,65 @@ if ( ! class_exists( 'um\core\rest\API_v2' ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Process Get users API Request
|
||||
*
|
||||
* @param $args
|
||||
* @param array $args
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function get_users( $args ) {
|
||||
/**
|
||||
* @var int $um_number
|
||||
* @var string $um_orderby
|
||||
* @var string $um_order
|
||||
* @var string $um_include
|
||||
* @var string $um_exclude
|
||||
*/
|
||||
extract( $args );
|
||||
|
||||
$response = array();
|
||||
|
||||
if ( ! $um_number ) {
|
||||
$um_number = 10;
|
||||
$number = array_key_exists( 'um_number', $args ) && is_numeric( $args['um_number'] ) ? absint( $args['um_number'] ) : 10;
|
||||
$orderby = array_key_exists( 'um_orderby', $args ) ? sanitize_key( $args['um_orderby'] ) : 'user_registered';
|
||||
$order = array_key_exists( 'um_order', $args ) ? sanitize_key( $args['um_order'] ) : 'desc';
|
||||
|
||||
$loop_a = array(
|
||||
'number' => $number,
|
||||
'orderby' => $orderby,
|
||||
'order' => $order,
|
||||
);
|
||||
|
||||
if ( array_key_exists( 'um_include', $args ) ) {
|
||||
$include = explode( ',', sanitize_text_field( $args['um_include'] ) );
|
||||
$loop_a['include'] = $include;
|
||||
}
|
||||
|
||||
if ( ! $um_orderby ) {
|
||||
$um_orderby = 'user_registered';
|
||||
}
|
||||
|
||||
if ( ! $um_order ) {
|
||||
$um_order = 'desc';
|
||||
}
|
||||
|
||||
$loop_a = array( 'number' => $um_number, 'orderby' => $um_orderby, 'order' => $um_order );
|
||||
|
||||
if ( $um_include ) {
|
||||
$um_include = explode(',', $um_include );
|
||||
$loop_a['include'] = $um_include;
|
||||
}
|
||||
|
||||
if ( $um_exclude ) {
|
||||
$um_exclude = explode(',', $um_exclude );
|
||||
$loop_a['exclude'] = $um_exclude;
|
||||
if ( array_key_exists( 'um_exclude', $args ) ) {
|
||||
$exclude = explode( ',', sanitize_text_field( $args['um_exclude'] ) );
|
||||
$loop_a['exclude'] = $exclude;
|
||||
}
|
||||
|
||||
$loop = get_users( $loop_a );
|
||||
|
||||
foreach ( $loop as $user ) {
|
||||
|
||||
unset( $user->data->user_status );
|
||||
unset( $user->data->user_activation_key );
|
||||
unset( $user->data->user_pass );
|
||||
unset( $user->data->user_status, $user->data->user_activation_key, $user->data->user_pass );
|
||||
|
||||
um_fetch_user( $user->ID );
|
||||
|
||||
foreach ( $user as $key => $val ) {
|
||||
if ( $key != 'data' ) {
|
||||
if ( 'data' !== $key ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$key = 'profile';
|
||||
$val->roles = $user->roles;
|
||||
$val->first_name = um_user( 'first_name' );
|
||||
$val->last_name = um_user( 'last_name' );
|
||||
$val->account_status = um_user( 'account_status' );
|
||||
$val->roles = $user->roles;
|
||||
$val->first_name = um_user( 'first_name' );
|
||||
$val->last_name = um_user( 'last_name' );
|
||||
$val->account_status = um_user( 'account_status' );
|
||||
$val->profile_pic_original = um_get_user_avatar_url( '', 'original' );
|
||||
$val->profile_pic_normal = um_get_user_avatar_url( '', 200 );
|
||||
$val->profile_pic_small = um_get_user_avatar_url( '', 40 );
|
||||
$val->cover_photo = $this->getsrc( um_user( 'cover_photo', 1000 ) );
|
||||
$val->profile_pic_normal = um_get_user_avatar_url( '', 200 );
|
||||
$val->profile_pic_small = um_get_user_avatar_url( '', 40 );
|
||||
$val->cover_photo = $this->getsrc( um_user( 'cover_photo', 1000 ) );
|
||||
|
||||
/**
|
||||
* UM hook
|
||||
*
|
||||
* @type filter
|
||||
* @title um_rest_userdata
|
||||
* @description Change output data for Rest API userdata call
|
||||
* @input_vars
|
||||
* [{"var":"$value","type":"array","desc":"Output Data"},
|
||||
* {"var":"$user_id","type":"string","desc":"User ID"}]
|
||||
* @change_log
|
||||
* ["Since: 2.0"]
|
||||
* @usage
|
||||
* <?php add_filter( 'um_rest_userdata', 'function_name', 10, 2 ); ?>
|
||||
* @example
|
||||
* <?php
|
||||
* add_filter( 'um_rest_userdata', 'my_rest_userdata', 10, 2 );
|
||||
* function my_rest_userdata( $value, $user_id ) {
|
||||
* // your code here
|
||||
* return $value;
|
||||
* }
|
||||
* ?>
|
||||
*/
|
||||
$val = apply_filters( 'um_rest_userdata', $val, $user->ID );
|
||||
|
||||
$response[ $user->ID ] = $val;
|
||||
/** This filter is documented in includes/core/rest/class-api-v1.php */
|
||||
$response[ $user->ID ] = apply_filters( 'um_rest_userdata', $val, $user->ID );
|
||||
}
|
||||
}
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Update user API query
|
||||
*
|
||||
@@ -242,64 +195,47 @@ if ( ! class_exists( 'um\core\rest\API_v2' ) ) {
|
||||
* @return array
|
||||
*/
|
||||
public function update_user( $args ) {
|
||||
/**
|
||||
* @var int $um_id
|
||||
* @var string $um_data
|
||||
* @var string $um_value
|
||||
*/
|
||||
extract( $args );
|
||||
|
||||
$response = array();
|
||||
$error = array();
|
||||
$error = array();
|
||||
|
||||
if ( ! $um_id ) {
|
||||
if ( empty( $args['um_id'] ) ) {
|
||||
$error['error'] = __( 'You must provide a user ID', 'ultimate-member' );
|
||||
return $error;
|
||||
}
|
||||
|
||||
if ( ! $um_data ) {
|
||||
if ( empty( $args['um_data'] ) ) {
|
||||
$error['error'] = __( 'You need to provide data to update', 'ultimate-member' );
|
||||
return $error;
|
||||
}
|
||||
|
||||
um_fetch_user( $um_id );
|
||||
if ( ! array_key_exists( 'um_value', $args ) ) {
|
||||
$error['error'] = __( 'You need to provide value to update', 'ultimate-member' );
|
||||
return $error;
|
||||
}
|
||||
|
||||
switch ( $um_data ) {
|
||||
$id = absint( $args['um_id'] );
|
||||
$data = sanitize_text_field( $args['um_data'] );
|
||||
$value = sanitize_text_field( $args['um_value'] );
|
||||
|
||||
um_fetch_user( $id );
|
||||
|
||||
switch ( $data ) {
|
||||
case 'status':
|
||||
UM()->user()->set_status( $um_value );
|
||||
UM()->user()->set_status( $value );
|
||||
$response['success'] = __( 'User status has been changed.', 'ultimate-member' );
|
||||
break;
|
||||
case 'role':
|
||||
$wp_user_object = new \WP_User( $um_id );
|
||||
$old_roles = $wp_user_object->roles;
|
||||
$wp_user_object->set_role( $um_value );
|
||||
$wp_user_object = new \WP_User( $id );
|
||||
$old_roles = $wp_user_object->roles;
|
||||
$wp_user_object->set_role( $value );
|
||||
|
||||
/**
|
||||
* UM hook
|
||||
*
|
||||
* @type action
|
||||
* @title um_after_member_role_upgrade
|
||||
* @description Action after user role was changed
|
||||
* @input_vars
|
||||
* [{"var":"$new_roles","type":"array","desc":"New User Roles"},
|
||||
* {"var":"$old_roles","type":"array","desc":"Old roles"}]
|
||||
* @change_log
|
||||
* ["Since: 2.0"]
|
||||
* @usage add_action( 'um_after_member_role_upgrade', 'function_name', 10, 2 );
|
||||
* @example
|
||||
* <?php
|
||||
* add_action( 'um_after_member_role_upgrade', 'my_after_member_role_upgrade', 10, 2 );
|
||||
* function my_after_member_role_upgrade( $new_roles, $old_roles ) {
|
||||
* // your code here
|
||||
* }
|
||||
* ?>
|
||||
*/
|
||||
do_action( 'um_after_member_role_upgrade', array( $um_value ), $old_roles, $um_id );
|
||||
/** This action is documented in includes/core/class-user.php */
|
||||
do_action( 'um_after_member_role_upgrade', array( $value ), $old_roles, $id );
|
||||
|
||||
$response['success'] = __( 'User role has been changed.', 'ultimate-member' );
|
||||
break;
|
||||
default:
|
||||
update_user_meta( $um_id, $um_data, esc_attr( $um_value ) );
|
||||
update_user_meta( $id, $data, $value );
|
||||
$response['success'] = __( 'User meta has been changed.', 'ultimate-member' );
|
||||
break;
|
||||
}
|
||||
@@ -307,35 +243,31 @@ if ( ! class_exists( 'um\core\rest\API_v2' ) ) {
|
||||
return $response;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Process delete user via API
|
||||
* Process delete user via API.
|
||||
*
|
||||
* @param $args
|
||||
* @param array $args
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function delete_user( $args ) {
|
||||
/**
|
||||
* @var int $um_id
|
||||
*/
|
||||
extract( $args );
|
||||
|
||||
$response = array();
|
||||
$error = array();
|
||||
$error = array();
|
||||
|
||||
if ( ! isset( $um_id ) ) {
|
||||
if ( empty( $args['um_id'] ) ) {
|
||||
$error['error'] = __( 'You must provide a user ID', 'ultimate-member' );
|
||||
return $error;
|
||||
}
|
||||
|
||||
$user = get_userdata( $um_id );
|
||||
$id = absint( $args['um_id'] );
|
||||
|
||||
$user = get_userdata( $id );
|
||||
if ( ! $user ) {
|
||||
$error['error'] = __( 'Invalid user specified', 'ultimate-member' );
|
||||
return $error;
|
||||
}
|
||||
|
||||
um_fetch_user( $um_id );
|
||||
um_fetch_user( $id );
|
||||
UM()->user()->delete();
|
||||
|
||||
$response['success'] = __( 'User has been successfully deleted.', 'ultimate-member' );
|
||||
@@ -343,7 +275,6 @@ if ( ! class_exists( 'um\core\rest\API_v2' ) ) {
|
||||
return $response;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Process Get user API Request
|
||||
*
|
||||
@@ -352,88 +283,54 @@ if ( ! class_exists( 'um\core\rest\API_v2' ) ) {
|
||||
* @return array
|
||||
*/
|
||||
public function get_auser( $args ) {
|
||||
/**
|
||||
* @var int $um_id
|
||||
* @var string $um_fields
|
||||
*/
|
||||
extract( $args );
|
||||
|
||||
$response = array();
|
||||
$error = array();
|
||||
$error = array();
|
||||
|
||||
if ( ! isset( $um_id ) ) {
|
||||
if ( empty( $args['um_id'] ) ) {
|
||||
$error['error'] = __( 'You must provide a user ID', 'ultimate-member' );
|
||||
return $error;
|
||||
}
|
||||
|
||||
$user = get_userdata( $um_id );
|
||||
$id = absint( $args['um_id'] );
|
||||
$user = get_userdata( $id );
|
||||
if ( ! $user ) {
|
||||
$error['error'] = __('Invalid user specified','ultimate-member');
|
||||
$error['error'] = __( 'Invalid user specified', 'ultimate-member' );
|
||||
return $error;
|
||||
}
|
||||
|
||||
unset( $user->data->user_status );
|
||||
unset( $user->data->user_activation_key );
|
||||
unset( $user->data->user_pass );
|
||||
unset( $user->data->user_status, $user->data->user_activation_key, $user->data->user_pass );
|
||||
|
||||
um_fetch_user( $user->ID );
|
||||
|
||||
if ( isset( $um_fields ) && $um_fields ) {
|
||||
$um_fields = explode(',', $um_fields );
|
||||
$response['ID'] = $user->ID;
|
||||
if ( array_key_exists( 'um_fields', $args ) ) {
|
||||
$fields = explode( ',', sanitize_text_field( $args['um_fields'] ) );
|
||||
$response['ID'] = $user->ID;
|
||||
$response['username'] = $user->user_login;
|
||||
foreach ( $um_fields as $field ) {
|
||||
foreach ( $fields as $field ) {
|
||||
|
||||
switch ( $field ) {
|
||||
|
||||
default:
|
||||
$response[ $field ] = ( um_profile( $field ) ) ? um_profile( $field ) : '';
|
||||
$profile_data = um_profile( $field );
|
||||
$response[ $field ] = $profile_data ? $profile_data : '';
|
||||
|
||||
/**
|
||||
* UM hook
|
||||
*
|
||||
* @type filter
|
||||
* @title um_rest_get_auser
|
||||
* @description Change output data for Rest API user authentification call
|
||||
* @input_vars
|
||||
* [{"var":"$response","type":"array","desc":"Output Data"},
|
||||
* {"var":"$field","type":"string","desc":"Field Key"},
|
||||
* {"var":"$user_id","type":"int","desc":"User ID"}]
|
||||
* @change_log
|
||||
* ["Since: 2.0"]
|
||||
* @usage
|
||||
* <?php add_filter( 'um_rest_get_auser', 'function_name', 10, 3 ); ?>
|
||||
* @example
|
||||
* <?php
|
||||
* add_filter( 'um_rest_get_auser', 'my_rest_get_auser', 10, 3 );
|
||||
* function my_rest_get_auser( $response, $field, $user_id ) {
|
||||
* // your code here
|
||||
* return $response;
|
||||
* }
|
||||
* ?>
|
||||
*/
|
||||
/** This filter is documented in includes/core/rest/class-api-v1.php */
|
||||
$response = apply_filters( 'um_rest_get_auser', $response, $field, $user->ID );
|
||||
break;
|
||||
|
||||
case 'cover_photo':
|
||||
$response['cover_photo'] = $this->getsrc( um_user( 'cover_photo', 1000 ) );
|
||||
break;
|
||||
|
||||
case 'profile_pic':
|
||||
$response['profile_pic_original'] = um_get_user_avatar_url( '', 'original' );
|
||||
$response['profile_pic_normal'] = um_get_user_avatar_url( '', 200 );
|
||||
$response['profile_pic_small'] = um_get_user_avatar_url( '', 40 );
|
||||
$response['profile_pic_normal'] = um_get_user_avatar_url( '', 200 );
|
||||
$response['profile_pic_small'] = um_get_user_avatar_url( '', 40 );
|
||||
break;
|
||||
|
||||
case 'status':
|
||||
$response['status'] = um_user( 'account_status' );
|
||||
break;
|
||||
|
||||
case 'role':
|
||||
//get priority role here
|
||||
$response['role'] = um_user( 'role' );
|
||||
break;
|
||||
|
||||
case 'email':
|
||||
case 'user_email':
|
||||
$response['email'] = um_user( 'user_email' );
|
||||
@@ -441,55 +338,28 @@ if ( ! class_exists( 'um\core\rest\API_v2' ) ) {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
foreach ( $user as $key => $val ) {
|
||||
if ( $key != 'data' ) {
|
||||
if ( 'data' !== $key ) {
|
||||
continue;
|
||||
}
|
||||
if ( $key == 'data' ) {
|
||||
$key = 'profile';
|
||||
$val->roles = $user->roles;
|
||||
$val->first_name = um_user( 'first_name' );
|
||||
$val->last_name = um_user( 'last_name' );
|
||||
$val->account_status = um_user( 'account_status' );
|
||||
$val->profile_pic_original = um_get_user_avatar_url( '', 'original' );
|
||||
$val->profile_pic_normal = um_get_user_avatar_url( '', 200 );
|
||||
$val->profile_pic_small = um_get_user_avatar_url( '', 40 );
|
||||
$val->cover_photo = $this->getsrc( um_user( 'cover_photo', 1000 ) );
|
||||
|
||||
/**
|
||||
* UM hook
|
||||
*
|
||||
* @type filter
|
||||
* @title um_rest_userdata
|
||||
* @description Change output data for Rest API userdata call
|
||||
* @input_vars
|
||||
* [{"var":"$value","type":"array","desc":"Output Data"},
|
||||
* {"var":"$user_id","type":"string","desc":"User ID"}]
|
||||
* @change_log
|
||||
* ["Since: 2.0"]
|
||||
* @usage
|
||||
* <?php add_filter( 'um_rest_userdata', 'function_name', 10, 2 ); ?>
|
||||
* @example
|
||||
* <?php
|
||||
* add_filter( 'um_rest_userdata', 'my_rest_userdata', 10, 2 );
|
||||
* function my_rest_userdata( $value, $user_id ) {
|
||||
* // your code here
|
||||
* return $value;
|
||||
* }
|
||||
* ?>
|
||||
*/
|
||||
$val = apply_filters( 'um_rest_userdata', $val, $user->ID );
|
||||
}
|
||||
$response = $val;
|
||||
$val->roles = $user->roles;
|
||||
$val->first_name = um_user( 'first_name' );
|
||||
$val->last_name = um_user( 'last_name' );
|
||||
$val->account_status = um_user( 'account_status' );
|
||||
$val->profile_pic_original = um_get_user_avatar_url( '', 'original' );
|
||||
$val->profile_pic_normal = um_get_user_avatar_url( '', 200 );
|
||||
$val->profile_pic_small = um_get_user_avatar_url( '', 40 );
|
||||
$val->cover_photo = $this->getsrc( um_user( 'cover_photo', 1000 ) );
|
||||
|
||||
/** This filter is documented in includes/core/rest/class-api-v1.php */
|
||||
$response = apply_filters( 'um_rest_userdata', $val, $user->ID );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get source
|
||||
*
|
||||
@@ -498,13 +368,12 @@ if ( ! class_exists( 'um\core\rest\API_v2' ) ) {
|
||||
* @return string
|
||||
*/
|
||||
public function getsrc( $image ) {
|
||||
if (preg_match('/<img.+?src(?: )*=(?: )*[\'"](.*?)[\'"]/si', $image, $arrResult)) {
|
||||
return $arrResult[1];
|
||||
if ( preg_match( '/<img.+?src(?: )*=(?: )*[\'"](.*?)[\'"]/si', $image, $arr_result ) ) {
|
||||
return $arr_result[1];
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retrieve the output format
|
||||
*/
|
||||
@@ -513,28 +382,8 @@ if ( ! class_exists( 'um\core\rest\API_v2' ) ) {
|
||||
|
||||
$format = isset( $wp_query->query_vars['um_format'] ) ? $wp_query->query_vars['um_format'] : 'json';
|
||||
|
||||
/**
|
||||
* UM hook
|
||||
*
|
||||
* @type filter
|
||||
* @title um_api_output_format
|
||||
* @description UM Rest API output format
|
||||
* @input_vars
|
||||
* [{"var":"$format","type":"string","desc":"Format"}]
|
||||
* @change_log
|
||||
* ["Since: 2.0"]
|
||||
* @usage
|
||||
* <?php add_filter( 'um_api_output_format', 'function_name', 10, 1 ); ?>
|
||||
* @example
|
||||
* <?php
|
||||
* add_filter( 'um_api_output_format', 'my_api_output_format', 10, 1 );
|
||||
* function my_api_output_format( $format ) {
|
||||
* // your code here
|
||||
* return $format;
|
||||
* }
|
||||
* ?>
|
||||
*/
|
||||
/** This filter is documented in includes/core/rest/class-api-v1.php */
|
||||
return apply_filters( 'um_api_output_format', $format );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user