File "CnbAdminAjax.php"
Full Path: /home/flipjqml/onlinebetsolution.com/wp-content/plugins/call-now-button/src/admin/CnbAdminAjax.php
File size: 7.95 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace cnb\admin;
// don't load directly
defined( 'ABSPATH' ) || die( '-1' );
use cnb\admin\api\CnbAppRemote;
use cnb\admin\api\CnbAppRemotePayment;
use cnb\admin\domain\CnbDomainController;
use cnb\admin\models\CnbUser;
use cnb\admin\profile\CnbProfileController;
use WP_Error;
class CnbAdminAjax {
/**
* part of domain-upgrade
*
* @return void
*/
public function domain_upgrade_get_checkout() {
do_action( 'cnb_init', __METHOD__ );
$planId = filter_input( INPUT_POST, 'planId', @FILTER_SANITIZE_STRING );
$domainId = filter_input( INPUT_POST, 'domainId', @FILTER_SANITIZE_STRING );
$url = admin_url( 'admin.php' );
$redirect_link =
add_query_arg(
array(
'page' => 'call-now-button-domains',
'action' => 'upgrade',
'id' => $domainId,
'upgrade' => 'success'
),
$url );
$callbackUri = esc_url_raw( $redirect_link );
$checkoutSession = CnbAppRemotePayment::cnb_remote_post_subscription( $planId, $domainId, $callbackUri );
if ( is_wp_error( $checkoutSession ) ) {
$custom_message_data = $checkoutSession->get_error_data( 'CNB_ERROR' );
if ( ! empty( $custom_message_data ) ) {
$custom_message_obj = json_decode( $custom_message_data );
$message = $custom_message_obj->message;
// Strip "request_id"
if ( stripos( $message, '; request-id' ) !== 0 ) {
$message = preg_replace( '/; request-id.*/i', '', $message );
}
// Replace "customer" with "domain"
$message = str_replace( 'customer', 'domain', $message );
wp_send_json( array(
'status' => 'error',
'message' => $message
) );
} else {
wp_send_json( array(
'status' => 'error',
'message' => $checkoutSession->get_error_message()
) );
}
} else {
// Get link based on Stripe checkoutSessionId
wp_send_json( array(
'status' => 'success',
'url' => $checkoutSession->url
) );
}
do_action( 'cnb_finish' );
wp_die();
}
/**
* called via jQuery.post
* @return void
*/
public function settings_profile_save() {
do_action( 'cnb_init', __METHOD__ );
$data = array();
// Security note: the nonce will be checked via update_user (below),
// and we sanitize the data via filter_var below
// phpcs:ignore WordPress.Security
wp_parse_str( $_POST['data'], $data );
$controller = new CnbProfileController();
$nonce = filter_var( $data['_wpnonce'], @FILTER_SANITIZE_STRING );
$profile = filter_var( $data['user'], @FILTER_SANITIZE_STRING,
FILTER_REQUIRE_ARRAY | FILTER_FLAG_NO_ENCODE_QUOTES );
$user = CnbUser::fromObject( $profile );
$result = $controller->update_user( $nonce, $user );
wp_send_json( $result );
do_action( 'cnb_finish' );
wp_die();
}
public function cnb_email_activation() {
do_action( 'cnb_init', __METHOD__ );
$cnb_remote = new CnbAppRemote();
$admin_url = esc_url( admin_url( 'admin-post.php' ) );
$custom_email = trim( filter_input( INPUT_POST, 'admin_email', @FILTER_SANITIZE_STRING ) );
if ( is_email( $custom_email ) ) {
$data = $cnb_remote->create_email_activation( $custom_email, $admin_url );
} else {
$data = new WP_Error( 'CNB_EMAIL_INVALID', __( 'Please enter a valid e-mail address.' ) );
if ( empty( $custom_email ) ) {
$data = new WP_Error( 'CNB_EMAIL_EMPTY', __( 'Please enter a valid e-mail address.' ) );
}
}
wp_send_json( $data );
do_action( 'cnb_finish' );
wp_die();
}
private static function cnb_time_format_( $time ) {
$time_format = get_option( 'time_format' );
$time_formatted = strtotime( $time );
return date_i18n( $time_format, $time_formatted );
}
public function time_format() {
do_action( 'cnb_init', __METHOD__ );
$start = trim( filter_input( INPUT_POST, 'start', @FILTER_SANITIZE_STRING ) );
$stop = trim( filter_input( INPUT_POST, 'stop', @FILTER_SANITIZE_STRING ) );
wp_send_json( array(
'start' => self::cnb_time_format_( $start ),
'stop' => self::cnb_time_format_( $stop ),
)
);
do_action( 'cnb_finish' );
wp_die();
}
public function get_plans() {
do_action( 'cnb_init', __METHOD__ );
global $cnb_plans;
$domain_controller = new CnbDomainController();
// Hardcoded fallback values in case the API call fails
$eur_yearly_per_month = 4.16;
$eur_yearly_plan_year = 49.90;
$eur_discount = 17;
$eur_trial_period_days = 14;
$usd_yearly_per_month = 4.99;
$usd_yearly_plan_year = 49.90;
$usd_discount = 17;
$usd_trial_period_days = $eur_trial_period_days;
if (is_array($cnb_plans)) {
$eur_yearly_plan = array_filter( $cnb_plans, function ( $plan ) {
return $plan->nickname === 'powered-by-eur-yearly';
} );
$eur_yearly_plan = array_pop( $eur_yearly_plan );
$eur_yearly_plan_year = round( $eur_yearly_plan->price, 2 );
$eur_yearly_per_month = round( $eur_yearly_plan->price / 12.0, 2 );
$usd_yearly_plan = array_filter( $cnb_plans, function ( $plan ) {
return $plan->nickname === 'powered-by-usd-yearly';
} );
$usd_yearly_plan = array_pop( $usd_yearly_plan );
$usd_yearly_plan_year = round( $usd_yearly_plan->price, 2 );
$usd_yearly_per_month = round( $usd_yearly_plan->price / 12.0, 2 );
$eur_monthly_plan = array_filter( $cnb_plans, function ( $plan ) {
return $plan->nickname === 'powered-by-eur-monthly';
} );
$usd_monthly_plan = array_filter( $cnb_plans, function ( $plan ) {
return $plan->nickname === 'powered-by-usd-monthly';
} );
// Calculate discounts
$eur_discount = $domain_controller->get_discount_percentage( $eur_yearly_plan, array_pop( $eur_monthly_plan ) );
$usd_discount = $domain_controller->get_discount_percentage( $usd_yearly_plan, array_pop( $usd_monthly_plan ) );
// Get trial days
$eur_trial_period_days = $eur_yearly_plan->trialPeriodDays;
$usd_trial_period_days = $usd_yearly_plan->trialPeriodDays;
}
wp_send_json( array(
'eur_per_year' => $eur_yearly_plan_year,
'eur_per_month' => $eur_yearly_per_month,
'eur_discount' => $eur_discount,
'eur_trial_period_days' => $eur_trial_period_days,
'usd_per_year' => $usd_yearly_plan_year,
'usd_per_month' => $usd_yearly_per_month,
'usd_discount' => $usd_discount,
'usd_trial_period_days' => $usd_trial_period_days
) );
do_action( 'cnb_finish' );
wp_die();
}
public function get_billing_portal() {
do_action( 'cnb_init', __METHOD__ );
$cnb_remote = new CnbAppRemote();
wp_send_json( $cnb_remote->create_billing_portal() );
do_action( 'cnb_finish' );
wp_die();
}
public function get_domain_status() {
$domainId = trim( filter_input( INPUT_POST, 'domainId', @FILTER_SANITIZE_STRING ) );
do_action( 'cnb_init', __METHOD__ );
$cnb_remote = new CnbAppRemote();
wp_send_json( $cnb_remote->get_subscription_status( $domainId ) );
do_action( 'cnb_finish' );
wp_die();
}
}