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); }
protected function buildTransactionTimeline(PhabricatorApplicationTransactionInterface $object, PhabricatorApplicationTransactionQuery $query, PhabricatorMarkupEngine $engine = null, $render_data = array()) { $viewer = $this->getRequest()->getUser(); $xaction = $object->getApplicationTransactionTemplate(); $view = $xaction->getApplicationTransactionViewObject(); $pager = id(new AphrontCursorPagerView())->readFromRequest($this->getRequest())->setURI(new PhutilURI('/transactions/showolder/' . $object->getPHID() . '/')); $xactions = $query->setViewer($viewer)->withObjectPHIDs(array($object->getPHID()))->needComments(true)->executeWithCursorPager($pager); $xactions = array_reverse($xactions); if ($engine) { foreach ($xactions as $xaction) { if ($xaction->getComment()) { $engine->addObject($xaction->getComment(), PhabricatorApplicationTransactionComment::MARKUP_FIELD_COMMENT); } } $engine->process(); $view->setMarkupEngine($engine); } $timeline = $view->setUser($viewer)->setObjectPHID($object->getPHID())->setTransactions($xactions)->setPager($pager)->setRenderData($render_data)->setQuoteTargetID($this->getRequest()->getStr('quoteTargetID'))->setQuoteRef($this->getRequest()->getStr('quoteRef')); $object->willRenderTimeline($timeline, $this->getRequest()); return $timeline; }