traitementAdhesion.php 13.2 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11
<?php

/*
 * prendre en compte que :
 * l'utilisateur peut supprimer un champ
 * peut le rendre en non required
 * peut modifier le type de champ
 * peut renommer un champ et le rendre inconnu
 *
 */

12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
//variables pour le mail
$adresseMailCible = "nathan.peraldi@adullact.org";
$subject = "Nouvelle demande de renouvellement d'adhésion";

//nombres maximum
$maxAddressCharacters = 255;
$maxNameCharacters = 255;
$maxCityCharacters = 255;

//Messages d'erreur
$tooLongAddress = "L'adresse que vous avez entrée est trop longue. Maximum : " . $maxAddressCharacters;
$tooLongName = "Le nom que vous avez entré est trop long. Maximum : " . $maxNameCharacters;
$postalCodeError = "Un code postal est composé de 5 chiffres.";
$tooLongCity = "Le nom de la ville est trop long. Maximum : " . $maxCityCharacters;
$errorInCityName = "Un caractère incorrect a été entré.";
$errorInTel = "Un numéro de téléphone se compose de 10 chiffres et commence par un zéro.";
$incorrectUrl = "L'URL est incorrecte.";
$errorInPeriodSelection = "Veuillez sélectionner une période d'adhésion.";
root's avatar
root committed
30
$errorInSiret = "Un numéro de SIRET est composé de 14 chiffres.";
31 32 33 34

$positiveNumberRequired = "Vous devez entrer un nombre positif.";
$numberRequired = "Vous devez entrer un nombre.";

root's avatar
root committed
35 36 37



N. Peraldi's avatar
N. Peraldi committed
38
$debug_mode_traitement = false;
root's avatar
root committed
39
$elementsOfPostToTrash = ["ancienSelectType", "ancienSelectSize", "ancienSelectPeriod"];
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57

$replacements = array(
    "firstSelection" => "Type de collectivité",
    "secondSelection" => "Taille de la collectivité",
    "nombreHabitantsEPCI" => "Nombre d'habitants EPCI",
    "nombreCommunesMembresEPCI" => "Nombre de communes membres EPCI",
    "nomCollectivite" => "Nom de la collectivité",
    "adresseCollectivite" => "Adresse de la collectivité",
    "codePostalCollectivite" => "Code postal",
    "villeCollectivite" => "Ville",
    "telCollectivite" => "Téléphone",
    "siteCollectivite" => "Site internet",
    "periodeAdhesionCollectivite" => "Période d'adhésion",
    "siretCollectivite" => "N° de SIRET",
    "numeroEngagementCollectivite" => "Numéro d'engagement",
    "codeCollectivite" => "Code service"

);
58

N. Peraldi's avatar
N. Peraldi committed
59 60
function sendAdhesionMail($tab)
{
61 62 63 64 65 66 67

    //fonction utile pour l'envoi de mail grâce au $_POST
    //on étudie le $_POST et on transfère les lignes utiles à $tableauFinal
    global $adresseMailCible, $subject, $elementsOfPostToTrash, $replacements;
    $tableauFinal = array();


N. Peraldi's avatar
N. Peraldi committed
68 69 70
    foreach ($tab as $key => $value) {
        if (!isWordIn($key, $elementsOfPostToTrash)) {
            if ($value != "" && $value != "none") {
71

root's avatar
root committed
72
                //transformation du nom de la classe -> texte donné dans $replacements
73 74
                $key = $replacements[$key];

root's avatar
root committed
75 76 77
                //on évite faille XSS
                $value = htmlspecialchars($value);

N. Peraldi's avatar
N. Peraldi committed
78
                $tableauFinal[$key] = $value;
79 80 81 82 83 84
            }
        }

    }

    $message = "Nouvelle requête pour le formulaire d'adhésion : <br><table>";
root's avatar
root committed
85 86
    $logMessage = "\n";

87
    foreach ($tableauFinal as $key => $value) {
N. Peraldi's avatar
N. Peraldi committed
88 89
        $key = str_replace("\n", "", $key);
        $value = str_replace("\n", "", $value);
90 91

        $message = $message . "<tr><td>" . $key . " : </td> <td>" . $value . "</td>" . "</tr>";
root's avatar
root committed
92 93

        $logMessage = $logMessage . $key . " : " . $value . "\n";
94 95
    }

96 97
    $header = "Content-type: text/html; charset=utf-8 \r\n";

98

N. Peraldi's avatar
N. Peraldi committed
99
    if (mail($adresseMailCible, $subject, $message, $header)) {
root's avatar
root committed
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
        writeInLog("Nouvelle demande",$logMessage);

    }
    else{
        writeInLog("Erreur de l'envoi mail.","Header : \n" . $header . "\nInfos :" . $logMessage);
    }
}

