PluginProbe
Kit (formerly ConvertKit) – Email Newsletter, Email Marketing, Membership, Subscribers and Landing Pages / 3.3.0
Kit (formerly ConvertKit) – Email Newsletter, Email Marketing, Membership, Subscribers and Landing Pages v3.3.0
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 2.3.1 All 196 releases
← All changes | includes/class-wp-convertkit.php +67 -63 2.3.13.3.0 View file →
@@ -39,9 +39,27 @@
39 39 * @since 1.9.6
40 40 */
41 41 public function __construct() {
42 42
43 - // Initialize class(es) to register hooks.
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 +
44 62 $this->initialize_admin();
45 63 $this->initialize_admin_or_frontend_editor();
46 64 $this->initialize_cli_cron();
47 65 $this->initialize_frontend();
@@ -46,11 +64,8 @@
46 64 $this->initialize_cli_cron();
47 65 $this->initialize_frontend();
48 66 $this->initialize_global();
49 67
50 - // Load language files.
51 - add_action( 'init', array( $this, 'load_language_files' ) );
52 -
53 68 }
54 69
55 70 /**
56 71 * Initialize classes for the WordPress Administration interface
@@ -66,18 +81,22 @@
66 81
67 82 $this->classes['admin_bulk_edit'] = new ConvertKit_Admin_Bulk_Edit();
68 83 $this->classes['admin_cache_plugins'] = new ConvertKit_Admin_Cache_Plugins();
69 84 $this->classes['admin_category'] = new ConvertKit_Admin_Category();
70 - $this->classes['admin_notices'] = new ConvertKit_Admin_Notices();
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_mc4wp'] = new ConvertKit_Admin_Importer_MC4WP();
90 + $this->classes['admin_importer_mailpoet'] = new ConvertKit_Admin_Importer_Mailpoet();
91 + $this->classes['admin_importer_newsletter'] = new ConvertKit_Admin_Importer_Newsletter();
71 92 $this->classes['admin_post'] = new ConvertKit_Admin_Post();
72 93 $this->classes['admin_quick_edit'] = new ConvertKit_Admin_Quick_Edit();
73 - $this->classes['admin_refresh_resources'] = new ConvertKit_Admin_Refresh_Resources();
74 94 $this->classes['admin_restrict_content'] = new ConvertKit_Admin_Restrict_Content();
75 95 $this->classes['admin_settings'] = new ConvertKit_Admin_Settings();
96 + $this->classes['admin_setup_wizard_landing_page'] = new ConvertKit_Admin_Setup_Wizard_Landing_Page();
76 97 $this->classes['admin_setup_wizard_plugin'] = new ConvertKit_Admin_Setup_Wizard_Plugin();
77 98 $this->classes['admin_setup_wizard_restrict_content'] = new ConvertKit_Admin_Setup_Wizard_Restrict_Content();
78 - $this->classes['admin_tinymce'] = new ConvertKit_Admin_TinyMCE();
79 - $this->classes['admin_user'] = new ConvertKit_Admin_User();
80 99
81 100 /**
82 101 * Initialize integration classes for the WordPress Administration interface.
83 102 *
@@ -140,10 +159,11 @@
140 159 if ( is_admin() ) {
141 160 return;
142 161 }
143 162
144 - $this->classes['output'] = new ConvertKit_Output();
145 - $this->classes['output_restrict_content'] = new ConvertKit_Output_Restrict_Content();
163 + $this->classes['cache_plugins'] = new ConvertKit_Cache_Plugins();
164 + $this->classes['output'] = new ConvertKit_Output();
165 + $this->classes['output_broadcasts'] = new ConvertKit_Output_Broadcasts();
146 166
147 167 /**
148 168 * Initialize integration classes for the frontend web site.
149 169 *
@@ -160,31 +180,35 @@
160 180 * @since 1.9.6
161 181 */
162 182 private function initialize_global() {
163 183
164 - $this->classes['ajax'] = new ConvertKit_AJAX();
165 - $this->classes['blocks_convertkit_broadcasts'] = new ConvertKit_Block_Broadcasts();
166 - $this->classes['blocks_convertkit_content'] = new ConvertKit_Block_Content();
167 - $this->classes['blocks_convertkit_formtrigger'] = new ConvertKit_Block_Form_Trigger();
168 - $this->classes['blocks_convertkit_form'] = new ConvertKit_Block_Form();
169 - $this->classes['blocks_convertkit_product'] = new ConvertKit_Block_Product();
170 - $this->classes['block_formatter_form_link'] = new ConvertKit_Block_Formatter_Form_Link();
171 - $this->classes['block_formatter_product_link'] = new ConvertKit_Block_Formatter_Product_Link();
172 - $this->classes['broadcasts_importer'] = new ConvertKit_Broadcasts_Importer();
173 - $this->classes['elementor'] = new ConvertKit_Elementor();
174 - $this->classes['gutenberg'] = new ConvertKit_Gutenberg();
175 - $this->classes['media_library'] = new ConvertKit_Media_Library();
176 - $this->classes['review_request'] = new ConvertKit_Review_Request( 'ConvertKit', 'convertkit', CONVERTKIT_PLUGIN_PATH );
177 - $this->classes['preview_output'] = new ConvertKit_Preview_Output();
178 - $this->classes['setup'] = new ConvertKit_Setup();
179 - $this->classes['shortcodes'] = new ConvertKit_Shortcodes();
180 - $this->classes['widgets'] = new ConvertKit_Widgets();
184 + $this->classes['admin_notices'] = new ConvertKit_Admin_Notices();
185 + $this->classes['admin_tinymce'] = new ConvertKit_Admin_TinyMCE();
186 + $this->classes['admin_refresh_resources'] = new ConvertKit_Admin_Refresh_Resources();
187 + $this->classes['blocks_convertkit_broadcasts'] = new ConvertKit_Block_Broadcasts();
188 + $this->classes['blocks_convertkit_content'] = new ConvertKit_Block_Content();
189 + $this->classes['blocks_convertkit_formtrigger'] = new ConvertKit_Block_Form_Trigger();
190 + $this->classes['blocks_convertkit_form'] = new ConvertKit_Block_Form();
191 + $this->classes['blocks_convertkit_form_builder'] = new ConvertKit_Block_Form_Builder();
192 + $this->classes['blocks_convertkit_form_builder_field_email'] = new ConvertKit_Block_Form_Builder_Field_Email();
193 + $this->classes['blocks_convertkit_form_builder_field_name'] = new ConvertKit_Block_Form_Builder_Field_Name();
194 + $this->classes['blocks_convertkit_form_builder_field_custom'] = new ConvertKit_Block_Form_Builder_Field_Custom();
195 + $this->classes['blocks_convertkit_product'] = new ConvertKit_Block_Product();
196 + $this->classes['block_formatter_form_link'] = new ConvertKit_Block_Formatter_Form_Link();
197 + $this->classes['block_formatter_product_link'] = new ConvertKit_Block_Formatter_Product_Link();
198 + $this->classes['pre_publish_action_broadcast_export'] = new ConvertKit_Pre_Publish_Action_Broadcast_Export();
199 + $this->classes['plugin_sidebar_post_settings'] = new ConvertKit_Plugin_Sidebar_Post_Settings();
200 + $this->classes['broadcasts_exporter'] = new ConvertKit_Broadcasts_Exporter();
201 + $this->classes['broadcasts_importer'] = new ConvertKit_Broadcasts_Importer();
202 + $this->classes['elementor'] = new ConvertKit_Elementor();
203 + $this->classes['gutenberg'] = new ConvertKit_Gutenberg();
204 + $this->classes['media_library'] = new ConvertKit_Media_Library();
205 + $this->classes['output_restrict_content'] = new ConvertKit_Output_Restrict_Content();
206 + $this->classes['review_request'] = new ConvertKit_Review_Request( 'Kit', 'convertkit', CONVERTKIT_PLUGIN_PATH );
207 + $this->classes['preview_output'] = new ConvertKit_Preview_Output();
208 + $this->classes['setup'] = new ConvertKit_Setup();
209 + $this->classes['shortcodes'] = new ConvertKit_Shortcodes();
181 210
182 - // Run the setup's update process on WordPress' init hook.
183 - // Doing this sooner may result in errors with WordPress functions that are not yet
184 - // available to the update routine.
185 - add_action( 'init', array( $this, 'update' ) );
186 -
187 211 /**
188 212 * Initialize integration classes for the frontend web site.
189 213 *
190 214 * @since 1.9.6
@@ -193,16 +217,17 @@
193 217
194 218 }
195 219
196 220 /**
197 - * Runs the Plugin's update routine, which checks if
221 + * Runs the Plugin's initialization and update routines, which checks if
198 222 * the Plugin has just been updated to a newer version,
199 223 * and if so runs any specific processes that might be needed.
200 224 *
201 225 * @since 1.9.7.4
202 226 */
203 - public function update() {
227 + public function setup() {
204 228
229 + $this->get_class( 'setup' )->initialize();
205 230 $this->get_class( 'setup' )->update();
206 231
207 232 }
208 233
@@ -222,15 +247,15 @@
222 247 }
223 248
224 249 // Pro.
225 250 if ( array_key_exists( 'REQUEST_URI', $_SERVER ) ) {
226 - if ( strpos( sanitize_text_field( $_SERVER['REQUEST_URI'] ), '/pro/' ) !== false ) {
251 + if ( strpos( sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ), '/pro/' ) !== false ) {
227 252 return true;
228 253 }
229 - if ( strpos( sanitize_text_field( $_SERVER['REQUEST_URI'] ), '/x/' ) !== false ) {
254 + if ( strpos( sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ), '/x/' ) !== false ) {
230 255 return true;
231 256 }
232 - if ( strpos( sanitize_text_field( $_SERVER['REQUEST_URI'] ), 'cornerstone-endpoint' ) !== false ) {
257 + if ( strpos( sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ), 'cornerstone-endpoint' ) !== false ) {
233 258 return true;
234 259 }
235 260 }
236 261
@@ -262,9 +287,9 @@
262 287 return true;
263 288 }
264 289
265 290 // Elementor.
266 - if ( array_key_exists( 'action', $_REQUEST ) && sanitize_text_field( $_REQUEST['action'] ) === 'elementor' ) {
291 + if ( array_key_exists( 'action', $_REQUEST ) && sanitize_text_field( wp_unslash( $_REQUEST['action'] ) ) === 'elementor' ) {
267 292 return true;
268 293 }
269 294
270 295 // Kallyas.
@@ -292,9 +317,9 @@
292 317 return true;
293 318 }
294 319
295 320 // Zion Builder.
296 - if ( array_key_exists( 'action', $_REQUEST ) && sanitize_text_field( $_REQUEST['action'] ) === 'zion_builder_active' ) {
321 + if ( array_key_exists( 'action', $_REQUEST ) && sanitize_text_field( wp_unslash( $_REQUEST['action'] ) ) === 'zion_builder_active' ) {
297 322 return true;
298 323 }
299 324
300 325 // Assume we're not in the Administration interface.
@@ -346,34 +371,13 @@
346 371 * @return bool Is WP CRON Request
347 372 */
348 373 public function is_cron() {
349 374
350 - if ( ! defined( 'DOING_CRON' ) ) {
351 - return false;
352 - }
353 - if ( ! DOING_CRON ) {
354 - return false;
355 - }
375 + return wp_doing_cron();
356 376
357 - return true;
358 -
359 377 }
360 378
361 379 /**
362 - * Loads the plugin's translated strings, if available.
363 - *
364 - * @since 1.0.0
365 - */
366 - public function load_language_files() {
367 -
368 - // If the .mo file for a given language is available in WP_LANG_DIR/convertkit
369 - // i.e. it's available as a translation at https://translate.wordpress.org/projects/wp-plugins/convertkit/,
370 - // it will be used instead of the .mo file in convertkit/languages.
371 - load_plugin_textdomain( 'convertkit', false, 'convertkit/languages' );
372 -
373 - }
374 -
375 - /**
376 380 * Returns the given class
377 381 *
378 382 * @since 1.9.6
379 383 *
@@ -389,9 +393,9 @@
389 393 $error = new WP_Error(
390 394 'convertkit_get_class',
391 395 sprintf(
392 396 /* translators: %1$s: PHP class name */
393 - __( 'ConvertKit Error: Could not load Plugin class <strong>%1$s</strong>', 'convertkit' ),
397 + __( 'Kit Error: Could not load Plugin class <strong>%1$s</strong>', 'convertkit' ),
394 398 $name
395 399 )
396 400 );
397 401
@@ -399,9 +403,9 @@
399 403 // Admin UI.
400 404 if ( is_admin() ) {
401 405 wp_die(
402 406 esc_attr( $error->get_error_message() ),
403 - esc_html__( 'ConvertKit Error', 'convertkit' ),
407 + esc_html__( 'Kit Error', 'convertkit' ),
404 408 array(
405 409 'back_link' => true,
406 410 )
407 411 );