initial
This commit is contained in:
+60
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
|
||||
namespace Gravity_Forms\Gravity_Forms\Webapi\User_Select;
|
||||
|
||||
use Gravity_Forms\Gravity_Forms\Config\GF_Config;
|
||||
use Gravity_Forms\Gravity_Forms\Config\GF_Config_Data_Parser;
|
||||
|
||||
defined( 'ABSPATH' ) || die();
|
||||
|
||||
class GF_User_Select_Config extends GF_Config {
|
||||
|
||||
protected $name = 'gform_admin_config';
|
||||
protected $script_to_localize = 'gform_gravityforms_admin_vendors';
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @since 2.10.2
|
||||
*
|
||||
* @param GF_Config_Data_Parser $data_parser
|
||||
*/
|
||||
public function __construct( GF_Config_Data_Parser $data_parser ) {
|
||||
parent::__construct( $data_parser );
|
||||
}
|
||||
|
||||
/**
|
||||
* Only enqueue on the Web API settings page.
|
||||
*
|
||||
* @since 2.10.2
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function should_enqueue() {
|
||||
return \GFForms::get_page() === 'settings' && rgget( 'subview' ) === 'gravityformswebapi';
|
||||
}
|
||||
|
||||
/**
|
||||
* Config data for the user select dropdown
|
||||
*
|
||||
* @since 2.10.2
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function data() {
|
||||
return array(
|
||||
'components' => array(
|
||||
'webapi_user_select' => array(
|
||||
'endpoints' => array( 'get' => array( 'action' => 'gfwebapi_get_users', 'nonce' => wp_create_nonce( 'gfwebapi_get_users' ) ) ),
|
||||
'data' => \GFWebAPI::get_users( array( 'number' => 10 ) ),
|
||||
'strings' => array(
|
||||
'search_placeholder' => esc_html__( 'Search users...', 'gravityforms' ),
|
||||
'trigger_placeholder' => esc_html__( 'Select a user', 'gravityforms' ),
|
||||
'trigger_aria_text' => esc_html__( 'User', 'gravityforms' ),
|
||||
'search_aria_text' => esc_html__( 'Search for users', 'gravityforms' ),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
namespace Gravity_Forms\Gravity_Forms\Webapi\User_Select;
|
||||
|
||||
defined( 'ABSPATH' ) || die();
|
||||
|
||||
use GFCommon;
|
||||
|
||||
/**
|
||||
* Class GF_User_Select_Handler
|
||||
*
|
||||
* Handles AJAX requests for the user select dropdown in the REST API settings page
|
||||
*
|
||||
* @since 2.10.2
|
||||
*/
|
||||
class GF_User_Select_Handler {
|
||||
|
||||
/**
|
||||
* Initialize the user select functionality
|
||||
*
|
||||
* @since 2.10.2
|
||||
*/
|
||||
public function init() {
|
||||
add_action( 'wp_ajax_gfwebapi_get_users', array( $this, 'ajax_get_users' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle AJAX request to get users
|
||||
*
|
||||
* @since 2.10.2
|
||||
*/
|
||||
public function ajax_get_users() {
|
||||
if ( ! GFCommon::current_user_can_any( 'gravityforms_api_settings' ) ) {
|
||||
wp_send_json_error( array( 'message' => __( 'Access denied.', 'gravityforms' ) ) );
|
||||
}
|
||||
|
||||
check_ajax_referer( 'gfwebapi_get_users', 'nonce' );
|
||||
|
||||
$search = isset( $_POST['search'] ) ? sanitize_text_field( wp_unslash( $_POST['search'] ) ) : '';
|
||||
|
||||
wp_send_json_success( \GFWebAPI::get_users( array( 'number' => 10 ), $search ) );
|
||||
}
|
||||
}
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
namespace Gravity_Forms\Gravity_Forms\Webapi\User_Select;
|
||||
|
||||
use Gravity_Forms\Gravity_Forms\Config\GF_Config_Service_Provider;
|
||||
use Gravity_Forms\Gravity_Forms\GF_Service_Container;
|
||||
use Gravity_Forms\Gravity_Forms\GF_Service_Provider;
|
||||
|
||||
defined( 'ABSPATH' ) || die();
|
||||
|
||||
class GF_User_Select_Service_Provider extends GF_Service_Provider {
|
||||
|
||||
const USER_SELECT = 'webapi_user_select';
|
||||
const USER_SELECT_CONFIG = 'webapi_user_select_config';
|
||||
|
||||
/**
|
||||
* Register services to the container
|
||||
*
|
||||
* @since 2.10.2
|
||||
*
|
||||
* @param GF_Service_Container $container
|
||||
*/
|
||||
public function register( GF_Service_Container $container ) {
|
||||
require_once plugin_dir_path( __FILE__ ) . 'class-gf-user-select-handler.php';
|
||||
require_once plugin_dir_path( __FILE__ ) . 'class-gf-user-select-config.php';
|
||||
|
||||
$container->add(
|
||||
self::USER_SELECT,
|
||||
function () {
|
||||
return new GF_User_Select_Handler();
|
||||
}
|
||||
);
|
||||
|
||||
$container->add(
|
||||
self::USER_SELECT_CONFIG,
|
||||
function () use ( $container ) {
|
||||
$data_parser = $container->get( GF_Config_Service_Provider::DATA_PARSER );
|
||||
|
||||
return new GF_User_Select_Config( $data_parser );
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize any actions or hooks
|
||||
*
|
||||
* @since 2.10.2
|
||||
*
|
||||
* @param GF_Service_Container $container
|
||||
*/
|
||||
public function init( GF_Service_Container $container ) {
|
||||
$container->get( self::USER_SELECT )->init();
|
||||
|
||||
if ( \GFForms::get_page() === 'settings' && rgget( 'subview' ) === 'gravityformswebapi' ) {
|
||||
$config_collection = $container->get( GF_Config_Service_Provider::CONFIG_COLLECTION );
|
||||
$config_collection->add_config( $container->get( self::USER_SELECT_CONFIG ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user