forked from phacility/phabricator
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPhabricatorConfigPurgeCacheController.php
62 lines (50 loc) · 1.87 KB
/
PhabricatorConfigPurgeCacheController.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php
final class PhabricatorConfigPurgeCacheController
extends PhabricatorConfigController {
public function handleRequest(AphrontRequest $request) {
$viewer = $this->getViewer();
$cancel_uri = $this->getApplicationURI('cache/');
$opcode_cache = PhabricatorOpcodeCacheSpec::getActiveCacheSpec();
$data_cache = PhabricatorDataCacheSpec::getActiveCacheSpec();
$opcode_clearable = $opcode_cache->getClearCacheCallback();
$data_clearable = $data_cache->getClearCacheCallback();
if (!$opcode_clearable && !$data_clearable) {
return $this->newDialog()
->setTitle(pht('No Caches to Reset'))
->appendParagraph(
pht('None of the caches on this page can be cleared.'))
->addCancelButton($cancel_uri);
}
if ($request->isDialogFormPost()) {
if ($opcode_clearable) {
call_user_func($opcode_cache->getClearCacheCallback());
}
if ($data_clearable) {
call_user_func($data_cache->getClearCacheCallback());
}
return id(new AphrontRedirectResponse())->setURI($cancel_uri);
}
$caches = id(new PHUIPropertyListView())
->setUser($viewer);
if ($opcode_clearable) {
$caches->addProperty(
pht('Opcode'),
$opcode_cache->getName());
}
if ($data_clearable) {
$caches->addProperty(
pht('Data'),
$data_cache->getName());
}
return $this->newDialog()
->setTitle(pht('Really Clear Cache?'))
->setShortTitle(pht('Really Clear Cache'))
->appendParagraph(pht('This will only affect the current web '.
'frontend. Daemons and any other web frontends may continue '.
'to use older, cached code from their opcache.'))
->appendParagraph(pht('The following caches will be cleared:'))
->appendChild($caches)
->addSubmitButton(pht('Clear Cache'))
->addCancelButton($cancel_uri);
}
}