PluginProbe
Image Source Control Lite – Show Image Credits and Captions / 3.12.0
Image Source Control Lite – Show Image Credits and Captions v3.12.0
3.12.0 3.11.0 trunk 1.1 1.1.1 1.1.2 1.1.2.1 1.1.3 1.10 1.10.1 1.10.2 1.10.3 1.10.4 1.10.5 1.2 1.2.0.1 1.2.0.2 1.2.0.3 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.4.1 1.3.5 All 110 releases
image-source-control-isc / includes / settings / sections / newsletter.php

newsletter.php in Image Source Control Lite – Show Image Credits and Captions 3.12.0, at includes/settings/sections/newsletter.php

103 lines 2.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace ISC\Settings\Sections;
4
5 use ISC\User;
6
7 /**
8 * Handle newsletter signup
9 */
10 class Newsletter {
11
12 /**
13 * Newsletter logic instance
14 *
15 * @var \ISC\Newsletter
16 */
17 private $newsletter;
18
19 /**
20 * Constructor
21 */
22 public function __construct() {
23 $this->newsletter = new \ISC\Newsletter();
24
25 if ( $this->newsletter->current_user_is_subscribed() || $this->newsletter->current_user_closed_signup() ) {
26 return;
27 }
28
29 $this->add_settings_section();
30
31 add_action( 'wp_ajax_newsletter_signup', [ $this, 'newsletter_signup' ] );
32 add_action( 'wp_ajax_newsletter_close', [ $this, 'close_newsletter_box' ] );
33 }
34
35 /**
36 * Add settings section
37 */
38 public function add_settings_section() {
39 add_settings_section(
40 'isc_settings_section_signup',
41 __( 'Newsletter', 'image-source-control-isc' ),
42 [ $this, 'render_settings_section' ],
43 'isc_settings_page',
44 [ 'close_button' => true ]
45 );
46 }
47
48 /**
49 * Render settings section
50 */
51 public function render_settings_section() {
52 $email = sanitize_email( User::get_email() );
53 $signup_url = \ISC\Admin_Utils::get_isc_localized_website_url( 'newsletter', 'newsletter', 'newsletter' );
54
55 require_once ISCPATH . 'admin/templates/settings/newsletter.php';
56 }
57
58 /**
59 * AJAX handler to subscribe to the newsletter
60 *
61 * @return void
62 */
63 public function newsletter_signup() {
64 check_ajax_referer( 'isc-admin-ajax-nonce', 'nonce' );
65
66 if ( ! current_user_can( 'manage_options' ) ) {
67 die();
68 }
69
70 $return = $this->newsletter->subscribe();
71
72 $response = [
73 'success' => true,
74 'message' => $return['message'],
75 ];
76 echo wp_json_encode( $response );
77
78 die();
79 }
80
81 /**
82 * AJAX handler to close the newsletter box and never show it again
83 *
84 * @return void
85 */
86 public function close_newsletter_box() {
87 check_ajax_referer( 'isc-admin-ajax-nonce', 'nonce' );
88
89 if ( ! current_user_can( 'manage_options' ) ) {
90 die();
91 }
92
93 $this->newsletter->close();
94
95 $response = [
96 'success' => true,
97 ];
98 echo wp_json_encode( $response );
99
100 die();
101 }
102 }
103