diff options
Diffstat (limited to 'opensearch_desc.php')
-rw-r--r-- | opensearch_desc.php | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/opensearch_desc.php b/opensearch_desc.php new file mode 100644 index 00000000..59d61eee --- /dev/null +++ b/opensearch_desc.php @@ -0,0 +1,41 @@ +<?php + +/** + * Generate an OpenSearch description file + */ + +require_once( dirname(__FILE__) . '/includes/WebStart.php' ); +require_once( dirname(__FILE__) . '/languages/Names.php' ); +$fullName = "$wgSitename ({$wgLanguageNames[$wgLanguageCode]})"; +$shortName = htmlspecialchars( mb_substr( $fullName, 0, 24 ) ); +$siteName = htmlspecialchars( $fullName ); + +if ( !preg_match( '/^https?:/', $wgFavicon ) ) { + $favicon = htmlspecialchars( $wgServer . $wgFavicon ); +} else { + $favicon = htmlspecialchars( $wgFavicon ); +} + +$title = Title::makeTitle( NS_SPECIAL, 'Search' ); +$template = $title->escapeFullURL( 'search={searchTerms}' ); + +$response = $wgRequest->response(); +$response->header( 'Content-type: application/opensearchdescription+xml' ); + +# Set an Expires header so that squid can cache it for a short time +# Short enough so that the sysadmin barely notices when $wgSitename is changed +$expiryTime = 300; # 5 minutes +$response->header( 'Expires: ' . gmdate( 'D, d M Y H:i:s', time() + $expiryTime ) . ' GMT' ); + +echo <<<EOT +<?xml version="1.0"?> +<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"> +<ShortName>$shortName</ShortName> +<Description>$siteName</Description> +<Image height="16" width="16" type="image/x-icon">$favicon</Image> +<Url type="text/html" method="get" template="$template"/> +</OpenSearchDescription> +EOT; + + +?> |