function writeInLog($intitule, $text){
    global $workingDirectory, $debug_mode_traitement;

    date_default_timezone_set('Europe/Paris');


    $date = date("d-m-Y");
    $hour = date("H:i:s");

root's avatar
root committed
117
    $filePath = $workingDirectory . "logs/adhesion/logs.log";
root's avatar
root committed
118

root's avatar
root committed
119
    $beforeMessage = "\n--------------\nLe " . $date . ", à " . $hour . ", \n" . $intitule . " : \n";
root's avatar
root committed
120 121 122 123

    $finalMessage = $beforeMessage . $text;

    $fichier = fopen($filePath, "a");
root's avatar
root committed
124

root's avatar
root committed
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
    if($debug_mode_traitement){
        var_dump($fichier);
    }


    if(fwrite($fichier, $finalMessage)){
        if($debug_mode_traitement){
            echo "fichier écrit";
        }

    }
    else{
        if ($debug_mode_traitement){
            echo "fichier pas écrit";
            echo "<br> chemin accesz : <br>" . $filePath;
        }
141 142 143

    }

root's avatar
root committed
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172
    fclose($fichier);


}

//-----------------------Toutes les fonctions de vérification de données------------------------

function verifFirstSelection($tab)
{
    //on vérifie si le first select est bien validé.

    if (isset($tab["firstSelection"])) {
        //première sélection présente
        if ($tab["firstSelection"] != "none" && $tab["firstSelection"] != "") {
            //l'utilisateur a sélectionné quelque chose. mais quoi ?

            return true;


        } else {

            //sélection égale à "none" ou ""
            return false;

        }
    } else {
        //première sélection absente du formulaire
        return false;
    }
173 174 175

}

root's avatar
root committed
176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191
function verifSecondSelection($tab, $errors)
{

    if (isset($tab["secondSelection"])) {
        if ($tab["secondSelection"] != "" || $tab["secondSelection"] != "none") {
            $errors = traitementInformations($tab, $errors);

        } else {
            $errors["second Selection"] = "Vous devez sélectionner la taille de votre collectivité.";
        }

    } else {
        $errors["second Selection"] = "Vous devez sélectionner la taille de votre collectivité.";
    }
    return $errors;
}
192 193 194

function verifEPCI($tab, $errors)
{
195 196
    //vérifie les deux nombres EPCI
    global $positiveNumberRequired, $numberRequired;
197 198 199 200 201 202 203 204 205 206 207
    if (isset($tab["nombreHabitantsEPCI"])) {
        if (isset($tab["nombreCommunesMembresEPCI"])) {
            $nombreHab = $tab["nombreHabitantsEPCI"];
            $nombreCom = $tab["nombreCommunesMembresEPCI"];


            if (is_numeric($nombreHab)) {
                if (is_numeric($nombreCom)) {
                    if ($nombreHab > 0) {
                        if ($nombreCom > 0) {

N. Peraldi's avatar
N. Peraldi committed
208
                        } else {
209
                            $errors["EPCI com"] = $positiveNumberRequired;
210
                        }
N. Peraldi's avatar
N. Peraldi committed
211
                    } else {
212
                        $errors["EPCI hab"] = $positiveNumberRequired;
213 214 215

                    }

N. Peraldi's avatar
N. Peraldi committed
216
                } else {
217
                    $errors["EPCI com"] = $numberRequired;
218 219
                }

N. Peraldi's avatar
N. Peraldi committed
220
            } else {
221
                $errors["EPCI hab"] = $numberRequired;
222
            }
N. Peraldi's avatar
N. Peraldi committed
223
        } else {
224
            $errors["EPCI hab"] = $numberRequired;
225 226
        }

N. Peraldi's avatar
N. Peraldi committed
227
    } else {
228
        $errors["EPCI hab"] = $numberRequired;
229
    }
230

231 232 233 234 235 236 237

    return $errors;
}

function verifNom($tab)
{
    //vérifie si le nom de la collectivité est correct
root's avatar
root committed
238
    global $maxNameCharacters, $tooLongName;
239

240 241 242 243 244 245
    if (isset($tab["nomCollectivite"])) {

        $nom = $tab["nomCollectivite"];

        if (strlen($nom) > 0) {

246
            if (strlen($nom) < $maxNameCharacters) {
247 248
                return "";
            } else {
249
                return $tooLongName;
250 251
            }
        } else {
root's avatar
root committed
252
            return "vide";
253 254
        }
    }
root's avatar
root committed
255
    return "vide";
256 257 258 259 260 261 262


}

function verifAdresse($tab)
{
    //vérifie si l'adresse est correcte
root's avatar
root committed
263
    global $tooLongAddress, $maxAddressCharacters;
264

265 266 267 268 269 270
    if (isset($tab["adresseCollectivite"])) {

        $adresse = $tab["adresseCollectivite"];

        if (strlen($adresse) > 0) {

271
            if (strlen($adresse) < $maxAddressCharacters) {
272 273
                return "";
            } else {
274
                return $tooLongAddress;
275 276
            }
        } else {
root's avatar
root committed
277
            return "vide";
278 279 280

        }
    } else {
root's avatar
root committed
281
        return "vide";
282 283 284 285 286 287
    }
}

function verifCodePostal($tab)
{
    //vérifie si le code postal a été correctement entré
root's avatar
root committed
288
    global $debug_mode_traitement, $postalCodeError;
289

290 291 292 293
    if (isset($tab["codePostalCollectivite"])) {

        $CP = $tab["codePostalCollectivite"];

N. Peraldi's avatar
N. Peraldi committed
294 295 296 297
        if ($debug_mode_traitement) {
            echo "<br> code postal entré : " . $tab["codePostalCollectivite"] . " <br>";
        }

298 299 300 301 302 303
        if (strlen($CP) > 0) {

            if (strlen($CP) == 5 && is_numeric($CP)) {
                return "";

            } else {
304
                return $postalCodeError;
305 306
            }
        } else {
root's avatar
root committed
307
            return "vide";
308 309
        }
    } else {
root's avatar
root committed
310
        return "vide";
311 312 313 314 315
    }
}

function verifVille($tab)
{
316
    //vérifie la ville
root's avatar
root committed
317
    global $maxCityCharacters, $tooLongCity, $errorInCityName;
318 319 320 321 322 323 324 325
    //vérifie si la ville est correcte
    if (isset($tab["villeCollectivite"])) {

        $ville = $tab["villeCollectivite"];

        if (strlen($ville) > 0) {


326
            if (strlen($ville) < $maxCityCharacters) {
327 328 329 330 331

                $ville = strtolower($ville);
                for ($a = 0; $a < strlen($ville); $a++) {

                    if (!strpos("azertyuiopqsdfghjklmwxcvbnéèàçùâêîôûäëïöü-", $ville[$a])) {
332
                        return $errorInCityName;
333 334 335 336 337 338
                    }
                }
                return "";


            } else {
339
                return $tooLongCity;
340 341
            }
        } else {
root's avatar
root committed
342
            return "vide";
343 344
        }
    } else {
root's avatar
root committed
345
        return "vide";
346 347 348 349 350
    }
}

function verifTel($tab)
{
351
    //vérifie le numéro de téléphone
root's avatar
root committed
352
    global $errorInTel;
353 354 355 356 357 358 359 360 361 362 363
    if (isset($tab["telCollectivite"])) {

        $tel = $tab["telCollectivite"];
        if (strlen($tel) > 0) {


            //vérifie si le téléphone a été correctement entré
            if ((strlen($tel) == 10 && is_numeric($tel)) && $tel[0] == "0") {
                return "";

            } else {
364
                return $errorInTel;
365 366
            }
        } else {
root's avatar
root committed
367
            return "vide";
368 369
        }
    } else {
root's avatar
root committed
370
        return "vide";
371 372 373 374 375
    }
}

function verifUrl($tab)
{
376
    //vérifie l'Url du site internet grâce à un filter var
root's avatar
root committed
377
    global $incorrectUrl;
378 379 380 381 382 383

    if (isset($tab["siteCollectivite"])) {
        $url = $tab["siteCollectivite"];

        if (strlen($url) > 0) {

N. Peraldi's avatar
N. Peraldi committed
384
            if (filter_var($url, FILTER_VALIDATE_URL) == true) {
385 386 387
                return "";
            } else {

388
                return $incorrectUrl;
389 390
            }
        } else {
root's avatar
root committed
391
            return "vide";
392 393
        }
    } else {
root's avatar
root committed
394
        return "vide";
395 396 397 398 399
    }
}

function verifPeriodeAdhesion($tab)
{
400 401
    //vérifie que la période d'adhésion est OK
    global $errorInPeriodSelection;
402 403 404 405 406 407 408
    if (isset($tab["periodeAdhesionCollectivite"])) {


        if (strlen($tab["siteCollectivite"]) > 0) {
            return "";

        } else {
409
            return $errorInPeriodSelection;
410 411
        }
    } else {
412
        return $errorInPeriodSelection;
413 414 415 416 417
    }
}

