Beispiel #1
0
        $filtres['hopital'][$res_f['hopitalId']]['nom'] = $res_f['hopitalNom'];
    }
    if (!isset($filtres['hopital'][$res_f['hopitalId']]['nb'])) {
        $filtres['hopital'][$res_f['hopitalId']]['nb'] = 1;
    } else {
        $filtres['hopital'][$res_f['hopitalId']]['nb']++;
    }
}
/*
	Récupération des données d'évaluations des stages sélectionnés
*/
$evaluationData = array();
$res = $db->prepare($sqlContent);
$res->execute($preparedValue);
while ($res_f = $res->fetch()) {
    $evaluationData[$res_f['serviceId']] = getEvaluationCCPCPartialData($res_f['serviceId'], $filtrePromotion, $filtres['dateMin'], $filtres['dateMax']);
}
/*
	Récupération de la liste des périodes de stage correspondant
*/
$fastSelectData = array();
$res = $db->prepare($fastSelectSql);
$res->execute($preparedValue);
while ($res_f = $res->fetch()) {
    $fastSelectData[] = array('dateDebut' => DatetimeToTimestamp($res_f['debutStage']), 'dateFin' => DatetimeToTimestamp($res_f['finStage']), 'promotion' => array('id' => $res_f['promotionId'], 'nom' => $res_f['promotionNom']));
}
/*
	Exportation de la liste des services
*/
if (isset($_GET['download']) && $_GET['download'] == 'csv') {
    $exportList = array();
/**
 * getEvaluationCCPCFullData - Récupère l'intégralité des données d'évaluation de stage
 *
 * @category : eval_ccpc_functions
 * @param int $id Identifiant du service pour lequel on récupère les données
 * @param int|boolean $promotion Identifiant de la promotion pour laquelle on récupère les données, FALSE si elles sont récupérés indifférement de la promotion
 * @param string $dateMin Borne inférieure de la période pour laquelle on récupère les données d'évaluation, sous forme de Timestamp
 * @param string $dateMax Borne supérieure de la période pour laquelle on récupère les données d'évaluation, sous forme de Timestamp
 * @param boolean $modere si TRUE on affiche les commentaires modérés, si FALSE on ne les affiche pas
 * @return array Array contenant les résultats d'évaluation pour un service durant une période donnée et pour une promotion donnée
 * 
 * @Author Ali Bellamine
 *
 * Contenu de l'array retourné :<br>
 *     Contient l'intégralité des données retournés par {@link getEvaluationCCPCPartialData()}<br>
 * 	['donnees'][identifiant de l'évaluation][categorie de la question][nom du champs dans la BDD] => (int) Valeur de la réponse à la question, toutes les données y apparaissent<br>
 * 	[Catégorie des données][Nom du champs dans la BDD]['nb'][valeur] => (int) Nombre d'occurence de chaque valeur<br>
 * 	[Catégorie des données][Nom du champs dans la BDD]['nbTotal'] => (int) Nombre total de réponses pour le champs donné<br>
 * 	[Catégorie des données][Nom du champs dans la BDD][] => (string) Pour champs texte uniquement, contient toutes les réponses données dans le champs
 *
 */
function getEvaluationCCPCFullData($id, $promotion, $dateMin, $dateMax, $modere = FALSE)
{
    global $db;
    global $bypasslimit;
    // On récupère des données de la page d'accueil
    $evaluationData = getEvaluationCCPCPartialData($id, $promotion, $dateMin, $dateMax);
    if (!isset($evaluationData) || $evaluationData == FALSE) {
        return FALSE;
    }
    /**
    			Récupération des toutes les évaluations  de type différent de select concernant le service dans la base de donnée
    		**/
    $listEvaluationItems = array();
    $listTextItems = array();
    // Liste des champs à ne pas dénombrer
    $listChamp = array();
    if (is_file(PLUGIN_PATH . 'formulaire.xml')) {
        if ($form = simplexml_load_file(PLUGIN_PATH . 'formulaire.xml')) {
            foreach ($form->categorie as $categorie) {
                $listChamp[(string) $categorie['nom']] = array();
                foreach ($categorie->input as $input) {
                    if ($input['type'] == 'select') {
                        $listChamp[(string) $categorie['nom']][] = (string) $input['nomBDD'];
                    }
                    if ($input['type'] == 'radio' || $input['type'] == 'textarea') {
                        $listChamp[(string) $categorie['nom']][] = (string) $input['nomBDD'];
                        $listEvaluationItems[(string) $input['nomBDD']]['type'] = (string) $categorie['nom'];
                        if ($input['type'] == 'radio') {
                            $listEvaluationItems[(string) $input['nomBDD']]['value'] = array();
                            foreach ($input->radio as $radio) {
                                $listEvaluationItems[(string) $input['nomBDD']]['value'][] = (string) $radio['value'];
                            }
                        }
                        if ($input['type'] == 'textarea') {
                            $listTextItems[(string) $input['nomBDD']] = (string) $categorie['nom'];
                        }
                    } else {
                        if ($input['type'] == 'checkbox') {
                            foreach ($input->checkbox as $checkbox) {
                                $listChamp[(string) $categorie['nom']][] = (string) $checkbox['nomBDD'];
                                $listEvaluationItems[(string) $checkbox['nomBDD']]['type'] = (string) $categorie['nom'];
                                $listEvaluationItems[(string) $checkbox['nomBDD']]['value'] = array(0, 1);
                            }
                        } else {
                            if ($input['type'] == 'text') {
                                foreach ($input->text as $text) {
                                    $listChamp[(string) $categorie['nom']][] = (string) $text['nomBDD'];
                                    $listTextItems[(string) $text['nomBDD']] = (string) $categorie['nom'];
                                    $listEvaluationItems[(string) $text['nomBDD']]['type'] = (string) $categorie['nom'];
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    /**
    			On récupère les données non récupérés dans getEvaluationCCPCPartialData
    		**/
    $sqlData = array('id' => $id);
    $sql = 'SELECT e.id evaluationId, e.moderation moderation';
    foreach ($listEvaluationItems as $key => $value) {
        $sql .= ', e.' . $key . ' ' . $key . ' ';
    }
    $sql .= 'FROM eval_ccpc_resultats e
					INNER JOIN service s ON e.service = s.id
					 WHERE e.service = :id ';
    if ($dateMin != 0 && $dateMax != 0) {
        $sql .= 'AND e.debutStage >= :dateMin AND e.finStage <= :dateMax ';
        $sqlData['dateMin'] = TimestampToDatetime($dateMin);
        $sqlData['dateMax'] = TimestampToDatetime($dateMax);
    }
    if (isset($promotion) && is_numeric($promotion) && count(checkPromotion($promotion, array())) == 0) {
        $sql .= 'AND e.promotion = :promotion ';
        $sqlData['promotion'] = $promotion;
    }
    // Si il s'agit d'un étudiant, on affiche que les évaluations vielles de + de 30 jours
    if ($_SESSION['rang'] <= 1 && $bypasslimit == FALSE) {
        if (defined('CONFIG_EVAL_CCPC_DELAIDISPOEVAL') && is_numeric(constant('CONFIG_EVAL_CCPC_DELAIDISPOEVAL')) && constant('CONFIG_EVAL_CCPC_DELAIDISPOEVAL') >= 0) {
            $nbJourAllowedDate = CONFIG_EVAL_CCPC_DELAIDISPOEVAL;
        } else {
            $nbJourAllowedDate = 30;
        }
        $allowedDate = TimestampToDatetime(time() - $nbJourAllowedDate * 24 * 3600);
        $sql .= ' AND e.date <= "' . $allowedDate . '" ';
    }
    /*
    	Ne pas afficher les évaluations des autres services aux chef de service
    */
    if ($_SESSION['rang'] == 2 && defined('CONFIG_EVAL_CCPC_RESTRICTEVALUATIONACCESSSERVICE') && CONFIG_EVAL_CCPC_RESTRICTEVALUATIONACCESSSERVICE == TRUE && $bypasslimit == FALSE) {
        $sql .= ' AND s.chef = "' . $_SESSION['id'] . '"';
    }
    $res = $db->prepare($sql);
    $res->execute($sqlData);
    while ($res_f = $res->fetch()) {
        // On récupére la liste des champs textes modérés
        if (isset($res_f['moderation']) && unserialize($res_f['moderation'])) {
            $moderationArray = unserialize($res_f['moderation']);
        } else {
            $moderationArray = array();
        }
        // On remplit l'array de résultats
        foreach ($res_f as $key => $value) {
            // On enregistre l'évaluation
            if (isset($listEvaluationItems[$key]) && $value != '') {
                $evaluationData['donnees'][$res_f['evaluationId']][$listEvaluationItems[$key]['type']][$key] = $value;
            }
            // On stocke à part les évaluation de type text
            if (isset($listTextItems[$key])) {
                if ($value != '') {
                    // On enregistre le fait que ça soit modéré
                    if (isset($moderationArray[$key])) {
                        $evaluationData['donnees'][$res_f['evaluationId']]['Moderation'][$key] = TRUE;
                    }
                    if (!isset($moderationArray[$key]) || $modere) {
                        $evaluationData[$listTextItems[$key]][$key][$res_f['evaluationId']] = $value;
                    } else {
                        $evaluationData[$listTextItems[$key]][$key][$res_f['evaluationId']] = LANG_FORM_CCPC_QUESTION_TEXT_MODERATE;
                    }
                }
            }
        }
    }
    /**
    			On compte les réponses et on enregistre combien il y a de chaque réponse
    		**/
    foreach ($evaluationData['donnees'] as $id => $valeur) {
        foreach ($listChamp as $champType => $champValeur) {
            foreach ($champValeur as $champ) {
                if (!isset($listTextItems[$champ]) && isset($valeur[$champType][$champ])) {
                    /*
                    	On compte l'item
                    */
                    if (!isset($evaluationData[$champType][$champ]['nb'][$valeur[$champType][$champ]]) || !is_numeric($evaluationData[$champType][$champ]['nb'][$valeur[$champType][$champ]])) {
                        $evaluationData[$champType][$champ]['nb'][$valeur[$champType][$champ]] = 1;
                    } else {
                        $evaluationData[$champType][$champ]['nb'][$valeur[$champType][$champ]]++;
                    }
                    /*
                    	On calcul le total
                    */
                    if (!isset($evaluationData[$champType][$champ]['nbTotal']) || !is_numeric($evaluationData[$champType][$champ]['nbTotal'])) {
                        $evaluationData[$champType][$champ]['nbTotal'] = 1;
                    } else {
                        $evaluationData[$champType][$champ]['nbTotal']++;
                    }
                }
            }
        }
    }
    /**
    			On corrige met 0 aux valeurs non cochés pour les questions où les réponses possibles sont exhaustives
    		**/
    foreach ($listEvaluationItems as $listFixQuestionName => $listFixQuestionValue) {
        if (isset($listFixQuestionValue['value'])) {
            foreach ($listFixQuestionValue['value'] as $listFixQuestionPossibilite) {
                if (!isset($evaluationData[$listFixQuestionValue['type']][$listFixQuestionName]['nb'][$listFixQuestionPossibilite])) {
                    $evaluationData[$listFixQuestionValue['type']][$listFixQuestionName]['nb'][$listFixQuestionPossibilite] = 0;
                }
            }
        }
    }
    return $evaluationData;
}
Beispiel #3
0
} else {
    $moderate = FALSE;
}
/**
		Récupération des informations concernant le service
		**/
if ($evaluationContentType == 'stat' || $evaluationContentType == 'data') {
    $evaluationData = getEvaluationCCPCFullData($_GET['service'], $promotion, $dateDebut, $dateFin, $moderate);
} else {
    if ($evaluationContentType == 'history') {
        $evaluationData['evaluations'] = array();
        // Array qui contiendra toutes les données
        $listeDate = listeMoisEntreDeuxDates($dateDebut, $dateFin);
        // Liste des dates d'évaluations dispo dans l'intervalle temporel choisit par l'utilisateur
        foreach ($listeDate as $dateKey => $date) {
            $tempEvaluationData = getEvaluationCCPCPartialData($_GET['service'], $promotion, $dateDebut, strtotime($date['Annee'] . '-' . $date['MoisNb'] . '-01 +1 month') - 1);
            // On récupère les données à la date choisie
            /**
            					On stocke les informations concernant le service
            				**/
            if (!isset($evaluationData['service'])) {
                $evaluationData['service'] = $tempEvaluationData['service'];
            }
            unset($tempEvaluationData['service']);
            /**
            					On enregistre les données lorsqu'elles sont différentes des précédentes
            				**/
            if (count($evaluationData['evaluations']) > 0 && $evaluationData['evaluations'][count($evaluationData['evaluations']) - 1]['stat'] !== $tempEvaluationData || count($evaluationData['evaluations']) == 0) {
                $evaluationData['evaluations'][] = array('date' => $date, 'stat' => $tempEvaluationData);
            }
        }