'cpc' , 'priority' => 5 , 'total_impressions' => 0 , 'person_impressions' => 0 , 'hour_reset' => 0 , 'budget_value' => 0 , 'campaign_end_date' => '' , 'budget_type' => 'life_time'); static public $max_priority = 10; //Mutually use with banner /** * Construct backend for campaign */ function __construct(){ add_action('init' , array(&$this,'campaign_register')); add_filter('post_updated_messages', array(&$this,'campaign_updated_messages') ); add_action( 'save_post', array(&$this,'campaign_save_meta') ); add_filter( 'manage_edit-campaign_columns', array(&$this, 'set_custom_edit_campaign_columns' ) ); add_filter( 'manage_edit-campaign_sortable_columns', array(&$this,'campaign_manage_sortable_columns') ); add_action( 'manage_campaign_posts_custom_column' , array(&$this, 'custom_campaign_column' ), 10, 2 ); add_action( 'wp_ajax_get_aas_zone_by_size' , array(&$this , 'get_zone_by_size')); } function campaign_register(){ $labels = array( 'name' => _x( 'Campaigns', 'post type general name', AAS_TEXT_DOMAIN ), 'singular_name' => _x( 'Campaign', 'post type singular name', AAS_TEXT_DOMAIN ), 'menu_name' => _x( 'Campaigns', 'admin menu', AAS_TEXT_DOMAIN ), 'name_admin_bar' => _x( 'Campaign', 'add new on admin bar', AAS_TEXT_DOMAIN ), 'add_new' => _x( 'Add New', 'book', AAS_TEXT_DOMAIN ), 'add_new_item' => __( 'Add New Campaign', AAS_TEXT_DOMAIN ), 'new_item' => __( 'New Campaign', AAS_TEXT_DOMAIN ), 'edit_item' => __( 'Edit Campaign', AAS_TEXT_DOMAIN ), 'view_item' => __( 'View Campaign', AAS_TEXT_DOMAIN), 'all_items' => __( 'All Campaigns', AAS_TEXT_DOMAIN ), 'search_items' => __( 'Search Campaigns', AAS_TEXT_DOMAIN ), 'parent_item_colon' => __( 'Parent Campaigns:', AAS_TEXT_DOMAIN ), 'not_found' => __( 'No campaigns found.', AAS_TEXT_DOMAIN ), 'not_found_in_trash' => __( 'No campaigns found in Trash.', AAS_TEXT_DOMAIN ) ); $args = array( 'labels' => $labels, 'public' => false, 'publicly_queryable' => false, 'show_ui' => true, 'show_in_menu' => false, 'query_var' => false, 'rewrite' => false, 'capability_type' => 'post', 'has_archive' => false, 'hierarchical' => false, 'menu_position' => null, 'exclude_from_search' => true, 'register_meta_box_cb' => array(&$this , 'campaign_add_meta_box'), 'supports' => array( 'title' ) ); register_post_type( 'campaign', $args ); } function campaign_updated_messages( $messages ) { global $post, $post_ID; $messages['campaign'] = array( 0 => '', // Unused. Messages start at index 1. 1 => __('Campaign updated.' , AAS_TEXT_DOMAIN) , 6 => __('Campaign published.' , AAS_TEXT_DOMAIN) , 8 => __('Campaign submitted.' , AAS_TEXT_DOMAIN), 9 => sprintf( __('Campaign scheduled for: %1$s.' , AAS_TEXT_DOMAIN), date_i18n( __( 'M j, Y @ G:i' ), strtotime( $post->post_date ) ) ), 10 => __('Campaign draft updated.', AAS_TEXT_DOMAIN) ); return $messages; } function campaign_add_meta_box(){ add_meta_box( 'aas_campaign', __( 'Campaign Details', AAS_TEXT_DOMAIN ), array(&$this,'campaign_meta_box'), 'campaign' , 'normal' , 'high' ); add_meta_box( 'aas_campaign_overview', __( 'Campaign Overview', AAS_TEXT_DOMAIN ), array(&$this,'campaign_overview_box'), 'campaign' , 'side' , 'high' ); add_meta_box( 'aas_campaign_banner', __( 'Banner List', AAS_TEXT_DOMAIN ), array(&$this,'campaign_banner_box'), 'campaign' , 'side' , 'default' ); } function campaign_meta_box($post){ wp_nonce_field( 'campaign_meta_box', 'campaign_meta_box_nonce' ); $advertisers = get_posts(array('post_type' => 'advertiser' , 'posts_per_page' => -1)); $owner = $post->post_parent ? $post->post_parent : (isset($_GET['owner']) ? intval($_GET['owner']) : 0); $zones = get_post_meta($post->ID , 'campaign_displaying'); $campaign_size = get_post_meta($post->ID , 'campaign_size' , true); foreach(self::$default_value as $key => $d){ $$key = get_post_meta($post->ID ,$key , true); $$key = $$key ? $$key : $d; } ?>





