protected final function queueDataImport(PhabricatorCalendarImport $import, $data)
 {
     $import->newLogMessage(PhabricatorCalendarImportQueueLogType::LOGTYPE, array('data.size' => strlen($data), 'data.limit' => self::QUEUE_BYTE_LIMIT));
     // When we queue on this pathway, we're queueing in response to an explicit
     // user action (like uploading a big `.ics` file), so we queue at normal
     // priority instead of bulk/import priority.
     PhabricatorWorker::scheduleTask('PhabricatorCalendarImportReloadWorker', array('importPHID' => $import->getPHID(), 'via' => PhabricatorCalendarImportReloadWorker::VIA_BACKGROUND), array('objectPHID' => $import->getPHID()));
 }
 private function buildImportedEvents(PhabricatorCalendarImport $import)
 {
     $viewer = $this->getViewer();
     $engine = id(new PhabricatorCalendarEventSearchEngine())->setViewer($viewer);
     $saved = $engine->newSavedQuery()->setParameter('importSourcePHIDs', array($import->getPHID()));
     $pager = $engine->newPagerForSavedQuery($saved);
     $pager->setPageSize(25);
     $query = $engine->buildQueryFromSavedQuery($saved);
     $results = $engine->executeQuery($query, $pager);
     $view = $engine->renderResults($results, $saved);
     $list = $view->getObjectList();
     $list->setNoDataString(pht('No imported events.'));
     $all_uri = $this->getApplicationURI();
     $all_uri = (string) id(new PhutilURI($all_uri))->setQueryParam('importSourcePHID', $import->getPHID())->setQueryParam('display', 'list');
     $all_button = id(new PHUIButtonView())->setTag('a')->setText(pht('View All'))->setIcon('fa-search')->setHref($all_uri);
     $header = id(new PHUIHeaderView())->setHeader(pht('Imported Events'))->addActionLink($all_button);
     return id(new PHUIObjectBoxView())->setHeader($header)->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)->setObjectList($list);
 }