Contact Form 7' ); ?>

content; } /** * * Tag generator * Adds AC Repeater to the CF7 editor * */ public static 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 ''; } else { echo $form_part; } } $properties['form'] = ob_get_clean(); } return $properties; } /** * * Filter the post data * */ function acffr_posted_data($posted_data){ $repeated_groups_data = json_decode(stripslashes($posted_data['_acffr_repeatable_groups'])); $this->repeated_groups_data = $repeated_groups_data; if (is_array($repeated_groups_data) && count($repeated_groups_data) > 0) { foreach ($repeated_groups_data as $group) { $this->repeated_groups[] = $posted_data[$group]; foreach ($posted_data[$group] as $key => $repeat){ foreach ($repeat as $tag => $value){ $key = $key + 1; $posted_data[$key . ' ' . $tag ] = $value; } } unset($posted_data[$group]); } } return $posted_data; } /** * * Filter the mail comonents * */ function acffr_mail_components($components){ $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_num = $num; }elseif ($repeating == true && $line != '[/acrepeater]'){ //we are repeating $repeat_group[] = $line; }elseif ($repeating == true && $line == '[/acrepeater]'){ //we are closing the repeating $repeating = false; }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); } } } } array_splice($body_replaced, $repeat_group_line_num,0,$repeated_groups); $body_replaced = acffr_flatten($body_replaced); $body = implode( "\n", $body_replaced); $components['body'] = $body; return $components; } function acffr_additional_mail($additional_mail, $contact_form) { if (!is_array($additional_mail) || !array_key_exists('mail_2', $additional_mail)) return $additional_mail; $additional_mail['mail_2'] = $this->acffr_mail_components($additional_mail['mail_2']); return $additional_mail; } } 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' => '', )); } function acffr_flatten(array $array) { $return = array(); array_walk_recursive($array, function($a) use (&$return) { $return[] = $a; }); return $return; }