File: /home/f/r/e/frenchy/www/_trash/wp-content/themes/biig/functions/advanced-form.inc.php
<?php
$formulaire_contact_key = 'form_5d960090320ee';
$csv_file_export_name = 'contacts-faf-fr.csv';
// -------------------------------------------------
// Arguments du formulaire
// -------------------------------------------------
function filter_args( $args, $form ) {
$args['submit_text'] = 'Envoyer votre message';
return $args;
}
add_filter( 'af/form/args/key='.$formulaire_contact_key, 'filter_args', 10, 2 );
// -------------------------------------------------
// Personnalisation des messages d'erreurs
// pour le formulaire de contact
// -------------------------------------------------
function custom_contact_validation_fields()
{
// Liste de tous les champs required
$required_fields = array(
array('name' => 'objet'),
array('name' => 'nom'),
array('name' => 'prenom'),
array('name' => 'adresse_email'),
array('name' => 'message')
);
for ($i = 0, $size = count($required_fields); $i < $size; ++$i) {
$currentField = $required_fields[$i]['name'];
// Affiche message d'erreur personnalisé si champ vide
if (empty(af_get_field($currentField))) {
if ($currentField == 'prenom') {
af_add_error($currentField, "Merci d'indiquer votre prénom");
}
if ($currentField == 'objet') {
af_add_error($currentField, "Merci d'indiquer l'objet de votre demande");
}
if ($currentField == 'nom') {
af_add_error($currentField, "Merci d'indiquer votre nom de famille");
}
if ($currentField == 'message') {
af_add_error($currentField, "Merci d'indiquer votre message");
}
}
// Pour les champs email, check la saisie
if ($currentField == 'adresse_email') {
if (empty(af_get_field($currentField)) || !isValidEmail(af_get_field($currentField))) {
af_add_error($currentField, "Merci d'indiquer une adresse email valide");
}
}
}
}
add_action('af/form/validate/key=' . $formulaire_contact_key, 'custom_contact_validation_fields');
// -------------------------------------------------
// Function de validation d'email
// -------------------------------------------------
function isValidEmail($email)
{
return filter_var($email, FILTER_VALIDATE_EMAIL) !== false;
}
// -------------------------------------------------
// Personnalisation du gabarit de l'email de contact
// -------------------------------------------------
function filter_contact_email_content($content, $email, $form, $fields)
{
$template .= template_header_email();
$template .= $content;
$template .= template_footer_email();
return $template;
}
add_filter('af/form/email/content/key=' . $formulaire_contact_key, 'filter_contact_email_content', 10, 4);
// -------------------------------------------------
// Override les styles de l'email
// -------------------------------------------------
function filter_email_styles()
{
$styles = template_styles_email();
return $styles;
}
add_filter('af/form/email/styles', 'filter_email_styles', 10, 4);
// -------------------------------------------------
// Ajout d'un bouton export au format CSV
// -------------------------------------------------
// Version 1
add_action('restrict_manage_posts', 'add_export_button');
function add_export_button()
{
$screen = get_current_screen();
if (
$screen->base === 'edit' &&
$screen->post_type === 'af_entry'
) {
?>
<input type="submit" name="export_all_posts" id="export_all_posts" class="button button-primary" value="Exporter en CSV">
<script type="text/javascript">
jQuery(function($) {
$('#export_all_posts').insertAfter('#post-query-submit');
});
</script>
<?php
}
}
add_action('init', 'func_export_all_posts');
function func_export_all_posts($csv_file_export_name)
{
if (isset($_GET['export_all_posts'])) {
$arg = array(
'post_type' => 'af_entry',
'post_status' => 'publish',
'posts_per_page' => -1,
);
global $post;
global $csv_file_export_name;
$arr_post = get_posts($arg);
if ($arr_post) {
header('Content-type: text/csv');
header('Content-Disposition: attachment; filename="' . $csv_file_export_name . '"');
header('Pragma: no-cache');
header('Expires: 0');
$file = fopen('php://output', 'w');
fputs($file, $bom = (chr(0xEF) . chr(0xBB) . chr(0xBF)));
fputcsv(
$file,
array(
'id ',
'Objet ',
'Nom ',
'Prénom ',
'Email ',
'Message ',
),
',',
'"'
);
foreach ($arr_post as $post) {
setup_postdata($post);
fputcsv(
$file,
array(
$post->ID . ' ',
get_field('objet', $post->ID) . ' ',
get_field('nom', $post->ID) . ' ',
get_field('prenom', $post->ID) . ' ',
get_field('adresse_email', $post->ID) . ' ',
get_field('message', $post->ID) . ' ',
),
',',
'"'
);
}
exit();
}
}
}
// Personnalisation du bouton Submit
function filter_submit_button_attributes($attributes, $form, $args)
{
$attributes['class'] .= ' btn';
return $attributes;
}
add_filter('af/form/button_attributes', 'filter_submit_button_attributes', 10, 3);
// -------------------------------------------------
// Remove certains scripts et styles importés par ACF
// https://advancedforms.github.io/guides/advanced/decreasing-scripts-and-styles/
// -------------------------------------------------
function form_remove_enqueues_scripts()
{
wp_dequeue_script('select2');
wp_dequeue_script('jquery-ui-datepicker');
wp_dequeue_script('acf-timepicker');
wp_dequeue_script('wp-color-picker');
}
add_action('wp_print_scripts', 'form_remove_enqueues_scripts');
function form_remove_enqueues_styles()
{
wp_dequeue_style('select2');
wp_dequeue_style('acf-datepicker');
wp_dequeue_style('acf-timepicker');
wp_dequeue_style('wp-color-picker');
}
add_action('wp_print_styles', 'form_remove_enqueues_styles');