Пример #1
0
 /**
  * Serialize a single file.
  *
  * @param AbstractFile $File
  *
  * @return array
  */
 public function serialize(AbstractFile $file)
 {
     $fileFile = $file->getFile();
     $data = ['id' => $file->getId(), 'name' => $file->getFileName(), 'path' => $this->vich->asset($file, 'file'), 'size' => $this->formatSize(is_null($fileFile) ? $file->getFileSize() : $fileFile->getSize()), 'mime' => is_null($fileFile) ? $file->getMimeType() : $fileFile->getMimeType()];
     if ($file->isImage()) {
         $fileName = $this->vich->asset($file, 'file');
         $data['thumb'] = $this->imagine->getBrowserPath($fileName, 'tgmedia_thumbnail');
     } else {
         $data['type'] = $file->getExtension();
     }
     return $data;
 }
Пример #2
0
 /**
  * Retrieve a filtered and ordered list of files.
  *
  * @param string $type  optional filter for file types
  * @param string $order optional sorting
  * @param int    $page
  * @param int    $max
  *
  * @return Paginator
  */
 public function findSubset($type = 'all', $order = 'newest', $page = 1, $max = 18)
 {
     $qb = $this->createQueryBuilder('f')->setMaxResults($max)->setFirstResult($max * ($page - 1));
     if ($type === 'images') {
         $qb->where($qb->expr()->in('f.mimeType', '?1'));
         $qb->setParameter(1, array_merge(AbstractFile::getImageMimetypes()));
     } elseif ($type === 'documents') {
         $qb->where($qb->expr()->notIn('f.mimeType', '?1'));
         $qb->setParameter(1, array_merge(AbstractFile::getImageMimetypes()));
     }
     $mapping = self::getOrderMapping();
     if (in_array($order, array_keys($mapping))) {
         $qb->orderBy($mapping[$order]['field'], $mapping[$order]['direction']);
     }
     $query = $qb->getQuery();
     $paginator = new Paginator($query, false);
     return $paginator;
 }