adsensei_insert_impression($ad_id);
}
} //Foreach closed
}
wp_die();
}
/**
* Function to insert ad impression for both (AMP and NON AMP)
* @global type $wpdb
* @param type $ad_id
* @param type $device_name
*/
public function adsensei_insert_impression($ad_id, $device_name = '', $referrer_url = '', $user_ip = '', $actual_link = '', $browser = '')
{
global $wpdb;
$today = adsensei_get_date('day');
$id_array = explode('adsensei-ad', $ad_id);
$ad_id = $id_array[1];
$referrer_url = (isset($_POST['referrer'])) ? esc_url($_POST['referrer']) : '';
if (empty($referrer_url) && isset($_SERVER['HTTP_REFERER'])) {
$referrer_url = esc_url($_SERVER['HTTP_REFERER']);
}
$todays_date = '';
$todays_date = date('Y-m-d');
$year = date("Y");
$user_ip = $this->adsensei_get_client_ip();
$actual_link = (isset($_POST['currentLocation'])) ? esc_url($_POST['currentLocation']) : '';
if (empty($actual_link) && isset($_SERVER['HTTP_HOST'])) {
$actual_link = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
}
require_once ADSENSEI_PLUGIN_DIR . '/admin/includes/mobile-detect.php';
$device_name = '';
$mobile_detect = $isTablet = '';
$mobile_detect = new Adsensei_Mobile_Detect;
$isMobile = $mobile_detect->isMobile();
$isTablet = $mobile_detect->isTablet();
$device_name = 'desktop';
if ($isMobile && $isTablet) { //Only For tablet
$device_name = 'mobile';
} else if ($isMobile && !$isTablet) { // Only for mobile
$device_name = 'mobile';
}
$stats = $wpdb->get_var(
$wpdb->prepare(
"SELECT `id` FROM `{$wpdb->prefix}adsensei_stats` WHERE `ad_id` = %d AND `ad_device_name` = %s AND `ad_thetime` = %d AND `referrer` = %s AND `ip_address` = %s AND `url` = %s AND `browser` = %s",
$ad_id,
trim($device_name),
$today,
trim($referrer_url),
trim($user_ip),
trim($actual_link),
trim($browser)
)
);
if ($stats > 0) {
$wpdb->query(
$wpdb->prepare(
"UPDATE `{$wpdb->prefix}adsensei_stats` SET `ad_impressions` = `ad_impressions` + 1 WHERE `id` = %d",
$stats
)
);
} else {
$wpdb->insert($wpdb->prefix . 'adsensei_stats', array('ad_id' => $ad_id, 'ad_thetime' => $today, 'ad_clicks' => 0, 'ad_impressions' => 1, 'ad_device_name' => trim($device_name), 'referrer' => trim($referrer_url), 'ip_address' => trim($user_ip), 'browser' => trim($browser), 'url' => $actual_link));
}
$stats = $wpdb->get_var(
$wpdb->prepare(
"SELECT `id` FROM `{$wpdb->prefix}adsensei_single_stats` WHERE `ad_id` = %d",
$ad_id
)
);
if ($stats > 0) {
$adsensei_single_date = $wpdb->get_row(
$wpdb->prepare(
"SELECT * FROM `{$wpdb->prefix}adsensei_single_stats` WHERE `ad_id` = %d AND `ad_date` = %s",
$ad_id,
$todays_date
)
);
if (!$adsensei_single_date) {
$wpdb->insert($wpdb->prefix . 'adsensei_single_stats_', array('ad_id' => $ad_id, 'ad_thetime' => 0, 'ad_clicks' => 0, 'ad_impressions' => 1, 'ad_date' => $todays_date, 'date_click' => 0, 'ad_year' => $year, 'date_impression' => 1));
}
$wpdb->query(
$wpdb->prepare(
"UPDATE `{$wpdb->prefix}adsensei_single_stats` SET `ad_impressions` = `ad_impressions` + 1 WHERE `ad_id` = %d AND `ad_date` = %s",
$ad_id,
$todays_date
)
);
$wpdb->query(
$wpdb->prepare(
"UPDATE `{$wpdb->prefix}adsensei_single_stats` SET `date_impression` = `date_impression` + 1 WHERE `ad_id` = %d AND `ad_date` = %s",
$ad_id,
$todays_date
)
);
} else {
$wpdb->insert($wpdb->prefix . 'adsensei_single_stats_', array('ad_id' => $ad_id, 'ad_thetime' => 0, 'ad_clicks' => 0, 'ad_impressions' => 1, 'ad_date' => $todays_date, 'date_click' => 0, 'ad_year' => $year, 'date_impression' => 1));
}
}
public function adsensei_get_client_ip()
{
$ipaddress = '';
if (isset($_SERVER['HTTP_CLIENT_IP']))
$ipaddress = $_SERVER['HTTP_CLIENT_IP'];
else if (isset($_SERVER['REMOTE_ADDR']))
$ipaddress = $_SERVER['REMOTE_ADDR'];
else if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
$ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
else if (isset($_SERVER['HTTP_X_FORWARDED']))
$ipaddress = $_SERVER['HTTP_X_FORWARDED'];
else if (isset($_SERVER['HTTP_FORWARDED_FOR']))
$ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
else if (isset($_SERVER['HTTP_FORWARDED']))
$ipaddress = $_SERVER['HTTP_FORWARDED'];
else
$ipaddress = 'UNKNOWN';
return $ipaddress;
}
/**
* Ajax handler to get ad clicks in NON AMP
* @return type void
*/
public function adsensei_insert_ad_clicks()
{
if (!isset($_POST['adsensei_front_nonce'])) {
return;
}
if (!wp_verify_nonce($_POST['adsensei_front_nonce'], 'adsensei_ajax_check_front_nonce')) {
return;
}
$ad_id = sanitize_text_field($_POST['ad_id']);
$referrer_url = (isset($_POST['referrer'])) ? esc_url($_POST['referrer']) : '';
if (empty($referrer_url) && isset($_SERVER['HTTP_REFERER'])) {
$referrer_url = esc_url($_SERVER['HTTP_REFERER']);
}
$user_ip = $this->adsensei_get_client_ip();
$actual_link = (isset($_POST['currentLocation'])) ? esc_url($_POST['currentLocation']) : '';
if (empty($actual_link) && isset($_SERVER['HTTP_HOST'])) {
$actual_link = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
}
$browser = $_SERVER['HTTP_USER_AGENT'];
require_once ADSENSEI_PLUGIN_DIR . '/admin/includes/mobile-detect.php';
$device_name = '';
$mobile_detect = $isTablet = '';
$mobile_detect = new Adsensei_Mobile_Detect;
$isMobile = $mobile_detect->isMobile();
$isTablet = $mobile_detect->isTablet();
$device_name = 'desktop';
if ($isMobile && $isTablet) { //Only For tablet
$device_name = 'mobile';
} else if ($isMobile && !$isTablet) { // Only for mobile
$device_name = 'mobile';
}
if ($ad_id) {
$this->adsensei_insert_clicks($ad_id, $device_name, $referrer_url, $user_ip, $actual_link, $browser);
}
wp_die();
}
/**
* Ajax handler to get ad impression in AMP
* @return type void
*/
public function adsensei_insert_ad_impression_amp()
{
if (!isset($_GET['adsensei_front_nonce'])) {
return;
}
if (!wp_verify_nonce($_GET['adsensei_front_nonce'], 'adsensei_ajax_check_front_nonce')) {
return;
}
$ad_id = sanitize_text_field($_GET['event']);
$device_name = 'amp';
if ($ad_id) {
$this->adsensei_insert_impression($ad_id, $device_name);
}
wp_die();
}
public function adsensei_frontend_enqueue()
{
if (adsensei_is_amp_endpoint()) {
return;
}
$object_name = array(
'ajax_url' => admin_url('admin-ajax.php'),
'adsensei_front_nonce' => wp_create_nonce('adsensei_ajax_check_front_nonce')
);
$suffix = (adsenseiIsDebugMode()) ? '' : '.min';
// if ( (function_exists( 'ampforwp_is_amp_endpoint' ) && !ampforwp_is_amp_endpoint()) || function_exists( 'is_amp_endpoint' ) && !is_amp_endpoint()) {
global $adsensei_options;
$adsensei_options = adsensei_get_settings();
if (isset($adsensei_options['ad_performance_tracking']) && $adsensei_options['ad_performance_tracking'] == true) {
wp_enqueue_script('adsensei_ads_front', ADSENSEI_PLUGIN_URL . 'assets/js/performance_tracking' . $suffix . '.js', array('jquery'), ADSENSEI_VERSION, false);
// }
}
wp_localize_script('adsensei_ads_front', 'adsensei_analytics', $object_name);
}
/**
* Here, We are enquing amp scripts.
* @param type $data
* @return string
*/
public function adsensei_enque_analytics_amp_script($data)
{
if (empty($data['amp_component_scripts']['amp-analytics'])) {
$data['amp_component_scripts']['amp-analytics'] = 'https://cdn.ampproject.org/v0/amp-analytics-latest.js';
}
if (empty($data['amp_component_scripts']['amp-bind'])) {
$data['amp_component_scripts']['amp-bind'] = 'https://cdn.ampproject.org/v0/amp-bind-0.1.js';
}
if (empty($data['amp_component_scripts']['amp-user-notification'])) {
$data['amp_component_scripts']['amp-user-notification'] = 'https://cdn.ampproject.org/v0/amp-user-notification-0.1.js';
}
if (empty($data['amp_component_scripts']['amp-ad'])) {
$data['amp_component_scripts']['amp-ad'] = 'https://cdn.ampproject.org/v0/amp-ad-latest.js';
}
if (empty($data['amp_component_scripts']['amp-iframe'])) {
$data['amp_component_scripts']['amp-iframe'] = 'https://cdn.ampproject.org/v0/amp-iframe-latest.js';
}
return $data;
}
/**
* Here, We are adding amp analytics tag for every ad serve on page
*/
public function adsensei_add_analytics_amp_tags()
{
if ((function_exists('ampforwp_is_amp_endpoint') && ampforwp_is_amp_endpoint()) || function_exists('is_amp_endpoint') && is_amp_endpoint()) {
$amp_ads_id = json_decode(get_transient('adsensei_transient_amp_ids'), true);
if (!empty($amp_ads_id)) {
$amp_ads_id = array_unique($amp_ads_id);
}
$ad_impression_script = '';
$ad_clicks_script = '';
$nonce = wp_create_nonce('adsensei_ajax_check_front_nonce');
$ad_impression_url = admin_url('admin-ajax.php?action=adsensei_insert_ad_impression_amp&adsensei_front_nonce=' . $nonce);
$ad_clicks_url = admin_url('admin-ajax.php?action=adsensei_insert_ad_clicks_amp&adsensei_front_nonce=' . $nonce);
require_once ADSENSEI_PLUGIN_DIR . '/admin/includes/rest-api-service.php';
$api_service = new ADSENSEI_Ad_Setup_Api_Service();
$adsensei_ads = $api_service->getAdDataByParam('adsensei-ads');
if (isset($adsensei_ads['posts_data'])) {
foreach ($adsensei_ads['posts_data'] as $key => $value) {
$ads = $value['post_meta'];
if ($value['post']['post_status'] == 'draft') {
continue;
}
if (isset($ads['enabled_on_amp']) && !$ads['enabled_on_amp']) {
continue;
}
if (!isset($ads['position'])) {
continue;
}
if (isset($ads['ad_id']))
$post_status = get_post_status($ads['ad_id']);
else
$post_status = 'publish';
if (isset($ads['random_ads_list']))
$ads['random_ads_list'] = unserialize($ads['random_ads_list']);
if (isset($ads['visibility_include']))
$ads['visibility_include'] = unserialize($ads['visibility_include']);
if (isset($ads['visibility_exclude']))
$ads['visibility_exclude'] = unserialize($ads['visibility_exclude']);
if (isset($ads['targeting_include']))
$ads['targeting_include'] = unserialize($ads['targeting_include']);
if (isset($ads['targeting_exclude']))
$ads['targeting_exclude'] = unserialize($ads['targeting_exclude']);
$is_on = adsensei_is_visibility_on($ads);
$is_visitor_on = adsensei_is_visitor_on($ads);
if ($is_on && $is_visitor_on && $post_status == 'publish') {
$ad_impression_script .= '
';
$ad_clicks_script .= '
';
}
}
}
echo $ad_impression_script;
echo $ad_clicks_script;
}
}
/**
* Function to insert ad clicks for both (AMP and NON AMP)
* @global type $wpdb
* @param type $ad_id
* @param type $device_name
*/
public function adsensei_insert_clicks($ad_id, $device_name = '', $referrer_url = '', $user_ip = '', $actual_link = '', $browser = '')
{
global $wpdb;
$today = adsensei_get_date('day');
$id_array = explode('adsensei-ad', $ad_id);
$ad_id = $id_array[1];
$todays_date = date('Y-m-d');
$year = date("Y");
$stats = $wpdb->get_var($wpdb->prepare("SELECT `id` FROM `{$wpdb->prefix}adsensei_stats` WHERE `ad_id` = %d AND `ad_device_name` = %s AND `ad_thetime` = %d AND `referrer` = %s AND `ip_address` = %d AND `url` = %s AND `browser` = %s ", $ad_id, trim($device_name), $today, trim($referrer_url), trim($user_ip), trim($actual_link), trim($browser)));
if ($stats == NULL) {
$stats = $wpdb->get_var($wpdb->prepare("SELECT `id` FROM `{$wpdb->prefix}adsensei_stats` WHERE `ad_id` = %d AND `ad_device_name` = %s", $ad_id, $device_name));
}
if ($stats > 0) {
$wpdb->query(
$wpdb->prepare(
"UPDATE `{$wpdb->prefix}adsensei_stats` SET `ad_clicks` = `ad_clicks` + 1 WHERE `id` = %d",
$stats
)
);
} else {
$wpdb->insert($wpdb->prefix . 'adsensei_stats', array('ad_id' => $ad_id, 'ad_thetime' => $today, 'ad_clicks' => 0, 'ad_impressions' => 1, 'ad_device_name' => trim($device_name), 'referrer' => trim($referrer_url), 'ip_address' => trim($user_ip), 'browser' => trim($browser), 'url' => trim($actual_link)));
}
$stats = $wpdb->get_var($wpdb->prepare("SELECT `id` FROM `{$wpdb->prefix}adsensei_single_stats_` WHERE `ad_id` = %d ", $ad_id));
if ($stats > 0) {
$wpdb->query(
$wpdb->prepare(
"UPDATE `{$wpdb->prefix}adsensei_single_stats` SET `ad_clicks` = `ad_clicks` + 1 WHERE `ad_id` = %d AND `ad_date` = %s",
$ad_id,
$todays_date
)
);
$wpdb->query(
$wpdb->prepare(
"UPDATE `{$wpdb->prefix}adsensei_single_stats` SET `date_click` = `date_click` + 1 WHERE `ad_id` = %d AND `ad_date` = %s",
$ad_id,
$todays_date
)
);
} else {
$wpdb->insert($wpdb->prefix . 'adsensei_single_stats_', array('ad_id' => $ad_id, 'ad_thetime' => 0, 'ad_clicks' => 0, 'ad_impressions' => 1, 'ad_date' => $todays_date, 'date_click' => 0, 'ad_year' => $year, 'date_impression' => 1));
}
}
/**
* Ajax handler to get ad clicks in AMP
* @return type void
*/
public function adsensei_insert_ad_clicks_amp()
{
if (!isset($_GET['adsensei_front_nonce'])) {
return;
}
if (!wp_verify_nonce($_GET['adsensei_front_nonce'], 'adsensei_ajax_check_front_nonce')) {
return;
}
$ad_id = sanitize_text_field($_GET['event']);
$device_name = 'amp';
$referrer_url = (isset($_SERVER['HTTP_REFERER'])) ? esc_url($_SERVER['HTTP_REFERER']) : '';
$user_ip = $this->adsensei_get_client_ip();
$actual_link = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$browser = $_SERVER['HTTP_USER_AGENT'];
require_once ADSENSEI_PLUGIN_DIR . '/admin/includes/mobile-detect.php';
$device_name = '';
$mobile_detect = $isTablet = '';
$mobile_detect = new Adsensei_Mobile_Detect;
$isMobile = $mobile_detect->isMobile();
$isTablet = $mobile_detect->isTablet();
$device_name = 'desktop';
if ($isMobile && $isTablet) { //Only For tablet
$device_name = 'mobile';
} else if ($isMobile && !$isTablet) { // Only for mobile
$device_name = 'mobile';
}
if ($ad_id) {
$this->adsensei_insert_clicks($ad_id, $device_name, $referrer_url, $user_ip, $actual_link, $browser);
}
wp_die();
}
}
if (class_exists('adsensei_admin_analytics')) {
$adsensei_analytics_hooks_obj = new adsensei_admin_analytics;
$adsensei_analytics_hooks_obj->adsensei_admin_analytics_hooks();
}