Current File : /home/getxxhzo/xpertbee.com/wp-content/plugins/popup-builder/com/classes/ConvertToNewVersion.php |
<?php
namespace sgpb;
use sgpb\AdminHelper;
use \SGPBConfigDataHelper;
class ConvertToNewVersion
{
private $id;
private $content = '';
private $type;
private $title;
private $options;
private $customOptions = array();
public function setContent($content)
{
$this->content = $content;
}
public function getContent()
{
return $this->content;
}
public function setType($type)
{
if ($type == 'shortcode') {
$type = 'html';
}
$this->type = $type;
}
public function getType()
{
return $this->type;
}
public function setTitle($title)
{
$this->title = $title;
}
public function getTitle()
{
return $this->title;
}
public function setId($id)
{
$this->id = (int)$id;
}
public function getId()
{
return $this->id;
}
public function setOptions($options)
{
$this->options = $options;
}
public function getOptions()
{
return $this->options;
}
public function setCustomOptions($customOptions)
{
$this->customOptions = $customOptions;
}
public function getCustomOptions()
{
return $this->customOptions;
}
public static function convert()
{
$obj = new self();
$obj->insertDataToNew();
}
public function insertDataToNew()
{
$idsMapping = array();
Installer::install();
Installer::registerPlugin();
$popups = $this->getAllSavedPopups();
$this->convertSettings();
$arr = array();
$popupPreviewId = get_option('popupPreviewId');
foreach ($popups as $popup) {
if (empty($popup)) {
continue;
}
// we should not convert preview popup
if ($popup['id'] == $popupPreviewId) {
continue;
}
$popupObj = $this->popupObjectFromArray($popup);
$arr[] = $popupObj;
$args = array(
'post_title' => $popupObj->getTitle(),
'post_content' => $popupObj->getContent(),
'post_status' => 'publish',
'post_type' => SG_POPUP_POST_TYPE
);
$id = $popupObj->getId();
$newOptions = $this->getNewOptionsFormSavedData($popupObj);
$newPopupId = @wp_insert_post($args);
$newOptions['sgpb-post-id'] = $newPopupId;
$this->saveOtherOptions($newOptions);
update_post_meta($newPopupId, 'sg_popup_options', $newOptions);
$idsMapping[$id] = $newPopupId;
}
$this->convertCounter($idsMapping);
$this->convertSubscribers();
update_option('sgpbConvertedIds', $idsMapping);
return $arr;
}
public function convertSubscribers()
{
global $wpdb;
$oldsubscribersTableName = $wpdb->prefix.'sg_subscribers';
$subscribersTableName = $wpdb->prefix.SGPB_SUBSCRIBERS_TABLE_NAME;
$subscribers = $wpdb->get_results( $wpdb->prepare( "SELECT `id`, `firstName`, `lastName`, `email`, `subscriptionType`, `status` from $oldsubscribersTableName" ), ARRAY_A);
if (empty($subscribers)) {
return false;
}
foreach ($subscribers as $subscriber) {
$subscriber['subscriptionType'] = $this->getPostByTitle($subscriber['subscriptionType']);
$date = gmdate('Y-m-d');
$wpdb->query( $wpdb->prepare("INSERT INTO $subscribersTableName (`firstName`, `lastName`, `email`, `cDate`, `subscriptionType`, `unsubscribed`) VALUES (%s, %s, %s, %s, %d, %d) ", $subscriber['firstName'], $subscriber['lastName'], $subscriber['email'], $date, $subscriber['subscriptionType'], 0) );
}
}
private function getPostByTitle($pageTitle, $output = OBJECT)
{
global $wpdb;
$post = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_title = %s AND post_type='popupbuilder'", $pageTitle));
if (!empty($post)) {
return get_post($post, $output)->ID;
}
return null;
}
/**
* Convert settings section saved options to new version
*
* @since 2.6.7.6
*
* @return bool
*/
private function convertSettings()
{
global $wpdb;
$settings = $wpdb->get_row('SELECT options FROM '.$wpdb->prefix .'sg_popup_settings WHERE id = 1', ARRAY_A);
if (empty($settings['options'])) {
return false;
}
$settings = json_decode($settings['options'], true);
$deleteData = 0;
if (!empty($settings['tables-delete-status'])) {
$deleteData = 1;
}
$userRoles = $settings['plugin_users_role'];
if (empty($userRoles) || !is_array($userRoles)) {
$userRoles = array();
}
$userRoles = array_map(function($role) {
// it's remove sgpb_ keyword from selected values
$role = substr($role, 5, strlen($role)-1);
return $role;
}, $userRoles);
update_option('sgpb-user-roles', $userRoles);
update_option('sgpb-dont-delete-data', $deleteData);
return true;
}
private function convertCounter($idsMapping)
{
$oldCounter = get_option('SgpbCounter');
if (!$oldCounter) {
return false;
}
$newCounter = array();
foreach ($oldCounter as $key => $value) {
if (isset($idsMapping[$key])){
$newId = $idsMapping[$key];
$newCounter[$newId] = $value;
}
}
update_option('SgpbCounter', $newCounter);
return true;
}
private function getAllSavedPopups()
{
global $wpdb;
$oldsg_popupsTableName = $wpdb->prefix.'sg_popup';
$popups = $wpdb->get_results( $wpdb->prepare("SELECT `id`, `type`, `title`, `options` from $oldsg_popupsTableName ORDER BY id" ), ARRAY_A);
return $popups;
}
public function getNewOptionsFormSavedData($popup)
{
$options = $popup->getOptions();
$customOptions = $popup->getCustomOptions();
$options = array_merge($options, $customOptions);
// return addons event from add_connections data
$addonsEvent = $this->getAddonsEventFromPopup($popup);
if ($addonsEvent) {
$options = array_merge($options, $addonsEvent);
}
$options = $this->filterOptions($options);
$names = $this->getNamesMapping();
$newData = array();
$type = $popup->getType();
if (empty($names)) {
return $newData;
}
$newData['sgpb-type'] = $type;
foreach ($names as $oldName => $newName) {
if (isset($options[$oldName])) {
$optionName = $this->changeOldValues($oldName, $options[$oldName]);
$newData[$newName] = $optionName;
}
}
$newData['sgpb-enable-popup-overlay'] = 'on';
$newData['sgpb-show-background'] = 'on';
return $newData;
}
private function saveOtherOptions($options)
{
$popupId = (int)$options['sgpb-post-id'];
$mobileOperator = '';
$conditions = array();
$conditions['sgpb-target'] = array(array(array('param' => 'not_rule')));
$conditions['sgpb-conditions'] = array(array());
$eventsInitialData = array(
array(
)
);
if (!empty($options['sgpb-option-exit-intent-enable'])) {
$eventsInitialData[0][] = array(
'param' => 'exitIntent',
'value' => isset($options['sgpb-option-exit-intent-type']) ? $options['sgpb-option-exit-intent-type'] : '',
'hiddenOption' => array(
'sgpb-exit-intent-expire-time' => isset($options['sgpb-exit-intent-expire-time']) ? $options['sgpb-exit-intent-expire-time'] : '',
'sgpb-exit-intent-cookie-level' => isset($options['sgpb-exit-intent-cookie-level']) ? $options['sgpb-exit-intent-cookie-level'] : '',
'sgpb-exit-intent-soft-from-top' => isset($options['sgpb-exit-intent-soft-from-top']) ? $options['sgpb-exit-intent-soft-from-top'] : ''
)
);
}
else if (!empty($options['sgpb-option-enable-ad-block'])) {
$eventsInitialData[0][] = array(
'param' => 'AdBlock',
'value' => $options['sgpb-popup-delay'],
'hiddenOption' => array()
);
}
// after inactivity
if (!empty($options['sgpb-inactivity-status'])) {
$eventsInitialData[0][] = array(
'param' => 'inactivity',
'value' => isset($options['sgpb-inactivity-timer']) ? $options['sgpb-inactivity-timer'] : '',
'hiddenOption' => array()
);
}
// after scroll
if (!empty($options['sgpb-onscroll-status'])) {
$eventsInitialData[0][] = array(
'param' => 'onScroll',
'value' => isset($options['sgpb-onscroll-percentage']) ? $options['sgpb-onscroll-percentage'] : '',
'hiddenOption' => array()
);
}
if (empty($eventsInitialData[0])) {
$eventsInitialData[0][] = array('param' => 'load', 'value' => '');
}
update_post_meta($popupId, 'sg_popup_events', $eventsInitialData);
// by user status (logged in/out)
if (!empty($options['sgpb-by-user-status'])) {
$operator = '==';
if (isset($options['sgpb-for-logged-in-user']) && $options['sgpb-for-logged-in-user'] === 'false') {
$operator = '!=';
}
$conditions['sgpb-conditions'][0][] = array(
'param' => 'groups_user_role',
'operator' => $operator,
'value' => 'loggedIn'
);
}
// hide or show on mobile
if (isset($options['sgpb-hide-on-mobile']) && $options['sgpb-hide-on-mobile'] == 'on') {
$conditions['sgpb-conditions'][0][] = array(
'param' => 'groups_devices',
'operator' => '!=',
'value' => array(
'is_mobile'
)
);
}
if (isset($options['sgpb-only-on-mobile']) && $options['sgpb-only-on-mobile'] == 'on') {
$conditions['sgpb-conditions'][0][] = array(
'param' => 'groups_devices',
'operator' => '==',
'value' => array(
'is_mobile'
)
);
}
// detect by country
if (isset($options['sgpb-by-country']) && $options['sgpb-by-country'] == 'on') {
if (isset($options['sgpb-allow-countries'])) {
$options['sgpb-allow-countries'] = '!=';
if ($options['sgpb-allow-countries'] == 'allow') {
$options['sgpb-allow-countries'] = '==';
}
}
$conditions['sgpb-conditions'][0][] = array(
'param' => 'groups_countries',
'operator' => isset($options['sgpb-allow-countries']) ? $options['sgpb-allow-countries'] : '',
'value' => explode(',', (isset($options['sgpb-countries-iso']) ? $options['sgpb-countries-iso'] : ''))
);
}
update_post_meta($popupId, 'sg_popup_target', $conditions);
// random popup
if (isset($options['sgpb-random-popup']) && $options['sgpb-random-popup'] == 'on') {
$randomPopupCategory = AdminHelper::getTaxonomyBySlug(SG_RANDOM_TAXONOMY_SLUG);
wp_set_object_terms($popupId, SG_RANDOM_TAXONOMY_SLUG, SG_POPUP_CATEGORY_TAXONOMY, true);
}
$this->saveProTarget($options);
// MailChimp
$mailchimpApiKey = get_option("SG_MAILCHIMP_API_KEY");
if ($mailchimpApiKey) {
update_option('SGPB_MAILCHIMP_API_KEY', $mailchimpApiKey);
}
// AWeber
$aweberAccessToken = get_option('sgAccessToken');
if ($aweberAccessToken) {
$requestTokenSecret = get_option('requestTokenSecret');
$accessTokenSecret = get_option('sgAccessTokenSecret');
update_option('sgpbRequestTokenSecret', $requestTokenSecret);
update_option('sgpbAccessTokenSecret', $accessTokenSecret);
update_option('sgpbAccessToken', $aweberAccessToken);
}
return $options;
}
public function saveProTarget($options)
{
if (empty($options)) {
return;
}
$popupId = (int)$options['sgpb-post-id'];
// It's got already saved targets for do not override already saved data
$popupSavedTarget = get_post_meta($popupId, 'sg_popup_target');
$target = array();
$target['sgpb-target'] = array();
$target['sgpb-conditions'] = array();
if (!empty($popupSavedTarget[0]['sgpb-conditions'])) {
$target['sgpb-conditions'] = $popupSavedTarget[0]['sgpb-conditions'];
}
$isSavedToHome = false;
if (!empty($options['allPagesStatus'])) {
if ($options['allPages'] == 'selected') {
$savedPages = isset($options['allSelectedPages']) ? (array)$options['allSelectedPages'] : array();
$savedPagesValues = array_values($savedPages);
// -1 mean saved for home page
if (in_array('-1', $savedPagesValues)) {
$isSavedToHome = true;
}
$args = array(
'post__in' => $savedPagesValues,
'posts_per_page' => 10,
'post_type' => 'page'
);
$searchResults = SGPBConfigDataHelper::getPostTypeData($args);
if (!empty($searchResults)) {
$target['sgpb-target'][0][] = array('param' => 'page_selected', 'operator' => '==', 'value' => $searchResults);
}
}
else {
$target['sgpb-target'][0][] = array('param' => 'page_all', 'operator' => '==');
}
}
if (!empty($options['allPostsStatus'])) {
$allPosts = $options['allPosts'];
if ($allPosts == 'selected') {
$savedPosts = (array)$options['allSelectedPosts'];
$savedPostsValues = array_values($savedPosts);
// -1 mean saved for home page
if (in_array('-1', $savedPostsValues)) {
$isSavedToHome = true;
}
$args = array(
'post__in' => $savedPostsValues,
'posts_per_page' => 10,
'post_type' => 'post'
);
$searchResults = SGPBConfigDataHelper::getPostTypeData($args);
if (!empty($searchResults)) {
$target['sgpb-target'][0][] = array('param' => 'post_selected', 'operator' => '==', 'value' => $searchResults);
}
}
else if ($allPosts == 'all') {
$target['sgpb-target'][0][] = array('param' => 'post_all', 'operator' => '==');
}
else {
$selectedPostCategories = array_values($options['posts-all-categories']);
$target['sgpb-target'][0][] = array('param' => 'post_category', 'operator' => '==', 'value' => $selectedPostCategories);
}
}
if ($isSavedToHome) {
$target['sgpb-target'][0][] = array('param' => 'page_type', 'operator' => '==', 'value' => array('is_home_page', 'is_home'));
}
if (!empty($options['allCustomPostsStatus'])) {
$customPostTypes = $options['all-custom-posts'];
if (!empty($customPostTypes)) {
$selectedCustomPosts = $options['allSelectedCustomPosts'];
if ($options['showAllCustomPosts'] == 'selected') {
foreach ($customPostTypes as $customPostType) {
$args = array(
'post__in' => array_values($selectedCustomPosts),
'posts_per_page' => 10,
'post_type' => $customPostType
);
$searchResults = SGPBConfigDataHelper::getPostTypeData($args);
if (!empty($searchResults)) {
$target['sgpb-target'][0][] = array('param' => $customPostType.'_selected', 'operator' => '==', 'value' => $searchResults);
}
}
}
else {
$target['sgpb-target'][0][] = array('param' => 'post_type', 'operator' => '==', 'value' => array_values($customPostTypes));
}
}
}
update_post_meta($popupId, 'sg_popup_target', $target);
}
/**
* Get Addons options
*
* @param obj $popup
*
* @return bool|array
*/
private function getAddonsEventFromPopup($popup)
{
if (empty($popup)) {
return false;
}
$popupId = $popup->getId();
global $wpdb;
$sg_popup_addons_connectionTableName = $wpdb->prefix.'sg_popup_addons_connection';
$results = $wpdb->get_results($wpdb->prepare( "SELECT options FROM $sg_popup_addons_connectionTableName WHERE popupId = %d and extensionType = 'option'", $popupId) , ARRAY_A);
if (empty($results)) {
return false;
}
$options = array();
// it's collect all events saved values ex Exit Intent and AdBlock
foreach ($results as $result) {
$currentOptions = json_decode($result['options'], true);
if (empty($currentOptions)) {
continue;
}
$options = array_merge($options, $currentOptions);
}
return $options;
}
/**
* Filter and change some related values for new version
*
* @param array $options
*
* @return array $options
*/
private function filterOptions($options)
{
if (isset($options['effect']) && $options['effect'] != 'No effect') {
$options['sgpb-open-animation'] = 'on';
}
if (isset($options['isActiveStatus']) && $options['isActiveStatus'] == 'off') {
$options['isActiveStatus'] = '';
}
if (empty($options['sgTheme3BorderColor'])) {
$options['sgTheme3BorderColor'] = '#000000';
}
if (isset($options['popupContentBackgroundRepeat']) && ($options['popupContentBackgroundRepeat'] != 'no-repeat' && $options['popupContentBackgroundSize'] == 'auto')) {
$options['popupContentBackgroundSize'] = 'repeat';
}
$themeNumber = 1;
if (isset($options['theme'])) {
$themeNumber = preg_replace('/[^0-9]/', '', $options['theme']);
}
if (isset($options['aweber-success-behavior']) && $options['aweber-success-behavior'] == 'redirectToUrl') {
$options['aweber-success-behavior'] = 'redirectToURL';
}
// pro options
if (isset($options['disablePopupOverlay'])) {
$options['sgpb-enable-popup-overlay'] = '';
}
// contact form new options
if (isset($options['contact-success-behavior']) && $options['contact-success-behavior'] == 'redirectToUrl') {
$options['contact-success-behavior'] = 'redirectToURL';
}
if (isset($options['contact-text-input-bgcolor'])) {
$options['sgpb-contact-message-bg-color'] = $options['contact-text-input-bgcolor'];
}
if (isset($options['contact-text-bordercolor'])) {
$options['sgpb-contact-message-border-color'] = $options['contact-text-bordercolor'];
}
if (isset($options['contact-inputs-color'])) {
$options['sgpb-contact-message-text-color'] = $options['contact-inputs-color'];
}
if (isset($options['contact-placeholder-color'])) {
$options['sgpb-contact-message-placeholder-color'] = $options['contact-placeholder-color'];
}
if (isset($options['contact-inputs-border-width'])) {
$options['sgpb-contact-message-border-width'] = $options['contact-inputs-border-width'];
}
if (isset($options['contact-success-popups-list'])) {
$options['contact-success-popups-list'] = sgpGetCorrectPopupId($options['contact-success-popups-list']);
}
if (isset($options['popup-content-padding'])) {
// add theme default padding to content padding
switch ($themeNumber) {
case 1:
$options['popup-content-padding'] += 7;
break;
case 4:
case 6:
$options['popup-content-padding'] += 12;
break;
case 2:
case 3:
$options['popup-content-padding'] += 0;
break;
case 5:
$options['popup-content-padding'] += 5;
break;
}
}
switch ($themeNumber) {
case 1:
$buttonImageWidth = 21;
$buttonImageHeight = 21;
break;
case 2:
$buttonImageWidth = 20;
$buttonImageHeight = 20;
break;
case 3:
$buttonImageWidth = 38;
$buttonImageHeight = 19;
break;
case 5:
$buttonImageWidth = 17;
$buttonImageHeight = 17;
break;
case 6:
$buttonImageWidth = 30;
$buttonImageHeight = 30;
break;
default:
$buttonImageWidth = 0;
$buttonImageHeight = 0;
}
// social popup add to default value
if (empty($options['sgMailLable'])) {
$options['sgMailLable'] = 'E-mail';
}
if (empty($options['fbShareLabel'])) {
$options['fbShareLabel'] = 'Share';
}
if (empty($options['lindkinLabel'])) {
$options['lindkinLabel'] = 'Share';
}
if (empty($options['googLelabel'])) {
$options['googLelabel'] = '+1';
}
if (empty($options['twitterLabel'])) {
$options['twitterLabel'] = 'Tweet';
}
if (empty($options['pinterestLabel'])) {
$options['pinterestLabel'] = 'Pin it';
}
if (isset($options['subs-success-behavior']) && $options['subs-success-behavior'] == 'redirectToUrl') {
$options['subs-success-behavior'] = 'redirectToURL';
}
$options['sgpb-subs-form-bg-color'] = '#FFFFFF';
$options['sgpb-button-image-width'] = $buttonImageWidth;
$options['sgpb-button-image-height'] = $buttonImageHeight;
// pro options customizations
if (SGPB_POPUP_PKG > SGPB_POPUP_PKG_FREE) {
if (empty($options['sgpb-restriction-yes-btn-radius-type'])) {
$options['sgpb-restriction-yes-btn-radius-type'] = '%';
}
if (empty($options['sgpb-restriction-no-btn-radius-type'])) {
$options['sgpb-restriction-no-btn-radius-type'] = '%';
}
if (empty($options['sgpb-restriction-yes-btn-border-color'])) {
// border color should be like background color
$options['sgpb-restriction-yes-btn-border-color'] = $options['yesButtonBackgroundColor'];
}
if (empty($options['sgpb-restriction-no-btn-border-color'])) {
// border color should be like background color
$options['sgpb-restriction-no-btn-border-color'] = $options['noButtonBackgroundColor'];
}
}
return $options;
}
public function changeOldValues($optionName, $optionValue)
{
if ($optionName == 'theme') {
$themeNumber = preg_replace('/[^0-9]/', '', $optionValue);
$optionValue = 'sgpb-theme-'.$themeNumber;
}
return $optionValue;
}
private function popupObjectFromArray($arr)
{
global $wpdb;
$options = json_decode($arr['options'], true);
$type = $arr['type'];
if (empty($type)) {
return false;
}
$this->setId($arr['id']);
$this->setType($type);
$this->setTitle($arr['title']);
$this->setContent('');
switch ($type) {
case 'image':
$sg_image_popup = $wpdb->prefix.'sg_image_popup';
$result = $wpdb->get_row( $wpdb->prepare("SELECT `url` FROM $sg_image_popup WHERE id = %d", $arr['id']) , ARRAY_A);
if (!empty($result['url'])) {
$options['image-url'] = $result['url'];
}
break;
case 'html':
$sg_html_popup = $wpdb->prefix.'sg_html_popup';
$result = $wpdb->get_row( $wpdb->prepare("SELECT `content` FROM $sg_html_popup WHERE id = %d", $arr['id']), ARRAY_A);
if (!empty($result['content'])) {
$this->setContent($result['content']);
}
break;
case 'fblike':
$sg_fblike_popup = $wpdb->prefix.'sg_fblike_popup';
$result = $wpdb->get_row( $wpdb->prepare("SELECT `content`, `options` FROM $sg_fblike_popup WHERE id = %d", $arr['id']), ARRAY_A);
if (!empty($result['content'])) {
$this->setContent($result['content']);
}
$customOptions = $result['options'];
$customOptions = json_decode($customOptions, true);
if (!empty($options)) {
$this->setCustomOptions($customOptions);
}
break;
case 'shortcode':
$sg_shortCode_popup = $wpdb->prefix.'sg_shortCode_popup';
$result = $wpdb->get_row( $wpdb->prepare("SELECT `url` FROM $sg_shortCode_popup WHERE id = %d", $arr['id']), ARRAY_A);
if (!empty($result['url'])) {
$this->setContent($result['url']);
}
break;
case 'iframe':
$sg_iframe_popup = $wpdb->prefix.'sg_iframe_popup';
$result = $wpdb->get_row( $wpdb->prepare("SELECT `url` FROM $sg_iframe_popup WHERE id = %d", $arr['id']), ARRAY_A);
if (!empty($result['url'])) {
$options['iframe-url'] = $result['url'];
}
break;
case 'video':
$sg_video_popup = $wpdb->prefix.'sg_video_popup';
$result = $wpdb->get_row( $wpdb->prepare("SELECT `url`, `options` FROM $sg_video_popup WHERE id = %d", $arr['id']), ARRAY_A);
if (!empty($result['url'])) {
$options['video-url'] = $result['url'];
}
$customOptions = $result['options'];
$customOptions = json_decode($customOptions, true);
if (!empty($customOptions)) {
$this->setCustomOptions($customOptions);
}
break;
case 'ageRestriction':
$sg_age_restriction_popup = $wpdb->prefix.'sg_age_restriction_popup';
$result = $wpdb->get_row( $wpdb->prepare("SELECT `content`, `yesButton` as `yesButtonLabel`, `noButton` as `noButtonLabel`, `url` as `restrictionUrl` FROM $sg_age_restriction_popup WHERE id = %d", $arr['id']), ARRAY_A);
if (!empty($result['content'])) {
$this->setContent($result['content']);
}
unset($result['content']);
if (!empty($result)) {
$this->setCustomOptions($result);
}
break;
case 'social':
$sg_social_popup = $wpdb->prefix.'sg_social_popup';
$result = $wpdb->get_row( $wpdb->prepare("SELECT `socialContent`, `buttons`, `socialOptions` FROM $sg_social_popup WHERE id = %d", $arr['id']), ARRAY_A);
if (!empty($result['socialContent'])) {
$this->setContent($result['socialContent']);
}
$buttons = json_decode($result['buttons'], true);
$socialOptions = json_decode($result['socialOptions'], true);
$socialAllOptions = array_merge($buttons, $socialOptions);
$this->setCustomOptions($socialAllOptions);
break;
case 'subscription':
$sg_subscription_popup = $wpdb->prefix.'sg_subscription_popup';
$result = $wpdb->get_row( $wpdb->prepare("SELECT `content`, `options` FROM $sg_subscription_popup WHERE id = %d", $arr['id']), ARRAY_A);
if (!empty($result['content'])) {
$this->setContent($result['content']);
}
$subsOptions = $result['options'];
$subsOptions = json_decode($subsOptions, true);
if (!empty($subsOptions)) {
$this->setCustomOptions($subsOptions);
}
break;
case 'countdown':
$sg_countdown_popup = $wpdb->prefix.'sg_countdown_popup';
$result = $wpdb->get_row( $wpdb->prepare("SELECT `content`, `options` FROM $sg_countdown_popup WHERE id = %d", $arr['id']), ARRAY_A);
if (!empty($result['content'])) {
$this->setContent($result['content']);
}
$customOptions = $result['options'];
$customOptions = json_decode($customOptions, true);
if (!empty($options)) {
$this->setCustomOptions($customOptions);
}
break;
case 'contactForm':
$sg_contact_form_popup = $wpdb->prefix.'sg_contact_form_popup';
$result = $wpdb->get_row( $wpdb->prepare("SELECT `content`, `options` FROM $sg_contact_form_popup WHERE id = %d", $arr['id']), ARRAY_A);
if (!empty($result['content'])) {
$this->setContent($result['content']);
}
$customOptions = $result['options'];
$customOptions = json_decode($customOptions, true);
if (!empty($options)) {
$this->setCustomOptions($customOptions);
}
break;
case 'mailchimp':
$sg_popup_mailchimp = $wpdb->prefix.'sg_popup_mailchimp';
$result = $wpdb->get_row( $wpdb->prepare("SELECT `content`, `options` FROM $sg_popup_mailchimp WHERE id = %d", $arr['id']), ARRAY_A);
if (!empty($result['content'])) {
$this->setContent($result['content']);
}
$customOptions = $result['options'];
$customOptions = json_decode($customOptions, true);
if (!empty($options)) {
$this->setCustomOptions($customOptions);
}
break;
case 'aweber':
$sg_popup_aweber = $wpdb->prefix.'sg_popup_aweber';
$result = $wpdb->get_row( $wpdb->prepare("SELECT `content`, `options` FROM $sg_popup_aweber WHERE id = %d", $arr['id']), ARRAY_A);
if (!empty($result['content'])) {
$this->setContent($result['content']);
}
$customOptions = $result['options'];
$customOptions = json_decode($customOptions, true);
if (!empty($options)) {
$this->setCustomOptions($customOptions);
}
break;
}
$this->setOptions($options);
return $this;
}
public function getNamesMapping()
{
$names = array(
'type' => 'sgpb-type',
'delay' => 'sgpb-popup-delay',
'isActiveStatus' => 'sgpb-is-active',
'image-url' => 'sgpb-image-url',
'theme' => 'sgpb-popup-themes',
'effect' => 'sgpb-open-animation-effect',
'duration' => 'sgpb-open-animation-speed',
'popupOpenSound' => 'sgpb-open-sound',
'popupOpenSoundFile' => 'sgpb-sound-url',
'popup-dimension-mode' => 'sgpb-popup-dimension-mode',
'popup-responsive-dimension-measure' => 'sgpb-responsive-dimension-measure',
'width' => 'sgpb-width',
'height' => 'sgpb-height',
'maxWidth' => 'sgpb-max-width',
'maxHeight' => 'sgpb-max-height',
'escKey' => 'sgpb-esc-key',
'closeButton' => 'sgpb-enable-close-button',
'buttonDelayValue' => 'sgpb-close-button-delay',
'scrolling' => 'sgpb-enable-content-scrolling',
'disable-page-scrolling' => 'sgpb-disable-page-scrolling',
'overlayClose' => 'sgpb-overlay-click',
'contentClick' => 'sgpb-content-click',
'content-click-behavior' => 'sgpb-content-click-behavior',
'click-redirect-to-url' => 'sgpb-click-redirect-to-url',
'redirect-to-new-tab' => 'sgpb-redirect-to-new-tab',
'reopenAfterSubmission' => 'sgpb-reopen-after-form-submission',
'repeatPopup' => 'sgpb-show-popup-same-user',
'popup-appear-number-limit' => 'sgpb-show-popup-same-user-count',
'onceExpiresTime' => 'sgpb-show-popup-same-user-expiry',
'save-cookie-page-level' => 'sgpb-show-popup-same-user-page-level',
'popupContentBgImage' => 'sgpb-show-background',
'popupContentBackgroundSize' => 'sgpb-background-image-mode',
'popupContentBgImageUrl' => 'sgpb-background-image',
'sgOverlayColor' => 'sgpb-overlay-color',
'sg-content-background-color' => 'sgpb-background-color',
'popup-background-opacity' => 'sgpb-content-opacity',
'opacity' => 'sgpb-overlay-opacity',
'sgOverlayCustomClasss' => 'sgpb-overlay-custom-class',
'sgContentCustomClasss' => 'sgpb-content-custom-class',
'popup-z-index' => 'sgpb-popup-z-index',
'popup-content-padding' => 'sgpb-content-padding',
'popupFixed' => 'sgpb-popup-fixed',
'fixedPostion' => 'sgpb-popup-fixed-position',
'sgpb-open-animation' => 'sgpb-open-animation',
'theme-close-text' => 'sgpb-button-text',
'sgTheme3BorderRadius' => 'sgpb-border-radius',
'sgTheme3BorderColor' => 'sgpb-border-color',
'fblike-like-url' => 'sgpb-fblike-like-url',
'fblike-layout' => 'sgpb-fblike-layout',
'fblike-dont-show-share-button' => 'sgpb-fblike-dont-show-share-button',
'sgpb-button-image-width' => 'sgpb-button-image-width',
'sgpb-button-image-height' => 'sgpb-button-image-height'
);
// iframe pro popup type
$names['iframe-url'] = 'sgpb-iframe-url';
// video pro popup type
$names['video-url'] = 'sgpb-video-url';
$names['video-autoplay'] = 'sgpb-video-autoplay';
// age restriction
$names['yesButtonLabel'] = 'sgpb-restriction-yes-btn';
$names['noButtonLabel'] = 'sgpb-restriction-no-btn';
$names['restrictionUrl'] = 'sgpb-restriction-no-url';
$names['yesButtonBackgroundColor'] = 'sgpb-restriction-yes-btn-bg-color';
$names['yesButtonTextColor'] = 'sgpb-restriction-yes-btn-text-color';
$names['yesButtonRadius'] = 'sgpb-restriction-yes-btn-radius';
$names['sgRestrictionExpirationTime'] = 'sgpb-restriction-yes-expiration-time';
$names['restrictionCookeSavingLevel'] = 'sgpb-restriction-cookie-level';
$names['noButtonBackgroundColor'] = 'sgpb-restriction-no-btn-bg-color';
$names['noButtonTextColor'] = 'sgpb-restriction-no-btn-text-color';
$names['noButtonRadius'] = 'sgpb-restriction-no-btn-radius';
// age restriction new options
$names['sgpb-restriction-yes-btn-radius-type'] = 'sgpb-restriction-yes-btn-radius-type';
$names['sgpb-restriction-no-btn-radius-type'] = 'sgpb-restriction-no-btn-radius-type';
$names['sgpb-restriction-yes-btn-border-color'] = 'sgpb-restriction-yes-btn-border-color';
$names['sgpb-restriction-no-btn-border-color'] = 'sgpb-restriction-no-btn-border-color';
$proNames = array(
'autoClosePopup' => 'sgpb-auto-close',
'popupClosingTimer' => 'sgpb-auto-close-time',
'disablePopupOverlay' => 'sgpb-enable-popup-overlay',
'disablePopup' => 'sgpb-disable-popup-closing',
'popup-schedule-status' => 'sgpb-schedule-status',
'schedule-start-weeks' => 'sgpb-schedule-weeks',
'schedule-start-time' => 'sgpb-schedule-start-time',
'schedule-end-time' => 'sgpb-schedule-end-time',
'popup-timer-status' => 'sgpb-popup-timer-status',
'popup-start-timer' => 'sgpb-popup-start-timer',
'popup-finish-timer' => 'sgpb-popup-end-timer',
'inActivityStatus' => 'sgpb-inactivity-status',
'inactivity-timout' => 'sgpb-inactivity-timer',
'onScrolling' => 'sgpb-onscroll-status',
'beforeScrolingPrsent' => 'sgpb-onscroll-percentage',
'sg-user-status' => 'sgpb-by-user-status',
'loggedin-user' => 'sgpb-for-logged-in-user',
'forMobile' => 'sgpb-hide-on-mobile',
'openMobile' => 'sgpb-only-on-mobile',
'countryStatus' => 'sgpb-by-country',
'allowCountries' => 'sgpb-allow-countries',
'countryIso' => 'sgpb-countries-iso',
'randomPopup' => 'sgpb-random-popup'
);
$names = array_merge($names, $proNames);
// pro options
$names['allPagesStatus'] = 'allPagesStatus';
$names['showAllPages'] = 'allPages';
$names['allSelectedPages'] = 'allSelectedPages';
$names['allPostsStatus'] = 'allPostsStatus';
$names['showAllPosts'] = 'allPosts';
$names['allSelectedPosts'] = 'allSelectedPosts';
$names['posts-all-categories'] = 'posts-all-categories';
$names['allCustomPostsStatus'] = 'allCustomPostsStatus';
$names['all-custom-posts'] = 'all-custom-posts';
$names['showAllCustomPosts'] = 'showAllCustomPosts';
$names['allSelectedCustomPosts'] = 'allSelectedCustomPosts';
// countdown pro popup type
$names['countdownNumbersBgColor'] = 'sgpb-counter-background-color';
$names['countdownNumbersTextColor'] = 'sgpb-counter-text-color';
$names['sg-due-date'] = 'sgpb-countdown-due-date';
$names['sg-countdown-type'] = 'sgpb-countdown-type';
$names['sg-time-zone'] = 'sgpb-countdown-timezone';
$names['counts-language'] = 'sgpb-countdown-language';
$names['pushToBottom'] = 'sgpb-countdown-show-on-top';
$names['countdown-autoclose'] = 'sgpb-countdown-close-timeout';
// contact form pro popup type
$names['show-form-to-top'] = 'sgpb-contact-show-form-to-top';
$names['contact-name-status'] = 'sgpb-contact-field-name';
$names['contact-name'] = 'sgpb-contact-name-placeholder';
$names['contact-name-required'] = 'sgpb-contact-name-required';
$names['contact-subject-status'] = 'sgpb-contact-field-subject';
$names['contact-subject'] = 'sgpb-contact-subject-placeholder';
$names['contact-subject-required'] = 'sgpb-contact-subject-required';
$names['contact-email'] = 'sgpb-contact-email-placeholder';
$names['contact-message'] = 'sgpb-contact-message-placeholder';
$names['contact-fail-message'] = 'sgpb-contact-error-message';
$names['contact-receive-email'] = 'sgpb-contact-to-email';
$names['contact-validation-message'] = 'sgpb-contact-required-message';
$names['contact-validate-email'] = 'sgpb-contact-invalid-email-message';
$names['contact-inputs-width'] = 'sgpb-contact-inputs-width';
$names['contact-inputs-height'] = 'sgpb-contact-inputs-height';
$names['contact-inputs-border-width'] = 'sgpb-contact-inputs-border-width';
$names['contact-text-input-bgcolor'] = 'sgpb-contact-inputs-bg-color';
$names['contact-text-bordercolor'] = 'sgpb-contact-inputs-border-color';
$names['contact-inputs-color'] = 'sgpb-contact-inputs-text-color';
$names['contact-placeholder-color'] = 'sgpb-contact-inputs-placeholder-color';
$names['contact-area-width'] = 'sgpb-contact-message-width';
$names['contact-area-height'] = 'sgpb-contact-message-height';
$names['sg-contact-resize'] = 'sgpb-contact-message-resize';
$names['contact-btn-width'] = 'sgpb-contact-submit-width';
$names['contact-btn-height'] = 'sgpb-contact-submit-height';
$names['contact-btn-title'] = 'sgpb-contact-submit-title';
$names['contact-btn-progress-title'] = 'sgpb-contact-submit-title-progress';
$names['contact-button-bgcolor'] = 'sgpb-contact-submit-bg-color';
$names['contact-button-color'] = 'sgpb-contact-submit-text-color';
$names['dont-show-content-to-contacted-user'] = 'sgpb-contact-hide-for-contacted-users';
$names['contact-success-behavior'] = 'sgpb-contact-success-behavior';
$names['contact-success-message'] = 'sgpb-contact-success-message';
$names['contact-success-redirect-url'] = 'sgpb-contact-success-redirect-URL';
$names['contact-success-redirect-new-tab'] = 'sgpb-contact-success-redirect-new-tab';
$names['contact-success-popups-list'] = 'sgpb-contact-success-popup';
$names['contact-gdpr'] = 'sgpb-contact-gdpr-status';
$names['contact-gdpr-label'] = 'sgpb-contact-gdpr-label';
$names['contact-gdpr-text'] = 'sgpb-contact-gdpr-text';
$names['sgpb-contact-message-bg-color'] = 'sgpb-contact-message-bg-color';
$names['sgpb-contact-message-border-color'] = 'sgpb-contact-message-border-color';
$names['sgpb-contact-message-text-color'] = 'sgpb-contact-message-text-color';
$names['sgpb-contact-message-placeholder-color'] = 'sgpb-contact-message-placeholder-color';
$names['sgpb-contact-message-border-width'] = 'sgpb-contact-message-border-width';
// Social
$names['shareUrlType'] = 'sgpb-social-share-url-type';
$names['sgShareUrl'] = 'sgpb-social-share-url';
$names['sgSocialTheme'] = 'sgpb-social-share-theme';
$names['sgSocialButtonsSize'] = 'sgpb-social-theme-size';
$names['sgSocialLabel'] = 'sgpb-social-show-labels';
$names['sgSocialShareCount'] = 'sgpb-social-share-count';
$names['sgRoundButton'] = 'sgpb-social-round-buttons';
$names['sgEmailStatus'] = 'sgpb-social-status-email';
$names['sgMailLable'] = 'sgpb-social-label-email';
$names['sgFbStatus'] = 'sgpb-social-status-facebook';
$names['fbShareLabel'] = 'sgpb-social-label-facebook';
$names['sgLinkedinStatus'] = 'sgpb-social-status-linkedin';
$names['lindkinLabel'] = 'sgpb-social-label-linkedin';
$names['sgGoogleStatus'] = 'sgpb-social-status-googleplus';
$names['googLelabel'] = 'sgpb-social-label-googleplus';
$names['sgTwitterStatus'] = 'sgpb-social-status-twitter';
$names['twitterLabel'] = 'sgpb-social-label-twitter';
$names['sgPinterestStatus'] = 'sgpb-social-status-pinterest';
$names['pinterestLabel'] = 'sgpb-social-label-pinterest';
// Subscription
$names['subscription-email'] = 'sgpb-subs-email-placeholder';
$names['subs-gdpr'] = 'sgpb-subs-gdpr-status';
$names['subs-gdpr-label'] = 'sgpb-subs-gdpr-label';
$names['subs-gdpr-text'] = 'sgpb-subs-gdpr-text';
$names['subs-first-name-status'] = 'sgpb-subs-first-name-status';
$names['subs-first-name'] = 'sgpb-subs-first-placeholder';
$names['subs-first-name-required'] = 'sgpb-subs-first-name-required';
$names['subs-last-name-status'] = 'sgpb-subs-last-name-status';
$names['subs-last-name'] = 'sgpb-subs-last-placeholder';
$names['subs-last-name-required'] = 'sgpb-subs-last-name-required';
$names['subs-validation-message'] = 'sgpb-subs-validation-message';
$names['subs-text-width'] = 'sgpb-subs-text-width';
$names['subs-text-height'] = 'sgpb-subs-text-height';
$names['subs-text-border-width'] = 'sgpb-subs-text-border-width';
$names['subs-text-input-bgColor'] = 'sgpb-subs-text-bg-color';
$names['subs-text-borderColor'] = 'sgpb-subs-text-border-color';
$names['subs-inputs-color'] = 'sgpb-subs-text-color';
$names['subs-placeholder-color'] = 'sgpb-subs-text-placeholder-color';
$names['subs-btn-width'] = 'sgpb-subs-btn-width';
$names['subs-btn-height'] = 'sgpb-subs-btn-height';
$names['subs-btn-title'] = 'sgpb-subs-btn-title';
$names['subs-btn-progress-title'] = 'sgpb-subs-btn-progress-title';
$names['subs-button-bgColor'] = 'sgpb-subs-btn-bg-color';
$names['subs-button-color'] = 'sgpb-subs-btn-text-color';
$names['subs-success-behavior'] = 'sgpb-subs-success-behavior';
$names['subs-success-message'] = 'sgpb-subs-success-message';
$names['subs-success-redirect-url'] = 'sgpb-subs-success-redirect-URL';
$names['subs-success-redirect-new-tab'] = 'sgpb-subs-success-redirect-new-tab';
$names['subs-success-popups-list'] = 'sgpb-subs-success-popup';
// Subscription new option
$names['sgpb-subs-form-bg-color'] = 'sgpb-subs-form-bg-color';
// Exit Intent extension names
$names['option-exit-intent-enable'] = 'sgpb-option-exit-intent-enable';
$names['option-exit-intent-type'] = 'sgpb-option-exit-intent-type';
$names['option-exit-intent-expire-time'] = 'sgpb-exit-intent-expire-time';
$names['option-exit-intent-cookie-level'] = 'sgpb-exit-intent-cookie-level';
$names['option-exit-intent-soft-from-top'] = 'sgpb-exit-intent-soft-from-top';
// Adblock extension names
$names['option-enable-ad-block'] = 'sgpb-option-enable-ad-block';
// MailChimp extension names
$names['mailchimp-list-id'] = 'sgpb-mailchimp-lists';
$names['mailchimp-double-optin'] = 'sgpb-enable-double-optin';
$names['mailchimp-only-required'] = 'sgpb-show-required-fields';
$names['mailchimp-form-aligment'] = 'sgpb-mailchimp-form-align';
$names['mailchimp-label-aligment'] = 'sgpb-mailchimp-label-alignment';
$names['mailchimp-indicates-required-fields'] = 'sgpb-enable-asterisk-label';
$names['mailchimp-asterisk-label'] = 'sgpb-mailchimp-asterisk-label';
$names['mailchimp-required-error-message'] = 'sgpb-mailchimp-required-message';
$names['mailchimp-email-validate-message'] = 'sgpb-mailchimp-email-message';
$names['mailchimp-email-label'] = 'sgpb-mailchimp-email-label';
$names['mailchimp-error-message'] = 'sgpb-mailchimp-error-message';
$names['mailchimp-show-form-to-top'] = 'sgpb-mailchimp-show-form-to-top';
$names['mailchimp-label-color'] = 'sgpb-mailchimp-label-color';
$names['mailchimp-input-width'] = 'sgpb-mailchimp-input-width';
$names['mailchimp-input-height'] = 'sgpb-mailchimp-input-height';
$names['mailchimp-input-border-radius'] = 'sgpb-mailchimp-border-radius';
$names['mailchimp-input-border-width'] = 'sgpb-mailchimp-border-width';
$names['mailchimp-input-border-color'] = 'sgpb-mailchimp-border-color';
$names['mailchimp-input-bg-color'] = 'sgpb-mailchimp-background-color';
$names['sgpb-mailchimp-input-color'] = 'sgpb-mailchimp-input-color';
$names['mailchimp-submit-title'] = 'sgpb-mailchimp-submit-title';
$names['mailchimp-submit-width'] = 'sgpb-mailchimp-submit-width';
$names['mailchimp-submit-height'] = 'sgpb-mailchimp-submit-height';
$names['mailchimp-submit-border-width'] = 'sgpb-mailchimp-submit-border-width';
$names['mailchimp-submit-border-radius'] = 'sgpb-mailchimp-submit-border-radius';
$names['mailchimp-submit-border-color'] = 'sgpb-mailchimp-submit-border-color';
$names['mailchimp-submit-button-bgcolor'] = 'sgpb-mailchimp-submit-background-color';
$names['mailchimp-submit-color'] = 'sgpb-mailchimp-submit-color';
$names['mailchimp-success-behavior'] = 'sgpb-mailchimp-success-behavior';
$names['mailchimp-success-message'] = 'sgpb-mailchimp-success-message';
$names['mailchimp-success-redirect-url'] = 'sgpb-mailchimp-success-redirect-URL';
$names['mailchimp-success-redirect-new-tab'] = 'sgpb-mailchimp-success-redirect-new-tab';
$names['mailchimp-success-popups-list'] = 'sgpb-mailchimp-success-popup';
$names['mailchimp-close-popup-already-subscribed'] = 'sgpb-mailchimp-close-popup-already-subscribed';
// AWeber extension
$names['sg-aweber-list'] = 'sgpb-aweber-list';
$names['sg-aweber-webform'] = 'sgpb-aweber-signup-form';
$names['aweber-custom-invalid-email-message'] = 'sgpb-aweber-invalid-email';
$names['aweber-invalid-email'] = 'sgpb-aweber-invalid-email-message';
$names['aweber-already-subscribed-message'] = 'sgpb-aweber-custom-subscribed-message';
$names['aweber-required-message'] = 'sgpb-aweber-required-message';
$names['aweber-validate-email-message'] = 'sgpb-aweber-validate-email-message';
$names['aweber-success-behavior'] = 'sgpb-aweber-success-behavior';
$names['aweber-success-message'] = 'sgpb-aweber-success-message';
$names['aweber-success-redirect-url'] = 'sgpb-aweber-success-redirect-URL';
$names['aweber-success-redirect-new-tab'] = 'sgpb-aweber-success-redirect-new-tab';
$names['aweber-success-popups-list'] = 'sgpb-aweber-success-popup';
return $names;
}
public static function saveCustomInserted()
{
global $post;
if (empty($post)) {
return false;
}
$postId = $post->ID;
if (get_option('sgpbSaveOldData'.$postId)) {
return false;
}
update_option('sgpbSaveOldData'.$postId, 1);
add_filter('sgpbConvertedPopupId', 'sgpb\sgpGetCorrectPopupId', 10, 1);
self::saveMetaboxPopup($postId);
$content = get_post_field('post_content', $postId);
SGPopup::deletePostCustomInsertedData($postId);
SGPopup::deletePostCustomInsertedEvents($postId);
// We detect all the popups that were inserted as a custom ones, in the content.
SGPopup::savePopupsFromContentClasses($content, $post);
}
public static function saveMetaboxPopup($postId)
{
$selectedPost = get_post_meta($postId, 'sg_promotional_popup', true);
if (empty($selectedPost)) {
return false;
}
global $SGPB_DATA_CONFIG_ARRAY;
$postType = get_post_type($postId);
$postTitle = get_the_title($postId);
$popupId = sgpGetCorrectPopupId($selectedPost);
$popupTargetParam = $postType.'_selected';
if (!get_post_meta($popupId, 'sg_popup_events')) {
update_post_meta($popupId, 'sg_popup_events', array($SGPB_DATA_CONFIG_ARRAY['events']['initialData']));
}
$savedTarget = get_post_meta($popupId, 'sg_popup_target');
if (empty($savedTarget[0]['sgpb-target'][0])) {
$savedTarget['sgpb-target'][] = array(array('param' => $popupTargetParam, 'operator' => '==', 'value' => array($postId => $postTitle)));
$savedTarget['sgpb-conditions'][] = $SGPB_DATA_CONFIG_ARRAY['conditions']['initialData'];
update_post_meta($popupId, 'sg_popup_target', $savedTarget, true);
return true;
}
$targets = $savedTarget[0]['sgpb-target'][0];
$targetExists = false;
foreach ($targets as $key => $target) {
if ($key == 0 && $target['param'] == 'not_rule') {
$target['param'] = $popupTargetParam;
$savedTarget[0]['sgpb-target'][0][$key]['param'] = $popupTargetParam;
}
if ($target['param'] == $popupTargetParam) {
$targetExists = true;
$targetValue = array();
if (!empty($target['value'])) {
$targetValue = $target['value'];
}
$targetValue[$postId] = $postTitle;
$savedTarget[0]['sgpb-target'][0][$key]['value'] = $targetValue;
break;
}
}
if (!$targetExists) {
$savedTargetsLength = count($savedTarget[0]['sgpb-target'][0]);
$savedTarget[0]['sgpb-target'][0][$savedTargetsLength] = array('param' => $popupTargetParam, 'operator' => '==', 'value' => array($postId => $postTitle));
}
delete_post_meta($postId, 'sg_promotional_popup');
delete_post_meta($popupId, 'sg_popup_target');
update_post_meta($popupId, 'sg_popup_target', $savedTarget[0], true);
return true;
}
}
function sgpGetCorrectPopupId($popupId)
{
$convertedIds = get_option('sgpbConvertedIds');
if (empty($convertedIds) || empty($convertedIds[$popupId])) {
return $popupId;
}
return $convertedIds[$popupId];
}