Exemplo n.º 1
0
/**
 * getServiceList - Retourne la liste des services enregistrés
 *
 * @category stageFunction
 * @return array Array contenant la liste des services enregistrés
 *
 * @Author Ali Bellamine
 *
 * Contenu de l'array retourné :<br>
 *	[id du service][] => (array) Array contenant les informations relatives au service, voir {@link getServiceInfo()}
 *
 */
function getServiceList()
{
    global $db;
    $sql = 'SELECT id FROM service ORDER BY id ASC';
    $res = $db->query($sql);
    $services = array();
    while ($res_f = $res->fetch()) {
        $services[$res_f['id']] = getServiceInfo($res_f['id']);
    }
    return $services;
}
Exemplo n.º 2
0
if (isset($_POST['action']) && in_array($_POST['action'], $allowedAction)) {
    $action = $_GET['action'];
} else {
    if (isset($_GET['action']) && in_array($_GET['action'], $allowedAction)) {
        $action = $_GET['action'];
    } else {
        header('Location: ' . $pageServices);
    }
}
/**
		Récupération des informations sur le service
	**/
// Récupération de l'id du service
if (isset($_GET['id']) && $action != 'add') {
    if (count(checkService($_GET['id'], array())) == 0) {
        $serviceInfo = getServiceInfo($_GET['id']);
    } else {
        header('Location: ' . $pageServices);
    }
}
/***
		II. Traitement des formulaires
	***/
