<?php
$terminaisons = array(
    'present' => array('e', 'es', 'e', 'ons', 'ez', 'ent'),
    'futur' => array('erai', 'eras', 'era', 'erons', 'erez', 'eront'),
    'imparfait' => array('ais', 'ais', 'ait', 'ions', 'iez', 'aient')
);

$libellesTemps = array(
    'present' => 'Present',
    'futur' => 'Futur',
    'imparfait' => 'Imparfait'
);

$pronoms = array('je', 'tu', 'il', 'nous', 'vous', 'ils');

$verbeSaisi = filter_input(INPUT_POST, 'verbe', FILTER_UNSAFE_RAW);
$verbeSaisi = is_string($verbeSaisi) ? trim($verbeSaisi) : '';
$verbe = strtolower($verbeSaisi);

$tempsChoisis = filter_input(INPUT_POST, 'temps', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);
$tempsChoisis = is_array($tempsChoisis) ? $tempsChoisis : array();

$messageErreur = '';
$conjugaisons = array();

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if ($verbe === '') {
        $messageErreur = 'Veuillez saisir un verbe.';
    } elseif (strlen($verbe) < 3 || substr($verbe, -2) !== 'er') {
        $messageErreur = 'Veuillez saisir un verbe du premier groupe.';
    } elseif ($tempsChoisis === array()) {
        $messageErreur = 'Veuillez choisir au moins un temps.';
    } else {
        $radical = substr($verbe, 0, strlen($verbe) - 2);

        foreach ($tempsChoisis as $temps) {
            if (!isset($terminaisons[$temps], $libellesTemps[$temps])) {
                continue;
            }

            $formes = array();

            foreach ($pronoms as $index => $pronom) {
                $forme = $radical . $terminaisons[$temps][$index];

                if ($pronom === 'je' && preg_match('/^[aeiouh]/', $forme) === 1) {
                    $formes[] = "j'" . $forme;
                } else {
                    $formes[] = $pronom . ' ' . $forme;
                }
            }

            $conjugaisons[] = array(
                'temps' => $libellesTemps[$temps],
                'formes' => $formes
            );
        }

        if ($conjugaisons === array()) {
            $messageErreur = 'Aucun temps valide n a ete transmis.';
        }
    }
}

