here to configure.', 'adsnipp' )); /** * $adsnipp_db_version - current database version * and used on plugin update to sync database tables */ global $adsnipp_db_version; $adsnipp_db_version = '1.0'; /** * register_activation_hook implementation * * creaing db tables on plugin activation */ function adsnipp_install() { global $wpdb; global $adsnipp_db_version; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); $found_tables = $wpdb->get_col("SHOW TABLES LIKE '{$wpdb->prefix}adsnipp%';"); if(!in_array("{$wpdb->prefix}adsnipp_ads", $found_tables)) { $sql = "CREATE TABLE `{$wpdb->prefix}adsnipp_ads` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `title` VARCHAR(100) NOT NULL, `network` VARCHAR(100) NOT NULL, `platform` VARCHAR(10) NOT NULL, `script` TEXT NOT NULL, `published` TINYINT(1) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) );"; dbDelta($sql); } if(!in_array("{$wpdb->prefix}adsnipp_stats", $found_tables)) { $sql = "CREATE TABLE `{$wpdb->prefix}adsnipp_stats` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `ad_id` INT(11) NOT NULL, `day` INT(15) NOT NULL DEFAULT '0', `impressions` INT(11) NOT NULL DEFAULT '0', `clicks` INT(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), INDEX `ad_id` (`ad_id`), INDEX `day` (`day`) );"; dbDelta($sql); } // save current database version for later use (on upgrade) add_option('adsnipp_db_version', $adsnipp_db_version); } register_activation_hook(__FILE__, 'adsnipp_install'); /** * Trick to update plugin database */ function adsnipp_update_db_check() { global $adsnipp_db_version; if (get_site_option('adsnipp_db_version') != $adsnipp_db_version) { adsnipp_install(); } } add_action('plugins_loaded', 'adsnipp_update_db_check'); if ( is_admin() ) { //Including class for displaying records require_once ADSNIPP_PATH . 'includes/class-adsnipp-list-table.php'; require_once ADSNIPP_PATH . 'includes/class-adsnipp-api.php'; // Add admin notices. add_action('admin_notices', 'adsnipp_admin_notices'); } else { add_action("wp_enqueue_scripts", 'adsnipp_custom_scripts'); } /** * Administration */ /** * admin_menu hook implementation, will add pages to list ads and to add new one */ function adsnipp_admin_menu() { add_menu_page(__('AdSnipp', 'adsnipp'), __('AdSnipp', 'adsnipp'), 'activate_plugins', 'adsnipp', 'adsnipp_stats_page_handler', ADSNIPP_URL . 'includes/images/menu-icon.png'); add_submenu_page('adsnipp', __('Stats', 'adsnipp'), __('Stats', 'adsnipp'), 'activate_plugins', 'adsnipp', 'adsnipp_stats_page_handler'); add_submenu_page('adsnipp', __('My Ads', 'adsnipp'), __('My Ads', 'adsnipp'), 'activate_plugins', 'adsnipp_ads', 'adsnipp_ads_page_handler'); } add_action('admin_menu', 'adsnipp_admin_menu'); /** * Stats page handler */ function adsnipp_stats_page_handler() { global $wpdb; $stats = array(); //Yesterday stats $yesterday = strtotime('yesterday midnight'); $stats['yesterday']['impressions'] = $wpdb->get_var("SELECT SUM(`impressions`) FROM {$wpdb->prefix}adsnipp_stats WHERE `day` = " . $yesterday); $stats['yesterday']['impressions'] = $stats['yesterday']['impressions'] ? $stats['yesterday']['impressions'] : 0; $stats['yesterday']['clicks'] = $wpdb->get_var("SELECT SUM(`clicks`) FROM {$wpdb->prefix}adsnipp_stats WHERE `day` = " . $yesterday); $stats['yesterday']['clicks'] = $stats['yesterday']['clicks'] ? $stats['yesterday']['clicks'] : 0; //Last 8 days stats $from = strtotime('today midnight') - 7 * 86400; $stats['8days']['desktop'] = $wpdb->get_results("SELECT s.ad_id, a.title, SUM(clicks) AS total_clicks, SUM(impressions) AS total_impressions, SUM(clicks+ impressions ) AS total FROM wp_adsnipp_stats AS s JOIN wp_adsnipp_ads AS a ON s.ad_id = a.id WHERE a.platform = 'Desktop' AND s.day >= " . $from . " GROUP BY ad_id ORDER BY total DESC LIMIT 5"); $stats['8days']['mobile'] = $wpdb->get_results("SELECT s.ad_id, a.title, SUM(clicks) AS total_clicks, SUM(impressions) AS total_impressions, SUM(clicks+ impressions ) AS total FROM wp_adsnipp_stats AS s JOIN wp_adsnipp_ads AS a ON s.ad_id = a.id WHERE a.platform = 'Mobile' AND s.day >= " . $from . " GROUP BY ad_id ORDER BY total DESC LIMIT 5"); ?>

