Changeset View
Changeset View
Standalone View
Standalone View
src/applications/transactions/editengine/PhabricatorEditEngine.php
| Show First 20 Lines • Show All 624 Lines • ▼ Show 20 Lines | if ($request->isFormPost()) { | ||||
| continue; | continue; | ||||
| } | } | ||||
| $field->readValueFromSubmit($request); | $field->readValueFromSubmit($request); | ||||
| } | } | ||||
| $xactions = array(); | $xactions = array(); | ||||
| foreach ($fields as $field) { | foreach ($fields as $field) { | ||||
| $xaction = $field->generateTransaction(clone $template); | $types = $field->getWebEditTypes(); | ||||
| foreach ($types as $type) { | |||||
| $type_xactions = $type->generateTransactions( | |||||
| clone $template, | |||||
| array( | |||||
| 'value' => $field->getValueForTransaction(), | |||||
| )); | |||||
| if (!$xaction) { | if (!$type_xactions) { | ||||
| continue; | continue; | ||||
| } | } | ||||
| $xactions[] = $xaction; | foreach ($type_xactions as $type_xaction) { | ||||
| $xactions[] = $type_xaction; | |||||
| } | |||||
| } | |||||
| } | } | ||||
| $editor = $object->getApplicationTransactionEditor() | $editor = $object->getApplicationTransactionEditor() | ||||
| ->setActor($viewer) | ->setActor($viewer) | ||||
| ->setContentSourceFromRequest($request) | ->setContentSourceFromRequest($request) | ||||
| ->setContinueOnNoEffect(true); | ->setContinueOnNoEffect(true); | ||||
| try { | try { | ||||
| ▲ Show 20 Lines • Show All 288 Lines • ▼ Show 20 Lines | if ($identifier) { | ||||
| $this->setIsCreate(true); | $this->setIsCreate(true); | ||||
| $object = $this->newEditableObject(); | $object = $this->newEditableObject(); | ||||
| } | } | ||||
| $this->validateObject($object); | $this->validateObject($object); | ||||
| $fields = $this->buildEditFields($object); | $fields = $this->buildEditFields($object); | ||||
| $types = $this->getAllEditTypesFromFields($fields); | $types = $this->getConduitEditTypesFromFields($fields); | ||||
| $template = $object->getApplicationTransactionTemplate(); | $template = $object->getApplicationTransactionTemplate(); | ||||
| $xactions = $this->getConduitTransactions($request, $types, $template); | $xactions = $this->getConduitTransactions($request, $types, $template); | ||||
| $editor = $object->getApplicationTransactionEditor() | $editor = $object->getApplicationTransactionEditor() | ||||
| ->setActor($viewer) | ->setActor($viewer) | ||||
| ->setContentSourceFromConduitRequest($request) | ->setContentSourceFromConduitRequest($request) | ||||
| ->setContinueOnNoEffect(true); | ->setContinueOnNoEffect(true); | ||||
| ▲ Show 20 Lines • Show All 73 Lines • ▼ Show 20 Lines | foreach ($xactions as $key => $xaction) { | ||||
| implode(', ', array_keys($types)))); | implode(', ', array_keys($types)))); | ||||
| } | } | ||||
| } | } | ||||
| $results = array(); | $results = array(); | ||||
| foreach ($xactions as $xaction) { | foreach ($xactions as $xaction) { | ||||
| $type = $types[$xaction['type']]; | $type = $types[$xaction['type']]; | ||||
| $results[] = $type->generateTransaction( | $type_xactions = $type->generateTransactions( | ||||
| clone $template, | clone $template, | ||||
| $xaction); | $xaction); | ||||
| foreach ($type_xactions as $type_xaction) { | |||||
| $results[] = $type_xaction; | |||||
| } | |||||
| } | } | ||||
| return $results; | return $results; | ||||
| } | } | ||||
| /** | /** | ||||
| * @return map<string, PhabricatorEditType> | * @return map<string, PhabricatorEditType> | ||||
| * @task conduit | * @task conduit | ||||
| */ | */ | ||||
| private function getAllEditTypesFromFields(array $fields) { | private function getConduitEditTypesFromFields(array $fields) { | ||||
| $types = array(); | $types = array(); | ||||
| foreach ($fields as $field) { | foreach ($fields as $field) { | ||||
| $field_types = $field->getEditTransactionTypes(); | $field_types = $field->getConduitEditTypes(); | ||||
| if ($field_types === null) { | if ($field_types === null) { | ||||
| continue; | continue; | ||||
| } | } | ||||
| foreach ($field_types as $field_type) { | foreach ($field_types as $field_type) { | ||||
| $field_type->setField($field); | $field_type->setField($field); | ||||
| $types[$field_type->getEditType()] = $field_type; | $types[$field_type->getEditType()] = $field_type; | ||||
| } | } | ||||
| } | } | ||||
| return $types; | return $types; | ||||
| } | } | ||||
| public function getAllEditTypes() { | public function getConduitEditTypes() { | ||||
| $config = $this->loadEditEngineConfiguration(null); | $config = $this->loadEditEngineConfiguration(null); | ||||
| if (!$config) { | if (!$config) { | ||||
| return array(); | return array(); | ||||
| } | } | ||||
| $object = $this->newEditableObject(); | $object = $this->newEditableObject(); | ||||
| $fields = $this->buildEditFields($object); | $fields = $this->buildEditFields($object); | ||||
| return $this->getAllEditTypesFromFields($fields); | return $this->getConduitEditTypesFromFields($fields); | ||||
| } | } | ||||
| final public static function getAllEditEngines() { | final public static function getAllEditEngines() { | ||||
| return id(new PhutilClassMapQuery()) | return id(new PhutilClassMapQuery()) | ||||
| ->setAncestorClass(__CLASS__) | ->setAncestorClass(__CLASS__) | ||||
| ->setUniqueMethod('getEngineKey') | ->setUniqueMethod('getEngineKey') | ||||
| ->execute(); | ->execute(); | ||||
| } | } | ||||
| Show All 37 Lines | |||||