Files
torebki-fabiola.pl/wp-content/plugins/email-subscribers/lite/includes/services/class-es-services.php
2026-03-05 13:07:40 +01:00

94 lines
1.8 KiB
PHP

<?php
class ES_Services {
/**
* API URL
*
* @since 4.6.0
* @var string
*/
public $api_url = 'https://api.icegram.com';
/**
* Service command
*
* @var string
*
* @sinc 4.6.0
*/
public $cmd = '';
/**
* ES_Services constructor.
*
* @since 4.6.0
*/
public function __construct() {
}
/**
* Send Request
*
* @param array $options
* @param string $method
*
* @since 4.6.0
*/
public function send_request( $options = array(), $method = 'POST', $validate_request = true ) {
$response = array();
if ( empty( $this->cmd ) ) {
return new WP_Error( '404', 'Command Not Found' );
}
if ( $validate_request ) {
// Request is valid if trial is valid or user is on a premium plan.
$is_request_valid = ES()->trial->is_trial_valid() || ES()->is_premium();
// Allow custom validation logic for some services e.g. sending es cron delete request even after trial is inactive.
$is_request_valid = apply_filters( 'ig_es_service_request_custom_validation', $is_request_valid, $options );
// Don't process request if request is not valid.
if ( ! $is_request_valid ) {
return $options;
}
}
$url = $this->api_url . $this->cmd;
$options = apply_filters( 'ig_es_service_request_data', $options );
if ( ! empty( $options ) && is_array( $options ) ) {
if ( 'POST' === $method ) {
$response = wp_remote_post( $url, $options );
} else {
$response = wp_remote_get( $url, $options );
}
if ( ! is_wp_error( $response ) ) {
if ( 200 === wp_remote_retrieve_response_code( $response ) ) {
$response_data = $response['body'];
if ( 'error' != $response_data ) {
$response_data = json_decode( $response_data, true );
do_action( 'ig_es_service_response_received', $response_data, $options );
return $response_data;
}
}
}
}
return $response;
}
}