baseUrn . (isset($parameters['pageuid']) ? '?uid=' . $parameters['pageuid'] : ''); $urn = rtrim($urn, ':'); // Page type is set and not empty (= "0" in this case means it is not empty) if (isset($parameters['pagetype']) && strlen((string)$parameters['pagetype']) > 0) { $urn .= '&type=' . $parameters['pagetype']; } if (!empty($parameters['parameters'])) { $urn .= '&' . ltrim($parameters['parameters'], '?&'); } if (!empty($parameters['fragment'])) { $urn .= '#' . $parameters['fragment']; } return $urn; } /** * Returns all relevant information built in the link to a page (see asString()) */ public function resolveHandlerData(array $data): array { $result = []; if (isset($data['uid'])) { $result['pageuid'] = MathUtility::canBeInterpretedAsInteger($data['uid']) ? (int)$data['uid'] : $data['uid']; unset($data['uid']); } if (isset($data['type'])) { $result['pagetype'] = $data['type']; unset($data['type']); } if (!empty($data)) { $result['parameters'] = http_build_query($data, '', '&', PHP_QUERY_RFC3986); } if (empty($result)) { $result['pageuid'] = 'current'; } return $result; } }