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'); $repAppli = $em->getRepository('EVPOSaffectationBundle:Application'); $repAcces = $em->getRepository('EVPOSaffectationBundle:AccesUtilAppli'); // Connexion à la base de données GAP $user = $this->getContainer()->getParameter('oracle_user'); $password = $this->getContainer()->getParameter('oracle_pwd'); $sid = "pgap"; $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 applications $output->write("Suppression des anciens accès aux applications... "); $listeAcces = $repAcces->getListeAccesAppli(); foreach ($listeAcces as $acces) { $em->remove($acces); } $em->flush(); unset($listeAcces); gc_collect_cycles(); $output->writeln("OK"); // Récupération de la liste des utilisateurs connus $listeUtil = $repUtil->getUtilisateurs(); $nbUtil = 0; $output->writeln("Import des accès aux applications à partir de GAP"); $requeteBaza = "select distinct code_application from gap_user_application where upper(matricule)=: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) { $codeApplication = strtoupper($row["CODE_APPLICATION"]); if ($repAppli->isApplication($codeApplication)) { $application = $repAppli->getApplication($codeApplication); // Création de l'accés $newAcces = new AccesUtilAppli(); $newAcces->setAppliAcces($application); unset($application); $newAcces->setUtilAcces($utilisateur); $newAcces->setSourceImport("Import GAP du " . date("d/m/Y")); $em->persist($newAcces); unset($newAcces); } } $nbUtil++; if ($nbUtil % 500 == 0) { $output->write($nbUtil . " "); } } oci_free_statement($csr); $output->writeln("OK"); $output->write("Validation en base..."); $em->flush(); $output->writeln("OK"); $output->writeln("Fin de l'import"); oci_close($this->ORA); } $output->writeln("Fin du traitement"); }
/** * REPORT DES ACCÈS UO SUR LES APPLICATIONS * * On reporte au niveau de l'application la liste des utilisateurs des UO * actives de cette dernière */ public function reportAccesUo() { $listeUtilAppli = []; // Récupération de la liste des utilisateurs de l'application foreach ($this->listeAcces as $acces) { $util = $acces->getUtilAcces(); $listeUtilAppli[$util->getMatUtil()] = $util; } // Récupération de la liste des matricules des utilisateurs d'UO actives foreach ($this->listeUO as $uo) { if ($uo->getMigMoca()) { foreach ($uo->getListeAcces() as $acces) { $utilAcces = $acces->getUtilAcces(); // Si l'utilisateur de l'UO ne se retrouve pas déjà dans l'application if (array_search($utilAcces->getMatUtil(), array_keys($listeUtilAppli)) === FALSE) { $listeUtilAppli[$utilAcces->getMatUtil()] = $utilAcces; // Ajout de l'utilisateur de l'UO à la liste des utilisateurs de l'application $newAcces = new AccesUtilAppli(); $newAcces->setSourceImport("Report accès UO"); $newAcces->setUtilAcces($utilAcces); $newAcces->setAppliAcces($this); $this->listeAcces[] = $newAcces; unset($newAcces); } unset($utilAcces); } } } unset($listeUtilAppli); }