Path: blob/master/src/applications/calendar/import/PhabricatorCalendarICSFileImportEngine.php
12256 views
<?php12final class PhabricatorCalendarICSFileImportEngine3extends PhabricatorCalendarICSImportEngine {45const ENGINETYPE = 'icsfile';67public function getImportEngineName() {8return pht('Import .ics File');9}1011public function getImportEngineTypeName() {12return pht('.ics File');13}1415public function getImportEngineHint() {16return pht('Import an event in ".ics" (iCalendar) format.');17}1819public function supportsTriggers(PhabricatorCalendarImport $import) {20return false;21}2223public function appendImportProperties(24PhabricatorUser $viewer,25PhabricatorCalendarImport $import,26PHUIPropertyListView $properties) {2728$phid_key = PhabricatorCalendarImportICSFileTransaction::PARAMKEY_FILE;29$file_phid = $import->getParameter($phid_key);3031$properties->addProperty(32pht('Source File'),33$viewer->renderHandle($file_phid));34}3536public function newEditEngineFields(37PhabricatorEditEngine $engine,38PhabricatorCalendarImport $import) {39$fields = array();4041if ($engine->getIsCreate()) {42$fields[] = id(new PhabricatorFileEditField())43->setKey('icsFilePHID')44->setLabel(pht('ICS File'))45->setDescription(pht('ICS file to import.'))46->setTransactionType(47PhabricatorCalendarImportICSFileTransaction::TRANSACTIONTYPE)48->setConduitDescription(pht('File PHID to import.'))49->setConduitTypeDescription(pht('File PHID.'));50}5152return $fields;53}5455public function getDisplayName(PhabricatorCalendarImport $import) {56$filename_key = PhabricatorCalendarImportICSFileTransaction::PARAMKEY_NAME;57$filename = $import->getParameter($filename_key);58if (strlen($filename)) {59return pht('ICS File "%s"', $filename);60} else {61return pht('ICS File');62}63}6465public function importEventsFromSource(66PhabricatorUser $viewer,67PhabricatorCalendarImport $import,68$should_queue) {6970$phid_key = PhabricatorCalendarImportICSFileTransaction::PARAMKEY_FILE;71$file_phid = $import->getParameter($phid_key);7273$file = id(new PhabricatorFileQuery())74->setViewer($viewer)75->withPHIDs(array($file_phid))76->executeOne();77if (!$file) {78throw new Exception(79pht(80'Unable to load file ("%s") for import.',81$file_phid));82}8384$data = $file->loadFileData();8586if ($should_queue && $this->shouldQueueDataImport($data)) {87return $this->queueDataImport($import, $data);88}8990return $this->importICSData($viewer, $import, $data);91}9293public function canDisable(94PhabricatorUser $viewer,95PhabricatorCalendarImport $import) {96return false;97}9899public function explainCanDisable(100PhabricatorUser $viewer,101PhabricatorCalendarImport $import) {102return pht(103'You can not disable import of an ICS file because the entire import '.104'occurs immediately when you upload the file. There is no further '.105'activity to disable.');106}107108109}110111112