public function saveFile(File $file) { $data = array('title' => $file->getTitle(), 'description' => $file->getDescription(), 'link' => $file->getLink(), 'size' => $file->getSize(), 'extension' => $file->getExtension(), 'category' => $file->getCategory(), 'uploaded' => $file->getUploaded(), 'updated' => date('Y-m-d H:i:s')); $id = (int) $file->getId(); if ($id == 0) { $this->tableGateway->insert($data); } else { if ($this->getFile($id)) { $this->tableGateway->update($data, array('id' => $id)); } else { throw new \Exception('Form id does not exist'); } } }
public function addAction() { $form = new FileForm(); $request = $this->getRequest(); if ($request->isPost()) { $file = new File(); // On vérifie la validité des champs $form->setInputFilter($file->getInputFilter()); $nonFile = $request->getPost()->toArray(); $params = $this->params()->fromFiles('link'); // On récupère l'extension du fichier $ext = new \Zend\File\PhpClassFile($params['name']); $ext = $ext->getExtension(); // recherche de la catégorie $musique = array('mp3', 'flac', 'aac', 'wav'); $video = array('mp4', 'avi', 'wmv', 'mov'); $document = array('pdf', 'txt', 'ppt', 'pptx', 'xls', 'xlsx', 'doc', 'docx'); $image = array('jpg', 'jpeg', 'gif', 'png'); $cat = ''; if (in_array($ext, $musique)) { $cat = 'musique'; } else { if (in_array($ext, $video)) { $cat = 'video'; } else { if (in_array($ext, $document)) { $cat = 'document'; } else { if (in_array($ext, $image)) { $cat = 'image'; } } } } $date = date('Y-m-d H:i:s'); if ($params['size'] < 100000) { $size = round($params['size'] / 1000, 2) . ' Ko'; } else { $size = round($params['size'] / 1000000, 2) . ' Mo'; } // renommage du fichier $newName = 'file' . time() . '.' . $ext; // if you're using ZF >= 2.1.1 $data = array_merge_recursive($this->getRequest()->getPost()->toArray(), array('link' => $newName, 'size' => $size, 'extension' => $ext, 'category' => $cat, 'uploaded' => $date, 'updated' => $date)); $form->setData($data); $adapter = new \Zend\File\Transfer\Adapter\Http(); // Liste d'extensions valides $listExt = array(); $types = array_merge_recursive($musique, $video, $document, $image); $extensionvalidator = new \Zend\Validator\File\Extension(array('extension' => $listExt)); $adapter->setValidators(array($extensionvalidator), $params['name']); // Taille maximum du fichier $maxSize = new Size(array('max' => 300000000)); //maximum bytes filesize $adapter->setValidators(array($maxSize), $params['name']); if (!$adapter->isValid()) { $dataError = $adapter->getMessages(); $error = array(); foreach ($dataError as $key => $row) { $error[] = $row; } //set formElementErrors $form->setMessages(array('link' => $error)); } else { if ($form->isValid()) { $adapter->addFilter('Rename', dirname(__DIR__) . '/upload/' . $newName); //$adapter->setDestination(dirname(__DIR__).'/upload'); if ($adapter->receive($params['name'])) { $file->exchangeArray($form->getData()); } $file->exchangeArray($form->getData()); $this->getFileTable()->saveFile($file); return $this->redirect()->toRoute('media'); } } } return new ViewModel(array('form' => $form)); }