' . $ad->title . ' ' . ($ad->total_impressions ? $ad->total_impressions : 0). ' ' . ($ad->total_clicks ? $ad->total_clicks : 0). ' '; } } else { echo ' No stats found. '; } ?> prepare_items(); $message = ''; if ('on' === $table->current_action()) { $message = '

' . sprintf(__('Items On: %d', 'adsnipp'), count($_REQUEST['id'])) . '

'; } else if ('off' === $table->current_action()) { $message = '

' . sprintf(__('Items Off: %d', 'adsnipp'), count($_REQUEST['id'])) . '

'; } else if ('delete' === $table->current_action()) { $message = '

' . sprintf(__('Items deleted: %d', 'adsnipp'), count($_REQUEST['id'])) . '

'; } ?>

display() ?>
prefix . 'adsnipp_ads'; $message = ''; $notice = ''; // default $item $default = array( 'id' => 0, 'title' => '', 'platform' => '', 'network' => '', 'script' => '', 'published' => 0, ); if (wp_verify_nonce($_REQUEST['nonce'], basename(__FILE__))) { $_REQUEST = stripslashes_deep( $_REQUEST ); if (isset($_REQUEST['title'])) { $_REQUEST['title'] = htmlspecialchars(trim($_REQUEST['title']), ENT_QUOTES); } if (isset($_REQUEST['network'])) { $_REQUEST['network'] = htmlspecialchars(trim($_REQUEST['network']), ENT_QUOTES); } if (isset($_REQUEST['script'])) { $_REQUEST['script'] = htmlspecialchars(trim($_REQUEST['script'], "\t\n "), ENT_QUOTES); } $item = shortcode_atts($default, $_REQUEST); $item_valid = adsnipp_validate_ad($item); if ($item_valid === true) { if ($item['id'] == 0) { $result = $wpdb->insert($table_name, $item); $item['id'] = $wpdb->insert_id; if ($result) { $message = __('Ad was successfully saved', 'adsnipp'); if (!get_option('adsnipp_registered')) { adsnipp_register(); } } else { $notice = __('There was an error while saving ad', 'adsnipp'); } } else { $result = $wpdb->update($table_name, $item, array('id' => $item['id'])); if ($result) { $message = __('Ad was successfully updated', 'adsnipp'); } else { $notice = __('There was an error while updating ad', 'adsnipp'); } } } else { $notice = $item_valid; } } else { $item = $default; if (isset($_REQUEST['id'])) { $item = $wpdb->get_row($wpdb->prepare("SELECT * FROM $table_name WHERE id = %d", $_REQUEST['id']), ARRAY_A); if (!$item) { $item = $default; $notice = __('Ad not found', 'adsnipp'); } } } // here we adding our custom meta box add_meta_box('ad_form_meta_box', 'Ad data', 'adsnipp_ad_form_meta_box_handler', 'ad', 'normal', 'default'); ?>

For support, mail us at: support@adsnipp.com

