Files
medicalalert-web-reloaded/wp/wp-content/plugins/iper-medical/campaign/IperCampaignController.php
Rachit Bhargava 5d0f0734d8 first commit
2023-07-21 17:12:10 -04:00

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();
}
?>