/** * @dataProvider aspectKeyProvider */ public function testSplitAspectKey($aspectKey, array $expectedParts) { $parts = EntityUsage::splitAspectKey($aspectKey); $this->assertEquals($expectedParts, $parts); }
/** * @param Title[] $titles * @param EntityId $entityId * @param string[] $aspects * * @return PageEntityUsages[] */ private function makeVirtualUsages(array $titles, EntityId $entityId, array $aspects) { $usagesForItem = array(); foreach ($aspects as $aspect) { list($aspect, $modifier) = EntityUsage::splitAspectKey($aspect); $usagesForItem[] = new EntityUsage($entityId, $aspect, $modifier); } $usagesPerPage = array(); foreach ($titles as $title) { $pageId = $title->getArticleID(); if ($pageId === 0) { wfDebugLog('WikibaseChangeNotification', __METHOD__ . ': Article ID for ' . $title->getFullText() . ' is 0.'); continue; } $usagesPerPage[$pageId] = new PageEntityUsages($pageId, $usagesForItem); } return $usagesPerPage; }
/** * @param Traversable $rows * * @return PageEntityUsages[] */ private function foldRowsIntoPageEntityUsages(Traversable $rows) { $usagesPerPage = array(); foreach ($rows as $row) { $pageId = (int) $row->eu_page_id; if (isset($usagesPerPage[$pageId])) { $pageEntityUsages = $usagesPerPage[$pageId]; } else { $pageEntityUsages = new PageEntityUsages($pageId); } $entityId = $this->idParser->parse($row->eu_entity_id); list($aspect, $modifier) = EntityUsage::splitAspectKey($row->eu_aspect); $usage = new EntityUsage($entityId, $aspect, $modifier); $pageEntityUsages->addUsages(array($usage)); $usagesPerPage[$pageId] = $pageEntityUsages; } return $usagesPerPage; }
/** * @param EntityId $entityId * @param string[] $aspects (may have modifiers applied) * * @return EntityUsage[] */ private function buildEntityUsages(EntityId $entityId, array $aspects) { $usages = array(); foreach ($aspects as $aspect) { list($aspect, $modifier) = EntityUsage::splitAspectKey($aspect); $entityUsage = new EntityUsage($entityId, $aspect, $modifier); $key = $entityUsage->getIdentityString(); $usages[$key] = $entityUsage; } ksort($usages); return $usages; }