/**
 * Vérification du montant. Si la campagne est configurée pour
 * utiliser une configuration spécifique, alors, il faut vérifier
 * avec les montants de la campagne. Autrement, il faut utiliser les
 * paramètres globaux.
 *
 * @param $campagne
 * @param $erreurs
 * @return null|string
 */
function formulaires_souscription_trouver_montant($campagne, &$erreurs)
{
    $e = _request('montant');
    $libre = false;
    if ($ea = _request('abo_montant')) {
        $ea = _request('abo_montant');
        if ($ea == "libre") {
            $ea = _request('abo_montant_libre');
            if ($ea) {
                $libre = true;
            }
        }
        if ($ea) {
            $e = (strncmp($ea, "abo", 3) == 0 ? "" : "abo") . $ea;
        }
    }
    if ($e == "libre") {
        $e = _request('montant_libre');
        $libre = true;
    } elseif ($e == "abo_libre") {
        $e = _request('abo_montant_libre') ? "abo" . _request('abo_montant_libre') : "";
        $libre = true;
    }
    if ($e) {
        $abo = strncmp($e, "abo", 3) == 0 ? "abo_" : "";
        if (!ctype_digit($abo ? substr($e, 3) : $e)) {
            $erreurs[$abo . 'montant'] = _T("souscription:erreur_montant_invalide");
        } else {
            if ($campagne['configuration_specifique'] !== 'on') {
                $montant_type = lire_config("souscription/" . $campagne['type_objectif'] . "{$abo}_type_saisie", 'input');
                $montant_datas = lire_config("souscription/" . $campagne['type_objectif'] . "{$abo}_montants", '');
            } else {
                $montant_type = $campagne[$abo . 'type_saisie'];
                $montant_datas = $campagne[$abo . 'montants'];
            }
            /* On ne vérifie strictement la valeur du montant que si on
             * n'utilise pas le type de saisie « entrée libre » (input) pour
             * le montant. */
            if ($montant_type !== "input" and !$libre and !array_key_exists($e, montants_str2array($montant_datas, $abo ? "abo" : ""))) {
                $erreurs[$abo . 'montant'] = _T('souscription:erreur_montant_specifie_invalide');
            }
        }
    }
    return $e;
}
function formulaires_editer_souscription_campagne_verifier_dist($id_souscription_campagne = 'new', $retour = '', $lier_trad = 0, $config_fonc = '', $row = array(), $hidden = '')
{
    $erreurs = formulaires_editer_objet_verifier('souscription_campagne', $id_souscription_campagne, array('titre', 'type_objectif'));
    $type = _request("type_objectif");
    if (!in_array($type, array('don', 'adhesion'))) {
        $erreurs['type_objectif'] = _T("souscription_campagne:erreur_objectif_invalide");
    } elseif ($type == "don" and lire_config("souscription/don_activer", "off") !== "on") {
        $erreurs['type_objectif'] = _T("souscription_campagne:erreur_objectif_don_inactif");
    } elseif ($type == "adhesion" and lire_config("souscription/adhesion_activer", "off") !== "on") {
        $erreurs['type_objectif'] = _T("souscription_campagne:erreur_objectif_adhesion_inactif");
    }
    /* Si un objectif est demandé, alors on vérifie que les champs sont
     * bien des entiers. */
    if (_request('objectif_oui_non') == 'on') {
        $objectif = _request('objectif');
        if (!ctype_digit($objectif) || intval($objectif) < 0) {
            $erreurs['objectif'] = _T("souscription_campagne:erreur_objectif_invalide");
        }
        $objectif_initial = _request('objectif_initial');
        if ($objectif_initial != '') {
            if (!ctype_digit($objectif_initial) || intval($objectif_initial < 0)) {
                $erreurs['objectif_initial'] = _T("souscription_campagne:erreur_objectif_initial_valeur");
            } elseif (intval($objectif_initial) > $objectif) {
                $erreurs['objectif_initial'] = _T("souscription_campagne:erreur_objectif_initial_supperieur_objectif");
            }
        }
    }
    /* Si une limite est demandée, alors, on vérifie que le champs est
     * bien un entier. */
    $limite_oui_non = _request('limite_oui_non');
    if ($limite_oui_non == "on") {
        $limite = _request('limite');
        if (!ctype_digit($objectif)) {
            $erreurs['limite'] = _T("souscription_campagne:erreur_limite_valeur");
        }
    }
    /* Si une guration spécifique est demandée, alors on vérifie les
     * valeurs 'type_saisie' et 'montants' (si on a demandé un bouton
     * radio ou une selection). Autrement, les données sont supprimées
     * dans la fonction traiter. */
    if (_request('configuration_specifique')) {
        $type_saisie = _request('type_saisie');
        $saisies = array("none", "input", "radio", "radioinput", "selection");
        if (!$type_saisie || !in_array($type_saisie, $saisies)) {
            $erreurs['type_saisie'] = _T('souscription:erreur_type_saisie_invalide');
        } else {
            $montants = _request('montants');
            if ($type_saisie and $type_saisie !== "input" and $type_saisie !== "none") {
                if (!$montants || !is_string($montants)) {
                    $erreurs['montants'] = _T('souscription:erreur_champ_obligatoire');
                } elseif (!montants_str2array($montants)) {
                    $erreurs['montants'] = _T('souscription:erreur_montants');
                }
            }
        }
        $abo_type_saisie = _request('abo_type_saisie');
        if (!$abo_type_saisie || !in_array($abo_type_saisie, $saisies)) {
            $erreurs['abo_type_saisie'] = _T('souscription:erreur_type_saisie_invalide');
        } else {
            $abo_montants = _request('abo_montants');
            if ($abo_type_saisie and $abo_type_saisie !== "input" and $abo_type_saisie !== "none") {
                if (!$abo_montants || !is_string($abo_montants)) {
                    $erreurs['abo_montants'] = _T('souscription:erreur_champ_obligatoire');
                } elseif (!montants_str2array($abo_montants)) {
                    $erreurs['abo_montants'] = _T('souscription:erreur_montants');
                }
            }
        }
        if (!isset($erreurs['type_saisie']) and !isset($erreurs['abo_type_saisie']) and $type_saisie == "none" and $abo_type_saisie == "none") {
            $erreurs['type_saisie'] = $erreurs['abo_type_saisie'] = _T('souscription:erreur_type_saisie_obligatoire');
        }
    }
    return $erreurs;
}