/** * Extract the QTI files. * * * @param UJM\ExoBundle\Services\classes\QTI $qtiRepo * * @return bool */ private function extractFiles($qtiRepo) { $request = $this->container->get('request'); $file = $request->files->get('qtifile'); $qtiRepo->createDirQTI(); $root = []; $fichier = []; $file->move($qtiRepo->getUserDir(), $file->getClientOriginalName()); $zip = new \ZipArchive(); if ($zip->open($qtiRepo->getUserDir() . $file->getClientOriginalName()) !== true) { return false; } $res = zip_open($qtiRepo->getUserDir() . $file->getClientOriginalName()); $zip->extractTo($qtiRepo->getUserDir()); $i = 0; while ($zip_entry = zip_read($res)) { if (zip_entry_filesize($zip_entry) > 0) { $nom_fichier = zip_entry_name($zip_entry); if (substr($nom_fichier, -4, 4) === '.xml') { $root[$i] = $fichier = explode('/', $nom_fichier); } } ++$i; } $zip->close(); return true; }
/** * Extract the QTI files * * @access private * * @param UJM\ExoBundle\Services\classes\QTI $qtiRepos * * @return boolean */ private function extractFiles($qtiRepos) { $request = $this->container->get('request'); $file = $request->files->get('qtifile'); $qtiRepos->createDirQTI(); $root = array(); $fichier = array(); $file->move($qtiRepos->getUserDir(), $file->getClientOriginalName()); $zip = new \ZipArchive(); if ($zip->open($qtiRepos->getUserDir() . $file->getClientOriginalName()) !== true) { return false; } $res = zip_open($qtiRepos->getUserDir() . $file->getClientOriginalName()); $zip->extractTo($qtiRepos->getUserDir()); $i = 0; while ($zip_entry = zip_read($res)) { if (zip_entry_filesize($zip_entry) > 0) { $nom_fichier = zip_entry_name($zip_entry); if (substr($nom_fichier, -4, 4) == '.xml') { $root[$i] = $fichier = explode('/', $nom_fichier); } } $i++; } $zip->close(); $fs = new FileSystem(); //if the xml is in subdirectory and not in the root foreach ($root as $infoFichier) { if (count($infoFichier) > 1) { unset($infoFichier[count($infoFichier) - 1]); $comma_separated = implode('/', $infoFichier); //please use $fs->move() instead //@see http://symfony.com/doc/current/components/filesystem/introduction.html exec('mv ' . $qtiRepos->getUserDir() . $comma_separated . '/* ' . $qtiRepos->getUserDir()); } } return true; }