PluginProbe
Powerkit – Supercharge your WordPress Site / 2.3.6
Powerkit – Supercharge your WordPress Site v2.3.6
3.1.1 3.1.0 3.0.9 3.0.8 trunk 2.2.6 2.2.7 2.2.8 2.2.9 2.3.0 2.3.1 2.3.2 2.3.3 2.3.4 2.3.5 2.3.6 2.3.7 2.3.8 2.3.9 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 All 87 releases
powerkit / modules / opt-in-forms / admin / class-powerkit-opt-in-forms-admin.php

class-powerkit-opt-in-forms-admin.php in Powerkit – Supercharge your WordPress Site 2.3.6, at modules/opt-in-forms/admin/class-powerkit-opt-in-forms-admin.php

170 lines 6.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * The admin-specific functionality of the module.
4 *
5 * @link https://codesupply.co
6 * @since 1.0.0
7 *
8 * @package Powerkit
9 * @subpackage Modules/Admin
10 */
11
12 /**
13 * The admin-specific functionality of the module.
14 */
15 class Powerkit_Opt_In_Forms_Admin extends Powerkit_Module_Admin {
16
17 /**
18 * Initialize
19 */
20 public function initialize() {
21 add_action( 'admin_menu', array( $this, 'register_options_page' ) );
22 }
23
24 /**
25 * Register admin page
26 *
27 * @since 1.0.0
28 */
29 public function register_options_page() {
30 add_options_page( esc_html__( 'Opt-in Forms', 'powerkit' ), esc_html__( 'Opt-in Forms', 'powerkit' ), 'manage_options', powerkit_get_page_slug( $this->slug ), array( $this, 'build_options_page' ) );
31 }
32
33 /**
34 * Build admin page
35 *
36 * @since 1.0.0
37 */
38 public function build_options_page() {
39
40 if ( ! current_user_can( 'manage_options' ) ) {
41 wp_die( esc_html__( 'You do not have sufficient rights to view this page.', 'powerkit' ) );
42 }
43
44 $this->save_options_page();
45 ?>
46
47 <div class="wrap pk-wrap">
48 <h1><?php esc_html_e( 'Opt-in Forms', 'powerkit' ); ?></h1>
49
50 <div class="pk-settings">
51 <form method="post">
52 <h3><?php esc_html_e( 'MailChimp', 'powerkit' ); ?></h3>
53
54 <table class="form-table">
55 <tbody>
56 <!-- API Key -->
57 <tr>
58 <th scope="row"><label for="powerkit_mailchimp_token"><?php esc_html_e( 'API Key', 'powerkit' ); ?></label></th>
59 <td><input class="regular-text" id="powerkit_mailchimp_token" name="powerkit_mailchimp_token" type="text" value="<?php echo esc_attr( get_option( 'powerkit_mailchimp_token' ) ); ?>"></td>
60 </tr>
61 <tr>
62 <td colspan="2">
63 <ol>
64 <li><?php esc_html_e( 'Log in to your', 'powerkit' ); ?> <?php echo sprintf( '<a href="%1$s" target="_blank">%2$s</a>', esc_url( 'https://mailchimp.com' ), esc_html__( 'MailChimp account', 'powerkit' ) ); ?>.</li>
65 <li><?php esc_html_e( 'Click your profile name to expand the Account Panel, and choose Account.', 'powerkit' ); ?></li>
66 <li><?php esc_html_e( 'Click the Extras drop-down menu and choose API keys.', 'powerkit' ); ?></li>
67 <li><?php esc_html_e( 'Copy an existing API key or click the Create A Key button.', 'powerkit' ); ?></li>
68 <li><?php esc_html_e( 'Name your key descriptively, so you know what application uses that key.', 'powerkit' ); ?></li>
69 </ol>
70 </td>
71 </tr>
72 <!-- Lists -->
73 <tr>
74 <?php
75 $token = get_option( 'powerkit_mailchimp_token' );
76
77 if ( $token ) {
78
79 $response = null;
80
81 $data = powerkit_mailchimp_request(
82 'GET', 'lists', array(
83 'sort_field' => 'date_created',
84 'sort_dir' => 'DESC',
85 'count' => 1000,
86 )
87 );
88
89 if ( is_array( $data ) ) {
90 $response .= isset( $data['type'] ) ? $data['type'] : '';
91 $response .= isset( $data['title'] ) ? ':' . $data['title'] : '';
92 }
93
94 if ( is_array( $data ) && isset( $data['lists'] ) && $data['lists'] ) {
95 ?>
96 <th scope="row"><label for="powerkit_mailchimp_list"><?php esc_html_e( 'Default Audience', 'powerkit' ); ?></label></th>
97 <td>
98 <select class="regular-text" name="powerkit_mailchimp_list" id="powerkit_mailchimp_list">
99 <option value=""><?php esc_html_e( '- not selected -', 'powerkit' ); ?></option>
100 <?php foreach ( $data['lists'] as $item ) : ?>
101 <option <?php selected( $item['id'], get_option( 'powerkit_mailchimp_list' ) ); ?> value="<?php echo esc_attr( $item['id'] ); ?>"><?php echo esc_html( $item['name'] ); ?></option>
102 <?php endforeach; ?>
103 </select>
104 </td>
105 <?php } else { ?>
106 <td colspan="2">
107 <code><?php printf( '[%s] %s', esc_html( $response ), esc_html__( 'Invalid API Key or MailChimp access error!', 'powerkit' ) ); ?></code>
108 </td>
109 <?php } ?>
110 <?php } ?>
111 </tr>
112 <!-- Enable double opt-in -->
113 <tr>
114 <th scope="row"><label for="powerkit_mailchimp_double_optin"><?php esc_html_e( 'Enable Double opt-in', 'powerkit' ); ?></label></th>
115 <td><input class="regular-text" id="powerkit_mailchimp_double_optin" name="powerkit_mailchimp_double_optin" type="checkbox" value="true" <?php checked( (bool) get_option( 'powerkit_mailchimp_double_optin', false ) ); ?>></td>
116 </tr>
117 <!-- Data Privacy Checkbox Label -->
118 <tr>
119 <th scope="row">
120 <label for="powerkit_mailchimp_privacy">
121 <?php esc_html_e( 'Data Privacy Checkbox Label', 'powerkit' ); ?>
122 <p class="description"><?php esc_html_e( 'Enter the contents that should display as a label for the data privacy checkbox. Leave blank to disable.', 'powerkit' ); ?></p>
123 </label>
124 </th>
125 <td><textarea class="regular-text" id="powerkit_mailchimp_privacy" name="powerkit_mailchimp_privacy" rows="5"><?php echo esc_html( powerkit_mailchimp_get_privacy_text() ); ?></textarea></td>
126 </tr>
127 </tbody>
128 </table>
129
130 <?php wp_nonce_field(); ?>
131
132 <p class="submit"><input class="button button-primary" name="save_settings" type="submit" value="<?php esc_html_e( 'Save changes', 'powerkit' ); ?>" /></p>
133 </form>
134 </div>
135 </div>
136 <?php
137 }
138
139
140 /**
141 * Settings save
142 *
143 * @since 1.0.0
144 */
145 protected function save_options_page() {
146 if ( ! isset( $_POST['_wpnonce'] ) || ! wp_verify_nonce( $_POST['_wpnonce'] ) ) { // Input var ok; sanitization ok.
147 return;
148 }
149
150 if ( isset( $_POST['save_settings'] ) ) { // Input var ok.
151
152 if ( isset( $_POST['powerkit_mailchimp_token'] ) ) { // Input var ok.
153 update_option( 'powerkit_mailchimp_token', sanitize_text_field( wp_unslash( $_POST['powerkit_mailchimp_token'] ) ) ); // Input var ok.
154 }
155 if ( isset( $_POST['powerkit_mailchimp_list'] ) ) { // Input var ok.
156 update_option( 'powerkit_mailchimp_list', sanitize_text_field( wp_unslash( $_POST['powerkit_mailchimp_list'] ) ) ); // Input var ok.
157 }
158 if ( isset( $_POST['powerkit_mailchimp_double_optin'] ) ) { // Input var ok.
159 update_option( 'powerkit_mailchimp_double_optin', true );
160 } else {
161 update_option( 'powerkit_mailchimp_double_optin', false );
162 }
163 if ( isset( $_POST['powerkit_mailchimp_privacy'] ) ) { // Input var ok.
164 update_option( 'powerkit_mailchimp_privacy', wp_kses( wp_unslash( $_POST['powerkit_mailchimp_privacy'] ), 'post' ) ); // Input var ok. sanitization ok.
165 }
166 printf( '<div id="message" class="updated fade"><p><strong>%s</strong></p></div>', esc_html__( 'Settings saved.', 'powerkit' ) );
167 }
168 }
169 }
170