HEX
Server: Apache
System: Linux webd004.cluster130.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64
User: frenchy (106757)
PHP: 7.4.33
Disabled: _dyuweyrj4,_dyuweyrj4r,dl
Upload Files
File: /home/frenchy/www/french-american.org/releases/20210303111656Z/app/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');