PluginProbe
Kit (formerly ConvertKit) – Email Newsletter, Email Marketing, Membership, Subscribers and Landing Pages / 2.0.0
Kit (formerly ConvertKit) – Email Newsletter, Email Marketing, Membership, Subscribers and Landing Pages v2.0.0
3.4.4 3.4.3 3.4.2 3.4.1 3.4.0 3.3.9 3.3.8 3.3.7 3.3.6 3.3.5 3.3.4 3.3.3 3.3.2 3.3.1 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 2.3.0 All 197 releases
← All changes | includes/class-wp-convertkit.php +62 -79 3.3.52.0.0 View file →
@@ -20,9 +20,9 @@
20 20 * @since 1.9.6
21 21 *
22 22 * @var object
23 23 */
24 - private static $instance;
24 + public static $instance;
25 25
26 26 /**
27 27 * Holds singleton initialized classes that include
28 28 * action and filter hooks.
@@ -39,27 +39,9 @@
39 39 * @since 1.9.6
40 40 */
41 41 public function __construct() {
42 42
43 - // Initialize classes that have hooks prior to the `init` hook.
44 - // Divi Theme requires us to do this, although the Divi Builder Plugin works fine when loading
45 - // our integration on `init`.
46 - $this->classes['divi'] = new ConvertKit_Divi();
47 - $this->classes['widgets'] = new ConvertKit_Widgets();
48 -
49 - // Initialize Plugin classes on init, so the `_load_textdomain_just_in_time` warning isn't triggered.
50 - add_action( 'init', array( $this, 'initialize' ), 1 );
51 - add_action( 'init', array( $this, 'setup' ), 2 );
52 -
53 - }
54 -
55 - /**
56 - * Initialize classes.
57 - *
58 - * @since 2.7.7
59 - */
60 - public function initialize() {
61 -
43 + // Initialize class(es) to register hooks.
62 44 $this->initialize_admin();
63 45 $this->initialize_admin_or_frontend_editor();
64 46 $this->initialize_cli_cron();
65 47 $this->initialize_frontend();
@@ -64,8 +46,11 @@
64 46 $this->initialize_cli_cron();
65 47 $this->initialize_frontend();
66 48 $this->initialize_global();
67 49
50 + // Load language files.
51 + add_action( 'init', array( $this, 'load_language_files' ) );
52 +
68 53 }
69 54
70 55 /**
71 56 * Initialize classes for the WordPress Administration interface
@@ -78,26 +63,17 @@
78 63 if ( ! is_admin() ) {
79 64 return;
80 65 }
81 66
82 - $this->classes['admin_bulk_edit'] = new ConvertKit_Admin_Bulk_Edit();
83 - $this->classes['admin_cache_plugins'] = new ConvertKit_Admin_Cache_Plugins();
84 - $this->classes['admin_category'] = new ConvertKit_Admin_Category();
85 - $this->classes['admin_landing_page'] = new ConvertKit_Admin_Landing_Page();
86 - $this->classes['admin_importer_activecampaign'] = new ConvertKit_Admin_Importer_ActiveCampaign();
87 - $this->classes['admin_importer_aweber'] = new ConvertKit_Admin_Importer_AWeber();
88 - $this->classes['admin_importer_campaignmonitor'] = new ConvertKit_Admin_Importer_CampaignMonitor();
89 - $this->classes['admin_importer_convertkit_legacy_forms'] = new ConvertKit_Admin_Importer_ConvertKit_Legacy_Forms();
90 - $this->classes['admin_importer_mc4wp'] = new ConvertKit_Admin_Importer_MC4WP();
91 - $this->classes['admin_importer_mailpoet'] = new ConvertKit_Admin_Importer_Mailpoet();
92 - $this->classes['admin_importer_newsletter'] = new ConvertKit_Admin_Importer_Newsletter();
93 - $this->classes['admin_post'] = new ConvertKit_Admin_Post();
94 - $this->classes['admin_quick_edit'] = new ConvertKit_Admin_Quick_Edit();
95 - $this->classes['admin_restrict_content'] = new ConvertKit_Admin_Restrict_Content();
96 - $this->classes['admin_settings'] = new ConvertKit_Admin_Settings();
97 - $this->classes['admin_setup_wizard_landing_page'] = new ConvertKit_Admin_Setup_Wizard_Landing_Page();
98 - $this->classes['admin_setup_wizard_plugin'] = new ConvertKit_Admin_Setup_Wizard_Plugin();
99 - $this->classes['admin_setup_wizard_restrict_content'] = new ConvertKit_Admin_Setup_Wizard_Restrict_Content();
67 + $this->classes['admin_bulk_edit'] = new ConvertKit_Admin_Bulk_Edit();
68 + $this->classes['admin_category'] = new ConvertKit_Admin_Category();
69 + $this->classes['admin_post'] = new ConvertKit_Admin_Post();
70 + $this->classes['admin_quick_edit'] = new ConvertKit_Admin_Quick_Edit();
71 + $this->classes['admin_refresh_resources'] = new ConvertKit_Admin_Refresh_Resources();
72 + $this->classes['admin_settings'] = new ConvertKit_Admin_Settings();
73 + $this->classes['admin_setup_wizard_plugin'] = new ConvertKit_Admin_Setup_Wizard_Plugin();
74 + $this->classes['admin_tinymce'] = new ConvertKit_Admin_TinyMCE();
75 + $this->classes['admin_user'] = new ConvertKit_Admin_User();
100 76
101 77 /**
102 78 * Initialize integration classes for the WordPress Administration interface.
103 79 *
@@ -160,11 +136,9 @@
160 136 if ( is_admin() ) {
161 137 return;
162 138 }
163 139
164 - $this->classes['cache_plugins'] = new ConvertKit_Cache_Plugins();
165 - $this->classes['output'] = new ConvertKit_Output();
166 - $this->classes['output_broadcasts'] = new ConvertKit_Output_Broadcasts();
140 + $this->classes['output'] = new ConvertKit_Output();
167 141
168 142 /**
169 143 * Initialize integration classes for the frontend web site.
170 144 *
@@ -181,35 +155,27 @@
181 155 * @since 1.9.6
182 156 */
183 157 private function initialize_global() {
184 158
185 - $this->classes['admin_notices'] = new ConvertKit_Admin_Notices();
186 - $this->classes['admin_tinymce'] = new ConvertKit_Admin_TinyMCE();
187 - $this->classes['admin_refresh_resources'] = new ConvertKit_Admin_Refresh_Resources();
188 - $this->classes['blocks_convertkit_broadcasts'] = new ConvertKit_Block_Broadcasts();
189 - $this->classes['blocks_convertkit_content'] = new ConvertKit_Block_Content();
190 - $this->classes['blocks_convertkit_formtrigger'] = new ConvertKit_Block_Form_Trigger();
191 - $this->classes['blocks_convertkit_form'] = new ConvertKit_Block_Form();
192 - $this->classes['blocks_convertkit_form_builder'] = new ConvertKit_Block_Form_Builder();
193 - $this->classes['blocks_convertkit_form_builder_field_email'] = new ConvertKit_Block_Form_Builder_Field_Email();
194 - $this->classes['blocks_convertkit_form_builder_field_name'] = new ConvertKit_Block_Form_Builder_Field_Name();
195 - $this->classes['blocks_convertkit_form_builder_field_custom'] = new ConvertKit_Block_Form_Builder_Field_Custom();
196 - $this->classes['blocks_convertkit_product'] = new ConvertKit_Block_Product();
197 - $this->classes['block_formatter_form_link'] = new ConvertKit_Block_Formatter_Form_Link();
198 - $this->classes['block_formatter_product_link'] = new ConvertKit_Block_Formatter_Product_Link();
199 - $this->classes['pre_publish_action_broadcast_export'] = new ConvertKit_Pre_Publish_Action_Broadcast_Export();
200 - $this->classes['plugin_sidebar_post_settings'] = new ConvertKit_Plugin_Sidebar_Post_Settings();
201 - $this->classes['broadcasts_exporter'] = new ConvertKit_Broadcasts_Exporter();
202 - $this->classes['broadcasts_importer'] = new ConvertKit_Broadcasts_Importer();
203 - $this->classes['elementor'] = new ConvertKit_Elementor();
204 - $this->classes['gutenberg'] = new ConvertKit_Gutenberg();
205 - $this->classes['media_library'] = new ConvertKit_Media_Library();
206 - $this->classes['output_restrict_content'] = new ConvertKit_Output_Restrict_Content();
207 - $this->classes['review_request'] = new ConvertKit_Review_Request( 'Kit', 'convertkit', CONVERTKIT_PLUGIN_PATH );
208 - $this->classes['preview_output'] = new ConvertKit_Preview_Output();
209 - $this->classes['setup'] = new ConvertKit_Setup();
210 - $this->classes['shortcodes'] = new ConvertKit_Shortcodes();
159 + $this->classes['ajax'] = new ConvertKit_AJAX();
160 + $this->classes['blocks_convertkit_broadcasts'] = new ConvertKit_Block_Broadcasts();
161 + $this->classes['blocks_convertkit_content'] = new ConvertKit_Block_Content();
162 + $this->classes['blocks_convertkit_product'] = new ConvertKit_Block_Product();
163 + $this->classes['blocks_convertkit_form'] = new ConvertKit_Block_Form();
164 + $this->classes['elementor'] = new ConvertKit_Elementor();
165 + $this->classes['gutenberg'] = new ConvertKit_Gutenberg();
166 + $this->classes['post_type_product'] = new ConvertKit_Post_Type_Product();
167 + $this->classes['review_request'] = new ConvertKit_Review_Request( 'ConvertKit', 'convertkit', CONVERTKIT_PLUGIN_PATH );
168 + $this->classes['preview_output'] = new ConvertKit_Preview_Output();
169 + $this->classes['setup'] = new ConvertKit_Setup();
170 + $this->classes['shortcodes'] = new ConvertKit_Shortcodes();
171 + $this->classes['widgets'] = new ConvertKit_Widgets();
211 172
173 + // Run the setup's update process on WordPress' init hook.
174 + // Doing this sooner may result in errors with WordPress functions that are not yet
175 + // available to the update routine.
176 + add_action( 'init', array( $this, 'update' ) );
177 +
212 178 /**
213 179 * Initialize integration classes for the frontend web site.
214 180 *
215 181 * @since 1.9.6
@@ -218,17 +184,16 @@
218 184
219 185 }
220 186
221 187 /**
222 - * Runs the Plugin's initialization and update routines, which checks if
188 + * Runs the Plugin's update routine, which checks if
223 189 * the Plugin has just been updated to a newer version,
224 190 * and if so runs any specific processes that might be needed.
225 191 *
226 192 * @since 1.9.7.4
227 193 */
228 - public function setup() {
194 + public function update() {
229 195
230 - $this->get_class( 'setup' )->initialize();
231 196 $this->get_class( 'setup' )->update();
232 197
233 198 }
234 199
@@ -248,15 +213,15 @@
248 213 }
249 214
250 215 // Pro.
251 216 if ( array_key_exists( 'REQUEST_URI', $_SERVER ) ) {
252 - if ( strpos( sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ), '/pro/' ) !== false ) {
217 + if ( strpos( sanitize_text_field( $_SERVER['REQUEST_URI'] ), '/pro/' ) !== false ) {
253 218 return true;
254 219 }
255 - if ( strpos( sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ), '/x/' ) !== false ) {
220 + if ( strpos( sanitize_text_field( $_SERVER['REQUEST_URI'] ), '/x/' ) !== false ) {
256 221 return true;
257 222 }
258 - if ( strpos( sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ), 'cornerstone-endpoint' ) !== false ) {
223 + if ( strpos( sanitize_text_field( $_SERVER['REQUEST_URI'] ), 'cornerstone-endpoint' ) !== false ) {
259 224 return true;
260 225 }
261 226 }
262 227
@@ -288,9 +253,9 @@
288 253 return true;
289 254 }
290 255
291 256 // Elementor.
292 - if ( array_key_exists( 'action', $_REQUEST ) && sanitize_text_field( wp_unslash( $_REQUEST['action'] ) ) === 'elementor' ) {
257 + if ( array_key_exists( 'action', $_REQUEST ) && sanitize_text_field( $_REQUEST['action'] ) === 'elementor' ) {
293 258 return true;
294 259 }
295 260
296 261 // Kallyas.
@@ -318,9 +283,9 @@
318 283 return true;
319 284 }
320 285
321 286 // Zion Builder.
322 - if ( array_key_exists( 'action', $_REQUEST ) && sanitize_text_field( wp_unslash( $_REQUEST['action'] ) ) === 'zion_builder_active' ) {
287 + if ( array_key_exists( 'action', $_REQUEST ) && sanitize_text_field( $_REQUEST['action'] ) === 'zion_builder_active' ) {
323 288 return true;
324 289 }
325 290
326 291 // Assume we're not in the Administration interface.
@@ -372,13 +337,31 @@
372 337 * @return bool Is WP CRON Request
373 338 */
374 339 public function is_cron() {
375 340
376 - return wp_doing_cron();
341 + if ( ! defined( 'DOING_CRON' ) ) {
342 + return false;
343 + }
344 + if ( ! DOING_CRON ) {
345 + return false;
346 + }
377 347
348 + return true;
349 +
378 350 }
379 351
380 352 /**
353 + * Loads plugin textdomain
354 + *
355 + * @since 1.0.0
356 + */
357 + public function load_language_files() {
358 +
359 + load_plugin_textdomain( 'convertkit', false, basename( dirname( CONVERTKIT_PLUGIN_FILE ) ) . '/languages/' ); // @phpstan-ignore-line.
360 +
361 + }
362 +
363 + /**
381 364 * Returns the given class
382 365 *
383 366 * @since 1.9.6
384 367 *
@@ -394,9 +377,9 @@
394 377 $error = new WP_Error(
395 378 'convertkit_get_class',
396 379 sprintf(
397 380 /* translators: %1$s: PHP class name */
398 - __( 'Kit Error: Could not load Plugin class <strong>%1$s</strong>', 'convertkit' ),
381 + __( 'ConvertKit Error: Could not load Plugin class <strong>%1$s</strong>', 'convertkit' ),
399 382 $name
400 383 )
401 384 );
402 385
@@ -404,9 +387,9 @@
404 387 // Admin UI.
405 388 if ( is_admin() ) {
406 389 wp_die(
407 390 esc_attr( $error->get_error_message() ),
408 - esc_html__( 'Kit Error', 'convertkit' ),
391 + esc_html__( 'ConvertKit Error', 'convertkit' ),
409 392 array(
410 393 'back_link' => true,
411 394 )
412 395 );
@@ -429,9 +412,9 @@
429 412 * @return object Class.
430 413 */
431 414 public static function get_instance() {
432 415
433 - if ( null === self::$instance ) {
416 + if ( ! isset( self::$instance ) && ! ( self::$instance instanceof self ) ) { // @phpstan-ignore-line.
434 417 self::$instance = new self();
435 418 }
436 419
437 420 return self::$instance;