Merged in feature/from-pantheon (pull request #16)

code from pantheon

* code from pantheon
This commit is contained in:
Tony Volpe
2024-01-10 17:03:02 +00:00
parent 054b4fffc9
commit 4eb982d7a8
16492 changed files with 3475854 additions and 0 deletions

View File

@@ -0,0 +1,339 @@
<?php
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_EXPIRE = 15552000; // 6 months (3600 * 24 * 30 * 6)
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 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 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=""){
setcookie(self::kCOOKIE_ID, $id, 0,'/');
setcookie(self::kCOOKIE_PHONE, $phone, 0,'/');
setcookie(self::kCOOKIE_ID_FIVE9, $id_five_9, 0,'/');
setcookie(self::kCOOKIE_WEB_PROMOTION_TEXT, $WebPromotionText , 0,'/');
if(!session_id()){
session_start();
}
$_SESSION[self::kCOOKIE_ID]=$id;
$_SESSION[self::kCOOKIE_PHONE]=$phone;
$_SESSION[self::kCOOKIE_ID_FIVE9]=$id_five_9;
$_SESSION[self::kCOOKIE_WEB_PROMOTION_TEXT]=$WebPromotionText;
}
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;
$LandingURL = $single->LandingURL;
$FriendlyURL = $single->FriendlyURL;
$EndDate = $single->EndDate;
$CampaignName = $single->CampaignName;
$Five9CallbackCampaign = $single->Five9CallbackCampaign;
$WebPromotionText = $single->WebPromotionText;//fill campaign field
$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_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,
)
);
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_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
)
);
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();
}
?>

View File

@@ -0,0 +1,141 @@
<?php
if(!class_exists('IperCptCampaign')) {
class IperCptCampaign
{
//cpt info
const POST_TYPE = "campaign";
const NAME = "Campaign";
const SINGLE_NAME = "Campaign";
const DESCRIPTION = "Post type for Campaign";
const QUERY_VAR = "campaign";
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";
const kMETA_WEB_PROMOTION_TEXT = "WebPromotionText";//Name text for campaign field
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'),
array('name'=>self::kMETA_WEB_PROMOTION_TEXT,'type'=>'input-text','title'=>'Web Promotion Text'),
);
public function __construct(){
add_action('init', array(&$this, 'init'));
add_action('admin_init', array(&$this, 'admin_init'));
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('iper_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",kIperCampaignPath, 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 = kIperCampaignPath.'/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']]);
}
}
}
}
}
?>

View File

@@ -0,0 +1,39 @@
/**
* Created by fabrizio pera on 22/11/16.
*/
function initMetabox(){
console.log("** initMetabox **");
var dateFormat = "yy-mm-dd",
from = $( "#campaign_start_date" )
.datepicker({
dateFormat: dateFormat
})
.on( "change", function() {
to.datepicker( "option", "minDate", getDate( this ) );
}),
to = $( "#campaign_end_date" ).datepicker({
dateFormat: dateFormat
}).on( "change", function() {
from.datepicker( "option", "maxDate", getDate( this ) );
});
function getDate( element ) {
var date;
try {
date = $.datepicker.parseDate( dateFormat, element.value );
} catch( error ) {
date = null;
}
return date;
}
}
if($ == undefined){
window.$ = jQuery.noConflict();
}
$(function(){
initMetabox();
});

View File

@@ -0,0 +1 @@
function initMetabox(){console.log("** initMetabox **");var a="yy-mm-dd",d=$("#campaign_start_date").datepicker({dateFormat:a}).on("change",function(){c.datepicker("option","minDate",b(this))}),c=$("#campaign_end_date").datepicker({dateFormat:a}).on("change",function(){d.datepicker("option","maxDate",b(this))});function b(g){var f;try{f=$.datepicker.parseDate(a,g.value)}catch(e){f=null}return f}}if($==undefined){window.$=jQuery.noConflict()}$(function(){initMetabox()});

View File

