isNeedToShow(adminGetFixedNotices(),(array)get_user_meta( $user_id, $this->dismissedKey,true )); } function allCloseNotice(){ require_once PYS_FREE_PATH . '/notices/fixed.php'; $notices = adminGetFixedNotices(); $user_id = get_current_user_id(); if ( empty( $user_id ) ) { return; } if ( empty( $_REQUEST['nonce'] ) || ! wp_verify_nonce( $_REQUEST['nonce'], 'pys_fixed_notice_opt_dismiss') ) { return; } $dismissedSlugs = (array)get_user_meta( $user_id, $this->dismissedKey,true); foreach ($notices as $noticesGroup) { foreach ($noticesGroup['multiMessage'] as $noticesMessage) { $dismissedSlugs[] = sanitize_text_field( $noticesMessage['slug'] ); } } $dismissedSlugs = array_unique($dismissedSlugs); update_user_meta($user_id, $this->dismissedKey, $dismissedSlugs ); echo json_encode($dismissedSlugs); die(); } function catchOnCloseNotice() { require_once PYS_FREE_PATH . '/notices/fixed.php'; $notices = adminGetFixedNotices(); $user_id = get_current_user_id(); if ( empty( $user_id ) || empty( $_POST['addon_slug'] ) || empty( $_POST['meta_key'] ) ) { return; } if ( empty( $_REQUEST['nonce'] ) || ! wp_verify_nonce( $_REQUEST['nonce'], 'pys_fixed_notice_dismiss' ) ) { return; } $dismissedSlugs = (array)get_user_meta( $user_id, $this->dismissedKey,true); foreach ($_POST['meta_key'] as $meta_key) { $dismissedSlugs[] = sanitize_text_field( $meta_key ); } // save dismissed notice update_user_meta($user_id, $this->dismissedKey, $dismissedSlugs ); echo json_encode($this->whoIsNext($notices)); die(); } private function renderNotice($notice) { if ( ! current_user_can( 'manage_pys' ) ) { return; } if ( ! $notice ) { return; } ?>
plugin logo

plugin logo


$noticeGroup) { // check is notice has some plugin dependencies if( isset($noticeGroup['plugins']) && (count($noticeGroup['plugins']) == 0 || (count(array_intersect($noticeGroup['plugins'], $activePlugins)) == count($activePlugins) && count($noticeGroup['plugins']) == count($activePlugins))) ) { if(isset($noticeGroup['type']) && $noticeGroup['type'] == 'promo'){ if(!in_array($noticeGroup['slug'],$showedNoticesSlug)) { $this->renderNotice($noticeGroup); } } } } $this->renderNoticeGroped($this->whoIsNext($noticeGroups)); } private function whoIsNext($noticeGroups) { $minOrderBlock = 999999; $user_id = get_current_user_id(); $noticeBlock = array(); foreach ($noticeGroups as $keyGroup => $noticeGroup) { if(isset($noticeGroup['type']) && $noticeGroup['type'] == 'event chain') { $paramGroup = $noticeGroup; unset($paramGroup['multiMessage']); $noticeBlock[$noticeGroup['order']] = $paramGroup; foreach ($noticeGroup['multiMessage'] as $notice){ if(!in_array($notice['slug'], (array)get_user_meta( $user_id, $this->dismissedKey,true ))) { $noticeBlock[$noticeGroup['order']]['multiMessage'][] = $notice; } } } } foreach ($noticeBlock as $block) { if(($block['order'] <= $minOrderBlock) && isset($block['multiMessage'])){ $minOrderBlock = $block['order']; } } if(get_user_meta($user_id, 'free_next_chain_notice', true) != $minOrderBlock) { if(get_user_meta($user_id, 'free_next_chain_notice', true) < $minOrderBlock && $minOrderBlock != 999999) { update_user_meta($user_id, 'free_expiration_chain_notice_dismissed_at', time() + $this->convertTimeToSeconds(isset($noticeBlock[$minOrderBlock]['wait']) ? $noticeBlock[$minOrderBlock]['wait'] : 24, 'hours')); } else if(get_user_meta($user_id, 'free_next_chain_notice', true) > $minOrderBlock && $minOrderBlock != 999999) { update_user_meta($user_id, 'free_expiration_chain_notice_dismissed_at', time() + $this->convertTimeToSeconds(0, 'seconds')); } update_user_meta($user_id, 'free_next_chain_notice', $minOrderBlock); } if(isset($noticeBlock[$minOrderBlock]) && (get_user_meta($user_id, 'free_next_chain_notice', true) == $minOrderBlock && time() >= get_user_meta($user_id, 'free_expiration_chain_notice_dismissed_at', true))) { return $noticeBlock[$minOrderBlock]; } } private function convertTimeToSeconds($timeValue = 24, $type = 'hours') { switch ($type){ case 'hours': $time = $timeValue * 60 * 60; break; case 'minute': $time = $timeValue * 60; break; case 'seconds': $time = $timeValue; break; } return $time; } } /** * @return NoticesFixed */ function NoticesFixed() { return NoticesFixed::instance(); } NoticesFixed();