: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
* Divide target data to Permissive and Forbidden
* @return array $popupTargetData
public function divideTargetData()
$popup = $this->getPopup();
$targetData = $popup->getTarget();
return $this->divideIntoPermissiveAndForbidden($targetData);
* Divide the Popup target data into Permissive And Forbidden assoc array
* @param array $postMetaData popup saved target data
* @return array $postMetaDivideData
public function divideIntoPermissiveAndForbidden($targetData)
$permissiveOperators = array('==');
$forbiddenOperators = array('!=');
$permissiveOperators = apply_filters('sgpbAdditionalPermissiveOperators', $permissiveOperators);
$forbiddenOperators = apply_filters('sgpbAdditionalForbiddenOperators', $forbiddenOperators);
if (!empty($targetData)) {
foreach ($targetData as $data) {
if (empty($data['operator']) && $data['param'] != 'everywhere' && !strpos($data['param'], '_all') && $data['param'] != 'post_tags') {
// set by default '==' (is) value for all not specific conditions like all pages/posts/other_custom_post_types for future correct detection
if ($data['param'] == 'everywhere' || strpos($data['param'], '_all') || $data['param'] == 'post_tags') {
$data['operator'] = '==';
if ((isset($data['operator']) && in_array($data['operator'], $permissiveOperators))) {
else if (in_array($data['operator'], $forbiddenOperators)) {
$postMetaDivideData = array(
'permissive' => $permissive,
'forbidden' => $forbidden
return $postMetaDivideData;
* Get custom inserted data
* @return array $insertedData
public function getCustomInsertedData()
$post = $this->getPost();
$insertedData = SGPopup::getCustomInsertedDataByPostId($this->getPost()->ID);
private function isSatisfyForOtherConditions()
$popup = $this->getPopup();
$popupOptions = $popup->getOptions();
$popupId = $popup->getId();
$dontAlowOpenPopup = apply_filters('sgpbOtherConditions', array('id' => $popupId, 'popupOptions' => $popupOptions, 'popupObj' => $popup));
return $dontAlowOpenPopup['status'];
public static function checkUserStatus($savedStatus)
/*When current user status and saved options does not matched popup must not open*/
if (is_user_logged_in() != (int)$savedStatus) {
public static function checkLanguage($popupLanguage = '')
if (!function_exists('wpml_get_language_information')) {
$postLanguage = wpml_get_language_information($postId);
if (is_wp_error($postLanguage)) {
if (!empty($_GET['lang']) && (sanitize_text_field($_GET['lang']) == $popupLanguage)) {
if ($postLanguage['language_code'] != $popupLanguage) {
public static function checkOtherConditionsActions($args)
if (empty($args['id']) || empty($args['popupOptions'])) {
$popupOptions = $args['popupOptions'];
if (!empty($popupOptions['sgpb-icl_post_language'])) {
$languageCompatibilty = PopupChecker::checkLanguage($popupOptions['sgpb-icl_post_language']);
if ($languageCompatibilty === false) {
return $languageCompatibilty;
if (!empty($popupOptions['sgpb-user-status'])) {
$restrictUserStatus = PopupChecker::checkUserStatus($popupOptions['sgpb-loggedin-user']);
if ($restrictUserStatus === false) {
return $restrictUserStatus;
// checking by popup type
if (!empty($popupOptions['sgpb-type'])) {
$popupClassName = SGPopup::getPopupClassNameFormType($popupOptions['sgpb-type']);
$popupClassName = __NAMESPACE__.'\\'.$popupClassName;
if (method_exists($popupClassName, 'allowToOpen')) {
$allowToOpen = $popupClassName::allowToOpen($popupOptions, $args);
return apply_filters('checkOtherConditions', true);