PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 3.0.3
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v3.0.3
4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 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.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / app / src / WordPress / Admin / Notices / AdminNoticesService.php
surecart / app / src / WordPress / Admin / Notices Last commit date
AdminNoticesService.php 1 year ago AdminNoticesServiceProvider.php 1 year ago
AdminNoticesService.php
193 lines
1 <?php
2
3 namespace SureCart\WordPress\Admin\Notices;
4
5 /**
6 * Admin notices service
7 */
8 class AdminNoticesService {
9 /**
10 * Notice key.
11 *
12 * @var string
13 */
14 protected $notice_key = 'surecart_dismissed_notice';
15
16 /**
17 * Showing the response notice?
18 *
19 * @var boolean
20 */
21 protected $showing_response_notice = false;
22
23 /**
24 * Bootstrap notice dismissal.
25 *
26 * @return void
27 */
28 public function bootstrap() {
29 add_action( 'admin_init', [ $this, 'dismiss' ] );
30 }
31
32 /**
33 * Reset the notice.
34 *
35 * @param string $name Notice name.
36 *
37 * @return void
38 */
39 public function reset( $name ) {
40 delete_option( $this->notice_key . '_' . sanitize_text_field( $name ) );
41 }
42
43 /**
44 * Is the notice dismissed.
45 *
46 * @param string $name Notice name.
47 *
48 * @return boolean
49 */
50 public function isDismissed( $name ) {
51 return (bool) get_option( $this->notice_key . '_' . sanitize_text_field( $name ), false );
52 }
53
54 /**
55 * Dismiss the notice.
56 *
57 * @return void
58 */
59 public function dismiss() {
60 // permissions check.
61 if ( ! current_user_can( 'manage_options' ) ) {
62 return;
63 }
64
65 // not our notices, bail.
66 if ( ! isset( $_GET['surecart_action'] ) || 'dismiss_notices' !== sanitize_text_field( wp_unslash( $_GET['surecart_action'] ) ) ) {
67 return;
68 }
69
70 // get notice.
71 $notice = ! empty( $_GET['surecart_notice'] ) ? sanitize_text_field( wp_unslash( $_GET['surecart_notice'] ) ) : '';
72 if ( ! $notice ) {
73 return;
74 }
75
76 // verify nonce.
77 if ( ! wp_verify_nonce( sanitize_text_field( $_GET['surecart_nonce'] ), 'surecart_notice_nonce' ) ) {
78 wp_die( esc_html__( 'Your session expired - please try again.', 'surecart' ) );
79 exit;
80 }
81
82 // notice is dismissed.
83 update_option( $this->notice_key . '_' . sanitize_text_field( $notice ), 1 );
84 }
85
86 /**
87 * Show the response notice.
88 *
89 * @param array $notice Notice data to show.
90 *
91 * @return void
92 */
93 public function showResponseNotice( $notice = [] ) {
94 // already showing it.
95 if ( $this->showing_response_notice ) {
96 return;
97 }
98
99 // phpcs:disable WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode
100 $notice_data = json_decode( base64_decode( implode( '', (array) $notice ) ) );
101 if ( empty( $notice_data->message ) ) {
102 return;
103 }
104
105 $this->showing_response_notice = true;
106
107 add_action(
108 'admin_notices',
109 function () use ( $notice_data ) {
110 echo wp_kses_post(
111 $this->render(
112 [
113 'name' => 'update_notice_' . \SureCart::plugin()->version(),
114 'type' => sanitize_text_field( $notice_data->type ),
115 'title' => esc_html__( 'SureCart', 'surecart' ),
116 'text' => wp_kses_post( $notice_data->message ),
117 ]
118 )
119 );
120 }
121 );
122 }
123
124 /**
125 * Add the notice.
126 *
127 * @return void
128 */
129 public function add( $notice_data ) {
130 add_action(
131 'admin_notices',
132 function () use ( $notice_data ) {
133 echo wp_kses_post(
134 $this->render( $notice_data )
135 );
136 }
137 );
138 }
139
140 /**
141 * Render the notice
142 *
143 * @return string
144 */
145 public function render( $args = [] ) {
146 $args = wp_parse_args(
147 $args,
148 [
149 'title' => '',
150 'type' => 'info',
151 'text' => '',
152 'name' => '',
153 ]
154 );
155
156 if ( $this->isDismissed( $args['name'] ) ) {
157 return '';
158 }
159
160 ob_start(); ?>
161
162 <div class="notice notice-<?php echo sanitize_html_class( $args['type'] ); ?>" style="position:relative">
163 <p>
164 <strong>
165 <?php echo esc_html( $args['title'] ); ?>
166 </strong>
167 </p>
168
169 <?php echo wp_kses_post( $args['text'] ); ?>
170
171 <?php if ( ! empty( $args['name'] ) ) : ?>
172 <a href="
173 <?php
174 echo esc_url(
175 add_query_arg(
176 [
177 'surecart_action' => 'dismiss_notices',
178 'surecart_notice' => sanitize_text_field( $args['name'] ),
179 'surecart_nonce' => \wp_create_nonce( 'surecart_notice_nonce' ),
180 ]
181 )
182 );
183 ?>
184 " type="button" class="notice-dismiss" style="text-decoration:none;"><span class="screen-reader-text">Dismiss this notice.</span></a>
185
186 <?php endif; ?>
187 </div>
188
189 <?php
190 return ob_get_clean();
191 }
192 }
193