PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 2.11.1
GiveWP – Donation Plugin and Fundraising Platform v2.11.1
4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 All 253 releases
give / vendor / fakerphp / faker / src / Faker / Provider / HtmlLorem.php
HtmlLorem.php
277 lines 9.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Faker\Provider;
4
5 use Faker\Generator;
6 use Faker\UniqueGenerator;
7
8 class HtmlLorem extends Base
9 {
10
11 const HTML_TAG = "html";
12 const HEAD_TAG = "head";
13 const BODY_TAG = "body";
14 const DIV_TAG = "div";
15 const P_TAG = "p";
16 const A_TAG = "a";
17 const SPAN_TAG = "span";
18 const TABLE_TAG = "table";
19 const THEAD_TAG = "thead";
20 const TBODY_TAG = "tbody";
21 const TR_TAG = "tr";
22 const TD_TAG = "td";
23 const TH_TAG = "th";
24 const UL_TAG = "ul";
25 const LI_TAG = "li";
26 const H_TAG = "h";
27 const B_TAG = "b";
28 const I_TAG = "i";
29 const TITLE_TAG = "title";
30 const FORM_TAG = "form";
31 const INPUT_TAG = "input";
32 const LABEL_TAG = "label";
33
34 private $idGenerator;
35
36 public function __construct(Generator $generator)
37 {
38 parent::__construct($generator);
39 $generator->addProvider(new Lorem($generator));
40 $generator->addProvider(new Internet($generator));
41 }
42
43 /**
44 * @param integer $maxDepth
45 * @param integer $maxWidth
46 *
47 * @return string
48 */
49 public function randomHtml($maxDepth = 4, $maxWidth = 4)
50 {
51 $document = new \DOMDocument();
52 $this->idGenerator = new UniqueGenerator($this->generator);
53
54 $head = $document->createElement("head");
55 $this->addRandomTitle($head);
56
57 $body = $document->createElement("body");
58 $this->addLoginForm($body);
59 $this->addRandomSubTree($body, $maxDepth, $maxWidth);
60
61 $html = $document->createElement("html");
62 $html->appendChild($head);
63 $html->appendChild($body);
64
65 $document->appendChild($html);
66 return $document->saveHTML();
67 }
68
69 private function addRandomSubTree(\DOMElement $root, $maxDepth, $maxWidth)
70 {
71 $maxDepth--;
72 if ($maxDepth <= 0) {
73 return $root;
74 }
75
76 $siblings = mt_rand(1, $maxWidth);
77 for ($i = 0; $i < $siblings; $i++) {
78 if ($maxDepth == 1) {
79 $this->addRandomLeaf($root);
80 } else {
81 $sibling = $root->ownerDocument->createElement("div");
82 $root->appendChild($sibling);
83 $this->addRandomAttribute($sibling);
84 $this->addRandomSubTree($sibling, mt_rand(0, $maxDepth), $maxWidth);
85 }
86 }
87 return $root;
88 }
89
90 private function addRandomLeaf(\DOMElement $node)
91 {
92 $rand = mt_rand(1, 10);
93 switch ($rand) {
94 case 1:
95 $this->addRandomP($node);
96 break;
97 case 2:
98 $this->addRandomA($node);
99 break;
100 case 3:
101 $this->addRandomSpan($node);
102 break;
103 case 4:
104 $this->addRandomUL($node);
105 break;
106 case 5:
107 $this->addRandomH($node);
108 break;
109 case 6:
110 $this->addRandomB($node);
111 break;
112 case 7:
113 $this->addRandomI($node);
114 break;
115 case 8:
116 $this->addRandomTable($node);
117 break;
118 default:
119 $this->addRandomText($node);
120 break;
121 }
122 }
123
124 private function addRandomAttribute(\DOMElement $node)
125 {
126 $rand = mt_rand(1, 2);
127 switch ($rand) {
128 case 1:
129 $node->setAttribute("class", $this->generator->word);
130 break;
131 case 2:
132 $node->setAttribute("id", (string)$this->idGenerator->randomNumber(5));
133 break;
134 }
135 }
136
137 private function addRandomP(\DOMElement $element, $maxLength = 10)
138 {
139
140 $node = $element->ownerDocument->createElement(static::P_TAG);
141 $node->textContent = $this->generator->sentence(mt_rand(1, $maxLength));
142 $element->appendChild($node);
143 }
144
145 private function addRandomText(\DOMElement $element, $maxLength = 10)
146 {
147 $text = $element->ownerDocument->createTextNode($this->generator->sentence(mt_rand(1, $maxLength)));
148 $element->appendChild($text);
149 }
150
151 private function addRandomA(\DOMElement $element, $maxLength = 10)
152 {
153 $text = $element->ownerDocument->createTextNode($this->generator->sentence(mt_rand(1, $maxLength)));
154 $node = $element->ownerDocument->createElement(static::A_TAG);
155 $node->setAttribute("href", $this->generator->safeEmailDomain);
156 $node->appendChild($text);
157 $element->appendChild($node);
158 }
159
160 private function addRandomTitle(\DOMElement $element, $maxLength = 10)
161 {
162 $text = $element->ownerDocument->createTextNode($this->generator->sentence(mt_rand(1, $maxLength)));
163 $node = $element->ownerDocument->createElement(static::TITLE_TAG);
164 $node->appendChild($text);
165 $element->appendChild($node);
166 }
167
168 private function addRandomH(\DOMElement $element, $maxLength = 10)
169 {
170 $h = static::H_TAG . (string)mt_rand(1, 3);
171 $text = $element->ownerDocument->createTextNode($this->generator->sentence(mt_rand(1, $maxLength)));
172 $node = $element->ownerDocument->createElement($h);
173 $node->appendChild($text);
174 $element->appendChild($node);
175 }
176
177 private function addRandomB(\DOMElement $element, $maxLength = 10)
178 {
179 $text = $element->ownerDocument->createTextNode($this->generator->sentence(mt_rand(1, $maxLength)));
180 $node = $element->ownerDocument->createElement(static::B_TAG);
181 $node->appendChild($text);
182 $element->appendChild($node);
183 }
184
185 private function addRandomI(\DOMElement $element, $maxLength = 10)
186 {
187 $text = $element->ownerDocument->createTextNode($this->generator->sentence(mt_rand(1, $maxLength)));
188 $node = $element->ownerDocument->createElement(static::I_TAG);
189 $node->appendChild($text);
190 $element->appendChild($node);
191 }
192
193 private function addRandomSpan(\DOMElement $element, $maxLength = 10)
194 {
195 $text = $element->ownerDocument->createTextNode($this->generator->sentence(mt_rand(1, $maxLength)));
196 $node = $element->ownerDocument->createElement(static::SPAN_TAG);
197 $node->appendChild($text);
198 $element->appendChild($node);
199 }
200
201 private function addLoginForm(\DOMElement $element)
202 {
203
204 $textInput = $element->ownerDocument->createElement(static::INPUT_TAG);
205 $textInput->setAttribute("type", "text");
206 $textInput->setAttribute("id", "username");
207
208 $textLabel = $element->ownerDocument->createElement(static::LABEL_TAG);
209 $textLabel->setAttribute("for", "username");
210 $textLabel->textContent = $this->generator->word;
211
212 $passwordInput = $element->ownerDocument->createElement(static::INPUT_TAG);
213 $passwordInput->setAttribute("type", "password");
214 $passwordInput->setAttribute("id", "password");
215
216 $passwordLabel = $element->ownerDocument->createElement(static::LABEL_TAG);
217 $passwordLabel->setAttribute("for", "password");
218 $passwordLabel->textContent = $this->generator->word;
219
220 $submit = $element->ownerDocument->createElement(static::INPUT_TAG);
221 $submit->setAttribute("type", "submit");
222 $submit->setAttribute("value", $this->generator->word);
223
224 $submit = $element->ownerDocument->createElement(static::FORM_TAG);
225 $submit->setAttribute("action", $this->generator->safeEmailDomain);
226 $submit->setAttribute("method", "POST");
227 $submit->appendChild($textLabel);
228 $submit->appendChild($textInput);
229 $submit->appendChild($passwordLabel);
230 $submit->appendChild($passwordInput);
231 $element->appendChild($submit);
232 }
233
234 private function addRandomTable(\DOMElement $element, $maxRows = 10, $maxCols = 6, $maxTitle = 4, $maxLength = 10)
235 {
236 $rows = mt_rand(1, $maxRows);
237 $cols = mt_rand(1, $maxCols);
238
239 $table = $element->ownerDocument->createElement(static::TABLE_TAG);
240 $thead = $element->ownerDocument->createElement(static::THEAD_TAG);
241 $tbody = $element->ownerDocument->createElement(static::TBODY_TAG);
242
243 $table->appendChild($thead);
244 $table->appendChild($tbody);
245
246 $tr = $element->ownerDocument->createElement(static::TR_TAG);
247 $thead->appendChild($tr);
248 for ($i = 0; $i < $cols; $i++) {
249 $th = $element->ownerDocument->createElement(static::TH_TAG);
250 $th->textContent = $this->generator->sentence(mt_rand(1, $maxTitle));
251 $tr->appendChild($th);
252 }
253 for ($i = 0; $i < $rows; $i++) {
254 $tr = $element->ownerDocument->createElement(static::TR_TAG);
255 $tbody->appendChild($tr);
256 for ($j = 0; $j < $cols; $j++) {
257 $th = $element->ownerDocument->createElement(static::TD_TAG);
258 $th->textContent = $this->generator->sentence(mt_rand(1, $maxLength));
259 $tr->appendChild($th);
260 }
261 }
262 $element->appendChild($table);
263 }
264
265 private function addRandomUL(\DOMElement $element, $maxItems = 11, $maxLength = 4)
266 {
267 $num = mt_rand(1, $maxItems);
268 $ul = $element->ownerDocument->createElement(static::UL_TAG);
269 for ($i = 0; $i < $num; $i++) {
270 $li = $element->ownerDocument->createElement(static::LI_TAG);
271 $li->textContent = $this->generator->sentence(mt_rand(1, $maxLength));
272 $ul->appendChild($li);
273 }
274 $element->appendChild($ul);
275 }
276 }
277