@@ -0,0 +1,24 @@
<?php
/**
* Created by PhpStorm.
* User: fabrizio
* Date: 22/11/16
* Time: 12:21
*/
?>
<p><b>Campaign details info</b></p>
<table>
<?php
foreach($this->_meta as $meta):
$value=get_post_meta($post->ID, $meta['name'], true);
$field=$meta['name'];
$title=$meta['title'];
if($meta['type']=='input-text') :
include(sprintf("%s/metabox/input-text.php", dirname(__FILE__))) ;
elseif($meta['type']=='input-date') :
include(sprintf("%s/metabox/input-date.php", dirname(__FILE__))) ;
endif ;
endforeach;
?>
</table>

View File

@@ -0,0 +1,15 @@
<?php
/**
* Created by PhpStorm.
* User: fabrizio
* Date: 22/11/16
* Time: 12:27
*/
?>
<tr>
<td><?php echo $title;?></td>
<td>
<input data-datepicker type="date" id="<?php echo $field;?>" name="<?php echo $field;?>" value="<?php echo $value;?>">
</td>
</tr>

View File

@@ -0,0 +1,18 @@
<?php
/**
* Created by PhpStorm.
* User: fabrizio
* Date: 22/11/16
* Time: 12:23
*/
if (empty($value)){
$value="";
}
?>
<tr>
<td><?php echo $title;?></td>
<td>
<input type="text" id="<?php echo $field;?>" name="<?php echo $field;?>" value="<?php echo $value;?>">
</td>
</tr>

View File

@@ -0,0 +1,70 @@
<?php
session_start();
$now=time();
$campaignTitle = get_the_title();
$campaignID = get_post_meta(get_the_ID(),IperCptCampaign::kMETA_CAMPAIGN_ID,true);
$campaignPhone = get_post_meta(get_the_ID(),IperCptCampaign::kMETA_CAMPAIGN_PHONE,true);
$campaignStart = get_post_meta(get_the_ID(),IperCptCampaign::kMETA_CAMPAIGN_START_DATE,true);
$campaignEnd = get_post_meta(get_the_ID(),IperCptCampaign::kMETA_CAMPAIGN_END_DATE,true);
$campaignLink = get_post_meta(get_the_ID(),IperCptCampaign::kMETA_CAMPAIGN_LANDING_URL,true);
$campaignFive9CallbackCampaign = get_post_meta(get_the_ID(),IperCptCampaign::kMETA_FIVE9,true);
$WebPromotionText = get_post_meta(get_the_ID(),IperCptCampaign::kMETA_WEB_PROMOTION_TEXT,true);
$campaignStart.=" 00:00:00";
$campaignEnd.=" 23:59:59";
$campaignStart = strtotime($campaignStart);
$campaignEnd = strtotime($campaignEnd);
if($now>=$campaignStart && $now<=$campaignEnd){
$controller = IperCampaignController::instance();
$controller->setCampaign($campaignID,$campaignPhone,$campaignFive9CallbackCampaign,$WebPromotionText);
}else{
//campaign expired or not yet started
}
function append_query_string($url) {
return add_query_arg($_GET, $url);
}
add_filter('the_permalink', 'append_query_string');
$permalink = append_query_string($url);
$url = (empty($campaignLink)) ? get_home_url() : $campaignLink;
$myurl = get_option('siteurl');
$campaignurl = (empty($campaignLink)) ? get_home_url() : $campaignLink;
$utm_campaign = $_GET['dynamic_id'];
switch ($utm_campaign) {
case "landline" :
header ("location: /product/home-system-landline/");
break;
case "cellular" :
header ("location: /product/home-system-cellular/");
break;
case "home" :
header ("location: /home-system" );
break;
case "mobile" :
header ("location: /product/mobile-system");
break;
case "fall" :
header ("location: /fall-detection");
break;
case "app" :
header ("location: /mobile-app");
break;
case "quiz" :
header ("location: /free-medical-monitoring-assessment");
break;
case "faq" :
header ("location: /frequently-asked-questions");
break;
case "reviews" :
header ("location: /reviews");
break;
default:
header ("location:" . $url.$permalink);
break;
}