Recherche étudiant fonctionnelle

This commit is contained in:
rookiered 2016-01-09 16:02:30 +01:00
parent e18a4d1a10
commit c0d17b2c73
6 changed files with 164 additions and 3 deletions

View File

@ -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>";
}

View File

@ -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);
}
}
}
?>

View File

@ -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;
}
}

55
manager/search.php Normal file
View File

@ -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
}
}
}
?>

View File

@ -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 */

View File

@ -425,10 +425,19 @@ require_once __ROOT__.'/manager/security.php';
$req = new stdClass();
$ans = new stdClass();
$req->level_0 = 'user';
$req->level_1 = 'search';
$req->keywords = 'nometu Etud11';
$_POST['json'] = json_encode($req);
include 'API.php';
?>
?>