Пример #1
0
/**
* 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();
 }