diff --git a/src/enums/MDGender.php b/src/enums/MDGender.php new file mode 100644 index 0000000..f238626 --- /dev/null +++ b/src/enums/MDGender.php @@ -0,0 +1,176 @@ + + */ +declare(strict_types = 1); + +/** + * Represents a gender. + */ +enum MDGender implements MDValueEnumInterface, JsonSerializable { + + case none; + case female; + case male; + case other; + + /** + * Returns a value of this type based on a string. + * + * @param string $input Input to get a value from. + * + * @return MDGender + */ + public static function fromString(string $input):MDGender { + + return match($input) { + "" => self::none, + "none" => self::none, + "female" => self::female, + "male" => self::male, + "other" => self::other, + default => throw new MDpageParameterNotFromListException("Unknown series place role"), + }; + + } + + /** + * Returns a value of this type based on an integer. + * + * @param integer $input Input to get a value from. + * + * @return MDGender + */ + public static function fromInt(int $input):MDGender { + + return match($input) { + 0 => self::none, + 1 => self::female, + 2 => self::male, + 3 => self::other, + default => throw new MDpageParameterNotFromListException("Unknown series place role"), + }; + + } + + /** + * Lists all available names. + * + * @return array + */ + public static function caseNames():array { + + $output = []; + + $cases = self::cases(); + foreach ($cases as $case) { + $output[] = $case->toString(); + } + + return $output; + + } + + /** + * Gets an unsorted list of the entries in a translated version. + * + * @param MDTlLoader $tlLoader Translation loader. + * + * @return array + */ + public static function getUnsortedList(MDTlLoader $tlLoader):array { + return MDValueSet::getTlUnsortedList($tlLoader, self::caseNames(), "gender_set", "gender_set"); + + } + + /** + * Gets a sorted list of the entries in a translated version. + * + * @param MDTlLoader $tlLoader Translation loader. + * + * @return array + */ + public static function getSortedList(MDTlLoader $tlLoader):array { + return MDValueSet::getTlSortedList($tlLoader, self::caseNames(), "gender_set", "gender_set"); + + } + + /** + * Lists all available names. + * + * @return array + */ + public static function caseInts():array { + + $output = []; + + $cases = self::cases(); + foreach ($cases as $case) { + $output[] = $case->toInt(); + } + + return $output; + + } + + /** + * Returns integer representation of object record status. + * + * @return integer + */ + public function toInt():int { + + return match($this) { + self::none => 0, + self::female => 1, + self::male => 2, + self::other => 3, + # default => throw new MDpageParameterNotFromListException("Unknown object record status"), + }; + + } + + /** + * Returns string representation. + * + * @return string + */ + public function toString():string { + + return match($this) { + self::none => '', + self::female => 'female', + self::male => 'male', + self::other => 'other', + # default => throw new MDpageParameterNotFromListException("Unknown object record status"), + }; + + } + + /** + * Returns the name of the current value in translation. + * + * @param MDTlLoader $tlLoader Translation loader. + * + * @return string + */ + public function getTledName(MDTlLoader $tlLoader):string { + + if ($this === self::none) return ''; + return $tlLoader->tl("gender_set", "gender_set", $this->toString()); + + } + + /** + * Provides the option to serialize as a string during json_encode(). + * + * @return string + */ + public function jsonSerialize():string { + + return $this->name; + + } +} diff --git a/src/enums/MDLicense.php b/src/enums/MDLicense.php new file mode 100644 index 0000000..dd6fad8 --- /dev/null +++ b/src/enums/MDLicense.php @@ -0,0 +1,237 @@ + + */ +declare(strict_types = 1); + +/** + * Represents a license. + */ +enum MDLicense implements MDValueEnumInterface, JsonSerializable { + + case CC_BY_NC_SA; + case CC_BY_NC_ND; + case CC_BY_NC; + case CC_BY_ND; + case CC_BY_SA; + case CC_BY; + case CC0; + case RR_F; + case RR_P; + case RR_R; + case Public_Domain_Mark; + case Orphan_Work; + + public const AVAILABLE_LICENSES = [ + + 'CC BY-NC-SA' => 'https://creativecommons.org/licenses/by-nc-sa/4.0/', + 'CC BY-NC-ND' => 'https://creativecommons.org/licenses/by-nc-nd/4.0/', + 'CC BY-NC' => 'https://creativecommons.org/licenses/by-nc/4.0/', + 'CC BY-ND' => 'https://creativecommons.org/licenses/by-nd/4.0/', + 'CC BY-SA' => 'https://creativecommons.org/licenses/by-sa/4.0/', + 'CC BY' => 'https://creativecommons.org/licenses/by/4.0/', + 'CC0' => 'https://creativecommons.org/publicdomain/zero/1.0/', + 'RR-F' => 'https://www.europeana.eu/rights/rr-f/', + 'RR-P' => 'https://www.europeana.eu/rights/rr-p/', + 'RR-R' => 'https://www.europeana.eu/rights/rr-r/', + 'Public Domain Mark' => 'https://creativecommons.org/publicdomain/mark/1.0/', + 'Orphan Work' => 'https://www.europeana.eu/rights/orphan-work-eu/', + + ]; + + /** + * Returns a value of this type based on a string. + * + * @param string $input Input to get a value from. + * + * @return MDLicense + */ + public static function fromString(string $input):MDLicense { + + return match($input) { + 'CC BY-NC-SA' => self::CC_BY_NC_SA, + 'CC BY-NC-ND' => self::CC_BY_NC_ND, + 'CC BY-NC' => self::CC_BY_NC, + 'CC BY-ND' => self::CC_BY_ND, + 'CC BY-SA' => self::CC_BY_SA, + 'CC BY' => self::CC_BY, + 'CC0' => self::CC0, + 'RR-F' => self::RR_F, + 'RR-P' => self::RR_P, + 'RR-R' => self::RR_R, + 'Public Domain Mark' => self::Public_Domain_Mark, + 'Orphan Work' => self::Orphan_Work, + default => throw new MDpageParameterNotFromListException("Unknown license role"), + }; + + } + + /** + * Returns a value of this type based on an integer. + * + * @param integer $input Input to get a value from. + * + * @return MDLicense + */ + public static function fromInt(int $input):MDLicense { + + return match($input) { + 1 => self::CC_BY_NC_SA, + 2 => self::CC_BY_NC_ND, + 3 => self::CC_BY_NC, + 4 => self::CC_BY_ND, + 5 => self::CC_BY_SA, + 6 => self::CC_BY, + 7 => self::CC0, + 8 => self::RR_F, + 9 => self::RR_P, + 10 => self::RR_R, + 11 => self::Public_Domain_Mark, + 12 => self::Orphan_Work, + default => throw new MDpageParameterNotFromListException("Unknown license role"), + }; + + } + + /** + * Lists all available names. + * + * @return array + */ + public static function caseNames():array { + + $output = []; + + $cases = self::cases(); + foreach ($cases as $case) { + $output[] = $case->toString(); + } + + return $output; + + } + + /** + * Gets an unsorted list of the entries in a translated version. + * + * @param MDTlLoader $tlLoader Translation loader. + * + * @return array + */ + public static function getUnsortedList(MDTlLoader $tlLoader):array { + + $output = []; + foreach (self::caseNames() as $name) $output[$name] = $name; + return $output; + + } + + /** + * Gets a sorted list of the entries in a translated version. + * + * @param MDTlLoader $tlLoader Translation loader. + * + * @return array + */ + public static function getSortedList(MDTlLoader $tlLoader):array { + + $output = self::getUnsortedList(); + asort($output); + return $output; + + } + + /** + * Lists all available names. + * + * @return array + */ + public static function caseInts():array { + + $output = []; + + $cases = self::cases(); + foreach ($cases as $case) { + $output[] = $case->toInt(); + } + + return $output; + + } + + /** + * Returns integer representation of object record status. + * + * @return integer + */ + public function toInt():int { + + return match($this) { + self::CC_BY_NC_SA => 1, + self::CC_BY_NC_ND => 2, + self::CC_BY_NC => 3, + self::CC_BY_ND => 4, + self::CC_BY_SA => 5, + self::CC_BY => 6, + self::CC0 => 7, + self::RR_F => 8, + self::RR_P => 9, + self::RR_R => 10, + self::Public_Domain_Mark => 11, + self::Orphan_Work => 12, + # default => throw new MDpageParameterNotFromListException("Unknown object record status"), + }; + + } + + /** + * Returns string representation. + * + * @return string + */ + public function toString():string { + + return match($this) { + self::CC_BY_NC_SA => 'CC BY-NC-SA', + self::CC_BY_NC_ND => 'CC BY-NC-ND', + self::CC_BY_NC => 'CC BY-NC', + self::CC_BY_ND => 'CC BY-ND', + self::CC_BY_SA => 'CC BY-SA', + self::CC_BY => 'CC BY', + self::CC0 => 'CC0', + self::RR_F => 'RR-F', + self::RR_P => 'RR-P', + self::RR_R => 'RR-R', + self::Public_Domain_Mark => 'Public Domain Mark', + self::Orphan_Work => 'Orphan Work', + # default => throw new MDpageParameterNotFromListException("Unknown object record status"), + }; + + } + + /** + * Returns the name of the current value in translation. + * + * @param MDTlLoader $tlLoader Translation loader. + * + * @return string + */ + public function getTledName(MDTlLoader $tlLoader):string { + + return $this->toString(); + + } + + /** + * Provides the option to serialize as a string during json_encode(). + * + * @return string + */ + public function jsonSerialize():string { + + return $this->name; + + } +}