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