Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/diffusion/engineextension/DiffusionCacheEngineExtension.php
12242 views
1
<?php
2
3
final class DiffusionCacheEngineExtension
4
extends PhabricatorCacheEngineExtension {
5
6
const EXTENSIONKEY = 'diffusion';
7
8
public function getExtensionName() {
9
return pht('Diffusion Repositories');
10
}
11
12
public function discoverLinkedObjects(
13
PhabricatorCacheEngine $engine,
14
array $objects) {
15
$viewer = $engine->getViewer();
16
$results = array();
17
18
// When an Almanac Service changes, update linked repositories.
19
20
$services = $this->selectObjects($objects, 'AlmanacService');
21
if ($services) {
22
$repositories = id(new PhabricatorRepositoryQuery())
23
->setViewer($viewer)
24
->withAlmanacServicePHIDs(mpull($services, 'getPHID'))
25
->execute();
26
foreach ($repositories as $repository) {
27
$results[] = $repository;
28
}
29
}
30
31
return $results;
32
}
33
34
public function deleteCaches(
35
PhabricatorCacheEngine $engine,
36
array $objects) {
37
38
$keys = array();
39
$repositories = $this->selectObjects($objects, 'PhabricatorRepository');
40
foreach ($repositories as $repository) {
41
$keys[] = $repository->getAlmanacServiceCacheKey();
42
}
43
44
$keys = array_filter($keys);
45
46
if ($keys) {
47
$cache = PhabricatorCaches::getMutableStructureCache();
48
$cache->deleteKeys($keys);
49
}
50
}
51
52
}
53
54