Current File : /home/jvzmxxx/wiki1/extensions/Wikibase/lib/includes/DifferenceContentLanguages.php
<?php

namespace Wikibase\Lib;

/**
 * Provide languages supported as content languages by removing values in one ContentLanguages
 * from another ContentLanguages
 *
 * @since 0.5
 *
 * @license GPL-2.0+
 * @author Adrian Heine <adrian.heine@wikimedia.de>
 */
class DifferenceContentLanguages implements ContentLanguages {

	/**
	 * @var ContentLanguages
	 */
	private $all;

	/**
	 * @var ContentLanguages
	 */
	private $excluded;

	/**
	 * @var string[]|null Array of language codes
	 */
	private $languageCodes = null;

	/**
	 * @param ContentLanguages $all
	 * @param ContentLanguages $excluded
	 */
	public function __construct( ContentLanguages $all, ContentLanguages $excluded ) {
		$this->all = $all;
		$this->excluded = $excluded;
	}

	/**
	 * @return string[] Array of language codes supported as content language
	 */
	public function getLanguages() {
		return $this->getLanguageCodes();
	}

	/**
	 * @param string $languageCode
	 *
	 * @return bool
	 */
	public function hasLanguage( $languageCode ) {
		return in_array( $languageCode, $this->getLanguageCodes() );
	}

	/**
	 * @return string[] Array of language codes
	 */
	private function getLanguageCodes() {
		if ( $this->languageCodes === null ) {
			$this->languageCodes = array_values(
				array_diff( $this->all->getLanguages(), $this->excluded->getLanguages() )
			);
		}

		return $this->languageCodes;
	}

}