get_col("SELECT meta_value FROM $wpdb->postmeta WHERE meta_key = 'zone_size' AND post_id IN (SELECT ID FROM $wpdb->posts where post_type = 'zone' AND post_status = 'publish') order by meta_value ASC"));?> -1,'post_type' => 'zone','orderby' => 'title','order' => 'ASC','meta_key' => 'zone_size','meta_value' => !empty($campaign_size) && in_array($campaign_size,$sizes) ? $campaign_size : $sizes[0]));?>















ID,'_total_payment',true),2);?>

ID, '_ctr',true) . '%';?>

ID, '_total_click',true));?>

ID, '_total_view',true));?>

'ads_banner' , 'posts_per_page' => -1 , 'post_status' => 'any' , 'post_parent' => $post->ID)); foreach($banners as $b){ $status = $b->post_status == 'publish' ? 'green' : 'red'; ?>

post_title;?>

update($wpdb->posts , array('post_parent' => intval($_POST['owner'])) , array('ID' => $post_id) , array('%d'),array('%d')); } delete_post_meta($post_id , 'campaign_displaying'); if( is_array($_POST['campaign_displaying']) ){ foreach($_POST['campaign_displaying'] as $zone) add_post_meta($post_id , 'campaign_displaying' , intval($zone)); } update_post_meta( $post_id, 'campaign_size' , $_POST['campaign_size'] ); if( in_array($_POST['pricing_model'],array('cpc','cpm' , 'cpp')) ) update_post_meta( $post_id, 'pricing_model' , $_POST['pricing_model'] ); if( in_array($_POST['budget_type'],array('per_day','life_time')) ) update_post_meta( $post_id, 'budget_type' , $_POST['budget_type'] ); $my_data = sanitize_text_field($_POST['campaign_end_date']); update_post_meta( $post_id, 'campaign_end_date' , $my_data); $numeric_groups = array('budget_value','priority','total_impressions','person_impressions'); foreach($numeric_groups as $num){ if(is_numeric($_POST[$num])) update_post_meta( $post_id, $num , $_POST[$num]); } $d_types = array('_total_payment', '_total_view', '_total_click'); foreach($d_types as $t){ if(!is_numeric( $$t = get_post_meta( $post_id, $t, true))) update_post_meta( $post_id, $t ,0 ); } if($_total_view > 0) update_post_meta( $post_id, '_ctr' , round($_total_click*100/$_total_view, 2 ) ); else update_post_meta( $post_id, '_ctr' , 0 ); } function set_custom_edit_campaign_columns($columns) { $date = $columns['date']; unset( $columns['date'] ); $columns['target_pricing'] = __('Target Pricing',AAS_TEXT_DOMAIN); $columns['ctr'] = __('CTR',AAS_TEXT_DOMAIN); $columns['click'] = __('Clicks',AAS_TEXT_DOMAIN); $columns['impression'] = __('Impressions',AAS_TEXT_DOMAIN); $columns['priority'] = __('Priority',AAS_TEXT_DOMAIN); $columns['banner'] = __('Banner List',AAS_TEXT_DOMAIN); $columns['advertiser'] = __('Owner',AAS_TEXT_DOMAIN); $columns['date'] = $date; $columns['end_date'] = __('End Date',AAS_TEXT_DOMAIN); return $columns; } function custom_campaign_column( $column, $post_id ) { switch ( $column ) { case 'target_pricing': echo sprintf( __('Model: %s
Budget: %s
Value: %s
Limit View: %s',AAS_TEXT_DOMAIN), strtoupper(get_post_meta($post_id,'pricing_model',true)) , get_post_meta($post_id,'budget_type',true)=='life_time' ? __('Life Time',AAS_TEXT_DOMAIN) : __('Per Day',AAS_TEXT_DOMAIN),number_format(get_post_meta($post_id,'budget_value',true) ),get_post_meta($post_id,'total_impressions',true)); break; case 'priority' : echo get_post_meta($post_id , 'priority' , true); break; case 'banner' : $banner = get_posts(array('post_type' => 'ads_banner' , 'posts_per_page' => -1 , 'post_status' => 'any' , 'post_parent' => $post_id)); foreach($banner as $c){ ?> post_title;?>
post_parent){ $a = get_post($a); echo '' . $a->post_title . '' ; } break; case 'end_date': echo get_post_meta($post_id , 'campaign_end_date' , true); break; case 'ctr': echo (float)get_post_meta($post_id , '_ctr' , true) . '%'; break; case 'click': echo (int)get_post_meta($post_id , '_total_click' , true); break; case 'impression': echo (int)get_post_meta($post_id , '_total_view' , true); break; } } function campaign_manage_sortable_columns( $sortable_columns ) { $sortable_columns[ 'priority' ] = 'priority'; $sortable_columns[ 'end_date' ] = 'end_date'; $sortable_columns[ 'click' ] = 'click'; $sortable_columns[ 'impression' ] = 'impression'; $sortable_columns[ 'ctr' ] = 'ctr'; return $sortable_columns; } function get_zone_by_size(){ $all_zones = get_posts(array('posts_per_page' => -1,'post_type' => 'zone','orderby' => 'title','order' => 'ASC','meta_key' => 'zone_size','meta_value' => esc_attr($_POST['size']) )); $zones = get_post_meta($_POST['id'] , 'campaign_displaying'); ?>