Example #1
0
/**
 * 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;
    }
}
Example #2
0
                        $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
Example #3
0
/**
 * 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;
    }
}
Example #4
0
    // 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') {