PluginProbe ʕ •ᴥ•ʔ
WP STAGING – WordPress Backup, Restore, Migration & Clone / 4.9.2
WP STAGING – WordPress Backup, Restore, Migration & Clone v4.9.2
4.9.2 4.9.1 4.9.0 4.8.1 trunk 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.10.0 3.2.0 3.3.1 3.3.2 3.3.3 3.4.1 3.4.3 3.5.0 3.6.0 3.7.1 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.8.7 3.9.0 3.9.1 3.9.2 3.9.3 3.9.4 4.0.0 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.0 4.7.0 4.7.1 4.7.2 4.7.3 4.8.0
wp-staging / Basic / Notices / GeneralProCardNotice.php
wp-staging / Basic / Notices Last commit date
BasicNotices.php 2 weeks ago GeneralProCardNotice.php 2 weeks ago RatingNotice.php 2 weeks ago
GeneralProCardNotice.php
65 lines
1 <?php
2
3 namespace WPStaging\Basic\Notices;
4
5 use DateTime;
6
7 /**
8 * Snooze state for the compact general "Upgrade to Pro" card on the Staging
9 * dashboard (views/ads/pro-upgrade-card.php).
10 *
11 * Dismissal is a 90-day snooze, not a permanent opt-out: clicking the card's X
12 * hides only this one card for the current admin and lets it reappear once the
13 * window passes. Contextual Pro prompts, Pro badges, the Upgrade navigation and
14 * the permanent "Compare Free vs Pro" footer card are unaffected.
15 *
16 * State is stored per admin user (user meta), so one admin dismissing the card
17 * does not hide it for every other admin on the site.
18 */
19 class GeneralProCardNotice
20 {
21 /** @var string */
22 const META_KEY = 'wpstg_user_general_pro_card_snoozed_until';
23
24 /** @var int */
25 const SNOOZE_DAYS = 90;
26
27 /**
28 * Snooze the card for the current admin for SNOOZE_DAYS days.
29 *
30 * @return bool True when a current user exists and the snooze was stored.
31 */
32 public function snooze(): bool
33 {
34 $userId = get_current_user_id();
35 if ($userId === 0) {
36 return false;
37 }
38
39 $until = date('Y-m-d', strtotime('+' . self::SNOOZE_DAYS . ' days'));
40 update_user_meta($userId, self::META_KEY, $until);
41
42 return true;
43 }
44
45 /**
46 * Whether the card is currently snoozed for the current admin.
47 *
48 * @return bool
49 */
50 public function isSnoozed(): bool
51 {
52 $userId = get_current_user_id();
53 if ($userId === 0) {
54 return false;
55 }
56
57 $until = get_user_meta($userId, self::META_KEY, true);
58 if (!wpstg_is_valid_date($until)) {
59 return false;
60 }
61
62 return new DateTime('now') < new DateTime($until);
63 }
64 }
65