private function doFindClosestDescendantByInverseLink(DIWikiPage $subject, array $propertySearchPattern, RequestOptions $requestOptions) { $property = array_shift($propertySearchPattern); $property = DIProperty::newFromUserLabel($property); if ($property->findPropertyTypeId() !== '_wpg') { return; } $children = $this->store->getPropertySubjects($property, $subject, $requestOptions); foreach ($children as $dataItem) { // A flat display can only display one child if ($this->closestDescendantLinks !== array()) { break; } if ($subject->equals($dataItem)) { continue; } $this->closestDescendantLinks[] = $dataItem; } }
private function assertInProperties(DIWikiPage $subject, array $semanticdata, $about) { if (!isset($semanticdata['inproperty-keys'])) { return; } $inProperties = $this->store->getInProperties($subject); $this->assertCount(count($semanticdata['inproperty-keys']), $inProperties, 'Failed asserting count for "inproperty-keys" in ' . $about . ' ' . implode(',', $inProperties)); $inpropertyValues = array(); foreach ($inProperties as $property) { $this->assertContains($property->getKey(), $semanticdata['inproperty-keys'], 'Failed asserting key for "inproperty-keys" in ' . $about); if (!isset($semanticdata['inproperty-values'])) { continue; } $values = $this->store->getPropertySubjects($property, $subject); foreach ($values as $value) { $inpropertyValues[] = $value->getSerialization(); } } foreach ($inpropertyValues as $value) { $this->assertContains($value, $semanticdata['inproperty-values'], 'Failed asserting values for "inproperty-values" in ' . $about); } }
protected function addUpdateJobsForPropertyWithTypeError() { $subjects = $this->store->getPropertySubjects(new DIProperty(DIProperty::TYPE_ERROR), DIWikiPage::newFromTitle($this->getTitle())); $this->addUniqueUpdateJobs($subjects); }