1
0
mirror of https://github.com/processwire/processwire.git synced 2025-08-15 03:05:26 +02:00

Fix issue processwire/processwire-issues#492 where FieldtypeTextareaLanguage fields on multi-language install with only default language present could get caught in a loop during load of field

This commit is contained in:
Ryan Cramer
2018-02-12 09:12:43 -05:00
parent 1f6ae656dc
commit ef6a9d56e4

View File

@@ -24,6 +24,11 @@ class FieldtypeTextareaLanguage extends FieldtypeTextarea implements FieldtypeLa
/**
* Sanitize value for storage
*
* @param Page $page
* @param Field $field
* @param LanguagesPageFieldValue|string|array $value
* @return LanguagesPageFieldValue
*
*/
public function sanitizeValue(Page $page, Field $field, $value) {
@@ -33,9 +38,9 @@ class FieldtypeTextareaLanguage extends FieldtypeTextarea implements FieldtypeLa
// convert it to a LanguagesPageFieldValue
if(is_array($value)) $value = reset($value);
$str = (string) $value;
$value = $page->getUnformatted($field->name);
if(is_string($value) || is_array($value)) {
$value = new LanguagesPageFieldValue($page, $field, $value); // #98
$value = $page->data($field->name);
if(!is_object($value)) { // string, array or null
$value = new LanguagesPageFieldValue($page, $field, $value);
}
$value->setLanguageValue($this->wire('user')->language->id, $str);
}
@@ -44,6 +49,9 @@ class FieldtypeTextareaLanguage extends FieldtypeTextarea implements FieldtypeLa
/**
* Return the database schema in specified format
*
* @param Field $field
* @return array
*
*/
public function getDatabaseSchema(Field $field) {
@@ -59,6 +67,11 @@ class FieldtypeTextareaLanguage extends FieldtypeTextarea implements FieldtypeLa
/**
* Format value for output, basically typcasting to a string and sending to textformatters from FieldtypeTextarea
*
* @param Page $page
* @param Field $field
* @param string|LanguagesPageFieldValue $value
* @return string
*
*/
public function formatValue(Page $page, Field $field, $value) {