![]() Server : Apache System : Linux pod-100823:apache2_74:v0.6.0 5.4.0-1138-gcp #147~18.04.1-Ubuntu SMP Mon Oct 7 21:46:26 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33.10 Disable Function : apache_child_terminate,apache_get_modules,apache_get_version,apache_getenv,apache_note,apache_setenv,disk_free_space,disk_total_space,diskfreespace,dl,exec,fastcgi_finish_request,link,opcache_compile_file,opcache_get_configuration,opcache_invalidate,opcache_is_script_cached,opcache_reset,passthru,pclose,pcntl_exec,popen,posix_getpid,posix_getppid,posix_getpwuid,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_uname,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,realpath_cache_get,shell_exec,show_source,symlink,system Directory : /nas/content/live/attorneyexperi/wp-content/plugins/diva/src/Support/ |
<?php /** * REST API support for Support. * * @package amp-wp */ namespace AmpProject\AmpWP\Support; use AmpProject\AmpWP\Infrastructure\Delayed; use AmpProject\AmpWP\Infrastructure\Injector; use AmpProject\AmpWP\Infrastructure\Registerable; use AmpProject\AmpWP\Infrastructure\Service; use WP_Error; use WP_HTTP_Response; use WP_REST_Controller; use WP_REST_Request; use WP_REST_Response; use WP_REST_Server; /** * Class SupportRESTController * REST API support to send AMP support data. * * @package AmpProject\AmpWP\Support * @internal * @since 2.2 */ class SupportRESTController extends WP_REST_Controller implements Delayed, Service, Registerable { /** * Namespace for REST API endpoint. * * @var string $namespace */ public $namespace = 'amp/v1'; /** * Injector. * * @var Injector */ private $injector; /** * Class constructor. * * @param Injector $injector Injector. */ public function __construct( Injector $injector ) { $this->injector = $injector; } /** * Get the action to use for registering the service. * * @return string Registration action to use. */ public static function get_registration_action() { return 'rest_api_init'; } /** * Registers all routes for the controller. */ public function register() { register_rest_route( $this->namespace, '/send-diagnostic', [ [ 'methods' => WP_REST_Server::CREATABLE, 'args' => [], 'permission_callback' => [ $this, 'permission_callback' ], 'callback' => [ $this, 'callback' ], ], ] ); } /** * Permission check to send support data. * * @return bool True if user have permission. Otherwise False. */ public function permission_callback() { return current_user_can( 'manage_options' ); } /** * Send AMP support data to insight server. * * @param WP_REST_Request $request REST API request. * * @return WP_Error|WP_HTTP_Response|WP_REST_Response REST API response. */ public function callback( WP_REST_Request $request ) { $request_args = $request->get_param( 'args' ); $request_args = ( ! empty( $request_args ) && is_array( $request_args ) ) ? $request_args : []; $support_data = $this->injector->make( SupportData::class, [ 'args' => $request_args ] ); $support_response = $support_data->send_data(); $response = new WP_Error( 'fail_to_send_data', __( 'Failed to send support request. Please try again later.', 'amp' ), [ 'status' => 500 ] ); if ( ! empty( $support_response ) && is_wp_error( $support_response ) ) { $response = $support_response; } if ( 'ok' === $support_response['status'] && ! empty( $support_response['data']['uuid'] ) ) { $response = [ 'success' => true, 'data' => $support_response['data'], ]; } return rest_ensure_response( $response ); } }