<?php

/**
 * Public facing controller for handling an opensearch interface based on
 * the standard search form.
 *
 * @package docsviewer
 */

class DocumentationOpenSearchController extends Controller {
	
	private static $allowed_actions = array(
		'description'
	);
	
	public function index() {
		return $this->httpError(404);
	}
	
	public function description() {
		$viewer = new DocumentationViewer();
		
		if(!$viewer->canView()) {
			return Security::permissionFailure($this);
		}

		if(!Config::inst()->get('DocumentationSearch', 'enabled')) {
			return $this->httpError('404');
		}
		
		$data = DocumentationSearch::get_meta_data();
		$link = Director::absoluteBaseUrl() .
		$data['SearchPageLink'] = Controller::join_links(
			$viewer->Link(),
			'results/?Search={searchTerms}&start={startIndex}&length={count}&action_results=1'
		);
		
		$data['SearchPageAtom'] = $data['SearchPageLink'] . '&format=atom';
		
		return $this->customise(
			new ArrayData($data)
		)->renderWith(array(
			'OpenSearchDescription'
		));
	}
}