$58 GRAYBYTE WORDPRESS FILE MANAGER $86

SERVER : premium267.web-hosting.com #1 SMP Wed Jun 4 13:01:13 UTC 2025
SERVER IP : 69.57.162.29 | ADMIN IP 216.73.216.187
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : NONE

/home/njinenkb/jaccul.org/wp-content/plugins/optinmonster/OMAPI/

HOME
Current File : /home/njinenkb/jaccul.org/wp-content/plugins/optinmonster/OMAPI//BaseRestApi.php
<?php
/**
 * Base Rest API Class, extend this if implementing a RestApi class.
 * Most of the code was migrated from OMAPI_RestApi.
 *
 * @since 2.8.0
 *
 * @package OMAPI
 * @author  Gabriel Oliveira and Eduardo Nakatsuka
 */

// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * Base Rest Api class.
 *
 * @since 2.8.0
 */
abstract class OMAPI_BaseRestApi {
	/**
	 * The Base OMAPI Object
	 *
	 *  @since 2.8.0
	 *
	 * @var OMAPI
	 */
	protected $base;

	/**
	 * The REST API Namespace
	 *
	 *  @since 2.8.0
	 *
	 * @var string The namespace
	 */
	protected $namespace = 'omapp/v1';

	/**
	 * Whether request was given a valid api key.
	 *
	 *  @since 2.8.0
	 *
	 * @var null|bool
	 */
	protected $has_valid_api_key = null;

	/**
	 * Build our object.
	 *
	 * @since 2.8.0
	 */
	public function __construct() {
		$this->base = OMAPI::get_instance();
		$this->register_rest_routes();
	}

	/**
	 * Registers the Rest API routes for this class
	 *
	 * @since 2.8.0
	 *
	 * @return void
	 */
	abstract public function register_rest_routes();

	/**
	 * Determine if we can store settings.
	 *
	 * @since 2.0.0
	 * @since 2.8.0 Migrated from OMAPI_RestApi
	 *
	 * @param  WP_REST_Request $request The REST Request.
	 *
	 * @return WP_Error|bool
	 */
	public function can_update_settings( $request ) {
		try {

			$this->verify_request_nonce( $request );

		} catch ( Exception $e ) {
			return $this->exception_to_response( $e );
		}

		return OMAPI::get_instance()->can_access( 'settings_update' );
	}

	/**
	 * Determine if OM API key is provided and valid.
	 *
	 * @since  1.9.10
	 * @since 2.8.0 Migrated from OMAPI_RestApi
	 *
	 * @param  WP_REST_Request $request The REST Request.
	 *
	 * @return WP_Error|bool
	 */
	public function has_valid_api_key( $request ) {
		$header = $request->get_header( 'X-OptinMonster-ApiKey' );

		// Use this API Key to validate.
		if ( ! $this->validate_api_key( $header ) ) {
			return new WP_Error(
				'omapp_rest_forbidden',
				esc_html__( 'Could not verify your API Key.', 'optin-monster-api' ),
				array(
					'status' => rest_authorization_required_code(),
				)
			);
		}

		return $this->has_valid_api_key;
	}

	/**
	 * Determine if logged in or OM API key is provided and valid.
	 *
	 * @since  1.9.10
	 * @since 2.8.0 Migrated from OMAPI_RestApi
	 *
	 * @param  WP_REST_Request $request The REST Request.
	 *
	 * @return bool
	 */
	public function logged_in_or_has_api_key( $request ) {
		return $this->logged_in_and_can_access_route( $request )
			|| true === $this->has_valid_api_key( $request );
	}

	/**
	 * Determine if logged in user can access this route (calls current_user_can).
	 *
	 * @since 2.6.4
	 *
	 * @param  WP_REST_Request $request The REST Request.
	 *
	 * @return bool
	 */
	public function logged_in_and_can_access_route( $request ) {
		return OMAPI::get_instance()->can_access( $request->get_route() );
	}

	/**
	 * Determine if the passed connection token is valid.
	 *
	 * @since 2.16.6
	 *
	 * @param WP_REST_Request $request The REST Request.
	 *
	 * @return WP_Error|bool
	 */
	public function has_connection_token( $request ) {
		$request_connection_token = $request->get_param( 'connectionToken' );

		$connection_token = $this->base->get_option( 'connectionToken' );

		if ( 'omwpoct_' . $connection_token !== $request_connection_token ) {
			return new WP_Error(
				'omapp_rest_forbidden',
				esc_html__( 'Could not verify your connection token.', 'optin-monster-api' ),
				array(
					'status' => rest_authorization_required_code(),
				)
			);
		}

		return true;
	}

