Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/calendar/xaction/PhabricatorCalendarExportQueryKeyTransaction.php
12256 views
1
<?php
2
3
final class PhabricatorCalendarExportQueryKeyTransaction
4
extends PhabricatorCalendarExportTransactionType {
5
6
const TRANSACTIONTYPE = 'calendar.export.querykey';
7
8
public function generateOldValue($object) {
9
return $object->getQueryKey();
10
}
11
12
public function applyInternalEffects($object, $value) {
13
$object->setQueryKey($value);
14
}
15
16
public function getTitle() {
17
return pht(
18
'%s changed the query for this export.',
19
$this->renderAuthor());
20
}
21
22
public function validateTransactions($object, array $xactions) {
23
$actor = $this->getActor();
24
25
$errors = array();
26
27
foreach ($xactions as $xaction) {
28
$value = $xaction->getNewValue();
29
30
$query = id(new PhabricatorSavedQueryQuery())
31
->setViewer($actor)
32
->withEngineClassNames(array('PhabricatorCalendarEventSearchEngine'))
33
->withQueryKeys(array($value))
34
->executeOne();
35
if ($query) {
36
continue;
37
}
38
39
$builtin = id(new PhabricatorCalendarEventSearchEngine())
40
->setViewer($actor)
41
->getBuiltinQueries($actor);
42
if (isset($builtin[$value])) {
43
continue;
44
}
45
46
$errors[] = $this->newInvalidError(
47
pht(
48
'Query key "%s" does not identify a valid event query.',
49
$value),
50
$xaction);
51
}
52
53
if ($this->isEmptyTextTransaction($object->getQueryKey(), $xactions)) {
54
$errors[] = $this->newRequiredError(
55
pht('Calendar exports must have a query key.'));
56
}
57
58
return $errors;
59
}
60
61
}
62
63