/** * Applies the change to the fingerprint * * @param Fingerprint $fingerprint */ private function updateFingerprint(Fingerprint $fingerprint) { if ($this->label === null) { $fingerprint->removeLabel($this->languageCode); } else { $fingerprint->getLabels()->setTextForLanguage($this->languageCode, $this->label); } }
/** * @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()); }
/** * @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(); $aliases = $fingerprint->getAliasGroups()->toTextArray(); if ($languageCodes !== null) { $languageKeys = array_flip($languageCodes); $labels = array_intersect_key($labels, $languageKeys); $aliases = array_intersect_key($aliases, $languageKeys); } // Nothing to do if there are no labels AND no aliases. if (empty($labels) && empty($aliases)) { return Result::newSuccess(); } return $this->duplicateDetector->detectLabelConflicts($entityId->getEntityType(), $labels, null, $entityId); }
/** * @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); }
/** * @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; }
private function fingerprintToPartialArray(Fingerprint $fingerprint) { return array('label' => $fingerprint->getLabels()->toTextArray(), 'description' => $fingerprint->getDescriptions()->toTextArray()); }
public function testSetLabels() { $fingerprint = new Fingerprint(); $fingerprint->setLabel('en', 'foo'); $labels = new TermList(array(new Term('de', 'bar'))); $fingerprint->setLabels($labels); $this->assertEquals($labels, $fingerprint->getLabels()); }
/** * @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); } }