SMMP/build/viewer/view/group/members_choice.php

138 lines
4.3 KiB
PHP

<?php
namespace viewer\view\group;
use \viewer\core\Viewer;
use \api\core\ModuleRequest;
use \error\core\Error;
use \api\core\Authentification;
class members_choice{
public static function render($params){
/* [1] On vérifie le type de groupe (user/machine)
=========================================================*/
/* (1) On vérifie les paramètres */
if( !isset($params['id_cluster']) || !is_numeric($params['id_cluster']) || !isset($params['class']) || !is_numeric($params['class']) )
return Viewer::$htmlError;
/* (2) On récupère le groupe */
$checktypeRequest = new ModuleRequest('clusterDefault/getById', [
'id_cluster' => $params['id_cluster'],
'class' => $params['class']
]);
$checktypeResponse = $checktypeRequest->dispatch();
/* (3) Si on ne le trouve pas, on retourne une erreur */
if( $checktypeResponse->error != Error::Success )
return Viewer::$htmlError;
/* (4) On récupère les données du groupe */
$currentCluster = $checktypeResponse->get('cluster');
/* [2] Init Twig
=========================================================*/
$loader = new \Twig_Loader_Filesystem(__BUILD__.'/viewer/view');
$twig = new \Twig_Environment($loader, []);
/* [3] Store variables
=========================================================*/
$variables = [
'p_id_cluster' => $params['id_cluster'],
'p_class' => $params['class'],
'p_name' => $currentCluster['name'],
'p_theme' => $_SESSION['WAREHOUSE']['theme']
];
/* [4] Store functions
=========================================================*/
$twig->addFunction(new \Twig_Function('f_members', function($id_cluster, $class){
/* [1] On récupère les membres
=========================================================*/
/* (1) On exécute la requête */
$getmembersRequest = new ModuleRequest('clusterDefault/getMembers', [
'id_cluster' => $id_cluster,
'class' => $class
]);
$getmembersResponse = $getmembersRequest->dispatch();
/* (2) Si erreur, on retourne rien par défaut */
if( $getmembersResponse->error != Error::Success )
return [];
/* (3) On récupère la liste des UID uniquement */
$members_ids = [];
foreach($getmembersResponse->get('members') as $member)
$members_ids[] = ($class==0) ? $member['id_user'] : $member['id_machine'];
/* [2] On récupère les utilisateurs non membres
=========================================================*/
/* (1) On récupère les utilisateurs */
if( $class == 0 ){
/* (2) On exécute la requête */
$getusersRequest = new ModuleRequest('userDefault/getAll');
// On recupere la reponse
$getusersResponse = $getusersRequest->dispatch();
/* (3) si erreur, on affiche l'explicitation */
if( $getusersResponse->error != Error::Success )
return [];
/* (4) On récupère la liste des utilisateurs */
$users = $getusersResponse->get('users');
/* (5) On ajoute s'ils sont dans le groupe ou non */
foreach($users as $u=>$user)
$users[$u]['already'] = in_array($user['id_user'], $members_ids);
return $users;
/* [3] On récupère les machines non membres
=========================================================*/
/* (1) On récupère les machines */
}else{
/* (2) On exécute la requête */
$getmachinesRequest = new ModuleRequest('machineDefault/getAll');
// On recupere la reponse
$getmachinesResponse = $getmachinesRequest->dispatch();
/* (3) si erreur, on affiche l'explicitation */
if( $getmachinesResponse->error != Error::Success )
return [];
/* (4) On récupère la liste des machines */
$machines = $getmachinesResponse->get('machines');
/* (5) On ajoute s'ils sont dans le groupe ou non */
foreach($machines as $u=>$machine)
$machines[$u]['already'] = in_array($machine['id_machine'], $members_ids);
return $machines;
}
}));
/* [5] Build the whole stuff
=========================================================*/
return $twig->render('group/members_choice.twig', [
'p_class' => $variables['p_class'],
'p_name' => $variables['p_name'],
'p_id_cluster' => $variables['p_id_cluster'],
'p_theme' => $variables['p_theme']
]);
}
}
?>