Path: blob/master/src/applications/calendar/xaction/PhabricatorCalendarExportQueryKeyTransaction.php
12256 views
<?php12final class PhabricatorCalendarExportQueryKeyTransaction3extends PhabricatorCalendarExportTransactionType {45const TRANSACTIONTYPE = 'calendar.export.querykey';67public function generateOldValue($object) {8return $object->getQueryKey();9}1011public function applyInternalEffects($object, $value) {12$object->setQueryKey($value);13}1415public function getTitle() {16return pht(17'%s changed the query for this export.',18$this->renderAuthor());19}2021public function validateTransactions($object, array $xactions) {22$actor = $this->getActor();2324$errors = array();2526foreach ($xactions as $xaction) {27$value = $xaction->getNewValue();2829$query = id(new PhabricatorSavedQueryQuery())30->setViewer($actor)31->withEngineClassNames(array('PhabricatorCalendarEventSearchEngine'))32->withQueryKeys(array($value))33->executeOne();34if ($query) {35continue;36}3738$builtin = id(new PhabricatorCalendarEventSearchEngine())39->setViewer($actor)40->getBuiltinQueries($actor);41if (isset($builtin[$value])) {42continue;43}4445$errors[] = $this->newInvalidError(46pht(47'Query key "%s" does not identify a valid event query.',48$value),49$xaction);50}5152if ($this->isEmptyTextTransaction($object->getQueryKey(), $xactions)) {53$errors[] = $this->newRequiredError(54pht('Calendar exports must have a query key.'));55}5657return $errors;58}5960}616263