Ewo-team / EWO-modules

2 stars 0 forks source link

Recherche de perso #7

Open Kamule42 opened 12 years ago

Kamule42 commented 12 years ago

Ce module va fournir un champ texte avec un système d'auto-complétion pour rechercher un perso par nom ou matricule. Au final, il doit pouvoir remonter le matricule (mais afficher le nom)

Il pourra faire cette recherche avec certains filtres près établis :

Ces clefs de recherche seront en minuscule, en anglais, et les sous sections seront séparées par des points. On aura aussi des alias pour simplifier la recherche par id : concrètement, le filtre "legion" et le "filtre" "legion.id" renvoient le même résultat.

Une chose a noter est qu'il faudra un seul point d'entré. Aussi ce module sera composé d'une partie utilisation (le champ texte et les backup js qui vont derrière) ainsi que d'une partie traitement, qui sera à exposer dans le sous dossier service (qui va regrouper de façon général tout les scripts qui fourniront des réponses Json et seront soit appelés en Ajax, soit par les API). La partie exposition se fera surement via routage dans l'appli principale (pour ne pas taper sur une url du type /modules/search/controller (l'url de base si on ne fait rien), mais plutôt sur /services/search/perso/)

On peut aussi penser à une couche de sécurité, mais elle se fera surement par injection du module de sécurité, même si la plupart de ces données seront exposées publiquement. Cette partie sécurité ne devra pas reposer sur des sessions. En effet, dans l'idée de pouvoir fournir ces données via une API, il faudra un système de token pour y accéder.

On peut composer les opérations avec des OR ou des AND, le type d'opération est donné en premier paramètre (s'il n'y en a pas on considère que c'est un AND). L'ordre des opération est géré par sous tableaux (voir commentaire suivant).

Kamule42 commented 12 years ago

Au final, l'utilisation devrait se faire ainsi :

Utilisation :

<?php
//Affichage d'un champ de recherche de perso ayant la même race et le même grade dans la légion
modules::run('seach/field', array(
    'name' => 'searchField'
    'id'      => 'seachField',
    'filter'   => array(
        'AND',
        'race' => '== '.$currentPerso->race, //Même race
        array(
            'OR',
            'legion.grade' => '< '.$currentPerso->legion->grade, //Grade inférieur dans la légion
            'grade' => '>= 4' //Grade d'au moins 4
    )
));
?>

Va donner tous les perso de la même race que le perso courant et dont le grade est au moins de 4 ou alors qui ont un grade inférieur dans la légion (oui c'est débile).