Commit | Line | Data |
---|---|---|
0d6ea23f | 1 | <?php |
a9229942 | 2 | |
0d6ea23f | 3 | namespace wcf\system\clipboard; |
a9229942 | 4 | |
6286572b | 5 | use wcf\system\exception\SystemException; |
0d6ea23f AE |
6 | |
7 | /** | |
8 | * Represents a clipboard item for inline editing. | |
a9229942 TD |
9 | * |
10 | * @author Alexander Ebert | |
11 | * @copyright 2001-2019 WoltLab GmbH | |
12 | * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php> | |
0d6ea23f | 13 | */ |
a9229942 TD |
14 | final class ClipboardEditorItem |
15 | { | |
16 | /** | |
17 | * internal data | |
18 | * @var array | |
19 | */ | |
20 | protected $internalData = []; | |
21 | ||
22 | /** | |
23 | * item name | |
24 | * @var string | |
25 | */ | |
26 | protected $name = ''; | |
27 | ||
28 | /** | |
29 | * list of parameters passed to ClipboardProxyAction | |
30 | * @var array | |
31 | */ | |
32 | protected $parameters = []; | |
33 | ||
34 | /** | |
35 | * redirect url | |
36 | * @var string | |
37 | */ | |
38 | protected $url = ''; | |
39 | ||
40 | /** | |
41 | * Returns internal data. | |
42 | * | |
43 | * @return array | |
44 | */ | |
45 | public function getInternalData() | |
46 | { | |
47 | return $this->internalData; | |
48 | } | |
49 | ||
50 | /** | |
51 | * Returns item name. | |
52 | * | |
53 | * @return string | |
54 | */ | |
55 | public function getName() | |
56 | { | |
57 | return $this->name; | |
58 | } | |
59 | ||
60 | /** | |
61 | * Returns parameters passed to ClipboardProxyAction. | |
62 | * | |
63 | * @return array | |
64 | */ | |
65 | public function getParameters() | |
66 | { | |
67 | return $this->parameters; | |
68 | } | |
69 | ||
70 | /** | |
71 | * Returns redirect url. | |
72 | * | |
73 | * @return string | |
74 | */ | |
75 | public function getURL() | |
76 | { | |
77 | return $this->url; | |
78 | } | |
79 | ||
80 | /** | |
81 | * Adds internal data, values will be left untouched by clipboard API. | |
82 | * | |
83 | * @param string $name | |
84 | * @param mixed $value | |
85 | * @throws SystemException | |
86 | */ | |
87 | public function addInternalData($name, $value) | |
88 | { | |
89 | if (!\preg_match('~^[a-zA-Z]+$~', $name)) { | |
90 | throw new SystemException("internal data name '" . $name . "' is invalid"); | |
91 | } | |
92 | ||
93 | if (\in_array($name, $this->internalData)) { | |
94 | throw new SystemException("internal data name '" . $name . "' is not unique"); | |
95 | } | |
96 | ||
97 | $this->internalData[$name] = $value; | |
98 | } | |
99 | ||
100 | /** | |
101 | * Adds an parameter passed to ClipboardProxyAction. | |
102 | * | |
103 | * @param string $name | |
104 | * @param mixed $value | |
105 | * @throws SystemException | |
106 | */ | |
107 | public function addParameter($name, $value) | |
108 | { | |
109 | if (!\preg_match('~^[a-zA-Z]+$~', $name)) { | |
110 | throw new SystemException("parameter name '" . $name . "' is invalid"); | |
111 | } | |
112 | ||
113 | if (\in_array($name, $this->parameters)) { | |
114 | throw new SystemException("parameter name '" . $name . "' is not unique"); | |
115 | } | |
116 | ||
117 | $this->parameters[$name] = $value; | |
118 | } | |
119 | ||
120 | /** | |
121 | * Sets item name. | |
122 | * | |
123 | * @param string $name | |
124 | * @throws SystemException | |
125 | */ | |
126 | public function setName($name) | |
127 | { | |
128 | if (!\preg_match('~^[a-zA-Z0-9\.-]+$~', $name)) { | |
129 | throw new SystemException("item name '" . $name . "' is invalid"); | |
130 | } | |
131 | ||
132 | $this->name = $name; | |
133 | } | |
134 | ||
135 | /** | |
136 | * Sets redirect url, session id will be appended. | |
137 | * | |
138 | * @param string $url | |
139 | */ | |
140 | public function setURL($url) | |
141 | { | |
142 | $this->url = $url; | |
143 | } | |
144 | ||
145 | /** | |
146 | * Returns number of affected items. | |
147 | * | |
148 | * @return int | |
149 | */ | |
150 | public function getCount() | |
151 | { | |
152 | if (isset($this->parameters['objectIDs'])) { | |
153 | return \count($this->parameters['objectIDs']); | |
154 | } | |
155 | ||
156 | return 0; | |
157 | } | |
0d6ea23f | 158 | } |