API
2 years ago
Blocks
5 years ago
License
5 years ago
AdminNotice.php
5 years ago
AdminNotices.php
4 years ago
AjaxActions.php
2 years ago
Blocks.php
5 years ago
Compatibility.php
4 years ago
Menu.php
3 years ago
Migrations.php
5 years ago
Player.php
2 years ago
ProCompatibility.php
2 years ago
ReusableVideos.php
4 years ago
Scripts.php
2 years ago
Settings.php
4 years ago
Shortcodes.php
2 years ago
Streamer.php
4 years ago
Translation.php
2 years ago
VideoPostType.php
4 years ago
AdminNotices.php
118 lines
| 1 | <?php |
| 2 | |
| 3 | namespace PrestoPlayer\Services; |
| 4 | |
| 5 | use Astra_Notices; |
| 6 | use PrestoPlayer\Models\Video; |
| 7 | |
| 8 | class AdminNotices |
| 9 | { |
| 10 | public function register() |
| 11 | { |
| 12 | add_action('admin_init', [$this, 'dismiss']); |
| 13 | $this->displayRatingsNotice(); |
| 14 | } |
| 15 | |
| 16 | public function displayRatingsNotice() |
| 17 | { |
| 18 | require_once PRESTO_PLAYER_PLUGIN_DIR . 'vendor/brainstormforce/astra-notices/class-astra-notices.php'; |
| 19 | $image_path = PRESTO_PLAYER_PLUGIN_URL . 'img/presto-player-icon-color.png'; |
| 20 | |
| 21 | Astra_Notices::add_notice( |
| 22 | [ |
| 23 | 'id' => 'presto-player-rating', |
| 24 | 'type' => '', |
| 25 | 'message' => sprintf( |
| 26 | '<div class="notice-image"> |
| 27 | <img src="%1$s" class="custom-logo" alt="Sidebar Manager" itemprop="logo"></div> |
| 28 | <div class="notice-content"> |
| 29 | <div class="notice-heading"> |
| 30 | %2$s |
| 31 | </div> |
| 32 | %3$s<br /> |
| 33 | <div class="astra-review-notice-container"> |
| 34 | <a href="%4$s" class="astra-notice-close astra-review-notice button-primary" target="_blank"> |
| 35 | %5$s |
| 36 | </a> |
| 37 | <span class="dashicons dashicons-calendar"></span> |
| 38 | <a href="#" data-repeat-notice-after="%6$s" class="astra-notice-close astra-review-notice"> |
| 39 | %7$s |
| 40 | </a> |
| 41 | <span class="dashicons dashicons-smiley"></span> |
| 42 | <a href="#" class="astra-notice-close astra-review-notice"> |
| 43 | %8$s |
| 44 | </a> |
| 45 | </div> |
| 46 | </div>', |
| 47 | $image_path, |
| 48 | __('Thanks a ton for choosing Presto Player! We are hard at work adding more features to help you harness the power of videos.', 'presto-player'), |
| 49 | __('Could you please do us a BIG favor and give us a 5-star rating on WordPress? It really boosts the motivation of our team.', 'presto-player'), |
| 50 | 'https://wordpress.org/support/plugin/presto-player/reviews/?filter=5#new-post', |
| 51 | __('Ok, you deserve it', 'presto-player'), |
| 52 | MONTH_IN_SECONDS, |
| 53 | __('Nope, maybe later', 'presto-player'), |
| 54 | __('I already did', 'presto-player') |
| 55 | ), |
| 56 | 'show_if' => $this->maybeDisplayRatingsNotice(), |
| 57 | 'repeat-notice-after' => MONTH_IN_SECONDS, |
| 58 | 'display-notice-after' => 604800, // Display notice after 7 days. |
| 59 | 'priority' => 18, |
| 60 | 'display-with-other-notices' => false, |
| 61 | ] |
| 62 | ); |
| 63 | } |
| 64 | |
| 65 | /* |
| 66 | * Check whether to display notice or not. |
| 67 | */ |
| 68 | public function maybeDisplayRatingsNotice() |
| 69 | { |
| 70 | $transient_status = get_transient('presto-player-rating'); |
| 71 | |
| 72 | if (false !== $transient_status) { |
| 73 | return false; |
| 74 | } |
| 75 | |
| 76 | $video_count = $this->getVideosCount(); |
| 77 | // Display ratings notice if video count is more than 1. |
| 78 | return 0 < $video_count ? true : false; |
| 79 | } |
| 80 | |
| 81 | public function getVideosCount() |
| 82 | { |
| 83 | $video = new Video(); |
| 84 | $items = $video->fetch([ |
| 85 | 'per_page' => 1 |
| 86 | ]); |
| 87 | |
| 88 | return $items->total; |
| 89 | } |
| 90 | |
| 91 | public static function isDismissed($name) |
| 92 | { |
| 93 | return (bool) get_option("presto_player_dismissed_notice_" . sanitize_text_field($name), false); |
| 94 | } |
| 95 | |
| 96 | public function dismiss() |
| 97 | { |
| 98 | // permissions check |
| 99 | if (!current_user_can('install_plugins')) { |
| 100 | return; |
| 101 | } |
| 102 | |
| 103 | // not our notices, bail |
| 104 | if (!isset($_GET['presto_action']) || 'dismiss_notices' !== $_GET['presto_action']) { |
| 105 | return; |
| 106 | } |
| 107 | |
| 108 | // get notice |
| 109 | $notice = !empty($_GET['presto_notice']) ? sanitize_text_field($_GET['presto_notice']) : ''; |
| 110 | if (!$notice) { |
| 111 | return; |
| 112 | } |
| 113 | |
| 114 | // notice is dismissed |
| 115 | update_option("presto_player_dismissed_notice_" . sanitize_text_field($notice), 1); |
| 116 | } |
| 117 | } |
| 118 |