PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 1.2.1
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v1.2.1
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 3 years ago AdminNoticesServiceProvider.php 3 years ago
AdminNoticesService.php
169 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 * Is the notice dismissed.
34 *
35 * @param string $name Notice name.
36 *
37 * @return boolean
38 */
39 public function isDismissed( $name ) {
40 return (bool) get_option( $this->notice_key . '_' . sanitize_text_field( $name ), false );
41 }
42
43 /**
44 * Dismiss the notice.
45 *
46 * @return void
47 */
48 public function dismiss() {
49 // permissions check.
50 if ( ! current_user_can( 'install_plugins' ) ) {
51 return;
52 }
53
54 // not our notices, bail.
55 if ( ! isset( $_GET['surecart_action'] ) || 'dismiss_notices' !== sanitize_text_field( wp_unslash( $_GET['surecart_action'] ) ) ) {
56 return;
57 }
58
59 // get notice.
60 $notice = ! empty( $_GET['surecart_notice'] ) ? sanitize_text_field( wp_unslash( $_GET['surecart_notice'] ) ) : '';
61 if ( ! $notice ) {
62 return;
63 }
64
65 // verify nonce.
66 if ( ! wp_verify_nonce( sanitize_text_field( $_GET['surecart_nonce'] ), 'surecart_notice_nonce' ) ) {
67 wp_die( esc_html__( 'Your session expired - please try again.', 'surecart' ) );
68 exit;
69 }
70
71 // notice is dismissed.
72 update_option( $this->notice_key . '_' . sanitize_text_field( $notice ), 1 );
73 }
74
75 /**
76 * Show the response notice.
77 *
78 * @param array $notice Notice data to show.
79 *
80 * @return void
81 */
82 public function showResponseNotice( $notice = [] ) {
83 // already showing it.
84 if ( $this->showing_response_notice ) {
85 return;
86 }
87
88 // phpcs:disable WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode
89 $notice_data = json_decode( base64_decode( implode( '', (array) $notice ) ) );
90 if ( empty( $notice_data->message ) ) {
91 return;
92 }
93
94 $this->showing_response_notice = true;
95
96 add_action(
97 'admin_notices',
98 function() use ( $notice_data ) {
99 echo wp_kses_post(
100 $this->render(
101 [
102 'name' => 'update_notice_' . \SureCart::plugin()->version(),
103 'type' => sanitize_text_field( $notice_data->type ),
104 'title' => esc_html__( 'SureCart', 'surecart' ),
105 'text' => esc_html( $notice_data->message ),
106 ]
107 )
108 );
109 }
110 );
111 }
112
113 /**
114 * Render the notice
115 *
116 * @return string
117 */
118 public function render( $args = [] ) {
119 $args = wp_parse_args(
120 $args,
121 [
122 'title' => '',
123 'type' => 'info',
124 'text' => '',
125 'name' => '',
126 ]
127 );
128
129 if ( $this->isDismissed( $args['name'] ) ) {
130 return '';
131 }
132
133 ob_start(); ?>
134
135 <div class="notice notice-<?php echo sanitize_html_class( $args['type'] ); ?>">
136 <p>
137 <strong>
138 <?php echo esc_html( $args['title'] ); ?>
139 </strong>
140 </p>
141
142 <?php echo wp_kses_post( $args['text'] ); ?>
143
144 <?php if ( ! empty( $args['name'] ) ) : ?>
145 <p>
146 <a href="
147 <?php
148 echo esc_url(
149 add_query_arg(
150 [
151 'surecart_action' => 'dismiss_notices',
152 'surecart_notice' => sanitize_text_field( $args['name'] ),
153 'surecart_nonce' => wp_create_nonce( 'surecart_notice_nonce' ),
154 ]
155 )
156 );
157 ?>
158 ">
159 <?php esc_html_e( 'Dismiss Notice', 'surecart' ); ?>
160 </a>
161 </p>
162 <?php endif; ?>
163 </div>
164
165 <?php
166 return ob_get_clean();
167 }
168 }
169