	/**
	 * Validate this API Key
	 * We validate an API Key by fetching the Sites this key can fetch
	 * And then confirming that this key has access to at least one of these sites
	 *
	 * @since 1.8.0
	 * @since 2.8.0 Migrated from OMAPI_RestApi
	 *
	 * @param string $apikey The OM api key.
	 *
	 * @return bool True if the Key can be validated
	 */
	public function validate_api_key( $apikey ) {
		$this->has_valid_api_key = OMAPI_ApiKey::validate( $apikey );

		return $this->has_valid_api_key;
	}

	/**
	 * Convert an exception to a REST API WP_Error object.
	 *
	 * @since  2.0.0
	 * @since 2.8.0 Migrated from OMAPI_RestApi
	 *
	 * @param  Exception $e The exception.
	 *
	 * @return WP_Error
	 */
	protected function exception_to_response( Exception $e ) {
		// Return WP_Error objects directly.
		if ( $e instanceof OMAPI_WpErrorException && $e->getWpError() ) {
			return $e->getWpError();
		}

		$code = $e->getCode();
		if ( empty( $code ) || $code < 400 ) {
			$code = 400;
		}

		$data = ! empty( $e->data ) ? $e->data : array();
		$data = wp_parse_args(
			$data,
			array(
				'status' => $code,
			)
		);

		$error_code = rest_authorization_required_code() === $code
			? 'omapp_rest_forbidden'
			: 'omapp_rest_error';

		return new WP_Error( $error_code, $e->getMessage(), $data );
	}

	/**
	 * Convert a WP_Error to a proper REST API WP_Error object.
	 *
	 * @since 2.6.5
	 * @since 2.8.0 Migrated from OMAPI_RestApi
	 *
	 * @param  WP_Error $e The WP_Error object.
	 * @param  mixed    $data Data to include in the error data.
	 *
	 * @return WP_Error
	 */
	protected function wp_error_to_response( WP_Error $e, $data = array() ) {
		$api = OMAPI_Api::instance();

		$data          = is_array( $data ) || is_object( $data ) ? (array) $data : array();
		$error_data    = $e->get_error_data();
		$error_message = $e->get_error_message();
		$error_code    = $e->get_error_code();

		if ( empty( $error_data['status'] ) ) {

			$status     = is_numeric( $error_data ) ? $error_data : 400;
			$error_code = (string) rest_authorization_required_code() === (string) $status
				? 'omapp_rest_forbidden'
				: 'omapp_rest_error';

			$error_data = wp_parse_args(
				array(
					'status' => $status,
				),
				$data
			);

		} else {
			$error_data = wp_parse_args( $error_data, $data );
		}

		return new WP_Error( $error_code, $error_message, $error_data );
	}

	/**
	 * Verify the request nonce and throw an exception if verification fails.
	 *
	 * @since  2.0.0
	 * @since 2.8.0 Migrated from OMAPI_RestApi
	 *
	 * @param  WP_REST_Request $request The REST request.
	 *
	 * @return void
	 *
	 * @throws Exception If the nonce is missing or invalid.
	 */
	public function verify_request_nonce( $request ) {
		$nonce = $request->get_param( 'nonce' );
		if ( empty( $nonce ) ) {
			$nonce = $request->get_header( 'X-WP-Nonce' );
		}

		if ( empty( $nonce ) ) {
			throw new Exception( esc_html__( 'Missing security token!', 'optin-monster-api' ), rest_authorization_required_code() );
		}

		// Check the nonce.
		$result = wp_verify_nonce( $nonce, 'wp_rest' );
		if ( ! $result ) {
			throw new Exception( esc_html__( 'Security token invalid!', 'optin-monster-api' ), rest_authorization_required_code() );
		}
	}
}

