<?phpnamespace App\Model;use App\Util\Api;use Symfony\Component\Validator\Constraints as Assert;use App\Validator\Constraints as KalmaAssert;class Alias implements \JsonSerializable{ /* @Assert\Regex( pattern = "/^[a-z0-9]+[a-z0-9-_.@+]*$/", message = "alias.src.invalid" )*/ /** * @Assert\NotBlank() * @KalmaAssert\KalmaEmailOrUsername() * @Assert\Length( min = 2, minMessage = "alias.src.minLength" ) */ private $src; /* @Assert\Regex( pattern = "/^[a-z0-9_.@+]+$/", message = "alias.dest.invalid" ) */ /** * @Assert\NotBlank() * @KalmaAssert\KalmaEmailOrUsername() * @Assert\Length( min = 2, minMessage = "alias.dest.minLength" ) */ private $dest; private $description; const TOKEN_SALT = 'TLfKBbrHusct3KvLdyhjks968NxZEPD9'; const SRC_REGEX = '/^[a-z0-9]+[a-z0-9-_.,@+]*$/'; const SRC_REGEX_EDIT = '/^[a-z0-9]+[a-z0-9-_.@+]*$/'; // without a comma const DEST_REGEX = '/^[a-z0-9]+[a-z0-9-_.@,+]+$/'; const DEST_REGEX_EDIT = '/^[a-z0-9]+[a-z0-9-_.@+]+$/'; // without a comma public function __toString() { return $this->src . ' -> ' . $this->dest; } public function getSrc(): ?string { return $this->src; } public function setSrc(string $src): self { $this->src = $src; return $this; } public function getDest(): ?string { return $this->dest; } public function setDest(string $dest): self { $this->dest = $dest; return $this; } public function getDescription(): ?string { return $this->description; } public function setDescription(string $description): self { $this->description = $description; return $this; } public function jsonSerialize() { $vars = get_object_vars($this); return $vars; } /** * token crated from fields src and dest to prevent URL manipulations * @return string token */ public function token() :string { return md5($this->src . Alias::TOKEN_SALT . $this->dest); } public function md5() : String { return md5($this->src . $this->dest); } /** * delete alias * @return TRUE - success, FALSE - failure */ public function delete() : bool { return Api::deleteAlias($this); } }