public function indexFulltextObject($object, PhabricatorSearchAbstractDocument $document) { $query = PhabricatorApplicationTransactionQuery::newQueryForObject($object); if (!$query) { return; } $xactions = $query->setViewer($this->getViewer())->withObjectPHIDs(array($object->getPHID()))->needComments(true)->execute(); foreach ($xactions as $xaction) { if (!$xaction->hasComment()) { continue; } $comment = $xaction->getComment(); $document->addField(PhabricatorSearchDocumentFieldType::FIELD_COMMENT, $comment->getContent()); } }
/** * Load the transactions to be published. */ private function loadTransactions(PhabricatorApplicationTransactionInterface $object) { $data = $this->getTaskData(); $xaction_phids = idx($data, 'xactionPHIDs'); if (!$xaction_phids) { throw new PhabricatorWorkerPermanentFailureException(pht('Task has no transaction PHIDs!')); } $viewer = PhabricatorUser::getOmnipotentUser(); $query = PhabricatorApplicationTransactionQuery::newQueryForObject($object); if (!$query) { throw new PhabricatorWorkerPermanentFailureException(pht('Unable to load query for transaction object "%s"!', $object->getPHID())); } $xactions = $query->setViewer($viewer)->withPHIDs($xaction_phids)->needComments(true)->execute(); $xactions = mpull($xactions, null, 'getPHID'); $missing = array_diff($xaction_phids, array_keys($xactions)); if ($missing) { throw new PhabricatorWorkerPermanentFailureException(pht('Unable to load transactions: %s.', implode(', ', $missing))); } return array_select_keys($xactions, $xaction_phids); }
public function handleRequest(AphrontRequest $request) { $viewer = $this->getViewer(); $object = id(new PhabricatorObjectQuery())->withPHIDs(array($request->getURIData('phid')))->setViewer($viewer)->executeOne(); if (!$object) { return new Aphront404Response(); } if (!$object instanceof PhabricatorApplicationTransactionInterface) { return new Aphront404Response(); } $query = PhabricatorApplicationTransactionQuery::newQueryForObject($object); if (!$query) { return new Aphront404Response(); } $timeline = $this->buildTransactionTimeline($object, $query); $phui_timeline = $timeline->buildPHUITimelineView($with_hiding = false); $phui_timeline->setShouldAddSpacers(false); $events = $phui_timeline->buildEvents(); return id(new AphrontAjaxResponse())->setContent(array('timeline' => hsprintf('%s', $events))); }
/** * Load the transactions to be published. */ private function loadTransactions(PhabricatorApplicationTransactionInterface $object) { $data = $this->getTaskData(); $xaction_phids = idx($data, 'xactionPHIDs'); if (!$xaction_phids) { // It's okay if we don't have any transactions. This can happen when // creating objects or performing no-op updates. We will still apply // meaningful side effects like updating search engine indexes. return array(); } $viewer = PhabricatorUser::getOmnipotentUser(); $query = PhabricatorApplicationTransactionQuery::newQueryForObject($object); if (!$query) { throw new PhabricatorWorkerPermanentFailureException(pht('Unable to load query for transaction object "%s"!', $object->getPHID())); } $xactions = $query->setViewer($viewer)->withPHIDs($xaction_phids)->needComments(true)->execute(); $xactions = mpull($xactions, null, 'getPHID'); $missing = array_diff($xaction_phids, array_keys($xactions)); if ($missing) { throw new PhabricatorWorkerPermanentFailureException(pht('Unable to load transactions: %s.', implode(', ', $missing))); } return array_select_keys($xactions, $xaction_phids); }