', $messages); } } /** * For later */ /*function adsnipp_languages() { load_plugin_textdomain('adsnipp', false, dirname(plugin_basename(__FILE__)) . '/language'); } add_action('init', 'adsnipp_languages');*/ /** * Publish active ads at Desktop/Mobile incrementing impressions */ function adsnipp_publish_ads(){ global $wpdb; $platform = wp_is_mobile() ? 'Mobile' : 'Desktop'; $items = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}adsnipp_ads WHERE platform = '" . $platform . "' AND published = 1"); if (count($items)) { foreach ($items as $item) { echo '
' . htmlspecialchars_decode($item->script, ENT_QUOTES) . '
'; adsnipp_add_impression($item->id); } } } add_action('wp_head', 'adsnipp_publish_ads'); /** * Add impressions */ function adsnipp_add_impression($ad_id) { global $wpdb; $today = strtotime('today midnight'); $stats = $wpdb->get_var($wpdb->prepare("SELECT `id` FROM {$wpdb->prefix}adsnipp_stats WHERE `ad_id` = %d AND `day` = $today;", $ad_id)); if($stats) { $wpdb->query("UPDATE {$wpdb->prefix}adsnipp_stats SET `impressions` = `impressions` + 1 WHERE `id` = $stats;"); } else { $wpdb->insert($wpdb->prefix.'adsnipp_stats', array('ad_id' => $ad_id, 'day' => $today, 'clicks' => 0, 'impressions' => 1)); } } /** * Count impressions */ function adsnipp_count_impression($ad_id, $period = 'all') { global $wpdb; $count = $wpdb->get_var($wpdb->prepare("SELECT SUM(`impressions`) FROM {$wpdb->prefix}adsnipp_stats WHERE `ad_id` = %d;", $ad_id)); if (!$count) { $count = 0; } return $count; } /** * Count clicks */ function adsnipp_count_clicks($ad_id, $period = 'all') { global $wpdb; $count = $wpdb->get_var($wpdb->prepare("SELECT SUM(`clicks`) FROM {$wpdb->prefix}adsnipp_stats WHERE `ad_id` = %d;", $ad_id)); if (!$count) { $count = 0; } return $count; } /** * Add clicks */ function adsnipp_click_callback() { global $wpdb; $ad_id = esc_attr($_POST['track']); if(is_numeric($ad_id)) { $id = $wpdb->get_var($wpdb->prepare("SELECT `id` FROM `".$wpdb->prefix."adsnipp_ads` WHERE `id` = %d;", $ad_id)); if ($id) { $today = strtotime('today midnight'); $stats = $wpdb->get_var($wpdb->prepare("SELECT `id` FROM `".$wpdb->prefix."adsnipp_stats` WHERE `ad_id` = %d AND `day` = $today;", $ad_id)); if($stats) { $wpdb->query("UPDATE `".$wpdb->prefix."adsnipp_stats` SET `clicks` = `clicks` + 1 WHERE `id` = $stats;"); } else { $wpdb->insert($wpdb->prefix.'adsnipp_stats', array('ad_id' => $ad_id, 'day' => $today, 'clicks' => 1, 'impressions' => 1)); } } } wp_die(); } add_action('wp_ajax_adsnipp_click', 'adsnipp_click_callback'); /** * Include custom scripts */ function adsnipp_custom_scripts() { wp_enqueue_script('clicktrack-adsnipp', ADSNIPP_URL . 'includes/jquery.adsnipp.clicktracker.js', false, null, true); } /** * Admin Notices */ function adsnipp_admin_notices() { if (!get_option('adsnipp_registered')) { echo '

' . ADSNIPP_NOT_READY . '

'; // WP Pointers $seen_it = explode(',', get_user_meta(get_current_user_id(), 'dismissed_wp_pointers', true)); if (!in_array('adsnipp', $seen_it)) { adsnipp_popup_setup(); } } } /** * Admin Notices Popup */ function adsnipp_popup_setup() { wp_enqueue_style( 'wp-pointer' ); wp_enqueue_script( 'jquery-ui' ); wp_enqueue_script( 'wp-pointer' ); wp_enqueue_script( 'utils' ); ?> 'adsnipp', 'website' => get_option('siteurl'), 'email' => get_option('admin_email'), ); $api_instance = new Addsnipp_Api(); $result = json_decode($api_instance->submit_register_form($params), true); }