content;
}
/**
*
* Tag generator
* Adds AC Repeater to the CF7 editor
*
*/
function acffr_add_tag_generator_acrepeater() {
if (class_exists('WPCF7_TagGenerator')) {
$tag_generator = WPCF7_TagGenerator::get_instance();
$tag_generator->add( 'acrepeater', __( 'AC Repeater', 'contact-form-7-repeater' ), array(__CLASS__,'acffr_tg_pane_acrepeater'));
} else if (function_exists('wpcf7_add_tag_generator')) {
wpcf7_add_tag_generator( 'acrepeater', __( 'AC Repeater', 'contact-form-7-repeater' ), array(__CLASS__,'wpcf7-tg-pane-ac_cf7_repeater'), array(__CLASS__,'acffr_tg_pane_acrepeater') );
}
}
function acffr_tg_pane_acrepeater($contact_form, $args = '') {
if (class_exists('WPCF7_TagGenerator')) {
$args = wp_parse_args( $args, array() );
$description = __( "Generate a form-tag that will repeat input fields %s", 'ac-cf7-form-field-repeater' );
$desc_link = ''.__( 'AC Form Field Repeater', 'ac-cf7-form-field-repeater' ).'';
?>
';
echo '<'.$tag_html_type.' id="'.$tag_id.'" '.implode(' ',$tag_html_data).' data-ac-repeater="'.$tag_id.'" class="acrepeater">';
}
else if ($form_part == '[/acrepeater]') {
echo ''.array_pop($stack).'>';
} else {
echo $form_part;
}
}
$properties['form'] = ob_get_clean();
}
return $properties;
}
/**
*
* Filter the post data
*
*/
function acffr_posted_data($posted_data){
//var_dump($posted_data);die();
//get the repeated group from the post array
$repeated_groups_data = json_decode(stripslashes($posted_data['_acffr_repeatable_groups']));
$this->repeated_groups_data = $repeated_groups_data;
//var_dump( $repeated_groups_data);die();
if (is_array($repeated_groups_data) && count($repeated_groups_data) > 0) {
foreach ($repeated_groups_data as $group) {
$this->repeated_groups[] = $posted_data[$group];
unset($posted_data[$group]);
// $this->repeated_fields = json_decode(stripslashes($posted_data['_acffr_repeatable_group_fields']));
// $repeated_fields = $this->repeated_fields;
// var_dump($repeated_fields);
// if (is_array($repeated_fields) && count($repeated_fields) > 0) {
// foreach ($repeated_fields as $field) {
// array_push($posted_data[$group], $posted_data[$field]);
// }
// }
}
}
return $posted_data;
}
/**
*
* Filter the mail comonents
*
*/
function acffr_mail_components($components){
//var_dump($this->repeated_groups);
$acffr_mail_raw = WPCF7_Mail::get_current();
$body = $acffr_mail_raw->get('body');
$body_array = explode( "\n", $body);
$body_replaced = [];
$repeat_group = [];
$repeated_groups = [];
$repeating = false;
$repeat_group_line_num= 0;
$repeat_group_data = $this->repeated_groups_data;
foreach ($repeat_group_data as $key => $group_name){
foreach ($body_array as $num => $line){
if($line == '['.$group_name.']'){
//The repeat tag is opened
$repeating = true;
// $repeat_group[] = $line;
$repeat_group_line_num = $num;
// unset($repeat_group[$num]);
}elseif ($repeating == true && $line != '[/acrepeater]'){
//we are repeating
$repeat_group[] = $line;
}elseif ($repeating == true && $line == '[/acrepeater]'){
//we are closing the repeating
$repeating = false;
// $repeat_group[] = $line;
// unset($repeat_group[$num]);
}else{
$line = new WPCF7_MailTaggedText( $line );
$replaced = $line->replace_tags();
$body_replaced[$num] = $replaced;
}
}
foreach ($this->repeated_groups[$key] as $key => $repeat){
$repeated_groups[] = $repeat_group;
foreach ( $repeat as $tag => $value){
$tag = '[' . $tag . ']';
foreach ($repeated_groups[$key] as $num => $line){
$repeated_groups[$key][$num] = str_replace($tag, $value, $line);
}
}
}
}
//var_dump( $repeated_groups);die();
// var_dump($body_replaced);
array_splice($body_replaced, $repeat_group_line_num,0,$repeated_groups);
function flatten(array $array) {
$return = array();
array_walk_recursive($array, function($a) use (&$return) { $return[] = $a; });
return $return;
}
//var_dump($body_replaced);die;
$body_replaced = flatten($body_replaced);
$body = implode( "\n", $body_replaced);
//
// //var_dump($acffr_mail_raw->get('body'));
$components['body'] = $body;
//
//print_r($components);
//die();
return $components;
}
}
new ACFFR_FormFieldRepeater;
/**
*
* Add the acffr hidden fields to the form.
*
*/
add_action('wpcf7_form_hidden_fields', 'acffr_form_hidden_fields',10,1);
function acffr_form_hidden_fields($hidden_fields) {
return array_merge($hidden_fields, array(
'_acffr_repeatable_group_fields' => '',
'_acffr_repeatable_groups' => '',
));
}