protected function execute(InputInterface $input, OutputInterface $output)
 {
     $em = $this->getContainer()->get('doctrine')->getManager();
     $output->writeln("*** Report des accès postes sur les utilisateurs ***");
     $listePosteUtilisateursAppli = $em->getRepository('EVPOSaffectationBundle:Poste')->getPosteUtilisateursAppli();
     foreach ($listePosteUtilisateursAppli as $poste) {
         foreach ($poste->getListeUtilisateurs() as $util) {
             foreach ($poste->getListeUo() as $uo) {
                 $acces = $em->getRepository('EVPOSaffectationBundle:AccesUtilUo')->getAccesUtilUo($util, $uo);
                 if ($acces === null) {
                     $acces = new AccesUtilUo();
                     $acces->setUtilAcces($util);
                     $acces->setUoAcces($uo);
                     $acces->setSourceImport("Report depuis accès poste");
                     $em->persist($acces);
                     $em->flush();
                     $output->write("a");
                 } else {
                     if ($acces->getSourceImport() === NULL) {
                         $acces->setSourceImport("Report depuis accès poste");
                     }
                     $em->persist($acces);
                     $output->write("m");
                 }
             }
         }
     }
     $em->flush();
     $output->writeln("\nOK");
     unset($listePosteUtilisateursAppli);
     // Report des accès UO sur les Applications
     $output->write("Report des accès UO sur les applications... ");
     $listeAppli = $em->getRepository('EVPOSaffectationBundle:Application')->findAll();
     $nbAppli = 0;
     foreach ($listeAppli as $appli) {
         $output->write($appli->getCodeAppli() . " ");
         $appli->reportAccesUo();
         $em->persist($appli);
         gc_collect_cycles();
         $nbAppli++;
         if ($nbAppli % 25 == 0) {
             $em->flush();
         }
     }
     $em->flush();
     unset($listeAppli);
     $output->writeln("OK");
 }
예제 #2
0
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     ini_set('memory_limit', -1);
     gc_enable();
     $em = $this->getContainer()->get('doctrine')->getManager();
     $repUtil = $em->getRepository('EVPOSaffectationBundle:Utilisateur');
     $repUo = $em->getRepository('EVPOSaffectationBundle:UO');
     $repAccesUo = $em->getRepository('EVPOSaffectationBundle:AccesUtilUo');
     // Connexion à la base de données BAZA
     $user = $this->getContainer()->getParameter('oracle_user');
     $password = $this->getContainer()->getParameter('oracle_pwd');
     $sid = "pbaza";
     $this->ORA = oci_connect($user, $password, $sid);
     if (!$this->ORA) {
         print "Erreur de connexion à la base de données {$sid} avec l'utilisateur {$user}.";
         $output->writeln("Impossible de se connecter à la base de données");
     } else {
         // Suppression des anciens accès aux UO
         $output->write("Suppression des anciens accès aux UO... ");
         $listeAccesUo = $repAccesUo->findAll();
         foreach ($listeAccesUo as $acces) {
             $em->remove($acces);
         }
         $em->flush();
         unset($listeAccesUo);
         $output->writeln("OK");
         gc_collect_cycles();
         // Récupération de la liste des utilisateurs connus
         $listeUtil = $repUtil->getUtilisateurs();
         $nbUtil = 0;
         $output->writeln("Import des accès aux UO à partir de BAZA");
         $nbUtil = 0;
         $requeteBaza = "SELECT distinct code_uo\n      FROM (SELECT REGEXP_REPLACE (REGEXP_REPLACE (UPPER (ntmgname), '^GA_', ''), '_P\$', '')\n      CODE_UO\n      FROM baz_member\n      WHERE     UPPER (ntmgname) LIKE 'GA\\_%\\_P' ESCAPE '\\'\n      AND upper(ntmuid) = :matricule\n      UNION\n      SELECT REGEXP_REPLACE (REGEXP_REPLACE (nom_role_util, '^._[^_]+_'),\n      '_.*')\n      code_uo\n      FROM baz_role_a_util\n      WHERE upper(nom_util) = :matricule\n      UNION\n      SELECT a.id_module code_uo\n      FROM app_role_appli a, baz_member m\n      WHERE     a.code_env = 'PROD'\n      AND UPPER (a.code_role_appli) = UPPER (m.ntmgname)\n      AND upper(a.code_role_appli) not in ('GA_TSE', 'GA_ACINT_PROFIL1')\n      AND m.ntmuid = :matricule)";
         $csr = oci_parse($this->ORA, $requeteBaza);
         foreach ($listeUtil as $utilisateur) {
             $matUtilisateur = $utilisateur->getMatUtil();
             // Récupération de la liste des accés de l'utilisateur dans GAP
             oci_bind_by_name($csr, ':matricule', $matUtilisateur);
             oci_execute($csr);
             while (($row = oci_fetch_array($csr, OCI_ASSOC + OCI_RETURN_NULLS)) !== false) {
                 $codeUo = $row["CODE_UO"];
                 if ($repUo->isUo($codeUo)) {
                     $uo = $repUo->getUo($codeUo);
                     // Création de l'accès
                     $newAcces = new AccesUtilUo();
                     $newAcces->setUoAcces($uo);
                     unset($uo);
                     $newAcces->setUtilAcces($utilisateur);
                     $newAcces->setSourceImport("Accès nominatif");
                     $em->persist($newAcces);
                     unset($newAcces);
                 }
             }
             $nbUtil++;
             if ($nbUtil % 100 == 0) {
                 $output->write($nbUtil . " ");
             }
         }
         oci_free_statement($csr);
         $output->writeln("OK");
         $output->write("Validation en base...");
         $em->flush();
         $output->writeln("Fin de l'import");
         oci_close($this->ORA);
     }
     $output->writeln("Fin du traitement");
 }