Files
2024-09-17 10:50:03 -04:00

143 lines
5.5 KiB
PHP

<?php
if(!class_exists('CptCampaign')) {
class CptCampaign
{
//cpt info
const POST_TYPE = "campaign";
const NAME = "Campaign";
const SINGLE_NAME = "Campaign";
const DESCRIPTION = "Post type for Campaign";
const QUERY_VAR = "campaign";
//meta key
const kMETA_CAMPAIGN_ID = "campaign_id";
const kMETA_CAMPAIGN_START_DATE = "campaign_start_date";
const kMETA_CAMPAIGN_END_DATE = "campaign_end_date";
const kMETA_CAMPAIGN_PHONE = "campaign_phone_number";
const kMETA_CAMPAIGN_SHORT_URL = "campaign_short_url";
const kMETA_CAMPAIGN_LANDING_URL = "campaign_landing_url";
const kMETA_CAMPAIGN_NAME = "campaign_name";
const kMETA_DELETE = "to_delete";
const kMETA_FIVE9 = "Five9CallbackCampaign";
//meta array
private $_meta = array(
array('name'=>self::kMETA_CAMPAIGN_ID,'type'=>'input-text','title'=>'Campaign ID'),
array('name'=>self::kMETA_CAMPAIGN_NAME,'type'=>'input-text','title'=>'Campaign name'),
array('name'=>self::kMETA_CAMPAIGN_START_DATE,'type'=>'input-date','title'=>'Start date'),
array('name'=>self::kMETA_CAMPAIGN_END_DATE,'type'=>'input-date','title'=>'End date'),
array('name'=>self::kMETA_CAMPAIGN_PHONE,'type'=>'input-text','title'=>'Phone number'),
array('name'=>self::kMETA_CAMPAIGN_SHORT_URL,'type'=>'input-text','title'=>'Friendly URL'),
array('name'=>self::kMETA_CAMPAIGN_LANDING_URL,'type'=>'input-text','title'=>'Landing URL'),
array('name'=>self::kMETA_FIVE9,'type'=>'input-text','title'=>'Five9 Callback Campaign'),
);
public function __construct(){
add_action('init', array(&$this, 'init'));
add_action('admin_init', array(&$this, 'admin_init'));
//add_action('admin_print_scripts', array(&$this,'load_custom_wp_admin_script') );
add_filter('single_template',array(&$this,'single_template'));
}
public function init(){
$this->create_post_type();
add_action('save_post', array(&$this, 'save_post'));
}
public function admin_init(){
add_action('add_meta_boxes', array(&$this, 'add_meta_boxes'));
}
public function add_meta_boxes(){
add_meta_box(
sprintf('campaign_plugin_%s_section', self::POST_TYPE),
'Info',
array(&$this, 'add_inner_meta_boxes'),
self::POST_TYPE
);
}
public function add_inner_meta_boxes($post){
include(sprintf("%s/templates/%s-metabox.php",kCampaignPath, self::POST_TYPE));
}
public function create_post_type(){
$labels = array(
'name' => __("Campaigns"),
'singular_name' => __("Campaign"),
'menu_name' => __("Campaigns"),
'name_admin_bar' => __("Campaign"),
'add_new_item' => __( 'Add New Campaign'),
'new_item' => __( 'New Campaign'),
'edit_item' => __( 'Edit Campaign' ),
'view_item' => __( 'View Campaign' ),
'all_items' => __( 'All Campaigns' ),
'search_items' => __( 'Search Campaigns'),
'parent_item_colon' => __( 'Parent Campaigns:' ),
'not_found' => __( 'No campaigns found.'),
'not_found_in_trash' => __( 'No campaigns found in Trash.' )
);
register_post_type(self::POST_TYPE,
array(
'labels' =>$labels,
'public' => true,
'has_archive' => false,
'description' => self::DESCRIPTION,
'supports' => array(
'title', 'editor',
),
'hierarchical' => false,
'menu_position'=> 9,
'query_var' => self::QUERY_VAR,
'rewrite' => array( 'slug' => '/'.self::POST_TYPE, 'with_front' => false )
// 'rewrite' => array( 'slug' => self::POST_TYPE )
)
);
}
public function single_template($single_template){
global $post;
$found = locate_template('single-'.self::POST_TYPE.'.php');
if($post->post_type == self::POST_TYPE && $found == ''){
$single_template = kCampaignPath.'/templates/single-'.self::POST_TYPE.'.php';
}
return $single_template;
}
public function rewrite_flush() {
$this->create_post_type();
flush_rewrite_rules();
}
public function save_post($post_id){
if(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return;
}
if(isset($_POST['post_type']) && $_POST['post_type'] == self::POST_TYPE && current_user_can('edit_post', $post_id))
{
foreach($this->_meta as $field)
{
// Update the post's meta field
if (isset($_POST[$field['name']]))
update_post_meta($post_id, $field['name'], $_POST[$field['name']]);
}
}
}
}
}