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");