<?php
namespace Kunstmaan\MediaBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use Kunstmaan\AdminBundle\Entity\AbstractEntity;
use Kunstmaan\MediaBundle\Repository\MediaRepository;
/**
* @ORM\Entity(repositoryClass="Kunstmaan\MediaBundle\Repository\MediaRepository")
* @ORM\Table(name="kuma_media", indexes={
* @ORM\Index(name="idx_media_name", columns={"name"}),
* @ORM\Index(name="idx_media_deleted", columns={"deleted"})
* })
* @ORM\HasLifecycleCallbacks
*/
#[ORM\Entity(repositoryClass: MediaRepository::class)]
#[ORM\Table(name: 'kuma_media')]
#[ORM\Index(name: 'idx_media_name', columns: ['name'])]
#[ORM\Index(name: 'idx_media_deleted', columns: ['deleted'])]
#[ORM\HasLifecycleCallbacks]
class Media extends AbstractEntity
{
/**
* @var string
*
* @Gedmo\Locale
* Used locale to override Translation listener`s locale
* this is not a mapped field of entity metadata, just a simple property
*/
#[Gedmo\Locale]
protected $locale;
/**
* @var string
*
* @ORM\Column(type="string", unique=true, length=255)
* @ORM\GeneratedValue(strategy="AUTO")
*/
#[ORM\Column(name: 'uuid', type: 'string', unique: true, length: 255)]
#[ORM\GeneratedValue('AUTO')]
protected $uuid;
/**
* @var string
*
* @ORM\Column(type="string", nullable=true)
*/
#[ORM\Column(name: 'name', type: 'string', nullable: true)]
protected $name;
/**
* @var string
*
* @ORM\Column(name="description", type="text", nullable=true)
* @Gedmo\Translatable
*/
#[ORM\Column(name: 'description', type: 'text', nullable: true)]
#[Gedmo\Translatable]
protected $description;
/**
* @var string
*
* @ORM\Column(name="copyright", type="string", nullable=true)
* @Gedmo\Translatable
*/
#[ORM\Column(name: 'copyright', type: 'string', nullable: true)]
#[Gedmo\Translatable]
protected $copyright;
/**
* @var string
*
* @ORM\Column(type="string", name="location", nullable=true)
*/
#[ORM\Column(name: 'location', type: 'string', nullable: true)]
protected $location;
/**
* @var string
*
* @ORM\Column(type="string", name="content_type")
*/
#[ORM\Column(name: 'content_type', type: 'string')]
protected $contentType;
/**
* @var array
*
* @ORM\Column(type="array")
*/
#[ORM\Column(name: 'metadata', type: 'array')]
protected $metadata = [];
/**
* @var \DateTime
*
* @ORM\Column(type="datetime", name="created_at")
*/
#[ORM\Column(name: 'created_at', type: 'datetime')]
protected $createdAt;
/**
* @var \DateTime
*
* @ORM\Column(type="datetime", name="updated_at")
*/
#[ORM\Column(name: 'updated_at', type: 'datetime')]
protected $updatedAt;
/**
* @var Folder
*
* @ORM\ManyToOne(targetEntity="Folder", inversedBy="media")
* @ORM\JoinColumn(name="folder_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: Folder::class, inversedBy: 'media')]
#[ORM\JoinColumn(name: 'folder_id', referencedColumnName: 'id')]
protected $folder;
protected $content;
/**
* @var int
*
* @ORM\Column(type="integer", nullable=true)
*/
#[ORM\Column(name: 'filesize', type: 'integer', nullable: true)]
protected $filesize;
/**
* @var string
*
* @ORM\Column(type="string", nullable=true)
*/
#[ORM\Column(name: 'url', type: 'string', nullable: true)]
protected $url;
/**
* @var string
*
* @ORM\Column(type="string", nullable=true, name="original_filename")
*/
#[ORM\Column(name: 'original_filename', type: 'string', nullable: true)]
protected $originalFilename;
/**
* @var bool
*
* @ORM\Column(type="boolean")
*/
#[ORM\Column(name: 'deleted', type: 'boolean')]
protected $deleted;
/**
* @var bool
*
* @ORM\Column(type="boolean", name="removed_from_file_system")
*/
#[ORM\Column(name: 'removed_from_file_system', type: 'boolean')]
protected $removedFromFileSystem;
public function __construct()
{
$this->setCreatedAt(new \DateTime());
$this->setUpdatedAt(new \DateTime());
$this->deleted = false;
$this->removedFromFileSystem = false;
}
/**
* @param string $locale
*
* @return Media
*/
public function setTranslatableLocale($locale)
{
$this->locale = $locale;
return $this;
}
/**
* @return string
*/
public function getFileSize()
{
$size = $this->filesize;
if ($size === null) {
return '';
}
if ($size < 1024) {
return $size . 'b';
} else {
$help = $size / 1024;
if ($help < 1024) {
return round($help, 1) . 'kb';
} else {
return round($help / 1024, 1) . 'mb';
}
}
}
/**
* @return int
*/
public function getFileSizeBytes()
{
return $this->filesize;
}
/**
* @param int $filesize
*
* @return Media
*/
public function setFileSize($filesize)
{
$this->filesize = $filesize;
return $this;
}
/**
* Set uuid
*
* @param string $uuid
*
* @return Media
*/
public function setUuid($uuid)
{
$this->uuid = $uuid;
return $this;
}
/**
* Get uuid
*
* @return string
*/
public function getUuid()
{
return $this->uuid;
}
/**
* Set name
*
* @param string $name
*
* @return Media
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Set location
*
* @param string $location
*
* @return Media
*/
public function setLocation($location)
{
$this->location = $location;
return $this;
}
/**
* Get location
*
* @return string
*/
public function getLocation()
{
return $this->location;
}
/**
* Set contentType
*
* @param string $contentType
*
* @return Media
*/
public function setContentType($contentType)
{
$this->contentType = $contentType;
return $this;
}
/**
* Get contentType
*
* @return string
*/
public function getContentType()
{
return $this->contentType;
}
/**
* Get contentType
*
* @return string
*/
public function getContentTypeShort()
{
$contentType = $this->contentType;
$array = explode('/', $contentType);
$contentType = end($array);
return $contentType;
}
/**
* Set metadata
*
* @param array $metadata
*
* @return Media
*/
public function setMetadata($metadata)
{
$this->metadata = $metadata;
return $this;
}
/**
* Get metadata
*
* @return array
*/
public function getMetadata()
{
return $this->metadata;
}
/**
* Set the specified metadata value
*
* @param string $key
*
* @return Media
*/
public function setMetadataValue($key, $value)
{
$this->metadata[$key] = $value;
return $this;
}
/**
* Get the specified metadata value
*
* @param string $key
*
* @return mixed|null
*/
public function getMetadataValue($key)
{
return isset($this->metadata[$key]) ? $this->metadata[$key] : null;
}
/**
* Set createdAt
*
* @param \DateTime $createdAt
*
* @return Media
*/
public function setCreatedAt($createdAt)
{
$this->createdAt = $createdAt;
return $this;
}
/**
* Get createdAt
*
* @return \DateTime
*/
public function getCreatedAt()
{
return $this->createdAt;
}
/**
* Set updatedAt
*
* @param \DateTime $updatedAt
*
* @return Media
*/
public function setUpdatedAt($updatedAt)
{
$this->updatedAt = $updatedAt;
return $this;
}
/**
* Get updatedAt
*
* @return \DateTime
*/
public function getUpdatedAt()
{
return $this->updatedAt;
}
/**
* Set content
*
* @return Media
*/
public function setContent($content)
{
$this->content = $content;
$this->setUpdatedAt(new \DateTime());
return $this;
}
/**
* Get content
*/
public function getContent()
{
return $this->content;
}
/**
* Set folder
*
* @return Media
*/
public function setFolder(Folder $folder)
{
$this->folder = $folder;
return $this;
}
/**
* Get folder
*
* @return Folder
*/
public function getFolder()
{
return $this->folder;
}
/**
* @return bool
*/
public function isDeleted()
{
return $this->deleted;
}
/**
* @param bool $deleted
*
* @return Media
*/
public function setDeleted($deleted)
{
$this->deleted = $deleted;
return $this;
}
/**
* @return string
*/
public function getUrl()
{
return $this->url;
}
/**
* @param string $url
*
* @return Media
*/
public function setUrl($url)
{
$this->url = $url;
return $this;
}
/**
* @param string $copyright
*
* @return Media
*/
public function setCopyright($copyright)
{
$this->copyright = $copyright;
return $this;
}
/**
* @return string
*/
public function getCopyright()
{
return $this->copyright;
}
/**
* @param string $originalFilename
*
* @return Media
*/
public function setOriginalFilename($originalFilename)
{
$this->originalFilename = $originalFilename;
return $this;
}
/**
* @return string
*/
public function getOriginalFilename()
{
return $this->originalFilename;
}
/**
* @param string $description
*
* @return Media
*/
public function setDescription($description)
{
$this->description = $description;
return $this;
}
/**
* @return string
*/
public function getDescription()
{
return $this->description;
}
/**
* @return bool
*/
public function isRemovedFromFileSystem()
{
return $this->removedFromFileSystem;
}
/**
* @param bool $removedFromFileSystem
*/
public function setRemovedFromFileSystem($removedFromFileSystem)
{
$this->removedFromFileSystem = $removedFromFileSystem;
}
/**
* @ORM\PreUpdate
*/
#[ORM\PreUpdate]
public function preUpdate()
{
$this->setUpdatedAt(new \DateTime());
}
/**
* @ORM\PrePersist
*/
#[ORM\PrePersist]
public function prePersist()
{
if (empty($this->name)) {
$this->setName($this->getOriginalFilename());
}
}
}