PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.19.8
GiveWP – Donation Plugin and Fundraising Platform v2.19.8
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
142 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 Shim::load( 'current_datetime' );
61 $currentDateTime = current_datetime();
62 $currentUserId = get_current_user_id();
63 $giveWPWebsiteTimezone = new DateTimeZone('America/Los_Angeles');
64
65 return array_filter(
66 $this->getBanners(),
67 function ($banner) use ($currentDateTime, $currentUserId, $giveWPWebsiteTimezone) {
68 $isHidden = in_array($banner['id'] . $currentUserId, $this->hiddenBanners);
69 $isFuture = $currentDateTime < new DateTimeImmutable($banner['startDate'], $giveWPWebsiteTimezone);
70 $isPast = $currentDateTime > new DateTimeImmutable($banner['endDate'], $giveWPWebsiteTimezone);
71
72 return ! ($isHidden || $isFuture || $isPast);
73 }
74 );
75 }
76
77 /**
78 * @param string $banner
79 */
80 public function hideBanner($banner)
81 {
82 $this->hiddenBanners[] = $banner;
83
84 update_option(
85 $this->optionName,
86 array_unique($this->hiddenBanners)
87 );
88 }
89
90 /**
91 * Render admin page
92 */
93 public function render()
94 {
95 $banners = $this->getVisibleBanners();
96
97 if ( ! empty($banners)) {
98 include __DIR__ . '/resources/views/sale-banners.php';
99 }
100 }
101
102 /**
103 * Load scripts
104 */
105 public function loadScripts()
106 {
107 wp_enqueue_script(
108 'give-in-plugin-upsells-sale-banners',
109 GIVE_PLUGIN_URL . 'assets/dist/js/admin-upsell-sale-banner.js',
110 [],
111 GIVE_VERSION,
112 true
113 );
114
115 wp_localize_script(
116 'give-in-plugin-upsells-sale-banners',
117 'GiveSaleBanners',
118 [
119 'apiRoot' => esc_url_raw(rest_url('give-api/v2/sale-banner')),
120 'apiNonce' => wp_create_nonce('wp_rest'),
121 ]
122 );
123
124 wp_enqueue_style(
125 'give-in-plugin-upsells-sale-banners-font',
126 'https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap',
127 [],
128 null
129 );
130 }
131
132 /**
133 * Helper function to determine if the current page Give admin page
134 *
135 * @return bool
136 */
137 public static function isShowing()
138 {
139 return isset($_GET['post_type']) && $_GET['post_type'] === 'give_forms';
140 }
141 }
142