/**
  * @return ValueValidator[]
  */
 public function buildMonolingualTextValidators()
 {
     $validators = array();
     $validators[] = new DataFieldValidator('text', new CompositeValidator($this->getCommonStringValidators()));
     $validators[] = new DataFieldValidator('language', new MembershipValidator($this->contentLanguages->getLanguages()));
     $topValidator = new DataValueValidator(new CompositeValidator($validators));
     return array(new TypeValidator('DataValues\\DataValue'), $topValidator);
 }
 /**
  * @param OutputPage $out
  * @param string &$html
  *
  * @return bool
  */
 public function doOutputPageBeforeHTML(OutputPage $out, &$html)
 {
     $placeholders = $out->getProperty('wikibase-view-chunks');
     if (!empty($placeholders)) {
         $injector = new TextInjector($placeholders);
         $expander = $this->getEntityViewPlaceholderExpander($out);
         $html = $injector->inject($html, array($expander, 'getHtmlForPlaceholder'));
         $out->addJsConfigVars('wbUserSpecifiedLanguages', array_values(array_intersect($this->userLanguageLookup->getUserSpecifiedLanguages($out->getUser()), $this->termsLanguages->getLanguages())));
     }
 }
 /**
  * Returns a list of languages desired by the user in addition to the current interface language.
  *
  * @see UserLanguageLookup
  *
  * @return string[]
  */
 public function getExtraUserLanguages()
 {
     if ($this->extraLanguages === null) {
         if ($this->user->isAnon()) {
             // no extra languages for anon user
             $this->extraLanguages = array();
         } else {
             // ignore current interface language
             $skip = array($this->uiLanguage->getCode());
             $langs = array_diff($this->userLanguageLookup->getAllUserLanguages($this->user), $skip);
             // Make sure we only report actual term languages
             $this->extraLanguages = array_intersect($langs, $this->termsLanguages->getLanguages());
         }
     }
     return $this->extraLanguages;
 }
 /**
  * @see ApiBase::getAllowedParams
  */
 protected function getAllowedParams()
 {
     return array('search' => array(self::PARAM_TYPE => 'string', self::PARAM_REQUIRED => true), 'language' => array(self::PARAM_TYPE => $this->termsLanguages->getLanguages()), 'strictlanguage' => array(self::PARAM_TYPE => 'boolean', self::PARAM_DFLT => false), 'type' => array(self::PARAM_TYPE => $this->entityTypes, self::PARAM_DFLT => 'item'), 'limit' => array(self::PARAM_TYPE => 'limit', self::PARAM_DFLT => 7, self::PARAM_MAX => self::LIMIT_SML1, self::PARAM_MAX2 => self::LIMIT_SML2, self::PARAM_MIN => 0, self::PARAM_RANGE_ENFORCE => true));
 }
 private function newClientEntitySerializer()
 {
     return new ClientEntitySerializer($this->dataTypeLookup, array_unique(array_merge($this->termsLanguages->getLanguages(), $this->fallbackChain->getFetchLanguageCodes(), array($this->language->getCode()))), array($this->language->getCode() => $this->fallbackChain));
 }