Commit | Line | Data |
---|---|---|
158bd3ca TD |
1 | <?php |
2 | namespace wcf\system\option; | |
3 | use wcf\data\option\Option; | |
158bd3ca | 4 | use wcf\system\WCF; |
d25c50f4 | 5 | use wcf\util\StringUtil; |
158bd3ca TD |
6 | |
7 | /** | |
a17de04e | 8 | * Option type implementation for textareas. |
9f959ced | 9 | * |
158bd3ca | 10 | * @author Marcel Werk |
c839bd49 | 11 | * @copyright 2001-2018 WoltLab GmbH |
158bd3ca | 12 | * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php> |
e71525e4 | 13 | * @package WoltLabSuite\Core\System\Option |
158bd3ca | 14 | */ |
245b5797 | 15 | class TextareaOptionType extends TextOptionType { |
158bd3ca | 16 | /** |
0fcfe5f6 | 17 | * @inheritDoc |
158bd3ca TD |
18 | */ |
19 | public function getFormElement(Option $option, $value) { | |
058cbd6a | 20 | WCF::getTPL()->assign([ |
158bd3ca TD |
21 | 'option' => $option, |
22 | 'value' => $value | |
058cbd6a | 23 | ]); |
79d5661c | 24 | return WCF::getTPL()->fetch('textareaOptionType'); |
158bd3ca | 25 | } |
d25c50f4 | 26 | |
8a2cc4b0 | 27 | /** |
0fcfe5f6 | 28 | * @inheritDoc |
8a2cc4b0 MS |
29 | */ |
30 | public function getSearchFormElement(Option $option, $value) { | |
058cbd6a | 31 | WCF::getTPL()->assign([ |
8a2cc4b0 | 32 | 'option' => $option, |
36868b30 | 33 | 'searchOption' => $value !== null && ($value !== $option->defaultValue || isset($_POST['searchOptions'][$option->optionName])), |
8a2cc4b0 | 34 | 'value' => $value |
058cbd6a | 35 | ]); |
8a2cc4b0 MS |
36 | return WCF::getTPL()->fetch('textareaSearchableOptionType'); |
37 | } | |
38 | ||
d25c50f4 | 39 | /** |
0fcfe5f6 | 40 | * @inheritDoc |
d25c50f4 MW |
41 | */ |
42 | public function getData(Option $option, $newValue) { | |
2dd14c7c AE |
43 | $newValue = StringUtil::unifyNewlines(parent::getData($option, $newValue)); |
44 | ||
45 | // check for wildcard | |
46 | if ($option->wildcard) { | |
47 | $values = explode("\n", $newValue); | |
48 | if (in_array($option->wildcard, $values)) { | |
49 | $newValue = $option->wildcard; | |
50 | } | |
51 | } | |
52 | ||
53 | return $newValue; | |
d25c50f4 | 54 | } |
b564bf81 AE |
55 | |
56 | /** | |
0fcfe5f6 | 57 | * @inheritDoc |
b564bf81 AE |
58 | */ |
59 | public function compare($value1, $value2) { | |
60 | $value1 = explode("\n", StringUtil::unifyNewlines($value1)); | |
61 | $value2 = explode("\n", StringUtil::unifyNewlines($value2)); | |
62 | ||
63 | // check if value1 contains more elements than value2 | |
64 | $diff = array_diff($value1, $value2); | |
65 | if (!empty($diff)) { | |
66 | return 1; | |
67 | } | |
68 | ||
69 | // check if value1 contains less elements than value2 | |
70 | $diff = array_diff($value2, $value1); | |
71 | if (!empty($diff)) { | |
72 | return -1; | |
73 | } | |
74 | ||
75 | // both lists are equal | |
76 | return 0; | |
77 | } | |
dcb3a44c | 78 | } |