<?php

namespace AdvancedSearch;

use ResourceLoaderContext;
use ResourceLoaderModule;
use ResourceLoaderWikiModule;
use Xml;

/**
 * ResourceLoader module providing the users "searchnamespace" token.
 */
class SearchnamespaceTokenModule extends ResourceLoaderWikiModule {

	/**
	 * @var int
	 */
	protected $origin = self::ORIGIN_CORE_INDIVIDUAL;

	/**
	 * @var string[]
	 */
	protected $targets = [ 'desktop', 'mobile' ];

	/**
	 * @param ResourceLoaderContext $context
	 *
	 * @return string JavaScript code
	 */
	public function getScript( ResourceLoaderContext $context ) {
		$user = $context->getUserObj();
		// Use FILTER_NOMIN annotation to prevent needless minification and caching (T84960).
		return ResourceLoader::FILTER_NOMIN .
			Xml::encodeJsCall(
				'mw.user.tokens.set',
				[ 'searchnamespaceToken', $user->getEditToken( 'searchnamespace' ) ],
				(bool)ResourceLoader::inDebugMode()
			);
	}

	/**
	 * @return bool
	 */
	public function supportsURLLoading() {
		return false;
	}

	/**
	 * @return string
	 */
	public function getGroup() {
		// Private modules can not be loaded as a dependency, only via OutputPage::addModules().
		return 'private';
	}

}
