prevend duplicates upload by md5 file check #11

This commit is contained in:
ghost 2023-10-10 15:21:16 +03:00
parent bd772f87d1
commit 1f7d8d0810
3 changed files with 35 additions and 0 deletions

View File

@ -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()))
{

View File

@ -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
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;

View File

@ -209,6 +209,7 @@ class TorrentService
$torrent = $this->addTorrent(
$userId,
$added,
md5_file($filepath),
$this->generateTorrentKeywordsByTorrentFilepath(
$filepath
),
@ -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
$torrent->setUserId($userId);
$torrent->setAdded($added);
$torrent->setMd5File($md5file);
$torrent->setKeywords($keywords);
$torrent->setApproved($approved);
@ -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