Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/calendar/import/PhabricatorCalendarICSFileImportEngine.php
12256 views
1
<?php
2
3
final class PhabricatorCalendarICSFileImportEngine
4
extends PhabricatorCalendarICSImportEngine {
5
6
const ENGINETYPE = 'icsfile';
7
8
public function getImportEngineName() {
9
return pht('Import .ics File');
10
}
11
12
public function getImportEngineTypeName() {
13
return pht('.ics File');
14
}
15
16
public function getImportEngineHint() {
17
return pht('Import an event in ".ics" (iCalendar) format.');
18
}
19
20
public function supportsTriggers(PhabricatorCalendarImport $import) {
21
return false;
22
}
23
24
public function appendImportProperties(
25
PhabricatorUser $viewer,
26
PhabricatorCalendarImport $import,
27
PHUIPropertyListView $properties) {
28
29
$phid_key = PhabricatorCalendarImportICSFileTransaction::PARAMKEY_FILE;
30
$file_phid = $import->getParameter($phid_key);
31
32
$properties->addProperty(
33
pht('Source File'),
34
$viewer->renderHandle($file_phid));
35
}
36
37
public function newEditEngineFields(
38
PhabricatorEditEngine $engine,
39
PhabricatorCalendarImport $import) {
40
$fields = array();
41
42
if ($engine->getIsCreate()) {
43
$fields[] = id(new PhabricatorFileEditField())
44
->setKey('icsFilePHID')
45
->setLabel(pht('ICS File'))
46
->setDescription(pht('ICS file to import.'))
47
->setTransactionType(
48
PhabricatorCalendarImportICSFileTransaction::TRANSACTIONTYPE)
49
->setConduitDescription(pht('File PHID to import.'))
50
->setConduitTypeDescription(pht('File PHID.'));
51
}
52
53
return $fields;
54
}
55
56
public function getDisplayName(PhabricatorCalendarImport $import) {
57
$filename_key = PhabricatorCalendarImportICSFileTransaction::PARAMKEY_NAME;
58
$filename = $import->getParameter($filename_key);
59
if (strlen($filename)) {
60
return pht('ICS File "%s"', $filename);
61
} else {
62
return pht('ICS File');
63
}
64
}
65
66
public function importEventsFromSource(
67
PhabricatorUser $viewer,
68
PhabricatorCalendarImport $import,
69
$should_queue) {
70
71
$phid_key = PhabricatorCalendarImportICSFileTransaction::PARAMKEY_FILE;
72
$file_phid = $import->getParameter($phid_key);
73
74
$file = id(new PhabricatorFileQuery())
75
->setViewer($viewer)
76
->withPHIDs(array($file_phid))
77
->executeOne();
78
if (!$file) {
79
throw new Exception(
80
pht(
81
'Unable to load file ("%s") for import.',
82
$file_phid));
83
}
84
85
$data = $file->loadFileData();
86
87
if ($should_queue && $this->shouldQueueDataImport($data)) {
88
return $this->queueDataImport($import, $data);
89
}
90
91
return $this->importICSData($viewer, $import, $data);
92
}
93
94
public function canDisable(
95
PhabricatorUser $viewer,
96
PhabricatorCalendarImport $import) {
97
return false;
98
}
99
100
public function explainCanDisable(
101
PhabricatorUser $viewer,
102
PhabricatorCalendarImport $import) {
103
return pht(
104
'You can not disable import of an ICS file because the entire import '.
105
'occurs immediately when you upload the file. There is no further '.
106
'activity to disable.');
107
}
108
109
110
}
111
112