コード例 #1
0
 /**
  * @param Fingerprint $fingerprint
  * @param EntityDiff $patch
  *
  * @throws InvalidArgumentException
  */
 public function patchFingerprint(Fingerprint $fingerprint, EntityDiff $patch)
 {
     $labels = $this->patcher->patch($fingerprint->getLabels()->toTextArray(), $patch->getLabelsDiff());
     $fingerprint->setLabels($this->newTermListFromArray($labels));
     $descriptions = $this->patcher->patch($fingerprint->getDescriptions()->toTextArray(), $patch->getDescriptionsDiff());
     $fingerprint->setDescriptions($this->newTermListFromArray($descriptions));
     $this->patchAliases($fingerprint, $patch->getAliasesDiff());
 }
コード例 #2
0
 /**
  * Applies the change to the fingerprint
  *
  * @param Fingerprint $fingerprint
  */
 private function updateFingerprint(Fingerprint $fingerprint)
 {
     if ($this->description === null) {
         $fingerprint->removeDescription($this->languageCode);
     } else {
         $fingerprint->getDescriptions()->setTextForLanguage($this->languageCode, $this->description);
     }
 }
 /**
  * @param Fingerprint $fingerprint
  *
  * @return string
  */
 public function generate(Fingerprint $fingerprint)
 {
     $text = implode("\n", $fingerprint->getLabels()->toTextArray());
     $text .= "\n" . implode("\n", $fingerprint->getDescriptions()->toTextArray());
     /** @var AliasGroup $aliasGroup */
     foreach ($fingerprint->getAliasGroups() as $aliasGroup) {
         $text .= "\n" . implode("\n", $aliasGroup->getAliases());
     }
     return trim($text, "\n");
 }
 /**
  * @see FingerprintValidator::validateFingerprint()
  *
  * @param Fingerprint $fingerprint
  * @param EntityId $entityId
  * @param string[]|null $languageCodes
  *
  * @return Result
  */
 public function validateFingerprint(Fingerprint $fingerprint, EntityId $entityId, array $languageCodes = null)
 {
     $labels = $fingerprint->getLabels()->toTextArray();
     $descriptions = $fingerprint->getDescriptions()->toTextArray();
     if ($languageCodes !== null) {
         $languageKeys = array_flip($languageCodes);
         $labels = array_intersect_key($labels, $languageKeys);
         $descriptions = array_intersect_key($descriptions, $languageKeys);
     }
     // Nothing to do if there are no labels OR no descriptions, since
     // a conflict requires a label AND a description.
     if (empty($labels) || empty($descriptions)) {
         return Result::newSuccess();
     }
     return $this->duplicateDetector->detectLabelDescriptionConflicts($entityId->getEntityType(), $labels, $descriptions, $entityId);
 }
コード例 #5
0
 /**
  * @param Fingerprint $fingerprint
  * @param array $extraFields
  *
  * @return TermIndexEntry[]
  */
 private function getFingerprintTerms(Fingerprint $fingerprint, array $extraFields = array())
 {
     $terms = array();
     foreach ($fingerprint->getDescriptions()->toTextArray() as $languageCode => $description) {
         $term = new TermIndexEntry($extraFields);
         $term->setLanguage($languageCode);
         $term->setType(TermIndexEntry::TYPE_DESCRIPTION);
         $term->setText($description);
         $terms[] = $term;
     }
     foreach ($fingerprint->getLabels()->toTextArray() as $languageCode => $label) {
         $term = new TermIndexEntry($extraFields);
         $term->setLanguage($languageCode);
         $term->setType(TermIndexEntry::TYPE_LABEL);
         $term->setText($label);
         $terms[] = $term;
     }
     /** @var AliasGroup $aliasGroup */
     foreach ($fingerprint->getAliasGroups() as $aliasGroup) {
         foreach ($aliasGroup->getAliases() as $alias) {
             $term = new TermIndexEntry($extraFields);
             $term->setLanguage($aliasGroup->getLanguageCode());
             $term->setType(TermIndexEntry::TYPE_ALIAS);
             $term->setText($alias);
             $terms[] = $term;
         }
     }
     return $terms;
 }
コード例 #6
0
 private function fingerprintToPartialArray(Fingerprint $fingerprint)
 {
     return array('label' => $fingerprint->getLabels()->toTextArray(), 'description' => $fingerprint->getDescriptions()->toTextArray());
 }
コード例 #7
0
 public function testSetDescriptions()
 {
     $fingerprint = new Fingerprint();
     $fingerprint->setDescription('en', 'foo');
     $descriptions = new TermList(array(new Term('de', 'bar')));
     $fingerprint->setDescriptions($descriptions);
     $this->assertEquals($descriptions, $fingerprint->getDescriptions());
 }
コード例 #8
0
 /**
  * @param Fingerprint $fingerprint
  * @param string $languageCode
  * @param Title|null $title
  *
  * @return string HTML
  */
 private function getEntityTermsForLanguageView(Fingerprint $fingerprint, $languageCode, Title $title = null)
 {
     $languageName = $this->languageNameLookup->getName($languageCode);
     $labels = $fingerprint->getLabels();
     $descriptions = $fingerprint->getDescriptions();
     $hasLabel = $labels->hasTermForLanguage($languageCode);
     $hasDescription = $descriptions->hasTermForLanguage($languageCode);
     return $this->templateFactory->render('wikibase-entitytermsforlanguageview', 'tr', 'td', $languageCode, $this->templateFactory->render('wikibase-entitytermsforlanguageview-language', htmlspecialchars($title === null ? '#' : $title->getLocalURL(array('setlang' => $languageCode))), htmlspecialchars($languageName)), $this->templateFactory->render('wikibase-labelview', $hasLabel ? '' : 'wb-empty', htmlspecialchars($hasLabel ? $labels->getByLanguage($languageCode)->getText() : $this->msg('wikibase-label-empty')->text()), ''), $this->templateFactory->render('wikibase-descriptionview', $hasDescription ? '' : 'wb-empty', htmlspecialchars($hasDescription ? $descriptions->getByLanguage($languageCode)->getText() : $this->msg('wikibase-description-empty')->text()), '', ''), $this->getAliasesView($fingerprint->getAliasGroups(), $languageCode), '');
 }
 private function injectFingerprint(array $types = null, array &$entityRecord, Fingerprint $fingerprint, array $languages = null)
 {
     if ($types === null || in_array('label', $types)) {
         $labels = $fingerprint->getLabels();
         if ($languages !== null) {
             $labels = $labels->getWithLanguages($languages);
         }
         $this->injectLabels($entityRecord, $labels);
     }
     if ($types === null || in_array('description', $types)) {
         $descriptions = $fingerprint->getDescriptions();
         if ($languages !== null) {
             $descriptions = $descriptions->getWithLanguages($languages);
         }
         $this->injectDescriptions($entityRecord, $descriptions);
     }
     if ($types === null || in_array('alias', $types)) {
         $aliases = $fingerprint->getAliasGroups();
         if ($languages !== null) {
             $aliases = $aliases->getWithLanguages($languages);
         }
         $this->injectAliases($entityRecord, $aliases);
     }
 }