Recherche étudiant fonctionnelle
This commit is contained in:
parent
e18a4d1a10
commit
c0d17b2c73
7
API.php
7
API.php
|
@ -1,4 +1,4 @@
|
|||
<?php define('__ROOT__', dirname(__FILE__) );
|
||||
<?php //define('__ROOT__', dirname(__FILE__) );
|
||||
require_once __ROOT__.'/manager/security.php';
|
||||
|
||||
|
||||
|
@ -106,7 +106,10 @@ require_once __ROOT__.'/manager/security.php';
|
|||
|
||||
|
||||
// on envoie (affiche) l'objet en JSON
|
||||
echo json_encode($answer);
|
||||
//echo json_encode($answer);
|
||||
echo "<pre>";
|
||||
print_r($answer);
|
||||
echo "</pre>";
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -1317,6 +1317,46 @@ class DataBase{
|
|||
|
||||
}
|
||||
|
||||
/***************************************************************************************************
|
||||
|
||||
** ad88888ba 88888888888 db 88888888ba ,ad8888ba, 88 88 **
|
||||
** d8" "8b 88 d88b 88 "8b d8"' `"8b 88 88 **
|
||||
** Y8, 88 d8'`8b 88 ,8P d8' 88 88 **
|
||||
** `Y8aaaaa, 88aaaaa d8' `8b 88aaaaaa8P' 88 88aaaaaaaa88 **
|
||||
** `"""""8b, 88""""" d8YaaaaY8b 88""""88' 88 88""""""""88 **
|
||||
** `8b 88 d8""""""""8b 88 `8b Y8, 88 88 **
|
||||
** Y8a a8P 88 d8' `8b 88 `8b Y8a. .a8P 88 88 **
|
||||
** "Y88888P" 88888888888 d8' `8b 88 `8b `"Y8888Y"' 88 88 **
|
||||
|
||||
*****************************************************************************************************/
|
||||
|
||||
public static function searchForUsers($nom){
|
||||
|
||||
$retour = userRepo::search($nom);
|
||||
if (!$retour || $retour === array()) {
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
//On classe les résultats en fonction de si c'est un étudiant ou bien un professeur
|
||||
$etudiants = array();
|
||||
foreach ($retour as $num => $user) {
|
||||
//On supprime tous les administrateurs des résultats
|
||||
if($user['droits'] == 'admin'){
|
||||
unset($retour[$num]);
|
||||
}
|
||||
//On récupère les étudiants dans un tableau différent et on efface les entrées dans le tableau retour
|
||||
elseif ($user['droits'] == 'student') {
|
||||
$etudiants[] = $user;
|
||||
unset($retour[$num]);
|
||||
}
|
||||
}
|
||||
$retour[] = $etudiants;
|
||||
return array_values($retour);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
|
@ -498,4 +498,32 @@ class userRepo{
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Fonction search : recherche dans la bae de données un utilisateur
|
||||
* Pour se faire on recherche un mot clé contenu dans le nom ou le prénom de l'utilisateur
|
||||
*
|
||||
* @param $mot: le mot clé de la recherche associée
|
||||
* @return le tableau des résultats, ou false en cas d'erreur
|
||||
*==================================================================================================>
|
||||
*/
|
||||
public static function search($mot){
|
||||
//Vérification du paramètre:
|
||||
if (! checkParam($mot, '<string>')) {
|
||||
return false;
|
||||
}
|
||||
//On recherche dans la table utilisateur dans les noms et prénoms qui contiendraient une ccurence de "mot"
|
||||
$statement = DataBase::getPDO()->prepare("SELECT * FROM utilisateur".
|
||||
" WHERE nom LIKE :nom OR :prenom OR nom = :mot OR prenom = :mot ;");
|
||||
$ret = $statement->execute(array(':nom' => '%'.$mot.'%',
|
||||
':prenom' => '%'.$mot.'%',
|
||||
':mot' => $mot));
|
||||
if($ret)
|
||||
return $statement->fetchAll();
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
<?php require_once __ROOT__.'/manager/security.php';
|
||||
|
||||
|
||||
class searchManager {
|
||||
|
||||
|
||||
function search($request, $answer) {
|
||||
//On vérifie les paramètres
|
||||
if (!isset($request->keywords) || $request->keywords == '' || !checkParam($request->keywords, '<string>') {
|
||||
$answer->request = 'error_keyword';
|
||||
return null;
|
||||
}
|
||||
|
||||
//Récupération des mots clés envoyés
|
||||
$key = explode(' ', $request->keywords);
|
||||
|
||||
//Cas d'utilisation 1 : ADMINISTRATEUR
|
||||
if (permission('admin') || permission('master')) {
|
||||
//Préparation de la variable contenant les résultats
|
||||
$resultats = array('prof' => array(), 'etudiant' => array(),'module' => array(), 'groupe' => array());
|
||||
|
||||
//Recherche du nom de l'étudiant - prénom de l'étudiant (dans les deux ordres)
|
||||
$etudiants = Database::
|
||||
|
||||
//Recherche du nom de l'enseignant - prénom de l'enseignant
|
||||
$profs = Database::listeUtilisateursRole();
|
||||
foreach ($profs as $prof) {
|
||||
foreach ($key as $mot) {
|
||||
//On regarde s'il y a correspondance avec les différents paramètres de recherche
|
||||
if (strpos(strtolower($prof['prenom']), strtolower($mot)) !== false
|
||||
|| strpos(strtolower($prof['nom']), strtolower($mot)) !== false ) {
|
||||
$resultats['prof'][] = $prof;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Recherche dans le nom du module - numéro module
|
||||
$modules = Database::getExhaustiveModuleList();
|
||||
foreach ($mud as $mod) {
|
||||
if (strpos(strtolower($mod['prenom']), strtolower($mot)) !== false) {
|
||||
$resultats['prof'][] = $prof;
|
||||
}
|
||||
}
|
||||
|
||||
//Recherche dans le nom du groupe
|
||||
$groupes
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
?>
|
|
@ -184,7 +184,33 @@ class userManager{
|
|||
break;
|
||||
|
||||
|
||||
/***********************/
|
||||
/* MOTEUR DE RECHERCHE */
|
||||
/***********************/
|
||||
case 'search':
|
||||
//On vérifie qu'on a bien les mots clés
|
||||
if (isset($request->keywords) && $request->keywords != '') {
|
||||
//On explode les mots clés
|
||||
$keys = explode(' ', $request->keywords);
|
||||
|
||||
//Pour chaque mot clé on lance une recherche dans la bdd
|
||||
foreach ($keys as $mot) {
|
||||
$retour = null;
|
||||
//On cherche d'abord en fonction du nom...
|
||||
$retour = DataBase::searchForUsers($mot);
|
||||
//Si il y a un résultat de recherche alors on le stock dans résultat
|
||||
if ($retour === false) {
|
||||
$answer->results = null;
|
||||
}
|
||||
else {
|
||||
$answer->results = $retour;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
$answer->request = 'no_keywords';
|
||||
}
|
||||
break;
|
||||
|
||||
/***********/
|
||||
/* DEFAULT */
|
||||
|
|
Loading…
Reference in New Issue