baseUri = $baseUri;
$this->namespaceMap = $namespaceMap;
}
/**
* Generates a 'full' url based on a relative one.
*
* For relative urls, the base of the application is taken as the reference
* url, not the 'current url of the current request'.
*
* Absolute urls are left alone.
*
* @param string $path
*
* @return string
*/
public function fullUrl($path)
{
return Uri\resolve($this->baseUri, $path);
}
/**
* Escape string for HTML output.
*
* @param scalar $input
*
* @return string
*/
public function h($input)
{
return htmlspecialchars((string) $input, ENT_COMPAT, 'UTF-8');
}
/**
* Generates a full -tag.
*
* Url is automatically expanded. If label is not specified, we re-use the
* url.
*
* @param string $url
* @param string $label
*
* @return string
*/
public function link($url, $label = null)
{
$url = $this->h($this->fullUrl($url));
return ''.($label ? $this->h($label) : $url).'';
}
/**
* This method takes an xml element in clark-notation, and turns it into a
* shortened version with a prefix, if it was a known namespace.
*
* @param string $element
*
* @return string
*/
public function xmlName($element)
{
list($ns, $localName) = XmlService::parseClarkNotation($element);
if (isset($this->namespaceMap[$ns])) {
$propName = $this->namespaceMap[$ns].':'.$localName;
} else {
$propName = $element;
}
return ''.$this->h($propName).'';
}
}