name = $name; } /** * Get the default attribute value by its value * * @param mixed $value Value to search for * * @return AttributeValue * * @since 1.0.0 */ public function getDefaultByValue(mixed $value) : AttributeValue { $mValue = null; if ($this->datatype === AttributeValueType::_STRING) { $mValue = (string) $value; } elseif ($this->datatype === AttributeValueType::_INT || $this->datatype === AttributeValueType::_FLOAT_INT || $this->datatype === AttributeValueType::_BOOL ) { $mValue = (int) $value; } elseif ($this->datatype === AttributeValueType::_FLOAT) { $mValue = (float) $value; } elseif ($this->datatype === AttributeValueType::_DATETIME) { $mValue = $value instanceof \DateTime ? $value : new \DateTime((string) $value); } foreach ($this->defaults as $default) { if ($default->getValue() === $mValue) { return $default; } } return new NullAttributeValue(); } /** * Set l11n * * @param string|BaseStringL11n $l11n Tag article l11n * @param string $lang Language * * @return void * * @since 1.0.0 */ public function setL11n(string | BaseStringL11n $l11n, string $lang = ISO639x1Enum::_EN) : void { if ($l11n instanceof BaseStringL11n) { $this->l11n = $l11n; } elseif (isset($this->l11n) && $this->l11n instanceof BaseStringL11n) { $this->l11n->content = $l11n; $this->l11n->language = $lang; } else { $this->l11n = new BaseStringL11n(); $this->l11n->content = $l11n; $this->l11n->language = $lang; } } /** * @return string * * @since 1.0.0 */ public function getL11n() : string { if (!isset($this->l11n)) { return ''; } return $this->l11n instanceof BaseStringL11n ? $this->l11n->content : $this->l11n; } /** * Set fields * * @param int $fields Fields * * @return void * * @since 1.0.0 */ public function setFields(int $fields) : void { $this->fields = $fields; } /** * Check if an attribute type has a certain default id * * @param int $id Default object id * * @return bool * * @since 1.0.0 */ public function hasDefaultId(int $id) : bool { foreach ($this->defaults as $default) { if ($default->id === $id) { return true; } } return false; } /** * {@inheritdoc} */ public function toArray() : array { return [ 'id' => $this->id, 'name' => $this->name, 'validationPattern' => $this->validationPattern, 'custom' => $this->custom, 'isRequired' => $this->isRequired, 'isInternal' => $this->isInternal, 'repeatable' => $this->repeatable, ]; } /** * {@inheritdoc} */ public function jsonSerialize() : mixed { return $this->toArray(); } }