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() {
18 '%s changed the query for this export.',
19 $this->renderAuthor());
22 public function validateTransactions($object, array $xactions) {
23 $actor = $this->getActor();
27 foreach ($xactions as $xaction) {
28 $value = $xaction->getNewValue();
30 $query = id(new PhabricatorSavedQueryQuery())
32 ->withEngineClassNames(array('PhabricatorCalendarEventSearchEngine'))
33 ->withQueryKeys(array($value))
39 $builtin = id(new PhabricatorCalendarEventSearchEngine())
41 ->getBuiltinQueries($actor);
42 if (isset($builtin[$value])) {
46 $errors[] = $this->newInvalidError(
48 'Query key "%s" does not identify a valid event query.',
53 if ($this->isEmptyTextTransaction($object->getQueryKey(), $xactions)) {
54 $errors[] = $this->newRequiredError(
55 pht('Calendar exports must have a query key.'));