public static function add(\Concrete\Core\File\File $file, $filename, $prefix, $data = array())
 {
     $u = new User();
     $uID = isset($data['uID']) && $data['uID'] > 0 ? $data['uID'] : $u->getUserID();
     if ($uID < 1) {
         $uID = 0;
     }
     $fvTitle = isset($data['fvTitle']) ? $data['fvTitle'] : '';
     $fvDescription = isset($data['fvDescription']) ? $data['fvDescription'] : '';
     $fvTags = isset($data['fvTags']) ? Version::cleanTags($data['fvTags']) : '';
     $fvIsApproved = isset($data['fvIsApproved']) ? $data['fvIsApproved'] : '1';
     $db = Database::get();
     $dh = Core::make('helper/date');
     $date = new Carbon($dh->getOverridableNow());
     $fv = new static();
     $fv->fvFilename = $filename;
     $fv->fvPrefix = $prefix;
     $fv->fvDateAdded = $date;
     $fv->fvIsApproved = (bool) $fvIsApproved;
     $fv->fvApproverUID = $uID;
     $fv->fvAuthorUID = $uID;
     $fv->fvActivateDateTime = $date;
     $fv->fvTitle = $fvTitle;
     $fv->fvDescription = $fvDescription;
     $fv->fvTags = $fvTags;
     $fv->file = $file;
     $fv->fvID = 1;
     $em = \ORM::entityManager('core');
     $em->persist($fv);
     $em->flush();
     $fve = new \Concrete\Core\File\Event\FileVersion($fv);
     Events::dispatch('on_file_version_add', $fve);
     return $fv;
 }