Completed
Branch master (7421d0)
by
unknown
11:25 queued 06:55
created
core/services/licensing/LicenseManager.php 2 patches
Indentation   +113 added lines, -113 removed lines patch added patch discarded remove patch
@@ -6,117 +6,117 @@
 block discarded – undo
6 6
 
7 7
 class LicenseManager
8 8
 {
9
-    private LicenseAPI $license_api;
10
-
11
-    private LicenseKeyData $license_key_data;
12
-
13
-    private PluginLicenseCollection $plugin_license_collection;
14
-
15
-
16
-    public function __construct(
17
-        LicenseAPI $license_api,
18
-        LicenseKeyData $license_key_data,
19
-        PluginLicenseCollection $plugin_license_collection
20
-    ) {
21
-        $this->license_api               = $license_api;
22
-        $this->license_key_data          = $license_key_data;
23
-        $this->plugin_license_collection = $plugin_license_collection;
24
-    }
25
-
26
-
27
-    public function activateLicense(
28
-        string $license_key,
29
-        string $item_id,
30
-        string $item_name,
31
-        string $plugin_slug,
32
-        string $plugin_version,
33
-        string $min_core_version = ''
34
-    ): stdCLass {
35
-        $license_data              = $this->license_api->postRequest(
36
-            LicenseAPI::ACTION_ACTIVATE,
37
-            $license_key,
38
-            $item_id,
39
-            $item_name,
40
-            $plugin_version,
41
-            $min_core_version
42
-        );
43
-        $license_data->license_key = $license_data->license === 'valid' ? $license_key : '';
44
-        $this->license_key_data->updateLicense($license_data, $plugin_slug);
45
-        return $license_data;
46
-    }
47
-
48
-
49
-    public function deactivateLicense(
50
-        string $license_key,
51
-        string $item_id,
52
-        string $item_name,
53
-        string $plugin_slug,
54
-        string $plugin_version,
55
-        string $min_core_version = ''
56
-    ): stdCLass {
57
-        $license_data = $this->license_api->postRequest(
58
-            LicenseAPI::ACTION_DEACTIVATE,
59
-            $license_key,
60
-            $item_id,
61
-            $item_name,
62
-            $plugin_version,
63
-            $min_core_version
64
-        );
65
-        $this->license_key_data->removeLicense($plugin_slug);
66
-        return $license_data;
67
-    }
68
-
69
-
70
-    public function resetLicenseKey(string $plugin_slug): stdCLass
71
-    {
72
-        $license_data              = $this->getLicenseData($plugin_slug);
73
-        $license_data->license_key = '';
74
-        $this->license_key_data->updateLicense($license_data, $plugin_slug, true);
75
-        return $license_data;
76
-    }
77
-
78
-
79
-    public function checkLicense(
80
-        string $license_key,
81
-        string $item_id,
82
-        string $item_name,
83
-        string $plugin_slug,
84
-        string $plugin_version,
85
-        string $min_core_version = ''
86
-    ): stdCLass {
87
-        $existing_license_data = $this->getLicenseData($plugin_slug);
88
-        $license_data          = $this->license_api->postRequest(
89
-            LicenseAPI::ACTION_CHECK,
90
-            $license_key,
91
-            $item_id,
92
-            $item_name,
93
-            $plugin_version,
94
-            $min_core_version
95
-        );
96
-        $license_data          = (array) $license_data + (array) $existing_license_data;
97
-        return (object) $license_data;
98
-    }
99
-
100
-
101
-    public function getLicenseData(string $plugin_slug): stdClass
102
-    {
103
-        return $this->license_key_data->getLicense($plugin_slug);
104
-    }
105
-
106
-
107
-    public function getVersionInfo(): stdClass
108
-    {
109
-        $products = [];
110
-        foreach ($this->plugin_license_collection as $plugin_license) {
111
-            if (! $plugin_license instanceof PluginLicense) {
112
-                continue;
113
-            }
114
-            $products[ $plugin_license->pluginSlug() ] = [
115
-                'item_id' => $plugin_license->itemId(),
116
-                'license' => $plugin_license->licenseKey(),
117
-                'url'     => LicenseAPI::url(),
118
-            ];
119
-        }
120
-        return $this->license_api->getProductVersions($products);
121
-    }
9
+	private LicenseAPI $license_api;
10
+
11
+	private LicenseKeyData $license_key_data;
12
+
13
+	private PluginLicenseCollection $plugin_license_collection;
14
+
15
+
16
+	public function __construct(
17
+		LicenseAPI $license_api,
18
+		LicenseKeyData $license_key_data,
19
+		PluginLicenseCollection $plugin_license_collection
20
+	) {
21
+		$this->license_api               = $license_api;
22
+		$this->license_key_data          = $license_key_data;
23
+		$this->plugin_license_collection = $plugin_license_collection;
24
+	}
25
+
26
+
27
+	public function activateLicense(
28
+		string $license_key,
29
+		string $item_id,
30
+		string $item_name,
31
+		string $plugin_slug,
32
+		string $plugin_version,
33
+		string $min_core_version = ''
34
+	): stdCLass {
35
+		$license_data              = $this->license_api->postRequest(
36
+			LicenseAPI::ACTION_ACTIVATE,
37
+			$license_key,
38
+			$item_id,
39
+			$item_name,
40
+			$plugin_version,
41
+			$min_core_version
42
+		);
43
+		$license_data->license_key = $license_data->license === 'valid' ? $license_key : '';
44
+		$this->license_key_data->updateLicense($license_data, $plugin_slug);
45
+		return $license_data;
46
+	}
47
+
48
+
49
+	public function deactivateLicense(
50
+		string $license_key,
51
+		string $item_id,
52
+		string $item_name,
53
+		string $plugin_slug,
54
+		string $plugin_version,
55
+		string $min_core_version = ''
56
+	): stdCLass {
57
+		$license_data = $this->license_api->postRequest(
58
+			LicenseAPI::ACTION_DEACTIVATE,
59
+			$license_key,
60
+			$item_id,
61
+			$item_name,
62
+			$plugin_version,
63
+			$min_core_version
64
+		);
65
+		$this->license_key_data->removeLicense($plugin_slug);
66
+		return $license_data;
67
+	}
68
+
69
+
70
+	public function resetLicenseKey(string $plugin_slug): stdCLass
71
+	{
72
+		$license_data              = $this->getLicenseData($plugin_slug);
73
+		$license_data->license_key = '';
74
+		$this->license_key_data->updateLicense($license_data, $plugin_slug, true);
75
+		return $license_data;
76
+	}
77
+
78
+
79
+	public function checkLicense(
80
+		string $license_key,
81
+		string $item_id,
82
+		string $item_name,
83
+		string $plugin_slug,
84
+		string $plugin_version,
85
+		string $min_core_version = ''
86
+	): stdCLass {
87
+		$existing_license_data = $this->getLicenseData($plugin_slug);
88
+		$license_data          = $this->license_api->postRequest(
89
+			LicenseAPI::ACTION_CHECK,
90
+			$license_key,
91
+			$item_id,
92
+			$item_name,
93
+			$plugin_version,
94
+			$min_core_version
95
+		);
96
+		$license_data          = (array) $license_data + (array) $existing_license_data;
97
+		return (object) $license_data;
98
+	}
99
+
100
+
101
+	public function getLicenseData(string $plugin_slug): stdClass
102
+	{
103
+		return $this->license_key_data->getLicense($plugin_slug);
104
+	}
105
+
106
+
107
+	public function getVersionInfo(): stdClass
108
+	{
109
+		$products = [];
110
+		foreach ($this->plugin_license_collection as $plugin_license) {
111
+			if (! $plugin_license instanceof PluginLicense) {
112
+				continue;
113
+			}
114
+			$products[ $plugin_license->pluginSlug() ] = [
115
+				'item_id' => $plugin_license->itemId(),
116
+				'license' => $plugin_license->licenseKey(),
117
+				'url'     => LicenseAPI::url(),
118
+			];
119
+		}
120
+		return $this->license_api->getProductVersions($products);
121
+	}
122 122
 }
Please login to merge, or discard this patch.
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -32,7 +32,7 @@  discard block
 block discarded – undo
32 32
         string $plugin_version,
33 33
         string $min_core_version = ''
