File Editor
Directories:
.. (Back)
Elementor
Files:
Actions.php
Ajax.php
Api.php
ApiAuth.php
ApiKey.php
AssetLoader.php
Blocks.php
ClassicEditor.php
ConstantContact.php
Debug.php
Elementor.php
Inserter.php
InstallSkin.php
InstallSkinCompat.php
MailPoet.php
Menu.php
Notifications.php
OmuApi.php
Output.php
Pages.php
Partners.php
Plugins.php
Refresh.php
RestApi.php
Review.php
Rules.php
Save.php
Shortcode.php
Sites.php
Support.php
TrustPulse.php
Type.php
Urls.php
Utils.php
Validate.php
Welcome.php
Widget.php
WooCommerce.php
WpErrorException.php
Create New File
Create
Edit File: OmuApi.php
<?php /** * OMU API class. * * @since 2.6.6 * * @package OMAPI * @author Justin Sternberg */ // Exit if accessed directly. if ( ! defined( 'ABSPATH' ) ) { exit; } /** * OMU API class. * * @since 2.6.6 */ class OMAPI_OmuApi extends OMAPI_Api { /** * Holds the last instantiated instance of this class. * * @var OMAPI_Api */ protected static $instance = null; /** * Base API route. * * @since 2.6.6 * * @var string */ public $base = OPTINMONSTER_URL; /** * The OMU routes map. * * @since 2.6.6 * * @var string */ protected static $routes = array( 'courses' => 'wp-json/ldlms/v1/courses?per_page=8&orderby=menu_order&order=desc&_embed=1', 'guides' => 'wp-json/wp/v2/omu-guides?per_page=8&orderby=menu_order&order=desc&_embed=1', ); /** * The cached-request TTL. */ public $cache_ttl = DAY_IN_SECONDS; /** * Primary class constructor. * * @since 2.6.6 * * @param string $route The API route to target. * @param string $method The API method. */ public function __construct( $route, $method = 'GET' ) { // Set class properties. $this->route = $route; $this->method = $method; self::$instance = $this; } /** * Processes the OMU REST API request. * * @since 2.6.6 * * @param string $route The API route to target. * @param string $method The API method. * @param array $args Request args. * @param bool $refresh Whether to refresh the cache. * * @return mixed $value The response to the API call. */ public static function cached_request( $route, $method = 'GET', $args = array(), $refresh = false ) { $key_args = $args; $key_args[] = $method; $key_args[] = $route; $cache_key = 'omapp_omu_cached' . md5( serialize( $key_args ) ); $result = get_transient( $cache_key ); if ( empty( $result ) || $refresh ) { $api = new self( $route, $method ); $result = $api->request( $args ); if ( ! is_wp_error( $result ) ) { $headers = wp_remote_retrieve_headers( $api->response ); $result = array( 'data' => $result, 'total' => isset( $headers['x-wp-total'] ) ? (int) $headers['x-wp-total'] : 0, 'totalpages' => isset( $headers['x-wp-totalpages'] ) ? (int) $headers['x-wp-totalpages'] : 0, ); set_transient( $cache_key, $result, $api->cache_ttl ); } } return $result; } /** * Processes the OMU REST API request. * * @since 2.6.6 * * @param array $args Request args. * * @return mixed $value The response to the API call. */ public function request( $args = array() ) { $url = in_array( $this->method, array( 'GET', 'DELETE' ), true ) ? add_query_arg( array_map( 'urlencode', $args ), $this->get_url() ) : $this->get_url(); $url = esc_url_raw( $url ); // Build the headers of the request. $headers = array( 'Content-Type' => 'application/json', ); // Setup data to be sent to the API. $data = array( 'headers' => $headers, 'timeout' => 3000, 'sslverify' => false, 'method' => $this->method, ); // Perform the query and retrieve the response. $this->handle_response( wp_remote_request( $url, $data ) ); // Bail out early if there are any errors. if ( is_wp_error( $this->response ) ) { return $this->response; } $error = $this->check_response_error(); // Bail out early if there are any errors. if ( is_wp_error( $error ) ) { return $error; } // Return the json decoded content. return $this->response_body; } /** * The gets the URL based on our base, endpoint and version * * @since 2.6.6 * * @return string The API url. */ public function get_url() { if ( empty( self::$routes[ $this->route ] ) ) { throw new Exception( sprintf( 'Missing route information for %s', $this->route ), 400 ); } return trailingslashit( $this->base ) . self::$routes[ $this->route ]; } /** * Returns the last instantiated instance of this class. * * @since 2.6.6 * * @return A single instance of this class. */ public static function instance() { return self::$instance; } }
Save Changes
Rename File
Rename