diff --git a/Classes/Domain/Model/AssetAttribute.php b/Classes/Domain/Model/AssetAttribute.php index 1eda844..0f55ac1 100644 --- a/Classes/Domain/Model/AssetAttribute.php +++ b/Classes/Domain/Model/AssetAttribute.php @@ -17,6 +17,8 @@ use Neos\Flow\Annotations as Flow; */ class AssetAttribute { + protected const MAX_VALUE_LENGTH = 250; + /** * @var string */ @@ -39,6 +41,12 @@ class AssetAttribute */ protected array $replacementMap; + /** + * @ORM\Column(type="text", nullable=true) + * @var string|null + */ + protected ?string $longValue = null; + /** * @param string $name * @param string $value @@ -47,7 +55,12 @@ class AssetAttribute public function __construct(string $name, string $value, string $urlValue = '') { $this->name = $name; - $this->value = $value; + if (\mb_strlen($value) > self::MAX_VALUE_LENGTH) { + $this->longValue = $value; + $this->value = \mb_substr($value, 0, 250); + } else { + $this->value = $value; + } if (!$urlValue) { $urlValue = $value; } @@ -79,7 +92,7 @@ class AssetAttribute */ public function getValue(): string { - return $this->value; + return $this->longValue ?? $this->value; } /** diff --git a/Migrations/Mysql/Version20240625154316.php b/Migrations/Mysql/Version20240625154316.php new file mode 100644 index 0000000..d5b4112 --- /dev/null +++ b/Migrations/Mysql/Version20240625154316.php @@ -0,0 +1,28 @@ +abortIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'Migration can only be executed safely on \'mysql\'.'); + + $this->addSql('ALTER TABLE digicomp_assetattributes_domain_model_assetattribute ADD longvalue LONGTEXT DEFAULT NULL'); + } + + public function down(Schema $schema): void + { + $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'Migration can only be executed safely on \'mysql\'.'); + + $this->addSql('ALTER TABLE digicomp_assetattributes_domain_model_assetattribute DROP longvalue'); + } +}