1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<?php
/**
* Form Element Multiline Data Model
*
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Customer\Model\Metadata\Form;
class Multiline extends Text
{
/**
* {@inheritdoc}
*/
public function extractValue(\Magento\Framework\App\RequestInterface $request)
{
$value = $this->_getRequestValue($request);
if (!is_array($value)) {
$value = false;
} else {
$value = array_map([$this, '_applyInputFilter'], $value);
}
return $value;
}
/**
* {@inheritdoc}
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
*/
public function validateValue($value)
{
$errors = [];
$attribute = $this->getAttribute();
if ($value === false) {
// try to load original value and validate it
$value = $this->_value;
if (!is_array($value)) {
$value = explode("\n", $value);
}
}
if (!is_array($value)) {
$value = [$value];
}
for ($i = 0; $i < $attribute->getMultilineCount(); $i++) {
if (!isset($value[$i])) {
$value[$i] = null;
}
// validate first line
if ($i == 0) {
$result = parent::validateValue($value[$i]);
if ($result !== true) {
$errors = $result;
}
} else {
if (!empty($value[$i])) {
$result = parent::validateValue($value[$i]);
if ($result !== true) {
$errors = array_merge($errors, $result);
}
}
}
}
if (count($errors) == 0) {
return true;
}
return $errors;
}
/**
* {@inheritdoc}
*/
public function compactValue($value)
{
if (!is_array($value)) {
$value = [$value];
}
return parent::compactValue($value);
}
/**
* {@inheritdoc}
*/
public function restoreValue($value)
{
return $this->compactValue($value);
}
/**
* {@inheritdoc}
*/
public function outputValue($format = \Magento\Customer\Model\Metadata\ElementFactory::OUTPUT_FORMAT_TEXT)
{
$values = $this->_value;
if (!is_array($values)) {
$values = explode("\n", $values);
}
$values = array_map([$this, '_applyOutputFilter'], $values);
switch ($format) {
case \Magento\Customer\Model\Metadata\ElementFactory::OUTPUT_FORMAT_ARRAY:
$output = $values;
break;
case \Magento\Customer\Model\Metadata\ElementFactory::OUTPUT_FORMAT_HTML:
$output = implode("<br />", $values);
break;
case \Magento\Customer\Model\Metadata\ElementFactory::OUTPUT_FORMAT_ONELINE:
$output = implode(" ", $values);
break;
default:
$output = implode("\n", $values);
break;
}
return $output;
}
}