protected function extractMessages($resultset, $offset, $limit)
 {
     $messages = $documents = $ret = array();
     $language = $this->params['language'];
     foreach ($resultset->getResults() as $document) {
         $data = $document->getData();
         if (!$this->server->isLocalSuggestion($data)) {
             continue;
         }
         $title = Title::newFromText($data['localid']);
         if (!$title) {
             continue;
         }
         $handle = new MessageHandle($title);
         if (!$handle->isValid()) {
             continue;
         }
         $key = $title->getNamespace() . ':' . $title->getDBKey();
         $messages[$key] = $data['content'];
     }
     $definitions = new MessageDefinitions($messages);
     $collection = MessageCollection::newFromDefinitions($definitions, $language);
     $filter = $this->params['filter'];
     if ($filter === 'untranslated') {
         $collection->filter('hastranslation', true);
     } elseif (in_array($filter, $this->getAvailableFilters())) {
         $collection->filter($filter, false);
     }
     $total = count($collection);
     $offset = $collection->slice($offset, $limit);
     $left = count($collection);
     $offsets = array('start' => $offset[2], 'left' => $left, 'total' => $total);
     if ($filter === 'translated' || $filter === 'fuzzy') {
         $collection->loadTranslations();
     }
     foreach ($collection->keys() as $mkey => $title) {
         $documents[$mkey]['content'] = $messages[$mkey];
         if ($filter === 'translated' || $filter === 'fuzzy') {
             $documents[$mkey]['content'] = $collection[$mkey]->translation();
         }
         $handle = new MessageHandle($title);
         $documents[$mkey]['localid'] = $handle->getTitleForBase()->getPrefixedText();
         $documents[$mkey]['language'] = $language;
         $ret[] = $documents[$mkey];
     }
     return array($ret, $offsets);
 }
コード例 #2
0
 /**
  * @param string $code Language code.
  * @return MessageCollection
  */
 public function initCollection($code)
 {
     $namespace = $this->getNamespace();
     $messages = array();
     $cache = new MessageGroupCache($this, $this->getSourceLanguage());
     if (!$cache->exists()) {
         wfWarn("By-passing message group cache for {$this->getId()}");
         $messages = $this->getDefinitions();
     } else {
         foreach ($cache->getKeys() as $key) {
             $messages[$key] = $cache->get($key);
         }
     }
     $definitions = new MessageDefinitions($messages, $namespace);
     $collection = MessageCollection::newFromDefinitions($definitions, $code);
     $this->setTags($collection);
     return $collection;
 }
コード例 #3
0
ファイル: Groups.php プロジェクト: schwarer2006/wikia
 public function initCollection($code)
 {
     $messages = $this->loadMessagesFromCache($this->getGroups());
     $namespace = $this->getNamespace();
     $definitions = new MessageDefinitions($messages, $namespace);
     $collection = MessageCollection::newFromDefinitions($definitions, $code);
     $this->setTags($collection);
     return $collection;
 }
コード例 #4
0
ファイル: MessageGroups.php プロジェクト: schwarer2006/wikia
 /**
  * Creates a new MessageCollection for this group.
  *
  * @param $code \string Language code for this collection.
  * @param $unique \bool Whether to build collection for messages unique to this
  *                group only.
  * @return MessageCollection
  */
 public function initCollection($code, $unique = false)
 {
     if (!$unique) {
         $definitions = $this->getDefinitions();
     } else {
         $definitions = $this->getUniqueDefinitions();
     }
     $defs = new MessageDefinitions($definitions, $this->getNamespace());
     $collection = MessageCollection::newFromDefinitions($defs, $code);
     foreach ($this->getTags() as $type => $tags) {
         $collection->setTags($type, $tags);
     }
     return $collection;
 }
コード例 #5
0
	public function initCollection( $code ) {
		$messages = array();

		foreach ( $this->getGroups() as $group ) {
			$cache = new MessageGroupCache( $group );
			if ( $cache->exists() ) {
				foreach ( $cache->getKeys() as $key ) {
					$messages[$key] = $cache->get( $key );
				}
			} else {
				// BC for MessageGroupOld
				$messages += $group->load( $this->getSourceLanguage() );
			}
		}

		$namespace = $this->getNamespace();
		$definitions = new MessageDefinitions( $messages, $namespace );
		$collection = MessageCollection::newFromDefinitions( $definitions, $code );

		$this->setTags( $collection );

		return $collection;
	}
コード例 #6
0
	/**
	 * Creates a new MessageCollection for this group.
	 *
	 * @param $code \string Language code for this collection.
	 * @param $unique \bool Whether to build collection for messages unique to this
	 *                group only.
	 * @return MessageCollection
	 */
	public function initCollection( $code, $unique = false ) {
		if ( !$unique ) {
			$definitions = $this->getDefinitions();
		} else {
			$definitions = $this->getUniqueDefinitions();
		}

		$defs = new MessageDefinitions( $definitions, $this->namespaces[0] );
		$collection = MessageCollection::newFromDefinitions( $defs, $code );

		$bools = $this->getBools();
		$collection->setTags( 'ignored',  $bools['ignored']  );
		$collection->setTags( 'optional', $bools['optional'] );

		return $collection;
	}