ninegate/src/cadolesuser-1.0/src/Cadoles/CoreBundle/Command/InitDataCommand.php

129 lines
4.2 KiB
PHP
Raw Normal View History

2018-12-18 09:44:39 +01:00
<?php
namespace Cadoles\CoreBundle\Command;
2019-03-13 17:30:41 +01:00
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
2018-12-18 09:44:39 +01:00
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Finder\Finder;
use Symfony\Component\HttpKernel\KernelInterface;
use Doctrine\DBAL\Connection as DBALConnection;
use Doctrine\ORM\EntityManager;
use Cadoles\CoreBundle\Entity\Group;
use Cadoles\CoreBundle\Entity\UserGroup;
2019-03-13 17:30:41 +01:00
class InitDataCommand extends ContainerAwareCommand
2018-12-18 09:44:39 +01:00
{
protected function configure()
{
$this
// the name of the command (the part after "bin/console")
->setName('Core:InitData')
// the short description shown while running "php bin/console list"
->setDescription('Init Data for Core')
// the full command description shown when running the command with
// the "--help" option
->setHelp('This command Init Data for Core')
;
}
protected function execute(InputInterface $input, OutputInterface $output)
{
2019-03-13 17:30:41 +01:00
$output->writeln('');
$output->writeln('CORE = Default Data');
$em = $this->getContainer()->get('doctrine')->getEntityManager();
2019-04-05 14:37:38 +02:00
2018-12-18 09:44:39 +01:00
$finder = new Finder();
2019-03-12 14:50:57 +01:00
$finder->in('src/Cadoles/CoreBundle/Command/data');
2018-12-18 09:44:39 +01:00
// Init 01 = ce qui templetisé
2019-03-13 17:30:41 +01:00
$output->writeln(' > Parametres 01');
2018-12-18 09:44:39 +01:00
$finder->name('core-init-01.sql');
foreach( $finder as $file ){
$content = $file->getContents();
2019-03-12 14:50:57 +01:00
$stmt = $em->getConnection()->prepare($content);
2018-12-18 09:44:39 +01:00
$stmt->execute();
}
// Init 02 = ce qui est toujours le cas
2019-03-13 17:30:41 +01:00
$output->writeln(' > Parametres 02');
2018-12-18 09:44:39 +01:00
$finder->name('core-init-02.sql');
foreach( $finder as $file ){
$content = $file->getContents();
$stmt = $em->getConnection()->prepare($content);
$stmt->execute();
}
// Init country
2019-03-13 17:30:41 +01:00
$output->writeln(' > Pays');
2018-12-18 09:44:39 +01:00
$finder->name('country.sql');
foreach( $finder as $file ){
$content = $file->getContents();
$stmt = $em->getConnection()->prepare($content);
$stmt->execute();
2019-04-05 14:37:38 +02:00
2018-12-18 09:44:39 +01:00
}
// Init city
2019-03-13 17:30:41 +01:00
$output->writeln(' > Villes');
2018-12-18 09:44:39 +01:00
$finder->name('city.sql');
foreach( $finder as $file ){
$content = $file->getContents();
$stmt = $em->getConnection()->prepare($content);
$stmt->execute();
2019-04-05 14:37:38 +02:00
2018-12-18 09:44:39 +01:00
}
$stmt->closeCursor();
// On s'assure que le groupe 'Tout le Monde' existe
$group=$em->getRepository('CadolesCoreBundle:Group')->findOneBy(array('fgall'=>true));
if (!$group) {
2019-03-13 17:30:41 +01:00
$output->writeln(' > Création du groupe Tout le Monde');
2018-12-18 09:44:39 +01:00
$group = new Group();
$group->setLabel("Tout le Monde");
$group->setFgopen(false);
$group->setFgall(true);
2019-03-12 14:50:57 +01:00
$group->setFgtemplate(false);
2019-04-05 14:37:38 +02:00
$group->setFgcanshare(false);
2018-12-18 09:44:39 +01:00
$em->persist($group);
2019-04-05 14:37:38 +02:00
$em->flush();
2018-12-18 09:44:39 +01:00
}
$sub = $em->createQueryBuilder();
$sub->select("usergroup");
$sub->from("CadolesCoreBundle:UserGroup","usergroup");
$sub->andWhere('usergroup.user = user.id');
$sub->andWhere('usergroup.group = :groupid');
$qb = $em->createQueryBuilder();
$qb->select('user')
->from('CadolesCoreBundle:User','user')
->where($qb->expr()->not($qb->expr()->exists($sub->getDQL())))
->setParameter("groupid",$group->getId());
$datas=$qb->getQuery()->getResult();
foreach($datas as $data) {
2019-03-13 17:30:41 +01:00
$output->writeln(" > Ratachement ".$data->getId()." ".$data->getUsername());
2018-12-18 09:44:39 +01:00
$usergroup=new UserGroup();
$usergroup->setUser($data);
$usergroup->setGroup($group);
$em->persist($usergroup);
2019-04-05 14:37:38 +02:00
$em->flush();
2018-12-18 09:44:39 +01:00
}
2019-03-13 17:30:41 +01:00
$output->writeln('');
2018-12-18 09:44:39 +01:00
}
protected static function determineKernelRootDir(Event $event) {
$extra = $event->getComposer()->getPackage()->getExtra();
$rootdir = rtrim(getcwd(), '/');
return $rootdir . '/' . trim($extra['symfony-app-dir'], '/');
}
}