function verifSiret($tab)
{
root's avatar
root committed
418
    global $debug_mode_traitement, $errorInSiret;
N. Peraldi's avatar
N. Peraldi committed
419

N. Peraldi's avatar
N. Peraldi committed
420
    if ($debug_mode_traitement) {
N. Peraldi's avatar
N. Peraldi committed
421 422 423
        echo "<br> on vérifie le siret <br> ";
    }

424 425 426 427 428 429 430 431 432 433
    if (isset($tab["siretCollectivite"])) {

        $siret = $tab["siretCollectivite"];

        if (strlen($siret) > 0) {

            if (strlen($siret) == 14 && is_numeric($siret)) {
                return "";

            } else {
434
                return $errorInSiret;
435 436
            }
        } else {
root's avatar
root committed
437
            return "vide";
438 439
        }
    } else {
root's avatar
root committed
440
        return "vide";
441 442 443 444 445
    }
}

function verifNumeroEngagement($tab)
{
446
    //vérifie si le numéro engagement a été correctement entré
447 448 449 450 451
    if (isset($tab["numeroEngagementCollectivite"])) {

        $numero = $tab["numeroEngagementCollectivite"];

        if (strlen($numero) > 0) {
N. Peraldi's avatar
N. Peraldi committed
452
            return "";
453 454

        } else {
root's avatar
root committed
455
            return "vide";
456 457
        }
    } else {
root's avatar
root committed
458
        return "vide";
459 460 461 462 463
    }
}

function verifCode($tab)
{
464
    //vérifie si le code service a été correctement entré
465 466 467 468 469
    if (isset($tab["codeCollectivite"])) {

        $code = $tab["codeCollectivite"];

        if (strlen($code) > 0) {
N. Peraldi's avatar
N. Peraldi committed
470
            return "";
471 472

        } else {
root's avatar
root committed
473
            return "vide";
474 475
        }
    } else {
root's avatar
root committed
476
        return "vide";
477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508
    }
}

function traitementInformations($tab, $errors)
{
    //vérifie tous les champs texte
    //ces infos sont toujours obligatoires en fin de formulaire donc on fait une fonction tout en un


    $errors["nom"] = verifNom($tab);

    $errors["adresse"] = verifAdresse($tab);

    $errors["CP"] = verifCodePostal($tab);

    $errors["ville"] = verifVille($tab);

    $errors["tel"] = verifTel($tab);

    $errors["site"] = verifUrl($tab);

    $errors["siret"] = verifSiret($tab);

    $errors["numeroEngagement"] = verifNumeroEngagement($tab);

    $errors["code"] = verifCode($tab);

    return $errors;


}

N. Peraldi's avatar
N. Peraldi committed
509
function traitement($tab, $errors)
510
{
root's avatar
root committed
511
    global $debug_mode_traitement;
N. Peraldi's avatar
N. Peraldi committed
512

N. Peraldi's avatar
N. Peraldi committed
513
    if ($debug_mode_traitement) {
N. Peraldi's avatar
N. Peraldi committed
514 515
        echo "début du traitement ";
    }
516 517 518 519 520


    //le résultat du premier select
    if (verifFirstSelection($tab)) {

N. Peraldi's avatar
N. Peraldi committed
521
        if ($debug_mode_traitement) {
N. Peraldi's avatar
N. Peraldi committed
522 523 524
            echo "<br> le first select est OK <br>";
        }

525 526 527
        if ($tab["firstSelection"] == "Association") {
            //il n'y a besoin que de traiter les dernières infos
            $errors = traitementInformations($tab, $errors);
N. Peraldi's avatar
N. Peraldi committed
528
        } elseif ($tab["firstSelection"] == "EPCIMutualisant") {
529 530
            $errors = verifEPCI($tab, $errors);
            $errors = traitementInformations($tab, $errors);
N. Peraldi's avatar
N. Peraldi committed
531 532
        } else {
            $errors = verifSecondSelection($tab, $errors);
533 534 535 536
        }


    } else {
root's avatar
root committed
537
        $errors["first selection"] = "Veuillez préciser le type de collectivité.";
538 539 540

    }

N. Peraldi's avatar
N. Peraldi committed
541
    if ($debug_mode_traitement) {
N. Peraldi's avatar
N. Peraldi committed
542 543 544 545 546
        echo "errors : <br>";
        var_dump($errors);
    }


547 548 549 550 551 552 553
    return $errors;


}


?>