/** * eval_ccpc_applyFilter - Test l'ensemble des requêtes pour un service, et enregistre les filtres qui s'y appliquent dans la base de donnée * * @category : eval_ccpc_functions * @param int $id Identifiant du service * @param int $promotion Identifiant de la promotion pour laquelle les données seront restreinte si le filtre presente une restriction de promotion * @param string $debutStage Borne inférieur de l'intervalle temporel considéré, sous forme de timestamp * @param string $finStage Borne supérieure de l'intervalle temporel considéré, sous forme de timestamp * @return boolean TRUE si l'opération s'est déroulée avec succès, FALSE sinon * * @Author Ali Bellamine * */ function eval_ccpc_applyFilter($id, $promotion, $dateDebut, $dateFin) { /** Prépare les variables **/ // Base de donnée global $db; // Objet XML du formulaire d'évaluation if (is_file(PLUGIN_PATH . 'formulaire.xml')) { $form = simplexml_load_file(PLUGIN_PATH . 'formulaire.xml'); } // Liste des filtres $filtres = eval_ccpc_getFilterList(); // Données d'évaluation // Pour la promotion $dataPromo = getEvaluationCCPCFullData($id, $promotion, $dateDebut, $dateFin, FALSE); // Sans la promotion (toutes les promotions) $dataAllPromo = getEvaluationCCPCFullData($id, FALSE, $dateDebut, $dateFin, FALSE); if (!isset($form)) { return FALSE; } /** Effectue les test **/ foreach ($filtres as $filtre) { $res = FALSE; if ($filtre['promotion'] == 0) { $res = eval_ccpc_exploreQuery($filtre['query'], $form, $dataAllPromo); } else { $res = eval_ccpc_exploreQuery($filtre['query'], $form, $dataPromo); } // Si le filtre est vérifié if ($res == 'success') { /* On enregistre le succès dans la BDD si il n'est pas déjà présent */ $sqlData = array('service' => $id, 'filtre' => $filtre['id'], 'dateDebut' => TimestampToDatetime($dateDebut), 'dateFin' => TimestampToDatetime($dateFin)); // On vérifie si il est déjà présent if ($filtre['promotion'] == 0) { $sql = 'SELECT count(*) FROM eval_ccpc_filtres_detected WHERE id_service = :service AND id_filtre = :filtre AND debutStage = :dateDebut AND finStage = :dateFin LIMIT 1'; } else { $sql = 'SELECT count(*) FROM eval_ccpc_filtres_detected WHERE id_service = :service AND id_filtre = :filtre AND debutStage = :dateDebut AND finStage = :dateFin AND promotion = :promotion LIMIT 1'; $sqlData['promotion'] = $promotion; } $res = $db->prepare($sql); $res->execute($sqlData); if ($res_f = $res->fetch()) { if ($res_f[0] == 0) { // On insert dans la base de donnée $sqlData['promotion'] = $promotion; // Dans tous les cas on enregistre la promotion $sql = 'INSERT INTO eval_ccpc_filtres_detected (id_service, id_filtre, debutStage, finStage, promotion) VALUES (:service, :filtre, :dateDebut, :dateFin, :promotion)'; $res = $db->prepare($sql); $res->execute($sqlData); } } } else { // On le supprime de la BDD si il est présent $sqlData = array('service' => $id, 'filtre' => $filtre['id'], 'dateDebut' => TimestampToDatetime($dateDebut), 'dateFin' => TimestampToDatetime($dateFin)); if ($filtre['promotion'] == 0) { $sql = 'DELETE FROM eval_ccpc_filtres_detected WHERE id_service = :service AND id_filtre = :filtre AND debutStage = :dateDebut AND finStage = :dateFin LIMIT 1'; } else { $sql = 'DELETE FROM eval_ccpc_filtres_detected WHERE id_service = :service AND id_filtre = :filtre AND debutStage = :dateDebut AND finStage = :dateFin AND promotion = :promotion LIMIT 1'; $sqlData['promotion'] = $promotion; } $res = $db->prepare($sql); $res->execute($sqlData); } } }
/** 1. Récupération des données **/ unset($_GET['msg']); unset($_GET['erreur']); // Variable permettant la génération des fichiers $allowedDownloadAction = array('CSVmoderateComment' => array('type' => 'CSV', 'comment' => TRUE, 'moderation' => TRUE), 'CSVunmoderateComment' => array('type' => 'CSV', 'comment' => TRUE, 'moderation' => FALSE), 'PDFnoComment' => array('type' => 'PDF', 'comment' => FALSE, 'moderation' => FALSE), 'PDFmoderateComment' => array('type' => 'PDF', 'comment' => TRUE, 'moderation' => TRUE), 'PDFunmoderateComment' => array('type' => 'PDF', 'comment' => TRUE, 'moderation' => FALSE), 'all' => TRUE); // On récupère la variable action $allowedAction = array('view', 'add', 'edit', 'delete', 'mail'); if (isset($_GET['action']) && in_array($_GET['action'], $allowedAction)) { $action = $_GET['action']; } else { $action = 'list'; } // On récupère la liste des campagnes d'évaluations $listeFiltre = eval_ccpc_getFilterList(); // On récupère les donnée propre au filtre sélectionnée if (isset($_GET['filtreId']) && count(eval_ccpc_checkFiltre($_GET['filtreId'], array())) == 0) { $filtreData = eval_ccpc_getFilterDetails($_GET['filtreId']); } /** 2. Traitement des données de formulaire **/ $error = array(); // Suppression d'un filtre if ($action == 'delete') { // URL où rediriger à la fin $tempGET = $_GET; unset($tempGET['filtreId']); unset($tempGET['action']); $redirectURL = ROOT . CURRENT_FILE . '?' . http_build_query($tempGET);