Correct Aphlict websocket URI construction after PHP8 compatibility changes
[phabricator.git] / src / applications / calendar / xaction / PhabricatorCalendarExportQueryKeyTransaction.php
blobbcdecf09a36db4eb80da3260e8660dcbc5e0b49e
1 <?php
3 final class PhabricatorCalendarExportQueryKeyTransaction
4 extends PhabricatorCalendarExportTransactionType {
6 const TRANSACTIONTYPE = 'calendar.export.querykey';
8 public function generateOldValue($object) {
9 return $object->getQueryKey();
12 public function applyInternalEffects($object, $value) {
13 $object->setQueryKey($value);
16 public function getTitle() {
17 return pht(
18 '%s changed the query for this export.',
19 $this->renderAuthor());
22 public function validateTransactions($object, array $xactions) {
23 $actor = $this->getActor();
25 $errors = array();
27 foreach ($xactions as $xaction) {
28 $value = $xaction->getNewValue();
30 $query = id(new PhabricatorSavedQueryQuery())
31 ->setViewer($actor)
32 ->withEngineClassNames(array('PhabricatorCalendarEventSearchEngine'))
33 ->withQueryKeys(array($value))
34 ->executeOne();
35 if ($query) {
36 continue;
39 $builtin = id(new PhabricatorCalendarEventSearchEngine())
40 ->setViewer($actor)
41 ->getBuiltinQueries($actor);
42 if (isset($builtin[$value])) {
43 continue;
46 $errors[] = $this->newInvalidError(
47 pht(
48 'Query key "%s" does not identify a valid event query.',
49 $value),
50 $xaction);
53 if ($this->isEmptyTextTransaction($object->getQueryKey(), $xactions)) {
54 $errors[] = $this->newRequiredError(
55 pht('Calendar exports must have a query key.'));
58 return $errors;