if (isset($_POST['upload']) && isset($_FILES['csv']) && $_POST['upload'] == 'ok') { $fileName = explode('.', $_FILES['csv']['name']); if (is_file($_FILES['csv']['tmp_name']) && ($csv = fopen($_FILES['csv']['tmp_name'], 'r') && $fileName[count($fileName) - 1] == 'csv')) { // Récupération de la liste à partir du CSV $affectations = readCSV($_FILES['csv']['tmp_name'], ';', FALSE); /* On parcours le fichier $affectations et : * - On enregistre dans l'array $affectationsOk['insert'] les valeurs prêtes à être insérées * - On enregistre dans l'array $affectationsOk['erreur'] les valeurs qui posent probleme et qui ne doivent pas être insérées */ $affectationOk['insert'] = array(); $affectationOk['erreur'] = array(); foreach ($affectations as $affectationId => $affectationData) { if (count($affectationData) >= 4) { $erreurAffectation = checkAffectationInsertData(getUserIdFromNbEtudiant($affectationData[0]), $affectationData[1], $affectationData[2], $affectationData[3], array()); if (count($erreurAffectation) == 0) { $affectationOk['insert'][$affectationId] = array('etudiant' => getUserIdFromNbEtudiant($affectationData[0]), 'service' => $affectationData[1], 'dateDebut' => $affectationData[2], 'dateFin' => $affectationData[3]); } else { $affectationOk['erreur'][$affectationId] = $erreurAffectation; } } } // On stocke les données dans un $_SESSION afin de les rendre ré-utilisable dans le page de traitement $_SESSION['affectations'] = array(); $_SESSION['affectations']['data'] = $affectationOk; $_SESSION['affectations']['rawdata'] = $affectations; } else { $erreur[8] = TRUE; } } else { if (isset($_POST['valid']) && $_POST['valid'] == 1) { // Liste les erreurs qui ont eu lieu
// On parcours l'array $_SESSION['users']['insert'] et on les insert if (isset($_SESSION['users']['update'])) { foreach ($_SESSION['users']['update'] as $userDataId => $userData) { $tempErreur = array(); $tempErreur = checkUserInsertData($userData, $tempErreur); // On verifie la validité des données // On ajoute les données manquantes if (!isset($userData['prenom'])) { $userData['prenom'] = ''; } if (!isset($userData['promotion'])) { $userData['promotion'] = 'NULL'; } if (count($tempErreur) == 1 && isset($tempErreur['exist'])) { // On récupère l'id de l'utilisateur $userId = getUserIdFromNbEtudiant($userData['nbEtu']); if (isset($userId) && is_numeric($userId) && count(checkUser($userId, array())) == 0) { $sql = 'UPDATE user SET nbEtudiant = ?, nom = ?, prenom = ?, mail = ?, promotion = ?, rang = ? WHERE id = ?'; $res = $db->prepare($sql); $resT = $res->execute(array($userData['nbEtu'], strtoupper($userData['nom']), $userData['prenom'], serialize($userData['mail']), $userData['promotion'], $userData['rang'], $userId)); if (!$resT) { $affectationsErreur[$affectationInsertId][14] = TRUE; // On enregistre l'erreur } } else { $affectationsErreur[$affectationInsertId][14] = TRUE; // On enregistre l'erreur } } else { // On enregistre les erreurs if (isset($tempErreur['exist'])) {
/** * checkUserInsertData - Vérifie la validité des données d'ajout d'un profil utilisateur * * @category : checkFunction * @param array $userData( Données utilisateur à tester * @param array $erreur Array contenant la liste des erreurs rencontrées avant execution de la fonction. * @return array Array contenant la liste des erreurs rencontrées après execution de la fonction * * @Author Ali Bellamine * * $userData : <br> * "nom" => (string) nom de l'utilisateur<br> * "mail" => (array) liste des adresses email de l'utilisateur<br> * "nbEtu" => (string) numéro d'étudiant de l'utilisateur<br> * "rang" => (int) rang de l'utilisateur, compris entre 1 (étudiant) et 2 (invités) */ function checkUserInsertData($userData, $erreur) { // On vérifie que les champs obligatoires ont été remplis $required = array('nom', 'mail', 'nbEtu', 'rang'); foreach ($required as $requiredName) { if (!isset($userData[$requiredName]) || $userData[$requiredName] == '') { $erreur[26] = TRUE; } } // On vérifie si l'utilisateur existe déjà if (count(checkUser(getUserIdFromNbEtudiant($userData['nbEtu']), array())) == 0) { $erreur['exist'] = TRUE; } // On récupère les infos sur la promotion if (isset($userData['promotion']) && count(checkPromotion($userData['promotion'], array())) != 0) { $erreur = checkPromotion($userData['promotion'], $erreur); } // On vérifie les mails if (isset($userData['mail']) && is_array($userData['mail'])) { foreach ($userData['mail'] as $email) { if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $erreur[19] = TRUE; } } } else { $erreur[19] = TRUE; } // On vérifie le rang if (isset($userData['rang']) && $userData['rang'] != 1 && $userData['rang'] != 2) { $erreur[28] = TRUE; } return $erreur; }