Exemplo n.º 1
0
/**
 * 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);
        }
    }
}
Exemplo n.º 2
0
/**
		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);