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