Page MenuHomePhabricator

D18847.id45213.diff
No OneTemporary

D18847.id45213.diff

diff --git a/src/applications/transactions/editengine/PhabricatorEditEngine.php b/src/applications/transactions/editengine/PhabricatorEditEngine.php
--- a/src/applications/transactions/editengine/PhabricatorEditEngine.php
+++ b/src/applications/transactions/editengine/PhabricatorEditEngine.php
@@ -631,6 +631,17 @@
}
/**
+ * Initialize a new object for object creation via Conduit.
+ *
+ * @return object Newly initialized object.
+ * @param list<wild> Raw transactions.
+ * @task load
+ */
+ protected function newEditableObjectFromConduit(array $raw_xactions) {
+ return $this->newEditableObject();
+ }
+
+ /**
* Initialize a new object for documentation creation.
*
* @return object Newly initialized object.
@@ -2031,6 +2042,8 @@
get_class($this)));
}
+ $raw_xactions = $this->getRawConduitTransactions($request);
+
$identifier = $request->getValue('objectIdentifier');
if ($identifier) {
$this->setIsCreate(false);
@@ -2039,7 +2052,7 @@
$this->requireCreateCapability();
$this->setIsCreate(true);
- $object = $this->newEditableObject();
+ $object = $this->newEditableObjectFromConduit($raw_xactions);
}
$this->validateObject($object);
@@ -2049,7 +2062,11 @@
$types = $this->getConduitEditTypesFromFields($fields);
$template = $object->getApplicationTransactionTemplate();
- $xactions = $this->getConduitTransactions($request, $types, $template);
+ $xactions = $this->getConduitTransactions(
+ $request,
+ $raw_xactions,
+ $types,
+ $template);
$editor = $object->getApplicationTransactionEditor()
->setActor($viewer)
@@ -2078,23 +2095,7 @@
);
}
-
- /**
- * Generate transactions which can be applied from edit actions in a Conduit
- * request.
- *
- * @param ConduitAPIRequest The request.
- * @param list<PhabricatorEditType> Supported edit types.
- * @param PhabricatorApplicationTransaction Template transaction.
- * @return list<PhabricatorApplicationTransaction> Generated transactions.
- * @task conduit
- */
- private function getConduitTransactions(
- ConduitAPIRequest $request,
- array $types,
- PhabricatorApplicationTransaction $template) {
-
- $viewer = $request->getUser();
+ private function getRawConduitTransactions(ConduitAPIRequest $request) {
$transactions_key = 'transactions';
$xactions = $request->getValue($transactions_key);
@@ -2124,7 +2125,33 @@
$transactions_key,
$key));
}
+ }
+
+ return $xactions;
+ }
+
+
+ /**
+ * Generate transactions which can be applied from edit actions in a Conduit
+ * request.
+ *
+ * @param ConduitAPIRequest The request.
+ * @param list<wild> Raw conduit transactions.
+ * @param list<PhabricatorEditType> Supported edit types.
+ * @param PhabricatorApplicationTransaction Template transaction.
+ * @return list<PhabricatorApplicationTransaction> Generated transactions.
+ * @task conduit
+ */
+ private function getConduitTransactions(
+ ConduitAPIRequest $request,
+ array $xactions,
+ array $types,
+ PhabricatorApplicationTransaction $template) {
+ $viewer = $request->getUser();
+ $results = array();
+
+ foreach ($xactions as $key => $xaction) {
$type = $xaction['type'];
if (empty($types[$type])) {
throw new Exception(
@@ -2137,8 +2164,6 @@
}
}
- $results = array();
-
if ($this->getIsCreate()) {
$results[] = id(clone $template)
->setTransactionType(PhabricatorTransactions::TYPE_CREATE);

File Metadata

Mime Type
text/plain
Expires
Mon, Mar 24, 5:25 AM (2 w, 2 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7716852
Default Alt Text
D18847.id45213.diff (3 KB)

Event Timeline