34 34
     ): stdCLass {
35
-        $license_data              = $this->license_api->postRequest(
35
+        $license_data = $this->license_api->postRequest(
36 36
             LicenseAPI::ACTION_ACTIVATE,
37 37
             $license_key,
38 38
             $item_id,
@@ -93,7 +93,7 @@  discard block
 block discarded – undo
93 93
             $plugin_version,
94 94
             $min_core_version
95 95
         );
96
-        $license_data          = (array) $license_data + (array) $existing_license_data;
96
+        $license_data = (array) $license_data + (array) $existing_license_data;
97 97
         return (object) $license_data;
98 98
     }
99 99
 
@@ -108,10 +108,10 @@  discard block
 block discarded – undo
108 108
     {
109 109
         $products = [];
110 110
         foreach ($this->plugin_license_collection as $plugin_license) {
111
-            if (! $plugin_license instanceof PluginLicense) {
111
+            if ( ! $plugin_license instanceof PluginLicense) {
112 112
                 continue;
113 113
             }
114
-            $products[ $plugin_license->pluginSlug() ] = [
114
+            $products[$plugin_license->pluginSlug()] = [
115 115
                 'item_id' => $plugin_license->itemId(),
116 116
                 'license' => $plugin_license->licenseKey(),
117 117
                 'url'     => LicenseAPI::url(),
Please login to merge, or discard this patch.
core/services/licensing/SamplePlugin.php 1 patch
Spacing   +96 added lines, -96 removed lines patch added patch discarded remove patch
@@ -16,20 +16,20 @@  discard block
 block discarded – undo
16 16
  */
17 17
 
18 18
 // this is the URL our updater / license checker pings. This should be the URL of the site with EDD installed
19
-define( 'EDD_SAMPLE_STORE_URL', 'http://easydigitaldownloads.com' ); // you should use your own CONSTANT name, and be sure to replace it throughout this file
19
+define('EDD_SAMPLE_STORE_URL', 'http://easydigitaldownloads.com'); // you should use your own CONSTANT name, and be sure to replace it throughout this file
20 20
 
21 21
 // the download ID for the product in Easy Digital Downloads
22
-define( 'EDD_SAMPLE_ITEM_ID', 123 ); // you should use your own CONSTANT name, and be sure to replace it throughout this file
22
+define('EDD_SAMPLE_ITEM_ID', 123); // you should use your own CONSTANT name, and be sure to replace it throughout this file
23 23
 
24 24
 // the name of the product in Easy Digital Downloads
25
-define( 'EDD_SAMPLE_ITEM_NAME', 'Sample Plugin' ); // you should use your own CONSTANT name, and be sure to replace it throughout this file
25
+define('EDD_SAMPLE_ITEM_NAME', 'Sample Plugin'); // you should use your own CONSTANT name, and be sure to replace it throughout this file
26 26
 
27 27
 // the name of the settings page for the license input to be displayed
28
-define( 'EDD_SAMPLE_PLUGIN_LICENSE_PAGE', 'pluginname-license' );
28
+define('EDD_SAMPLE_PLUGIN_LICENSE_PAGE', 'pluginname-license');
29 29
 
30
-if ( ! class_exists( 'EDD_SL_Plugin_Updater' ) ) {
30
+if ( ! class_exists('EDD_SL_Plugin_Updater')) {
31 31
 	// load our custom updater
32
-	include dirname( __FILE__ ) . '/EDD_SL_Plugin_Updater.php';
32
+	include dirname(__FILE__).'/EDD_SL_Plugin_Updater.php';
33 33
 }
34 34
 
35 35
 /**
@@ -39,29 +39,29 @@  discard block
 block discarded – undo
39 39
 function edd_sl_sample_plugin_updater() {
40 40
 
41 41
 	// To support auto-updates, this needs to run during the wp_version_check cron job for privileged users.
42
-	$doing_cron = defined( 'DOING_CRON' ) && DOING_CRON;
43
-	if ( ! current_user_can( 'manage_options' ) && ! $doing_cron ) {
42
+	$doing_cron = defined('DOING_CRON') && DOING_CRON;
43
+	if ( ! current_user_can('manage_options') && ! $doing_cron) {
44 44
 		return;
45 45
 	}
46 46
 
47 47
 	// retrieve our license key from the DB
48
-	$license_key = trim( get_option( 'edd_sample_license_key' ) );
48
+	$license_key = trim(get_option('edd_sample_license_key'));
49 49
 
50 50
 	// setup the updater
51 51
 	$edd_updater = new EDD_SL_Plugin_Updater(
52 52
 		EDD_SAMPLE_STORE_URL,
53 53
 		__FILE__,
54 54
 		array(
55
-			'version' => '1.0',                    // current version number
56
-			'license' => $license_key,             // license key (used get_option above to retrieve from DB)
57
-			'item_id' => EDD_SAMPLE_ITEM_ID,       // ID of the product
55
+			'version' => '1.0', // current version number
56
+			'license' => $license_key, // license key (used get_option above to retrieve from DB)
57
+			'item_id' => EDD_SAMPLE_ITEM_ID, // ID of the product
58 58
 			'author'  => 'Easy Digital Downloads', // author of this plugin
59 59
 			'beta'    => false,
60 60
 		)
61 61
 	);
62 62
 
63 63
 }
64
-add_action( 'init', 'edd_sl_sample_plugin_updater' );
64
+add_action('init', 'edd_sl_sample_plugin_updater');
65 65
 
66 66
 
67 67
 /************************************
@@ -77,37 +77,37 @@  discard block
 block discarded – undo
77 77
  */
78 78
 function edd_sample_license_menu() {
79 79
 	add_plugins_page(
80
-		__( 'Plugin License' ),
81
-		__( 'Plugin License' ),
80
+		__('Plugin License'),
81
+		__('Plugin License'),
82 82
 		'manage_options',
83 83
 		EDD_SAMPLE_PLUGIN_LICENSE_PAGE,
84 84
 		'edd_sample_license_page'
85 85
 	);
86 86
 }
87
-add_action( 'admin_menu', 'edd_sample_license_menu' );
87
+add_action('admin_menu', 'edd_sample_license_menu');
88 88
 
89 89
 function edd_sample_license_page() {
90 90
 	add_settings_section(
91 91
 		'edd_sample_license',
92
-		__( 'Plugin License' ),
92
+		__('Plugin License'),
93 93
 		'edd_sample_license_key_settings_section',
94 94
 		EDD_SAMPLE_PLUGIN_LICENSE_PAGE
95 95
 	);
96 96
 	add_settings_field(
97 97
 		'edd_sample_license_key',
98
-		'<label for="edd_sample_license_key">' . __( 'License Key' ) . '</label>',
98
+		'<label for="edd_sample_license_key">'.__('License Key').'</label>',
99 99
 		'edd_sample_license_key_settings_field',
100 100
 		EDD_SAMPLE_PLUGIN_LICENSE_PAGE,
101 101
 		'edd_sample_license',
102 102
 	);
103 103
 	?>
104 104
 	<div class="wrap">
105
-		<h2><?php esc_html_e( 'Plugin License Options' ); ?></h2>
105
+		<h2><?php esc_html_e('Plugin License Options'); ?></h2>
106 106
 		<form method="post" action="options.php">
107 107
 
108 108
 			<?php
109
-			do_settings_sections( EDD_SAMPLE_PLUGIN_LICENSE_PAGE );
110
-			settings_fields( 'edd_sample_license' );
109
+			do_settings_sections(EDD_SAMPLE_PLUGIN_LICENSE_PAGE);
110
+			settings_fields('edd_sample_license');
111 111
 			submit_button();
112 112
 			?>
113 113
 
@@ -121,7 +121,7 @@  discard block
 block discarded – undo
121 121
  * @return void
122 122
  */
123 123
 function edd_sample_license_key_settings_section() {
124
-	esc_html_e( 'This is where you enter your license key.' );
124
+	esc_html_e('This is where you enter your license key.');
125 125
 }
126 126
 
127 127
 /**
@@ -130,29 +130,29 @@  discard block
 block discarded – undo
130 130
  * @return void
131 131
  */
132 132
 function edd_sample_license_key_settings_field() {
133
-	$license = get_option( 'edd_sample_license_key' );
134
-	$status  = get_option( 'edd_sample_license_status' );
133
+	$license = get_option('edd_sample_license_key');
134
+	$status  = get_option('edd_sample_license_status');
135 135
 
136 136
 	?>
137
-	<p class="description"><?php esc_html_e( 'Enter your license key.' ); ?></p>
137
+	<p class="description"><?php esc_html_e('Enter your license key.'); ?></p>
138 138
 	<?php
139 139
 	printf(
140 140
 		'<input type="text" class="regular-text" id="edd_sample_license_key" name="edd_sample_license_key" value="%s" />',
141
-		esc_attr( $license )
141
+		esc_attr($license)
142 142
 	);
143 143
 	$button = array(
144 144
 		'name'  => 'edd_license_deactivate',
145
-		'label' => __( 'Deactivate License' ),
145
+		'label' => __('Deactivate License'),
146 146
 	);
147
-	if ( 'valid' !== $status ) {
147
+	if ('valid' !== $status) {
148 148
 		$button = array(
149 149
 			'name'  => 'edd_license_activate',
150
-			'label' => __( 'Activate License' ),
150
+			'label' => __('Activate License'),
151 151
 		);
152 152
 	}
153
-	wp_nonce_field( 'edd_sample_nonce', 'edd_sample_nonce' );
153
+	wp_nonce_field('edd_sample_nonce', 'edd_sample_nonce');
154 154
 	?>
155
-	<input type="submit" class="button-secondary" name="<?php echo esc_attr( $button['name'] ); ?>" value="<?php echo esc_attr( $button['label'] ); ?>"/>
155
+	<input type="submit" class="button-secondary" name="<?php echo esc_attr($button['name']); ?>" value="<?php echo esc_attr($button['label']); ?>"/>
156 156
 	<?php
157 157
 }
158 158
 
@@ -162,9 +162,9 @@  discard block
 block discarded – undo
162 162
  * @return void
163 163
  */
164 164
 function edd_sample_register_option() {
165
-	register_setting( 'edd_sample_license', 'edd_sample_license_key', 'edd_sanitize_license' );
165
+	register_setting('edd_sample_license', 'edd_sample_license_key', 'edd_sanitize_license');
166 166
 }
167
-add_action( 'admin_init', 'edd_sample_register_option' );
167
+add_action('admin_init', 'edd_sample_register_option');
168 168
 
169 169
 /**
170 170
  * Sanitizes the license key.
@@ -172,13 +172,13 @@  discard block
 block discarded – undo
172 172
  * @param string  $new The license key.
173 173
  * @return string
174 174
  */
175
-function edd_sanitize_license( $new ) {
176
-	$old = get_option( 'edd_sample_license_key' );
177
-	if ( $old && $old !== $new ) {
178
-		delete_option( 'edd_sample_license_status' ); // new license has been entered, so must reactivate
175
+function edd_sanitize_license($new) {
176
+	$old = get_option('edd_sample_license_key');
177
+	if ($old && $old !== $new) {
178
+		delete_option('edd_sample_license_status'); // new license has been entered, so must reactivate
179 179
 	}
180 180
 
181
-	return sanitize_text_field( $new );
181
+	return sanitize_text_field($new);
182 182
 }
183 183
 
184 184
 /**
@@ -189,21 +189,21 @@  discard block
 block discarded – undo
189 189
 function edd_sample_activate_license() {
190 190
 
191 191
 	// listen for our activate button to be clicked
192
-	if ( ! isset( $_POST['edd_license_activate'] ) ) {
192
+	if ( ! isset($_POST['edd_license_activate'])) {
193 193
 		return;
194 194
 	}
195 195
 
196 196
 	// run a quick security check
197
-	if ( ! check_admin_referer( 'edd_sample_nonce', 'edd_sample_nonce' ) ) {
197
+	if ( ! check_admin_referer('edd_sample_nonce', 'edd_sample_nonce')) {
198 198
 		return; // get out if we didn't click the Activate button
199 199
 	}
200 200
 
201 201
 	// retrieve the license from the database
202
-	$license = trim( get_option( 'edd_sample_license_key' ) );
203
-	if ( ! $license ) {
204
-		$license = ! empty( $_POST['edd_sample_license_key'] ) ? sanitize_text_field( $_POST['edd_sample_license_key'] ) : '';
202
+	$license = trim(get_option('edd_sample_license_key'));
203
+	if ( ! $license) {
204
+		$license = ! empty($_POST['edd_sample_license_key']) ? sanitize_text_field($_POST['edd_sample_license_key']) : '';
205 205
 	}
206
-	if ( ! $license ) {
206
+	if ( ! $license) {
207 207
 		return;
208 208
 	}
209 209
 
@@ -212,9 +212,9 @@  discard block
 block discarded – undo
212 212
 		'edd_action'  => 'activate_license',
213 213
 		'license'     => $license,
214 214
 		'item_id'     => EDD_SAMPLE_ITEM_ID,
215
-		'item_name'   => rawurlencode( EDD_SAMPLE_ITEM_NAME ), // the name of our product in EDD
215
+		'item_name'   => rawurlencode(EDD_SAMPLE_ITEM_NAME), // the name of our product in EDD
216 216
 		'url'         => home_url(),
217
-		'environment' => function_exists( 'wp_get_environment_type' ) ? wp_get_environment_type() : 'production',
217
+		'environment' => function_exists('wp_get_environment_type') ? wp_get_environment_type() : 'production',
218 218
 	);
219 219
 
220 220
 	// Call the custom API.
@@ -228,83 +228,83 @@  discard block
 block discarded – undo
228 228
 	);
229 229
 
230 230
 		// make sure the response came back okay
231
-	if ( is_wp_error( $response ) || 200 !== wp_remote_retrieve_response_code( $response ) ) {
231
+	if (is_wp_error($response) || 200 !== wp_remote_retrieve_response_code($response)) {
232 232
 
233
-		if ( is_wp_error( $response ) ) {
233
+		if (is_wp_error($response)) {
234 234
 			$message = $response->get_error_message();
235 235
 		} else {
236
-			$message = __( 'An error occurred, please try again.' );
236
+			$message = __('An error occurred, please try again.');
237 237
 		}
238 238
 	} else {
239 239
 
240
-		$license_data = json_decode( wp_remote_retrieve_body( $response ) );
240
+		$license_data = json_decode(wp_remote_retrieve_body($response));
241 241
 
242
-		if ( false === $license_data->success ) {
242
+		if (false === $license_data->success) {
243 243
 
244
-			switch ( $license_data->error ) {
244
+			switch ($license_data->error) {
245 245
 
246 246
 				case 'expired':
247 247
 					$message = sprintf(
248 248
 						/* translators: the license key expiration date */
249
-						__( 'Your license key expired on %s.', 'edd-sample-plugin' ),
250
-						date_i18n( get_option( 'date_format' ), strtotime( $license_data->expires, current_time( 'timestamp' ) ) )
249
+						__('Your license key expired on %s.', 'edd-sample-plugin'),
250
+						date_i18n(get_option('date_format'), strtotime($license_data->expires, current_time('timestamp')))
251 251
 					);
252 252
 					break;
253 253
 
254 254
 				case 'disabled':
255 255
 				case 'revoked':
256
-					$message = __( 'Your license key has been disabled.', 'edd-sample-plugin' );
256
+					$message = __('Your license key has been disabled.', 'edd-sample-plugin');
257 257
 					break;
258 258
 
259 259
 				case 'missing':
260
-					$message = __( 'Invalid license.', 'edd-sample-plugin' );
260
+					$message = __('Invalid license.', 'edd-sample-plugin');
261 261
 					break;
262 262
 
263 263
 				case 'invalid':
264 264
 				case 'site_inactive':
265
-					$message = __( 'Your license is not active for this URL.', 'edd-sample-plugin' );
265
+					$message = __('Your license is not active for this URL.', 'edd-sample-plugin');
266 266
 					break;
267 267
 
268 268
 				case 'item_name_mismatch':
269 269
 					/* translators: the plugin name */
270
-					$message = sprintf( __( 'This appears to be an invalid license key for %s.', 'edd-sample-plugin' ), EDD_SAMPLE_ITEM_NAME );
270
+					$message = sprintf(__('This appears to be an invalid license key for %s.', 'edd-sample-plugin'), EDD_SAMPLE_ITEM_NAME);
271 271
 					break;
272 272
 
273 273
 				case 'no_activations_left':
274
-					$message = __( 'Your license key has reached its activation limit.', 'edd-sample-plugin' );
274
+					$message = __('Your license key has reached its activation limit.', 'edd-sample-plugin');
275 275
 					break;
276 276
 
277 277
 				default:
278
-					$message = __( 'An error occurred, please try again.', 'edd-sample-plugin' );
278
+					$message = __('An error occurred, please try again.', 'edd-sample-plugin');
279 279
 					break;
280 280
 			}
281 281
 		}
282 282
 	}
283 283
 
284 284
 		// Check if anything passed on a message constituting a failure
285
-	if ( ! empty( $message ) ) {
285
+	if ( ! empty($message)) {
286 286
 		$redirect = add_query_arg(
287 287
 			array(
288 288
 				'page'          => EDD_SAMPLE_PLUGIN_LICENSE_PAGE,
289 289
 				'sl_activation' => 'false',
290
-				'message'       => rawurlencode( $message ),
290
+				'message'       => rawurlencode($message),
291 291
 			),
292
-			admin_url( 'plugins.php' )
292
+			admin_url('plugins.php')
293 293
 		);
294 294
 
295
-		wp_safe_redirect( $redirect );
295
+		wp_safe_redirect($redirect);
296 296
 		exit();
297 297
 	}
298 298
 
299 299
 	// $license_data->license will be either "valid" or "invalid"
300
-	if ( 'valid' === $license_data->license ) {
301
-		update_option( 'edd_sample_license_key', $license );
300
+	if ('valid' === $license_data->license) {
301
+		update_option('edd_sample_license_key', $license);
302 302
 	}
303
-	update_option( 'edd_sample_license_status', $license_data->license );
304
-	wp_safe_redirect( admin_url( 'plugins.php?page=' . EDD_SAMPLE_PLUGIN_LICENSE_PAGE ) );
303
+	update_option('edd_sample_license_status', $license_data->license);
304
+	wp_safe_redirect(admin_url('plugins.php?page='.EDD_SAMPLE_PLUGIN_LICENSE_PAGE));
305 305
 	exit();
306 306
 }
307
-add_action( 'admin_init', 'edd_sample_activate_license' );
307
+add_action('admin_init', 'edd_sample_activate_license');
308 308
 
309 309
 /**
310 310
  * Deactivates the license key.
@@ -315,24 +315,24 @@  discard block
 block discarded – undo
315 315
 function edd_sample_deactivate_license() {
316 316
 
317 317
 	// listen for our activate button to be clicked
318
-	if ( isset( $_POST['edd_license_deactivate'] ) ) {
318
+	if (isset($_POST['edd_license_deactivate'])) {
319 319
 
320 320
 		// run a quick security check
321
-		if ( ! check_admin_referer( 'edd_sample_nonce', 'edd_sample_nonce' ) ) {
321
+		if ( ! check_admin_referer('edd_sample_nonce', 'edd_sample_nonce')) {
322 322
 			return; // get out if we didn't click the Activate button
323 323
 		}
324 324
 
325 325
 		// retrieve the license from the database
326
-		$license = trim( get_option( 'edd_sample_license_key' ) );
326
+		$license = trim(get_option('edd_sample_license_key'));
327 327
 
328 328
 		// data to send in our API request
329 329
 		$api_params = array(
330 330
 			'edd_action'  => 'deactivate_license',
331 331
 			'license'     => $license,
332 332
 			'item_id'     => EDD_SAMPLE_ITEM_ID,
333
-			'item_name'   => rawurlencode( EDD_SAMPLE_ITEM_NAME ), // the name of our product in EDD
333
+			'item_name'   => rawurlencode(EDD_SAMPLE_ITEM_NAME), // the name of our product in EDD
334 334
 			'url'         => home_url(),
335
-			'environment' => function_exists( 'wp_get_environment_type' ) ? wp_get_environment_type() : 'production',
335
+			'environment' => function_exists('wp_get_environment_type') ? wp_get_environment_type() : 'production',
336 336
 		);
337 337
 
338 338
 		// Call the custom API.
@@ -346,41 +346,41 @@  discard block
 block discarded – undo
346 346
 		);
347 347
 
348 348
 		// make sure the response came back okay
349
-		if ( is_wp_error( $response ) || 200 !== wp_remote_retrieve_response_code( $response ) ) {
349
+		if (is_wp_error($response) || 200 !== wp_remote_retrieve_response_code($response)) {
350 350
 
351
-			if ( is_wp_error( $response ) ) {
351
+			if (is_wp_error($response)) {
352 352
 				$message = $response->get_error_message();
353 353
 			} else {
354
-				$message = __( 'An error occurred, please try again.' );
354
+				$message = __('An error occurred, please try again.');
355 355
 			}
356 356
 
357 357
 			$redirect = add_query_arg(
358 358
 				array(
359 359
 					'page'          => EDD_SAMPLE_PLUGIN_LICENSE_PAGE,
360 360
 					'sl_activation' => 'false',
361
-					'message'       => rawurlencode( $message ),
361
+					'message'       => rawurlencode($message),
362 362
 				),
363
-				admin_url( 'plugins.php' )
363
+				admin_url('plugins.php')
364 364
 			);
365 365
 
366
-			wp_safe_redirect( $redirect );
366
+			wp_safe_redirect($redirect);
367 367
 			exit();
368 368
 		}
369 369
 
370 370
 		// decode the license data
371
-		$license_data = json_decode( wp_remote_retrieve_body( $response ) );
371
+		$license_data = json_decode(wp_remote_retrieve_body($response));
372 372
 
373 373
 		// $license_data->license will be either "deactivated" or "failed"
374
-		if ( 'deactivated' === $license_data->license ) {
375
-			delete_option( 'edd_sample_license_status' );
374
+		if ('deactivated' === $license_data->license) {
375
+			delete_option('edd_sample_license_status');
376 376
 		}
377 377
 
378
-		wp_safe_redirect( admin_url( 'plugins.php?page=' . EDD_SAMPLE_PLUGIN_LICENSE_PAGE ) );
378
+		wp_safe_redirect(admin_url('plugins.php?page='.EDD_SAMPLE_PLUGIN_LICENSE_PAGE));
379 379
 		exit();
380 380
 
381 381
 	}
382 382
 }
383
-add_action( 'admin_init', 'edd_sample_deactivate_license' );
383
+add_action('admin_init', 'edd_sample_deactivate_license');
384 384
 
385 385
 /**
386 386
  * Checks if a license key is still valid.
@@ -391,15 +391,15 @@  discard block
 block discarded – undo
391 391
  */
392 392
 function edd_sample_check_license() {
393 393
 
394
-	$license = trim( get_option( 'edd_sample_license_key' ) );
394
+	$license = trim(get_option('edd_sample_license_key'));
395 395
 
396 396
 	$api_params = array(
397 397
 		'edd_action'  => 'check_license',
398 398
 		'license'     => $license,
399 399
 		'item_id'     => EDD_SAMPLE_ITEM_ID,
400
-		'item_name'   => rawurlencode( EDD_SAMPLE_ITEM_NAME ),
400
+		'item_name'   => rawurlencode(EDD_SAMPLE_ITEM_NAME),
401 401
 		'url'         => home_url(),
402
-		'environment' => function_exists( 'wp_get_environment_type' ) ? wp_get_environment_type() : 'production',
402
+		'environment' => function_exists('wp_get_environment_type') ? wp_get_environment_type() : 'production',
403 403
 	);
404 404
 
405 405
 	// Call the custom API.
@@ -412,13 +412,13 @@  discard block
 block discarded – undo
412 412
 		)
413 413
 	);
414 414
 
415
-	if ( is_wp_error( $response ) ) {
415
+	if (is_wp_error($response)) {
416 416
 		return false;
417 417
 	}
418 418
 
419
-	$license_data = json_decode( wp_remote_retrieve_body( $response ) );
419
+	$license_data = json_decode(wp_remote_retrieve_body($response));
420 420
 
421
-	if ( 'valid' === $license_data->license ) {
421
+	if ('valid' === $license_data->license) {
422 422
 		echo 'valid';
423 423
 		exit;
424 424
 		// this license is still valid
@@ -433,15 +433,15 @@  discard block
 block discarded – undo
433 433
  * This is a means of catching errors from the activation method above and displaying it to the customer
434 434
  */
435 435
 function edd_sample_admin_notices() {
436
-	if ( isset( $_GET['sl_activation'] ) && ! empty( $_GET['message'] ) ) {
436
+	if (isset($_GET['sl_activation']) && ! empty($_GET['message'])) {
437 437
 
438
-		switch ( $_GET['sl_activation'] ) {
438
+		switch ($_GET['sl_activation']) {
439 439
 
440 440
 			case 'false':
441
-				$message = urldecode( $_GET['message'] );
441
+				$message = urldecode($_GET['message']);
442 442
 				?>
443 443
 				<div class="error">
444
-					<p><?php echo wp_kses_post( $message ); ?></p>
444
+					<p><?php echo wp_kses_post($message); ?></p>
445 445
 				</div>
446 446
 				<?php
447 447
 				break;
@@ -454,4 +454,4 @@  discard block
 block discarded – undo
454 454
 		}
455 455
 	}
456 456
 }
457
-add_action( 'admin_notices', 'edd_sample_admin_notices' );
457
+add_action('admin_notices', 'edd_sample_admin_notices');
Please login to merge, or discard this patch.
core/services/licensing/LicenseAPI.php 1 patch
Indentation   +154 added lines, -154 removed lines patch added patch discarded remove patch
@@ -8,158 +8,158 @@
 block discarded – undo
8 8
 
9 9
 class LicenseAPI
10 10
 {
11
-    public const ACTION_ACTIVATE            = 'activate_license';
12
-
13
-    public const ACTION_DEACTIVATE          = 'deactivate_license';
14
-
15
-    public const ACTION_CHECK               = 'check_license';
16
-
17
-    public const ACTION_GET_VERSION         = 'get_version';
18
-
19
-    public const ACTION_RESET               = 'reset_license';
20
-
21
-    public const API_USES_ITEM_ID_OR_NAME   = 'item_name';
22
-
23
-    public const AUTHOR                     = 'Event Espresso';
24
-
25
-    public const REQUEST_PARAM_ACTION       = 'license_action';
26
-
27
-    public const REQUEST_PARAM_ITEM_ID      = 'item_id';
28
-
29
-    public const REQUEST_PARAM_ITEM_NAME    = 'item_name';
30
-
31
-    public const REQUEST_PARAM_LICENSE_KEY  = 'license_key';
32
-
33
-    public const REQUEST_PARAM_MIN_CORE_VER = 'min_core_ver';
34
-
35
-    public const REQUEST_PARAM_PLUGIN_SLUG  = 'plugin_slug';
36
-
37
-    public const REQUEST_PARAM_PLUGIN_VER   = 'plugin_ver';
38
-
39
-    public const URL                        = 'https://my.eventespresso.com/';
40
-
41
-
42
-    /**
43
-     * successfull license key API response example:
44
-     *  {
45
-     *      "success": true,
46
-     *      "license": "valid",
47
-     *      "item_id": false (or Item ID if passed)
48
-     *      "item_name": "EDD Product Name",
49
-     *      "license_limit": 0,
50
-     *      "site_count": 2,
51
-     *      "expires": "2020-06-30 23:59:59",
52
-     *      "activations_left": "unlimited",
53
-     *      "checksum": "<md5 checksum>",
54
-     *      "payment_id": 12345,
55
-     *      "customer_name": "John Doe",
56
-     *      "customer_email": "[email protected]",
57
-     *      "price_id": "2"
58
-     *  }
59
-     * failed license key API response example:
60
-     *  {
61
-     *      "success": false,
62
-     *      "license": "invalid",
63
-     *      "item_id": false (or Item ID if passed)
64
-     *      "item_name": "EDD Product Name",
65
-     *      "error": "expired",
66
-     *      "expires": "2020-04-28 23:59:59",
67
-     *      "license_limit": 0,
68
-     *      "site_count": 1,
69
-     *      "activations_left": "unlimited",
70
-     *      "checksum": "<md5 checksum>",
71
-     *      "payment_id": 12345,
72
-     *      "customer_name": "John Doe",
73
-     *      "customer_email": "[email protected]",
74
-     *      "price_id": "2"
75
-     *  }
76
-     *
77
-     * @param string $action
78
-     * @param string $license_key
79
-     * @param string $item_id
80
-     * @param string $item_name
81
-     * @param string $plugin_version
82
-     * @param string $min_core_version
83
-     * @return stdClass
84
-     */
85
-    public function postRequest(
86
-        string $action,
87
-        string $license_key,
88
-        string $item_id,
89
-        string $item_name,
90
-        string $plugin_version,
91
-        string $min_core_version = ''
92
-    ): stdClass {
93
-        $body = [
94
-            'edd_action'                  => $action,
95
-            'event_espresso_core_version' => EVENT_ESPRESSO_VERSION,
96
-            'min_core_version'            => $min_core_version,
97
-            'license'                     => $license_key,
98
-            'version'                     => $plugin_version,
99
-            'php_version'                 => phpversion(),
100
-            'url'                         => home_url(),
101
-            'wp_version'                  => get_bloginfo('version'),
102
-            'environment'                 => function_exists('wp_get_environment_type')
103
-                ? wp_get_environment_type()
104
-                : 'production',
105
-        ];
106
-        // change the item ID or item name based on the API_USES_ITEM_ID_OR_NAME constant
107
-        if (LicenseAPI::API_USES_ITEM_ID_OR_NAME === 'item_name') {
108
-            $body['item_name'] = $item_name;
109
-        } else {
110
-            $body['item_id'] = $item_id;
111
-        }
112
-
113
-        $response = $this->handleApiErrors(
114
-            wp_remote_post(
115
-                LicenseAPI::url(),
116
-                [
117
-                    'timeout' => 15,
118
-                    'body'    => $body,
119
-                ]
120
-            )
121
-        );
122
-        // decode the license data
123
-        return (object) json_decode(wp_remote_retrieve_body($response));
124
-    }
125
-
126
-
127
-    /**
128
-     * @param array|WP_Error $response
129
-     * @return array
130
-     */
131
-    private function handleApiErrors($response): array
132
-    {
133
-        // make sure the response came back okay
134
-        if (is_wp_error($response) || wp_remote_retrieve_response_code($response) !== 200) {
135
-            EE_Error::add_error($response->get_error_message(), __FILE__, __FUNCTION__, __LINE__);
136
-            return ['success' => false, 'error' => true];
137
-        }
138
-        return $response;
139
-    }
140
-
141
-
142
-    public function getProductVersions(array $products): stdClass
143
-    {
144
-        $response = $this->handleApiErrors(
145
-            wp_remote_post(
146
-                LicenseAPI::url(),
147
-                [
148
-                    'timeout' => 15,
149
-                    'body'    => [
150
-                        'edd_action' => LicenseAPI::ACTION_GET_VERSION,
151
-                        'products'   => $products,
152
-                    ],
153
-                ]
154
-            )
155
-        );
156
-        // decode the license data
157
-        return (object) json_decode(wp_remote_retrieve_body($response));
158
-    }
159
-
160
-
161
-    public static function url(): string
162
-    {
163
-        return defined('EDD_LICENSE_API_URL') ? EDD_LICENSE_API_URL : LicenseAPI::URL;
164
-    }
11
+	public const ACTION_ACTIVATE            = 'activate_license';
12
+
13
+	public const ACTION_DEACTIVATE          = 'deactivate_license';
14
+
15
+	public const ACTION_CHECK               = 'check_license';
16
+
17
+	public const ACTION_GET_VERSION         = 'get_version';
18
+
19
+	public const ACTION_RESET               = 'reset_license';
20
+
21
+	public const API_USES_ITEM_ID_OR_NAME   = 'item_name';
22
+
23
+	public const AUTHOR                     = 'Event Espresso';
24
+
25
+	public const REQUEST_PARAM_ACTION       = 'license_action';
26
+
27
+	public const REQUEST_PARAM_ITEM_ID      = 'item_id';
28
+
29
+	public const REQUEST_PARAM_ITEM_NAME    = 'item_name';
30
+
31
+	public const REQUEST_PARAM_LICENSE_KEY  = 'license_key';
32
+
33
+	public const REQUEST_PARAM_MIN_CORE_VER = 'min_core_ver';
34
+
35
+	public const REQUEST_PARAM_PLUGIN_SLUG  = 'plugin_slug';
36
+
37
+	public const REQUEST_PARAM_PLUGIN_VER   = 'plugin_ver';
38
+
39
+	public const URL                        = 'https://my.eventespresso.com/';
40
+
41
+
42
+	/**
43
+	 * successfull license key API response example:
44
+	 *  {
45
+	 *      "success": true,
46
+	 *      "license": "valid",
47
+	 *      "item_id": false (or Item ID if passed)
48
+	 *      "item_name": "EDD Product Name",
49
+	 *      "license_limit": 0,
50
+	 *      "site_count": 2,
51
+	 *      "expires": "2020-06-30 23:59:59",
52
+	 *      "activations_left": "unlimited",
53
+	 *      "checksum": "<md5 checksum>",
54
+	 *      "payment_id": 12345,
55
+	 *      "customer_name": "John Doe",
56
+	 *      "customer_email": "[email protected]",
57
+	 *      "price_id": "2"
58
+	 *  }
59
+	 * failed license key API response example:
60
+	 *  {
61
+	 *      "success": false,
62
+	 *      "license": "invalid",
63
+	 *      "item_id": false (or Item ID if passed)
64
+	 *      "item_name": "EDD Product Name",
65
+	 *      "error": "expired",
66
+	 *      "expires": "2020-04-28 23:59:59",
67
+	 *      "license_limit": 0,
68
+	 *      "site_count": 1,
69
+	 *      "activations_left": "unlimited",
70
+	 *      "checksum": "<md5 checksum>",
71
+	 *      "payment_id": 12345,
72
+	 *      "customer_name": "John Doe",
73
+	 *      "customer_email": "[email protected]",
74
+	 *      "price_id": "2"
75
+	 *  }
76
+	 *
77
+	 * @param string $action
78
+	 * @param string $license_key
79
+	 * @param string $item_id
80
+	 * @param string $item_name
81
+	 * @param string $plugin_version
82
+	 * @param string $min_core_version
83
+	 * @return stdClass
84
+	 */
85
+	public function postRequest(
86
+		string $action,
87
+		string $license_key,
88
+		string $item_id,
89
+		string $item_name,
90
+		string $plugin_version,
91
+		string $min_core_version = ''
92
+	): stdClass {
93
+		$body = [
94
+			'edd_action'                  => $action,
95
+			'event_espresso_core_version' => EVENT_ESPRESSO_VERSION,
96
+			'min_core_version'            => $min_core_version,
97
+			'license'                     => $license_key,
98
+			'version'                     => $plugin_version,
99
+			'php_version'                 => phpversion(),
100
+			'url'                         => home_url(),
101
+			'wp_version'                  => get_bloginfo('version'),
102
+			'environment'                 => function_exists('wp_get_environment_type')
103
+				? wp_get_environment_type()
104
+				: 'production',
105
+		];
106
+		// change the item ID or item name based on the API_USES_ITEM_ID_OR_NAME constant
107
+		if (LicenseAPI::API_USES_ITEM_ID_OR_NAME === 'item_name') {
108
+			$body['item_name'] = $item_name;
109
+		} else {
110
+			$body['item_id'] = $item_id;
111
+		}
112
+
113
+		$response = $this->handleApiErrors(
114
+			wp_remote_post(
115
+				LicenseAPI::url(),
116
+				[
117
+					'timeout' => 15,
118
+					'body'    => $body,
119
+				]
120
+			)
121
+		);
122
+		// decode the license data
123
+		return (object) json_decode(wp_remote_retrieve_body($response));
124
+	}
125
+
126
+
127
+	/**
128
+	 * @param array|WP_Error $response
129
+	 * @return array
130
+	 */
131
+	private function handleApiErrors($response): array
132
+	{
133
+		// make sure the response came back okay
134
+		if (is_wp_error($response) || wp_remote_retrieve_response_code($response) !== 200) {
135
+			EE_Error::add_error($response->get_error_message(), __FILE__, __FUNCTION__, __LINE__);
136
+			return ['success' => false, 'error' => true];
137
+		}
138
+		return $response;
139
+	}
140
+
141
+
142
+	public function getProductVersions(array $products): stdClass
143
+	{
144
+		$response = $this->handleApiErrors(
145
+			wp_remote_post(
146
+				LicenseAPI::url(),
147
+				[
148
+					'timeout' => 15,
149
+					'body'    => [
150
+						'edd_action' => LicenseAPI::ACTION_GET_VERSION,
151
+						'products'   => $products,
152
+					],
153
+				]
154
+			)
155
+		);
156
+		// decode the license data
157
+		return (object) json_decode(wp_remote_retrieve_body($response));
158
+	}
159
+
160
+
161
+	public static function url(): string
162
+	{
163
+		return defined('EDD_LICENSE_API_URL') ? EDD_LICENSE_API_URL : LicenseAPI::URL;
164
+	}
165 165
 }
Please login to merge, or discard this patch.
core/services/licensing/PluginLicense.php 2 patches
Indentation   +242 added lines, -242 removed lines patch added patch discarded remove patch
@@ -14,246 +14,246 @@
 block discarded – undo
14 14
  */
15 15
 class PluginLicense
16 16
 {
17
-    private ?LicenseKeyData $license_key_data = null;
18
-
19
-    private ?PluginUpdater $updater = null;
20
-
21
-    private string $license_key = '';
22
-
23
-    private string $mainfile;
24
-
25
-    private string $min_core_version;
26
-
27
-    private string $plugin_id;
28
-
29
-    private string $plugin_name;
30
-
31
-    private string $plugin_slug;
32
-
33
-    private string $version;
34
-
35
-    private bool $beta;
36
-
37
-    private bool $wp_override;
38
-
39
-    private static array $slug_prefixes = ['ee-', 'eea-', 'eep-', 'espresso-', 'ee_', 'eea_', 'eep_', 'espresso_'];
40
-
41
-
42
-    public function __construct(
43
-        string $mainfile,
44
-        string $plugin_id,
45
-        string $plugin_name,
46
-        string $plugin_slug,
47
-        string $version,
48
-        bool $beta = false,
49
-        bool $wp_override = false,
50
-        string $min_core_version = ''
51
-    ) {
52
-        $this->mainfile         = $mainfile;
53
-        $this->plugin_id        = $plugin_id;
54
-        $this->plugin_name      = $plugin_name;
55
-        $this->version          = $version;
56
-        $this->beta             = $beta;
57
-        $this->wp_override      = $wp_override;
58
-        $this->plugin_slug      = $this->removePluginSlugPrefixes($plugin_slug);
59
-        $this->min_core_version = $min_core_version;
60
-
61
-        add_action('init', [$this, 'loadPluginUpdater']);
62
-        add_action(
63
-            'AHEE__EventEspresso_core_services_licensing_PluginLicenseCollection__loadPluginLicenses',
64
-            [$this, 'loadPluginLicense']
65
-        );
66
-        add_filter(
67
-            'FHEE__LicenseKeysAdminForm__generate__form_subsections',
68
-            [$this, 'addLicenseKeyFormSection']
69
-        );
70
-        add_filter(
71
-            'edd_sl_plugin_updater_api_params',
72
-            [$this, 'addCustomApiParams'],
73
-            10,
74
-            2
75
-        );
76
-    }
77
-
78
-
79
-    /**
80
-     * removes unnecessary prefixes from plugin slugs
81
-     *
82
-     * @param string $plugin_slug
83
-     * @return string
84
-     */
85
-    private function removePluginSlugPrefixes(string $plugin_slug): string
86
-    {
87
-        foreach (self::$slug_prefixes as $slug_prefix) {
88
-            if (strpos($plugin_slug, $slug_prefix) === 0) {
89
-                $plugin_slug = str_replace($slug_prefix, '', $plugin_slug);
90
-            }
91
-        }
92
-        return $plugin_slug;
93
-    }
94
-
95
-
96
-    /**
97
-     * @return PluginUpdater|null
98
-     */
99
-    public function updater(): ?PluginUpdater
100
-    {
101
-        return $this->updater;
102
-    }
103
-
104
-
105
-    /**
106
-     * @return string
107
-     */
108
-    public function itemID(): string
109
-    {
110
-        return $this->plugin_id;
111
-    }
112
-
113
-
114
-    /**
115
-     * @return string
116
-     */
117
-    public function itemName(): string
118
-    {
119
-        return $this->plugin_name;
120
-    }
121
-
122
-
123
-    private function getLicenseKeyData(): stdClass
124
-    {
125
-        if (! $this->license_key_data instanceof LicenseKeyData) {
126
-            $this->license_key_data = LoaderFactory::getShared(LicenseKeyData::class);
127
-        }
128
-        return $this->license_key_data->getLicense($this->pluginSlug());
129
-    }
130
-
131
-
132
-    /**
133
-     * @return string
134
-     */
135
-    public function licenseKey(): string
136
-    {
137
-        return $this->license_key;
138
-    }
139
-
140
-
141
-    /**
142
-     * @param string $license_key
143
-     */
144
-    public function updateLicenseKey(string $license_key): void
145
-    {
146
-        $this->license_key = sanitize_text_field($license_key);
147
-    }
148
-
149
-
150
-    /**
151
-     * @return string
152
-     */
153
-    public function mainfile(): string
154
-    {
155
-        return $this->mainfile;
156
-    }
157
-
158
-
159
-    /**
160
-     * @return string
161
-     * @since 5.0.20.p
162
-     */
163
-    public function minCoreVersion(): string
164
-    {
165
-        return $this->min_core_version;
166
-    }
167
-
168
-
169
-    /**
170
-     * @return string
171
-     */
172
-    public function pluginSlug(): string
173
-    {
174
-        return $this->plugin_slug;
175
-    }
176
-
177
-
178
-    /**
179
-     * @return string
180
-     */
181
-    public function version(): string
182
-    {
183
-        return $this->version;
184
-    }
185
-
186
-
187
-    /**
188
-     * @return bool
189
-     */
190
-    public function isBeta(): bool
191
-    {
192
-        return $this->beta;
193
-    }
194
-
195
-
196
-    /**
197
-     * @return bool
198
-     */
199
-    public function isWpOverride(): bool
200
-    {
201
-        return $this->wp_override;
202
-    }
203
-
204
-
205
-    public function loadPluginUpdater()
206
-    {
207
-        // To support auto-updates, this needs to run during the wp_version_check cron job for privileged users.
208
-        if (! current_user_can('manage_options') && ! (defined('DOING_CRON') && DOING_CRON)) {
209
-            return;
210
-        }
211
-
212
-        $license_key_data = $this->getLicenseKeyData();
213
-        $license_key      = $license_key_data->license_key ?? '';
214
-        if ($license_key) {
215
-            $this->updateLicenseKey($license_key);
216
-        }
217
-
218
-        $this->updater = new PluginUpdater(
219
-            LicenseAPI::url(),
220
-            $this->mainfile(),
221
-            [
222
-                'author'      => LicenseAPI::AUTHOR,
223
-                'beta'        => $this->isBeta(),
224
-                'item_id'     => $this->itemID(),
225
-                'item_name'   => $this->itemName(),
226
-                'license'     => $this->licenseKey(),
227
-                'version'     => $this->version(),
228
-                'wp_override' => $this->isWpOverride(),
229
-            ]
230
-        );
231
-    }
232
-
233
-
234
-    public function loadPluginLicense(PluginLicenseCollection $plugin_license_collection)
235
-    {
236
-        $plugin_license_collection->add($this, $this->pluginSlug());
237
-    }
238
-
239
-
240
-    public function addLicenseKeyFormSection(array $license_keys_form_subsections): array
241
-    {
242
-        if (is_main_site()) {
243
-            $license_keys_form_subsections[ $this->pluginSlug() ] = LoaderFactory::getNew(
244
-                LicenseKeyFormInput::class,
245
-                [$this]
246
-            );
247
-        }
248
-        return $license_keys_form_subsections;
249
-    }
250
-
251
-
252
-    public function addCustomApiParams($api_params, $api_data)
253
-    {
254
-        if ($api_data['item_name'] === $this->itemName()) {
255
-            $api_params['event_espresso_core_version'] = EVENT_ESPRESSO_VERSION;
256
-        }
257
-        return $api_params;
258
-    }
17
+	private ?LicenseKeyData $license_key_data = null;
18
+
19
+	private ?PluginUpdater $updater = null;
20
+
21
+	private string $license_key = '';
22
+
23
+	private string $mainfile;
24
+
25
+	private string $min_core_version;
26
+
27
+	private string $plugin_id;
28
+
29
+	private string $plugin_name;
30
+
31
+	private string $plugin_slug;
32
+
33
+	private string $version;
34
+
35
+	private bool $beta;
36
+
37
+	private bool $wp_override;
38
+
39
+	private static array $slug_prefixes = ['ee-', 'eea-', 'eep-', 'espresso-', 'ee_', 'eea_', 'eep_', 'espresso_'];
40
+
41
+
42
+	public function __construct(
43
+		string $mainfile,
44
+		string $plugin_id,
45
+		string $plugin_name,
46
+		string $plugin_slug,
47
+		string $version,
48
+		bool $beta = false,
49
+		bool $wp_override = false,
50
+		string $min_core_version = ''
51
+	) {
52
+		$this->mainfile         = $mainfile;
53
+		$this->plugin_id        = $plugin_id;
54
+		$this->plugin_name      = $plugin_name;
55
+		$this->version          = $version;
56
+		$this->beta             = $beta;
57
+		$this->wp_override      = $wp_override;
58
+		$this->plugin_slug      = $this->removePluginSlugPrefixes($plugin_slug);
59
+		$this->min_core_version = $min_core_version;
60
+
61
+		add_action('init', [$this, 'loadPluginUpdater']);
62
+		add_action(
63
+			'AHEE__EventEspresso_core_services_licensing_PluginLicenseCollection__loadPluginLicenses',
64
+			[$this, 'loadPluginLicense']
65
+		);
66
+		add_filter(
67
+			'FHEE__LicenseKeysAdminForm__generate__form_subsections',
68
+			[$this, 'addLicenseKeyFormSection']
69
+		);
70
+		add_filter(
71
+			'edd_sl_plugin_updater_api_params',
72
+			[$this, 'addCustomApiParams'],
73
+			10,
74
+			2
75
+		);
76
+	}
77
+
78
+
79
+	/**
80
+	 * removes unnecessary prefixes from plugin slugs
81
+	 *
82
+	 * @param string $plugin_slug
83
+	 * @return string
84
+	 */
85
+	private function removePluginSlugPrefixes(string $plugin_slug): string
86
+	{
87
+		foreach (self::$slug_prefixes as $slug_prefix) {
88
+			if (strpos($plugin_slug, $slug_prefix) === 0) {
89
+				$plugin_slug = str_replace($slug_prefix, '', $plugin_slug);
90
+			}
91
+		}
92
+		return $plugin_slug;
93
+	}
94
+
95
+
96
+	/**
97
+	 * @return PluginUpdater|null
98
+	 */
99
+	public function updater(): ?PluginUpdater
100
+	{
101
+		return $this->updater;
102
+	}
103
+
104
+
105
+	/**
106
+	 * @return string
107
+	 */
108
+	public function itemID(): string
109
+	{
110
+		return $this->plugin_id;
111
+	}
112
+
113
+
114
+	/**
115
+	 * @return string
116
+	 */
117
+	public function itemName(): string
118
+	{
119
+		return $this->plugin_name;
120
+	}
121
+
122
+
123
+	private function getLicenseKeyData(): stdClass
124
+	{
125
+		if (! $this->license_key_data instanceof LicenseKeyData) {
126
+			$this->license_key_data = LoaderFactory::getShared(LicenseKeyData::class);
127
+		}
128
+		return $this->license_key_data->getLicense($this->pluginSlug());
129
+	}
130
+
131
+
132
+	/**
133
+	 * @return string
134
+	 */
135
+	public function licenseKey(): string
136
+	{
137
+		return $this->license_key;
138
+	}
139
+
140
+
141
+	/**
142
+	 * @param string $license_key
143
+	 */
144
+	public function updateLicenseKey(string $license_key): void
145
+	{
146
+		$this->license_key = sanitize_text_field($license_key);
147
+	}
148
+
149
+
150
+	/**
151
+	 * @return string
152
+	 */
153
+	public function mainfile(): string
154
+	{
155
+		return $this->mainfile;
156
+	}
157
+
158
+
159
+	/**
160
+	 * @return string
161
+	 * @since 5.0.20.p
162
+	 */
163
+	public function minCoreVersion(): string
164
+	{
165
+		return $this->min_core_version;
166
+	}
167
+
168
+
169
+	/**
170
+	 * @return string
171
+	 */
172
+	public function pluginSlug(): string
173
+	{
174
+		return $this->plugin_slug;
175
+	}
176
+
177
+
178
+	/**
179
+	 * @return string
180
+	 */
181
+	public function version(): string
182
+	{
183
+		return $this->version;
184
+	}
185
+
186
+
187
+	/**
188
+	 * @return bool
189
+	 */
190
+	public function isBeta(): bool
191
+	{
192
+		return $this->beta;
193
+	}
194
+
195
+
196
+	/**
197
+	 * @return bool
198
+	 */
199
+	public function isWpOverride(): bool
200
+	{
201
+		return $this->wp_override;
202
+	}
203
+
204
+
205
+	public function loadPluginUpdater()
206
+	{
207
+		// To support auto-updates, this needs to run during the wp_version_check cron job for privileged users.
208
+		if (! current_user_can('manage_options') && ! (defined('DOING_CRON') && DOING_CRON)) {
209
+			return;
210
+		}
211
+
212
+		$license_key_data = $this->getLicenseKeyData();
213
+		$license_key      = $license_key_data->license_key ?? '';
214
+		if ($license_key) {
215
+			$this->updateLicenseKey($license_key);
216
+		}
217
+
218
+		$this->updater = new PluginUpdater(
219
+			LicenseAPI::url(),
220
+			$this->mainfile(),
221
+			[
222
+				'author'      => LicenseAPI::AUTHOR,
223
+				'beta'        => $this->isBeta(),
224
+				'item_id'     => $this->itemID(),
225
+				'item_name'   => $this->itemName(),
226
+				'license'     => $this->licenseKey(),
227
+				'version'     => $this->version(),
228
+				'wp_override' => $this->isWpOverride(),
229
+			]
230
+		);
231
+	}
232
+
233
+
234
+	public function loadPluginLicense(PluginLicenseCollection $plugin_license_collection)
235
+	{
236
+		$plugin_license_collection->add($this, $this->pluginSlug());
237
+	}
238
+
239
+
240
+	public function addLicenseKeyFormSection(array $license_keys_form_subsections): array
241
+	{
242
+		if (is_main_site()) {
243
+			$license_keys_form_subsections[ $this->pluginSlug() ] = LoaderFactory::getNew(
244
+				LicenseKeyFormInput::class,
245
+				[$this]
246
+			);
247
+		}
248
+		return $license_keys_form_subsections;
249
+	}
250
+
251
+
252
+	public function addCustomApiParams($api_params, $api_data)
253
+	{
254
+		if ($api_data['item_name'] === $this->itemName()) {
255
+			$api_params['event_espresso_core_version'] = EVENT_ESPRESSO_VERSION;
256
+		}
257
+		return $api_params;
258
+	}
259 259
 }
Please login to merge, or discard this patch.
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -122,7 +122,7 @@  discard block
 block discarded – undo
122 122
 
123 123
     private function getLicenseKeyData(): stdClass
124 124
     {
125
-        if (! $this->license_key_data instanceof LicenseKeyData) {
125
+        if ( ! $this->license_key_data instanceof LicenseKeyData) {
126 126
             $this->license_key_data = LoaderFactory::getShared(LicenseKeyData::class);
127 127
         }
128 128
         return $this->license_key_data->getLicense($this->pluginSlug());
@@ -205,7 +205,7 @@  discard block
 block discarded – undo
205 205
     public function loadPluginUpdater()
206 206
     {
207 207
         // To support auto-updates, this needs to run during the wp_version_check cron job for privileged users.
208
-        if (! current_user_can('manage_options') && ! (defined('DOING_CRON') && DOING_CRON)) {
208
+        if ( ! current_user_can('manage_options') && ! (defined('DOING_CRON') && DOING_CRON)) {
209 209
             return;
210 210
         }
211 211
 
@@ -240,7 +240,7 @@  discard block
 block discarded – undo
240 240
     public function addLicenseKeyFormSection(array $license_keys_form_subsections): array
241 241
     {
242 242
         if (is_main_site()) {
243
-            $license_keys_form_subsections[ $this->pluginSlug() ] = LoaderFactory::getNew(
243
+            $license_keys_form_subsections[$this->pluginSlug()] = LoaderFactory::getNew(
244 244
                 LicenseKeyFormInput::class,
245 245
                 [$this]
246 246
             );
Please login to merge, or discard this patch.
core/services/licensing/LicenseKeyData.php 2 patches
Indentation   +34 added lines, -34 removed lines patch added patch discarded remove patch
@@ -7,49 +7,49 @@
 block discarded – undo
7 7
 
8 8
 class LicenseKeyData extends WordPressOption
9 9
 {
10
-    const OPTION_NAME = 'event-espresso-license-keys';
10
+	const OPTION_NAME = 'event-espresso-license-keys';
11 11
 
12 12
 
13
-    /**
14
-     * SessionLifespanOption constructor.
15
-     */
16
-    public function __construct()
17
-    {
18
-        parent::__construct(LicenseKeyData::OPTION_NAME, [], true);
19
-    }
13
+	/**
14
+	 * SessionLifespanOption constructor.
15
+	 */
16
+	public function __construct()
17
+	{
18
+		parent::__construct(LicenseKeyData::OPTION_NAME, [], true);
19
+	}
20 20
 
21 21
 
22
-    public function getLicense(string $plugin): stdCLass
23
-    {
24
-        $licenses = $this->loadOption();
25
-        $license_data = $licenses[ $plugin ] ?? ['success' => false, 'error' => true];
26
-        return (object) $license_data;
27
-    }
22
+	public function getLicense(string $plugin): stdCLass
23
+	{
24
+		$licenses = $this->loadOption();
25
+		$license_data = $licenses[ $plugin ] ?? ['success' => false, 'error' => true];
26
+		return (object) $license_data;
27
+	}
28 28
 
29 29
 
30 30
 
31
-    public function getAllLicenses(): array
32
-    {
33
-        return $this->loadOption();
34
-    }
31
+	public function getAllLicenses(): array
32
+	{
33
+		return $this->loadOption();
34
+	}
35 35
 
36 36
 
37
-    public function updateLicense(stdCLass $license_data, string $plugin, bool $force_update = false): int
38
-    {
39
-        $licenses = $this->loadOption();
40
-        // convert objects to array and merge new data with old
41
-        $licenses[ $plugin ] = (array) $license_data;
42
-        // then sort by key and convert back to stdCLass
43
-        ksort($licenses[ $plugin ]);
44
-        $licenses[ $plugin ] = (object) $licenses[ $plugin ];
45
-        return $this->updateOption($licenses, $force_update);
46
-    }
37
+	public function updateLicense(stdCLass $license_data, string $plugin, bool $force_update = false): int
38
+	{
39
+		$licenses = $this->loadOption();
40
+		// convert objects to array and merge new data with old
41
+		$licenses[ $plugin ] = (array) $license_data;
42
+		// then sort by key and convert back to stdCLass
43
+		ksort($licenses[ $plugin ]);
44
+		$licenses[ $plugin ] = (object) $licenses[ $plugin ];
45
+		return $this->updateOption($licenses, $force_update);
46
+	}
47 47
 
48 48
 
49
-    public function removeLicense(string $plugin): int
50
-    {
51
-        $licenses = $this->loadOption();
52
-        unset($licenses[ $plugin ]);
53
-        return $this->updateOption($licenses);
54
-    }
49
+	public function removeLicense(string $plugin): int
50
+	{
51
+		$licenses = $this->loadOption();
52
+		unset($licenses[ $plugin ]);
53
+		return $this->updateOption($licenses);
54
+	}
55 55
 }
Please login to merge, or discard this patch.
Spacing   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -22,7 +22,7 @@  discard block
 block discarded – undo
22 22
     public function getLicense(string $plugin): stdCLass
23 23
     {
24 24
         $licenses = $this->loadOption();
25
-        $license_data = $licenses[ $plugin ] ?? ['success' => false, 'error' => true];
25
+        $license_data = $licenses[$plugin] ?? ['success' => false, 'error' => true];
26 26
         return (object) $license_data;
27 27
     }
28 28
 
@@ -38,10 +38,10 @@  discard block
 block discarded – undo
38 38
     {
39 39
         $licenses = $this->loadOption();
40 40
         // convert objects to array and merge new data with old
41
-        $licenses[ $plugin ] = (array) $license_data;
41
+        $licenses[$plugin] = (array) $license_data;
42 42
         // then sort by key and convert back to stdCLass
43
-        ksort($licenses[ $plugin ]);
44
-        $licenses[ $plugin ] = (object) $licenses[ $plugin ];
43
+        ksort($licenses[$plugin]);
44
+        $licenses[$plugin] = (object) $licenses[$plugin];
45 45
         return $this->updateOption($licenses, $force_update);
46 46
     }
47 47
 
@@ -49,7 +49,7 @@  discard block
 block discarded – undo
49 49
     public function removeLicense(string $plugin): int
50 50
     {
51 51
         $licenses = $this->loadOption();
52
-        unset($licenses[ $plugin ]);
52
+        unset($licenses[$plugin]);
53 53
         return $this->updateOption($licenses);
54 54
     }
55 55
 }
Please login to merge, or discard this patch.
core/services/licensing/PluginLicenseCollection.php 1 patch
Indentation   +13 added lines, -13 removed lines patch added patch discarded remove patch
@@ -6,21 +6,21 @@
 block discarded – undo
6 6
 
7 7
 class PluginLicenseCollection extends Collection
8 8
 {
9
-    const COLLECTION_NAME = 'plugin licenses';
9
+	const COLLECTION_NAME = 'plugin licenses';
10 10
 
11 11
 
12
-    public function __construct()
13
-    {
14
-        parent::__construct(PluginLicense::class, PluginLicenseCollection::COLLECTION_NAME);
15
-        add_action('init', [$this, 'loadPluginLicenses'], 99);
16
-    }
12
+	public function __construct()
13
+	{
14
+		parent::__construct(PluginLicense::class, PluginLicenseCollection::COLLECTION_NAME);
15
+		add_action('init', [$this, 'loadPluginLicenses'], 99);
16
+	}
17 17
 
18 18
 
19
-    public function loadPluginLicenses()
20
-    {
21
-        do_action(
22
-            'AHEE__EventEspresso_core_services_licensing_PluginLicenseCollection__loadPluginLicenses',
23
-            $this
24
-        );
25
-    }
19
+	public function loadPluginLicenses()
20
+	{
21
+		do_action(
22
+			'AHEE__EventEspresso_core_services_licensing_PluginLicenseCollection__loadPluginLicenses',
23
+			$this
24
+		);
25
+	}
26 26
 }
27 27
\ No newline at end of file
Please login to merge, or discard this patch.
core/services/json/JsonDataWordpressOption.php 1 patch
Indentation   +90 added lines, -90 removed lines patch added patch discarded remove patch
@@ -15,94 +15,94 @@
 block discarded – undo
15 15
  */
16 16
 abstract class JsonDataWordpressOption extends WordPressOption
17 17
 {
18
-    private JsonDataHandler $json_data_handler;
19
-
20
-    /**
21
-     * @var array|mixed|stdClass
22
-     */
23
-    private $options = [];
24
-
25
-
26
-    /**
27
-     * JsonDataWordpressOption constructor.
28
-     *
29
-     * @param JsonDataHandler $json_data_handler
30
-     * @param string          $option_name
31
-     * @param                 $default_value
32
-     * @param bool            $autoload
33
-     */
34
-    public function __construct(
35
-        JsonDataHandler $json_data_handler,
36
-        string $option_name,
37
-        $default_value,
38
-        bool $autoload = false
39
-    ) {
40
-        $this->json_data_handler = $json_data_handler;
41
-        if (! $this->json_data_handler->dataType()) {
42
-            $this->json_data_handler->configure(JsonDataHandler::DATA_TYPE_OBJECT);
43
-        }
44
-        parent::__construct($option_name, $default_value, $autoload);
45
-    }
46
-
47
-
48
-    /**
49
-     * @param $value
50
-     * @return int
51
-     */
52
-    public function updateOption($value, bool $force_update = false): int
53
-    {
54
-        $update = parent::updateOption($this->json_data_handler->encodeData($value), $force_update);
55
-        if ($update === WordPressOption::UPDATE_SUCCESS) {
56
-            $this->options = $value;
57
-        }
58
-        return $update;
59
-    }
60
-
61
-
62
-    /**
63
-     * @param string $property
64
-     * @param mixed  $value
65
-     * @return void
66
-     */
67
-    public function addProperty(string $property, $value)
68
-    {
69
-        $options              = $this->getAll();
70
-        $options->{$property} = $value;
71
-        $this->updateOption($options);
72
-    }
73
-
74
-
75
-    /**
76
-     * @param string $property
77
-     * @return mixed
78
-     */
79
-    public function getProperty(string $property)
80
-    {
81
-        $options = $this->getAll();
82
-        return property_exists($options, $property) ? $options->{$property} : null;
83
-    }
84
-
85
-
86
-    /**
87
-     * @return array|mixed|stdClass
88
-     */
89
-    public function getAll()
90
-    {
91
-        if (empty($this->options)) {
92
-            $this->options = $this->json_data_handler->decodeJson($this->loadOption());
93
-        }
94
-        return $this->options;
95
-    }
96
-
97
-
98
-    /**
99
-     * @param string $property
100
-     * @return void
101
-     */
102
-    public function removeProperty(string $property)
103
-    {
104
-        $options = $this->getAll();
105
-        unset($options->{$property});
106
-        $this->updateOption($options);
107
-    }
18
+	private JsonDataHandler $json_data_handler;
19
+
20
+	/**
21
+	 * @var array|mixed|stdClass
22
+	 */
23
+	private $options = [];
24
+
25
+
26
+	/**
27
+	 * JsonDataWordpressOption constructor.
28
+	 *
29
+	 * @param JsonDataHandler $json_data_handler
30
+	 * @param string          $option_name
31
+	 * @param                 $default_value
32
+	 * @param bool            $autoload
33
+	 */
34
+	public function __construct(
35
+		JsonDataHandler $json_data_handler,
36
+		string $option_name,
37
+		$default_value,
38
+		bool $autoload = false
39
+	) {
40
+		$this->json_data_handler = $json_data_handler;
41
+		if (! $this->json_data_handler->dataType()) {
42
+			$this->json_data_handler->configure(JsonDataHandler::DATA_TYPE_OBJECT);
43
+		}
44
+		parent::__construct($option_name, $default_value, $autoload);
45
+	}
46
+
47
+
48
+	/**
49
+	 * @param $value
50
+	 * @return int
51
+	 */
52
+	public function updateOption($value, bool $force_update = false): int
53
+	{
54
+		$update = parent::updateOption($this->json_data_handler->encodeData($value), $force_update);
55
+		if ($update === WordPressOption::UPDATE_SUCCESS) {
56
+			$this->options = $value;
57
+		}
58
+		return $update;
59
+	}
60
+
61
+
62
+	/**
63
+	 * @param string $property
64
+	 * @param mixed  $value
65
+	 * @return void
66
+	 */
67
+	public function addProperty(string $property, $value)
68
+	{
69
+		$options              = $this->getAll();
70
+		$options->{$property} = $value;
71
+		$this->updateOption($options);
72
+	}
73
+
74
+
75
+	/**
76
+	 * @param string $property
77
+	 * @return mixed
78
+	 */
79
+	public function getProperty(string $property)
80
+	{
81
+		$options = $this->getAll();
82
+		return property_exists($options, $property) ? $options->{$property} : null;
83
+	}
84
+
85
+
86
+	/**
87
+	 * @return array|mixed|stdClass
88
+	 */
89
+	public function getAll()
90
+	{
91
+		if (empty($this->options)) {
92
+			$this->options = $this->json_data_handler->decodeJson($this->loadOption());
93
+		}
94
+		return $this->options;
95
+	}
96
+
97
+
98
+	/**
99
+	 * @param string $property
100
+	 * @return void
101
+	 */
102
+	public function removeProperty(string $property)
103
+	{
104
+		$options = $this->getAll();
105
+		unset($options->{$property});
106
+		$this->updateOption($options);
107
+	}
108 108
 }
Please login to merge, or discard this patch.
core/services/shortcodes/ShortcodesManager.php 1 patch
Indentation   +215 added lines, -215 removed lines patch added patch discarded remove patch
@@ -30,219 +30,219 @@
 block discarded – undo
30 30
  */
31 31
 class ShortcodesManager
32 32
 {
33
-    /**
34
-     * @type CurrentPage
35
-     */
36
-    protected $current_page;
37
-
38
-    /**
39
-     * @var LegacyShortcodesManager $legacy_shortcodes_manager
40
-     */
41
-    private $legacy_shortcodes_manager;
42
-
43
-    /**
44
-     * @var CollectionInterface|ShortcodeInterface[] $shortcodes
45
-     */
46
-    private $shortcodes;
47
-
48
-
49
-    /**
50
-     * ShortcodesManager constructor
51
-     *
52
-     * @param LegacyShortcodesManager $legacy_shortcodes_manager
53
-     * @param CurrentPage             $current_page
54
-     */
55
-    public function __construct(LegacyShortcodesManager $legacy_shortcodes_manager, CurrentPage $current_page)
56
-    {
57
-        $this->legacy_shortcodes_manager = $legacy_shortcodes_manager;
58
-        $this->current_page              = $current_page;
59
-        // assemble a list of installed and active shortcodes
60
-        add_action(
61
-            'AHEE__EE_System__register_shortcodes_modules_and_widgets',
62
-            [$this, 'registerShortcodes'],
63
-            999
64
-        );
65
-        //  call add_shortcode() for all installed shortcodes
66
-        add_action('AHEE__EE_System__core_loaded_and_ready', [$this, 'addShortcodes']);
67
-        // check content for shortcodes the old way
68
-        add_action('parse_query', [$this->legacy_shortcodes_manager, 'initializeShortcodes'], 5);
69
-        // check content for shortcodes the NEW more efficient way
70
-        add_action('template_redirect', [$this, 'templateRedirect'], 999);
71
-    }
72
-
73
-
74
-    /**
75
-     * @return CollectionInterface|ShortcodeInterface[]
76
-     * @throws InvalidIdentifierException
77
-     * @throws InvalidInterfaceException
78
-     * @throws InvalidFilePathException
79
-     * @throws InvalidEntityException
80
-     * @throws InvalidDataTypeException
81
-     * @throws InvalidClassException
82
-     */
83
-    public function getShortcodes()
84
-    {
85
-        if (! $this->shortcodes instanceof CollectionInterface) {
86
-            $this->shortcodes = $this->loadShortcodesCollection();
87
-        }
88
-        return $this->shortcodes;
89
-    }
90
-
91
-
92
-    /**
93
-     * @return CollectionInterface|ShortcodeInterface[]
94
-     * @throws InvalidIdentifierException
95
-     * @throws InvalidInterfaceException
96
-     * @throws InvalidFilePathException
97
-     * @throws InvalidEntityException
98
-     * @throws InvalidDataTypeException
99
-     * @throws InvalidClassException
100
-     */
101
-    protected function loadShortcodesCollection()
102
-    {
103
-        $loader = new CollectionLoader(
104
-            new CollectionDetails(
105
-            // collection name
106
-                'shortcodes',
107
-                // collection interface
108
-                'EventEspresso\core\services\shortcodes\ShortcodeInterface',
109
-                // FQCNs for classes to add (all classes within that namespace will be loaded)
110
-                ['EventEspresso\core\domain\entities\shortcodes'],
111
-                // filepaths to classes to add
112
-                [],
113
-                // file mask to use if parsing folder for files to add
114
-                '',
115
-                // what to use as identifier for collection entities
116
-                // using CLASS NAME prevents duplicates (works like a singleton)
117
-                CollectionDetails::ID_CLASS_NAME
118
-            )
119
-        );
120
-        return $loader->getCollection();
121
-    }
122
-
123
-
124
-    /**
125
-     * @return void
126
-     * @throws DomainException
127
-     * @throws InvalidInterfaceException
128
-     * @throws InvalidIdentifierException
129
-     * @throws InvalidFilePathException
130
-     * @throws InvalidEntityException
131
-     * @throws InvalidDataTypeException
132
-     * @throws InvalidClassException
133
-     * @throws Exception
134
-     */
135
-    public function registerShortcodes()
136
-    {
137
-        try {
138
-            $this->shortcodes = apply_filters(
139
-                'FHEE__EventEspresso_core_services_shortcodes_ShortcodesManager__registerShortcodes__shortcode_collection',
140
-                $this->getShortcodes()
141
-            );
142
-            if (! $this->shortcodes instanceof CollectionInterface) {
143
-                throw new InvalidEntityException(
144
-                    $this->shortcodes,
145
-                    'CollectionInterface',
146
-                    sprintf(
147
-                        esc_html__(
148
-                            'The "FHEE__EventEspresso_core_services_shortcodes_ShortcodesManager__registerShortcodes__shortcode_collection" filter must return a Collection of EspressoShortcode objects. "%1$s" was received instead.',
149
-                            'event_espresso'
150
-                        ),
151
-                        is_object($this->shortcodes) ? get_class($this->shortcodes) : gettype($this->shortcodes)
152
-                    )
153
-                );
154
-            }
155
-            $this->legacy_shortcodes_manager->registerShortcodes();
156
-        } catch (Exception $exception) {
157
-            new ExceptionStackTraceDisplay($exception);
158
-        }
159
-    }
160
-
161
-
162
-    /**
163
-     * @return void
164
-     * @throws Exception
165
-     */
166
-    public function addShortcodes()
167
-    {
168
-        try {
169
-            // cycle thru shortcode folders
170
-            foreach ($this->shortcodes as $shortcode) {
171
-                if ($shortcode instanceof EnqueueAssetsInterface) {
172
-                    add_action('wp_enqueue_scripts', [$shortcode, 'registerScriptsAndStylesheets'], 10);
173
-                    add_action('wp_enqueue_scripts', [$shortcode, 'enqueueStylesheets'], 11);
174
-                }
175
-                // add_shortcode() if it has not already been added
176
-                if (! shortcode_exists($shortcode->getTag())) {
177
-                    add_shortcode($shortcode->getTag(), [$shortcode, 'processShortcodeCallback']);
178
-                }
179
-            }
180
-            $this->legacy_shortcodes_manager->addShortcodes();
181
-        } catch (Exception $exception) {
182
-            new ExceptionStackTraceDisplay($exception);
183
-        }
184
-    }
185
-
186
-
187
-    /**
188
-     * callback for the "template_redirect" hook point
189
-     * checks posts for EE shortcodes, and initializes them,
190
-     * then toggles filter switch that loads core default assets
191
-     *
192
-     * @return void
193
-     */
194
-    public function templateRedirect()
195
-    {
196
-        global $wp_query;
197
-        if (empty($wp_query->posts)) {
198
-            return;
199
-        }
200
-        $load_assets = false;
201
-        // array of posts displayed in current request
202
-        $posts = is_array($wp_query->posts) ? $wp_query->posts : [$wp_query->posts];
203
-        foreach ($posts as $post) {
204
-            // now check post content and excerpt for EE shortcodes
205
-            $load_assets = $this->parseContentForShortcodes((string) $post->post_content, $post)
206
-                ? true
207
-                : $load_assets;
208
-        }
209
-        if ($load_assets) {
210
-            $this->current_page->setEspressoPage(true);
211
-            add_filter('FHEE_load_css', '__return_true');
212
-            add_filter('FHEE_load_js', '__return_true');
213
-        }
214
-    }
215
-
216
-
217
-    /**
218
-     * checks supplied content against list of shortcodes,
219
-     * then initializes any found shortcodes, and returns true.
220
-     * returns false if no shortcodes found.
221
-     *
222
-     * @param string  $content
223
-     * @param WP_Post $post
224
-     * @return bool
225
-     */
226
-    public function parseContentForShortcodes(string $content, WP_Post $post): bool
227
-    {
228
-        if (empty($this->shortcodes)) {
229
-            return false;
230
-        }
231
-        $has_shortcode = false;
232
-        foreach ($this->shortcodes as $shortcode) {
233
-            if (
234
-                apply_filters(
235
-                    'FHEE__EventEspresso_core_services_shortcodes_ShortcodesManager__parseContentForShortcodes__has_shortcode',
236
-                    has_shortcode($content, $shortcode->getTag()),
237
-                    $content,
238
-                    $post,
239
-                    $shortcode
240
-                )
241
-            ) {
242
-                $shortcode->initializeShortcode();
243
-                $has_shortcode = true;
244
-            }
245
-        }
246
-        return $has_shortcode;
247
-    }
33
+	/**
34
+	 * @type CurrentPage
35
+	 */
36
+	protected $current_page;
37
+
38
+	/**
39
+	 * @var LegacyShortcodesManager $legacy_shortcodes_manager
40
+	 */
41
+	private $legacy_shortcodes_manager;
42
+
43
+	/**
44
+	 * @var CollectionInterface|ShortcodeInterface[] $shortcodes
45
+	 */
46
+	private $shortcodes;
47
+
48
+
49
+	/**
50
+	 * ShortcodesManager constructor
51
+	 *
52
+	 * @param LegacyShortcodesManager $legacy_shortcodes_manager
53
+	 * @param CurrentPage             $current_page
54
+	 */
55
+	public function __construct(LegacyShortcodesManager $legacy_shortcodes_manager, CurrentPage $current_page)
56
+	{
57
+		$this->legacy_shortcodes_manager = $legacy_shortcodes_manager;
58
+		$this->current_page              = $current_page;
59
+		// assemble a list of installed and active shortcodes
60
+		add_action(
61
+			'AHEE__EE_System__register_shortcodes_modules_and_widgets',
62
+			[$this, 'registerShortcodes'],
63
+			999
64
+		);
65
+		//  call add_shortcode() for all installed shortcodes
66
+		add_action('AHEE__EE_System__core_loaded_and_ready', [$this, 'addShortcodes']);
67
+		// check content for shortcodes the old way
68
+		add_action('parse_query', [$this->legacy_shortcodes_manager, 'initializeShortcodes'], 5);
69
+		// check content for shortcodes the NEW more efficient way
70
+		add_action('template_redirect', [$this, 'templateRedirect'], 999);
71
+	}
72
+
73
+
74
+	/**
75
+	 * @return CollectionInterface|ShortcodeInterface[]
76
+	 * @throws InvalidIdentifierException
77
+	 * @throws InvalidInterfaceException
78
+	 * @throws InvalidFilePathException
79
+	 * @throws InvalidEntityException
80
+	 * @throws InvalidDataTypeException
81
+	 * @throws InvalidClassException
82
+	 */
83
+	public function getShortcodes()
84
+	{
85
+		if (! $this->shortcodes instanceof CollectionInterface) {
86
+			$this->shortcodes = $this->loadShortcodesCollection();
87
+		}
88
+		return $this->shortcodes;
89
+	}
90
+
91
+
92
+	/**
93
+	 * @return CollectionInterface|ShortcodeInterface[]
94
+	 * @throws InvalidIdentifierException
95
+	 * @throws InvalidInterfaceException
96
+	 * @throws InvalidFilePathException
97
+	 * @throws InvalidEntityException
98
+	 * @throws InvalidDataTypeException
99
+	 * @throws InvalidClassException
100
+	 */
101
+	protected function loadShortcodesCollection()
102
+	{
103
+		$loader = new CollectionLoader(
104
+			new CollectionDetails(
105
+			// collection name
106
+				'shortcodes',
107
+				// collection interface
108
+				'EventEspresso\core\services\shortcodes\ShortcodeInterface',
109
+				// FQCNs for classes to add (all classes within that namespace will be loaded)
110
+				['EventEspresso\core\domain\entities\shortcodes'],
111
+				// filepaths to classes to add
112
+				[],
113
+				// file mask to use if parsing folder for files to add
114
+				'',
115
+				// what to use as identifier for collection entities
116
+				// using CLASS NAME prevents duplicates (works like a singleton)
117
+				CollectionDetails::ID_CLASS_NAME
118
+			)
119
+		);
120
+		return $loader->getCollection();
121
+	}
122
+
123
+
124
+	/**
125
+	 * @return void
126
+	 * @throws DomainException
127
+	 * @throws InvalidInterfaceException
128
+	 * @throws InvalidIdentifierException
129
+	 * @throws InvalidFilePathException
130
+	 * @throws InvalidEntityException
131
+	 * @throws InvalidDataTypeException
132
+	 * @throws InvalidClassException
133
+	 * @throws Exception
134
+	 */
135
+	public function registerShortcodes()
136
+	{
137
+		try {
138
+			$this->shortcodes = apply_filters(
139
+				'FHEE__EventEspresso_core_services_shortcodes_ShortcodesManager__registerShortcodes__shortcode_collection',
140
+				$this->getShortcodes()
141
+			);
142
+			if (! $this->shortcodes instanceof CollectionInterface) {
143
+				throw new InvalidEntityException(
144
+					$this->shortcodes,
145
+					'CollectionInterface',
146
+					sprintf(
147
+						esc_html__(
148
+							'The "FHEE__EventEspresso_core_services_shortcodes_ShortcodesManager__registerShortcodes__shortcode_collection" filter must return a Collection of EspressoShortcode objects. "%1$s" was received instead.',
149
+							'event_espresso'
150
+						),
151
+						is_object($this->shortcodes) ? get_class($this->shortcodes) : gettype($this->shortcodes)
152
+					)
153
+				);
154
+			}
155
+			$this->legacy_shortcodes_manager->registerShortcodes();
156
+		} catch (Exception $exception) {
157
+			new ExceptionStackTraceDisplay($exception);
158
+		}
159
+	}
160
+
161
+
162
+	/**
163
+	 * @return void
164
+	 * @throws Exception
165
+	 */
166
+	public function addShortcodes()
167
+	{
168
+		try {
169
+			// cycle thru shortcode folders
170
+			foreach ($this->shortcodes as $shortcode) {
171
+				if ($shortcode instanceof EnqueueAssetsInterface) {
172
+					add_action('wp_enqueue_scripts', [$shortcode, 'registerScriptsAndStylesheets'], 10);
173
+					add_action('wp_enqueue_scripts', [$shortcode, 'enqueueStylesheets'], 11);
174
+				}
175
+				// add_shortcode() if it has not already been added
176
+				if (! shortcode_exists($shortcode->getTag())) {
177
+					add_shortcode($shortcode->getTag(), [$shortcode, 'processShortcodeCallback']);
178
+				}
179
+			}
180
+			$this->legacy_shortcodes_manager->addShortcodes();
181
+		} catch (Exception $exception) {
182
+			new ExceptionStackTraceDisplay($exception);
183
+		}
184
+	}
185
+
186
+
187
+	/**
188
+	 * callback for the "template_redirect" hook point
189
+	 * checks posts for EE shortcodes, and initializes them,
190
+	 * then toggles filter switch that loads core default assets
191
+	 *
192
+	 * @return void
193
+	 */
194
+	public function templateRedirect()
195
+	{
196
+		global $wp_query;
197
+		if (empty($wp_query->posts)) {
198
+			return;
199
+		}
200
+		$load_assets = false;
201
+		// array of posts displayed in current request
202
+		$posts = is_array($wp_query->posts) ? $wp_query->posts : [$wp_query->posts];
203
+		foreach ($posts as $post) {
204
+			// now check post content and excerpt for EE shortcodes
205
+			$load_assets = $this->parseContentForShortcodes((string) $post->post_content, $post)
206
+				? true
207
+				: $load_assets;
208
+		}
209
+		if ($load_assets) {
210
+			$this->current_page->setEspressoPage(true);
211
+			add_filter('FHEE_load_css', '__return_true');
212
+			add_filter('FHEE_load_js', '__return_true');
213
+		}
214
+	}
215
+
216
+
217
+	/**
218
+	 * checks supplied content against list of shortcodes,
219
+	 * then initializes any found shortcodes, and returns true.
220
+	 * returns false if no shortcodes found.
221
+	 *
222
+	 * @param string  $content
223
+	 * @param WP_Post $post
224
+	 * @return bool
225
+	 */
226
+	public function parseContentForShortcodes(string $content, WP_Post $post): bool
227
+	{
228
+		if (empty($this->shortcodes)) {
229
+			return false;
230
+		}
231
+		$has_shortcode = false;
232
+		foreach ($this->shortcodes as $shortcode) {
233
+			if (
234
+				apply_filters(
235
+					'FHEE__EventEspresso_core_services_shortcodes_ShortcodesManager__parseContentForShortcodes__has_shortcode',
236
+					has_shortcode($content, $shortcode->getTag()),
237
+					$content,
238
+					$post,
239
+					$shortcode
240
+				)
241
+			) {
242
+				$shortcode->initializeShortcode();
243
+				$has_shortcode = true;
244
+			}
245
+		}
246
+		return $has_shortcode;
247
+	}
248 248
 }
Please login to merge, or discard this patch.
core/services/database/WordPressOption.php 2 patches
Indentation   +169 added lines, -169 removed lines patch added patch discarded remove patch
@@ -17,173 +17,173 @@
 block discarded – undo
17 17
  */
18 18
 abstract class WordPressOption
19 19
 {
20
-    public const NOT_SET_YET = 'wordpress-option-value-not-yet-set';
21
-
22
-    /**
23
-     * WordPress makes it difficult to determine if an option successfully saved or not,
24
-     * which is sometimes really important to know, especially if the information you are saving is critical.
25
-     * The following options allow us to have a better chance of knowing when an update actually failed
26
-     * or when everything is OK but it just didn't update because the value hasn't changed.
27
-     */
28
-    public const UPDATE_SUCCESS = 1;
29
-
30
-    public const UPDATE_NONE    = 0;
31
-
32
-    public const UPDATE_ERROR   = -1;
33
-
34
-    private bool $autoload = false;
35
-
36
-    /**
37
-     * @var mixed
38
-     */
39
-    private $default_value = null;
40
-
41
-    private string $option_name = '';
42
-
43
-    /**
44
-     * @var mixed
45
-     */
46
-    private $value = WordPressOption::NOT_SET_YET;
47
-
48
-    private OptionEngine $option_engine;
49
-
50
-
51
-    /**
52
-     * WordPressOption constructor.
53
-     *
54
-     * @param string $option_name
55
-     * @param mixed  $default_value
56
-     * @param bool   $autoload          if true, will load the option on EVERY request
57
-     * @param bool   $is_network_option if true, will save the option to the network as opposed to the current blog
58
-     */
59
-    public function __construct(
60
-        string $option_name,
61
-        $default_value,
62
-        bool $autoload = false,
63
-        bool $is_network_option = false
64
-    ) {
65
-        $this->setAutoload($autoload);
66
-        $this->setDefaultValue($default_value);
67
-        $this->setOptionName($option_name);
68
-        $this->option_engine = new OptionEngine($is_network_option);
69
-    }
70
-
71
-
72
-    /**
73
-     * @param bool|string $autoload
74
-     */
75
-    public function setAutoload($autoload): void
76
-    {
77
-        $this->autoload = filter_var($autoload, FILTER_VALIDATE_BOOLEAN);
78
-    }
79
-
80
-
81
-    /**
82
-     * @param mixed $default_value
83
-     */
84
-    public function setDefaultValue($default_value): void
85
-    {
86
-        $this->default_value = $default_value;
87
-    }
88
-
89
-
90
-    /**
91
-     * @param string $option_name
92
-     */
93
-    public function setOptionName(string $option_name): void
94
-    {
95
-        $this->option_name = sanitize_key($option_name);
96
-    }
97
-
98
-
99
-    /**
100
-     * @return string
101
-     */
102
-    public function optionExists(): string
103
-    {
104
-        return $this->option_engine->getOption(
105
-            $this->getOptionName(),
106
-            WordPressOption::NOT_SET_YET
107
-        ) !== WordPressOption::NOT_SET_YET;
108
-    }
109
-
110
-
111
-    /**
112
-     * @return string
113
-     */
114
-    public function getOptionName(): string
115
-    {
116
-        return $this->option_name;
117
-    }
118
-
119
-
120
-    /**
121
-     * @return false|mixed|void
122
-     */
123
-    public function loadOption()
124
-    {
125
-        if ($this->value === WordPressOption::NOT_SET_YET) {
126
-            $this->value = $this->option_engine->getOption($this->getOptionName(), $this->default_value);
127
-        }
128
-        return $this->value;
129
-    }
130
-
131
-
132
-    /**
133
-     * @param $value
134
-     * @param bool $force_update
135
-     * @return int
136
-     */
137
-    public function updateOption($value, bool $force_update = false): int
138
-    {
139
-        // don't update if value has not changed since last update
140
-        if (! $force_update && $this->valueIsUnchanged($value)) {
141
-            return WordPressOption::UPDATE_NONE;
142
-        }
143
-        $this->value = $value;
144
-        // because the options for updating differ when adding an option for the first time
145
-        // we use the WordPressOption::NOT_SET_YET to determine if things already exist in the db
146
-        $updated = $this->optionExists()
147
-            ? $this->option_engine->updateOption($this->getOptionName(), $this->value)
148
-            : $this->option_engine->addOption($this->getOptionName(), $this->value, $this->autoload());
149
-
150
-        if ($updated) {
151
-            return WordPressOption::UPDATE_SUCCESS;
152
-        }
153
-        return WordPressOption::UPDATE_ERROR;
154
-    }
155
-
156
-
157
-    private function valueIsUnchanged($value): bool
158
-    {
159
-        if (is_array($value) && is_array($this->value)) {
160
-            $diff = EEH_Array::array_diff_recursive($value, $this->value);
161
-            // $diff = array_diff($value, $this->value);
162
-            return empty($diff);
163
-        }
164
-        // emulate WP's method for checking equality
165
-        return $value === $this->value && maybe_serialize($value) === maybe_serialize($this->value);
166
-    }
167
-
168
-
169
-    /**
170
-     * @return string
171
-     */
172
-    private function autoload(): string
173
-    {
174
-        return $this->autoload ? 'yes' : 'no';
175
-    }
176
-
177
-
178
-    /**
179
-     * Deletes the option from the database
180
-     * for the rest of the request
181
-     *
182
-     * @return bool
183
-     * @since  5.0.0.p
184
-     */
185
-    public function deleteOption(): bool
186
-    {
187
-        return $this->option_engine->deleteOption($this->getOptionName());
188
-    }
20
+	public const NOT_SET_YET = 'wordpress-option-value-not-yet-set';
21
+
22
+	/**
23
+	 * WordPress makes it difficult to determine if an option successfully saved or not,
24
+	 * which is sometimes really important to know, especially if the information you are saving is critical.
25
+	 * The following options allow us to have a better chance of knowing when an update actually failed
26
+	 * or when everything is OK but it just didn't update because the value hasn't changed.
27
+	 */
28
+	public const UPDATE_SUCCESS = 1;
29
+
30
+	public const UPDATE_NONE    = 0;
31
+
32
+	public const UPDATE_ERROR   = -1;
33
+
34
+	private bool $autoload = false;
35
+
36
+	/**
37
+	 * @var mixed
38
+	 */
39
+	private $default_value = null;
40
+
41
+	private string $option_name = '';
42
+
43
+	/**
44
+	 * @var mixed
45
+	 */
46
+	private $value = WordPressOption::NOT_SET_YET;
47
+
48
+	private OptionEngine $option_engine;
49
+
50
+
51
+	/**
52
+	 * WordPressOption constructor.
53
+	 *
54
+	 * @param string $option_name
55
+	 * @param mixed  $default_value
56
+	 * @param bool   $autoload          if true, will load the option on EVERY request
57
+	 * @param bool   $is_network_option if true, will save the option to the network as opposed to the current blog
58
+	 */
59
+	public function __construct(
60
+		string $option_name,
61
+		$default_value,
62
+		bool $autoload = false,
63
+		bool $is_network_option = false
64
+	) {
65
+		$this->setAutoload($autoload);
66
+		$this->setDefaultValue($default_value);
67
+		$this->setOptionName($option_name);
68
+		$this->option_engine = new OptionEngine($is_network_option);
69
+	}
70
+
71
+
72
+	/**
73
+	 * @param bool|string $autoload
74
+	 */
75
+	public function setAutoload($autoload): void
76
+	{
77
+		$this->autoload = filter_var($autoload, FILTER_VALIDATE_BOOLEAN);
78
+	}
79
+
80
+
81
+	/**
82
+	 * @param mixed $default_value
83
+	 */
84
+	public function setDefaultValue($default_value): void
85
+	{
86
+		$this->default_value = $default_value;
87
+	}
88
+
89
+
90
+	/**
91
+	 * @param string $option_name
92
+	 */
93
+	public function setOptionName(string $option_name): void
94
+	{
95
+		$this->option_name = sanitize_key($option_name);
96
+	}
97
+
98
+
99
+	/**
100
+	 * @return string
101
+	 */
102
+	public function optionExists(): string
103
+	{
104
+		return $this->option_engine->getOption(
105
+			$this->getOptionName(),
106
+			WordPressOption::NOT_SET_YET
107
+		) !== WordPressOption::NOT_SET_YET;
108
+	}
109
+
110
+
111
+	/**
112
+	 * @return string
113
+	 */
114
+	public function getOptionName(): string
115
+	{
116
+		return $this->option_name;
117
+	}
118
+
119
+
120
+	/**
121
+	 * @return false|mixed|void
122
+	 */
123
+	public function loadOption()
124
+	{
125
+		if ($this->value === WordPressOption::NOT_SET_YET) {
126
+			$this->value = $this->option_engine->getOption($this->getOptionName(), $this->default_value);
127
+		}
128
+		return $this->value;
129
+	}
130
+
131
+
132
+	/**
133
+	 * @param $value
134
+	 * @param bool $force_update
135
+	 * @return int
136
+	 */
137
+	public function updateOption($value, bool $force_update = false): int
138
+	{
139
+		// don't update if value has not changed since last update
140
+		if (! $force_update && $this->valueIsUnchanged($value)) {
141
+			return WordPressOption::UPDATE_NONE;
142
+		}
143
+		$this->value = $value;
144
+		// because the options for updating differ when adding an option for the first time
145
+		// we use the WordPressOption::NOT_SET_YET to determine if things already exist in the db
146
+		$updated = $this->optionExists()
147
+			? $this->option_engine->updateOption($this->getOptionName(), $this->value)
148
+			: $this->option_engine->addOption($this->getOptionName(), $this->value, $this->autoload());
149
+
150
+		if ($updated) {
151
+			return WordPressOption::UPDATE_SUCCESS;
152
+		}
153
+		return WordPressOption::UPDATE_ERROR;
154
+	}
155
+
156
+
157
+	private function valueIsUnchanged($value): bool
158
+	{
159
+		if (is_array($value) && is_array($this->value)) {
160
+			$diff = EEH_Array::array_diff_recursive($value, $this->value);
161
+			// $diff = array_diff($value, $this->value);
162
+			return empty($diff);
163
+		}
164
+		// emulate WP's method for checking equality
165
+		return $value === $this->value && maybe_serialize($value) === maybe_serialize($this->value);
166
+	}
167
+
168
+
169
+	/**
170
+	 * @return string
171
+	 */
172
+	private function autoload(): string
173
+	{
174
+		return $this->autoload ? 'yes' : 'no';
175
+	}
176
+
177
+
178
+	/**
179
+	 * Deletes the option from the database
180
+	 * for the rest of the request
181
+	 *
182
+	 * @return bool
183
+	 * @since  5.0.0.p
184
+	 */
185
+	public function deleteOption(): bool
186
+	{
187
+		return $this->option_engine->deleteOption($this->getOptionName());
188
+	}
189 189
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -137,7 +137,7 @@
 block discarded – undo
137 137
     public function updateOption($value, bool $force_update = false): int
138 138
     {
139 139
         // don't update if value has not changed since last update
140
-        if (! $force_update && $this->valueIsUnchanged($value)) {
140
+        if ( ! $force_update && $this->valueIsUnchanged($value)) {
141 141
             return WordPressOption::UPDATE_NONE;
142 142
         }
143 143
         $this->value = $value;
Please login to merge, or discard this patch.