if (isset($_POST) && count($_POST)) {
    /*
    	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
    */
    // Ce qui est propre aux edit et delete
    if (($action == 'edit' || $action == 'delete') && isset($serviceInfo)) {
        $sqlData['id'] = $serviceInfo['id'];
        // Id du service
Exemplo n.º 3
0
// Liste des order autorisés
if (isset($_GET['order']) && isset($allowedORDER[$_GET['order']])) {
    $orderSQL = ' ORDER BY ' . $allowedORDER[$_GET['order']] . ' ';
} else {
    $orderSQL = ' ORDER BY  ' . $allowedORDER['nom'];
}
if (isset($_GET['desc'])) {
    $orderSQL .= ' DESC';
} else {
    $orderSQL .= ' ASC';
}
// On récupére la liste des id
$res = $db->prepare($sql . $whereSQL . $orderSQL . $limitSQL);
$res->execute($rechercheFiltre);
while ($res_f = $res->fetch()) {
    $listeServices[$res_f['id']] = getServiceInfo($res_f['id']);
}
/*
	Téléchargement de la liste des services au format CSV
*/
if ($action == 'dl') {
    /*
    	Création de l'array à retourner
    */
    $servicesCSV = array(array('id', LANG_ADMIN_SERVICES_LISTE_TABLE_TITLE_HOPITAL, LANG_ADMIN_SERVICES_LISTE_TABLE_TITLE_SPECIALITE, LANG_ADMIN_SERVICES_LISTE_TABLE_TITLE_CHEF, LANG_ADMIN_SERVICES_LISTE_TABLE_TITLE_CHEF, LANG_ADMIN_SERVICES_NOM));
    foreach (getServiceList() as $service) {
        $servicesCSV[] = array($service['id'], $service['hopital']['nom'], $service['specialite']['nom'], $service['chef']['nom'], $service['chef']['prenom'], $service['nom']);
    }
    // Téléchargement du CSV
    downloadCSV($servicesCSV, 'services.csv');
}
Exemplo n.º 4
0
                ?>
</th>
						<th><?php 
                echo LANG_ADMIN_AFFECTATIONS_DATE_DEBUT;
                ?>
</th>
						<th><?php 
                echo LANG_ADMIN_AFFECTATIONS_DATE_FIN;
                ?>
</th>
						<th></th>
					</tr>
				<?php 
                foreach ($affectationsErreur as $affectationErreurId => $affectationErreurData) {
                    $userData = getUserData($_SESSION['affectations']['data']['insert'][$affectationErreurId]['etudiant']);
                    $serviceData = getServiceInfo($_SESSION['affectations']['data']['insert'][$affectationErreurId]['service']);
                    ?>
					<tr class = "bodyTR">
						<td><?php 
                    echo $userData['nom'] . ' ' . $userData['prenom'];
                    ?>
</td>
						<td><?php 
                    echo $serviceData['FullName'];
                    ?>
</td>
						<td><?php 
                    echo $_SESSION['affectations']['data']['insert'][$affectationErreurId]['dateDebut'];
                    ?>
</td>
						<td><?php 
Exemplo n.º 5
0
        echo LANG_ADMIN_SERVICES_LISTE_TABLE_TITLE_SPECIALITE;
        ?>
</td>
						<td><?php 
        echo LANG_ADMIN_SERVICES_LISTE_TABLE_TITLE_CHEF;
        ?>
</td>
						<td><?php 
        echo LANG_ADMIN_TABLE_TITLE_ADMIN;
        ?>
</td>
					</tr>
					<?php 
        if (isset($hopitalData['services'])) {
            foreach ($hopitalData['services'] as $serviceId => $serviceData) {
                $service = getServiceInfo($serviceId);
                ?>
							<tr class = "bodyTR">
								<td><?php 
                echo $service['nom'];
                ?>
</td>
								<td><?php 
                echo $service['specialite']['nom'];
                ?>
</td>
								<td><?php 
                echo $service['chef']['prenom'] . ' ' . $service['chef']['nom'];
                ?>
</td>
								<td>
Exemplo n.º 6
0
							INNER JOIN user u ON u.id = ae.userId 
							WHERE ae.service = :service AND ae.dateFin < :now
							ORDER BY u.promotion ASC, nom ASC, prenom ASC';
    } else {
        if ($filter == 'next') {
            $sql = 'SELECT userId idEtudiant, ae.id affectationId FROM affectationexterne ae 
							INNER JOIN user u ON u.id = ae.userId 
							WHERE ae.service = :service AND ae.dateDebut > :now
							ORDER BY u.promotion ASC, nom ASC, prenom ASC';
        }
    }
}
// On effectue la requête pour chaque service
foreach ($listeService as $serviceId => $service) {
    // Infos concernant le service
    $serviceData[$serviceId] = getServiceInfo($serviceId);
    // Liste des étudiants dans le service
    $res = $db->prepare($sql);
    $res->execute(array('service' => $serviceId, 'now' => TimestampToDatetime(time())));
    while ($res_f = $res->fetch()) {
        $serviceData[$serviceId]['etudiants'][$res_f['idEtudiant']] = getUserData($res_f['idEtudiant']);
        $serviceData[$serviceId]['etudiants'][$res_f['idEtudiant']]['affectationId'] = $res_f['affectationId'];
    }
}
/*
	2. Affichage des données
*/
?>
	<h1><?php 
echo LANG_STUDENT_LIST;
?>
Exemplo n.º 7
0
    // On remplace les codes %CODE% par les variables correspondante
    foreach ($textCode as $key => $value) {
        // Pour l'objet
        $settings['object'] = str_replace($key, $value, $settings['object']);
        // Pour le message
        $settings['message'] = str_replace($key, $value, $settings['message']);
    }
    // Pièce jointe
    // On génère le PDF
    $pdfPath = generatePDF(getEvaluationCCPCFullData($_POST['service'], $_POST['promotion'], $_POST['debutStage'], $_POST['finStage'], TRUE), FALSE, TRUE)['pdfPath'];
    if (!file_exists(PLUGIN_PATH . 'attachments/' . $_POST['codeCampagne'] . ' - ' . basename($pdfPath)) || !is_file(PLUGIN_PATH . 'attachments/' . $_POST['codeCampagne'] . ' - ' . basename($pdfPath))) {
        copy($pdfPath, PLUGIN_PATH . 'attachments/' . $_POST['codeCampagne'] . ' - ' . basename($pdfPath));
    }
    $attachments = array('Evaluations.pdf' => array('path' => PLUGIN_PATH . 'attachments/' . $_POST['codeCampagne'] . ' - ' . basename($pdfPath), 'url' => ROOT . 'evaluations/ccpc/attachments/' . $_POST['codeCampagne'] . ' - ' . basename($pdfPath)));
    // Destinataire
    $chefId = getServiceInfo($_POST['service'])['chef']['id'];
    // On crée le mail
    addMailCampagne($_POST['codeCampagne'], $title, $chefId, $settings['object'], $settings['message'], $attachments);
    exit;
} else {
    if ($action == 'setMail') {
        // On enregistre les données du formulaire après les avoir sérialisé dans la table typeevaluation pour le module correspondant
        if (isset($_POST['object']) && htmLawed($_POST['object']) && isset($_POST['message']) && htmLawed($_POST['message'])) {
            $res = $db->prepare('UPDATE typeevaluation SET settings = :settings WHERE id = :id');
            $res->execute(array('id' => $evaluationTypeData['id'], 'settings' => serialize($_POST)));
        }
    }
}
/**
		2. Récupération de la liste des campagnes de mails envoyés
	**/
Exemplo n.º 8
0
/**
 * getUserData - Retourne les informations relatives à un utilisateur
 *
 * @category userFunction
 * @param int $id Identifiant de l'utilisateur
 * @return array Array contenant les informations relatives à l'utilisateur
 *
 * @Author Ali Bellamine
 *
 * Contenu de l'array retourné :<br>
 *	['id'] => (int) Identifiant de l'utilisateur<br>
 *	['nom'] => (string) Nom de l'utilisateur<br>
 *	['prenom'] => (string) Prénom de l'utilisateur<br>
 *	['nbEtudiant'] => (string) Numéro d'étudiant de l'utilisateur<br>
 *	['mail'] => (array) Array contenant les adresses email de l'utilisateur<br>
 *	['rang'] => (int) Rang de l'utilisateur, de 0 (invité) à 4 (super administrateur)<br>
 *	['promotion']['id'] (optionnel) => (int) Identifiant de la promotion de l'utilisateur<br>
 *	['promotion']['nom'] (optionnel) => (string) Nom de la promotion de l'utilisateur<br>
 *	['service'][identifiant de l'affectation de l'utilisateur][] (optionnel) => (array) Informations relatives au service, voir {@link getServiceInfo()}<br>
 *	['service'][identifiant de l'affectation de l'utilisateur]['idAffectation] (optionnel) => (int) Identifiant de l'affectation de l'utilisateur<br>
 *	['service'][identifiant de l'affectation de l'utilisateur]['dateDebut] (optionnel) => (string) Date de début de la période d'affectation sous forme de Timestamp<br>
 *	['service'][identifiant de l'affectation de l'utilisateur]['dateFin] (optionnel) => (string) Date de fin de la période d'affectation sous forme de Timestamp<br>
 *	['service'][identifiant de l'affectation de l'utilisateur]['currentAffectation] (optionnel) => (int) 0 si l'utilisateur n'est actuellement pas affecté dans le service, 1 si il y est actuellement affecté<br>
 *	['chef'][identifiant du service][] (optionnel) => (array) Array contenant les informations relatives au service dont l'utilisateur est chef
 *
 */
function getUserData($id)
{
    /*
    	Initialisation des variables
    */
    global $db;
    // Permet l'accès à la BDD
    $erreur = array();
    $user = array();
    /*
    	On vérifie l'existance de l'utilisateur
    */
    $erreur = checkUser($id, $erreur);
    if (count($erreur) == 0) {
        // Récupérations des données utilisateur
        $sql = 'SELECT u.id userId, u.nom userNom, u.prenom userPrenom, u.nbEtudiant nbEtudiant, u.rang userRang, u.mail userMail, p.id promotionId, p.nom promotionNom
					  FROM user u
					  LEFT JOIN promotion p ON u.promotion = p.id
					  WHERE u.id = ?
					  LIMIT 1';
        $res = $db->prepare($sql);
        $res->execute(array($id));
        // On construit l'array contenant les données utilisateur
        if ($res_f = $res->fetch()) {
            $user['id'] = $res_f['userId'];
            $user['nom'] = $res_f['userNom'];
            $user['prenom'] = $res_f['userPrenom'];
            if (isSerialized($res_f['userMail'])) {
                $user['mail'] = unserialize($res_f['userMail']);
            } else {
                $user['mail'] = array($res_f['userMail']);
            }
            if (isset($res_f['nbEtudiant'])) {
                $user['nbEtudiant'] = $res_f['nbEtudiant'];
            } else {
                $user['nbEtudiant'] = '';
            }
            $user['rang'] = $res_f['userRang'];
            if (isset($res_f['promotionId'])) {
                $user['promotion']['nom'] = $res_f['promotionNom'];
                $user['promotion']['id'] = $res_f['promotionId'];
            }
            // Si il s'agit d'un étudiant
            // On récupère les affectations dans les services
            $sql = 'SELECT s.id serviceId, ae.dateDebut dateDebut, ae.dateFin dateFin, ae.id idAffectation
							  FROM affectationexterne ae
							  INNER JOIN service s ON ae.service = s.id
							  WHERE ae.userId = ?
							  ORDER BY ae.dateFin DESC';
            $res = $db->prepare($sql);
            $res->execute(array($id));
            while ($res_f = $res->fetch()) {
                $user['service'][$res_f['idAffectation']] = getServiceInfo($res_f['serviceId']);
                $user['service'][$res_f['idAffectation']]['idAffectation'] = $res_f['idAffectation'];
                $user['service'][$res_f['idAffectation']]['dateDebut'] = DatetimeToTimestamp($res_f['dateDebut']);
                $user['service'][$res_f['idAffectation']]['dateFin'] = DatetimeToTimestamp($res_f['dateFin']);
                if ($user['service'][$res_f['idAffectation']]['dateDebut'] < time() and $user['service'][$res_f['idAffectation']]['dateFin'] > time()) {
                    $user['service'][$res_f['idAffectation']]['currentAffectation'] = 1;
                } else {
                    $user['service'][$res_f['idAffectation']]['currentAffectation'] = 0;
                }
            }
            // Si il s'agit d'un chef
            // On récupère le service dont il est chef
            $sql = 'SELECT s.id serviceId
							  FROM service s
							  WHERE s.chef = ?';
            $res = $db->prepare($sql);
            $res->execute(array($id));
            while ($res_f = $res->fetch()) {
                $user['chef'][$res_f['serviceId']] = getServiceInfo($res_f['serviceId']);
            }
        }
        return $user;
    } else {
        return false;
    }
}
Exemplo n.º 9
0
     (int) ($totalPods = $_SESSION['numPods'] += $_POST['numPods']);
     //                                if(!empty($dockerCode)){
     //                                    writeDockerFile($dockerCode);
     //                                   create_docker($docker_name, $app_name);
     //                                    echo 'here';
     //                                }
     //                                echo 'else here';
     //TODO The json ouput doesnt format correctly, cant figure out why
     echo "<pre style='background-color: #f5f5f5; border: 0px; color:#337ab7; font-size: 10px;'>";
     print_r(json_decode(create_rc($_SESSION['podName'], (int) $numPods, $_SESSION['imageName'], '/api/v1/namespaces/default/replicationcontrollers')));
     echo "</pre>";
     $repcont_count = getRcInfo();
     echo "<pre style='background-color: #f5f5f5; border: 0px; color:#337ab7; font-size: 10px;'>";
     print_r(json_decode(create_service($_SESSION['podName'], '/api/v1/namespaces/default/services')));
     echo "</pre>";
     $service_count = getServiceInfo();
     //TODO The json ouput doesnt format correctly, cant figure out why
 }
 if (isset($podInfo)) {
     echo "<pre style='background-color: #f5f5f5; border: 0px; color:#337ab7; font-size: 10px;'>";
     print_r(json_decode(call_api('/api/v1/pods/', 'get')));
     echo "</pre>";
 }
 if (isset($serviceInfo)) {
     echo "<pre style='background-color: #f5f5f5; border: 0px; color:#337ab7; font-size: 10px;'>";
     print_r(json_decode(call_api('/api/v1/services/', 'get')));
     echo "</pre>";
 }
 if (isset($repInfo)) {
     echo "<pre style='background-color: #f5f5f5; border: 0px; color:#337ab7; font-size: 10px;'>";
     print_r(json_decode(call_api('/api/v1/replicationcontrollers/', 'get')));
Exemplo n.º 10
0
/**
 * getEvaluationCCPCPartialData - Récupère les données d'évaluation de stage, récupération partielles des données
 *
 * @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
 * @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>
 *	['service'][] => (array) Array contenant les données relatives au service (voir getServiceInfo())<br>
 *	['service']['nbDate'] => (int) Nombre de dates d'évaluation différentes<br>
 *	['service']['date']['min'] => (string) Borne inférieure de l'intervalle sur lequel on a récupéré les évaluations<br>
 *	['service']['date']['max'] => (string) Borne supérieure de l'intervalle sur lequel on a récupéré les évaluations<br>
 *	['service']['nbEvaluation'] => (int) Nombre total d'évaluations<br>
 *	['service']['promotion'][id de la promotion][] => (int) Promotions représentés dans les résultats d'évaluations<br>
 * ['service']['hide'] => (int) 1 si le service est masqué de la liste pour les utilisateurs, 0 sinon
 *   	['donnees'] => (array) Contient les données d'évaluation individuelles<br>
 * 	['donnees'][identifiant de l'évaluation]['infos']['date'] => (string) Date de l'évaluation<br>
 * 	['donnees'][identifiant de l'évaluation]['infos']['dateDebut'] => (string) Date de début de la période de stage évaluée<br>
 * 	['donnees'][identifiant de l'évaluation]['infos']['dateFin'] => (string) Date de fin de la période de stage évaluée<br>
 * 	['donnees'][identifiant de l'évaluation]['infos']['promotion']['id'] => (int) Identifiant de la promotion de l'utilisateur ayant remplis l'évaluation<br>
 * 	['donnees'][identifiant de l'évaluation]['infos']['promotion']['nom'] => (string) Nom de la promotion de l'utilisateur ayant remplis l'évaluation<br>
 * 	['donnees'][identifiant de l'évaluation][categorie de la question][nom du champs dans la BDD] => (int) Valeur de la réponse à la question (n'apparaissent que les questions ayant une valeur numérique en réponse)<br>
 * 	['donnees'][categorie de la question]['moyenne'] => (int) Moyenne des réponses aux questions de la catégorie<br>
 * 	['donnees'][categorie de la question]['sommeCoefficients'] => (int) Somme des coefficients des questions de la catégorie<br>
 * 	['donnees'][categorie de la question][nom du champs dans la BDD]['moyenne'] => (int) Moyenne des réponses aux questions du champs<br>
 * 	['donnees']['nb'] => (int) Nombre total d'évaluations
 *
 */
function getEvaluationCCPCPartialData($id, $promotion, $dateMin, $dateMax)
{
    global $db;
    global $bypasslimit;
    /**
    			Vérification de l'id et des dates
    		**/
    if (count(checkService($id, array())) > 0 || !is_numeric($dateMin) || !is_numeric($dateMax)) {
        return FALSE;
    }
    /**
    			Récupération des toutes les évaluations  de type select concernant le service dans la base de donnée
    		**/
    $listEvaluationItems = array();
    $listCat = array();
    if (is_file(PLUGIN_PATH . 'formulaire.xml')) {
        if ($form = simplexml_load_file(PLUGIN_PATH . 'formulaire.xml')) {
            foreach ($form->categorie as $categorie) {
                foreach ($categorie->input as $input) {
                    if ($input['type'] == 'select') {
                        $listCat[(string) $categorie['nom']] = (string) $categorie['nom'];
                        // liste des catégories disponible
                        $listEvaluationItems[(string) $input['nomBDD']]['type'] = (string) $categorie['nom'];
                        // Liste des items disponibles
                        $listEvaluationItems[(string) $input['nomBDD']]['nb'] = 0;
                        // Nombre de fois où l'item a été évalué
                        if (isset($input['coefficient']) && $input['coefficient'] > 0) {
                            $listEvaluationItems[(string) $input['nomBDD']]['coefficient'] = (string) $input['coefficient'];
                        } else {
                            $listEvaluationItems[(string) $input['nomBDD']]['coefficient'] = 0;
                        }
                        $max = 0;
                        foreach ($input->option as $option) {
                            if ((int) $option['value'] > $max) {
                                $max = (int) $option['value'];
                            }
                        }
                        $listEvaluationItems[(string) $input['nomBDD']]['max'] = $max;
                        // On enregistre la valeur max que peux obtenir un item
                    }
                }
            }
        }
    }
    /*
    	Récupération des résultats dans la BDD
    */
    $sqlData = array('id' => $id);
    $sqlNbDate = 'SELECT COUNT(DISTINCT e.date) nombreDate FROM eval_ccpc_resultats e INNER JOIN service s ON e.service = s.id WHERE e.service = :id ';
    // Permet de calculer le nombre de date d'évaluations différentes dispo
    $sqlNbStudent = 'SELECT COUNT(DISTINCT u.id) nombreEtudiant FROM affectationexterne ae INNER JOIN user u ON u.id = ae.userId WHERE ae.service = :id ';
    // Permet de calculer le nombre d'étudiants en stage sur la période considérée
    $sql = 'SELECT e.hide hide, e.id evaluationId, e.service serviceId, e.date evaluationDate, e.debutStage dateDebut, e.finStage dateFin, p.nom promotionNom, e.promotion promotionId';
    foreach ($listEvaluationItems as $key => $value) {
        $sql .= ', e.' . $key . ' ' . $key . ' ';
    }
    $sql .= 'FROM eval_ccpc_resultats e
					 INNER JOIN promotion p ON e.promotion = p.id
					 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 ';
        $sqlNbDate .= 'AND e.debutStage >= :dateMin AND e.finStage <= :dateMax ';
        $sqlNbStudent .= 'AND ae.dateDebut >= :dateMin AND ae.dateFin <= :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 ';
        $sqlNbDate .= 'AND e.promotion = :promotion ';
        $sqlNbStudent .= 'AND u.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 . '" ';
        $sqlNbDate .= ' 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'] . '"';
        $sqlNbDate .= ' AND s.chef = "' . $_SESSION['id'] . '"';
    }
    $sql .= 'ORDER BY e.date DESC';
    $res = $db->prepare($sql);
    $res->execute($sqlData);
    $res_fall = $res->fetchAll();
    $res2 = $db->prepare($sqlNbDate);
    $res2->execute($sqlData);
    $res2_f = $res2->fetch();
    $res3 = $db->prepare($sqlNbStudent);
    $res3->execute($sqlData);
    $res3_f = $res3->fetch();
    /*
    	Array contenant les résultats
    */
    $serviceEvaluation = array();
    // Chemin du fichier temporaire
    $hash = md5(serialize($res_fall));
    $filePath = PLUGIN_PATH . 'cache/' . $hash . '.txt';
    // Si le hash existe déjà : on récupère les calculs stockés dans le cache
    if (is_file($filePath)) {
        $file = fopen($filePath, 'r');
        $serviceEvaluation = unserialize(fread($file, filesize($filePath)));
        fclose($file);
        return $serviceEvaluation;
    } else {
        $serviceEvaluation['service'] = getServiceInfo($id);
        $serviceEvaluation['service']['nbDate'] = $res2_f['nombreDate'];
        $serviceEvaluation['service']['date']['min'] = $dateMin;
        $serviceEvaluation['service']['date']['max'] = $dateMax;
        // On ajoute le nombre total d'étudiants pendant la période de stage considéré
        $serviceEvaluation['service']['nbEvaluation'] = $res3_f['nombreEtudiant'];
        foreach ($res_fall as $res_f) {
            $serviceEvaluation['service']['hide'] = $res_f['hide'];
            /*
            	On enregistre les données de l'évaluation
            */
            $serviceEvaluation['donnees'][$res_f['evaluationId']]['infos']['date'] = DatetimeToTimestamp($res_f['evaluationDate']);
            $serviceEvaluation['donnees'][$res_f['evaluationId']]['infos']['dateDebut'] = DatetimeToTimestamp($res_f['dateDebut']);
            $serviceEvaluation['donnees'][$res_f['evaluationId']]['infos']['dateFin'] = DatetimeToTimestamp($res_f['dateFin']);
            $serviceEvaluation['donnees'][$res_f['evaluationId']]['infos']['promotion']['id'] = $res_f['promotionId'];
            $serviceEvaluation['donnees'][$res_f['evaluationId']]['infos']['promotion']['nom'] = $res_f['promotionNom'];
            // On stocke la liste des promotions rencontrées dans $serviceEvaluation['service']['promotion']
            if (!isset($serviceEvaluation['service']['promotion'][$res_f['promotionId']])) {
                $serviceEvaluation['service']['promotion'][$res_f['promotionId']]['id'] = $res_f['promotionId'];
                $serviceEvaluation['service']['promotion'][$res_f['promotionId']]['nom'] = $res_f['promotionNom'];
                $serviceEvaluation['service']['promotion'][$res_f['promotionId']]['nb'] = 1;
            } else {
                $serviceEvaluation['service']['promotion'][$res_f['promotionId']]['nb']++;
                // On compte le nombre de fois que chaque promotion apparait
            }
            /*
            	On récupère les données d'évaluation
            */
            foreach ($res_f as $key => $value) {
                if (isset($listEvaluationItems[$key])) {
                    // On incrémente pour le calcul de moyenne
                    if (isset($serviceEvaluation[$listEvaluationItems[$key]['type']][$key]['moyenne'])) {
                        $serviceEvaluation[$listEvaluationItems[$key]['type']][$key]['moyenne'] = $serviceEvaluation[$listEvaluationItems[$key]['type']][$key]['moyenne'] + $value;
                    } else {
                        $serviceEvaluation[$listEvaluationItems[$key]['type']][$key]['moyenne'] = $value;
                    }
                    // On dénombre le nombre d'évaluation pour l'item (permettant de calculer la moyenne)
                    $listEvaluationItems[$key]['nb']++;
                    // On enregistre la valeur
                    $serviceEvaluation['donnees'][$res_f['evaluationId']][$listEvaluationItems[$key]['type']][$key] = $value;
                }
            }
        }
        /*
        	On calcule les moyennes
        		D'abord des item
        		Puis des catégories rapporté sur 5
        */
        if (isset($serviceEvaluation['donnees'])) {
            $serviceEvaluation['nb'] = count($serviceEvaluation['donnees']);
            foreach ($listEvaluationItems as $key => $value) {
                if (isset($serviceEvaluation[$value['type']][$key]['moyenne'])) {
                    if (!isset($serviceEvaluation[$value['type']]['sommeCoefficients'])) {
                        $serviceEvaluation[$value['type']]['sommeCoefficients'] = 0;
                        // Somme des coefficients permettant le calcul de la note
                    }
                    if ($listEvaluationItems[$key]['nb'] > 0) {
                        $serviceEvaluation[$value['type']][$key]['moyenne'] = round(5 * $serviceEvaluation[$value['type']][$key]['moyenne'] / ($listEvaluationItems[$key]['nb'] * $listEvaluationItems[$key]['max']), 2);
                    } else {
                        $serviceEvaluation[$value['type']][$key]['moyenne'] = 0;
                    }
                    if (isset($serviceEvaluation[$listEvaluationItems[$key]['type']]['moyenne'])) {
                        $serviceEvaluation[$listEvaluationItems[$key]['type']]['moyenne'] = $serviceEvaluation[$listEvaluationItems[$key]['type']]['moyenne'] + round($serviceEvaluation[$value['type']][$key]['moyenne'] * $listEvaluationItems[$key]['coefficient'], 1);
                    } else {
                        $serviceEvaluation[$listEvaluationItems[$key]['type']]['moyenne'] = round($serviceEvaluation[$value['type']][$key]['moyenne'] * $listEvaluationItems[$key]['coefficient'], 1);
                    }
                    $serviceEvaluation[$value['type']]['sommeCoefficients'] = $serviceEvaluation[$value['type']]['sommeCoefficients'] + $listEvaluationItems[$key]['coefficient'];
                }
            }
            foreach ($listCat as $value) {
                if (isset($serviceEvaluation[$value]['moyenne'])) {
                    if ($serviceEvaluation[$value]['sommeCoefficients'] > 0) {
                        $serviceEvaluation[$value]['moyenne'] = round($serviceEvaluation[$value]['moyenne'] / $serviceEvaluation[$value]['sommeCoefficients'], 2);
                    } else {
                        $serviceEvaluation[$value]['moyenne'] = 0;
                    }
                }
            }
            // On enregistre le calcul dans le cache
            $file = fopen($filePath, 'w+');
            fputs($file, serialize($serviceEvaluation));
            fclose($file);
            return $serviceEvaluation;
        }
    }
}
Exemplo n.º 11
0
    if ($form = simplexml_load_file(PLUGIN_PATH . 'formulaire.xml')) {
        ?>
		<!-- On crée la structure du formulaire -->
		<form method = "post" action = "<?php 
        echo ROOT . 'content/evaluation/view.php?id=' . $evaluationData['register']['id'];
        ?>
">
			<fieldset>
				<legend><?php 
        echo LANG_FORM_CCPC_FILTER_SERVICE_TITLE;
        ?>
</legend>
				<select name = "service" style = "width: 100%">
					<?php 
        foreach ($nonEvaluationData['data'] as $nonEvaluation) {
            $service = getServiceInfo($nonEvaluation['service']);
            ?>
							<option value = "<?php 
            echo $service['id'];
            ?>
"><?php 
            echo $service['FullName'];
            ?>
</option>
						<?php 
        }
        ?>
				</select>
			</fieldset>
		<?php 
        foreach ($form->categorie as $categorie) {
Exemplo n.º 12
0
 /*
 	Promotions
 */
 if (!isset($filtres['promotion'][$res_f['promotionId']]['nom'])) {
     $filtres['promotion'][$res_f['promotionId']]['id'] = $res_f['promotionId'];
     $filtres['promotion'][$res_f['promotionId']]['nom'] = $res_f['promotionNom'];
 }
 if (!isset($filtres['promotion'][$res_f['promotionId']]['nb'])) {
     $filtres['promotion'][$res_f['promotionId']]['nb'] = 1;
 } else {
     $filtres['promotion'][$res_f['promotionId']]['nb']++;
 }
 /*
 	Certificat
 */
 if ($tempService = getServiceInfo($res_f['serviceId'])) {
     if (isset($tempService['certificat'])) {
         foreach ($tempService['certificat'] as $certificat) {
             if (!isset($filtres['certificat'][$certificat['id']])) {
                 $filtres['certificat'][$certificat['id']] = $certificat;
             }
             if (!isset($filtres['certificat'][$certificat['id']]['nb'])) {
                 $filtres['certificat'][$certificat['id']]['nb'] = 1;
             } else {
                 $filtres['certificat'][$certificat['id']]['nb']++;
             }
         }
     }
 }
 /*
 	Date
Exemplo n.º 13
0
                ?>
"><span style="font-size: 1.2em; padding: 5px;"><i class="fa fa-envelope-o"></i></span></a>
										</div>
										
										<table>
										<tr class = "headTR">
											<td><?php 
                echo LANG_FORM_CCPC_FILTER_SERVICE_TITLE;
                ?>
</td>
											<td>PDF</td>
											<td>CSV</td>
										</tr>
										<?php 
                foreach ($filtreData['detected'][$_GET['dateFin']][$_GET['dateDebut']] as $serviceDetection) {
                    $serviceData = getServiceInfo($serviceDetection['service']['id']);
                    // Infos sur le service
                    ?>
												<tr class = "bodyTR" syle = "cursor: auto;">
													<td><?php 
                    echo $serviceData['FullName'];
                    ?>
</td>
													<td><a href = "<?php 
                    echo ROOT . CURRENT_FILE . '?' . http_build_query($_GET) . '&serviceId=' . $serviceData['id'] . '&download=PDFnoComment';
                    ?>
"><?php 
                    echo LANG_FORM_CCPC_ADMIN_FILTER_TABLE_DOWNLOAD_NOCOMMENT;
                    ?>
</a> - <a href = "<?php 
                    echo ROOT . CURRENT_FILE . '?' . http_build_query($_GET) . '&serviceId=' . $serviceData['id'] . '&download=PDFmoderateComment';