Merge branch '3.0'
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / lib / system / option / TextareaOptionType.class.php
CommitLineData
158bd3ca
TD
1<?php
2namespace wcf\system\option;
3use wcf\data\option\Option;
158bd3ca 4use wcf\system\WCF;
d25c50f4 5use 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 15class 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}