Example #1
0
 /**
  * Create a new File object from posted values and store it into the database.
  *
  * @param array $post       ~= $_POST
  * @param array $files      ~= $_FILES
  * @return App_Model_File
  */
 private function saveFile($post, $uploadedFile)
 {
     // Computing default values
     $comment = array_key_exists('comment', $post) ? $post['comment'] : '';
     // Validating lifetime
     $lifetime = fz_config_get('app', 'default_file_lifetime', 10);
     if (array_key_exists('lifetime', $post) && is_numeric($post['lifetime'])) {
         $lifetime = intval($post['lifetime']);
         $maxLifetime = intval(fz_config_get('app', 'max_file_lifetime', 20));
         if ($lifetime > $maxLifetime) {
             $lifetime = $maxLifetime;
         }
     }
     $availableFrom = array_key_exists('start-from', $post) ? $post['start-from'] : null;
     $availableFrom = new Zend_Date($availableFrom, Zend_Date::DATE_SHORT);
     $availableUntil = clone $availableFrom;
     $availableUntil->add($lifetime, Zend_Date::DAY);
     $user = $this->getUser();
     // Storing values
     $file = new App_Model_File();
     $file->setFileInfo($uploadedFile);
     if (option('visitor')) {
         $file->setVisitorUploader();
     } else {
         $file->setUploader($user);
     }
     $file->setCreatedAt(new Zend_Date());
     $file->comment = substr($comment, 0, 199);
     $file->setAvailableFrom($availableFrom);
     $file->setAvailableUntil($availableUntil);
     $file->notify_uploader = isset($post['email-notifications']);
     if (!empty($post['password'])) {
         $file->setPassword($post['password']);
     }
     try {
         $file->save();
         if ($file->moveUploadedFile($uploadedFile)) {
             fz_log('Saved "' . $file->file_name . '"[' . $file->id . '] uploaded by ' . $user);
             return $file;
         } else {
             $file->delete();
             return null;
         }
     } catch (Exception $e) {
         fz_log('Can\'t save file "' . $uploadedFile['name'] . '" uploaded by ' . $user, FZ_LOG_ERROR);
         fz_log($e, FZ_LOG_ERROR);
         return null;
     }
 }