protected function execute(ConduitAPIRequest $request) { $source_phid = $request->getValue('sourcePHID'); $owner_phid = $request->getValue('ownerPHID'); $requestor_phid = $request->getValue('requestorPHID'); $user = $request->getUser(); $item = NuanceItem::initializeNewItem(); $xactions = array(); if ($source_phid) { $xactions[] = id(new NuanceItemTransaction())->setTransactionType(NuanceItemTransaction::TYPE_SOURCE)->setNewValue($source_phid); } else { throw new ConduitException('ERR-NO-SOURCE-PHID'); } if ($owner_phid) { $xactions[] = id(new NuanceItemTransaction())->setTransactionType(NuanceItemTransaction::TYPE_OWNER)->setNewValue($owner_phid); } if ($requestor_phid) { $xactions[] = id(new NuanceItemTransaction())->setTransactionType(NuanceItemTransaction::TYPE_REQUESTOR)->setNewValue($requestor_phid); } else { throw new ConduitException('ERR-NO-REQUESTOR-PHID'); } $source = PhabricatorContentSource::newFromConduitRequest($request); $editor = id(new NuanceItemEditor())->setActor($user)->setContentSource($source)->applyTransactions($item, $xactions); return $item->toDictionary(); }
protected function newNuanceItemFromGitHubRecord(array $record) { $source = $this->getSource(); $id = $record['id']; $item_key = "github.issueevent.{$id}"; $container_key = null; return NuanceItem::initializeNewItem()->setStatus(NuanceItem::STATUS_IMPORTING)->setSourcePHID($source->getPHID())->setItemType(NuanceGitHubEventItemType::ITEMTYPE)->setItemKey($item_key)->setItemContainerKey($container_key)->setItemProperty('api.type', 'issue')->setItemProperty('api.raw', $record); }
protected function newItemFromProperties(NuanceRequestor $requestor, array $properties, PhabricatorContentSource $content_source) { // TODO: Should we have a tighter actor/viewer model? Requestors will // often have no real user associated with them... $actor = PhabricatorUser::getOmnipotentUser(); $source = $this->requireSourceObject(); $item = NuanceItem::initializeNewItem(); $xactions = array(); $xactions[] = id(new NuanceItemTransaction())->setTransactionType(NuanceItemTransaction::TYPE_SOURCE)->setNewValue($source->getPHID()); $xactions[] = id(new NuanceItemTransaction())->setTransactionType(NuanceItemTransaction::TYPE_REQUESTOR)->setNewValue($requestor->getPHID()); foreach ($properties as $key => $property) { $xactions[] = id(new NuanceItemTransaction())->setTransactionType(NuanceItemTransaction::TYPE_PROPERTY)->setMetadataValue(NuanceItemTransaction::PROPERTY_KEY, $key)->setNewValue($property); } $editor = id(new NuanceItemEditor())->setActor($actor)->setActingAsPHID($requestor->getActingAsPHID())->setContentSource($content_source); $editor->applyTransactions($item, $xactions); return $item; }
protected function newItemFromProperties(array $properties, PhabricatorContentSource $content_source) { // TODO: Should we have a tighter actor/viewer model? Requestors will // often have no real user associated with them... $actor = PhabricatorUser::getOmnipotentUser(); $source = $this->getSource(); $item = NuanceItem::initializeNewItem(); $xactions = array(); $xactions[] = id(new NuanceItemTransaction())->setTransactionType(NuanceItemTransaction::TYPE_SOURCE)->setNewValue($source->getPHID()); // TODO: Eventually, apply real routing rules. For now, just put everything // in the default queue for the source. $xactions[] = id(new NuanceItemTransaction())->setTransactionType(NuanceItemTransaction::TYPE_QUEUE)->setNewValue($source->getDefaultQueuePHID()); foreach ($properties as $key => $property) { $xactions[] = id(new NuanceItemTransaction())->setTransactionType(NuanceItemTransaction::TYPE_PROPERTY)->setMetadataValue(NuanceItemTransaction::PROPERTY_KEY, $key)->setNewValue($property); } $editor = id(new NuanceItemEditor())->setActor($actor)->setContentSource($content_source); $editor->applyTransactions($item, $xactions); return $item; }