PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.18.0
GiveWP – Donation Plugin and Fundraising Platform v2.18.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 / InPluginUpsells / SaleBanners.php
give / src / 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 ServiceProvider.php 4 years ago
SaleBanners.php
140 lines
1 <?php
2
3 namespace Give\InPluginUpsells;
4
5 use DateTimeImmutable;
6 use DateTimeZone;
7
8 /**
9 * @since 2.17.0
10 */
11 class SaleBanners
12 {
13 /**
14 * @var string
15 */
16 private $optionName = 'give_hidden_sale_banners';
17
18 /**
19 * @var array
20 */
21 private $hiddenBanners;
22
23 public function __construct()
24 {
25 $this->hiddenBanners = get_option($this->optionName, []);
26 }
27
28 /**
29 * Get banners definitions
30 *
31 * @note id must be unique for each definition
32 *
33 * @return array[]
34 */
35 public function getBanners()
36 {
37 return [
38 [
39 'id' => 'bfgt2021',
40 'iconURL' => GIVE_PLUGIN_URL . 'assets/dist/images/admin/sale-icon.png',
41 'accessibleLabel' => __('Black Friday/Giving Tuesday Sale', 'give'),
42 'leadText' => __('Save 40% on all Plans for a limited time.', 'give'),
43 'contentText' => __('Black Friday through Giving Tuesday.', 'give'),
44 'actionText' => __('Shop Now', 'give'),
45 'actionURL' => 'https://go.givewp.com/bfgt21',
46 'startDate' => '2021-11-26 00:00',
47 'endDate' => '2021-11-30 23:59',
48 ],
49 ];
50 }
51
52 /**
53 * Get the banners that should be displayed.
54 *
55 * @return array[]
56 */
57 public function getVisibleBanners()
58 {
59 $currentDateTime = current_datetime();
60 $currentUserId = get_current_user_id();
61 $giveWPWebsiteTimezone = new DateTimeZone('America/Los_Angeles');
62
63 return array_filter(
64 $this->getBanners(),
65 function ($banner) use ($currentDateTime, $currentUserId, $giveWPWebsiteTimezone) {
66 $isHidden = in_array($banner['id'] . $currentUserId, $this->hiddenBanners);
67 $isFuture = $currentDateTime < new DateTimeImmutable($banner['startDate'], $giveWPWebsiteTimezone);
68 $isPast = $currentDateTime > new DateTimeImmutable($banner['endDate'], $giveWPWebsiteTimezone);
69
70 return ! ($isHidden || $isFuture || $isPast);
71 }
72 );
73 }
74
75 /**
76 * @param string $banner
77 */
78 public function hideBanner($banner)
79 {
80 $this->hiddenBanners[] = $banner;
81
82 update_option(
83 $this->optionName,
84 array_unique($this->hiddenBanners)
85 );
86 }
87
88 /**
89 * Render admin page
90 */
91 public function render()
92 {
93 $banners = $this->getVisibleBanners();
94
95 if ( ! empty($banners)) {
96 include __DIR__ . '/resources/views/sale-banners.php';
97 }
98 }
99
100 /**
101 * Load scripts
102 */
103 public function loadScripts()
104 {
105 wp_enqueue_script(
106 'give-in-plugin-upsells-sale-banners',
107 GIVE_PLUGIN_URL . 'assets/dist/js/admin-upsell-sale-banner.js',
108 [],
109 GIVE_VERSION,
110 true
111 );
112
113 wp_localize_script(
114 'give-in-plugin-upsells-sale-banners',
115 'GiveSaleBanners',
116 [
117 'apiRoot' => esc_url_raw(rest_url('give-api/v2/sale-banner')),
118 'apiNonce' => wp_create_nonce('wp_rest'),
119 ]
120 );
121
122 wp_enqueue_style(
123 'give-in-plugin-upsells-sale-banners-font',
124 'https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap',
125 [],
126 null
127 );
128 }
129
130 /**
131 * Helper function to determine if the current page Give admin page
132 *
133 * @return bool
134 */
135 public static function isShowing()
136 {
137 return isset($_GET['post_type']) && $_GET['post_type'] === 'give_forms';
138 }
139 }
140