Current_dir [ WRITEABLE ] Document_root [ WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
13 Apr 2026 7.46 AM
njinenkb / njinenkb
0755
EasyDigitalDownloads
--
20 Nov 2025 12.55 PM
njinenkb / njinenkb
0755
Elementor
--
20 Nov 2025 12.55 PM
njinenkb / njinenkb
0755
Integrations
--
20 Nov 2025 12.55 PM
njinenkb / njinenkb
0755
MemberPress
--
20 Nov 2025 12.55 PM
njinenkb / njinenkb
0755
Plugins
--
20 Nov 2025 12.55 PM
njinenkb / njinenkb
0755
Promos
--
20 Nov 2025 12.55 PM
njinenkb / njinenkb
0755
Rules
--
20 Nov 2025 12.55 PM
njinenkb / njinenkb
0755
Shortcodes
--
20 Nov 2025 12.55 PM
njinenkb / njinenkb
0755
WPForms
--
20 Nov 2025 12.55 PM
njinenkb / njinenkb
0755
WooCommerce
--
20 Nov 2025 12.55 PM
njinenkb / njinenkb
0755
Actions.php
6.959 KB
25 Feb 2025 1.06 AM
njinenkb / njinenkb
0644
Ajax.php
1.459 KB
17 Nov 2021 4.02 AM
njinenkb / njinenkb
0644
Api.php
14.168 KB
25 Feb 2025 1.06 AM
njinenkb / njinenkb
0644
ApiAuth.php
2.405 KB
7 Oct 2021 11.34 PM
njinenkb / njinenkb
0644
ApiKey.php
5.083 KB
1 Jul 2024 10.14 PM
njinenkb / njinenkb
0644
AssetLoader.php
5.587 KB
1 Apr 2021 7.57 PM
njinenkb / njinenkb
0644
BaseRestApi.php
6.647 KB
15 Oct 2024 7.52 PM
njinenkb / njinenkb
0644
Blocks.php
12.811 KB
26 Mar 2025 6.07 PM
njinenkb / njinenkb
0644
ClassicEditor.php
6.919 KB
19 Jul 2022 1.42 AM
njinenkb / njinenkb
0644
ConstantContact.php
7.424 KB
1 Jul 2024 10.14 PM
njinenkb / njinenkb
0644
Debug.php
4.349 KB
1 Jul 2024 10.14 PM
njinenkb / njinenkb
0644
EasyDigitalDownloads.php
9.329 KB
1 Jul 2024 10.14 PM
njinenkb / njinenkb
0644
Elementor.php
5.364 KB
18 Jan 2023 10.34 PM
njinenkb / njinenkb
0644
Inserter.php
11.291 KB
14 Sep 2022 6.35 AM
njinenkb / njinenkb
0644
InstallSkin.php
1.354 KB
20 Jan 2021 10.11 PM
njinenkb / njinenkb
0644
InstallSkinCompat.php
1.362 KB
20 Jan 2021 10.11 PM
njinenkb / njinenkb
0644
MailPoet.php
13.359 KB
1 Jul 2024 10.14 PM
njinenkb / njinenkb
0644
MemberPress.php
4.117 KB
23 Jun 2023 1.24 AM
njinenkb / njinenkb
0644
Menu.php
16.877 KB
19 Nov 2025 9.50 PM
njinenkb / njinenkb
0644
Notifications.php
18.467 KB
15 Oct 2024 7.52 PM
njinenkb / njinenkb
0644
OmuApi.php
4.025 KB
27 Oct 2021 10.35 PM
njinenkb / njinenkb
0644
Output.php
24.277 KB
16 Sep 2024 11.28 PM
njinenkb / njinenkb
0644
Pages.php
17.605 KB
19 Nov 2025 9.50 PM
njinenkb / njinenkb
0644
Partners.php
5.427 KB
3 Oct 2025 9.48 PM
njinenkb / njinenkb
0644
Plugins.php
24.339 KB
23 Apr 2024 5.54 PM
njinenkb / njinenkb
0644
Promos.php
1.105 KB
14 Sep 2022 6.35 AM
njinenkb / njinenkb
0644
Refresh.php
5.753 KB
31 Mar 2025 6.30 PM
njinenkb / njinenkb
0644
RestApi.php
38.58 KB
15 Oct 2024 7.52 PM
njinenkb / njinenkb
0644
RevenueAttribution.php
2.966 KB
17 May 2022 6.55 PM
njinenkb / njinenkb
0644
Review.php
1.447 KB
8 Sep 2021 7.22 PM
njinenkb / njinenkb
0644
Rules.php
23.44 KB
1 Jul 2024 10.14 PM
njinenkb / njinenkb
0644
Save.php
10.798 KB
13 Oct 2023 1.19 AM
njinenkb / njinenkb
0644
Shortcode.php
3.582 KB
30 Nov 2021 11.04 PM
njinenkb / njinenkb
0644
Sites.php
8.354 KB
1 Jul 2024 10.14 PM
njinenkb / njinenkb
0644
Support.php
8.248 KB
25 Feb 2025 1.06 AM
njinenkb / njinenkb
0644
Type.php
2.438 KB
11 Feb 2023 12.30 AM
njinenkb / njinenkb
0644
Urls.php
8.638 KB
24 Jul 2025 11.49 PM
njinenkb / njinenkb
0644
Utils.php
7.412 KB
31 Mar 2025 6.30 PM
njinenkb / njinenkb
0644
Validate.php
9.063 KB
22 Feb 2024 11.03 PM
njinenkb / njinenkb
0644
WPForms.php
2.604 KB
27 Jul 2023 12.06 AM
njinenkb / njinenkb
0644
Welcome.php
4.814 KB
17 Nov 2021 4.02 AM
njinenkb / njinenkb
0644
Widget.php
6.496 KB
17 Nov 2021 4.02 AM
njinenkb / njinenkb
0644
WooCommerce.php
19.576 KB
1 Jul 2024 10.14 PM
njinenkb / njinenkb
0644
WpErrorException.php
0.697 KB
17 Nov 2020 1.51 AM
njinenkb / njinenkb
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME
Static GIF Static GIF