ninestat/src/ninestat-1.0/src/Cadoles/CoreBundle/Controller/CoreController.php

111 lines
4.3 KiB
PHP

<?php
namespace Cadoles\CoreBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Response;
use Cadoles\CoreBundle\Entity\Group;
class CoreController extends Controller
{
public function homeAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$user=$this->getUser();
$masterurl=$this->getParameter("masterurl");
$masterapikey=$this->getParameter("masterapikey");
if(stripos($masterurl,"/")===0)
$url="https://".$this->getParameter("weburl").$masterurl;
else
$url=$masterurl;
$indomaine = (stripos($url,$this->getParameter("weburl"))!==false);
if($user) {
// Recherche des élèments de masterIdentify
$headers = ['Accept' => 'application/json'];
$query = [];
/* si hor domaine on utilise le proxy si proxy il y a */
if(!$indomaine) {
$PROXYactivate = $em->getRepository("CadolesCoreBundle:Config")->find("PROXYactivate")->getValue();
if($PROXYactivate) {
$PROXYserver = $em->getRepository("CadolesCoreBundle:Config")->find("PROXYserver")->getValue();
$PROXYport = $em->getRepository("CadolesCoreBundle:Config")->find("PROXYport")->getValue();
\Unirest\Request::proxy($PROXYserver, $PROXYport, CURLPROXY_HTTP, true);
}
}
// Récupération des informations utilisateurs issus du masteridentity
$response = \Unirest\Request::get($url.'/rest/user/'.$masterapikey.'/'.$user->getUsername(),$headers,$query);
// Mise à jour du user
$user->setAvatar($response->body->user->avatar);
$user->setRole($response->body->user->role);
$em->persist($user);
$em->flush();
// Mise à jour des groupes
$groups=$response->body->groups;
$mygroup=[];
foreach($groups as $groupexternal) {
// Le groupe existe-t-il
$group=$em->getRepository("CadolesCoreBundle:Group")->findOneBy(["idexternal"=>$groupexternal->id]);
if(!$group)
$group = new Group();
$group->setIdexternal($groupexternal->id);
$group->setLabel($groupexternal->title);
$em->persist($group);
$em->flush();
}
// Sauvegarde en session des groupes de l'utilisateur
$this->get('session')->set("groups",$groups);
}
// Total servers
$servers = $em->getRepository("CadolesCoreBundle:Server")->findAll();
// Total by module
$totalmodules = $em->createQueryBuilder()
->select('COUNT(s.module) total','s.module label')
->from('CadolesCoreBundle:Server','s')
->groupBy('s.module');
// Total by version
$totalversions = $em->createQueryBuilder()
->select('COUNT(s.version) total','s.version label')
->from('CadolesCoreBundle:Server','s')
->groupBy('s.version');
// Total applications
$applications = $em->getRepository("CadolesCoreBundle:ServerApplication")->findAll();
// Total by apps
$totalapplications = $em->createQueryBuilder()
->select('COUNT(a.package) total','a.name label')
->from('CadolesCoreBundle:ServerApplication','sa')
->from('CadolesCoreBundle:Application','a')
->where('sa.application=a.id')
->groupBy('a.package')
->orderBy('total','DESC');
return $this->render('CadolesCoreBundle:Core:home.html.twig',[
'useheader' => true,
'usemenu' => false,
'usesidebar' => false,
'totalserveurs' => count($servers),
'totalbymodules' => $totalmodules->getQuery()->getResult(),
'totalbyversions' => $totalversions->getQuery()->getResult(),
'totalapplications' => count($applications),
'totalbyapplications' => $totalapplications->getQuery()->getResult()
]);
}
}