*/ use MailPoet\Models\Segment; if(!class_exists('MailPoet_CF7_Integration')){ class MailPoet_CF7_Integration { /** * Initialize the class */ public static function init() { $_this_class = new self; return $_this_class; } /** * Constructor */ public function __construct() { // CF7 init add_action('wpcf7_init', array($this, 'cf7_init')); // Admin init add_action('admin_init', array($this, 'admin_init'), 20); // Form validation add_filter( 'wpcf7_validate_mailpoetsignup', array($this, 'mailpoetsignup_validation'), 10, 2 ); add_filter( 'wpcf7_validate_mailpoetsignup*', array($this, 'mailpoetsignup_validation'), 10, 2 ); // message add_filter( 'wpcf7_messages', array($this,'mailpoet_unsubscribed_msg') ); }//End of __construct /** * Contact Form 7 init */ public function cf7_init() { //Add Mailpoet Signup tag wpcf7_add_form_tag( array('mailpoetsignup', 'mailpoetsignup*'), array($this, 'mailpoet_signup_form_tag'), array('name-attr' => true) ); }//End of cf7_init /** * HTML Output of Subscribe checkbox */ public function mailpoet_signup_form_tag($tag) { // Non AJAX Validation error $validation_error = wpcf7_get_validation_error($tag->name); $class = ''; //Form control span class $controls_class = wpcf7_form_controls_class($tag->type); // if there were errors, add class if( $validation_error ) $class .= ' wpcf7-not-valid'; //Checkbox Label $label = empty($tag->values) ? $this->__('Sign up for the newsletter') : array_shift($tag->values); //id attribute $id_option = $tag->get_id_option(); $id = empty($id_option) ? $tag->name : $id_option; //Array of list id $list_array = $tag->get_option('list', 'int'); $mp_segments = $this->mailpoet_segments_data( $list_array ); //Make ready all attributes $atts = array( 'class' => $tag->get_class_option($class), 'id' => $id, 'name' => $tag->name.'[]' ); if ( !$tag->has_option('subscriber-choice') ){ $atts['value'] = ($list_array) ? implode($list_array, ',') : '0'; } $attributes = wpcf7_format_atts($atts); ob_start(); //Start buffer to return ?> 1 && $tag->has_option('subscriber-choice') ): ?> $value ): ?> has_option('unsubscribe-email') ): ?>
has_option('unsubscribe-email') ): ?>
has_option('label-inside-span') //Return all HTML output return ob_get_clean(); }//End of mailpoet_signup_form_tag /** * Translate text */ public function __($text) { return __($text, 'add-on-contact-form-7-mailpoet'); }//End of __ /** * Convert mailpoet list ids to list name; */ public function mailpoet_segments_data( $list_ids ){ if ( empty($list_ids) || !is_array($list_ids) ){ return []; } $segments = Segment::where_not_equal('type', Segment::TYPE_WP_USERS)->findArray(); $ret = array(); foreach ($list_ids as $key => $value) { $seg_key = array_search( $value, array_column($segments, 'id') ); $ret[$value] = $segments[$seg_key]['name']; } return $ret; } // End of mailpoet_segments_data /** * Admin init */ public function admin_init() { //Add Tag generator button if(!class_exists('WPCF7_TagGenerator')) return; $tag_generator = WPCF7_TagGenerator::get_instance(); $tag_generator->add( 'mailpoetsignup', $this->__('Mailpoet Signup'), array($this, 'mailpoetsignup_tag_generator') ); }//End of admin_init /** * Tag Generator */ public function mailpoetsignup_tag_generator() { ?>
__('Mailpoet Signup Form.'); ?>
__('MailPoet Lists'); ?> findArray(); if(is_array($sagments)): foreach($sagments as $sagment): ?>

'Message to display after a subscriber being unsubscribed', 'default' => 'You are unsubscribed!' ); return $msg; } /** * Form validation * Validate for checkbox */ public function mailpoetsignup_validation( $result, $tag ) { $type = $tag->type; $name = $tag->name; $value = isset( $_POST[$name] ) ? (array) $_POST[$name] : array(); if ( $tag->is_required() && empty( $value ) ) { $result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) ); } return $result; }//End of mailpoetsignup_validation }//End of class /** * Instentiate core class */ MailPoet_CF7_Integration::init(); }//End if