438 lines
18 KiB
PHP
438 lines
18 KiB
PHP
<?php
|
|
/**
|
|
* Created by PhpStorm.
|
|
* User: fabrizio pera
|
|
* Date: 22/11/16
|
|
* Time: 10:48
|
|
*/
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
die( '-1' );
|
|
}
|
|
|
|
include_once "lib/IperCptCampaign.php";
|
|
|
|
if(!class_exists('IperCampaignController')){
|
|
|
|
define("kIperCampaignPath",dirname(__FILE__));
|
|
define("kPLUGIN_DIR_URL",plugin_dir_url(__FILE__));
|
|
define ("kPLUGIN_DIR_PATH", plugin_dir_path(__FILE__));
|
|
|
|
class IperCampaignController {
|
|
|
|
const kREST_ACTION = "GetWebCampaigns";
|
|
const kCOOKIE_ID = "SESScampaignid";
|
|
const kCOOKIE_ID_FIVE9 = "SESSfive9";
|
|
const kCOOKIE_WEB_PROMOTION_TEXT = "SESSpromotion";
|
|
const kCOOKIE_PHONE = "SESScampaignphone";
|
|
const KCOOKIE_ControlPhone = "SESScontrolphone";
|
|
const KCOOKIE_CanaryPhone = "SESScanaryphone";
|
|
const kCOOKIE_EXPIRE = 15552000; // 6 months (3600 * 24 * 30 * 6)
|
|
const KCOOKIE_WEB_TOP_BAR = "SESStopoffer";
|
|
const KCOOKIE_Google_KW = "SESSgooglekw";
|
|
const KCOOKIE_AB_Test = "SESSabtest";
|
|
const KCOOKIE_ConfirmationPageText = "SESSconfirmationpagetext";
|
|
|
|
protected static $instance;
|
|
public $testVar;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->testVar = "prova";
|
|
add_action( 'plugins_loaded', array( $this, 'plugins_loaded' ));
|
|
//Admin script
|
|
add_action( 'admin_enqueue_scripts', array(&$this,'load_iper_script') );
|
|
add_filter( 'option_cta_tel', array(&$this,'check_campaign_active_tel') );
|
|
add_filter( 'option_assistance_phone', array(&$this,'check_campaign_active_ass_phone') );
|
|
add_shortcode( 'phone_number', array(&$this,'get_phone_number') );
|
|
|
|
add_shortcode( 'campaign_id', array(&$this,'getCampaignID') );
|
|
add_shortcode( 'campaign_five9', array(&$this,'getCampaignFive9') );
|
|
add_shortcode( 'campaign_special', array(&$this,'getCampaignSO') );
|
|
add_shortcode( 'web_promo', array(&$this,'getWebPromotionText') );
|
|
add_shortcode( 'confirmation', array(&$this,'getConfirmationPageText') );
|
|
|
|
$cpt = new IperCptCampaign();
|
|
}
|
|
|
|
public function plugins_loaded(){
|
|
//$this->addFilters();
|
|
}
|
|
|
|
public static function instance() {
|
|
if ( ! isset( self::$instance ) ) {
|
|
self::$instance = new self();
|
|
}
|
|
|
|
return self::$instance;
|
|
}
|
|
|
|
public function check_campaign_active_tel($phonenumber){
|
|
|
|
if(!empty($_COOKIE) && !empty($_COOKIE[self::kCOOKIE_ID])){
|
|
//get campaign
|
|
$campaign = $this->getActiveCampaignPhoneByID($_COOKIE[self::kCOOKIE_ID]);
|
|
if(!empty($campaign)){
|
|
return $campaign;
|
|
}
|
|
}
|
|
|
|
if(!empty($_SESSION[self::kCOOKIE_ID])){
|
|
$campaign = $this->getActiveCampaignPhoneByID($_SESSION[self::kCOOKIE_ID]);
|
|
if(!empty($campaign)){
|
|
return $campaign;
|
|
}
|
|
}
|
|
|
|
return $phonenumber;
|
|
|
|
}
|
|
|
|
public function check_campaign_active_ass_phone($phonenumber){
|
|
if(!empty($_COOKIE) && !empty($_COOKIE[self::kCOOKIE_ID])){
|
|
//get campaign
|
|
$campaign = $this->getActiveCampaignPhoneByID($_COOKIE[self::kCOOKIE_ID]);
|
|
if(!empty($campaign)){
|
|
return $campaign;
|
|
}
|
|
}
|
|
|
|
if(!empty($_SESSION[self::kCOOKIE_ID])){
|
|
$campaign = $this->getActiveCampaignPhoneByID($_SESSION[self::kCOOKIE_ID]);
|
|
if(!empty($campaign)){
|
|
return $campaign;
|
|
}
|
|
}
|
|
|
|
return $phonenumber;
|
|
}
|
|
|
|
|
|
public static function getCampaignID(){
|
|
if(!empty($_COOKIE) && !empty($_COOKIE[self::kCOOKIE_ID])){
|
|
return $_COOKIE[self::kCOOKIE_ID];
|
|
}
|
|
if(!empty($_SESSION[self::kCOOKIE_ID])){
|
|
return $_SESSION[self::kCOOKIE_ID];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public static function getCampaignFive9(){
|
|
if(!empty($_COOKIE) && !empty($_COOKIE[self::kCOOKIE_ID_FIVE9])){
|
|
return $_COOKIE[self::kCOOKIE_ID_FIVE9];
|
|
}
|
|
if(!empty($_SESSION[self::kCOOKIE_ID_FIVE9])){
|
|
return $_SESSION[self::kCOOKIE_ID_FIVE9];
|
|
}
|
|
return null;
|
|
}
|
|
public static function getGoogle_KW(){
|
|
if(!empty($_COOKIE) && !empty($_COOKIE[self::kCOOKIE_Google_KW])){
|
|
return $_COOKIE[self::KCOOKIE_Google_KW];
|
|
}
|
|
if(!empty($_SESSION[self::KCOOKIE_Google_KW])){
|
|
return $_SESSION[self::KCOOKIE_Google_KW];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public static function getAB_Test(){
|
|
if(!empty($_COOKIE) && !empty($_COOKIE[self::KCOOKIE_AB_Test])){
|
|
return $_COOKIE[self::KCOOKIE_AB_Test];
|
|
}
|
|
if(!empty($_SESSION[self::KCOOKIE_AB_Test])){
|
|
return $_SESSION[self::KCOOKIE_AB_Test];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public static function getCanaryPhone(){
|
|
if(!empty($_COOKIE) && !empty($_COOKIE[self::KCOOKIE_CanaryPhone])){
|
|
return $_COOKIE[self::KCOOKIE_CanaryPhone];
|
|
}
|
|
if(!empty($_SESSION[self::KCOOKIE_CanaryPhone])){
|
|
return $_SESSION[self::KCOOKIE_CanaryPhone];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public static function getControlPhone(){
|
|
if(!empty($_COOKIE) && !empty($_COOKIE[self::KCOOKIE_ControlPhone])){
|
|
return $_COOKIE[self::KCOOKIE_ControlPhone];
|
|
}
|
|
if(!empty($_SESSION[self::KCOOKIE_ControlPhone])){
|
|
return $_SESSION[self::KCOOKIE_ControlPhone];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
|
|
public static function getWebPromotionText(){
|
|
if(!empty($_COOKIE) && !empty($_COOKIE[self::kCOOKIE_WEB_PROMOTION_TEXT])){
|
|
return $_COOKIE[self::kCOOKIE_WEB_PROMOTION_TEXT];
|
|
}
|
|
if(!empty($_SESSION[self::kCOOKIE_WEB_PROMOTION_TEXT])){
|
|
return $_SESSION[self::kCOOKIE_WEB_PROMOTION_TEXT];
|
|
}
|
|
return null;
|
|
}
|
|
public static function getConfirmationPageText(){
|
|
if(!empty($_COOKIE) && !empty($_COOKIE[self::KCOOKIE_ConfirmationPageText])){
|
|
return $_COOKIE[self::KCOOKIE_ConfirmationPageText];
|
|
}
|
|
if(!empty($_SESSION[self::KCOOKIE_ConfirmationPageText])){
|
|
return $_SESSION[self::KCOOKIE_ConfirmationPageText];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public static function getCampaignSO(){
|
|
if(!empty($_COOKIE) && !empty($_COOKIE[self::KCOOKIE_WEB_TOP_BAR])){
|
|
return $_COOKIE[self::KCOOKIE_WEB_TOP_BAR];
|
|
}
|
|
if(!empty($_SESSION[self::KCOOKIE_WEB_TOP_BAR])){
|
|
return $_SESSION[self::KCOOKIE_WEB_TOP_BAR];
|
|
}
|
|
return null;
|
|
}
|
|
public function get_phone_number(){
|
|
|
|
$phoneNumber = get_option('cta_tel',true);
|
|
return $phoneNumber;
|
|
}
|
|
|
|
/**
|
|
* @param string $campaignID
|
|
* @return bool|string
|
|
*/
|
|
public function getActiveCampaignPhoneByID($campaignID="-1"){
|
|
|
|
$campaign = get_posts(
|
|
array(
|
|
"post_type"=>IperCptCampaign::POST_TYPE,
|
|
"posts_per_page"=>1,
|
|
"meta_key"=>IperCptCampaign::kMETA_CAMPAIGN_ID,
|
|
"meta_value"=>$campaignID)
|
|
);
|
|
|
|
if (!empty($campaign)){
|
|
$campaign = $campaign[0];
|
|
|
|
//check is active
|
|
$campaignStart = get_post_meta($campaign->ID,IperCptCampaign::kMETA_CAMPAIGN_START_DATE,true);
|
|
$campaignEnd = get_post_meta($campaign->ID,IperCptCampaign::kMETA_CAMPAIGN_END_DATE,true);
|
|
$campaignStart.=" 00:00:00";
|
|
$campaignEnd.=" 23:59:59";
|
|
$campaignStart = strtotime($campaignStart);
|
|
$campaignEnd = strtotime($campaignEnd);
|
|
$now=time();
|
|
if($now>=$campaignStart && $now<=$campaignEnd) {
|
|
|
|
$campaignPhone = get_post_meta($campaign->ID,IperCptCampaign::kMETA_CAMPAIGN_PHONE,true);
|
|
return $campaignPhone;
|
|
|
|
}else{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public function setCampaign($id="",$phone="",$id_five_9="",$WebPromotionText="",$WebTopBarSpecialOffer="",$Google_KW, $ABTest, $ConfirmationPageText="",$CanaryPhone="",$ControlPhone=""){
|
|
|
|
setcookie(self::kCOOKIE_ID, $id, 0,'/');
|
|
setcookie(self::kCOOKIE_PHONE, $phone, 0,'/');
|
|
setcookie(self::KCOOKIE_CanaryPhone, $CanaryPhone , 0,'/');
|
|
setcookie(self::KCOOKIE_ControlPhone, $ControlPhone , 0,'/');
|
|
setcookie(self::kCOOKIE_ID_FIVE9, $id_five_9, 0,'/');
|
|
setcookie(self::kCOOKIE_WEB_PROMOTION_TEXT, $WebPromotionText , 0,'/');
|
|
setcookie(self::KCOOKIE_WEB_TOP_BAR, $WebTopBarSpecialOffer , 0,'/');
|
|
setcookie(self::KCOOKIE_Google_KW, $Google_KW , 0,'/');
|
|
setcookie(self::KCOOKIE_AB_Test, $ABTest , 0,'/');
|
|
setcookie(self::KCOOKIE_ConfirmationPageText, $ConfirmationPageText , 0,'/');
|
|
if(!session_id()){
|
|
session_start();
|
|
}
|
|
|
|
$_SESSION[self::kCOOKIE_ID]=$id;
|
|
$_SESSION[self::kCOOKIE_PHONE]=$phone;
|
|
$_SESSION[self::KCOOKIE_CanaryPhone]=$CanaryPhone;
|
|
$_SESSION[self::KCOOKIE_ControlPhone]=$ControlPhone;
|
|
$_SESSION[self::kCOOKIE_ID_FIVE9]=$id_five_9;
|
|
$_SESSION[self::kCOOKIE_WEB_PROMOTION_TEXT]=$WebPromotionText;
|
|
$_SESSION[self::KCOOKIE_WEB_TOP_BAR]=$WebTopBarSpecialOffer;
|
|
$_SESSION[self::KCOOKIE_Google_KW]=$Google_KW;
|
|
$_SESSION[self::KCOOKIE_AB_Test]=$ABTest;
|
|
$_SESSION[self::KCOOKIE_ConfirmationPageText]=$ConfirmationPageText;
|
|
}
|
|
|
|
public function activate(){
|
|
|
|
$cpt = new IperCptCampaign();
|
|
$cpt->rewrite_flush();
|
|
}
|
|
|
|
public function cronJob($data){
|
|
|
|
//TODO
|
|
|
|
if(!empty($data->ResponseBody)){
|
|
|
|
//set all existing campaigns flag to delete
|
|
$existings = get_posts(
|
|
array(
|
|
"post_type"=>IperCptCampaign::POST_TYPE,
|
|
"posts_per_page"=>-1,
|
|
"post_status"=>"publish"
|
|
)
|
|
);
|
|
|
|
if(!empty($existings)){
|
|
foreach ($existings as $post){
|
|
update_post_meta($post->ID,IperCptCampaign::kMETA_DELETE,true);
|
|
}
|
|
}
|
|
unset($existings);
|
|
|
|
foreach ($data->ResponseBody as $single):
|
|
// Match GetWebCampaigns CampaignDescription
|
|
$CampaignID = $single->CampaignID;
|
|
$StartDate = $single->StartDate;
|
|
$PhoneNumber = $single->PhoneNumber;
|
|
$CanaryPhone = $single->CanaryPhoneNumber;
|
|
$ControlPhone = $single->ControlPhoneNumber;
|
|
$LandingURL = $single->LandingURL;
|
|
$FriendlyURL = $single->FriendlyURL;
|
|
$EndDate = $single->EndDate;
|
|
$CampaignName = $single->CampaignName;
|
|
$Five9CallbackCampaign = $single->Five9CallbackCampaign;
|
|
$WebPromotionText = $single->WebPromotionText;//fill campaign field
|
|
$WebTopBarSpecialOffer = $single->WebTopBarSpecialOffer;
|
|
$Google_KW = $single->GoogleKW;
|
|
$ABTest = $single->ABTest;
|
|
$ConfirmationPageText = $single->ConfirmationPageText;
|
|
|
|
|
|
$postname = str_replace(get_bloginfo('wpurl'),"",$FriendlyURL);
|
|
|
|
//find if exists post with this meta key
|
|
$post = get_posts(
|
|
array(
|
|
"post_type"=>IperCptCampaign::POST_TYPE,
|
|
"posts_per_page"=>-1,
|
|
"post_status"=>"publish",
|
|
"meta_key"=>IperCptCampaign::kMETA_CAMPAIGN_ID,
|
|
"meta_value"=>$CampaignID
|
|
)
|
|
);
|
|
|
|
if(!empty($post)){
|
|
//update post meta
|
|
$post = $post[0];
|
|
update_post_meta($post->ID,IperCptCampaign::kMETA_DELETE,false);
|
|
$my_post = array(
|
|
'ID'=> $post->ID,
|
|
'post_title' => wp_strip_all_tags( $CampaignName ),
|
|
'post_content' => "",
|
|
'post_status' => 'publish',
|
|
'post_author' => 1,
|
|
'post_type' => IperCptCampaign::POST_TYPE,
|
|
'post_name' => $postname,
|
|
'meta_input' => array(
|
|
IperCptCampaign::kMETA_CAMPAIGN_ID => $CampaignID,
|
|
IperCptCampaign::kMETA_CAMPAIGN_START_DATE => $StartDate,
|
|
IperCptCampaign::kMETA_CAMPAIGN_PHONE => $PhoneNumber,
|
|
IperCptCampaign::KMETA_CanaryPhone => $CanaryPhone,//pull text from sales force
|
|
IperCptCampaign::KMETA_ControlPhone => $ControlPhone,//pull text from sales force
|
|
IperCptCampaign::kMETA_CAMPAIGN_LANDING_URL => $LandingURL,
|
|
IperCptCampaign::kMETA_CAMPAIGN_SHORT_URL => $FriendlyURL,
|
|
IperCptCampaign::kMETA_CAMPAIGN_END_DATE => $EndDate,
|
|
IperCptCampaign::kMETA_CAMPAIGN_NAME => $CampaignName,
|
|
IperCptCampaign::kMETA_FIVE9 => $Five9CallbackCampaign,
|
|
IperCptCampaign::kMETA_WEB_PROMOTION_TEXT => $WebPromotionText,//pull text from sales force
|
|
IperCptCampaign::KMETA_WEB_TOP_BAR => $WebTopBarSpecialOffer,//pull text from sales force
|
|
IperCptCampaign::KMETA_Google_KW => $Google_KW,//pull text from sales force
|
|
IperCptCampaign::KMETA_AB_Test => $ABTest,//pull text from sales force
|
|
IperCptCampaign::KMETA_ConfirmationPageText => $ConfirmationPageText
|
|
)
|
|
);
|
|
|
|
wp_update_post($my_post);
|
|
|
|
echo "\nUPDATE CAMPAIGN ".$CampaignName;
|
|
}else{
|
|
//insert post
|
|
|
|
$my_post = array(
|
|
'post_title' => wp_strip_all_tags( $CampaignName ),
|
|
'post_content' => "",
|
|
'post_status' => 'publish',
|
|
'post_author' => 1,
|
|
'post_type' => IperCptCampaign::POST_TYPE,
|
|
'post_name' => $postname,
|
|
'meta_input' => array(
|
|
IperCptCampaign::kMETA_CAMPAIGN_ID => $CampaignID,
|
|
IperCptCampaign::kMETA_CAMPAIGN_START_DATE => $StartDate,
|
|
IperCptCampaign::kMETA_CAMPAIGN_PHONE => $PhoneNumber,
|
|
IperCptCampaign::KMETA_CanaryPhone => $CanaryPhone,//pull text from sales force
|
|
IperCptCampaign::KMETA_ControlPhone => $ControlPhone,//pull text from sales force
|
|
IperCptCampaign::kMETA_CAMPAIGN_LANDING_URL => $LandingURL,
|
|
IperCptCampaign::kMETA_CAMPAIGN_SHORT_URL => $FriendlyURL,
|
|
IperCptCampaign::kMETA_CAMPAIGN_END_DATE => $EndDate,
|
|
IperCptCampaign::kMETA_CAMPAIGN_NAME => $CampaignName,
|
|
IperCptCampaign::kMETA_FIVE9 => $Five9CallbackCampaign,
|
|
IperCptCampaign::kMETA_WEB_PROMOTION_TEXT => $WebPromotionText,//pull text from sales force
|
|
IperCptCampaign::KMETA_AB_Test => $ABTest,//pull text from sales force
|
|
IperCptCampaign::KMETA_WEB_TOP_BAR => $WebTopBarSpecialOffer,//pull text from sales force
|
|
IperCptCampaign::KMETA_ConfirmationPageText => $ConfirmationPageText//pull text from sales force
|
|
)
|
|
);
|
|
|
|
wp_insert_post($my_post);
|
|
|
|
echo "\nCreated Campaign: ".$CampaignName;
|
|
}
|
|
|
|
endforeach;
|
|
|
|
$todelete = get_posts(
|
|
array(
|
|
"post_type"=>IperCptCampaign::POST_TYPE,
|
|
"posts_per_page"=>-1,
|
|
"post_status"=>"publish",
|
|
"meta_key"=>IperCptCampaign::kMETA_DELETE,
|
|
"meta_value"=>true
|
|
)
|
|
);
|
|
|
|
if(!empty($todelete)){
|
|
echo "\n\n*** CAMPAIGN DELETE ***";
|
|
foreach ($todelete as $post){
|
|
echo "\n".$post->post_title;
|
|
wp_trash_post($post->ID);
|
|
}
|
|
}
|
|
unset($todelete);
|
|
}
|
|
}
|
|
|
|
public function load_iper_script($hook){
|
|
//edit partner
|
|
if(('post.php'== $hook || 'post-new.php'== $hook ) && get_post_type()==IperCptCampaign::POST_TYPE ){
|
|
|
|
//include metabox script
|
|
wp_enqueue_style('jquery-ui');
|
|
wp_enqueue_script('jquery-ui-datepicker');
|
|
wp_enqueue_script("iper.campaign.metabox", kPLUGIN_DIR_URL. 'res/js/iper.campaign.metabox.min.js',false, filemtime(kPLUGIN_DIR_PATH. 'res/js/iper.campaign.metabox.min.js') );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if(class_exists('IperCampaignController')){
|
|
register_activation_hook(__FILE__, array('IperCampaignController', 'activate'));
|
|
IperCampaignController::instance();
|
|
}
|
|
?>
|