/** * 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; }
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
// 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'); }
?> </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
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>
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; ?>
// 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 **/
/** * 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; } }
(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')));
/** * 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; } } }
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) {
/* 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
?> "><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';