openvk/Web/Models/Entities/Audio.php
2020-06-07 19:04:43 +03:00

65 lines
1.8 KiB
PHP

<?php declare(strict_types=1);
namespace openvk\Web\Models\Entities;
use Nette\InvalidStateException as ISE;
use BoyHagemann\Wave\Wave;
define("AUDIOS_FRIENDLY_ERROR", "Audio uploads are disabled on this instance :<", false);
class Audio extends Media
{
protected $tableName = "audios";
protected $fileExtension = "mpeg3";
protected function saveFile(string $filename, string $hash): bool
{
if(!is_dir($dirId = OPENVK_ROOT . "/storage/" . substr($hash, 0, 2)))
mkdir($dirId);
try {
$getID3 = new \getID3;
$meta = $getID3->analyze($filename);
if(isset($meta["error"]))
throw new ISE(implode(", ", $meta["error"]));
$this->setPerformer("Неизвестно");
$this->setName("Без названия");
} catch(\Exception $ex) {
exit("Хакеры? Интересно...");
}
return rename($filename, OPENVK_ROOT . "/storage/" . substr($hash, 0, 2) . "/$hash.mpeg3");
}
function getName(): string
{
return $this->getRecord()->name;
}
function getPerformer(): string
{
return $this->getRecord()->performer;
}
function getGenre(): string
{
return $this->getRecord()->genre;
}
function getLyrics(): ?string
{
return $this->getRecord()->lyrics;
}
function getCanonicalName(): string
{
return $this->getRecord()->performer . "" . $this->getRecord()->name;
}
function wire(): void
{
\Chandler\Database\DatabaseConnection::i()->getContext()->table("audio_relations")->insert([
"user" => $this->getRecord()->owner,
"audio" => $this->getId(),
]);
}
}