This commit is contained in:
2026-07-02 15:54:39 -06:00
commit 9883323161
17470 changed files with 4470592 additions and 0 deletions
@@ -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' ),
),
),
),
);
}
}
@@ -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 ) );
}
}
@@ -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 ) );
}
}
}