diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/SynchroCommand.php b/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/SynchroCommand.php index dc5dcb16..e3174898 100644 --- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/SynchroCommand.php +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/SynchroCommand.php @@ -379,6 +379,62 @@ class SynchroCommand extends Command $this->em->clear(); if($nbusers%1000==0) $this->writelnred(" == Nombre d'utilisateurs traités = $nbusers=="); } + + $this->writeln(''); + $this->writeln('== GROUPS ============================================'); + // Pour chaque groupe annuaire on s'assure que le groupe existe bien dans l'annuaire + $groups=$this->em->getRepository('CadolesCoreBundle:Group')->findBy(["fgtemplate"=>true]); + foreach($groups as $group) { + if(stripos($group->getLabel(),"PROFIL - ")===false) { + $results = $this->ldap->search($group->getLdapfilter(), [], $this->ldap_basedn); + if(count($results)==0) { + $this->writeln(" - Suppression dans Bundle >> ".$group->getLabel()); + if(!$simulate) { + if($group->getFgcanshare()) { + // Sur l'ensemble des pages liés + $pages=$group->getPages(); + foreach($pages as $page) { + $getgroups=$page->getGroups(); + // si la page est lié qu'à un seul group on peut la supprimer + if($getgroups->count()==1) + $this->em->remove($page); + } + + // Sur l'ensemble des calendar liés + $calendars=$group->getCalendars(); + foreach($calendars as $calendar) { + $getgroups=$calendar->getGroups(); + // si la page est lié qu'à un seul group on peut la supprimer + if($getgroups->count()==1) + $this->em->remove($calendar); + } + + // Sur l'ensemble des blog liés + $blogs=$group->getBlogs(); + foreach($blogs as $blog) { + $getgroups=$blog->getGroups(); + // si la page est lié qu'à un seul group on peut la supprimer + if($getgroups->count()==1) + $this->em->remove($blog); + } + + // Sur l'ensemble des project liés + $projects=$group->getProjects(); + foreach($projects as $project) { + $getgroups=$project->getGroups(); + // si la page est lié qu'à un seul group on peut la supprimer + if($getgroups->count()==1) + $this->em->remove($project); + } + } + + $this->em->remove($group); + $this->em->flush(); + } + } + } + } + } } else { diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/GroupController.php b/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/GroupController.php index a47e47a7..a20ed7e0 100644 --- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/GroupController.php +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/GroupController.php @@ -958,7 +958,7 @@ class GroupController extends Controller // Sur l'ensemble des project liés $projects=$data->getProjects(); foreach($projects as $project) { - $groups=$blog->getGroups(); + $groups=$project->getGroups(); // si la page est lié qu'à un seul group on peut la supprimer if($groups->count()==1) $em->remove($project);