SuiteCRM-Core/core/backend/MediaObjects/Entity/LegacyDocumentMediaObject.php
2026-04-22 16:23:12 +01:00

189 lines
6.8 KiB
PHP

<?php
/**
* SuiteCRM is a customer relationship management program developed by SuiteCRM Ltd.
* Copyright (C) 2025 SuiteCRM Ltd.
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU Affero General Public License version 3 as published by the
* Free Software Foundation with the addition of the following permission added
* to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
* IN WHICH THE COPYRIGHT IS OWNED BY SUITECRM, SUITECRM DISCLAIMS THE
* WARRANTY OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
* details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* In accordance with Section 7(b) of the GNU Affero General Public License
* version 3, these Appropriate Legal Notices must retain the display of the
* "Supercharged by SuiteCRM" logo. If the display of the logos is not reasonably
* feasible for technical reasons, the Appropriate Legal Notices must display
* the words "Supercharged by SuiteCRM".
*/
namespace App\MediaObjects\Entity;
use ApiPlatform\Metadata\ApiProperty;
use ApiPlatform\Metadata\ApiResource;
use ApiPlatform\Metadata\Get;
use ApiPlatform\Metadata\GetCollection;
use App\Data\Entity\DefaultRecordTrait;
use App\MediaObjects\Repository\LegacyDocumentMediaObjectRepository;
use App\MediaObjects\Validator\UploadValidator\UploadConstraint;
use DateTime;
use DateTimeInterface;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\IdGenerator\UuidGenerator;
use Symfony\Component\HttpFoundation\File\File;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
#[ORM\Entity(repositoryClass: LegacyDocumentMediaObjectRepository::class)]
#[ORM\Table(name: 'legacy_documents_media_objects')]
#[ApiResource(
types: ['https://schema.org/MediaObject'],
operations: [
new Get(security: "is_granted('ROLE_USER')"),
new GetCollection(security: "is_granted('ROLE_USER')"),
],
outputFormats: ['jsonld' => ['application/ld+json']],
stateless: false,
normalizationContext: ['groups' => ['media_object:read']],
security: "is_granted('ROLE_USER')"
)]
class LegacyDocumentMediaObject implements MediaObjectInterface
{
use DefaultRecordTrait;
use MediaObjectTrait;
#[ORM\Id]
#[ORM\Column(
name: "id",
type: "string",
length: 36,
nullable: false,
options: ["fixed" => true]
)]
#[ORM\GeneratedValue(strategy: 'CUSTOM')]
#[ORM\CustomIdGenerator(class: UuidGenerator::class)]
#[Groups(['media_object:read'])]
public ?string $id;
#[ApiProperty(writable: false, types: ['https://schema.org/contentUrl'])]
#[Groups(['media_object:read'])]
public ?string $contentUrl = null;
#[Assert\NotNull]
#[UploadConstraint(storageType: 'legacy-documents')]
public ?File $file = null;
#[ApiProperty(writable: false)]
#[ORM\Column(name: "file_path", type: "string", length: 255, nullable: true, options: ["default" => null])]
public ?string $filePath = null;
#[ApiProperty(writable: false)]
#[ORM\Column(name: "size", type: "integer", nullable: true, options: ["default" => null])]
#[Groups(['media_object:read'])]
public ?int $size = null;
#[ApiProperty(writable: false)]
#[ORM\Column(name: "mime_type", type: "string", length: 255, nullable: true, options: ["default" => null])]
#[Groups(['media_object:read'])]
public ?string $mimeType = null;
#[ApiProperty(writable: false)]
#[ORM\Column(name: "original_name", type: "string", length: 255, nullable: true, options: ["default" => null])]
#[Groups(['media_object:read'])]
public ?string $originalName = null;
#[ApiProperty(writable: false)]
#[ORM\Column(nullable: true)]
#[Groups(['media_object:read'])]
public ?array $dimensions = null;
#[ApiProperty(writable: true)]
#[ORM\Column(name: "parent_type", type: "string", length: 100, nullable: true, options: ["default" => null])]
public ?string $parentType = null;
#[ApiProperty(writable: false)]
#[ORM\Column(name: "parent_id", type: "string", length: 36, nullable: true, options: ["fixed" => true])]
public ?string $parentId = null;
#[ApiProperty(writable: true)]
#[ORM\Column(name: "parent_field", type: "string", length: 36, nullable: true, options: ["fixed" => true])]
public ?string $parentField = null;
#[ApiProperty(writable: false)]
#[ORM\Column(
name: "temporary",
type: "boolean",
length: 1,
nullable: true,
options: ["default" => 1],
)]
public ?bool $temporary = true;
#[ApiProperty(writable: false)]
#[ORM\Column(name: "name", type: "string", length: 255, nullable: true, options: ["default" => null])]
public ?string $name = null;
#[ApiProperty(writable: false)]
#[ORM\Column(name: "date_entered", type: "datetime", nullable: true, options: ["default" => null])]
public ?DateTimeInterface $dateEntered = null;
#[ApiProperty(writable: false)]
#[ORM\Column(name: "date_modified", type: "datetime", nullable: true, options: ["default" => null])]
public ?DateTimeInterface $dateModified = null;
#[ApiProperty(writable: false)]
#[ORM\Column(name: "modified_user_id", type: "string", length: 36, nullable: true, options: ["fixed" => true])]
public ?string $modifiedUserId = null;
#[ApiProperty(writable: false)]
#[ORM\Column(name: "created_by", type: "string", length: 36, nullable: true, options: ["fixed" => true])]
public ?string $createdBy = null;
#[ApiProperty(writable: false)]
#[ORM\Column(name: "description", type: "standard_text", nullable: true, options: ["default" => null])]
public ?string $description = null;
#[ApiProperty(writable: false)]
#[ORM\Column(
name: "deleted",
type: "boolean",
length: 1,
nullable: true,
options: ["default" => 0],
)]
public bool $deleted = false;
#[ApiProperty(writable: false)]
#[ORM\Column(
name: "assigned_user_id",
type: "string",
length: 36,
nullable: true,
options: ["fixed" => true]
)]
public ?string $assignedUserId = null;
public function getId(): ?string
{
return $this->id;
}
public function getDateEntered(): ?DateTimeInterface
{
if ($this->dateEntered === null) {
$this->dateEntered = new DateTime();
return $this->dateEntered;
}
return $this->dateEntered;
}
}