| @@ -1,238 +1,243 @@ | ||
| 1 | 1 | <?php |
| 2 | -/** | |
| 3 | - * Kit (formerly ConvertKit) WordPress Plugin. | |
| 4 | - * | |
| 5 | - * @package ConvertKit | |
| 6 | - * @author ConvertKit | |
| 7 | - * | |
| 8 | - * @wordpress-plugin | |
| 9 | - * Plugin Name: Kit (formerly ConvertKit) | |
| 10 | - * Plugin URI: https://kit.com/ | |
| 11 | - * Description: Display Kit (formerly ConvertKit) email subscription forms, landing pages, products, broadcasts and more. | |
| 12 | - * Version: 3.4.2 | |
| 13 | - * Author: Kit | |
| 14 | - * Author URI: https://kit.com/ | |
| 15 | - * Text Domain: convertkit | |
| 16 | - * License: GPLv3 or later | |
| 17 | - * License URI: https://www.gnu.org/licenses/gpl-3.0.html | |
| 2 | +/* | |
| 3 | + Plugin Name: WP ConvertKit | |
| 4 | + Plugin URI: http://convertkit.com/ | |
| 5 | + Description: Quickly and easily integrate ConvertKit forms into your site. | |
| 6 | + Version: 1.3.8 | |
| 7 | + Author: ConvertKit | |
| 8 | + Author URI: http://convertkit.com/ | |
| 18 | 9 | */ |
| 19 | 10 | |
| 20 | -// Bail if Kit is already loaded. | |
| 21 | -if ( class_exists( 'WP_ConvertKit' ) ) { | |
| 22 | - return; | |
| 23 | -} | |
| 11 | +require_once plugin_dir_path( __FILE__ ) . "/lib/convertkit-api.php"; | |
| 12 | +require_once plugin_dir_path( __FILE__ ) . "/lib/integration/wishlist_member.php"; | |
| 24 | 13 | |
| 25 | -// Define Kit Plugin paths and version number. | |
| 26 | -define( 'CONVERTKIT_PLUGIN_NAME', 'ConvertKit' ); // Used for user-agent in API class. | |
| 27 | -define( 'CONVERTKIT_PLUGIN_FILE', plugin_basename( __FILE__ ) ); | |
| 28 | -define( 'CONVERTKIT_PLUGIN_URL', plugin_dir_url( __FILE__ ) ); | |
| 29 | -define( 'CONVERTKIT_PLUGIN_PATH', __DIR__ ); | |
| 30 | -define( 'CONVERTKIT_PLUGIN_VERSION', '3.4.2' ); | |
| 31 | -define( 'CONVERTKIT_OAUTH_CLIENT_ID', 'HXZlOCj-K5r0ufuWCtyoyo3f688VmMAYSsKg1eGvw0Y' ); | |
| 32 | -define( 'CONVERTKIT_OAUTH_CLIENT_REDIRECT_URI', 'https://app.kit.com/wordpress/redirect' ); | |
| 33 | -define( 'CONVERTKIT_MCP_APP_NAME', 'Kit WordPress Plugin: MCP Server' ); | |
| 14 | +if(!class_exists('WP_ConvertKit')) { | |
| 15 | + class WP_ConvertKit { | |
| 34 | 16 | |
| 35 | -// Load shared classes, if they have not been included by another Kit Plugin. | |
| 36 | -if ( ! trait_exists( 'ConvertKit_API_Traits' ) && ! trait_exists( 'ConvertKit_API\ConvertKit_API_Traits' ) ) { | |
| 37 | - require_once CONVERTKIT_PLUGIN_PATH . '/vendor/convertkit/convertkit-wordpress-libraries/src/class-convertkit-api-traits.php'; | |
| 38 | -} | |
| 39 | -if ( ! class_exists( 'ConvertKit_API_V4' ) ) { | |
| 40 | - require_once CONVERTKIT_PLUGIN_PATH . '/vendor/convertkit/convertkit-wordpress-libraries/src/class-convertkit-api-v4.php'; | |
| 41 | -} | |
| 42 | -if ( ! class_exists( 'ConvertKit_Log' ) ) { | |
| 43 | - require_once CONVERTKIT_PLUGIN_PATH . '/vendor/convertkit/convertkit-wordpress-libraries/src/class-convertkit-log.php'; | |
| 44 | -} | |
| 45 | -if ( ! class_exists( 'ConvertKit_Resource_V4' ) ) { | |
| 46 | - require_once CONVERTKIT_PLUGIN_PATH . '/vendor/convertkit/convertkit-wordpress-libraries/src/class-convertkit-resource-v4.php'; | |
| 47 | -} | |
| 48 | -if ( ! class_exists( 'ConvertKit_Review_Request' ) ) { | |
| 49 | - require_once CONVERTKIT_PLUGIN_PATH . '/vendor/convertkit/convertkit-wordpress-libraries/src/class-convertkit-review-request.php'; | |
| 50 | -} | |
| 17 | + // Plugin Version | |
| 18 | + const VERSION = '1.3.8'; | |
| 51 | 19 | |
| 52 | -// Load plugin files that are always required. | |
| 53 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/cron-functions.php'; | |
| 54 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/functions.php'; | |
| 55 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-wp-convertkit.php'; | |
| 56 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-admin-notices.php'; | |
| 57 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-broadcasts-exporter.php'; | |
| 58 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-broadcasts-importer.php'; | |
| 59 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-cache-plugins.php'; | |
| 60 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-cron.php'; | |
| 61 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-form-entries.php'; | |
| 62 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-gutenberg.php'; | |
| 63 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-html-parser.php'; | |
| 64 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-media-library.php'; | |
| 65 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-output.php'; | |
| 66 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-output-broadcasts.php'; | |
| 67 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-output-restrict-content.php'; | |
| 68 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-post.php'; | |
| 69 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-preview-output.php'; | |
| 70 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-cloudflare-turnstile.php'; | |
| 71 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-recaptcha.php'; | |
| 72 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-spam-protection.php'; | |
| 73 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-resource-account.php'; | |
| 74 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-resource-creator-network-recommendations.php'; | |
| 75 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-restrict-content-cache.php'; | |
| 76 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-resource-custom-fields.php'; | |
| 77 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-resource-forms.php'; | |
| 78 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-resource-landing-pages.php'; | |
| 79 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-resource-posts.php'; | |
| 80 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-resource-products.php'; | |
| 81 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-resource-sequences.php'; | |
| 82 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-resource-tags.php'; | |
| 83 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-settings.php'; | |
| 84 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-settings-broadcasts.php'; | |
| 85 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-settings-mcp.php'; | |
| 86 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-settings-restrict-content.php'; | |
| 87 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-setup.php'; | |
| 88 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-shortcodes.php'; | |
| 89 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-subscriber.php'; | |
| 90 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-term.php'; | |
| 91 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-user.php'; | |
| 92 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/class-convertkit-widgets.php'; | |
| 93 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/blocks/class-convertkit-block.php'; | |
| 94 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/blocks/class-convertkit-block-broadcasts.php'; | |
| 95 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/blocks/class-convertkit-block-content.php'; | |
| 96 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/blocks/class-convertkit-block-form-trigger.php'; | |
| 97 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/blocks/class-convertkit-block-form.php'; | |
| 98 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/blocks/class-convertkit-block-form-builder.php'; | |
| 99 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/blocks/class-convertkit-block-form-builder-field.php'; | |
| 100 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/blocks/class-convertkit-block-form-builder-field-email.php'; | |
| 101 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/blocks/class-convertkit-block-form-builder-field-name.php'; | |
| 102 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/blocks/class-convertkit-block-form-builder-field-custom.php'; | |
| 103 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/blocks/class-convertkit-block-product.php'; | |
| 104 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/blocks/helpers/class-convertkit-block-post-helper.php'; | |
| 105 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/blocks/helpers/class-convertkit-content-post-helper.php'; | |
| 106 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/blocks/helpers/class-convertkit-shortcode-post-helper.php'; | |
| 107 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/block-formatters/class-convertkit-block-formatter.php'; | |
| 108 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/block-formatters/class-convertkit-block-formatter-form-link.php'; | |
| 109 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/block-formatters/class-convertkit-block-formatter-product-link.php'; | |
| 110 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/class-convertkit-mcp-ability.php'; | |
| 111 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/class-convertkit-mcp-resource.php'; | |
| 112 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/class-convertkit-mcp-prompt.php'; | |
| 113 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/resources/class-convertkit-mcp-resource-list.php'; | |
| 114 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/resources/class-convertkit-mcp-resource-reference.php'; | |
| 115 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/resources/class-convertkit-mcp-resource-forms.php'; | |
| 116 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/resources/class-convertkit-mcp-resource-tags.php'; | |
| 117 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/resources/class-convertkit-mcp-resource-landing-pages.php'; | |
| 118 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/resources/class-convertkit-mcp-resource-products.php'; | |
| 119 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/resources/class-convertkit-mcp-resource-account.php'; | |
| 120 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/resources/class-convertkit-mcp-resource-settings.php'; | |
| 121 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/resources/class-convertkit-mcp-resource-overview.php'; | |
| 122 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/resources/class-convertkit-mcp-resource-forms-reference.php'; | |
| 123 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/resources/class-convertkit-mcp-resource-restrict-content-reference.php'; | |
| 124 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/resources/class-convertkit-mcp-resource-settings-reference.php'; | |
| 125 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/prompts/class-convertkit-mcp-prompt-setup.php'; | |
| 126 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/prompts/class-convertkit-mcp-prompt-add-form.php'; | |
| 127 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/prompts/class-convertkit-mcp-prompt-restrict-content.php'; | |
| 128 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/prompts/class-convertkit-mcp-prompt-configure-broadcasts-import.php'; | |
| 129 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/prompts/class-convertkit-mcp-prompt-audit.php'; | |
| 130 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/class-convertkit-mcp.php'; | |
| 131 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/content/class-convertkit-mcp-ability-content.php'; | |
| 132 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/content/class-convertkit-mcp-ability-content-list.php'; | |
| 133 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/content/class-convertkit-mcp-ability-content-insert.php'; | |
| 134 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/content/class-convertkit-mcp-ability-content-update.php'; | |
| 135 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/content/class-convertkit-mcp-ability-content-delete.php'; | |
| 136 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/resources/class-convertkit-mcp-ability-resource.php'; | |
| 137 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/resources/class-convertkit-mcp-ability-resource-forms.php'; | |
| 138 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/resources/class-convertkit-mcp-ability-resource-tags.php'; | |
| 139 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/resources/class-convertkit-mcp-ability-resource-landing-pages.php'; | |
| 140 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/resources/class-convertkit-mcp-ability-resource-products.php'; | |
| 141 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/settings/class-convertkit-mcp-ability-settings.php'; | |
| 142 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/settings/class-convertkit-mcp-ability-settings-get.php'; | |
| 143 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/settings/class-convertkit-mcp-ability-settings-update.php'; | |
| 144 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/post-settings/class-convertkit-mcp-ability-post-settings.php'; | |
| 145 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/post-settings/class-convertkit-mcp-ability-post-settings-get.php'; | |
| 146 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/post-settings/class-convertkit-mcp-ability-post-settings-update.php'; | |
| 147 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/category-settings/class-convertkit-mcp-ability-category-settings.php'; | |
| 148 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/category-settings/class-convertkit-mcp-ability-category-settings-get.php'; | |
| 149 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/mcp/abilities/category-settings/class-convertkit-mcp-ability-category-settings-update.php'; | |
| 150 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/plugin-sidebars/class-convertkit-plugin-sidebar.php'; | |
| 151 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/plugin-sidebars/class-convertkit-plugin-sidebar-post-settings.php'; | |
| 152 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/pre-publish-actions/class-convertkit-pre-publish-action.php'; | |
| 153 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/pre-publish-actions/class-convertkit-pre-publish-action-broadcast-export.php'; | |
| 154 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/widgets/class-ck-widget-form.php'; | |
| 20 | + // DB Keys | |
| 21 | + const POST_META_KEY = '_wp_convertkit_post_meta'; | |
| 22 | + const SETTINGS_NAME = '_wp_convertkit_settings'; | |
| 155 | 23 | |
| 156 | -// Admin classes. | |
| 157 | -require_once CONVERTKIT_PLUGIN_PATH . '/admin/class-convertkit-admin-bulk-edit.php'; | |
| 158 | -require_once CONVERTKIT_PLUGIN_PATH . '/admin/class-convertkit-admin-quick-edit.php'; | |
| 159 | -require_once CONVERTKIT_PLUGIN_PATH . '/admin/class-convertkit-admin-cache-plugins.php'; | |
| 160 | -require_once CONVERTKIT_PLUGIN_PATH . '/admin/class-convertkit-admin-category.php'; | |
| 161 | -require_once CONVERTKIT_PLUGIN_PATH . '/admin/class-convertkit-admin-landing-page.php'; | |
| 162 | -require_once CONVERTKIT_PLUGIN_PATH . '/admin/class-convertkit-admin-legacy-resource-notice.php'; | |
| 163 | -require_once CONVERTKIT_PLUGIN_PATH . '/admin/class-convertkit-admin-post.php'; | |
| 164 | -require_once CONVERTKIT_PLUGIN_PATH . '/admin/class-convertkit-admin-refresh-resources.php'; | |
| 165 | -require_once CONVERTKIT_PLUGIN_PATH . '/admin/class-convertkit-admin-restrict-content.php'; | |
| 166 | -require_once CONVERTKIT_PLUGIN_PATH . '/admin/class-convertkit-admin-settings.php'; | |
| 167 | -require_once CONVERTKIT_PLUGIN_PATH . '/admin/class-convertkit-admin-tinymce.php'; | |
| 168 | -require_once CONVERTKIT_PLUGIN_PATH . '/admin/class-convertkit-admin-setup-wizard.php'; | |
| 169 | -require_once CONVERTKIT_PLUGIN_PATH . '/admin/class-convertkit-wp-list-table.php'; | |
| 170 | -require_once CONVERTKIT_PLUGIN_PATH . '/admin/importers/class-convertkit-admin-importer.php'; | |
| 171 | -require_once CONVERTKIT_PLUGIN_PATH . '/admin/importers/class-convertkit-admin-importer-activecampaign.php'; | |
| 172 | -require_once CONVERTKIT_PLUGIN_PATH . '/admin/importers/class-convertkit-admin-importer-aweber.php'; | |
| 173 | -require_once CONVERTKIT_PLUGIN_PATH . '/admin/importers/class-convertkit-admin-importer-campaignmonitor.php'; | |
| 174 | -require_once CONVERTKIT_PLUGIN_PATH . '/admin/importers/class-convertkit-admin-importer-convertkit-legacy-forms.php'; | |
| 175 | -require_once CONVERTKIT_PLUGIN_PATH . '/admin/importers/class-convertkit-admin-importer-mc4wp.php'; | |
| 176 | -require_once CONVERTKIT_PLUGIN_PATH . '/admin/importers/class-convertkit-admin-importer-mailpoet.php'; | |
| 177 | -require_once CONVERTKIT_PLUGIN_PATH . '/admin/importers/class-convertkit-admin-importer-newsletter.php'; | |
| 178 | -require_once CONVERTKIT_PLUGIN_PATH . '/admin/section/class-convertkit-admin-section-base.php'; | |
| 179 | -require_once CONVERTKIT_PLUGIN_PATH . '/admin/section/class-convertkit-admin-section-broadcasts.php'; | |
| 180 | -require_once CONVERTKIT_PLUGIN_PATH . '/admin/section/class-convertkit-admin-section-form-entries.php'; | |
| 181 | -require_once CONVERTKIT_PLUGIN_PATH . '/admin/section/class-convertkit-admin-section-general.php'; | |
| 182 | -require_once CONVERTKIT_PLUGIN_PATH . '/admin/section/class-convertkit-admin-section-mcp.php'; | |
| 183 | -require_once CONVERTKIT_PLUGIN_PATH . '/admin/section/class-convertkit-admin-section-oauth.php'; | |
| 184 | -require_once CONVERTKIT_PLUGIN_PATH . '/admin/section/class-convertkit-admin-section-restrict-content.php'; | |
| 185 | -require_once CONVERTKIT_PLUGIN_PATH . '/admin/section/class-convertkit-admin-section-tools.php'; | |
| 186 | -require_once CONVERTKIT_PLUGIN_PATH . '/admin/setup-wizard/class-convertkit-admin-setup-wizard-plugin.php'; | |
| 187 | -require_once CONVERTKIT_PLUGIN_PATH . '/admin/setup-wizard/class-convertkit-admin-setup-wizard-landing-page.php'; | |
| 188 | -require_once CONVERTKIT_PLUGIN_PATH . '/admin/setup-wizard/class-convertkit-admin-setup-wizard-restrict-content.php'; | |
| 24 | + // Page Slugs | |
| 25 | + const SETTINGS_PAGE_SLUG = '_wp_convertkit_settings'; | |
| 189 | 26 | |
| 190 | -// Contact Form 7 Integration. | |
| 191 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/integrations/contactform7/class-convertkit-contactform7-admin-section.php'; | |
| 192 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/integrations/contactform7/class-convertkit-contactform7.php'; | |
| 193 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/integrations/contactform7/class-convertkit-contactform7-settings.php'; | |
| 27 | + private static $api; | |
| 194 | 28 | |
| 195 | -// Divi Integration. | |
| 196 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/integrations/divi/class-convertkit-divi.php'; | |
| 29 | + // Data Caching | |
| 30 | + private static $cache_period = 0; | |
| 31 | + private static $meta_defaults = null; | |
| 32 | + private static $settings_defaults = array( | |
| 33 | + 'api_key' => '', | |
| 34 | + 'default_form' => 0, | |
| 35 | + ); | |
| 197 | 36 | |
| 198 | -// Elementor Integration. | |
| 199 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/integrations/elementor/class-convertkit-elementor.php'; | |
| 37 | + private static $forms_markup = array(); | |
| 38 | + private static $landing_pages_markup = array(); | |
| 200 | 39 | |
| 201 | -// Forminator Integration. | |
| 202 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/integrations/forminator/class-convertkit-forminator-admin-section.php'; | |
| 203 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/integrations/forminator/class-convertkit-forminator.php'; | |
| 204 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/integrations/forminator/class-convertkit-forminator-settings.php'; | |
| 40 | + public static function init() { | |
| 41 | + self::add_actions(); | |
| 42 | + self::add_filters(); | |
| 43 | + self::register_shortcodes(); | |
| 205 | 44 | |
| 206 | -// Impeka Integration. | |
| 207 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/integrations/class-convertkit-impeka.php'; | |
| 45 | + self::$cache_period = MINUTE_IN_SECONDS * 10; | |
| 208 | 46 | |
| 209 | -// Uncode Integration. | |
| 210 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/integrations/class-convertkit-uncode.php'; | |
| 47 | + self::_api_connect(); | |
| 48 | + } | |
| 211 | 49 | |
| 212 | -// WishList Member Integration. | |
| 213 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/integrations/wishlist/class-convertkit-wishlist-admin-section.php'; | |
| 214 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/integrations/wishlist/class-convertkit-wishlist.php'; | |
| 215 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/integrations/wishlist/class-convertkit-wishlist-settings.php'; | |
| 50 | + private static function add_actions() { | |
| 51 | + if(is_admin()) { | |
| 52 | + add_action('add_meta_boxes_page', array(__CLASS__, 'add_meta_boxes')); | |
| 53 | + add_action('add_meta_boxes_post', array(__CLASS__, 'add_meta_boxes')); | |
| 54 | + } else { | |
| 55 | + add_action('template_redirect', array(__CLASS__, 'page_takeover')); | |
| 56 | + } | |
| 216 | 57 | |
| 217 | -// WooCommerce Integration. | |
| 218 | -require_once CONVERTKIT_PLUGIN_PATH . '/includes/integrations/woocommerce/class-convertkit-woocommerce-product-form.php'; | |
| 58 | + add_action('save_post', array(__CLASS__, 'save_post_meta'), 10, 2); | |
| 59 | + } | |
| 219 | 60 | |
| 220 | -// Register Plugin activation and deactivation functions. | |
| 221 | -register_activation_hook( __FILE__, 'convertkit_plugin_activate' ); | |
| 222 | -add_action( 'wp_insert_site', 'convertkit_plugin_activate_new_site' ); | |
| 223 | -add_action( 'activate_blog', 'convertkit_plugin_activate_new_site' ); | |
| 224 | -register_deactivation_hook( __FILE__, 'convertkit_plugin_deactivate' ); | |
| 61 | + private static function add_filters() { | |
| 62 | + if(!is_admin()) { | |
| 63 | + add_filter('the_content', array(__CLASS__, 'append_form')); | |
| 64 | + } | |
| 225 | 65 | |
| 226 | -/** | |
| 227 | - * Main function to return Plugin instance. | |
| 228 | - * | |
| 229 | - * @since 1.9.6 | |
| 230 | - */ | |
| 231 | -function WP_ConvertKit() { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName | |
| 66 | + add_filter('plugin_action_links_' . plugin_basename(__FILE__), array(__CLASS__, 'add_settings_page_link')); | |
| 67 | + } | |
| 232 | 68 | |
| 233 | - return WP_ConvertKit::get_instance(); | |
| 69 | + private static function register_shortcodes() { | |
| 70 | + add_shortcode('convertkit', array(__CLASS__, 'shortcode')); | |
| 71 | + } | |
| 234 | 72 | |
| 73 | + // Callbacks | |
| 74 | + | |
| 75 | + /// Settings Related | |
| 76 | + | |
| 77 | + public static function add_settings_page_link($links) { | |
| 78 | + $settings_link = sprintf('<a href="%s">%s</a>', self::_get_settings_page_link(), __('Settings')); | |
| 79 | + | |
| 80 | + return array('settings' => $settings_link) + $links; | |
| 81 | + } | |
| 82 | + | |
| 83 | + /// Page / Post Editing | |
| 84 | + | |
| 85 | + public static function add_meta_boxes($post) { | |
| 86 | + $forms = self::$api->get_resources('forms'); | |
| 87 | + $landing_pages = self::$api->get_resources('landing_pages'); | |
| 88 | + | |
| 89 | + if(!empty($forms) || ('page' === $post->post_type && !empty($landing_pages))) { | |
| 90 | + add_meta_box('wp-convertkit-meta-box', __('ConvertKit'), array(__CLASS__, 'display_meta_box'), $post->post_type, 'normal'); | |
| 91 | + } | |
| 92 | + } | |
| 93 | + | |
| 94 | + public static function display_meta_box($post) { | |
| 95 | + $forms = self::$api->get_resources('forms'); | |
| 96 | + $landing_pages = self::$api->get_resources('landing_pages'); | |
| 97 | + | |
| 98 | + $meta = self::_get_meta($post->ID); | |
| 99 | + $settings_link = self::_get_settings_page_link(); | |
| 100 | + | |
| 101 | + include('views/backend/meta-boxes/meta-box.php'); | |
| 102 | + } | |
| 103 | + | |
| 104 | + public static function save_post_meta($post_id, $post) { | |
| 105 | + $data = stripslashes_deep($_POST); | |
| 106 | + if(wp_is_post_autosave($post_id) || wp_is_post_revision($post_id) || !isset($data['wp-convertkit-save-meta-nonce']) || !wp_verify_nonce($data['wp-convertkit-save-meta-nonce'], 'wp-convertkit-save-meta')) { | |
| 107 | + return; | |
| 108 | + } | |
| 109 | + | |
| 110 | + self::_set_meta($post_id, $data['wp-convertkit']); | |
| 111 | + } | |
| 112 | + | |
| 113 | + /// Page / Post Display | |
| 114 | + | |
| 115 | + public static function append_form($content) { | |
| 116 | + if(is_singular(array('post')) || is_page()) { | |
| 117 | + $content .= wp_convertkit_get_form_embed(self::_get_meta(get_the_ID())); | |
| 118 | + } | |
| 119 | + | |
| 120 | + return $content; | |
| 121 | + } | |
| 122 | + | |
| 123 | + public static function page_takeover() { | |
| 124 | + $queried_object = get_queried_object(); | |
| 125 | + if(isset($queried_object->post_type) && 'page' === $queried_object->post_type && ($landing_page_url = self::_get_meta($queried_object->ID, 'landing_page'))) { | |
| 126 | + $landing_page = self::$api->get_resource($landing_page_url); | |
| 127 | + | |
| 128 | + if(!empty($landing_page)) { | |
| 129 | + echo $landing_page; | |
| 130 | + exit; | |
| 131 | + } | |
| 132 | + } | |
| 133 | + | |
| 134 | + } | |
| 135 | + | |
| 136 | + /// Shortcodes | |
| 137 | + | |
| 138 | + public static function shortcode($attributes, $content = null) { | |
| 139 | + return wp_convertkit_get_form_embed($attributes); | |
| 140 | + } | |
| 141 | + | |
| 142 | + // Data Retrieval | |
| 143 | + | |
| 144 | + /// Page / Post Meta Data | |
| 145 | + | |
| 146 | + private static function _get_meta_defaults() { | |
| 147 | + if(is_null(self::$meta_defaults)) { | |
| 148 | + self::$meta_defaults = array( | |
| 149 | + 'form' => -1, | |
| 150 | + 'landing_page' => '', | |
| 151 | + ); | |
| 152 | + } | |
| 153 | + | |
| 154 | + return self::$meta_defaults; | |
| 155 | + } | |
| 156 | + | |
| 157 | + private static function _get_meta($post_id, $meta_key = null) { | |
| 158 | + $post_id = empty($post_id) ? get_the_ID() : $post_id; | |
| 159 | + | |
| 160 | + $meta = get_post_meta($post_id, self::POST_META_KEY, true); | |
| 161 | + $meta_defaults = self::_get_meta_defaults(); | |
| 162 | + | |
| 163 | + if(empty($meta)) { | |
| 164 | + $meta = $meta_defaults; | |
| 165 | + | |
| 166 | + $old_value = intval(get_post_meta($post_id, '_convertkit_convertkit_form', true)); | |
| 167 | + if(0 !== $old_value) { | |
| 168 | + $meta['form'] = $old_value; | |
| 169 | + } | |
| 170 | + } | |
| 171 | + | |
| 172 | + $meta = shortcode_atts($meta_defaults, $meta); | |
| 173 | + | |
| 174 | + return is_null($meta_key) ? $meta : (isset($meta[$meta_key]) ? $meta[$meta_key] : false); | |
| 175 | + } | |
| 176 | + | |
| 177 | + private static function _set_meta($post_id, $meta) { | |
| 178 | + $post_id = empty($post_id) ? get_the_ID() : $post_id; | |
| 179 | + | |
| 180 | + update_post_meta($post_id, self::POST_META_KEY, $meta); | |
| 181 | + | |
| 182 | + return $meta; | |
| 183 | + } | |
| 184 | + | |
| 185 | + /// Settings | |
| 186 | + | |
| 187 | + private static function _get_settings($settings_key = null) { | |
| 188 | + $settings = get_option(self::SETTINGS_NAME, self::$settings_defaults); | |
| 189 | + | |
| 190 | + return is_null($settings_key) ? $settings : (isset($settings[$settings_key]) ? $settings[$settings_key] : null); | |
| 191 | + } | |
| 192 | + | |
| 193 | + /// API | |
| 194 | + | |
| 195 | + private static function _api_connect() { | |
| 196 | + $api_key = self::_get_settings('api_key'); | |
| 197 | + | |
| 198 | + self::$api = new ConvertKitAPI($api_key); | |
| 199 | + } | |
| 200 | + | |
| 201 | + // Links | |
| 202 | + | |
| 203 | + private static function _get_settings_page_link($query_args = array()) { | |
| 204 | + $query_args = array('page' => self::SETTINGS_PAGE_SLUG) + $query_args; | |
| 205 | + | |
| 206 | + return add_query_arg($query_args, admin_url('options-general.php')); | |
| 207 | + } | |
| 208 | + | |
| 209 | + // Template Tags | |
| 210 | + | |
| 211 | + public static function get_form_embed($attributes) { | |
| 212 | + $attributes = shortcode_atts(array( | |
| 213 | + 'form' => -1, | |
| 214 | + ), $attributes); | |
| 215 | + | |
| 216 | + extract($attributes); | |
| 217 | + | |
| 218 | + $form_id = intval(($form < 0) ? self::_get_settings('default_form') : $form); | |
| 219 | + $form = false; | |
| 220 | + | |
| 221 | + if ($form_id == 0) { | |
| 222 | + return ""; | |
| 223 | + } | |
| 224 | + | |
| 225 | + $forms_available = self::$api->get_resources('forms'); | |
| 226 | + foreach($forms_available as $form_available) { | |
| 227 | + if($form_available['id'] == $form_id) { | |
| 228 | + $form = $form_available; | |
| 229 | + break; | |
| 230 | + } | |
| 231 | + } | |
| 232 | + | |
| 233 | + $form_markup = self::$api->get_resource($form['embed']); | |
| 234 | + | |
| 235 | + return $form_markup; | |
| 236 | + } | |
| 237 | + } | |
| 238 | + | |
| 239 | + require_once('lib/template-tags.php'); | |
| 240 | + WP_ConvertKit::init(); | |
| 235 | 241 | } |
| 236 | 242 | |
| 237 | -// Finally, initialize the Plugin. | |
| 238 | -WP_ConvertKit(); | |
| 243 | +include 'admin/settings.php'; | |