svg
This commit is contained in:
parent
994972606a
commit
ee5d2439de
|
@ -6,8 +6,6 @@
|
||||||
|
|
||||||
<containers>
|
<containers>
|
||||||
<container name='web'>
|
<container name='web'>
|
||||||
<package>ninestat-apps</package>
|
|
||||||
|
|
||||||
<file filelist='ninestat' name='/etc/apache2/sites-available/ninestat' source='ninestat-apache.conf' rm="True"/>
|
<file filelist='ninestat' name='/etc/apache2/sites-available/ninestat' source='ninestat-apache.conf' rm="True"/>
|
||||||
<file filelist="ninestat" name="/var/www/html/ninestat/app/config/parameters.yml" source="ninestat-parameters.yml" rm="True"/>
|
<file filelist="ninestat" name="/var/www/html/ninestat/app/config/parameters.yml" source="ninestat-parameters.yml" rm="True"/>
|
||||||
<file filelist="ninestat" name="/var/www/html/ninestat/app/config/template.yml" source="ninestat-template.yml" rm="True"/>
|
<file filelist="ninestat" name="/var/www/html/ninestat/app/config/template.yml" source="ninestat-template.yml" rm="True"/>
|
||||||
|
@ -58,7 +56,7 @@
|
||||||
<separators>
|
<separators>
|
||||||
<separator name="ninestat_noreply">Paramètres associés aux Mails</separator>
|
<separator name="ninestat_noreply">Paramètres associés aux Mails</separator>
|
||||||
<separator name="ninestat_db_mode">Paramètres associés à la Base de Données</separator>
|
<separator name="ninestat_db_mode">Paramètres associés à la Base de Données</separator>
|
||||||
</separators>
|
</separators>
|
||||||
</variables>
|
</variables>
|
||||||
|
|
||||||
<constraints>
|
<constraints>
|
||||||
|
@ -94,7 +92,7 @@
|
||||||
<target type='filelist'>ninestat</target>
|
<target type='filelist'>ninestat</target>
|
||||||
<target type='servicelist'>ninestat</target>
|
<target type='servicelist'>ninestat</target>
|
||||||
</condition>
|
</condition>
|
||||||
|
|
||||||
<!-- AFFICHAGE EN FONCTION DU MODE DE BDD -->
|
<!-- AFFICHAGE EN FONCTION DU MODE DE BDD -->
|
||||||
<condition name='hidden_if_in' source='ninestat_db_mode'>
|
<condition name='hidden_if_in' source='ninestat_db_mode'>
|
||||||
<param>local</param>
|
<param>local</param>
|
||||||
|
@ -121,7 +119,7 @@
|
||||||
<check name='valid_enum' target='ninestat_mode_auth'>
|
<check name='valid_enum' target='ninestat_mode_auth'>
|
||||||
<param>['CAS', 'SAML', 'LDAP']</param>
|
<param>['CAS', 'SAML', 'LDAP']</param>
|
||||||
</check>
|
</check>
|
||||||
|
|
||||||
<check name='valid_enum' target='ninestat_smtpencryption'>
|
<check name='valid_enum' target='ninestat_smtpencryption'>
|
||||||
<param>['tls', 'ssl', 'null']</param>
|
<param>['tls', 'ssl', 'null']</param>
|
||||||
</check>
|
</check>
|
||||||
|
@ -131,7 +129,7 @@
|
||||||
|
|
||||||
<check name='valid_enum' target='ninestat_db_mode'>
|
<check name='valid_enum' target='ninestat_db_mode'>
|
||||||
<param>['default', 'externe', 'local']</param>
|
<param>['default', 'externe', 'local']</param>
|
||||||
</check>
|
</check>
|
||||||
</constraints>
|
</constraints>
|
||||||
<help>
|
<help>
|
||||||
</help>
|
</help>
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
export HTTP_PROXY="192.168.57.160:8080"
|
||||||
|
export HTTPS_PROXY="192.168.57.160:8080"
|
||||||
|
|
||||||
cd /var/www/html/ninestat
|
cd /var/www/html/ninestat
|
||||||
|
|
||||||
|
|
|
@ -49,41 +49,6 @@ class PurgeFileCommand extends Command
|
||||||
|
|
||||||
$now=new \DateTime('now');
|
$now=new \DateTime('now');
|
||||||
|
|
||||||
// /uploads/file
|
|
||||||
$this->writelnred('');
|
|
||||||
$this->writelnred('== Directory = File');
|
|
||||||
|
|
||||||
$directory=$this->container->get('kernel')->getRootDir()."/../uploads/file";
|
|
||||||
$files=[];
|
|
||||||
$fs = new Filesystem();
|
|
||||||
|
|
||||||
if($fs->exists($directory)) {
|
|
||||||
$finder = new Finder();
|
|
||||||
$finder->in($directory)->directories()->exclude("thumb");
|
|
||||||
|
|
||||||
foreach (iterator_to_array($finder) as $file) {
|
|
||||||
$name = $file->getRelativePathname();
|
|
||||||
$type = explode("-",$name)[0];
|
|
||||||
$id = explode("-",$name)[1];
|
|
||||||
|
|
||||||
switch($type) {
|
|
||||||
case "widget":
|
|
||||||
$entity=$this->em->getRepository("CadolesPortalBundle:Pagewidget")->find($id);
|
|
||||||
if(!$entity) {
|
|
||||||
$this->writeln($name);
|
|
||||||
$url=$directory."/".$name;
|
|
||||||
if($fs->exists($url)) {
|
|
||||||
$fs->remove($url);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// /web/uploads/avatar
|
|
||||||
$this->writelnred('');
|
$this->writelnred('');
|
||||||
$this->writelnred('== Directory = Avatar');
|
$this->writelnred('== Directory = Avatar');
|
||||||
|
|
||||||
|
@ -164,184 +129,6 @@ class PurgeFileCommand extends Command
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// /web/uploads/niveau01
|
|
||||||
$this->writelnred('');
|
|
||||||
$this->writelnred('== Directory = Niveau01');
|
|
||||||
|
|
||||||
$directory=$this->container->get('kernel')->getRootDir()."/../web/uploads/niveau01";
|
|
||||||
$files=[];
|
|
||||||
$fs = new Filesystem();
|
|
||||||
|
|
||||||
if($fs->exists($directory)) {
|
|
||||||
$finder = new Finder();
|
|
||||||
$finder->in($directory)->files();
|
|
||||||
|
|
||||||
foreach (iterator_to_array($finder) as $file) {
|
|
||||||
$name = $file->getRelativePathname();
|
|
||||||
if($name!="logo.png") {
|
|
||||||
$entity=$this->em->getRepository("CadolesCoreBundle:Niveau01")->findBy(["logo"=>"uploads/niveau01/".$name]);
|
|
||||||
if(!$entity) {
|
|
||||||
$this->writeln($name);
|
|
||||||
$url=$directory."/".$name;
|
|
||||||
if($fs->exists($url)) {
|
|
||||||
$fs->remove($url);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// /web/uploads/slide
|
|
||||||
$this->writelnred('');
|
|
||||||
$this->writelnred('== Directory = Slide');
|
|
||||||
|
|
||||||
$directory=$this->container->get('kernel')->getRootDir()."/../web/uploads/slide";
|
|
||||||
$files=[];
|
|
||||||
$fs = new Filesystem();
|
|
||||||
|
|
||||||
if($fs->exists($directory)) {
|
|
||||||
$finder = new Finder();
|
|
||||||
$finder->in($directory)->files();
|
|
||||||
|
|
||||||
foreach (iterator_to_array($finder) as $file) {
|
|
||||||
$name = $file->getRelativePathname();
|
|
||||||
$entity=$this->em->getRepository("CadolesPortalBundle:Slide")->findBy(["image"=>"uploads/slide/".$name]);
|
|
||||||
if(!$entity) {
|
|
||||||
$this->writeln($name);
|
|
||||||
$url=$directory."/".$name;
|
|
||||||
if($fs->exists($url)) {
|
|
||||||
$fs->remove($url);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// /web/uploads/icon
|
|
||||||
$this->writelnred('');
|
|
||||||
$this->writelnred('== Directory = Icon');
|
|
||||||
|
|
||||||
$directory=$this->container->get('kernel')->getRootDir()."/../web/uploads/icon";
|
|
||||||
$files=[];
|
|
||||||
$fs = new Filesystem();
|
|
||||||
|
|
||||||
if($fs->exists($directory)) {
|
|
||||||
$finder = new Finder();
|
|
||||||
$finder->in($directory)->files();
|
|
||||||
|
|
||||||
foreach (iterator_to_array($finder) as $file) {
|
|
||||||
$name = $file->getRelativePathname();
|
|
||||||
if(!stripos($name,"icon_")) {
|
|
||||||
$entity=$this->em->getRepository("CadolesPortalBundle:Icon")->findBy(["label"=>"uploads/icon/".$name]);
|
|
||||||
if(!$entity) {
|
|
||||||
$this->writeln($name);
|
|
||||||
$url=$directory."/".$name;
|
|
||||||
if($fs->exists($url)) {
|
|
||||||
$fs->remove($url);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// /web/uploads/blogarticle
|
|
||||||
$this->writelnred('');
|
|
||||||
$this->writelnred('== Directory = Blog Article');
|
|
||||||
|
|
||||||
$directory=$this->container->get('kernel')->getRootDir()."/../web/uploads/blogarticle";
|
|
||||||
$files=[];
|
|
||||||
$fs = new Filesystem();
|
|
||||||
|
|
||||||
if($fs->exists($directory)) {
|
|
||||||
$finder = new Finder();
|
|
||||||
$finder->in($directory)->files();
|
|
||||||
|
|
||||||
foreach (iterator_to_array($finder) as $file) {
|
|
||||||
$name = $file->getRelativePathname();
|
|
||||||
if(strpos($name,"thumb-")===false) {
|
|
||||||
$entity=$this->em->getRepository("CadolesPortalBundle:Blogarticle")->findBy(["image"=>"uploads/blogarticle/".$name]);
|
|
||||||
if(!$entity) {
|
|
||||||
$this->writeln($name);
|
|
||||||
|
|
||||||
// Suppression du fichier
|
|
||||||
$url=$directory."/".$name;
|
|
||||||
if($fs->exists($url)) {
|
|
||||||
$fs->remove($url);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Suppression du thumb fichier
|
|
||||||
$url=$directory."/thumb-".$name;
|
|
||||||
if($fs->exists($url)) {
|
|
||||||
$fs->remove($url);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// /web/uploads/ckeditor
|
|
||||||
$this->writelnred('');
|
|
||||||
$this->writelnred('== Directory = Ckeditor');
|
|
||||||
$directory=$this->container->get('kernel')->getRootDir()."/../web/uploads/ckeditor";
|
|
||||||
$files=[];
|
|
||||||
$fs = new Filesystem();
|
|
||||||
|
|
||||||
if($fs->exists($directory)) {
|
|
||||||
$finder = new Finder();
|
|
||||||
$finder->in($directory)->files();
|
|
||||||
|
|
||||||
foreach (iterator_to_array($finder) as $file) {
|
|
||||||
$name = $file->getRelativePathname();
|
|
||||||
$tofind = "/".$alias."/uploads/ckeditor/".$name;
|
|
||||||
$find=false;
|
|
||||||
|
|
||||||
// On recherche l'image dans les pages
|
|
||||||
$result = $this->em
|
|
||||||
->getRepository("CadolesPortalBundle:Page")->createQueryBuilder('page')
|
|
||||||
->where('page.html LIKE :tofind')
|
|
||||||
->setParameter('tofind', '%'.$tofind.'%')
|
|
||||||
->getQuery()->getResult();
|
|
||||||
if($result) $find=true;
|
|
||||||
|
|
||||||
// Si pas trouvé on la cherche dans les widgets
|
|
||||||
if(!$find) {
|
|
||||||
$result = $this->em
|
|
||||||
->getRepository("CadolesPortalBundle:Pagewidget")->createQueryBuilder('pagewidget')
|
|
||||||
->where('pagewidget.parameter LIKE :tofind')
|
|
||||||
->setParameter('tofind', '%'.$tofind.'%')
|
|
||||||
->getQuery()->getResult();
|
|
||||||
if($result) $find=true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Si pas trouvé on la cherche dans les blogs
|
|
||||||
if(!$find) {
|
|
||||||
$result = $this->em
|
|
||||||
->getRepository("CadolesPortalBundle:Blogarticle")->createQueryBuilder('blogarticle')
|
|
||||||
->where('blogarticle.description LIKE :tofind')
|
|
||||||
->setParameter('tofind', '%'.$tofind.'%')
|
|
||||||
->getQuery()->getResult();
|
|
||||||
if($result) $find=true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Si pas trouvé on supprime
|
|
||||||
if(!$find) {
|
|
||||||
$this->writeln($name);
|
|
||||||
$url=$directory."/".$name;
|
|
||||||
if($fs->exists($url)) {
|
|
||||||
$fs->remove($url);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// /web/uploads/ckeditor
|
|
||||||
$this->writelnred('');
|
|
||||||
$this->writelnred('== Directory = Flux');
|
|
||||||
$directory=$this->container->get('kernel')->getRootDir()."/../web/uploads/flux";
|
|
||||||
$fs = new Filesystem();
|
|
||||||
$fs->remove($directory);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$this->writeln('');
|
$this->writeln('');
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,73 @@
|
||||||
|
<?php
|
||||||
|
namespace Cadoles\CoreBundle\Command;
|
||||||
|
|
||||||
|
use Symfony\Component\Console\Command\Command;
|
||||||
|
use Symfony\Component\Console\Input\InputInterface;
|
||||||
|
use Symfony\Component\Console\Input\InputArgument;
|
||||||
|
use Symfony\Component\Console\Output\OutputInterface;
|
||||||
|
use Symfony\Component\Finder\Finder;
|
||||||
|
use Symfony\Component\Filesystem\Filesystem;
|
||||||
|
use Symfony\Component\HttpFoundation\File\File;
|
||||||
|
use Symfony\Component\HttpKernel\KernelInterface;
|
||||||
|
use Doctrine\DBAL\Connection as DBALConnection;
|
||||||
|
use Doctrine\ORM\EntityManager;
|
||||||
|
use Symfony\Component\Validator\Constraints\DateTime;
|
||||||
|
|
||||||
|
use Cadoles\CoreBundle\Entity\Registration;
|
||||||
|
|
||||||
|
class PurgeServerCommand extends Command
|
||||||
|
{
|
||||||
|
private $container;
|
||||||
|
private $em;
|
||||||
|
private $output;
|
||||||
|
private $filesystem;
|
||||||
|
private $rootlog;
|
||||||
|
|
||||||
|
protected function configure()
|
||||||
|
{
|
||||||
|
$this
|
||||||
|
->setName('Core:PurgeServer')
|
||||||
|
->setDescription('Purge Server not updated')
|
||||||
|
->setHelp('This command Purge the obsolete Server')
|
||||||
|
->addArgument('cronid', InputArgument::OPTIONAL, 'ID Cron Job')
|
||||||
|
->addArgument('lastchance', InputArgument::OPTIONAL, 'Lastchance to run the cron')
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function execute(InputInterface $input, OutputInterface $output)
|
||||||
|
{
|
||||||
|
$this->container = $this->getApplication()->getKernel()->getContainer();
|
||||||
|
$this->em = $this->container->get('doctrine')->getEntityManager();
|
||||||
|
$this->output = $output;
|
||||||
|
$this->filesystem = new Filesystem();
|
||||||
|
$this->rootlog = $this->container->get('kernel')->getRootDir()."/../var/logs/";
|
||||||
|
$alias = $this->container->getParameter('alias');
|
||||||
|
|
||||||
|
$this->writelnred('');
|
||||||
|
$this->writelnred('== Core:PurgeServer');
|
||||||
|
$this->writelnred('==========================================================================================================');
|
||||||
|
|
||||||
|
$now=new \DateTime('now');
|
||||||
|
$now->sub(new \DateInterval('P3M'));
|
||||||
|
|
||||||
|
$servers=$this->em->getRepository("CadolesCoreBundle:Server")->findAll();
|
||||||
|
foreach($servers as $server) {
|
||||||
|
if($server->getUpdatedate()<$now) {
|
||||||
|
$this->writeln($server->getId()." = ".$server->getUpdatedate()->format("Ymd"));
|
||||||
|
$this->em->remove($server);
|
||||||
|
$this->em->flush();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function writelnred($string) {
|
||||||
|
$this->output->writeln('<fg=red>'.$string.'</>');
|
||||||
|
$this->filesystem->appendToFile($this->rootlog.'cron.log', $string."\n");
|
||||||
|
}
|
||||||
|
private function writeln($string) {
|
||||||
|
$this->output->writeln($string);
|
||||||
|
$this->filesystem->appendToFile($this->rootlog.'cron.log', $string."\n");
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,7 +4,7 @@ SET foreign_key_checks = 0;
|
||||||
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
|
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
|
||||||
|
|
||||||
INSERT IGNORE INTO `user` (`id`, `username`, `firstname`, `lastname`, `password`, `email`, `avatar`, `role`) VALUES
|
INSERT IGNORE INTO `user` (`id`, `username`, `firstname`, `lastname`, `password`, `email`, `avatar`, `role`) VALUES
|
||||||
(-100, 'admin', 'Administrateur', 'STAT', '{SSHA}euZCgZjWhBu0xUZI9lPK2ncV9oaB+Jqo', 'tina-boot@ac-dijon.fr', 'admin.jpg', 'ROLE_ADMIN');
|
(-100, 'admin', 'Administrateur', 'STAT', '{SSHA}euZCgZjWhBu0xUZI9lPK2ncV9oaB+Jqo', 'admin@ldapbundle.ac-arno.fr', 'admin.jpg', 'ROLE_ADMIN');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ INSERT IGNORE INTO `config` (`order`, `visible`, `changeable`, `required`, `type
|
||||||
('060', 1, 1, 1, 'font', 'fontfacetitle', 'Anton-Regular', '', 'Police des titres de votre site'),
|
('060', 1, 1, 1, 'font', 'fontfacetitle', 'Anton-Regular', '', 'Police des titres de votre site'),
|
||||||
('061', 1, 1, 1, 'font', 'fontfacebody', 'Helvetica', '', 'Police des titres de votre site'),
|
('061', 1, 1, 1, 'font', 'fontfacebody', 'Helvetica', '', 'Police des titres de votre site'),
|
||||||
|
|
||||||
('200', 1, 0, 1, 'boolean', 'PROXYactivate', '0', '', 'Définit un Proxy'),
|
('200', 1, 0, 1, 'boolean', 'PROXYactivate', '1', '', 'Définit un Proxy'),
|
||||||
('201', 1, 0, 1, 'string', 'PROXYserver', '', 'PROXYactivate','Adresse du Proxy'),
|
('201', 1, 0, 1, 'string', 'PROXYserver', '192.168.57.160', 'PROXYactivate','Adresse du Proxy'),
|
||||||
('202', 1, 0, 1, 'string', 'PROXYport', '', 'PROXYactivate','Port du Proxy');
|
('202', 1, 0, 1, 'string', 'PROXYport', '8080', 'PROXYactivate','Port du Proxy');
|
||||||
|
|
||||||
|
|
|
@ -147,7 +147,126 @@ class CoreController extends Controller
|
||||||
'totalbyacademies' => $totalbyacademies->getQuery()->getResult(),
|
'totalbyacademies' => $totalbyacademies->getQuery()->getResult(),
|
||||||
'totalbysecteurs' => $totalbysecteurs->getQuery()->getResult(),
|
'totalbysecteurs' => $totalbysecteurs->getQuery()->getResult(),
|
||||||
'totalbynatures' => $totalbynatures->getQuery()->getResult(),
|
'totalbynatures' => $totalbynatures->getQuery()->getResult(),
|
||||||
|
'by' => "total",
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function acadAction($acad, Request $request)
|
||||||
|
{
|
||||||
|
$em = $this->getDoctrine()->getManager();
|
||||||
|
$user=$this->getUser();
|
||||||
|
|
||||||
|
|
||||||
|
// Total servers
|
||||||
|
$servers = $em->createQueryBuilder()
|
||||||
|
->select('s')
|
||||||
|
->from('CadolesCoreBundle:Etab','e')
|
||||||
|
->from('CadolesCoreBundle:Server','s')
|
||||||
|
->where('s.etab=e')
|
||||||
|
->andWhere('e.libelle_academie=:acad')
|
||||||
|
->setParameter('acad',$acad);
|
||||||
|
|
||||||
|
// Total by module
|
||||||
|
$totalmodules = $em->createQueryBuilder()
|
||||||
|
->select('COUNT(s.module) total','s.module label')
|
||||||
|
->from('CadolesCoreBundle:Etab','e')
|
||||||
|
->from('CadolesCoreBundle:Server','s')
|
||||||
|
->where('s.etab=e')
|
||||||
|
->andWhere('e.libelle_academie=:acad')
|
||||||
|
->setParameter('acad',$acad)
|
||||||
|
->groupBy('s.module')
|
||||||
|
->orderBy('total','DESC')
|
||||||
|
->addOrderBy('label','ASC');
|
||||||
|
|
||||||
|
// Total by version
|
||||||
|
$totalversions = $em->createQueryBuilder()
|
||||||
|
->select('COUNT(s.version) total','s.version label')
|
||||||
|
->from('CadolesCoreBundle:Etab','e')
|
||||||
|
->from('CadolesCoreBundle:Server','s')
|
||||||
|
->where('s.etab=e')
|
||||||
|
->andWhere('e.libelle_academie=:acad')
|
||||||
|
->setParameter('acad',$acad)
|
||||||
|
->groupBy('s.version')
|
||||||
|
->orderBy('total','DESC')
|
||||||
|
->addOrderBy('label','ASC');
|
||||||
|
|
||||||
|
// Total by Secteur
|
||||||
|
$totalbysecteurs = $em->createQueryBuilder()
|
||||||
|
->select('COUNT(e.secteur_public_prive_libe) total','e.secteur_public_prive_libe label')
|
||||||
|
->from('CadolesCoreBundle:Etab','e')
|
||||||
|
->from('CadolesCoreBundle:Server','s')
|
||||||
|
->where('s.etab=e')
|
||||||
|
->andWhere('e.libelle_academie=:acad')
|
||||||
|
->setParameter('acad',$acad)
|
||||||
|
->groupBy('e.secteur_public_prive_libe')
|
||||||
|
->orderBy('total','DESC')
|
||||||
|
->addOrderBy('label','ASC');
|
||||||
|
|
||||||
|
// Total by Nature
|
||||||
|
$totalbynatures = $em->createQueryBuilder()
|
||||||
|
->select('COUNT(e.nature_uai_libe) total','e.nature_uai_libe label')
|
||||||
|
->from('CadolesCoreBundle:Etab','e')
|
||||||
|
->from('CadolesCoreBundle:Server','s')
|
||||||
|
->where('s.etab=e')
|
||||||
|
->andWhere('e.libelle_academie=:acad')
|
||||||
|
->setParameter('acad',$acad)
|
||||||
|
->groupBy('e.nature_uai_libe')
|
||||||
|
->orderBy('total','DESC')
|
||||||
|
->addOrderBy('label','ASC');
|
||||||
|
|
||||||
|
// Total applications
|
||||||
|
$applications = $em->createQueryBuilder()
|
||||||
|
->select('a')
|
||||||
|
->from('CadolesCoreBundle:Etab','e')
|
||||||
|
->from('CadolesCoreBundle:Server','s')
|
||||||
|
->from('CadolesCoreBundle:ServerApplication','sa')
|
||||||
|
->from('CadolesCoreBundle:Application','a')
|
||||||
|
->where('s.etab=e')
|
||||||
|
->andWhere('e.libelle_academie=:acad')
|
||||||
|
->andWhere('sa.server=s')
|
||||||
|
->andWhere(('sa.application=a'))
|
||||||
|
->setParameter('acad',$acad);
|
||||||
|
|
||||||
|
// Total by apps
|
||||||
|
$totalapplications = $em->createQueryBuilder()
|
||||||
|
->select('COUNT(a.package) total','a.name label')
|
||||||
|
->from('CadolesCoreBundle:ServerApplication','sa')
|
||||||
|
->from('CadolesCoreBundle:Application','a')
|
||||||
|
->from('CadolesCoreBundle:Etab','e')
|
||||||
|
->from('CadolesCoreBundle:Server','s')
|
||||||
|
->where('sa.application=a')
|
||||||
|
->andWhere('sa.server=s')
|
||||||
|
->andwhere('s.etab=e')
|
||||||
|
->andWhere('e.libelle_academie=:acad')
|
||||||
|
->setParameter('acad',$acad)
|
||||||
|
->groupBy('a.package')
|
||||||
|
->orderBy('total','DESC')
|
||||||
|
->addOrderBy('label','ASC');
|
||||||
|
|
||||||
|
// Servers
|
||||||
|
$etabs = $em->createQueryBuilder()
|
||||||
|
->select('e')
|
||||||
|
->from('CadolesCoreBundle:Etab','e')
|
||||||
|
->from('CadolesCoreBundle:Server','s')
|
||||||
|
->where('s.etab=e')
|
||||||
|
->andWhere('e.libelle_academie=:acad')
|
||||||
|
->setParameter('acad',$acad);
|
||||||
|
|
||||||
|
return $this->render('CadolesCoreBundle:Core:home.html.twig',[
|
||||||
|
'useheader' => true,
|
||||||
|
'usemenu' => false,
|
||||||
|
'usesidebar' => false,
|
||||||
|
'etabs' => $etabs->getQuery()->getResult(),
|
||||||
|
'totalservers' => count($servers->getQuery()->getResult()),
|
||||||
|
'totalbymodules' => $totalmodules->getQuery()->getResult(),
|
||||||
|
'totalbyversions' => $totalversions->getQuery()->getResult(),
|
||||||
|
'totalapplications' => count($applications->getQuery()->getResult()),
|
||||||
|
'totalbyapplications' => $totalapplications->getQuery()->getResult(),
|
||||||
|
'totalbysecteurs' => $totalbysecteurs->getQuery()->getResult(),
|
||||||
|
'totalbynatures' => $totalbynatures->getQuery()->getResult(),
|
||||||
|
'by' => "acad",
|
||||||
|
'servers' => $servers->getQuery()->getResult(),
|
||||||
|
'acad' => $acad,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,79 @@
|
||||||
|
<?php
|
||||||
|
namespace Cadoles\CoreBundle\Form;
|
||||||
|
|
||||||
|
use Symfony\Component\Form\AbstractType;
|
||||||
|
use Symfony\Component\Form\FormBuilderInterface;
|
||||||
|
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\EmailType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\ButtonType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\ColorType;
|
||||||
|
use Cadoles\CoreBundle\Form\IconChoiceType;
|
||||||
|
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
||||||
|
use Ivory\CKEditorBundle\Form\Type\CKEditorType;
|
||||||
|
use Tetranz\Select2EntityBundle\Form\Type\Select2EntityType;
|
||||||
|
|
||||||
|
use Doctrine\ORM\EntityRepository;
|
||||||
|
use Doctrine\ORM\EntityManager;
|
||||||
|
|
||||||
|
class ScrumType extends AbstractType
|
||||||
|
{
|
||||||
|
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||||
|
{
|
||||||
|
if($options["mode"]!="view") {
|
||||||
|
$builder
|
||||||
|
->add('submit', SubmitType::class, [
|
||||||
|
'label' => 'Valider',
|
||||||
|
'attr' => ['class' => 'btn btn-success']
|
||||||
|
]);
|
||||||
|
|
||||||
|
$builder
|
||||||
|
->add('title', TextType::class, [
|
||||||
|
'label' => 'Titre',
|
||||||
|
'attr' => ['class' => 'form-control', 'style' => 'margin-bottom:15px']
|
||||||
|
]);
|
||||||
|
|
||||||
|
|
||||||
|
$builder
|
||||||
|
->add('groups', Select2EntityType::class, [
|
||||||
|
'label' => 'Visible pour les Groupes',
|
||||||
|
'class' => 'CadolesCoreBundle:Group',
|
||||||
|
'text_property' => 'label',
|
||||||
|
'multiple' => true,
|
||||||
|
'remote_route' => 'cadoles_core_user_group_ajax_list',
|
||||||
|
'primary_key' => 'id',
|
||||||
|
'text_property' => 'label',
|
||||||
|
'minimum_input_length' => 0,
|
||||||
|
'page_limit' => 100,
|
||||||
|
'allow_clear' => true,
|
||||||
|
'delay' => 250,
|
||||||
|
'cache' => false,
|
||||||
|
'cache_timeout' => 60000,
|
||||||
|
'language' => 'fr',
|
||||||
|
'placeholder' => 'Selectionner un groupe',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$builder
|
||||||
|
->add('description',CKEditorType::class,[
|
||||||
|
'config_name' => 'full_config',
|
||||||
|
'label' => 'Description',
|
||||||
|
'mapped' => false,
|
||||||
|
'required' => false,
|
||||||
|
'config' => ['height' => '300px','filebrowserUploadRoute' => 'cadoles_core_user_scrum_upload'],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function configureOptions(OptionsResolver $resolver)
|
||||||
|
{
|
||||||
|
$resolver->setDefaults(array(
|
||||||
|
'data_class' => 'Cadoles\CoreBundle\Entity\Scrum',
|
||||||
|
'mode' => "string"
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
|
@ -7,6 +7,9 @@ cadoles_core_server:
|
||||||
path: /server/{id}
|
path: /server/{id}
|
||||||
defaults: { _controller: CadolesCoreBundle:Core:server }
|
defaults: { _controller: CadolesCoreBundle:Core:server }
|
||||||
|
|
||||||
|
cadoles_core_acad:
|
||||||
|
path: /acad/{acad}
|
||||||
|
defaults: { _controller: CadolesCoreBundle:Core:acad }
|
||||||
|
|
||||||
#== Theme ================================================================================================================
|
#== Theme ================================================================================================================
|
||||||
|
|
||||||
|
@ -141,7 +144,7 @@ cadoles_core_user_group_ajax_list:
|
||||||
path: /user/group/ajaxlist
|
path: /user/group/ajaxlist
|
||||||
defaults: { _controller: CadolesCoreBundle:Group:ajaxlist}
|
defaults: { _controller: CadolesCoreBundle:Group:ajaxlist}
|
||||||
|
|
||||||
#== Group =================================================================================================================
|
#== API ===================================================================================================================
|
||||||
cadoles_core_api:
|
cadoles_core_api:
|
||||||
path: /api
|
path: /api
|
||||||
defaults: { _controller: CadolesCoreBundle:Api:api}
|
defaults: { _controller: CadolesCoreBundle:Api:api}
|
||||||
|
|
|
@ -5,6 +5,10 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block pagewrapper %}
|
{% block pagewrapper %}
|
||||||
|
{%if by=="acad" %}
|
||||||
|
<h1 style="text-align:center">{{acad}}</h1>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
<div class="row" style="margin-top:20px">
|
<div class="row" style="margin-top:20px">
|
||||||
|
|
||||||
|
|
||||||
|
@ -27,20 +31,20 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
{% if totalbyacademies is defined %}
|
||||||
<div class="col-md-6" >
|
<div class="col-md-6" >
|
||||||
<h2>Serveurs par Académies</h2>
|
<h2>Serveurs par Académies</h2>
|
||||||
<div id='byacademie-chart' style="height:250px"></div>
|
<div id='byacademie-chart' style="height:250px"></div>
|
||||||
<div id="byacademie-legend"></div>
|
<div id="byacademie-legend"></div>
|
||||||
</div>
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
<div class="col-md-6" >
|
<div class="col-md-6" >
|
||||||
<h2>Serveurs par Secteurs</h2>
|
<h2>Serveurs par Secteurs</h2>
|
||||||
<div id='bysecteur-chart' style="height:250px"></div>
|
<div id='bysecteur-chart' style="height:250px"></div>
|
||||||
<div id="bysecteur-legend"></div>
|
<div id="bysecteur-legend"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-6" >
|
<div class="col-md-6" >
|
||||||
<h2>Serveurs par Natures</h2>
|
<h2>Serveurs par Natures</h2>
|
||||||
<div id='bynature-chart' style="height:250px"></div>
|
<div id='bynature-chart' style="height:250px"></div>
|
||||||
|
@ -52,9 +56,7 @@
|
||||||
<div id='bymodule-chart' style="height:250px"></div>
|
<div id='bymodule-chart' style="height:250px"></div>
|
||||||
<div id="bymodule-legend"></div>
|
<div id="bymodule-legend"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-6" >
|
<div class="col-md-6" >
|
||||||
<h2>Serveurs par Version</h2>
|
<h2>Serveurs par Version</h2>
|
||||||
<div id='byversion-chart' style="height:250px"></div>
|
<div id='byversion-chart' style="height:250px"></div>
|
||||||
|
@ -64,6 +66,42 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{% if by=="acad" and app.user %}
|
||||||
|
<table class="table table-striped table-bordered table-hover">
|
||||||
|
<thead>
|
||||||
|
<th>UAI</th>
|
||||||
|
<th>Nom</th>
|
||||||
|
<th>Adresse</th>
|
||||||
|
<th>Ville</th>
|
||||||
|
<th>Secteur</th>
|
||||||
|
<th>Nature</th>
|
||||||
|
<th>URL</th>
|
||||||
|
<th>Module</th>
|
||||||
|
<th>Version</th>
|
||||||
|
<th>Application</th>
|
||||||
|
<th>Paquet</th>
|
||||||
|
</thead>
|
||||||
|
{% for server in servers %}
|
||||||
|
{% for serverapplication in server.serverapplications %}
|
||||||
|
<tr>
|
||||||
|
<td>{{server.etab.numerouai}}</td>
|
||||||
|
<td>{{server.etab.denominationprincipale}}</td>
|
||||||
|
<td>{{server.etab.adresseuai}}</td>
|
||||||
|
<td>{{server.etab.libellecommune}}</td>
|
||||||
|
<td>{{server.etab.secteurpublicprivelibe}}</td>
|
||||||
|
<td>{{server.etab.natureuailibe}}</td>
|
||||||
|
<td>{{server.url}}</td>
|
||||||
|
<td>{{server.module}}</td>
|
||||||
|
<td>{{server.version}}</td>
|
||||||
|
<td>{{serverapplication.application.name}}</td>
|
||||||
|
<td>{{serverapplication.version}}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
</table>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block localjavascript %}
|
{% block localjavascript %}
|
||||||
|
@ -114,6 +152,7 @@
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
//== byAcademie
|
//== byAcademie
|
||||||
|
{% if totalbyacademies is defined %}
|
||||||
var byacademie = Morris.Donut({
|
var byacademie = Morris.Donut({
|
||||||
element: 'byacademie-chart',
|
element: 'byacademie-chart',
|
||||||
data: [
|
data: [
|
||||||
|
@ -125,15 +164,19 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
byacademie.options.data.forEach(function(label, i) {
|
byacademie.options.data.forEach(function(label, i) {
|
||||||
var legendItem = $('<span style="margin:auto; display: block;text-align: left;"></span>').text( label['label'] + " ( " +label['value'] + " )" ).prepend('<span> </span>');
|
var url = "{{ path("cadoles_core_acad",{"acad":"xx"}) }}";
|
||||||
|
var url = url.replace("xx",label['label']);
|
||||||
|
|
||||||
|
var legendItem = $('<span style="margin:auto; display: block;text-align: left;"></span>').html( "<a href='"+url+"'>"+label['label'] + "</a> ( " +label['value'] + " )" ).prepend('<span> </span>');
|
||||||
legendItem.find('span')
|
legendItem.find('span')
|
||||||
.css('backgroundColor', byacademie.options.colors[i])
|
.css('backgroundColor', byacademie.options.colors[i])
|
||||||
.css('width', '20px')
|
.css('width', '20px')
|
||||||
.css('display', 'inline-block')
|
.css('display', 'inline-block')
|
||||||
.css('margin', '5px');
|
.css('margin', '5px');
|
||||||
$('#byacademie-legend').append(legendItem)
|
$('#byacademie-legend').append(legendItem)
|
||||||
});
|
});
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
//== byNature
|
//== byNature
|
||||||
var bynature = Morris.Donut({
|
var bynature = Morris.Donut({
|
||||||
element: 'bynature-chart',
|
element: 'bynature-chart',
|
||||||
|
@ -242,6 +285,14 @@
|
||||||
$('#byapplication-legend').append(legendItem)
|
$('#byapplication-legend').append(legendItem)
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
//= Table
|
||||||
|
$('.table').DataTable({
|
||||||
|
columnDefs: [ { "targets": "no-sort", "orderable": false }, { "targets": "no-string", "type" : "num" } ],
|
||||||
|
responsive: true,
|
||||||
|
iDisplayLength: 25,
|
||||||
|
order: [[ 1, "asc" ]]
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
function showModal(id) {
|
function showModal(id) {
|
||||||
|
|
|
@ -16,8 +16,12 @@
|
||||||
<b>Version</b> = {{ server.version }}<br><br>
|
<b>Version</b> = {{ server.version }}<br><br>
|
||||||
|
|
||||||
<b>Applications</b><br>
|
<b>Applications</b><br>
|
||||||
{% for application in server.serverapplications %}
|
{% for application in server.serverapplications|sort((a, b) => a.version <=> b.version) %}
|
||||||
{{ application.version }}<br>
|
{% if app.user %}
|
||||||
|
{{ application.version }}<br>
|
||||||
|
{% else %}
|
||||||
|
{{ application.application.name }}<br>
|
||||||
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -102,6 +102,24 @@ class InitDataCommand extends ContainerAwareCommand
|
||||||
$this->entityManager->persist($entity);
|
$this->entityManager->persist($entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Job de purge des servers obsolète
|
||||||
|
// Toute les 24h à 3h00
|
||||||
|
$entity = $this->entityManager->getRepository('CadolesCronBundle:Cron')->find(210);
|
||||||
|
if(!$entity) {
|
||||||
|
$entity = new Cron;
|
||||||
|
$nextdate=$entity->getSubmitdate();
|
||||||
|
$nextdate->setTime(3,0);
|
||||||
|
$entity->setCommand("Core:PurgeServer");
|
||||||
|
$entity->setDescription("Suppression des serveurs obsolètes");
|
||||||
|
$entity->setId(210);
|
||||||
|
$entity->setStatut(2);
|
||||||
|
$entity->setRepeatcall(0);
|
||||||
|
$entity->setRepeatexec(0);
|
||||||
|
$entity->setRepeatinterval(86400);
|
||||||
|
$entity->setNextexecdate($nextdate);
|
||||||
|
$this->entityManager->persist($entity);
|
||||||
|
}
|
||||||
|
|
||||||
$this->entityManager->flush();
|
$this->entityManager->flush();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue