Skip to content

Commit

Permalink
Merge "Use more iterables in AffectedPagesFinder"
Browse files Browse the repository at this point in the history
  • Loading branch information
jenkins-bot authored and Gerrit Code Review committed Nov 4, 2020
2 parents 0a3cfd0 + c2afc7d commit 2370710
Showing 1 changed file with 8 additions and 14 deletions.
22 changes: 8 additions & 14 deletions client/includes/Changes/AffectedPagesFinder.php
Expand Up @@ -206,8 +206,6 @@ private function getAffectedPages( EntityChange $change ) {
array_merge( $changedAspects, [ EntityUsage::ALL_USAGE ] )
);

// @todo: use iterators throughout!
$usages = iterator_to_array( $usages, true );
$usages = $this->transformAllPageEntityUsages( $usages, $entityId, $changedAspects );

// if title changed, add virtual usages for both old and new title
Expand All @@ -229,17 +227,17 @@ private function getAffectedPages( EntityChange $change ) {
$mergedUsages = [];
$this->mergeUsagesInto( $usages, $mergedUsages );
$this->mergeUsagesInto( $usagesFromDiff, $mergedUsages );
$usages = $mergedUsages;
$usages = new ArrayIterator( $mergedUsages );
}

return new ArrayIterator( $usages );
return $usages;
}

/**
* @param PageEntityUsages[] $from
* @param iterable<PageEntityUsages> $from
* @param PageEntityUsages[] &$into Array to merge into
*/
private function mergeUsagesInto( array $from, array &$into ) {
private function mergeUsagesInto( iterable $from, array &$into ) {
foreach ( $from as $pageEntityUsages ) {
$key = $pageEntityUsages->getPageId();

Expand Down Expand Up @@ -357,27 +355,23 @@ private function makeVirtualUsages( array $titles, EntityId $entityId, array $as
}

/**
* @param PageEntityUsages[] $usages
* @param iterable<PageEntityUsages> $usages
* @param EntityId $entityId
* @param string[] $changedAspects
*
* @return PageEntityUsages[]
* @return iterable<PageEntityUsages>
*/
private function transformAllPageEntityUsages( array $usages, EntityId $entityId, array $changedAspects ) {
private function transformAllPageEntityUsages( iterable $usages, EntityId $entityId, array $changedAspects ): iterable {
$aspectTransformer = new UsageAspectTransformer();
$aspectTransformer->setRelevantAspects( $entityId, $changedAspects );

$transformed = [];

foreach ( $usages as $key => $usagesOnPage ) {
$transformedUsagesOnPage = $aspectTransformer->transformPageEntityUsages( $usagesOnPage );

if ( !$transformedUsagesOnPage->isEmpty() ) {
$transformed[$key] = $transformedUsagesOnPage;
yield $key => $transformedUsagesOnPage;
}
}

return $transformed;
}

}

0 comments on commit 2370710

Please sign in to comment.