- [x] [modules/+repo/]Conflit des id_user et id_machine dans les cluster a regler

- [x] [view/user] Lien "mailto" pour les mail des utilisateurs
- [x] [modules/] Extension des modules aux repos
This commit is contained in:
xdrm-brackets 2016-02-14 15:17:26 +01:00
parent 4aab2a4c52
commit ea4871334d
12 changed files with 313 additions and 83 deletions

View File

@ -72,7 +72,7 @@
return true;
}insertMachinesFromJSON();
}//insertMachinesFromJSON();

View File

@ -2,20 +2,33 @@
"userDefault" :[
"create",
"getAll"
"link",
"unlink",
"getAll",
"getById",
"getByCode",
"getByUsername",
"getClusters",
"delete"
],
"machineDefault" :[
"create",
"getAll"
],
"link",
"unlink",
"clusterDefault" :[
"create",
"getAll",
"getById",
"getByCode",
"getByName",
"getAll"
"getClusters",
"delete"
]
}

View File

@ -1,2 +1,2 @@
#WRAPPER>#CONTAINER>.sub-menu-side{display:block;position:relative}#WRAPPER>#CONTAINER>.sub-menu-side>span[data-sublink]{display:block;position:relative;width:7.5em;padding:.3em 1em .3em 2em;margin:1em;border-radius:3px;color:#5b5e63;text-shadow:1px 1px white;white-space:nowrap;transition:all .2s;cursor:pointer;overflow:hidden}#WRAPPER>#CONTAINER>.sub-menu-side>span[data-sublink]>.svg>svg{display:inline-block;position:absolute;left:.5em;top:50%;width:1em;height:1em;transform:translateY(-50%)}#WRAPPER>#CONTAINER>.sub-menu-side>span[data-sublink]>.svg>svg path{fill:#5b5e63 !important}#WRAPPER>#CONTAINER>.sub-menu-side>span[data-sublink]:hover,#WRAPPER>#CONTAINER>.sub-menu-side>span[data-sublink].active{color:#121213;background-color:#d8deea;box-shadow:inset 0 0 4px #c8ced9}#WRAPPER>#CONTAINER>.sub-menu-side>span[data-sublink]:hover>.svg>svg path,#WRAPPER>#CONTAINER>.sub-menu-side>span[data-sublink].active>.svg>svg path{fill:#121213 !important}#WRAPPER>#CONTAINER>.sub-menu-side>span[data-sublink]:nth-child(1){margin-top:1em}#WRAPPER>#CONTAINER>section{display:none;flex-grow:1}#WRAPPER>#CONTAINER>section.active{display:block}#WRAPPER>#CONTAINER>section.active.list{display:flex;flex-direction:column}#WRAPPER>#CONTAINER>section.active.list .inline-box{flex:1 1 1}#WRAPPER>#CONTAINER>section>.inline-box{display:inline-block;position:relative;margin:.3em 0;padding:1em;border-radius:3px;box-shadow:0 0 1px #b7b7b7;background-color:#fff}#WRAPPER>#CONTAINER>section>.inline-box .title{display:inline-block;font-size:1.15em;font-weight:bold}#WRAPPER>#CONTAINER>section>.inline-box .title>span{font-size:.8em;color:#333}#WRAPPER>#CONTAINER>section>.inline-box .code{display:inline-block;color:#777}#WRAPPER>#CONTAINER>section>.inline-box .code svg{display:inline-block;position:relative;margin-left:.5em;margin-right:.5em;margin-bottom:-.6em;width:1.5em;height:2em}#WRAPPER>#CONTAINER>section>.inline-box .code svg path{fill:#777 !important}#WRAPPER>#CONTAINER>section>.inline-box .mail{display:block;margin:1em;color:#777}#WRAPPER>#CONTAINER>section>.inline-box .mail svg{display:inline-block;position:relative;margin-left:.5em;margin-right:.5em;margin-bottom:-.6em;width:1.5em;height:2em}#WRAPPER>#CONTAINER>section>.inline-box .mail svg path{fill:#777 !important}#WRAPPER>#CONTAINER>section>.inline-box .groups{display:block;margin:1em;color:#777}#WRAPPER>#CONTAINER>section>.inline-box .groups svg{display:inline-block;position:relative;margin-left:.5em;margin-right:.5em;margin-bottom:-.6em;width:1.5em;height:2em}#WRAPPER>#CONTAINER>section>.inline-box .groups svg path{fill:#777 !important}#WRAPPER>#CONTAINER>section>.inline-box .groups span{display:inline-block;padding:.1em .5em;margin-right:.2em;border-radius:3px;border:1px solid #bdbdbd;box-shadow:inset 0 0 2px #fdfdfd;background-color:#f9f9f9;color:#666;cursor:default}
#WRAPPER>#CONTAINER>.sub-menu-side{display:block;position:relative}#WRAPPER>#CONTAINER>.sub-menu-side>span[data-sublink]{display:block;position:relative;width:7.5em;padding:.3em 1em .3em 2em;margin:1em;border-radius:3px;color:#5b5e63;text-shadow:1px 1px white;white-space:nowrap;transition:all .2s;cursor:pointer;overflow:hidden}#WRAPPER>#CONTAINER>.sub-menu-side>span[data-sublink]>.svg>svg{display:inline-block;position:absolute;left:.5em;top:50%;width:1em;height:1em;transform:translateY(-50%)}#WRAPPER>#CONTAINER>.sub-menu-side>span[data-sublink]>.svg>svg path{fill:#5b5e63 !important}#WRAPPER>#CONTAINER>.sub-menu-side>span[data-sublink]:hover,#WRAPPER>#CONTAINER>.sub-menu-side>span[data-sublink].active{color:#121213;background-color:#d8deea;box-shadow:inset 0 0 4px #c8ced9}#WRAPPER>#CONTAINER>.sub-menu-side>span[data-sublink]:hover>.svg>svg path,#WRAPPER>#CONTAINER>.sub-menu-side>span[data-sublink].active>.svg>svg path{fill:#121213 !important}#WRAPPER>#CONTAINER>.sub-menu-side>span[data-sublink]:nth-child(1){margin-top:1em}#WRAPPER>#CONTAINER>section{display:none;flex-grow:1}#WRAPPER>#CONTAINER>section.active{display:block}#WRAPPER>#CONTAINER>section.active.list{display:flex;flex-direction:column}#WRAPPER>#CONTAINER>section.active.list .inline-box{flex:1 1 1}#WRAPPER>#CONTAINER>section>.inline-box{display:inline-block;position:relative;margin:.3em 0;padding:1em;border-radius:3px;box-shadow:0 0 1px #b7b7b7;background-color:#fff}#WRAPPER>#CONTAINER>section>.inline-box a{text-decoration:none;color:inherit}#WRAPPER>#CONTAINER>section>.inline-box .title{display:inline-block;font-size:1.15em;font-weight:bold}#WRAPPER>#CONTAINER>section>.inline-box .title>span{font-size:.8em;color:#333}#WRAPPER>#CONTAINER>section>.inline-box .code{display:inline-block;color:#333}#WRAPPER>#CONTAINER>section>.inline-box .code svg{display:inline-block;position:relative;margin-left:.5em;margin-right:.5em;margin-bottom:-.6em;width:1.5em;height:2em}#WRAPPER>#CONTAINER>section>.inline-box .code svg path{fill:#333 !important}#WRAPPER>#CONTAINER>section>.inline-box .mail{display:block;margin:1em;color:#333}#WRAPPER>#CONTAINER>section>.inline-box .mail svg{display:inline-block;position:relative;margin-left:.5em;margin-right:.5em;margin-bottom:-.6em;width:1.5em;height:2em}#WRAPPER>#CONTAINER>section>.inline-box .mail svg path{fill:#333 !important}#WRAPPER>#CONTAINER>section>.inline-box .groups{display:block;margin:1em;color:#333}#WRAPPER>#CONTAINER>section>.inline-box .groups svg{display:inline-block;position:relative;margin-left:.5em;margin-right:.5em;margin-bottom:-.6em;width:1.5em;height:2em}#WRAPPER>#CONTAINER>section>.inline-box .groups svg path{fill:#333 !important}#WRAPPER>#CONTAINER>section>.inline-box .groups span{display:inline-block;padding:.1em .5em;margin-right:.2em;border-radius:3px;border:1px solid #bdbdbd;box-shadow:inset 0 0 2px #fafafa;background-color:#f9f9f9;color:#333;cursor:default}
/*# sourceMappingURL=container.css.map */

