コード例 #1
0
 /**
  * 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;
 }
コード例 #2
0
 /**
  * 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;
 }