From 774fb08894d3724f0fe03f2cd2d2fcb45886db3e Mon Sep 17 00:00:00 2001 From: afornerot Date: Wed, 27 Nov 2019 10:13:43 +0100 Subject: [PATCH] svg --- dicos/90_ninegate.xml | 167 +++++++++++++++- .../CoreBundle/Command/OnlyCommand.php | 183 +++++++++++++++++- .../src/Cadoles/CoreBundle/Entity/Group.php | 35 +++- .../Controller/PagetemplateController.php | 1 - .../views/Pagewidget/viewgroup.html.twig | 2 +- .../Resources/views/Chat/client.html.twig | 4 +- 6 files changed, 379 insertions(+), 13 deletions(-) diff --git a/dicos/90_ninegate.xml b/dicos/90_ninegate.xml index f56ebf23..4e2890fc 100644 --- a/dicos/90_ninegate.xml +++ b/dicos/90_ninegate.xml @@ -29,8 +29,13 @@ + + + + + @@ -149,7 +154,25 @@ non - + + + + + non + + + + + + non + + + + + + non + + @@ -157,6 +180,12 @@ + + + non + + + non @@ -166,6 +195,12 @@ + + + non + + + non @@ -257,8 +292,13 @@ Paramètres associés à Adminer Paramètres associés à Balado Paramètres associés à Dokuwiki + Paramètres associés à eConnect + Paramètres associés à Etherhome + Paramètres associés à GEPI Paramètres associés à Grr + Paramètres associés à Kanboard Paramètres associés à Limesurvey + Paramètres associés à Mindmaps Paramètres associés à Moodle Paramètres associés à Nextcloud Paramètres associés à Only Office @@ -407,8 +447,13 @@ ninegate_activate_widadminer ninegate_activate_widbalado ninegate_activate_widdokuwiki + ninegate_activate_wideconnect + ninegate_activate_widetherhome + ninegate_activate_widgepi ninegate_activate_widgrr + ninegate_activate_widkanboard ninegate_activate_widlimesurvey + ninegate_activate_widmindmaps ninegate_activate_widmoodle ninegate_activate_widnextcloud ninegate_activate_widonlyoffice @@ -534,6 +579,78 @@ + + + oui + activer_econnect + oui + non + non + + + + non + + ninegate_wideconnect_url + + + + oui + activer_econnect + /econnect + None + + + + + + + oui + activer_etherhome + oui + non + non + + + + non + + ninegate_widetherhome_url + + + + oui + activer_etherhome + /etherhome + None + + + + + + + oui + activer_gepi + oui + non + non + + + + non + + ninegate_widgepi_url + + + + oui + activer_gepi + /gepi + None + + + + oui @@ -558,6 +675,30 @@ + + + oui + activer_kanboard + oui + non + non + + + + non + + ninegate_widkanboard_url + + + + oui + activer_kanboard + /kanboard + None + + + + oui @@ -606,6 +747,30 @@ + + + oui + activer_mindmaps + oui + non + non + + + + non + + ninegate_widmindmaps_url + + + + oui + activer_mindmaps + /mindmaps + None + + + + oui diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/OnlyCommand.php b/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/OnlyCommand.php index c59412d0..b7afb6bb 100644 --- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/OnlyCommand.php +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/OnlyCommand.php @@ -11,6 +11,8 @@ use Symfony\Component\HttpKernel\KernelInterface; use Symfony\Component\HttpFoundation\Response; use Doctrine\DBAL\Connection as DBALConnection; use Doctrine\ORM\EntityManager; +use Ramsey\Uuid\Uuid; +use Ramsey\Uuid\Exception\UnsatisfiedDependencyException; use Cadoles\CoreBundle\Entity\Niveau01; use Cadoles\CoreBundle\Entity\Niveau02; @@ -100,8 +102,8 @@ class OnlyCommand extends Command $this->only_url = $this->container->getParameter("widonlyoffice_url")."/api/2.0/"; $this->only_host = str_replace("https://","",str_replace("http://","",$this->container->getParameter("widonlyoffice_url"))); - //$this->only_url = "https://transnum.oo.ac-dijon.fr"."/api/2.0/"; - //$this->only_host = "transnum.oo.ac-dijon.fr"; + $this->only_url = "https://transnum.oo.ac-dijon.fr"."/api/2.0/"; + $this->only_host = "transnum.oo.ac-dijon.fr"; $this->only_user = $this->container->getParameter("widonlyoffice_user"); $this->only_password = $this->container->getParameter("widonlyoffice_password"); @@ -133,7 +135,7 @@ class OnlyCommand extends Command $this->writeln('== AUTHENTIFICATION ================================='); \Unirest\Request::verifyPeer(false); \Unirest\Request::verifyHost(false); - $headers = ['Host' => $this->only_host, 'Accept' => 'application/json','Content-Type'=>'application/json']; + $headers = ['Host' => $this->only_host, 'Accept' => 'application/json','Content-Type'=>'application/json','Retry-After'=>'5']; $query = array('userName' => $this->only_user, 'password' => $this->only_password); $body = \Unirest\Request\Body::json($query); @@ -143,14 +145,22 @@ class OnlyCommand extends Command $headers["Authorization"]=$token; // Synchronisation des utilisateur Only sur l'annuaire + /* $this->writeln(''); $this->writeln('== SYNCHRONISATION ONLY=============================='); - //$response = \Unirest\Request::get($this->only_url.'/settings/ldap/sync',$headers); - //if($this->koresponse($response)) return 0; + $response = \Unirest\Request::get($this->only_url.'/settings/ldap/sync',$headers); + if($this->koresponse($response)) return 0; + */ + + // Fichier d'import des utilisateurs only inexistant dans ninegate + $this->filesystem->remove($this->rootlog.'toimportfromonly.csv'); + $string="login;prenom;nom;email;niveau01;role"; + $this->filesystem->appendToFile($this->rootlog.'toimportfromonly.csv', $string."\n"); // Controler les utilisateur only $this->writeln(''); $this->writeln('== CONTROLE USER ONLY================================'); + $onlyusers=[]; $response = \Unirest\Request::get($this->only_url.'/people',$headers); if($this->koresponse($response)) return 0; @@ -158,10 +168,26 @@ class OnlyCommand extends Command $user=$this->em->getRepository("CadolesCoreBundle:User")->findBy(["username"=>$onlyuser->userName]); if(!$user) { $this->writelnred("ERREUR ".$onlyuser->userName." existe dans OnlyOffice mais pas dans Ninegate"); + if($onlyuser->lastName!="") { + $string=$onlyuser->userName.";".$onlyuser->firstName.";".$onlyuser->lastName.";".$onlyuser->email.";Autres;ROLE_USER"; + //$this->filesystem->appendToFile($this->rootlog.'toimportfromonly.csv', $string."\n"); + } + } + else { + // Sauvegarde l'id du useronlyoffice + $onlyusers[$onlyuser->id]=$onlyuser->userName; } - } + $string=$onlyuser->userName.";".$onlyuser->firstName.";".$onlyuser->lastName.";".$onlyuser->email.";Autres;ROLE_USER"; + $this->filesystem->appendToFile($this->rootlog.'toimportfromonly.csv', $string."\n"); + } + + $response = \Unirest\Request::get($this->only_url.'/people',$headers); + if($this->koresponse($response)) return 0; + dump($response); + // Controler les utilisateurs ninegate + /* $this->writeln(''); $this->writeln('== CONTROLE USER NINEGATE============================'); $users=$this->em->getRepository("CadolesCoreBundle:User")->findAll(); @@ -171,6 +197,94 @@ class OnlyCommand extends Command $this->writelnred("ERREUR ".$user->getUsername()." existe dans Ninegate mais pas dans OnlyOffice"); } } + */ + + // On recherche la page template de group + $pagetemplate=$this->em->getRepository("CadolesPortalBundle:Page")->findOneBy(["parentfor"=>"group"]); + if(!$pagetemplate) { + $this->writelnred("ERREUR Pas de page modèle de type groupe"); + return 1; + } + + // Injection des groupes only non existant dans ninegate + $this->writeln(''); + $this->writeln('== INJECTION DES GROUPES ONLY========================'); + $response = \Unirest\Request::get($this->only_url.'/project?status=0,',$headers); + if($this->koresponse($response)) return 0; + foreach($response->body->response as $onlygroup) { + + // Le groupe existe-t-il dans ninegate + $group=$this->em->getRepository("CadolesCoreBundle:Group")->findBy(["idonlyoffice"=>$onlygroup->id]); + if(!$group) { + $namegroup=$onlygroup->id." - ".$onlygroup->title; + + // Ce nom de groupe existe-t-il déjà si oui erreur + $group=$this->em->getRepository("CadolesCoreBundle:Group")->findBy(["label"=>$namegroup]); + if($group) + $this->writelnred("ERREUR Groupe déjà existant = ".$namegroup); + else{ + // Le propriétaire du groupe only existe-t-il dans ninegate + if(!array_key_exists($onlygroup->responsible->id,$onlyusers)) { + $this->writelnred("ERREUR Propriétaire du Groupe n'existe pas. Group = ".$namegroup. " - User = ".$onlygroup->responsible->displayName); + } + else { + + // Création du groupe + $user=$this->em->getRepository("CadolesCoreBundle:User")->findOneBy(["username"=>$onlyusers[$onlygroup->responsible->id]]); + $this->writeln("Création du groupe Ninegate = ".$namegroup); + + if(!$simulate) { + $group=new Group(); + $group->setLabel($namegroup); + $group->setDescription($onlygroup->description); + $group->setFgopen(!$onlygroup->isPrivate); + $group->setFgcanshare(true); + $group->setFgcancreatepage(false); + $group->setFgcancreatecalendar(false); + $group->setFgcancreateblog(false); + $group->setFgall(false); + $group->setFgtemplate(false); + $group->setOwner($user); + $group->setIdonlyoffice($onlygroup->id); + + $this->em->persist($group); + $this->em->flush(); + + // On ajoute le propriétaire en tant que membre du groupe + $this->addMember($group,$user,true); + + // On controle que le groupe a bien page / calendrier / blog + $this->ctrlFgcanshare($group,$user,$pagetemplate); + } + + // Rattachement des membres au groupe + $group=$this->em->getRepository("CadolesCoreBundle:Group")->findOneBy(["idonlyoffice"=>$onlygroup->id]); + $members = \Unirest\Request::get($this->only_url.'/project/'.$onlygroup->id.'/team',$headers); + if($this->koresponse($members)) return 0; + foreach($members->body->response as $member) { + // Si non propriétaire du groupe + if($member->userName!=$onlyusers[$onlygroup->responsible->id]) { + $user=$this->em->getRepository("CadolesCoreBundle:User")->findOneBy(["username"=>$member->userName]); + if(!$user) { + $this->writelnred("ERREUR Membre du group inexistant. Group = ".$namegroup." - ".$member->userName); + } + else { + $this->writeln("Rattachement utilisateur. Group = ".$namegroup." - User = ".$member->userName); + if(!$simulate&&$group) { + // On s'assure qu'il n'es pas déjà rattaché + $usergroup=$this->em->getRepository("CadolesCoreBundle:UserGroup")->findOneBy(["user"=>$user,"group"=>$group]); + if(!$usergroup) { + $this->addMember($group,$user,false); + } + } + } + } + } + } + } + } + } + } $this->writeln(''); @@ -196,4 +310,61 @@ class OnlyCommand extends Command } + private function addMember($group,$user,$fgmanager) { + $key = Uuid::uuid4(); + $usergroup=new Usergroup; + $usergroup->setUser($user); + $usergroup->setGroup($group); + $usergroup->setFgmanager($fgmanager); + $usergroup->setKeyvalue($key); + $this->em->persist($usergroup); + $this->em->flush(); + + } + + + private function ctrlFgcanshare($group,$user,$pagetemplate) { + if($group->getFgcanshare()) { + // On regarde s'il a au moins une page + if($group->getPages()->isEmpty()) { + $page=$this->em->getRepository("CadolesPortalBundle:Page")->clonePage(null,$pagetemplate); + $group->addPage($page); + $page->setName($group->getLabel()); + $page->setUser($user); + + $this->em->persist($page); + $this->em->persist($group); + $this->em->flush(); + } + + // On regarde s'il a au moins un calendrier + if($group->getCalendars()->isEmpty()) { + $calendar=new Calendar(); + $key = Uuid::uuid4(); + + $calendar->setName($group->getLabel()); + $calendar->setKeyvalue($key); + $calendar->addGroup($group); + $calendar->setColor($group->getColor()); + $calendar->setType(0); + $calendar->setUser($user); + + $this->em->persist($calendar); + $this->em->flush(); + } + + // On regarde s'il a au moins un blog + if($group->getBlogs()->isEmpty()) { + $blog=new Blog(); + + $blog->setName($group->getLabel()); + $blog->addGroup($group); + $blog->setUser($user); + + $this->em->persist($blog); + $this->em->flush(); + } + } + } + } diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Entity/Group.php b/src/ninegate-1.0/src/Cadoles/CoreBundle/Entity/Group.php index 912d3c8d..56f72af7 100644 --- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Entity/Group.php +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Entity/Group.php @@ -54,17 +54,17 @@ class Group private $fgcanshare; /** - * @ORM\Column(type="boolean", options={"default" : true}) + * @ORM\Column(type="boolean", options={"default" : false}) */ private $fgcancreatepage; /** - * @ORM\Column(type="boolean", options={"default" : true}) + * @ORM\Column(type="boolean", options={"default" : false}) */ private $fgcancreateblog; /** - * @ORM\Column(type="boolean", options={"default" : true}) + * @ORM\Column(type="boolean", options={"default" : false}) */ private $fgcancreatecalendar; @@ -88,6 +88,11 @@ class Group */ private $attributes; + /** + * @ORM\Column(type="string", length=250, nullable=true) + */ + private $idonlyoffice; + /** * @ORM\ManyToOne(targetEntity="Cadoles\PortalBundle\Entity\Icon", inversedBy="groups") * @ORM\JoinColumn(nullable=true, onDelete="SET NULL") @@ -430,6 +435,30 @@ class Group return $this->attributes; } + /** + * Set idonlyoffice + * + * @param string $idonlyoffice + * + * @return Group + */ + public function setIdonlyoffice($idonlyoffice) + { + $this->idonlyoffice = $idonlyoffice; + + return $this; + } + + /** + * Get idonlyoffice + * + * @return string + */ + public function getIdonlyoffice() + { + return $this->idonlyoffice; + } + /** * Add user * diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Controller/PagetemplateController.php b/src/ninegate-1.0/src/Cadoles/PortalBundle/Controller/PagetemplateController.php index f801658d..4377507f 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Controller/PagetemplateController.php +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Controller/PagetemplateController.php @@ -243,7 +243,6 @@ class PagetemplateController extends Controller } // Retour - dump("retdirect to".$this->generateUrl($this->routeprimary)); return $this->redirect($this->generateUrl($this->routeprimary)); } diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Pagewidget/viewgroup.html.twig b/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Pagewidget/viewgroup.html.twig index b42ca8cf..6a70bcc1 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Pagewidget/viewgroup.html.twig +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Pagewidget/viewgroup.html.twig @@ -64,7 +64,7 @@
- {{ group.title }} +

{{ group.title }}

diff --git a/src/ninegate-1.0/src/Cadoles/WebsocketBundle/Resources/views/Chat/client.html.twig b/src/ninegate-1.0/src/Cadoles/WebsocketBundle/Resources/views/Chat/client.html.twig index 505fe5d8..132bab28 100644 --- a/src/ninegate-1.0/src/Cadoles/WebsocketBundle/Resources/views/Chat/client.html.twig +++ b/src/ninegate-1.0/src/Cadoles/WebsocketBundle/Resources/views/Chat/client.html.twig @@ -214,6 +214,7 @@ {% endif %} $(document).ready(function(){ + /* if (CKEDITOR.instances["chat_message"]) CKEDITOR.instances["chat_message"].destroy(); if (CKEDITOR.instances["chat_messagemail"]) CKEDITOR.instances["chat_messagemail"].destroy(); @@ -236,7 +237,8 @@ height: 150 }); },1000); - + */ + $(".switch").bootstrapSwitch(); $("#mymodal-sendmail").removeAttr("tabindex");