goToAction ('fail'); if (!isset ($_FILES) || !sizeof ($_FILES)) throw new Exception ('Não foi escolhido nenhum arquivo para efetuar upload!'); $files = array (); foreach ($_FILES as $trash => $file) if ($file ['size'] && !$file ['error']) $files [] = $file; if (!sizeof ($files)) throw new Exception ('Não foi escolhido nenhum arquivo para efetuar upload ou houve erro no envio dos dados!'); $archive = Archive::singleton (); $db = Database::singleton (); $success = array (); foreach ($files as $trash => $file) { $fileTemp = $file ['tmp_name']; $fileSize = $file ['size']; $fileType = $file ['type']; $fileName = $file ['name']; try { if ($fileType == 'application/save' && !($fileType = $archive->getMimeByExtension (array_pop (explode ('.', $fileName))))) throw new Exception ('O arquivo ['. $fileName .'] não é aceito pelo sistema ('. $fileType .')!'); if (!$archive->isAcceptable ($fileType)) throw new Exception ('O arquivo ['. $fileName .'] não é aceito pelo sistema ('. $fileType .')!'); } catch (Exception $e) { $message->addWarning ($e->getMessage ()); continue; } try { $db->beginTransaction (); $fileId = Database::nextId ('_file', '_id'); $sth = $db->prepare (" INSERT INTO _file (_id, _name, _mimetype, _size, _user) VALUES (". $fileId .", '". $fileName ."', '". $fileType ."', ". $fileSize .", '". User::singleton ()->getId () ."')"); $sth->execute (); if (!move_uploaded_file ($fileTemp, File::getFilePath ($fileId))) throw new Exception ('O arquivo ['. $fileName .'] não pode ser copiado na pasta ['. Archive::singleton ()->getDataPath () .'].'); $db->commit (); $success [$fileId] = $fileName; } catch (Exception $e) { $db->rollBack (); $message->addWarning ($e->getMessage ()); } catch (PDOException $e) { $db->rollBack (); $warning = 'O arquivo ['. $fileName .'] não pôde ser inserido no BD.'; if (Instance::singleton ()->onDebugMode ()) $warning .= ' ['. $e->getMessage () .']'; else toLog ($e->getMessage ()); $message->addWarning ($warning); } } if (sizeof ($success)) { Lucene::singleton ()->saveFile (array_keys ($success)); $message->addMessage ('O(s) seguinte(s) arquivo(s) foi(ram) enviado(s) com sucesso: '. implode (', ', $success) .'.'); Log::singleton ()->add ('Novo(s) arquivo(s) enviado(s) ao sistema: '. implode (', ', $success) .'.'); } $action = $form->goToAction ('success'); ?>