Path: blob/master/src/applications/calendar/xaction/PhabricatorCalendarImportICSURITransaction.php
12256 views
<?php12final class PhabricatorCalendarImportICSURITransaction3extends PhabricatorCalendarImportTransactionType {45const TRANSACTIONTYPE = 'calendar.import.ics.uri';6const PARAMKEY_URI = 'ics.uri';78public function generateOldValue($object) {9return $object->getParameter(self::PARAMKEY_URI);10}1112public function applyInternalEffects($object, $value) {13$object->setParameter(self::PARAMKEY_URI, $value);14}1516public function getTitle() {17// NOTE: This transaction intentionally does not disclose the actual18// URI.19return pht(20'%s updated the import URI.',21$this->renderAuthor());22}2324public function validateTransactions($object, array $xactions) {25$viewer = $this->getActor();26$errors = array();2728$ics_type = PhabricatorCalendarICSURIImportEngine::ENGINETYPE;29$import_type = $object->getEngine()->getImportEngineType();30if ($import_type != $ics_type) {31if (!$xactions) {32return $errors;33}3435$errors[] = $this->newInvalidError(36pht(37'You can not attach an ICS URI to an import type other than '.38'an ICS URI import (type is "%s").',39$import_type));4041return $errors;42}4344$new_value = $object->getParameter(self::PARAMKEY_URI);45foreach ($xactions as $xaction) {46$new_value = $xaction->getNewValue();47if (!strlen($new_value)) {48continue;49}5051try {52PhabricatorEnv::requireValidRemoteURIForFetch(53$new_value,54array(55'http',56'https',57));58} catch (Exception $ex) {59$errors[] = $this->newInvalidError(60$ex->getMessage(),61$xaction);62}63}6465if (!strlen($new_value)) {66$errors[] = $this->newRequiredError(67pht('You must select an ".ics" URI to import.'));68}6970return $errors;71}72}737475