/** * eval_ccpc_setSettings - Enregistre les réglages de l'évaluation sélectionnée * * @category : eval_ccpc_functions * @param array $settings array Array contenant les données d'évaluation à enregistrer, correspond à la même structure que l'array retourné par eval_ccpc_setSettings * @return boolean TRUE si l'opération s'est déroulé avec succès * * @Author Ali Bellamine * */ function eval_ccpc_setSettings($settings) { initTable(); // S'assure de l'existence de la table dans la BDD global $db; if (isset($settings['id']) && count(checkEvaluation($settings['id'], array())) == 0) { // On vérifie les données à enregistrer if (isset($settings['dateDebut']) && isset($settings['dateFin']) && is_numeric($settings['dateFin']) && is_numeric($settings['dateDebut']) && $settings['dateDebut'] <= $settings['dateFin']) { // On prépare l'array $settings['dateDebut'] = TimestampToDatetime($settings['dateDebut']); $settings['dateFin'] = TimestampToDatetime($settings['dateFin']); // On vérifie si l'évaluation existe déjà dans la base settings $sql = 'SELECT count(*) FROM eval_ccpc_settings WHERE id_evaluation = ? LIMIT 1'; $res = $db->prepare($sql); $res->execute(array($settings['id'])); $res_f = $res->fetch(); if ($res_f[0] == 0) { $sql = 'INSERT INTO eval_ccpc_settings (id_evaluation, dateDebut, dateFin) VALUES (:id, :dateDebut, :dateFin)'; } else { $sql = 'UPDATE eval_ccpc_settings SET dateDebut = :dateDebut, dateFin = :dateFin WHERE id_evaluation = :id'; } $res2 = $db->prepare($sql); if ($res2->execute($settings)) { return TRUE; } else { return FALSE; } } else { return FALSE; } } else { return FALSE; } }
$users[$res_f['id']]['promotion']['nom'] = $res_f['promotionNom']; } } } header('Content-Type: application/json'); echo json_encode($users); } } } // Action : insertNewUserEvaluation : ajoute de nouveaux utilisateurs dans l'évaluation à partir d'un array fournit if ($action == 'insertNewUserEvaluation') { if (isset($_POST['id']) && count(checkEvaluation($_POST['id'], array())) == 0 && isset($_POST['users']) && count($_POST['users']) > 0) { $evaluationId = $_POST['id']; // ID de l'évaluation // Liste des utilisateurs déjà enregistré pour évaluation if (isset($_POST['id']) && count(checkEvaluation($_POST['id'], array())) == 0) { $evaluationData = getEvalData($evaluationId); $userList = $evaluationData['users']; } // On ajoute les utilisateurs un par un foreach ($_POST['users'] as $userId) { if (count(checkUser($userId, array())) == 0 && !isset($userList[$userId])) { $sql = 'INSERT INTO evaluationregister (evaluationId, userId, evaluationStatut) VALUES (:evaluationId, :userId, 0)'; $res = $db->prepare($sql); $res_f = $res->execute(array('evaluationId' => $evaluationId, 'userId' => $userId)); } } } echo 'ok'; } // Action : deleteEvaluation : ne marche que si l'évaluation est non remplis
/** * getEvalData - Retourne les informations relative à une campagne d'évaluation * * @category : evaluationFunction * @param int $id Identifiant de la campagne d'évaluation * @return array Array contenant les données relative à la campagne d'évaluation * * @Author Ali Bellamine * * Contenu de l'array retourné :<br> * ['id'] => (int) identifiant de la campagne d'évaluation<br> * ['nom'] => (string) nom de la campagne d'évaluation<br> * ['date'][debut'] => (string) Date de début de la campagne d'évaluation sous forme de Timestamp<br> * ['date'][fin'] => (string) Date de fin de la campagne d'évaluation sous forme de Timestamp<br> * ['type'][id'] => (int) Identifiant du module de la campagne d'évaluation<br> * ['type'][nom'] => (string) Nom du module de la campagne d'évaluation<br> * ['type'][dossier'] => (string) Dossier d'installation du module de la campagne d'évaluation<br> * ['type'][data'] => (array) Contient les données relatives au type de module d'évaluation, voir {@link getEvalTypeData()}<br> * ['type'][statut'] => (int) Si 0, le module d'évaluation est actuellement inactif, si 1 il est actuellement actif<br> * ['users'][id de l'utilisateur] => (array) Contient les informations relatives à l'utilisateur : nom, prenom, promotion, nbEtudiant, voir {@link: getUserData()}<br> * ['orderedUsers'][] => (array) Même informations que ci dessus, mais celles-ci sont classé par ordre de résultats de la requête SQL et non plus par id (évaluations non remplis en premier)<br> * ['orderedUsers']['nb'] => (int) Nombre total d'utilisateurs<br> * ['nb']['remplis'] => (int) nombre d'évaluations remplis<br> * ['nb']['total'] => (int) nombre total d'utilisateurs */ function getEvalData($id) { /* Initialisation des variables */ global $db; // Permet l'accès à la BDD $erreur = array(); $evaluation = array(); /* On vérifie l'existance de l'évaluation */ $erreur = checkEvaluation($id, $erreur); if (count($erreur) == 0) { /* Récupération des informations sur l'évaluation */ $sql = 'SELECT e.id evaluationId, e.nom evaluationNom, e.dateDebut evaluationDateDebut, e.dateFin evaluationDateFin, t.id evaluationTypeId, t.nom evaluationTypeNom, t.nomDossier evaluationTypeDossier, t.actif evaluationTypeStatut FROM evaluation e INNER JOIN typeevaluation t ON t.id = e.type WHERE e.id = ? LIMIT 1'; $res = $db->prepare($sql); $res->execute(array($id)); while ($res_f = $res->fetch()) { $evaluation['id'] = $res_f['evaluationId']; $evaluation['nom'] = $res_f['evaluationNom']; $evaluation['date']['debut'] = DatetimeToTimestamp($res_f['evaluationDateDebut']); $evaluation['date']['fin'] = DatetimeToTimestamp($res_f['evaluationDateFin']); $evaluation['type']['id'] = $res_f['evaluationTypeId']; $evaluation['type']['nom'] = $res_f['evaluationTypeNom']; $evaluation['type']['dossier'] = $res_f['evaluationTypeDossier']; $evaluation['type']['data'] = getEvalTypeData($res_f['evaluationTypeId']); $evaluation['type']['statut'] = $res_f['evaluationTypeStatut']; } /* Récupèration de la liste des personne assignés à l'évaluation */ $sql = 'SELECT er.id idRegister, er.evaluationStatut statut, er.date date, er.userId userId, u.nom userNom, u.prenom userPrenom, u.mail userMail, p.id promotionId, p.nom promotionNom, u.nbEtudiant nbEtudiant FROM evaluationregister er INNER JOIN user u ON er.userId = u.id LEFT JOIN promotion p ON p.id = u.promotion WHERE er.evaluationId = ? ORDER BY er.evaluationStatut ASC, u.nom ASC, u.prenom ASC'; $res = $db->prepare($sql); if ($res->execute(array($evaluation['id']))) { $nbEval = 0; $evaluation['orderedUsers'] = array(); while ($res_f = $res->fetch()) { if ($res_f['statut'] == 1) { $nbEval++; } $evaluation['users'][$res_f['userId']]['id'] = $res_f['userId']; $evaluation['users'][$res_f['userId']]['registerId'] = $res_f['idRegister']; $evaluation['users'][$res_f['userId']]['statut'] = $res_f['statut']; $evaluation['users'][$res_f['userId']]['mail'] = array(); if (isSerialized($res_f['userMail']) && ($tempMail = unserialize($res_f['userMail']))) { $firstLoop = TRUE; foreach ($tempMail as $email) { $evaluation['users'][$res_f['userId']]['mail'][] = $email; } } $evaluation['users'][$res_f['userId']]['nom'] = $res_f['userNom']; $evaluation['users'][$res_f['userId']]['prenom'] = $res_f['userPrenom']; if (isset($res_f['promotionNom'])) { $evaluation['users'][$res_f['userId']]['promotion']['id'] = $res_f['promotionId']; $evaluation['users'][$res_f['userId']]['promotion']['nom'] = $res_f['promotionNom']; } $evaluation['users'][$res_f['userId']]['nbEtudiant'] = $res_f['nbEtudiant']; $evaluation['orderedUsers'][] = $evaluation['users'][$res_f['userId']]; // Même liste mais ordonée } if (isset($evaluation['users'])) { $evaluation['nb']['total'] = count($evaluation['users']); } else { $evaluation['nb']['total'] = 0; } $evaluation['nb']['remplis'] = $nbEval; $evaluation['orderedUsers']['nb'] = $evaluation['nb']; } return $evaluation; } else { return false; } }
// On récupère la liste des années pour lesquelles il y a des évaluations $res = $db->query($sql); while ($res_f = $res->fetch()) { if (!isset($listeAnnee[$res_f['dateDebut']])) { $listeAnnee[$res_f['dateDebut']] = true; } if (!isset($listeAnnee[$res_f['dateFin']])) { $listeAnnee[$res_f['dateFin']] = true; } } } else { if ($action == 'view' || $action == 'edit' || $action == 'delete' || $action == 'userList' || $action == 'settings' || $action == 'mail') { if (isset($_GET['id']) && count(checkEvaluation($_GET['id'], array())) == 0) { $evaluation = getEvalData($_GET['id']); } else { header('Location: ' . ROOT . CURRENT_FILE . '?action=liste&erreur=' . serialize(checkEvaluation($_GET['id'], array()))); // on renvoie vers la liste des évaluations si celle sélectionnée n'existe pas } } } /** 2. Traitement des formulaires **/ if (isset($_POST) && count($_POST) > 0) { // Pour les ajout, edit, suppression -> traitement habituel des données if ($action == 'edit' || $action == 'delete' || $action == 'add') { /* Préparation des données : on crée un array contenant toutes les données, ce dernier sera ensuite parcouru pour créer la requête SQL qui sera préparée */ $sqlData = array(); if ($action == 'edit' || $action == 'delete') {