public function testGetHash() { $diff = array(); $instance = new CompositePropertyTableDiffIterator($diff); $instance->setSubject(DIWikiPage::newFromText(__METHOD__)); $this->assertInternalType('string', $instance->getHash()); }
/** * @dataProvider diffDataProvider */ public function testDiff($list, $fixedPropertyRecord, $expectedOrdered, $expectedList) { $instance = new CompositePropertyTableDiffIterator($list); $instance->addFixedPropertyRecord($fixedPropertyRecord[0], $fixedPropertyRecord[1]); $this->assertEquals($expectedOrdered, $instance->getOrderedDiffByTable()); $this->assertEquals($expectedList, $instance->getCombinedIdListOfChangedEntities()); }
/** * @since 2.5 * * @param CompositePropertyTableDiffIterator $compositePropertyTableDiffIterator * * @return null|string */ public function createSlotFrom(CompositePropertyTableDiffIterator $compositePropertyTableDiffIterator) { $orderedDiffByTable = $compositePropertyTableDiffIterator->getOrderedDiffByTable(); if ($orderedDiffByTable === array()) { return null; } $slot = $this->getSlot($compositePropertyTableDiffIterator); $this->cache->save($slot, $orderedDiffByTable); return $slot; }
/** * @since 2.4 * * @return array */ public function getFilteredIdList() { $start = microtime(true); $combinedChangedEntityList = array_flip($this->compositePropertyTableDiffIterator->getCombinedIdListOfChangedEntities()); $affiliateEntityList = array(); $tableChangeOps = $this->compositePropertyTableDiffIterator->getTableChangeOps(); foreach ($tableChangeOps as $tableChangeOp) { $this->applyFilterToTableChangeOp($tableChangeOp, $affiliateEntityList, $combinedChangedEntityList); } $filteredIdList = array_merge(array_keys($combinedChangedEntityList), array_keys($affiliateEntityList)); wfDebugLog('smw', __METHOD__ . ' procTime (sec): ' . round(microtime(true) - $start, 6)); return $filteredIdList; }
/** * This method is called from the `SMW::SQLStore::AfterDataUpdateComplete` hook and * removes outdated query ID's from the table if the diff contains a `delete` * entry for the _ask table. * * @since 2.3 * * @param CompositePropertyTableDiffIterator $compositePropertyTableDiffIterator */ public function pruneOutdatedTargetLinks(DIWikiPage $subject, CompositePropertyTableDiffIterator $compositePropertyTableDiffIterator) { if (!$this->isEnabled()) { return null; } $start = microtime(true); $tableName = $this->store->getPropertyTableInfoFetcher()->findTableIdForProperty(new DIProperty('_ASK')); $tableChangeOps = $compositePropertyTableDiffIterator->getTableChangeOps($tableName); // Remove any dependency for queries that are no longer used foreach ($tableChangeOps as $tableChangeOp) { if (!$tableChangeOp->hasChangeOp('delete')) { continue; } $deleteIdList = array(); foreach ($tableChangeOp->getFieldChangeOps('delete') as $fieldChangeOp) { $deleteIdList[] = $fieldChangeOp->get('o_id'); } $this->dependencyLinksTableUpdater->deleteDependenciesFromList($deleteIdList); } wfDebugLog('smw', __METHOD__ . ' finished on ' . $subject->getHash() . ' with procTime (sec): ' . round(microtime(true) - $start, 7)); return true; }
/** * @since 2.5 * * @param CompositePropertyTableDiffIterator $compositePropertyTableDiffIterator */ public function pushUpdatesFromPropertyTableDiff(CompositePropertyTableDiffIterator $compositePropertyTableDiffIterator) { if (!$this->searchTableUpdater->isEnabled()) { return; } $start = microtime(true); foreach ($compositePropertyTableDiffIterator->getTableChangeOps() as $tableChangeOp) { $this->doUpdateFromTableChangeOp($tableChangeOp); } wfDebugLog('smw', __METHOD__ . ' procTime (sec): ' . round(microtime(true) - $start, 5)); }
/** * @since 2.3 * * @param CompositePropertyTableDiffIterator $compositePropertyTableDiffIterator */ public function buildParserCachePurgeJobParametersFrom(CompositePropertyTableDiffIterator $compositePropertyTableDiffIterator) { if (!$this->isEnabled()) { return array(); } return array('idlist' => $compositePropertyTableDiffIterator->getCombinedIdListOfChangedEntities()); }
/** * @since 2.3 * * @param CompositePropertyTableDiffIterator $compositePropertyTableDiffIterator * @param array $propertyDependencyDetectionBlacklist * * @return array */ public function buildParserCachePurgeJobParametersFrom(CompositePropertyTableDiffIterator $compositePropertyTableDiffIterator, array $propertyDependencyDetectionBlacklist) { if (!$this->isEnabled()) { return array(); } $mapCombinedIdListOfChangedEntities = array_flip($compositePropertyTableDiffIterator->getCombinedIdListOfChangedEntities()); $mapPropertyDependencyDetectionBlacklist = array_flip($propertyDependencyDetectionBlacklist); foreach ($compositePropertyTableDiffIterator->getFixedPropertyRecords() as $table => $record) { if (!isset($mapPropertyDependencyDetectionBlacklist[$record['key']])) { continue; } $this->removeBlacklistedPropertyReferencesFromParserCachePurgeJobChangeList($compositePropertyTableDiffIterator, $mapCombinedIdListOfChangedEntities, $table, $record); } return array('idlist' => array_keys($mapCombinedIdListOfChangedEntities)); }