*/ declare(strict_types = 1); /** * Class listing syndication sources. */ final class MDObjectSyndicationSet extends MDValueSet { const REPOSITORIES = [ 'ddb' => [ 'url' => 'https://www.deutsche-digitale-bibliothek.de/', 'object_prefix' => 'https://www.deutsche-digitale-bibliothek.de/item/', 'org_prefix' => 'https://www.deutsche-digitale-bibliothek.de/organization/', 'id_is_int' => false, ], 'europeana' => [ 'url' => 'https://www.europeana.eu/', 'object_prefix' => 'https://www.europeana.eu/en/item/', 'org_prefix' => null, 'id_is_int' => false, ], 'smb-digital' => [ 'url' => 'http://www.smb-digital.de/', 'object_prefix' => 'http://www.smb-digital.de/eMuseumPlus?service=ExternalInterface&module=collection&objectId=', 'org_prefix' => null, 'id_is_int' => true, ], ]; /** * Returns a correctly formed search URL for a given object in a given * repository, optionally naming the institution. * * @param string $repo Repository to search in. * @param string $instId Remote ID of the institution to search for. * @param string $search_value Search string. * * @return string */ public static function getSearchUrlForObject(string $repo, string $instId, string $search_value):string { switch ($repo) { case 'ddb': return "https://www.deutsche-digitale-bibliothek.de/searchresults?query=" . \urlencode($search_value) . "&facetValues[]=" . \urlencode("provider_id=" . $instId); default: throw new MDpageParameterNotFromListException("Search URLs can only be generated for the following repositories: ddb"); } } /** * Function for checking the availability of a provided repository in the * list of known repositories. * * @param string $repo Repository name to check. * * @return string|boolean */ final public static function checkRepositoryIsKnown(string $repo) { if (isset(self::REPOSITORIES[$repo])) { return $repo; } return false; } /** * 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 parent::getTlSortedList($tlLoader, array_keys(self::REPOSITORIES), "syndication_repos", "syndication_repos"); } }