File Editor
Directories:
.. (Back)
EasyDigitalDownloads
Elementor
Integrations
MemberPress
Plugins
Promos
Rules
Shortcodes
WPForms
WooCommerce
Files:
Actions.php
Ajax.php
Api.php
ApiAuth.php
ApiKey.php
AssetLoader.php
BaseRestApi.php
Blocks.php
ClassicEditor.php
ConstantContact.php
Debug.php
EasyDigitalDownloads.php
Elementor.php
Inserter.php
InstallSkin.php
InstallSkinCompat.php
MailPoet.php
MemberPress.php
Menu.php
Notifications.php
OmuApi.php
Output.php
Pages.php
Partners.php
Plugins.php
Promos.php
Refresh.php
RestApi.php
RevenueAttribution.php
Review.php
Rules.php
Save.php
Shortcode.php
Sites.php
Support.php
Type.php
Urls.php
Utils.php
Validate.php
WPForms.php
Welcome.php
Widget.php
WooCommerce.php
WpErrorException.php
Create New File
Create
Edit File: Refresh.php
<?php /** * Refresh class. * * @since 1.0.0 * * @package OMAPI * @author Thomas Griffin */ // Exit if accessed directly. if ( ! defined( 'ABSPATH' ) ) { exit; } /** * Refresh class. * * @since 1.0.0 */ class OMAPI_Refresh { /** * Holds the class object. * * @since 1.0.0 * * @var object */ public static $instance; /** * Path to the file. * * @since 1.0.0 * * @var string */ public $file = __FILE__; /** * Holds the base class object. * * @since 1.0.0 * * @var object */ public $base; /** * Arguments for the API requests. * * @since 1.6.5 * * @var array */ protected $api_args = array( 'limit' => 100, 'status' => 'all', ); /** * OMAPI_Api object * * @var null|OMAPI_Api */ public $api = null; /** * WP_Error object if refresh fails. * * @var null|WP_Error */ public $error = null; /** * Primary class constructor. * * @since 1.0.0 */ public function __construct() { // Set our object. $this->set(); } /** * Sets our object instance and base class instance. * * @since 1.0.0 */ public function set() { self::$instance = $this; $this->base = OMAPI::get_instance(); } /** * Refresh the optins. * * @since 1.0.0 * * @param string $api_key API key. * * @return WP_Error|bool True if successful. */ public function refresh( $api_key = null ) { $this->api = OMAPI_Api::build( 'v1', 'optins', 'GET', $api_key ? array( 'apikey' => $api_key ) : $api_key ); $args = $this->setup_api( $api_key, $this->api_args ); $results = array(); $body = $this->api->request( $args ); // Loop through paginated requests until we have fetched all the campaigns. while ( ! is_wp_error( $body ) || empty( $body ) ) { $limit = absint( wp_remote_retrieve_header( $this->api->response, 'limit' ) ); $page = absint( wp_remote_retrieve_header( $this->api->response, 'page' ) ); $total = absint( wp_remote_retrieve_header( $this->api->response, 'total' ) ); $total_pages = ceil( $total / $limit ); $results = array_merge( $results, (array) $body ); // If we've reached the end, prevent any further requests. if ( $page >= $total_pages || 0 === $limit ) { break; } $args['page'] = $page + 1; // Request the next page. $body = $this->api->request( $args ); } if ( is_wp_error( $body ) ) { $this->handle_error( $body ); } else { // Store the optin data. $this->base->save->store_optins( $results ); // Update our sites as well. $result = $this->base->sites->fetch( $api_key ); // Update the option to remove stale error messages. $option = $this->base->get_option(); $option['is_invalid'] = false; $option['is_expired'] = false; $option['is_disabled'] = false; $option['connected'] = time(); if ( is_wp_error( $result ) ) { $this->error = $result; } else { $option = array_merge( $option, $result ); } $this->base->save->update_option( $option ); } return $this->error ? $this->error : true; } /** * Trigger a refresh for given campaign. * * @since 1.9.10 * * @param string $campaign_id The campaign id (slug). * * @return WP_Error|bool True if successful. */ public function sync( $campaign_id ) { $time = time(); $path = "for-wp/{$campaign_id}?t={$time}"; $this->api = OMAPI_Api::build( 'v1', $path, 'GET' ); $body = $this->api->request( $this->setup_api() ); if ( is_wp_error( $body ) ) { // If campaign is gone, delete the optin. if ( 'campaign-error' === $body->get_error_code() && (string) '404' === (string) $body->get_error_data() ) { $result = $this->base->save->delete_optin( $campaign_id, true ); } $this->handle_error( $body ); } else { // Store the optin data. $this->base->save->add_optins( (array) $body, false ); } return $this->error ? $this->error : true; } /** * Gets contextual info for API requests. * * @since 1.9.10 * * @param array $args Array of args. * * @return arry Modified array of args. */ public function get_info_args( $args = array() ) { // Set additional flags. $args['wp'] = $GLOBALS['wp_version']; $args['av'] = $this->base->asset_version(); $args['v'] = $this->base->version; if ( OMAPI_WooCommerce::is_active() ) { $args['wc'] = OMAPI_WooCommerce::version(); } $args = array_merge( $args, OMAPI_Api::get_url_args() ); return $args; } /** * Handles setting up the API request. * * @since 1.9.10 * * @param string $api_key API key. * @param array $args Array of request args. * * @return arry Modified array of request args. */ protected function setup_api( $api_key = null, $args = array() ) { if ( $api_key ) { $this->api->set( 'apikey', $api_key ); } $this->api->clear_additional_data(); // Set additional flags. return $this->get_info_args( $args ); } /** * Handles errors occurring during refresh. * * @since 1.9.10 * * @param WP_Error $error WP_Error object. * * @return OMAPI_Refresh */ protected function handle_error( $error ) { switch ( $error->get_error_code() ) { // If no optins available, make sure they get deleted. case 'optins': case 'no-campaigns-error': $this->base->save->store_optins( array() ); break; case 'referrer-error': $api = OMAPI_Api::instance(); $result = $this->base->sites->check_existing_site( $api->get_creds() ); if ( is_wp_error( $result ) ) { $error = $result; } break; } // Set an error message. $this->error = $error; return $this; } }
Save Changes
Rename File
Rename