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