: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
// Exit if accessed directly
if ( ! defined( 'ABSPATH' ) ) {
function ampforwp_get_licence_activate_update(){
if(!wp_verify_nonce( $_REQUEST['verify_nonce'], 'verify_extension' ) ) {
echo wp_json_encode(array("status"=>300,"message"=>esc_html__('Request not valid','accelerated-mobile-pages')));
// Exit if the user does not have proper permissions
if(! current_user_can( 'manage_options' ) ) {
echo wp_json_encode(array("status"=>300,"message"=>esc_html__('User not have authority','accelerated-mobile-pages')));
$selectedOption = get_option('redux_builder_amp',true);
if($_SERVER['REQUEST_METHOD']=='POST'){
if(!isset($_POST['update_check'])){
$ampforwp_license_activate = sanitize_text_field($_POST['ampforwp_license_activate']);
$license = sanitize_text_field($_POST['license']);
$item_name = sanitize_text_field($_POST['item_name']);
$store_url = sanitize_text_field($_POST['store_url']);
$plugin_active_path = sanitize_text_field($_POST['plugin_active_path']);
$ampforwp_license_activate = sanitize_text_field($_POST['ampforwp_license_activate']);
$license = $selectedOption['amp-license'][$ampforwp_license_activate]['license'];
$item_name = $selectedOption['amp-license'][$ampforwp_license_activate]['item_name'];
$store_url = $selectedOption['amp-license'][$ampforwp_license_activate]['store_url'];
if($selectedOption['amp-license'][$ampforwp_license_activate]['item_name']=="" || $selectedOption['amp-license'][$ampforwp_license_activate]['item_name']==NULL){
$item_name = $selectedOption['amp-license'][$ampforwp_license_activate]['all_data']['item_name'];
$message = "Please Enter valid license key";
$selectedOption['amp-license'][$ampforwp_license_activate]['license'] = $license;
$selectedOption['amp-license'][$ampforwp_license_activate]['item_name'] = $item_name;
$selectedOption['amp-license'][$ampforwp_license_activate]['store_url'] = $store_url;
$selectedOption['amp-license'][$ampforwp_license_activate]['plugin_active_path'] = $plugin_active_path;
if( isset($selectedOption['amp-license']) && "" != $selectedOption['amp-license']){
// data to send in our API request
'edd_action' => 'activate_license',
'item_name' => urlencode( $item_name ), // the name of our product in EDD
$response = wp_remote_post( $store_url, array( 'timeout' => 15, 'sslverify' => false, 'body' => $api_params ) );
// make sure the response came back okay
if ( is_wp_error( $response ) || 200 !== wp_remote_retrieve_response_code( $response ) ) {
if ( is_wp_error( $response ) ) {
$message = $response->get_error_message();
$message = esc_html__( 'An error occurred, please try again.', 'accelerated-mobile-pages' );
$response = wp_remote_retrieve_body( $response );
$license_data = json_decode( $response );
if ( false === $license_data->success ) {
switch( $license_data->error ) {
esc_html__( 'Your license key expired on %s.', 'accelerated-mobile-pages' ),
date_i18n( get_option( 'date_format' ), strtotime( $license_data->expires, current_time( 'timestamp' ) ) )
$message .= "<a href='".esc_url($store_url)."/order/?edd_license_key=".esc_html($license)."'>Renew Link</a>";
$message = esc_html__( 'Your license key has been disabled.', 'accelerated-mobile-pages' );
$message = esc_html__( 'Invalid license.', 'accelerated-mobile-pages' );
$message = esc_html__( 'Your license is not active for this URL.', 'accelerated-mobile-pages' );
case 'item_name_mismatch' :
esc_html__( 'This appears to be an invalid license key for %s.', 'accelerated-mobile-pages' ),
case 'no_activations_left':
$message = esc_html__( 'Your license key has reached its activation limit.', 'accelerated-mobile-pages' );
$message = esc_html__( 'An error occurred, please try again.', 'accelerated-mobile-pages' );
// Check if anything passed on a message constituting a failure
if ( ! empty( $message ) ) {
if(isset($license_data) && is_object($license_data)){
$status = $license_data->error;
$status = "An error occurred, Error type not found.";
$status = $license_data->license;
$limit = ampforwp_set_plugin_limit( true, $license_data, $ampforwp_license_activate);
$selectedOption['amp-license'][$ampforwp_license_activate]['limit'] = $limit;
//$selectedOption['amp-license'][$ampforwp_license_activate]['all_data'] = json_decode($response,true);
$response_all_data = json_decode($response,true);
$selectedOption['amp-license'][$ampforwp_license_activate]['all_data']['success'] = $response_all_data['success'];
$selectedOption['amp-license'][$ampforwp_license_activate]['all_data']['license'] = $response_all_data['license'];
$selectedOption['amp-license'][$ampforwp_license_activate]['all_data']['item_name'] = $response_all_data['item_name'];
$selectedOption['amp-license'][$ampforwp_license_activate]['all_data']['expires'] = $response_all_data['expires'];
$selectedOption['amp-license'][$ampforwp_license_activate]['all_data']['customer_name'] = $response_all_data['customer_name'];
$selectedOption['amp-license'][$ampforwp_license_activate]['all_data']['customer_email'] = $response_all_data['customer_email'];
$selectedOption['amp-license'][$ampforwp_license_activate]['status'] = $status;
$selectedOption['amp-license'][$ampforwp_license_activate]['message'] = $message;
update_option( 'redux_builder_amp', $selectedOption );
$message = esc_html__("Plugin activated successfully",'accelerated-mobile-pages');
$message = esc_html__("License not found",'accelerated-mobile-pages');
echo wp_json_encode(array("status"=>$status,"message"=>$message,"other"=> $selectedOption['amp-license'][$ampforwp_license_activate]));
add_action( 'wp_ajax_ampforwp_get_licence_activate_update', 'ampforwp_get_licence_activate_update' );
add_action( 'wp_ajax_ampforwp_set_license_transient', 'ampforwp_set_license_transient' );
function ampforwp_set_license_transient(){
$transient_load = 'ampforwp_addon_set_transient';
$value_load = 'ampforwp_addon_set_transient_value';
$expiration_load = 86400 ;
set_transient( $transient_load, $value_load, $expiration_load );
/***********************************************
* Illustrates how to deactivate a license key.
* This will decrease the site count
***********************************************/
function ampforwp_deactivate_license() {
if(!wp_verify_nonce( $_REQUEST['verify_nonce'], 'verify_extension' ) ) {
echo wp_json_encode(array("status"=>300,"message"=>esc_html__('Request not valid','accelerated-mobile-pages')));
// Exit if the user does not have proper permissions
if(! current_user_can( 'manage_options' ) ) {
// listen for our activate button to be clicked
if( isset( $_POST['ampforwp_license_deactivate'] ) ) {
$ampforwp_license_deactivate = sanitize_text_field( wp_unslash($_POST['ampforwp_license_deactivate']));
// retrieve the license from the database
$selectedOption = get_option('redux_builder_amp',true);
$license = '';//trim( get_option( 'amp_ads_license_key' ) );
$pluginItemStoreUrl = '';
if( isset($selectedOption['amp-license']) && "" != $selectedOption['amp-license']){
$pluginsDetail = $selectedOption['amp-license'][$ampforwp_license_deactivate];
$license = $pluginsDetail['license'];
$pluginItemName = $pluginsDetail['item_name'];
$pluginItemStoreUrl = $pluginsDetail['store_url'];
// data to send in our API request
'edd_action' => 'deactivate_license',
'item_name' => urlencode( $pluginItemName ), // the name of our product in EDD
$response = wp_remote_post( $pluginItemStoreUrl, array( 'timeout' => 15, 'sslverify' => false, 'body' => $api_params ) );
// make sure the response came back okay
if ( is_wp_error( $response ) || 200 !== wp_remote_retrieve_response_code( $response ) ) {
if ( is_wp_error( $response ) ) {
$message = $response->get_error_message();
$message = esc_html__( 'An error occurred, please try again.', 'accelerated-mobile-pages' );
echo wp_json_encode(array('status'=>500,"message"=>$message,"test"=>$selectedOption['amp-license'][$ampforwp_license_deactivate], "dsc"=>$pluginItemStoreUrl));
$message = esc_html__( 'Plugin deactivated successfully', 'accelerated-mobile-pages' );
// decode the license data
$license_data = json_decode( wp_remote_retrieve_body( $response ) ,true);
// $license_data->license will be either "deactivated" or "failed"
if(is_object($license_data) && $license_data->license == 'deactivated' ) {
delete_option( 'amp_ads_license_status' );
if( isset($selectedOption['amp-license']) && "" != $selectedOption['amp-license']){
$selectedOption['amp-license'][$ampforwp_license_deactivate]['status']= 'invalid';
$selectedOption['amp-license'][$ampforwp_license_deactivate]['license']= '';
update_option( 'redux_builder_amp', $selectedOption );
echo wp_json_encode(array('status'=>200,"message"=>$message));
add_action( 'wp_ajax_ampforwp_deactivate_license', 'ampforwp_deactivate_license' );
* This is a means of catching errors from the activation method above and displaying it to the customer
function ampforwp_admin_notices() {
if ( isset( $_GET['sl_activation'] ) && ! empty( $_GET['message'] ) ) {
switch( $_GET['sl_activation'] ) {
$message = urldecode( $_GET['message'] );
<p><?php echo esc_html($message); ?></p>
// Developers can put a custom success message here for when activation is successful if they way.
function ampforwp_set_plugin_limit( $force=false, $license_data='', $data = '') {
$limit = isset($data['limit']) ? trim( $data['limit'] ) : false;
if( ! $force && $limit !== false ) {
// If we haven't passed in any license data, get it now
// Avoid doubling up on HTTP requests
if( empty( $license_data ) ) {
$license = trim( isset($data['license']) ? $data['license'] : "" );
$store_url = isset($data['store_url']) ? $data['store_url'] : "" ;
$item_name = isset($data['item_name']) ? $data['item_name'] : "" ;
'edd_action' => 'check_license',
'license' => esc_attr($license),
'item_name' => urlencode( $item_name ),
'url' => esc_url(home_url())
$response = wp_remote_post( $store_url, array( 'timeout' => 15, 'body' => $api_params ) );
if ( is_wp_error( $response ) )
$license_data = json_decode( wp_remote_retrieve_body( $response ) );
if( $license_data->license != 'valid' ) {
// This license is not valid
} else if( isset( $license_data->license_limit ) ) {
// Using the license_limit to define how many plugins can be tracked
$limit = $license_data->license_limit;
function ampforwp_plgins_update_message_according_pluginOpt( $plugin_data, $r )
$selectedOption = get_option('redux_builder_amp',true);
$license_key = '';//trim( get_option( 'amp_ads_license_key' ) );
$pluginItemStoreUrl = '';
if( isset($selectedOption['amp-license']) && "" != $selectedOption['amp-license']){
$pluginsDetail = $selectedOption['amp-license']['amp-ads-google-adsense'];
$license_key = $pluginsDetail['license'];
$pluginItemName = $pluginsDetail['item_name'];
$pluginItemStoreUrl = $pluginsDetail['store_url'];
$pluginstatus = $pluginsDetail['status'];
echo "<a href='".self_admin_url("?page=amp_options&tab=29")."'>Please enter key</a>";
if($pluginstatus!="valid"){
echo "<a href='".self_admin_url("?page=amp_options&tab=29")."'>Please enter a valid key</a>";