Signed-off-by: Gergely POLONKAI (W00d5t0ck) <polesz@w00d5t0ck.info>master
parent
fc1144ad29
commit
d9fe0d8bcf
18 changed files with 375 additions and 19 deletions
@ -0,0 +1,39 @@ |
||||
<?php |
||||
|
||||
namespace Application\Migrations; |
||||
|
||||
use Doctrine\DBAL\Migrations\AbstractMigration, |
||||
Doctrine\DBAL\Schema\Schema; |
||||
|
||||
/** |
||||
* Auto-generated Migration: Please modify to your need! |
||||
*/ |
||||
class Version20120826132126 extends AbstractMigration |
||||
{ |
||||
public function up(Schema $schema) |
||||
{ |
||||
// this up() migration is autogenerated, please modify it to your needs |
||||
$this->abortIf($this->connection->getDatabasePlatform()->getName() != "mysql"); |
||||
|
||||
$this->addSql("CREATE TABLE upload_namespaces (id INT AUTO_INCREMENT NOT NULL, name VARCHAR(50) NOT NULL, slug VARCHAR(50) NOT NULL, UNIQUE INDEX UNIQ_32D9781A5E237E06 (name), UNIQUE INDEX UNIQ_32D9781A989D9B62 (slug), PRIMARY KEY(id)) ENGINE = InnoDB"); |
||||
$this->addSql("CREATE TABLE uploaded_files (id INT AUTO_INCREMENT NOT NULL, upload_namespace_id INT NOT NULL, filename VARCHAR(100) NOT NULL, mimeType VARCHAR(50) NOT NULL, description LONGTEXT DEFAULT NULL, INDEX IDX_E60EFB5609DE9D8 (upload_namespace_id), UNIQUE INDEX UNIQ_E60EFB5609DE9D83C0BE965 (upload_namespace_id, filename), PRIMARY KEY(id)) ENGINE = InnoDB"); |
||||
$this->addSql("ALTER TABLE uploaded_files ADD CONSTRAINT FK_E60EFB5609DE9D8 FOREIGN KEY (upload_namespace_id) REFERENCES upload_namespaces (id)"); |
||||
$this->addSql("ALTER TABLE user_data ADD avatar_image_id INT DEFAULT NULL"); |
||||
$this->addSql("ALTER TABLE user_data ADD CONSTRAINT FK_D772BFAA5C18B4B1 FOREIGN KEY (avatar_image_id) REFERENCES uploaded_files (id)"); |
||||
$this->addSql("CREATE INDEX IDX_D772BFAA5C18B4B1 ON user_data (avatar_image_id)"); |
||||
} |
||||
|
||||
public function down(Schema $schema) |
||||
{ |
||||
// this down() migration is autogenerated, please modify it to your needs |
||||
$this->abortIf($this->connection->getDatabasePlatform()->getName() != "mysql"); |
||||
|
||||
$this->addSql("ALTER TABLE uploaded_files DROP FOREIGN KEY FK_E60EFB5609DE9D8"); |
||||
$this->addSql("ALTER TABLE user_data DROP FOREIGN KEY FK_D772BFAA5C18B4B1"); |
||||
$this->addSql("DROP TABLE upload_namespaces"); |
||||
$this->addSql("DROP TABLE uploaded_files"); |
||||
$this->addSql("ALTER TABLE user_data DROP FOREIGN KEY FK_D772BFAA5C18B4B1"); |
||||
$this->addSql("DROP INDEX IDX_D772BFAA5C18B4B1 ON user_data"); |
||||
$this->addSql("ALTER TABLE user_data DROP avatar_image_id"); |
||||
} |
||||
} |
@ -0,0 +1,104 @@ |
||||
<?php |
||||
namespace KekRozsak\FrontBundle\Entity; |
||||
|
||||
use Doctrine\ORM\Mapping as ORM; |
||||
use Symfony\Component\Validator\Constraints as Assert; |
||||
|
||||
/** |
||||
* Namespace support for uploaded files |
||||
* |
||||
* @author Gergely Polonkai |
||||
* |
||||
* @ORM\Entity |
||||
* @ORM\Table(name="upload_namespaces") |
||||
*/ |
||||
class UploadNamespace |
||||
{ |
||||
/** |
||||
* The ID of the namespace |
||||
* |
||||
* @var integer $id |
||||
* |
||||
* @ORM\Id |
||||
* @ORM\GeneratedValue(strategy="AUTO") |
||||
* @ORM\Column(type="integer") |
||||
*/ |
||||
protected $id; |
||||
|
||||
/** |
||||
* Get id |
||||
* |
||||
* @return integer |
||||
*/ |
||||
public function getId() |
||||
{ |
||||
return $this->id; |
||||
} |
||||
|
||||
/** |
||||
* The name of the namespace. This will be used when displaying the |
||||
* namespace list. |
||||
* |
||||
* @var string $name |
||||
* |
||||
* @ORM\Column(type="string", length=50, unique=true, nullable=false) |
||||
* |
||||
* @Assert\NotBlank() |
||||
*/ |
||||
protected $name; |
||||
|
||||
/** |
||||
* Set name |
||||
* |
||||
* @param string $name |
||||
* @return UploadNamespace |
||||
*/ |
||||
public function setName($name) |
||||
{ |
||||
// TODO: Check if not null! |
||||
$this->name = $name; |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* Get name |
||||
* |
||||
* @return string |
||||
*/ |
||||
public function getName() |
||||
{ |
||||
return $this->name; |
||||
} |
||||
|
||||
/** |
||||
* The slugified name of the namespace. This will be used in URLs |
||||
* |
||||
* @var string $slug |
||||
* |
||||
* @ORM\Column(type="string", length=50, unique=true, nullable=false) |
||||
*/ |
||||
protected $slug; |
||||
|
||||
/** |
||||
* Set slug |
||||
* |
||||
* @param string $slug |
||||
* @return UploadNamespace |
||||
*/ |
||||
public function setSlug($slug) |
||||
{ |
||||
// TODO: Check if not null! |
||||
$this->slug = $slug; |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* Get slug |
||||
* |
||||
* @return string |
||||
*/ |
||||
public function getSlug() |
||||
{ |
||||
return $this->slug; |
||||
} |
||||
} |
@ -0,0 +1,181 @@ |
||||
<?php |
||||
namespace KekRozsak\FrontBundle\Entity; |
||||
|
||||
use Doctrine\ORM\Mapping as ORM; |
||||
use Symfony\Component\Validator\Constraints as Assert; |
||||
|
||||
/** |
||||
* Description of UploadedFile |
||||
* |
||||
* @author Gergely Polonkai |
||||
* |
||||
* @ORM\Entity |
||||
* @ORM\Table(name="uploaded_files", uniqueConstraints={ |
||||
* @ORM\UniqueConstraint(columns={"upload_namespace_id", "filename"}) |
||||
* }) |
||||
*/ |
||||
class UploadedFile |
||||
{ |
||||
/** |
||||
* The ID of the file |
||||
* |
||||
* @var integer $id |
||||
* |
||||
* @ORM\Id |
||||
* @ORM\GeneratedValue(strategy="AUTO") |
||||
* @ORM\Column(type="integer") |
||||
*/ |
||||
protected $id; |
||||
|
||||
/** |
||||
* Get ID |
||||
* |
||||
* @return integer |
||||
*/ |
||||
public function getId() |
||||
{ |
||||
return $this->id; |
||||
} |
||||
|
||||
/** |
||||
* Namespace of the file |
||||
* |
||||
* @var UploadNamespace $namespace |
||||
* |
||||
* @ORM\ManyToOne(targetEntity="KekRozsak\FrontBundle\Entity\UploadNamespace") |
||||
* @ORM\JoinColumn(name="upload_namespace_id", nullable=false) |
||||
*/ |
||||
protected $namespace; |
||||
|
||||
/** |
||||
* Set namespace |
||||
* |
||||
* @param KekRozsak\FrontBundle\Entity\UploadNamespace $namespace |
||||
* @return UploadedFile |
||||
*/ |
||||
public function setNamespace(UploadNamespace $namespace) |
||||
{ |
||||
// TODO: Check if not null! |
||||
$this->namespace = $namespace; |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* Get namespace |
||||
* |
||||
* @return KekRozsak\FrontBundle\Entity\UploadNamespace |
||||
*/ |
||||
public function getNamespace() |
||||
{ |
||||
return $this->namespace; |
||||
} |
||||
|
||||
/** |
||||
* The file name, as seen in the filesystem |
||||
* |
||||
* @var string $filename |
||||
* |
||||
* @ORM\Column(type="string", length=100, nullable=false) |
||||
*/ |
||||
protected $filename; |
||||
|
||||
/** |
||||
* Set filename |
||||
* |
||||
* @param string $filename |
||||
* @return UploadedFile |
||||
*/ |
||||
public function setFilename($filename) |
||||
{ |
||||
// TODO: Check if not null nor empty! |
||||
$this->filename = $filename; |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* Get filename |
||||
* |
||||
* @return string |
||||
*/ |
||||
public function getFilename() |
||||
{ |
||||
return $this->filename; |
||||
} |
||||
|
||||
/** |
||||
* Get filename with namespace |
||||
* |
||||
* @return string |
||||
*/ |
||||
public function getNsFilename() |
||||
{ |
||||
return $this->namespace->getSlug() . DIRECTORY_SEPARATOR . $this->filename; |
||||
} |
||||
|
||||
/** |
||||
* MIME type of the file |
||||
* |
||||
* @var string $mimetype |
||||
* |
||||
* @ORM\Column(type="string", length=50, nullable=false) |
||||
*/ |
||||
protected $mimeType; |
||||
|
||||
/** |
||||
* Set mimeType |
||||
* |
||||
* @param string $mimeType |
||||
* @return UploadedFile |
||||
*/ |
||||
public function setMimeType($mimeType) |
||||
{ |
||||
// TODO: Check if not null nor empty! |
||||
$this->mimeType = $mimeType; |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* Get mimeType |
||||
* |
||||
* @return string |
||||
*/ |
||||
public function getMimeType() |
||||
{ |
||||
return $this->mimeType; |
||||
} |
||||
|
||||
/** |
||||
* Description of the file |
||||
* |
||||
* @var string $description |
||||
* |
||||
* @ORM\Column(type="text", nullable=true) |
||||
*/ |
||||
protected $description; |
||||
|
||||
/** |
||||
* Set description |
||||
* |
||||
* @param string $description |
||||
* @return UploadedFile |
||||
*/ |
||||
public function setDescription($description) |
||||
{ |
||||
if ($description === '') { |
||||
$description = null; |
||||
} |
||||
|
||||
$this->description = $description; |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* Get description |
||||
* |
||||
* @return string |
||||
*/ |
||||
public function getDescription() |
||||
{ |
||||
return $this->description; |
||||
} |
||||
} |
Loading…
Reference in new issue