Path: blob/master/src/applications/diffusion/engineextension/DiffusionCacheEngineExtension.php
12242 views
<?php12final class DiffusionCacheEngineExtension3extends PhabricatorCacheEngineExtension {45const EXTENSIONKEY = 'diffusion';67public function getExtensionName() {8return pht('Diffusion Repositories');9}1011public function discoverLinkedObjects(12PhabricatorCacheEngine $engine,13array $objects) {14$viewer = $engine->getViewer();15$results = array();1617// When an Almanac Service changes, update linked repositories.1819$services = $this->selectObjects($objects, 'AlmanacService');20if ($services) {21$repositories = id(new PhabricatorRepositoryQuery())22->setViewer($viewer)23->withAlmanacServicePHIDs(mpull($services, 'getPHID'))24->execute();25foreach ($repositories as $repository) {26$results[] = $repository;27}28}2930return $results;31}3233public function deleteCaches(34PhabricatorCacheEngine $engine,35array $objects) {3637$keys = array();38$repositories = $this->selectObjects($objects, 'PhabricatorRepository');39foreach ($repositories as $repository) {40$keys[] = $repository->getAlmanacServiceCacheKey();41}4243$keys = array_filter($keys);4445if ($keys) {46$cache = PhabricatorCaches::getMutableStructureCache();47$cache->deleteKeys($keys);48}49}5051}525354