Current File : /home/jvzmxxx/wiki/extensions/Wikibase/lib/includes/UnionContentLanguages.php
<?php

namespace Wikibase\Lib;

/**
 * Provide languages supported as content languages based on two ContentLanguages
 *
 * @since 0.5
 *
 * @license GPL-2.0+
 * @author Adrian Heine <adrian.heine@wikimedia.de>
 */
class UnionContentLanguages implements ContentLanguages {

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

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

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

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

	/**
	 * @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_unique( array_merge( $this->a->getLanguages(), $this->b->getLanguages() ) ) );
		}

		return $this->languageCodes;
	}

}