*/
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()
{
?>