mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-18 11:30:55 +01:00
314dc30017
Summary: Ref T10747. This doesn't have a "keep up to date" option yet, but can, e.g., fetch a Google Calendar URI Test Plan: Fetched a Google Calendar URI, got some events imported. Reviewers: chad Reviewed By: chad Maniphest Tasks: T10747 Differential Revision: https://secure.phabricator.com/D16730
73 lines
1.8 KiB
PHP
73 lines
1.8 KiB
PHP
<?php
|
|
|
|
final class PhabricatorCalendarImportICSURITransaction
|
|
extends PhabricatorCalendarImportTransactionType {
|
|
|
|
const TRANSACTIONTYPE = 'calendar.import.ics.uri';
|
|
const PARAMKEY_URI = 'ics.uri';
|
|
|
|
public function generateOldValue($object) {
|
|
return $object->getParameter(self::PARAMKEY_URI);
|
|
}
|
|
|
|
public function applyInternalEffects($object, $value) {
|
|
$object->setParameter(self::PARAMKEY_URI, $value);
|
|
}
|
|
|
|
public function getTitle() {
|
|
// NOTE: This transaction intentionally does not disclose the actual
|
|
// URI.
|
|
return pht(
|
|
'%s updated the import URI.',
|
|
$this->renderAuthor());
|
|
}
|
|
|
|
public function validateTransactions($object, array $xactions) {
|
|
$viewer = $this->getActor();
|
|
$errors = array();
|
|
|
|
$ics_type = PhabricatorCalendarICSURIImportEngine::ENGINETYPE;
|
|
$import_type = $object->getEngine()->getImportEngineType();
|
|
if ($import_type != $ics_type) {
|
|
if (!$xactions) {
|
|
return $errors;
|
|
}
|
|
|
|
$errors[] = $this->newInvalidError(
|
|
pht(
|
|
'You can not attach an ICS URI to an import type other than '.
|
|
'an ICS URI import (type is "%s").',
|
|
$import_type));
|
|
|
|
return $errors;
|
|
}
|
|
|
|
$new_value = $object->getParameter(self::PARAMKEY_URI);
|
|
foreach ($xactions as $xaction) {
|
|
$new_value = $xaction->getNewValue();
|
|
if (!strlen($new_value)) {
|
|
continue;
|
|
}
|
|
|
|
try {
|
|
PhabricatorEnv::requireValidRemoteURIForFetch(
|
|
$new_value,
|
|
array(
|
|
'http',
|
|
'https',
|
|
));
|
|
} catch (Exception $ex) {
|
|
$errors[] = $this->newInvalidError(
|
|
$ex->getMessage(),
|
|
$xaction);
|
|
}
|
|
}
|
|
|
|
if (!strlen($new_value)) {
|
|
$errors[] = $this->newRequiredError(
|
|
pht('You must select an ".ics" URI to import.'));
|
|
}
|
|
|
|
return $errors;
|
|
}
|
|
}
|