: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
* Remove popup option from admin view by option name
* @return array $removedOptions
public function getRemoveOptions()
$removeOptions = array();
return apply_filters('sgpbRemoveOptions', $removeOptions);
public static function createPopupTypeObjById($popupId)
global $SGPB_POPUP_TYPES;
$popupOptionsData = SGPopup::getPopupOptionsById($popupId);
if (empty($popupOptionsData)) {
$popupType = $popupOptionsData['sgpb-type'];
$popupName = ucfirst(strtolower($popupType));
$popupClassName = $popupName.'Popup';
if (!empty($SGPB_POPUP_TYPES['typePath'][$popupType])) {
$typePath = $SGPB_POPUP_TYPES['typePath'][$popupType];
if (!file_exists($typePath.$popupClassName.'.php')) {
wp_die(esc_html__('Popup class does not exist', 'popup-builder'));
require_once($typePath.$popupClassName.'.php');
$popupClassName = __NAMESPACE__.'\\'.$popupClassName;
$popupTypeObj = new $popupClassName();
$popupTypeObj->setId($popupId);
* if child class does not have this function we call parent function to not get any errors
public static function getTablesSql()
* if child class does not have this function we call parent function to not get any errors
public static function getTableNames()
* Get WordPress localization name
public function getSiteLocale()
$locale = get_bloginfo('language');
$locale = str_replace('-', '_', $locale);
public function addAdditionalSettings($postData = array(), $obj = null)
public function allowToLoad()
$popupChecker = PopupChecker::instance();
$loadableModes = $popupChecker->isLoadable($this, $post);
$this->setLoadableModes($loadableModes);
return ($loadableModes['attr_event'] || $loadableModes['option_event']);
public function allowToLoadAJAX()
$popupChecker = PopupChecker::instance();
$loadableModes = $popupChecker->isLoadable($this, $post, true);
$this->setLoadableModes($loadableModes);
return ($loadableModes['attr_event'] || $loadableModes['option_event']);
public static function getAllPopups($filters = array())
'post_type' => SG_POPUP_POST_TYPE
$allPostData = SGPBConfigDataHelper::getQueryDataByArgs($args);
if (empty($allPostData)) {
foreach ($allPostData->posts as $postData) {
$popup = self::find($postData->ID, $args);
if (empty($popup) || !($popup instanceof SGPopup)) {
$type = $popup->getType();
if (isset($filters['type'])) {
if (is_array($filters['type'])) {
if (!in_array($type, $filters['type'])) {
else if ($type != $filters['type']) {
public function getPopupsIdAndTitle()
$allPopups = SGPopup::getAllPopups();
$popupIdTitles = array();
$currentPopupId = $this->getId();
foreach ($allPopups as $popup) {
if ($id == $currentPopupId) {
$title = $popup->getTitle();
$type = $popup->getType();
$popupIdTitles[$id] = $title.' - '.$type;
public function getSubPopupObj()
$options = $this->getOptions();
$specialBehaviors = isset($options['sgpb-behavior-after-special-events']) ? $options['sgpb-behavior-after-special-events'] : '';
if (!empty($specialBehaviors) && is_array($specialBehaviors)) {
foreach ($specialBehaviors as $behavior) {
foreach ($behavior as $row) {
if (!empty($row['param']) && $row['param'] == SGPB_CONTACT_FORM_7_BEHAVIOR_KEY) {
if (!empty($row['operator']) && $row['operator'] == 'open-popup') {
if (!empty($row['value'])) {
$popupId = key($row['value']);
$subPopupObj = self::find((int)$popupId);
if (!empty($subPopupObj) && ($subPopupObj instanceof SGPopup)) {
$subPopupObj->setEvents(array('param' => 'click', 'value' => ''));
$subPopups[] = $subPopupObj;
public static function doInsideShortcode($insideShortcode)
return do_shortcode($insideShortcode);
public function popupShortcodesInsidePopup()
$args = array('insidePopup' => 'on');
$popupContent = $this->getContent();
$parentTarget = $this->getTarget();
$insidePopupShortcodes = self::collectInsidePopupShortcodes($popupContent);
if (empty($insidePopupShortcodes)) {
foreach ($insidePopupShortcodes as $insidePopupId => $insidePopupShortcode) {
$insidePopupId = (int)$insidePopupId;
// true = find inside popup
$insidePopup = self::find($insidePopupId, $args);
if (empty($insidePopup) || $insidePopup == 'trash' || $insidePopup == 'inherit') {
$events = array('insideclick');
$insidePopup->setEvents($events);
$popups[$insidePopupId] = $insidePopup;
$popupContent = self::doInsideShortcode($popupContent);
$this->setContent($popupContent);
public function getPopupOpeningCountById($popupId)
$popupsCounterData = get_option('SgpbCounter');
$popupCountFromAnalyticsData = 0;
$tableName = $wpdb->prefix.'sgpb_analytics';
if ($wpdb->get_var("SHOW TABLES LIKE '$tableName'") == $tableName) {
$popupCountFromAnalyticsData = self::getAnalyticsDataByPopupId($popupId);
if (isset($popupsCounterData[$popupId])) {
$allCount += $popupsCounterData[$popupId];
$allCount += $popupCountFromAnalyticsData;
public static function getAnalyticsDataByPopupId($popupId)
// 7, 12, 13 => exclude close, subscription success, contact success events
$tableName_sgpb_analytics = $wpdb->prefix.'sgpb_analytics';
$popupAnalyticsData = $wpdb->get_var( $wpdb->prepare("SELECT COUNT(*) FROM $tableName_sgpb_analytics WHERE target_id = %d AND event_id NOT IN (7, 12, 13)", $popupId) );
return $popupAnalyticsData;
public static function deleteAnalyticsDataByPopupId($popupId)
$tableName_sgpb_analytics = $wpdb->prefix.'sgpb_analytics';
$wpdb->query( $wpdb->prepare("DELETE FROM $tableName_sgpb_analytics WHERE target_id = %d AND event_id NOT IN (7, 12, 13) LIMIT 100", $popupId) );
public static function getActivePopupsQueryString()
'post_type' => SG_POPUP_POST_TYPE,
'post_status' => array('trash', 'publish')
if (!class_exists('SGPBConfigDataHelper')) {
return $activePopupsQuery;
$allPostData = SGPBConfigDataHelper::getQueryDataByArgs($args);
$args['checkActivePopupType'] = true;
$allPopups = $allPostData->posts;
foreach ($allPopups as $post) {
$popup = self::find($id, $args);
$activePopupsQuery .= $id.', ';
if ($activePopupsQuery != '') {
$activePopupsQuery = ' AND ID NOT IN ('.$activePopupsQuery.')';
$activePopupsQuery = str_replace(', )', ') ', $activePopupsQuery);
return $activePopupsQuery;
public function isActive()
return $this->getOptionValue('sgpb-is-active', true);