1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-29 02:02:41 +01:00

Flatten "RemarkupValue" objects when setting field defaults for custom forms

Summary:
Ref T13685. "RemarkupEditField" uses a "RemarkupValue" internally, and it currently attempts to serialize into the database unsuccessfully.

Instead, flatten the value before returning it for storage.

Test Plan:
  - Edited the default description of a task in a custom form.

Maniphest Tasks: T13685

Differential Revision: https://secure.phabricator.com/D21854
This commit is contained in:
epriestley 2022-06-14 09:29:55 -07:00
parent 1fc04e238f
commit 9426765a2c
2 changed files with 27 additions and 1 deletions

View file

@ -29,6 +29,32 @@ final class PhabricatorRemarkupEditField
return $value;
}
public function getValueForDefaults() {
$value = parent::getValueForDefaults();
if ($value instanceof RemarkupValue) {
$value = $value->getCorpus();
}
return $value;
}
protected function getDefaultValueFromConfiguration($value) {
// See T13685. After changes to file attachment handling, the database
// was briefly poisoned with "array()" values as defaults.
try {
$value = phutil_string_cast($value);
} catch (Exception $ex) {
$value = '';
} catch (Throwable $ex) {
$value = '';
}
return $value;
}
public function getMetadata() {
$defaults = array();

View file

@ -73,7 +73,7 @@ class AphrontFormTextAreaControl extends AphrontFormControl {
// NOTE: This needs to be string cast, because if we pass `null` the
// tag will be self-closed and some browsers aren't thrilled about that.
$value = (string)$this->getValue();
$value = phutil_string_cast($this->getValue());
// NOTE: We also need to prefix the string with a newline, because browsers
// ignore a newline immediately after a <textarea> tag, so they'll eat