Browse Source

prevend duplicates upload by md5 file check #11

main
ghost 1 year ago
parent
commit
1f7d8d0810
  1. 6
      src/Controller/TorrentController.php
  2. 15
      src/Entity/Torrent.php
  3. 14
      src/Service/TorrentService.php

6
src/Controller/TorrentController.php

@ -257,6 +257,12 @@ class TorrentController extends AbstractController @@ -257,6 +257,12 @@ class TorrentController extends AbstractController
$form['torrent']['error'][] = $translator->trans('Torrent file out of size limit');
}
//// Check for duplicates
if ($torrentService->findTorrentByMd5File(md5_file($file->getPathName())))
{
$form['torrent']['error'][] = $translator->trans('Torrent file already exists');
}
//// Validate torrent format
if (!$torrentService->readTorrentFileByFilepath($file->getPathName()))
{

15
src/Entity/Torrent.php

@ -28,6 +28,9 @@ class Torrent @@ -28,6 +28,9 @@ class Torrent
#[ORM\Column]
private ?bool $approved = null;
#[ORM\Column(length: 32)]
private ?string $md5file = null;
#[ORM\Column(type: Types::TEXT, nullable: true)]
private ?string $keywords = null;
@ -88,6 +91,18 @@ class Torrent @@ -88,6 +91,18 @@ class Torrent
return $this;
}
public function getMd5file(): ?string
{
return $this->md5file;
}
public function setMd5file(string $md5file): static
{
$this->md5file = $md5file;
return $this;
}
public function getKeywords(): ?string
{
return $this->keywords;

14
src/Service/TorrentService.php

@ -209,6 +209,7 @@ class TorrentService @@ -209,6 +209,7 @@ class TorrentService
$torrent = $this->addTorrent(
$userId,
$added,
md5_file($filepath),
$this->generateTorrentKeywordsByTorrentFilepath(
$filepath
),
@ -256,6 +257,7 @@ class TorrentService @@ -256,6 +257,7 @@ class TorrentService
public function addTorrent(
int $userId,
int $added,
string $md5file,
string $keywords,
bool $approved
): ?Torrent
@ -264,6 +266,7 @@ class TorrentService @@ -264,6 +266,7 @@ class TorrentService
$torrent->setUserId($userId);
$torrent->setAdded($added);
$torrent->setMd5File($md5file);
$torrent->setKeywords($keywords);
$torrent->setApproved($approved);
@ -294,6 +297,17 @@ class TorrentService @@ -294,6 +297,17 @@ class TorrentService
);
}
public function findTorrentByMd5File(string $md5file) : ?Torrent
{
return $this->entityManagerInterface
->getRepository(Torrent::class)
->findOneBy(
[
'md5file' => $md5file
]
);
}
public function setTorrentsApprovedByUserId(
int $userId,
bool $value

Loading…
Cancel
Save