PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.22.0
GiveWP – Donation Plugin and Fundraising Platform v2.22.0
4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Promotions / InPluginUpsells / SaleBanners.php
give / src / Promotions / InPluginUpsells Last commit date
resources 4 years ago AddonsAdminPage.php 4 years ago AddonsRepository.php 4 years ago HideSaleBannerRoute.php 4 years ago RecurringDonationsTab.php 4 years ago SaleBanners.php 4 years ago
SaleBanners.php
141 lines
1 <?php
2
3 namespace Give\Promotions\InPluginUpsells;
4
5 use DateTimeImmutable;
6 use DateTimeZone;
7 use Give\Framework\Shims\Shim;
8
9 /**
10 * @since 2.17.0
11 */
12 class SaleBanners
13 {
14 /**
15 * @var string
16 */
17 private $optionName = 'give_hidden_sale_banners';
18
19 /**
20 * @var array
21 */
22 private $hiddenBanners;
23
24 public function __construct()
25 {
26 $this->hiddenBanners = get_option($this->optionName, []);
27 }
28
29 /**
30 * Get banners definitions
31 *
32 * @note id must be unique for each definition
33 *
34 * @return array[]
35 */
36 public function getBanners()
37 {
38 return [
39 [
40 'id' => 'bfgt2021',
41 'iconURL' => GIVE_PLUGIN_URL . 'assets/dist/images/admin/sale-icon.png',
42 'accessibleLabel' => __('Black Friday/Giving Tuesday Sale', 'give'),
43 'leadText' => __('Save 40% on all Plans for a limited time.', 'give'),
44 'contentText' => __('Black Friday through Giving Tuesday.', 'give'),
45 'actionText' => __('Shop Now', 'give'),
46 'actionURL' => 'https://go.givewp.com/bfgt21',
47 'startDate' => '2021-11-26 00:00',
48 'endDate' => '2021-11-30 23:59',
49 ],
50 ];
51 }
52
53 /**
54 * Get the banners that should be displayed.
55 *
56 * @return array[]
57 */
58 public function getVisibleBanners()
59 {
60 $currentDateTime = current_datetime();
61 $currentUserId = get_current_user_id();
62 $giveWPWebsiteTimezone = new DateTimeZone('America/Los_Angeles');
63
64 return array_filter(
65 $this->getBanners(),
66 function ($banner) use ($currentDateTime, $currentUserId, $giveWPWebsiteTimezone) {
67 $isHidden = in_array($banner['id'] . $currentUserId, $this->hiddenBanners);
68 $isFuture = $currentDateTime < new DateTimeImmutable($banner['startDate'], $giveWPWebsiteTimezone);
69 $isPast = $currentDateTime > new DateTimeImmutable($banner['endDate'], $giveWPWebsiteTimezone);
70
71 return ! ($isHidden || $isFuture || $isPast);
72 }
73 );
74 }
75
76 /**
77 * @param string $banner
78 */
79 public function hideBanner($banner)
80 {
81 $this->hiddenBanners[] = $banner;
82
83 update_option(
84 $this->optionName,
85 array_unique($this->hiddenBanners)
86 );
87 }
88
89 /**
90 * Render admin page
91 */
92 public function render()
93 {
94 $banners = $this->getVisibleBanners();
95
96 if ( ! empty($banners)) {
97 include __DIR__ . '/resources/views/sale-banners.php';
98 }
99 }
100
101 /**
102 * Load scripts
103 */
104 public function loadScripts()
105 {
106 wp_enqueue_script(
107 'give-in-plugin-upsells-sale-banners',
108 GIVE_PLUGIN_URL . 'assets/dist/js/admin-upsell-sale-banner.js',
109 [],
110 GIVE_VERSION,
111 true
112 );
113
114 wp_localize_script(
115 'give-in-plugin-upsells-sale-banners',
116 'GiveSaleBanners',
117 [
118 'apiRoot' => esc_url_raw(rest_url('give-api/v2/sale-banner')),
119 'apiNonce' => wp_create_nonce('wp_rest'),
120 ]
121 );
122
123 wp_enqueue_style(
124 'give-in-plugin-upsells-sale-banners-font',
125 'https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap',
126 [],
127 null
128 );
129 }
130
131 /**
132 * Helper function to determine if the current page Give admin page
133 *
134 * @return bool
135 */
136 public static function isShowing()
137 {
138 return isset($_GET['post_type']) && $_GET['post_type'] === 'give_forms';
139 }
140 }
141