Esempio n. 1
0
 public function executeImportarList(sfWebRequest $request)
 {
     // Preparo el id y name del proyecto para la proxima accion
     $this->proyecto = array();
     $this->proyecto['id'] = $request->getPostParameter('proyecto[id]');
     $this->proyecto['name'] = $request->getPostParameter('proyecto[name]');
     $files = $_FILES;
     // Controles antes de subir el archivo:
     // - Que tenga contenido
     // - Que sea permitido
     // - Que sea valido
     $this->error = array();
     if ($files['filews']['size'] == 0) {
         $this->error[] = "ERROR: Zero byte file upload";
     }
     $allowedFileTypes = array("application/zip");
     if (!in_array($files['filews']['type'], $allowedFileTypes)) {
         $this->error[] = "ERROR: File type not permitted";
     }
     if (!is_uploaded_file($files['filews']['tmp_name'])) {
         $this->error[] = "ERROR: Not a valid file upload";
     }
     if (count($this->error) > 0) {
         return sfView::ERROR;
     }
     // Bien, sigo adelante
     // Defino directorio sobre el cual trabajar
     $temp_dir = tempnam(sys_get_temp_dir(), 'ws') . 'd';
     mkdir($temp_dir);
     // Descomprimo el archivo
     $zip = new Zipper();
     if ($zip->open($files['filews']['tmp_name']) === TRUE) {
         if ($zip->extractTo($temp_dir) === TRUE) {
             // Recupero en un array la lista de documentos xpdl
             $finder = sfFinder::type('file')->name('*.xpdl');
             $this->proyecto['files'] = $finder->in($temp_dir);
             return sfView::SUCCESS;
         }
     }
     // Si llego aca es porque hubo problemas al descomprimir o tratar el zip
     return sfView::ERROR;
 }