/** * Loads the MailChimp for WP plugin files * * @return boolean True if the plugin files were loaded, false otherwise. */ function mc4wp_load_plugin() { // don't load plugin if user has the premium version installed and activated if (defined('MC4WP_VERSION')) { return false; } // bootstrap the lite plugin define('MC4WP_LITE_VERSION', '2.3.15'); define('MC4WP_LITE_PLUGIN_DIR', dirname(__FILE__) . '/'); define('MC4WP_LITE_PLUGIN_URL', plugins_url('/', __FILE__)); define('MC4WP_LITE_PLUGIN_FILE', __FILE__); require_once MC4WP_LITE_PLUGIN_DIR . 'vendor/autoload_52.php'; require_once MC4WP_LITE_PLUGIN_DIR . 'includes/functions/general.php'; require_once MC4WP_LITE_PLUGIN_DIR . 'includes/functions/template.php'; // Initialize admin section of plugin if (is_admin() && (!defined('DOING_AJAX') || !DOING_AJAX)) { new MC4WP_Lite_Admin(); } // Initialize the plugin and store an instance in the global scope MC4WP_Lite::init(); $GLOBALS['mc4wp'] = MC4WP_Lite::instance(); // Doing cron? if (defined('DOING_CRON') && DOING_CRON) { MC4WP_Usage_Tracking::instance()->add_hooks(); } return true; }
/** * @return MC4WP_Usage_Tracking */ public static function instance() { if (!self::$instance instanceof MC4WP_Usage_Tracking) { self::$instance = new MC4WP_Usage_Tracking(); } return self::$instance; }
/** * Reschedule usage tracking (using the new interval) */ protected function reschedule_usage_tracking() { $options = get_option('mc4wp_lite', array()); if (isset($options['allow_usage_tracking']) && $options['allow_usage_tracking']) { $usage_tracking = MC4WP_Usage_Tracking::instance(); $usage_tracking->disable(); $usage_tracking->enable(); } }
/** * Bootstrap the MailChimp for WordPress plugin * * @ignore * @access private * @return bool */ function _mc4wp_load_plugin() { global $mc4wp; // Don't run if MailChimp for WP Pro 2.x is activated if (defined('MC4WP_VERSION')) { return false; } // bootstrap the core plugin define('MC4WP_VERSION', '4.0.9'); define('MC4WP_PLUGIN_DIR', dirname(__FILE__) . '/'); define('MC4WP_PLUGIN_URL', plugins_url('/', __FILE__)); define('MC4WP_PLUGIN_FILE', __FILE__); // load autoloader if function not yet exists (for compat with sitewide autoloader) if (!function_exists('mc4wp')) { require_once MC4WP_PLUGIN_DIR . 'vendor/autoload_52.php'; } /** * @global MC4WP_Container $GLOBALS['mc4wp'] * @name $mc4wp */ $mc4wp = mc4wp(); $mc4wp['api'] = 'mc4wp_get_api_v3'; $mc4wp['request'] = array('MC4WP_Request', 'create_from_globals'); $mc4wp['log'] = 'mc4wp_get_debug_log'; // forms $mc4wp['forms'] = new MC4WP_Form_Manager(); $mc4wp['forms']->add_hooks(); // integration core $mc4wp['integrations'] = new MC4WP_Integration_Manager(); $mc4wp['integrations']->add_hooks(); // bootstrap custom integrations require_once MC4WP_PLUGIN_DIR . 'integrations/bootstrap.php'; // Doing cron? Load Usage Tracking class. if (defined('DOING_CRON') && DOING_CRON) { MC4WP_Usage_Tracking::instance()->add_hooks(); } // Initialize admin section of plugin if (is_admin()) { $admin_tools = new MC4WP_Admin_Tools(); if (defined('DOING_AJAX') && DOING_AJAX) { $ajax = new MC4WP_Admin_Ajax($admin_tools); $ajax->add_hooks(); } else { $messages = new MC4WP_Admin_Messages(); $mc4wp['admin.messages'] = $messages; $mailchimp = new MC4WP_MailChimp(); $admin = new MC4WP_Admin($admin_tools, $messages, $mailchimp); $admin->add_hooks(); $forms_admin = new MC4WP_Forms_Admin($messages, $mailchimp); $forms_admin->add_hooks(); $integrations_admin = new MC4WP_Integration_Admin($mc4wp['integrations'], $messages, $mailchimp); $integrations_admin->add_hooks(); } } return true; }
/** * Bootstrap the MailChimp for WordPress plugin * * @ignore * @access private * @return bool */ function __mc4wp_load_plugin() { global $mc4wp; // Don't run if MailChimp for WP Pro 2.x is activated if (defined('MC4WP_VERSION')) { return false; } // bootstrap the core plugin define('MC4WP_VERSION', '3.0.11-dev'); define('MC4WP_PLUGIN_DIR', dirname(__FILE__) . '/'); define('MC4WP_PLUGIN_URL', plugins_url('/', __FILE__)); define('MC4WP_PLUGIN_FILE', __FILE__); // load autoloader require_once MC4WP_PLUGIN_DIR . 'vendor/autoload_52.php'; /** * @global MC4WP_Container $GLOBALS['mc4wp'] * @name $mc4wp */ $mc4wp = mc4wp(); $mc4wp['api'] = 'mc4wp_get_api'; $mc4wp['request'] = array('MC4WP_Request', 'create_from_globals'); // forms $mc4wp['forms'] = new MC4WP_Form_Manager(); $mc4wp['forms']->add_hooks(); // integration core $mc4wp['integrations'] = new MC4WP_Integration_Manager(); $mc4wp['integrations']->add_hooks(); // visitor tracking $mc4wp['tracking'] = new MC4WP_Visitor_Tracking(); $mc4wp['tracking']->add_hooks(); // bootstrap custom integrations require_once MC4WP_PLUGIN_DIR . 'integrations/bootstrap.php'; // Doing cron? Load Usage Tracking class. if (defined('DOING_CRON') && DOING_CRON) { MC4WP_Usage_Tracking::instance()->add_hooks(); } // Initialize admin section of plugin if (is_admin() && (!defined('DOING_AJAX') || !DOING_AJAX)) { $messages = new MC4WP_Admin_Messages(); $mailchimp = new MC4WP_MailChimp(); $admin = new MC4WP_Admin($messages, $mailchimp); $admin->add_hooks(); $forms_admin = new MC4WP_Forms_Admin($messages, $mailchimp); $forms_admin->add_hooks(); $integrations_admin = new MC4WP_Integration_Admin($mc4wp['integrations'], $messages, $mailchimp); $integrations_admin->add_hooks(); } return true; }
/** * Listen for uses of the form in the nag notice. */ public function listen() { if (!isset($_POST['mc4wp-usage-tracking-nag'])) { return; } if (!current_user_can($this->required_capability)) { return; } $allow = isset($_POST['allow']) ? (bool) $_POST['allow'] : false; if ($allow) { // update plugin options $options = (array) get_option('mc4wp_lite', array()); $options['allow_usage_tracking'] = 1; update_option('mc4wp_lite', $options); // toggle tracking MC4WP_Usage_Tracking::instance()->toggle(true); } // make sure notice never appears again update_option(self::OPTION_NAME, 1); $this->shown = 1; }
/** * Validates the General settings * @param array $settings * @return array */ public function save_general_settings(array $settings) { $current = mc4wp_get_options(); // merge with current settings to allow passing partial arrays to this method $settings = array_merge($current, $settings); // toggle usage tracking if ($settings['allow_usage_tracking'] !== $current['allow_usage_tracking']) { MC4WP_Usage_Tracking::instance()->toggle($settings['allow_usage_tracking']); } // Make sure not to use obfuscated key if (strpos($settings['api_key'], '*') !== false) { $settings['api_key'] = $current['api_key']; } // Sanitize API key $settings['api_key'] = sanitize_text_field($settings['api_key']); // if API key changed, empty MailChimp cache if ($settings['api_key'] !== $current['api_key']) { $this->mailchimp->empty_cache(); } /** * Runs right before general settings are saved. * * @param array $settings The updated settings array * @param array $current The old settings array */ do_action('mc4wp_save_settings', $settings, $current); return $settings; }
/** * Validates the General settings * @param array $settings * @return array */ public function save_general_settings(array $settings) { $current = mc4wp_get_options(); // Toggle usage tracking if (isset($settings['allow_usage_tracking'])) { MC4WP_Usage_Tracking::instance()->toggle((bool) $settings['allow_usage_tracking']); } // Sanitize API key & empty cache when API key changed if (isset($settings['api_key'])) { $settings['api_key'] = sanitize_text_field($settings['api_key']); if ($settings['api_key'] !== $current['api_key']) { $this->mailchimp->empty_cache(); } } return $settings; }
/** * Validates the General settings * * @param array $settings * @return array */ public function validate_settings(array $settings) { $current = mc4wp_get_options(); // Toggle usage tracking if (isset($settings['allow_usage_tracking'])) { MC4WP_Usage_Tracking::instance()->toggle((bool) $settings['allow_usage_tracking']); } // sanitize simple text fields (no HTML, just chars & numbers) $simple_text_fields = array('api_key', 'redirect', 'css'); foreach ($simple_text_fields as $field) { if (isset($settings[$field])) { $settings[$field] = sanitize_text_field($settings[$field]); } } // if api key changed, empty cache if (isset($settings['api_key']) && $settings['api_key'] !== $current['general']['api_key']) { $this->mailchimp->empty_cache(); } // validate woocommerce checkbox position if (isset($settings['woocommerce_position'])) { // make sure position is either 'order' or 'billing' if (!in_array($settings['woocommerce_position'], array('order', 'billing'))) { $settings['woocommerce_position'] = 'billing'; } } // dynamic sanitization foreach ($settings as $setting => $value) { // strip special tags from text settings if (substr($setting, 0, 5) === 'text_' || $setting === 'label') { $value = trim($value); $value = strip_tags($value, '<a><b><strong><em><i><br><u><script><span><abbr><strike>'); $settings[$setting] = $value; } } // strip <form> from form mark-up if (isset($settings['markup'])) { $settings['markup'] = preg_replace('/<\\/?form(.|\\s)*?>/i', '', $settings['markup']); } return $settings; }
/** * Listen for uses of the form in the nag notice. */ public function listen() { if (!isset($_POST['mc4wp-usage-tracking-nag'])) { return; } if (!current_user_can($this->required_capability)) { return; } $allow = isset($_POST['allow']) ? (bool) $_POST['allow'] : false; if ($allow) { // update plugin options $options = (array) get_option('mc4wp_lite', array()); $options['allow_usage_tracking'] = 1; update_option('mc4wp_lite', $options); // toggle tracking MC4WP_Usage_Tracking::instance()->toggle(true); } $this->disable(); }