View File

@ -111,6 +111,11 @@
background-color: #fff;
a{
text-decoration: none;
color: inherit;
}
/* (1) Titre de l'element */
.title{
display: inline-block;
@ -127,7 +132,7 @@
/* (2) Code RFID */
.code{
display: inline-block;
color: #777;
color: #333;
// svg (icone)
svg{
@ -140,7 +145,7 @@
height: 2em;
path{
fill: #777 !important;
fill: #333 !important;
}
}
@ -150,7 +155,7 @@
.mail{
display: block;
margin: 1em;
color: #777;
color: #333;
// svg (icone)
svg{
@ -163,7 +168,7 @@
height: 2em;
path{
fill: #777 !important;
fill: #333 !important;
}
}
@ -174,7 +179,7 @@
.groups{
display: block;
margin: 1em;
color: #777;
color: #333;
// svg (icone)
svg{
@ -187,7 +192,7 @@
height: 2em;
path{
fill: #777 !important;
fill: #333 !important;
}
}
@ -198,11 +203,11 @@
border-radius: 3px;
border: 1px solid #bdbdbd;
box-shadow: inset 0 0 2px #fdfdfd;
box-shadow: inset 0 0 2px #fafafa;
background-color: #f9f9f9;
color: #666;
color: #333;
cursor: default;
}

View File

@ -1,21 +0,0 @@
<?php
namespace manager\module;
class clusterDefault{
public static function getAll(){
return array(
'groups' => \manager\Database::delNumeric( \manager\Database::getPDO()->query("SELECT * FROM group ORDER BY id_group")->fetchAll() )
);
}
}
?>

View File

@ -5,6 +5,7 @@
use \manager\sessionManager;
use \manager\ManagerError;
use \manager\Repo;
use \manager\repo\cluster as clusterRepo;
class machineDefault{
@ -24,6 +25,9 @@
}
/* CREATION D'UNE NOUVELLE MACHINE DANS LA BDD
*
* @code<String> Code RFID de la machine
@ -71,7 +75,7 @@
/* [4] Association au groupe
=========================================================*/
$assoc_goup = new Repo('cluster/link', array($id_group, $id_machine));
$assoc_goup = new Repo('cluster/link', array($id_group, $id_machine, clusterRepo::MACHINE_CLASS));
$id_assoc = $assoc_goup->answer();
// Si une erreur est retournee, on retourne une erreur
@ -93,6 +97,68 @@
/* AJOUTE UNE MACHINE DONNEE A UN GROUPE DONNE
*
* @id_cluster<int> UID du groupe
* @id_machine<int> UID de la machine
*
* @return association<int> Renvoie l'UID de l'association cree
* Renvoie FALSE si une erreur occure
*
*/
public static function link($id_cluster, $id_machine){
/* [1] Normalisation + verification des donnees
=========================================================*/
$correct_param = Database::check('auto_increment_id', $id_cluster);
$correct_param = $correct_param && Database::check('auto_increment_id', $id_machine);
// Si les parametres ne sont pas corrects, on retourne une erreur
if( !$correct_param )
return array('ModuleError' => ManagerError::ParamError);
/* [2] Creation de l'association
=========================================================*/
$link_machine = new Repo('cluster/link', array($id_cluster, $id_machine, clusterRepo::MACHINE_CLASS));
return $link_machine;
}
/* RETIRE UNE MACHINE DONNEE A UN GROUPE DONNE
*
* @id_cluster<int> UID du groupe
* @id_machine<int> UID de la machine
*
* @return association<int> Renvoie l'UID de l'association cree
* Renvoie FALSE si une erreur occure
*
*/
public static function unlink($id_cluster, $id_machine){
/* [1] Normalisation + verification des donnees
=========================================================*/
$correct_param = Database::check('auto_increment_id', $id_cluster);
$correct_param = $correct_param && Database::check('auto_increment_id', $id_machine);
// Si les parametres ne sont pas corrects, on retourne une erreur
if( !$correct_param )
return array('ModuleError' => ManagerError::ParamError);
/* [2] Suppression de l'association
=========================================================*/
$link_machine = new Repo('cluster/unlink', array($id_cluster, $id_machine, clusterRepo::MACHINE_CLASS));
return $link_machine;
}
}

View File

@ -5,26 +5,11 @@
use \manager\sessionManager;
use \manager\ManagerError;
use \manager\Repo;
use \manager\repo\cluster as clusterRepo;
class userDefault{
/* RENVOIE LA LISTE EXHAUSTIVE DES UTILISATEURS
*
* @return utilisateurs<Array> Liste des utilisateurs
*
*/
public static function getAll(){
// On recupere les donnees
$users = new Repo('user/getAll');
return array(
'users' => $users->answer()
);
}
/* CREATION D'UN NOUVEL UTILISATEUR DANS LA BDD
*
* @code<String> Code RFID de l'utilisateur
@ -84,7 +69,7 @@
/* [4] Association au groupe
=========================================================*/
$assoc_goup = new Repo('cluster/link', array($id_group, $id_user));
$assoc_goup = new Repo('cluster/link', array($id_group, $id_user, clusterRepo::USER_CLASS));
$id_assoc = $assoc_goup->answer();
// Si une erreur est retournee, on retourne une erreur
@ -103,6 +88,164 @@
}
/* AJOUTE UN UTILISATEUR DONNEE A UN GROUPE DONNE
*
* @id_cluster<int> UID du groupe
* @id_user<int> UID de l'utilisateur
*
* @return association<int> Renvoie l'UID de l'association cree
* Renvoie FALSE si une erreur occure
*
*/
public static function link($id_cluster, $id_user){
/* [1] Normalisation + verification des donnees
=========================================================*/
$correct_param = Database::check('auto_increment_id', $id_cluster);
$correct_param = $correct_param && Database::check('auto_increment_id', $id_user);
// Si les parametres ne sont pas corrects, on retourne une erreur
if( !$correct_param )
return array('ModuleError' => ManagerError::ParamError);
/* [2] Creation de l'association
=========================================================*/
$link_user = new Repo('cluster/link', array($id_cluster, $id_user, clusterRepo::USER_CLASS));
return $link_user;
}
/* RETIRE UNE MACHINE DONNEE A UN GROUPE DONNE
*
* @id_cluster<int> UID du groupe
* @id_user<int> UID de l'utilisateur
*
* @return association<int> Renvoie l'UID de l'association cree
* Renvoie FALSE si une erreur occure
*
*/
public static function unlink($id_cluster, $id_user){
/* [1] Normalisation + verification des donnees
=========================================================*/
$correct_param = Database::check('auto_increment_id', $id_cluster);
$correct_param = $correct_param && Database::check('auto_increment_id', $id_user);
// Si les parametres ne sont pas corrects, on retourne une erreur
if( !$correct_param )
return array('ModuleError' => ManagerError::ParamError);
/* [2] Suppression de l'association
=========================================================*/
$link_user = new Repo('cluster/unlink', array($id_cluster, $id_user, clusterRepo::USER_CLASS));
return $link_user;
}
/* RENVOIE LA LISTE EXHAUSTIVE DES UTILISATEURS
*
* @return utilisateurs<Array> Liste des utilisateurs
*
*/
public static function getAll(){
// On recupere les donnees
$users = new Repo('user/getAll');
return array(
'users' => $users->answer()
);
}
/* RENVOIE L'UTILISATEURS D'UID DONNE
*
* @id_user<int> UID de l'utilisateur en question
*
* @return utilisateur<Array> Utilisateur d'UID donne
*
*/
public static function getById($id_user){
// On recupere les donnees
$request = new Repo('user/getById', array($id_user));
$answer = $request->answer();
// Si aucun resultat, on retourne une erreur
if( $answer === false )
return array( 'ModuleError' => ManagerError::ModuleError );
return array(
'user' => $answer
);
}
/* RENVOIE L'UTILISATEURS DE CODE DONNE
*
* @code<String> Code de l'utilisateur en question
*
* @return utilisateur<Array> Utilisateur de code donne
*
*/
public static function getByCode($code){
// On recupere les donnees
$request = new Repo('user/getByCode', array($code));
$answer = $request->answer();
// Si aucun resultat, on retourne une erreur
if( $answer === false )
return array( 'ModuleError' => ManagerError::ModuleError );
return array(
'user' => $answer
);
}
/* RENVOIE L'UTILISATEURS D'USERNAME DONNE
*
* @username<String> Username de l'utilisateur en question
*
* @return utilisateur<Array> Utilisateur d'username donne
*
*/
public static function getByUsername($username){
// On recupere les donnees
$request = new Repo('user/getByUsername', array($username));
$answer = $request->answer();
// Si aucun resultat, on retourne une erreur
if( $answer === false )
return array( 'ModuleError' => ManagerError::ModuleError );
return array(
'user' => $answer
);
}
}

View File

@ -7,6 +7,9 @@
class cluster{
const USER_CLASS = 0;
const MACHINE_CLASS = 1;
/* CREATION D'UN GROUPE
*
* @name<String> Nom du groupe
@ -56,12 +59,13 @@
*
* @id_cluster<int> UID du groupe
* @id_entity<int> UID de la machine ou de l'utilisateur
* @class<int> Spefication du type d'entite (0=user;1=machine)
*
* @return association<int> Renvoie l'UID de l'association cree
* Renvoie FALSE si une erreur occure
*
*/
public static function link($id_cluster, $id_entity){
public static function link($id_cluster, $id_entity, $class){
/* [1] Verification de l'existence du groupe
=========================================================*/
$group_check = self::getById($id_cluster);
@ -74,22 +78,29 @@
/* [2] Verification de l'existente de l'entite
=========================================================*/
// On verifie si c'est une machine
$machine_check = machineRepo::getById($id_entity);
$is_machine = ( $machine_check !== FALSE );
$entity_exists = false;
/* (1) Utilisateur */
if( $class == 0 ){
// On verifie si c'est un utilisateur
$user_check = userRepo::getById($id_entity);
$is_user = ( $user_check !== FALSE );
$entity_exists = ( $user_check !== FALSE );
/* (2) Machine */
}elseif( $class == 1 ){
// On verifie si c'est une machine
$machine_check = machineRepo::getById($id_entity);
$entity_exists = ( $machine_check !== FALSE );
}
// Si aucune entite existante, on retourne une erreur
if( !$is_machine && !$is_user )
if( !$entity_exists )
return false;
/* [3] Verification que l'existente n'existe pas deja
=========================================================*/
$already_cluster_merge = self::getMerge($id_cluster, $id_entity);
$already_cluster_merge = self::getMerge($id_cluster, $id_entity, $class);
// Si l'association existe deja, on ne la cree donc pas
if( $already_cluster_merge !== false )
@ -98,16 +109,17 @@
/* [4] On cree l'association
=========================================================*/
$link_entity = Database::getPDO()->prepare("INSERT INTO cluster_merge(id_cluster_merge, id_cluster, id_entity)
VALUES(DEFAULT, :id_cluster, :id_entity)");
$link_entity = Database::getPDO()->prepare("INSERT INTO cluster_merge(id_cluster_merge, id_cluster, id_entity, class)
VALUES(DEFAULT, :id_cluster, :id_entity, :class)");
$link_entity->execute(array(
':id_cluster' => $id_cluster,
':id_entity' => $id_entity
':id_entity' => $id_entity,
':class' => $class
));
/* [5] On retourne l'id_cluster_merge ou FALSE si erreur
=========================================================*/
$check_cluster_merge = self::getMerge($id_cluster, $id_entity);
$check_cluster_merge = self::getMerge($id_cluster, $id_entity, $class);
// Si n'existe pas on retourne FALSE
if( $check_cluster_merge === false )
@ -128,25 +140,28 @@
*
* @id_cluster<int> UID du groupe
* @id_entity<int> UID de la machine ou de l'utilisateur
* @class<int> Spefication du type d'entite (0=user;1=machine)
*
* @return status<Boolean> Retourne si oui ou non l'association a bien ete supprimee
*
*/
public static function unlink($id_cluster, $id_entity){
public static function unlink($id_cluster, $id_entity, $class){
/* [1] On redige/execute la requete
=========================================================*/
$delete_cluster_merge = Database::getPDO()->prepare("DELETE FROM cluster_merge
WHERE id_cluster = :id_cluster
AND id_entity = :id_entity");
AND id_entity = :id_entity
AND class = :class");
$delete_cluster_merge->execute(array(
':id_cluster' => $id_cluster,
':id_entity' => $id_entity
':id_entity' => $id_entity,
':class' => $class
));
/* [2] On verifie que l'association n'existe plus
=========================================================*/
return ( self::getMerge($id_cluster, $id_entity) === false );
return ( self::getMerge($id_cluster, $id_entity, $class) === false );
}
@ -257,21 +272,24 @@
*
* @id_cluster<int> UID du groupe
* @id_entity<int> UID de la machine ou de l'utilisateur
* @class<int> Spefication du type d'entite (0=user;1=machine)
*
* @return association<int> Renvoie l'UID de l'association cree
* Renvoie FALSE si une erreur occure
*
*/
public static function getMerge($id_cluster, $id_entity){
public static function getMerge($id_cluster, $id_entity, $class){
// On ecrit la requete
$request = Database::getPDO()->prepare("SELECT * FROM cluster_merge
WHERE id_cluster = :id_cluster
AND id_entity = :id_entity");
AND id_entity = :id_entity
AND class = :class");
// On execute la requete
$request->execute(array(
':id_cluster' => $id_cluster,
':id_entity' => $id_entity
':id_entity' => $id_entity,
':class' => $class
));
// On recupere 1 seule relation

View File

@ -202,9 +202,11 @@
$get_clusters = Database::getPDO()->prepare("SELECT c.* FROM cluster as c, cluster_merge as cm
WHERE cm.id_cluster = c.id_cluster
AND cm.id_entity = :id_machine
AND cm.class = :class
ORDER BY c.id_cluster");
$get_clusters->execute(array(
':id_machine' => $id_machine
':id_machine' => $id_machine,
':class' => clusterRepo::MACHINE_CLASS
));
/* [2] On retourne la liste des groupes

View File

@ -238,9 +238,11 @@
$get_clusters = Database::getPDO()->prepare("SELECT c.* FROM cluster as c, cluster_merge as cm
WHERE cm.id_cluster = c.id_cluster
AND cm.id_entity = :id_user
AND cm.class = :class
ORDER BY c.id_cluster");
$get_clusters->execute(array(
':id_user' => $id_user
':id_user' => $id_user,
':class' => clusterRepo::USER_CLASS
));
/* [2] On retourne la liste des groupes

View File

@ -13,8 +13,6 @@
############
# EN COURS #
############
- [ ] Conflit des id_user et id_machine dans les cluster a regler
- [ ] Prendre en compte au lieu de SERVER['HTTP_HOST'] l'hote et son dossier source
- [ ] Gestion de l'erreur de chargement ou erreur de nav (page-manager)
- [.] [/users/view] Affichage basique de liste d'elements complexes (users/machines/journal, ...)
@ -36,11 +34,15 @@
########
# FAIT #
########
- [x] [modules/+repo/]Conflit des id_user et id_machine dans les cluster a regler
- [x] [view/user] Lien "mailto" pour les mail des utilisateurs
- [x] [modules/] Extension des modules aux repos
- [x] Gestion des groupes (utilisateurs/machines)
- [x] bdd
- [x] Creation d'un groupe individuel pour utilisateurs + association
- [x] Creation d'un groupe individuel pour machines
- [x] Creation d'une liaison entre 2 groupes (groupeUtilisateur, groupeMachine)
- [x] [view/machines] Affichage des groupes des machines
- [x] [view/users] Affichage des groupes des utilisateurs
- [x] [cluster::link/unlink] Ajout/Suppression d'association des utilisateurs/machines a des groupes
- [x] [user::getClusters] Recuperation des groupes d'un utilisateur

View File

@ -94,9 +94,9 @@
echo "<span class='mail'>";
echo ResourceDispatcher::getResource('f/svg/mail/st/container');
echo "<span>";
echo "<a href='mailto:".$user['mail']."'><span>";
echo $user['mail'];
echo "</span>";
echo "</span></a>";
echo"</span>";
// Groupes de la machine