post_content; foreach($amp_ads_id as $ad_id){ $post_meta_dataset = array(); $post_meta_dataset = get_post_meta($ad_id,$key='',true); $where_to_display = adsforwp_rmv_warnings($post_meta_dataset, 'wheretodisplay', 'adsforwp_array'); $jquery_selector = adsforwp_rmv_warnings($post_meta_dataset, 'adsforwp_jquery_selector', 'adsforwp_array'); $custom_target_position = adsforwp_rmv_warnings($post_meta_dataset, 'adsforwp_custom_target_position', 'adsforwp_array'); $new_element = adsforwp_rmv_warnings($post_meta_dataset, 'adsforwp_new_element', 'adsforwp_array'); if( $where_to_display == 'ad_shortcode'){ if(!has_shortcode( $content, 'adsforwp' )){ continue; }else{ if(!preg_match('/\[adsforwp(.*?)id=\"'.$ad_id.'\"\]/', $content, $matches)){ continue; } } }elseif($where_to_display == 'custom_target'){ if( $custom_target_position == 'existing_element' && !empty($jquery_selector)){ $idselector = ltrim($jquery_selector,'#'); $classselector = ltrim($jquery_selector,'.'); if( strpos($jquery_selector, '#') !== false){ if(!preg_match('/id=\"'.$idselector.'\"/', $content, $matches)){ continue; } }elseif( strpos($jquery_selector, '.') !== false ){ if(!preg_match('/class=\"'.$classselector.'\"/', $content, $matches) ){ continue; } } }elseif( $custom_target_position == 'new_element' && !empty($new_element)){ $new_element = html_entity_decode($new_element); preg_match('//', $new_element, $matches); if($matches){ if(!preg_match('/'.$matches[1].'/', $content, $match)){ continue; } }else{ continue; } } } $ad_impression_script .= ' '; $ad_clicks_script .=' '; } } echo $ad_impression_script; echo $ad_clicks_script; } } } /** * Function to insert ad impression for both (AMP and NON AMP) * @global type $wpdb * @param type $ad_id * @param type $device_name */ public function adsforwp_insert_impression($ad_id, $device_name){ global $wpdb; $today = adsforwp_get_date('day'); $stats = $wpdb->get_var($wpdb->prepare("SELECT `id` FROM `{$wpdb->prefix}adsforwp_stats` WHERE `ad_id` = %d AND `ad_device_name` = %s AND `ad_thetime` = %d;", $ad_id, trim($device_name), $today )); if($stats > 0) { $wpdb->query("UPDATE `{$wpdb->prefix}adsforwp_stats` SET `ad_impressions` = `ad_impressions` + 1 WHERE `id` = {$stats};"); } else { $wpdb->insert($wpdb->prefix.'adsforwp_stats', array('ad_id' => $ad_id, 'ad_thetime' => $today, 'ad_clicks' => 0, 'ad_impressions' => 1, 'ad_device_name' => trim($device_name))); } } /** * Function to insert ad clicks for both (AMP and NON AMP) * @global type $wpdb * @param type $ad_id * @param type $device_name */ public function adsforwp_insert_clicks($ad_id, $device_name){ global $wpdb; $today = adsforwp_get_date('day'); $stats = $wpdb->get_var($wpdb->prepare("SELECT `id` FROM `{$wpdb->prefix}adsforwp_stats` WHERE `ad_id` = %d AND `ad_device_name` = %s AND `ad_thetime` = %d;", $ad_id, trim($device_name), $today )); if($stats > 0) { $wpdb->query("UPDATE `{$wpdb->prefix}adsforwp_stats` SET `ad_clicks` = `ad_clicks` + 1 WHERE `id` = {$stats};"); } else { $wpdb->insert($wpdb->prefix.'adsforwp_stats', array('ad_id' => $ad_id, 'ad_thetime' => $today, 'ad_clicks' => 0, 'ad_impressions' => 1, 'ad_device_name' => trim($device_name))); } } /** * Ajax handler to get ad impression in AMP * @return type void */ public function adsforwp_insert_ad_impression_amp(){ if ( ! isset( $_GET['adsforwp_front_nonce'] ) ){ return; } if ( !wp_verify_nonce( $_GET['adsforwp_front_nonce'], 'adsforwp_ajax_check_front_nonce' ) ){ return; } $ad_id = sanitize_text_field($_GET['event']); $device_name = 'amp'; if($ad_id){ $this->adsforwp_insert_impression($ad_id, $device_name); } wp_die(); } /** * Ajax handler to get ad impression in NON AMP * @return type void */ public function adsforwp_insert_ad_impression(){ if ( ! isset( $_POST['adsforwp_front_nonce'] ) ){ return; } if ( !wp_verify_nonce( $_POST['adsforwp_front_nonce'], 'adsforwp_ajax_check_front_nonce' ) ){ return; } $ad_ids = array_map('sanitize_text_field', $_POST['ad_ids']); $device_name = sanitize_text_field($_POST['device_name']); if($ad_ids){ foreach ($ad_ids as $ad_id){ if($ad_id){ $this->adsforwp_insert_impression($ad_id, $device_name); } }//Foreach closed } wp_die(); } /** * Ajax handler to get ad clicks in NON AMP * @return type void */ public function adsforwp_insert_ad_clicks(){ if ( ! isset( $_POST['adsforwp_front_nonce'] ) ){ return; } if ( !wp_verify_nonce( $_POST['adsforwp_front_nonce'], 'adsforwp_ajax_check_front_nonce' ) ){ return; } $device_name = sanitize_text_field($_POST['device_name']); $ad_id = sanitize_text_field($_POST['ad_id']); if($ad_id){ $this->adsforwp_insert_clicks($ad_id, $device_name); } wp_die(); } /** * Ajax handler to get ad clicks in AMP * @return type void */ public function adsforwp_insert_ad_clicks_amp(){ if ( ! isset( $_GET['adsforwp_front_nonce'] ) ){ return; } if ( !wp_verify_nonce( $_GET['adsforwp_front_nonce'], 'adsforwp_ajax_check_front_nonce' ) ){ return; } $ad_id = sanitize_text_field($_GET['event']); $device_name = 'amp'; if($ad_id){ $this->adsforwp_insert_clicks($ad_id, $device_name); } wp_die(); } } if (class_exists('adsforwp_admin_analytics')) { $adsforwp_analytics_hooks_obj =new adsforwp_admin_analytics; $adsforwp_analytics_hooks_obj->adsforwp_admin_analytics_hooks(); };