Differential D17067 Diff 41083 src/applications/differential/conduit/DifferentialGetCommitMessageConduitAPIMethod.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/differential/conduit/DifferentialGetCommitMessageConduitAPIMethod.php
| Show First 20 Lines • Show All 43 Lines • ▼ Show 20 Lines | if ($id) { | ||||
| ->executeOne(); | ->executeOne(); | ||||
| if (!$revision) { | if (!$revision) { | ||||
| throw new ConduitException('ERR_NOT_FOUND'); | throw new ConduitException('ERR_NOT_FOUND'); | ||||
| } | } | ||||
| } else { | } else { | ||||
| $revision = DifferentialRevision::initializeNewRevision($viewer); | $revision = DifferentialRevision::initializeNewRevision($viewer); | ||||
| } | } | ||||
| // There are three modes here: "edit", "create", and "read" (which has | |||||
| // no value for the "edit" parameter). | |||||
| // In edit or create mode, we hide read-only fields. In create mode, we | |||||
| // show "Field:" templates for some fields even if they are empty. | |||||
| $edit_mode = $request->getValue('edit'); | $edit_mode = $request->getValue('edit'); | ||||
| $is_any_edit = (bool)strlen($edit_mode); | |||||
| $is_create = ($edit_mode == 'create'); | $is_create = ($edit_mode == 'create'); | ||||
| $is_edit = ($edit_mode && !$is_create); | |||||
| $field_list = DifferentialCommitMessageField::newEnabledFields($viewer); | $field_list = DifferentialCommitMessageField::newEnabledFields($viewer); | ||||
| $custom_storage = $this->loadCustomFieldStorage($viewer, $revision); | $custom_storage = $this->loadCustomFieldStorage($viewer, $revision); | ||||
| foreach ($field_list as $field) { | foreach ($field_list as $field) { | ||||
| $field->setCustomFieldStorage($custom_storage); | $field->setCustomFieldStorage($custom_storage); | ||||
| } | } | ||||
| // If we're editing the message, remove fields like "Conflicts" and | // If we're editing the message, remove fields like "Conflicts" and | ||||
| // "git-svn-id" which should not be presented to the user for editing. | // "git-svn-id" which should not be presented to the user for editing. | ||||
| if ($is_edit) { | if ($is_any_edit) { | ||||
| foreach ($field_list as $field_key => $field) { | foreach ($field_list as $field_key => $field) { | ||||
| if (!$field->isFieldEditable()) { | if (!$field->isFieldEditable()) { | ||||
| unset($field_list[$field_key]); | unset($field_list[$field_key]); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| $overrides = $request->getValue('fields', array()); | $overrides = $request->getValue('fields', array()); | ||||
| Show All 17 Lines | protected function execute(ConduitAPIRequest $request) { | ||||
| $key_title = DifferentialTitleCommitMessageField::FIELDKEY; | $key_title = DifferentialTitleCommitMessageField::FIELDKEY; | ||||
| $commit_message = array(); | $commit_message = array(); | ||||
| foreach ($field_list as $field_key => $field) { | foreach ($field_list as $field_key => $field) { | ||||
| $label = $field->getFieldName(); | $label = $field->getFieldName(); | ||||
| $wire_value = $value_map[$field_key]; | $wire_value = $value_map[$field_key]; | ||||
| $value = $field->renderFieldValue($wire_value); | $value = $field->renderFieldValue($wire_value); | ||||
| $is_template = ($is_edit && $field->isTemplateField()); | $is_template = ($is_create && $field->isTemplateField()); | ||||
| if (!is_string($value) && !is_null($value)) { | if (!is_string($value) && !is_null($value)) { | ||||
| throw new Exception( | throw new Exception( | ||||
| pht( | pht( | ||||
| 'Commit message field "%s" was expected to render a string or '. | 'Commit message field "%s" was expected to render a string or '. | ||||
| 'null value, but rendered a "%s" instead.', | 'null value, but rendered a "%s" instead.', | ||||
| $field->getFieldKey(), | $field->getFieldKey(), | ||||
| gettype($value))); | gettype($value))); | ||||
| ▲ Show 20 Lines • Show All 53 Lines • Show Last 20 Lines | |||||