Deployed 59ff7f1 to 5.4 with MkDocs 1.1.2 and mike 0.5.5
[GitHub/WoltLab/woltlab.github.io.git] / 5.4 / php / pages / index.html
1
2 <!doctype html>
3 <html lang="en" class="no-js">
4 <head>
5
6 <meta charset="utf-8">
7 <meta name="viewport" content="width=device-width,initial-scale=1">
8
9
10
11
12 <link rel="icon" href="../../assets/default.favicon.ico">
13 <meta name="generator" content="mkdocs-1.1.2, mkdocs-material-7.1.0">
14
15
16
17 <title>Pages - WoltLab Suite Documentation</title>
18
19
20
21 <link rel="stylesheet" href="../../assets/stylesheets/main.33e2939f.min.css">
22
23
24 <link rel="stylesheet" href="../../assets/stylesheets/palette.ef6f36e2.min.css">
25
26
27
28 <meta name="theme-color" content="#009485">
29
30
31
32
33
34
35
36
37
38 <link rel="stylesheet" href="../../stylesheets/extra.css">
39
40
41
42
43
44 </head>
45
46
47
48
49
50
51
52 <body dir="ltr" data-md-color-scheme="" data-md-color-primary="teal" data-md-color-accent="">
53
54
55 <script>function __prefix(e){return new URL("../..",location).pathname+"."+e}function __get(e,t=localStorage){return JSON.parse(t.getItem(__prefix(e)))}</script>
56
57 <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
58 <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
59 <label class="md-overlay" for="__drawer"></label>
60 <div data-md-component="skip">
61
62
63 <a href="#page-types" class="md-skip">
64 Skip to content
65 </a>
66
67 </div>
68 <div data-md-component="announce">
69
70 <aside class="md-announce">
71 <div class="md-announce__inner md-grid md-typeset">
72
73 <a href="https://www.woltlab.com">Back to <strong>woltlab.com</strong></a>
74
75 </div>
76 </aside>
77
78 </div>
79
80 <header class="md-header" data-md-component="header">
81 <nav class="md-header__inner md-grid" aria-label="Header">
82 <a href="../.." title="WoltLab Suite Documentation" class="md-header__button md-logo" aria-label="WoltLab Suite Documentation" data-md-component="logo">
83
84 <img src="../../assets/logo.png" alt="logo">
85
86 </a>
87 <label class="md-header__button md-icon" for="__drawer">
88 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"/></svg>
89 </label>
90 <div class="md-header__title" data-md-component="header-title">
91 <div class="md-header__ellipsis">
92 <div class="md-header__topic">
93 <span class="md-ellipsis">
94 WoltLab Suite Documentation
95 </span>
96 </div>
97 <div class="md-header__topic" data-md-component="header-topic">
98 <span class="md-ellipsis">
99
100 Pages
101
102 </span>
103 </div>
104 </div>
105 </div>
106
107
108
109 <label class="md-header__button md-icon" for="__search">
110 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
111 </label>
112
113 <div class="md-search" data-md-component="search" role="dialog">
114 <label class="md-search__overlay" for="__search"></label>
115 <div class="md-search__inner" role="search">
116 <form class="md-search__form" name="search">
117 <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" data-md-state="active" required>
118 <label class="md-search__icon md-icon" for="__search">
119 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
120 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
121 </label>
122 <button type="reset" class="md-search__icon md-icon" aria-label="Clear" tabindex="-1">
123 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/></svg>
124 </button>
125 </form>
126 <div class="md-search__output">
127 <div class="md-search__scrollwrap" data-md-scrollfix>
128 <div class="md-search-result" data-md-component="search-result">
129 <div class="md-search-result__meta">
130 Initializing search
131 </div>
132 <ol class="md-search-result__list"></ol>
133 </div>
134 </div>
135 </div>
136 </div>
137 </div>
138
139
140 <div class="md-header__source">
141
142 <a href="https://github.com/WoltLab/docs.woltlab.com/" title="Go to repository" class="md-source" data-md-component="source">
143 <div class="md-source__icon md-icon">
144
145 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
146 </div>
147 <div class="md-source__repository">
148 GitHub
149 </div>
150 </a>
151 </div>
152
153 </nav>
154 </header>
155
156 <div class="md-container" data-md-component="container">
157
158
159
160
161 <main class="md-main" data-md-component="main">
162 <div class="md-main__inner md-grid">
163
164
165
166 <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
167 <div class="md-sidebar__scrollwrap">
168 <div class="md-sidebar__inner">
169
170
171
172 <nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
173 <label class="md-nav__title" for="__drawer">
174 <a href="../.." title="WoltLab Suite Documentation" class="md-nav__button md-logo" aria-label="WoltLab Suite Documentation" data-md-component="logo">
175
176 <img src="../../assets/logo.png" alt="logo">
177
178 </a>
179 WoltLab Suite Documentation
180 </label>
181
182 <div class="md-nav__source">
183
184 <a href="https://github.com/WoltLab/docs.woltlab.com/" title="Go to repository" class="md-source" data-md-component="source">
185 <div class="md-source__icon md-icon">
186
187 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
188 </div>
189 <div class="md-source__repository">
190 GitHub
191 </div>
192 </a>
193 </div>
194
195 <ul class="md-nav__list" data-md-scrollfix>
196
197
198
199
200
201
202
203
204 <li class="md-nav__item">
205 <a href="../../getting-started/" class="md-nav__link">
206 Getting Started
207 </a>
208 </li>
209
210
211
212
213
214
215
216
217
218
219
220
221
222 <li class="md-nav__item md-nav__item--active md-nav__item--nested">
223
224
225 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2" type="checkbox" id="__nav_2" checked>
226
227 <label class="md-nav__link" for="__nav_2">
228 PHP API
229 <span class="md-nav__icon md-icon"></span>
230 </label>
231 <nav class="md-nav" aria-label="PHP API" data-md-level="1">
232 <label class="md-nav__title" for="__nav_2">
233 <span class="md-nav__icon md-icon"></span>
234 PHP API
235 </label>
236 <ul class="md-nav__list" data-md-scrollfix>
237
238
239
240
241
242
243
244 <li class="md-nav__item md-nav__item--active">
245
246 <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
247
248
249
250
251 <label class="md-nav__link md-nav__link--active" for="__toc">
252 Pages
253 <span class="md-nav__icon md-icon"></span>
254 </label>
255
256 <a href="./" class="md-nav__link md-nav__link--active">
257 Pages
258 </a>
259
260
261 <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
262
263
264
265
266
267 <label class="md-nav__title" for="__toc">
268 <span class="md-nav__icon md-icon"></span>
269 Table of contents
270 </label>
271 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
272
273 <li class="md-nav__item">
274 <a href="#abstractpage" class="md-nav__link">
275 AbstractPage
276 </a>
277
278 <nav class="md-nav" aria-label="AbstractPage">
279 <ul class="md-nav__list">
280
281 <li class="md-nav__item">
282 <a href="#method-chain" class="md-nav__link">
283 Method Chain
284 </a>
285
286 <nav class="md-nav" aria-label="Method Chain">
287 <ul class="md-nav__list">
288
289 <li class="md-nav__item">
290 <a href="#__run" class="md-nav__link">
291 __run()
292 </a>
293
294 </li>
295
296 <li class="md-nav__item">
297 <a href="#readparameters" class="md-nav__link">
298 readParameters()
299 </a>
300
301 </li>
302
303 <li class="md-nav__item">
304 <a href="#show" class="md-nav__link">
305 show()
306 </a>
307
308 </li>
309
310 <li class="md-nav__item">
311 <a href="#readdata" class="md-nav__link">
312 readData()
313 </a>
314
315 </li>
316
317 <li class="md-nav__item">
318 <a href="#assignvariables" class="md-nav__link">
319 assignVariables()
320 </a>
321
322 </li>
323
324 </ul>
325 </nav>
326
327 </li>
328
329 </ul>
330 </nav>
331
332 </li>
333
334 <li class="md-nav__item">
335 <a href="#abstractform" class="md-nav__link">
336 AbstractForm
337 </a>
338
339 <nav class="md-nav" aria-label="AbstractForm">
340 <ul class="md-nav__list">
341
342 <li class="md-nav__item">
343 <a href="#method-chain_1" class="md-nav__link">
344 Method Chain
345 </a>
346
347 <nav class="md-nav" aria-label="Method Chain">
348 <ul class="md-nav__list">
349
350 <li class="md-nav__item">
351 <a href="#__run_1" class="md-nav__link">
352 __run()
353 </a>
354
355 </li>
356
357 <li class="md-nav__item">
358 <a href="#readparameters_1" class="md-nav__link">
359 readParameters()
360 </a>
361
362 </li>
363
364 <li class="md-nav__item">
365 <a href="#show_1" class="md-nav__link">
366 show()
367 </a>
368
369 </li>
370
371 <li class="md-nav__item">
372 <a href="#submit" class="md-nav__link">
373 submit()
374 </a>
375
376 </li>
377
378 <li class="md-nav__item">
379 <a href="#readformparameters" class="md-nav__link">
380 readFormParameters()
381 </a>
382
383 </li>
384
385 <li class="md-nav__item">
386 <a href="#validate" class="md-nav__link">
387 validate()
388 </a>
389
390 </li>
391
392 <li class="md-nav__item">
393 <a href="#save" class="md-nav__link">
394 save()
395 </a>
396
397 </li>
398
399 <li class="md-nav__item">
400 <a href="#saved" class="md-nav__link">
401 saved()
402 </a>
403
404 </li>
405
406 <li class="md-nav__item">
407 <a href="#readdata_1" class="md-nav__link">
408 readData()
409 </a>
410
411 </li>
412
413 <li class="md-nav__item">
414 <a href="#assignvariables_1" class="md-nav__link">
415 assignVariables()
416 </a>
417
418 </li>
419
420 </ul>
421 </nav>
422
423 </li>
424
425 </ul>
426 </nav>
427
428 </li>
429
430 </ul>
431
432 </nav>
433
434 </li>
435
436
437
438
439
440
441
442 <li class="md-nav__item">
443 <a href="../database-objects/" class="md-nav__link">
444 Database Objects
445 </a>
446 </li>
447
448
449
450
451
452
453
454 <li class="md-nav__item">
455 <a href="../database-access/" class="md-nav__link">
456 Database Access
457 </a>
458 </li>
459
460
461
462
463
464
465
466 <li class="md-nav__item">
467 <a href="../exceptions/" class="md-nav__link">
468 Exceptions
469 </a>
470 </li>
471
472
473
474
475
476
477
478
479 <li class="md-nav__item md-nav__item--nested">
480
481
482 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_5" type="checkbox" id="__nav_2_5" >
483
484 <label class="md-nav__link" for="__nav_2_5">
485 API
486 <span class="md-nav__icon md-icon"></span>
487 </label>
488 <nav class="md-nav" aria-label="API" data-md-level="2">
489 <label class="md-nav__title" for="__nav_2_5">
490 <span class="md-nav__icon md-icon"></span>
491 API
492 </label>
493 <ul class="md-nav__list" data-md-scrollfix>
494
495
496
497
498
499
500 <li class="md-nav__item md-nav__item--nested">
501
502
503 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_5_1" type="checkbox" id="__nav_2_5_1" >
504
505 <label class="md-nav__link" for="__nav_2_5_1">
506 Caches
507 <span class="md-nav__icon md-icon"></span>
508 </label>
509 <nav class="md-nav" aria-label="Caches" data-md-level="3">
510 <label class="md-nav__title" for="__nav_2_5_1">
511 <span class="md-nav__icon md-icon"></span>
512 Caches
513 </label>
514 <ul class="md-nav__list" data-md-scrollfix>
515
516
517
518
519
520 <li class="md-nav__item">
521 <a href="../api/caches/" class="md-nav__link">
522 Overview
523 </a>
524 </li>
525
526
527
528
529
530
531
532 <li class="md-nav__item">
533 <a href="../api/caches_persistent-caches/" class="md-nav__link">
534 Persistent Caches
535 </a>
536 </li>
537
538
539
540
541
542
543
544 <li class="md-nav__item">
545 <a href="../api/caches_runtime-caches/" class="md-nav__link">
546 Runtime Caches
547 </a>
548 </li>
549
550
551
552 </ul>
553 </nav>
554 </li>
555
556
557
558
559
560
561
562 <li class="md-nav__item">
563 <a href="../api/comments/" class="md-nav__link">
564 Comments
565 </a>
566 </li>
567
568
569
570
571
572
573
574 <li class="md-nav__item">
575 <a href="../api/cronjobs/" class="md-nav__link">
576 Cronjobs
577 </a>
578 </li>
579
580
581
582
583
584
585
586 <li class="md-nav__item">
587 <a href="../api/events/" class="md-nav__link">
588 Events
589 </a>
590 </li>
591
592
593
594
595
596
597
598
599 <li class="md-nav__item md-nav__item--nested">
600
601
602 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_5_5" type="checkbox" id="__nav_2_5_5" >
603
604 <label class="md-nav__link" for="__nav_2_5_5">
605 Form Builder
606 <span class="md-nav__icon md-icon"></span>
607 </label>
608 <nav class="md-nav" aria-label="Form Builder" data-md-level="3">
609 <label class="md-nav__title" for="__nav_2_5_5">
610 <span class="md-nav__icon md-icon"></span>
611 Form Builder
612 </label>
613 <ul class="md-nav__list" data-md-scrollfix>
614
615
616
617
618
619 <li class="md-nav__item">
620 <a href="../api/form_builder/overview/" class="md-nav__link">
621 Overview
622 </a>
623 </li>
624
625
626
627
628
629
630
631 <li class="md-nav__item">
632 <a href="../api/form_builder/structure/" class="md-nav__link">
633 Structure
634 </a>
635 </li>
636
637
638
639
640
641
642
643 <li class="md-nav__item">
644 <a href="../api/form_builder/form_fields/" class="md-nav__link">
645 Fields
646 </a>
647 </li>
648
649
650
651
652
653
654
655 <li class="md-nav__item">
656 <a href="../api/form_builder/validation_data/" class="md-nav__link">
657 Validation and Data
658 </a>
659 </li>
660
661
662
663
664
665
666
667 <li class="md-nav__item">
668 <a href="../api/form_builder/dependencies/" class="md-nav__link">
669 Dependencies
670 </a>
671 </li>
672
673
674
675 </ul>
676 </nav>
677 </li>
678
679
680
681
682
683
684
685 <li class="md-nav__item">
686 <a href="../api/package_installation_plugins/" class="md-nav__link">
687 Package Installation Plugins
688 </a>
689 </li>
690
691
692
693
694
695
696
697 <li class="md-nav__item">
698 <a href="../api/user_activity_points/" class="md-nav__link">
699 User Activity Points
700 </a>
701 </li>
702
703
704
705
706
707
708
709 <li class="md-nav__item">
710 <a href="../api/user_notifications/" class="md-nav__link">
711 User Notifications
712 </a>
713 </li>
714
715
716
717
718
719
720
721 <li class="md-nav__item">
722 <a href="../api/sitemaps/" class="md-nav__link">
723 Sitemaps
724 </a>
725 </li>
726
727
728
729 </ul>
730 </nav>
731 </li>
732
733
734
735
736
737
738
739 <li class="md-nav__item">
740 <a href="../code-style/" class="md-nav__link">
741 Code Style
742 </a>
743 </li>
744
745
746
747
748
749
750
751 <li class="md-nav__item">
752 <a href="../apps/" class="md-nav__link">
753 Apps
754 </a>
755 </li>
756
757
758
759
760
761
762
763 <li class="md-nav__item">
764 <a href="../gdpr/" class="md-nav__link">
765 GDPR
766 </a>
767 </li>
768
769
770
771 </ul>
772 </nav>
773 </li>
774
775
776
777
778
779
780
781
782
783
784
785 <li class="md-nav__item md-nav__item--nested">
786
787
788 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3" type="checkbox" id="__nav_3" >
789
790 <label class="md-nav__link" for="__nav_3">
791 Languages, Templates & CSS
792 <span class="md-nav__icon md-icon"></span>
793 </label>
794 <nav class="md-nav" aria-label="Languages, Templates & CSS" data-md-level="1">
795 <label class="md-nav__title" for="__nav_3">
796 <span class="md-nav__icon md-icon"></span>
797 Languages, Templates & CSS
798 </label>
799 <ul class="md-nav__list" data-md-scrollfix>
800
801
802
803
804
805 <li class="md-nav__item">
806 <a href="../../view/languages/" class="md-nav__link">
807 Languages
808 </a>
809 </li>
810
811
812
813
814
815
816
817 <li class="md-nav__item">
818 <a href="../../view/templates/" class="md-nav__link">
819 Templates
820 </a>
821 </li>
822
823
824
825
826
827
828
829 <li class="md-nav__item">
830 <a href="../../view/template-plugins/" class="md-nav__link">
831 Template Plugins
832 </a>
833 </li>
834
835
836
837
838
839
840
841 <li class="md-nav__item">
842 <a href="../../view/css/" class="md-nav__link">
843 CSS
844 </a>
845 </li>
846
847
848
849 </ul>
850 </nav>
851 </li>
852
853
854
855
856
857
858
859
860
861
862
863 <li class="md-nav__item md-nav__item--nested">
864
865
866 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_4" type="checkbox" id="__nav_4" >
867
868 <label class="md-nav__link" for="__nav_4">
869 TypeScript and JavaScript API
870 <span class="md-nav__icon md-icon"></span>
871 </label>
872 <nav class="md-nav" aria-label="TypeScript and JavaScript API" data-md-level="1">
873 <label class="md-nav__title" for="__nav_4">
874 <span class="md-nav__icon md-icon"></span>
875 TypeScript and JavaScript API
876 </label>
877 <ul class="md-nav__list" data-md-scrollfix>
878
879
880
881
882
883 <li class="md-nav__item">
884 <a href="../../javascript/general-usage/" class="md-nav__link">
885 General Usage
886 </a>
887 </li>
888
889
890
891
892
893
894
895 <li class="md-nav__item">
896 <a href="../../javascript/typescript/" class="md-nav__link">
897 TypeScript
898 </a>
899 </li>
900
901
902
903
904
905
906
907
908 <li class="md-nav__item md-nav__item--nested">
909
910
911 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_4_3" type="checkbox" id="__nav_4_3" >
912
913 <label class="md-nav__link" for="__nav_4_3">
914 New API
915 <span class="md-nav__icon md-icon"></span>
916 </label>
917 <nav class="md-nav" aria-label="New API" data-md-level="2">
918 <label class="md-nav__title" for="__nav_4_3">
919 <span class="md-nav__icon md-icon"></span>
920 New API
921 </label>
922 <ul class="md-nav__list" data-md-scrollfix>
923
924
925
926
927
928 <li class="md-nav__item">
929 <a href="../../javascript/new-api_writing-a-module/" class="md-nav__link">
930 Writing a module
931 </a>
932 </li>
933
934
935
936
937
938
939
940 <li class="md-nav__item">
941 <a href="../../javascript/new-api_data-structures/" class="md-nav__link">
942 Data Structures
943 </a>
944 </li>
945
946
947
948
949
950
951
952 <li class="md-nav__item">
953 <a href="../../javascript/new-api_core/" class="md-nav__link">
954 Core Functions
955 </a>
956 </li>
957
958
959
960
961
962
963
964 <li class="md-nav__item">
965 <a href="../../javascript/new-api_dom/" class="md-nav__link">
966 DOM
967 </a>
968 </li>
969
970
971
972
973
974
975
976 <li class="md-nav__item">
977 <a href="../../javascript/new-api_events/" class="md-nav__link">
978 Event Handling
979 </a>
980 </li>
981
982
983
984
985
986
987
988 <li class="md-nav__item">
989 <a href="../../javascript/new-api_ajax/" class="md-nav__link">
990 Ajax
991 </a>
992 </li>
993
994
995
996
997
998
999
1000 <li class="md-nav__item">
1001 <a href="../../javascript/new-api_dialogs/" class="md-nav__link">
1002 Dialogs
1003 </a>
1004 </li>
1005
1006
1007
1008
1009
1010
1011
1012 <li class="md-nav__item">
1013 <a href="../../javascript/new-api_browser/" class="md-nav__link">
1014 Browser and Screen Sizes
1015 </a>
1016 </li>
1017
1018
1019
1020
1021
1022
1023
1024 <li class="md-nav__item">
1025 <a href="../../javascript/new-api_ui/" class="md-nav__link">
1026 User Interface
1027 </a>
1028 </li>
1029
1030
1031
1032 </ul>
1033 </nav>
1034 </li>
1035
1036
1037
1038
1039
1040
1041
1042 <li class="md-nav__item">
1043 <a href="../../javascript/legacy-api/" class="md-nav__link">
1044 Legacy API
1045 </a>
1046 </li>
1047
1048
1049
1050
1051
1052
1053
1054 <li class="md-nav__item">
1055 <a href="../../javascript/helper-functions/" class="md-nav__link">
1056 Helper Functions
1057 </a>
1058 </li>
1059
1060
1061
1062
1063
1064
1065
1066 <li class="md-nav__item">
1067 <a href="../../javascript/code-snippets/" class="md-nav__link">
1068 Code Snippets
1069 </a>
1070 </li>
1071
1072
1073
1074 </ul>
1075 </nav>
1076 </li>
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088 <li class="md-nav__item md-nav__item--nested">
1089
1090
1091 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5" type="checkbox" id="__nav_5" >
1092
1093 <label class="md-nav__link" for="__nav_5">
1094 Package Components
1095 <span class="md-nav__icon md-icon"></span>
1096 </label>
1097 <nav class="md-nav" aria-label="Package Components" data-md-level="1">
1098 <label class="md-nav__title" for="__nav_5">
1099 <span class="md-nav__icon md-icon"></span>
1100 Package Components
1101 </label>
1102 <ul class="md-nav__list" data-md-scrollfix>
1103
1104
1105
1106
1107
1108 <li class="md-nav__item">
1109 <a href="../../package/package-xml/" class="md-nav__link">
1110 package.xml
1111 </a>
1112 </li>
1113
1114
1115
1116
1117
1118
1119
1120
1121 <li class="md-nav__item md-nav__item--nested">
1122
1123
1124 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5_2" type="checkbox" id="__nav_5_2" >
1125
1126 <label class="md-nav__link" for="__nav_5_2">
1127 PIPs
1128 <span class="md-nav__icon md-icon"></span>
1129 </label>
1130 <nav class="md-nav" aria-label="PIPs" data-md-level="2">
1131 <label class="md-nav__title" for="__nav_5_2">
1132 <span class="md-nav__icon md-icon"></span>
1133 PIPs
1134 </label>
1135 <ul class="md-nav__list" data-md-scrollfix>
1136
1137
1138
1139
1140
1141 <li class="md-nav__item">
1142 <a href="../../package/pip/" class="md-nav__link">
1143 Overview
1144 </a>
1145 </li>
1146
1147
1148
1149
1150
1151
1152
1153 <li class="md-nav__item">
1154 <a href="../../package/pip/acl-option/" class="md-nav__link">
1155 aclOption
1156 </a>
1157 </li>
1158
1159
1160
1161
1162
1163
1164
1165 <li class="md-nav__item">
1166 <a href="../../package/pip/acp-menu/" class="md-nav__link">
1167 acpMenu
1168 </a>
1169 </li>
1170
1171
1172
1173
1174
1175
1176
1177 <li class="md-nav__item">
1178 <a href="../../package/pip/acp-search-provider/" class="md-nav__link">
1179 acpSearchProvider
1180 </a>
1181 </li>
1182
1183
1184
1185
1186
1187
1188
1189 <li class="md-nav__item">
1190 <a href="../../package/pip/acp-template/" class="md-nav__link">
1191 acpTemplate
1192 </a>
1193 </li>
1194
1195
1196
1197
1198
1199
1200
1201 <li class="md-nav__item">
1202 <a href="../../package/pip/bbcode/" class="md-nav__link">
1203 bbcode
1204 </a>
1205 </li>
1206
1207
1208
1209
1210
1211
1212
1213 <li class="md-nav__item">
1214 <a href="../../package/pip/box/" class="md-nav__link">
1215 box
1216 </a>
1217 </li>
1218
1219
1220
1221
1222
1223
1224
1225 <li class="md-nav__item">
1226 <a href="../../package/pip/clipboard-action/" class="md-nav__link">
1227 clipboardAction
1228 </a>
1229 </li>
1230
1231
1232
1233
1234
1235
1236
1237 <li class="md-nav__item">
1238 <a href="../../package/pip/core-object/" class="md-nav__link">
1239 coreObject
1240 </a>
1241 </li>
1242
1243
1244
1245
1246
1247
1248
1249 <li class="md-nav__item">
1250 <a href="../../package/pip/cronjob/" class="md-nav__link">
1251 cronjob
1252 </a>
1253 </li>
1254
1255
1256
1257
1258
1259
1260
1261 <li class="md-nav__item">
1262 <a href="../../package/pip/database/" class="md-nav__link">
1263 database
1264 </a>
1265 </li>
1266
1267
1268
1269
1270
1271
1272
1273 <li class="md-nav__item">
1274 <a href="../../package/pip/event-listener/" class="md-nav__link">
1275 eventListener
1276 </a>
1277 </li>
1278
1279
1280
1281
1282
1283
1284
1285 <li class="md-nav__item">
1286 <a href="../../package/pip/file/" class="md-nav__link">
1287 file
1288 </a>
1289 </li>
1290
1291
1292
1293
1294
1295
1296
1297 <li class="md-nav__item">
1298 <a href="../../package/pip/language/" class="md-nav__link">
1299 language
1300 </a>
1301 </li>
1302
1303
1304
1305
1306
1307
1308
1309 <li class="md-nav__item">
1310 <a href="../../package/pip/media-provider/" class="md-nav__link">
1311 mediaProvider
1312 </a>
1313 </li>
1314
1315
1316
1317
1318
1319
1320
1321 <li class="md-nav__item">
1322 <a href="../../package/pip/menu/" class="md-nav__link">
1323 menu
1324 </a>
1325 </li>
1326
1327
1328
1329
1330
1331
1332
1333 <li class="md-nav__item">
1334 <a href="../../package/pip/menu-item/" class="md-nav__link">
1335 menuItem
1336 </a>
1337 </li>
1338
1339
1340
1341
1342
1343
1344
1345 <li class="md-nav__item">
1346 <a href="../../package/pip/object-type/" class="md-nav__link">
1347 objectType
1348 </a>
1349 </li>
1350
1351
1352
1353
1354
1355
1356
1357 <li class="md-nav__item">
1358 <a href="../../package/pip/object-type-definition/" class="md-nav__link">
1359 objectTypeDefinition
1360 </a>
1361 </li>
1362
1363
1364
1365
1366
1367
1368
1369 <li class="md-nav__item">
1370 <a href="../../package/pip/option/" class="md-nav__link">
1371 option
1372 </a>
1373 </li>
1374
1375
1376
1377
1378
1379
1380
1381 <li class="md-nav__item">
1382 <a href="../../package/pip/page/" class="md-nav__link">
1383 page
1384 </a>
1385 </li>
1386
1387
1388
1389
1390
1391
1392
1393 <li class="md-nav__item">
1394 <a href="../../package/pip/pip/" class="md-nav__link">
1395 pip
1396 </a>
1397 </li>
1398
1399
1400
1401
1402
1403
1404
1405 <li class="md-nav__item">
1406 <a href="../../package/pip/script/" class="md-nav__link">
1407 script
1408 </a>
1409 </li>
1410
1411
1412
1413
1414
1415
1416
1417 <li class="md-nav__item">
1418 <a href="../../package/pip/smiley/" class="md-nav__link">
1419 smiley
1420 </a>
1421 </li>
1422
1423
1424
1425
1426
1427
1428
1429 <li class="md-nav__item">
1430 <a href="../../package/pip/sql/" class="md-nav__link">
1431 sql
1432 </a>
1433 </li>
1434
1435
1436
1437
1438
1439
1440
1441 <li class="md-nav__item">
1442 <a href="../../package/pip/style/" class="md-nav__link">
1443 style
1444 </a>
1445 </li>
1446
1447
1448
1449
1450
1451
1452
1453 <li class="md-nav__item">
1454 <a href="../../package/pip/template/" class="md-nav__link">
1455 template
1456 </a>
1457 </li>
1458
1459
1460
1461
1462
1463
1464
1465 <li class="md-nav__item">
1466 <a href="../../package/pip/template-listener/" class="md-nav__link">
1467 templateListener
1468 </a>
1469 </li>
1470
1471
1472
1473
1474
1475
1476
1477 <li class="md-nav__item">
1478 <a href="../../package/pip/user-group-option/" class="md-nav__link">
1479 userGroupOption
1480 </a>
1481 </li>
1482
1483
1484
1485
1486
1487
1488
1489 <li class="md-nav__item">
1490 <a href="../../package/pip/user-menu/" class="md-nav__link">
1491 userMenu
1492 </a>
1493 </li>
1494
1495
1496
1497
1498
1499
1500
1501 <li class="md-nav__item">
1502 <a href="../../package/pip/user-notification-event/" class="md-nav__link">
1503 userNotificationEvent
1504 </a>
1505 </li>
1506
1507
1508
1509
1510
1511
1512
1513 <li class="md-nav__item">
1514 <a href="../../package/pip/user-option/" class="md-nav__link">
1515 userOption
1516 </a>
1517 </li>
1518
1519
1520
1521
1522
1523
1524
1525 <li class="md-nav__item">
1526 <a href="../../package/pip/user-profile-menu/" class="md-nav__link">
1527 userProfileMenu
1528 </a>
1529 </li>
1530
1531
1532
1533 </ul>
1534 </nav>
1535 </li>
1536
1537
1538
1539
1540
1541
1542
1543 <li class="md-nav__item">
1544 <a href="../../package/database-php-api/" class="md-nav__link">
1545 Database PHP API
1546 </a>
1547 </li>
1548
1549
1550
1551 </ul>
1552 </nav>
1553 </li>
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565 <li class="md-nav__item md-nav__item--nested">
1566
1567
1568 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6" type="checkbox" id="__nav_6" >
1569
1570 <label class="md-nav__link" for="__nav_6">
1571 Migration
1572 <span class="md-nav__icon md-icon"></span>
1573 </label>
1574 <nav class="md-nav" aria-label="Migration" data-md-level="1">
1575 <label class="md-nav__title" for="__nav_6">
1576 <span class="md-nav__icon md-icon"></span>
1577 Migration
1578 </label>
1579 <ul class="md-nav__list" data-md-scrollfix>
1580
1581
1582
1583
1584
1585
1586 <li class="md-nav__item md-nav__item--nested">
1587
1588
1589 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_1" type="checkbox" id="__nav_6_1" >
1590
1591 <label class="md-nav__link" for="__nav_6_1">
1592 Migrating from WSC 5.3
1593 <span class="md-nav__icon md-icon"></span>
1594 </label>
1595 <nav class="md-nav" aria-label="Migrating from WSC 5.3" data-md-level="2">
1596 <label class="md-nav__title" for="__nav_6_1">
1597 <span class="md-nav__icon md-icon"></span>
1598 Migrating from WSC 5.3
1599 </label>
1600 <ul class="md-nav__list" data-md-scrollfix>
1601
1602
1603
1604
1605
1606 <li class="md-nav__item">
1607 <a href="../../migration/wsc53/php/" class="md-nav__link">
1608 PHP API
1609 </a>
1610 </li>
1611
1612
1613
1614
1615
1616
1617
1618 <li class="md-nav__item">
1619 <a href="../../migration/wsc53/session/" class="md-nav__link">
1620 Session Handling and Authentication
1621 </a>
1622 </li>
1623
1624
1625
1626
1627
1628
1629
1630 <li class="md-nav__item">
1631 <a href="../../migration/wsc53/javascript/" class="md-nav__link">
1632 TypeScript and JavaScript
1633 </a>
1634 </li>
1635
1636
1637
1638
1639
1640
1641
1642 <li class="md-nav__item">
1643 <a href="../../migration/wsc53/templates/" class="md-nav__link">
1644 Templates
1645 </a>
1646 </li>
1647
1648
1649
1650
1651
1652
1653
1654 <li class="md-nav__item">
1655 <a href="../../migration/wsc53/libraries/" class="md-nav__link">
1656 Third Party Libraries
1657 </a>
1658 </li>
1659
1660
1661
1662 </ul>
1663 </nav>
1664 </li>
1665
1666
1667
1668
1669
1670
1671
1672
1673 <li class="md-nav__item md-nav__item--nested">
1674
1675
1676 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_2" type="checkbox" id="__nav_6_2" >
1677
1678 <label class="md-nav__link" for="__nav_6_2">
1679 Migrating from WSC 5.2
1680 <span class="md-nav__icon md-icon"></span>
1681 </label>
1682 <nav class="md-nav" aria-label="Migrating from WSC 5.2" data-md-level="2">
1683 <label class="md-nav__title" for="__nav_6_2">
1684 <span class="md-nav__icon md-icon"></span>
1685 Migrating from WSC 5.2
1686 </label>
1687 <ul class="md-nav__list" data-md-scrollfix>
1688
1689
1690
1691
1692
1693 <li class="md-nav__item">
1694 <a href="../../migration/wsc52/php/" class="md-nav__link">
1695 PHP API
1696 </a>
1697 </li>
1698
1699
1700
1701
1702
1703
1704
1705 <li class="md-nav__item">
1706 <a href="../../migration/wsc52/templates/" class="md-nav__link">
1707 Templates and Languages
1708 </a>
1709 </li>
1710
1711
1712
1713
1714
1715
1716
1717 <li class="md-nav__item">
1718 <a href="../../migration/wsc52/libraries/" class="md-nav__link">
1719 Third Party Libraries
1720 </a>
1721 </li>
1722
1723
1724
1725 </ul>
1726 </nav>
1727 </li>
1728
1729
1730
1731
1732
1733
1734
1735
1736 <li class="md-nav__item md-nav__item--nested">
1737
1738
1739 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_3" type="checkbox" id="__nav_6_3" >
1740
1741 <label class="md-nav__link" for="__nav_6_3">
1742 Migrating from WSC 3.1
1743 <span class="md-nav__icon md-icon"></span>
1744 </label>
1745 <nav class="md-nav" aria-label="Migrating from WSC 3.1" data-md-level="2">
1746 <label class="md-nav__title" for="__nav_6_3">
1747 <span class="md-nav__icon md-icon"></span>
1748 Migrating from WSC 3.1
1749 </label>
1750 <ul class="md-nav__list" data-md-scrollfix>
1751
1752
1753
1754
1755
1756 <li class="md-nav__item">
1757 <a href="../../migration/wsc31/php/" class="md-nav__link">
1758 PHP API
1759 </a>
1760 </li>
1761
1762
1763
1764 </ul>
1765 </nav>
1766 </li>
1767
1768
1769
1770
1771
1772
1773
1774
1775 <li class="md-nav__item md-nav__item--nested">
1776
1777
1778 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_4" type="checkbox" id="__nav_6_4" >
1779
1780 <label class="md-nav__link" for="__nav_6_4">
1781 Migrating from WSC 3.0
1782 <span class="md-nav__icon md-icon"></span>
1783 </label>
1784 <nav class="md-nav" aria-label="Migrating from WSC 3.0" data-md-level="2">
1785 <label class="md-nav__title" for="__nav_6_4">
1786 <span class="md-nav__icon md-icon"></span>
1787 Migrating from WSC 3.0
1788 </label>
1789 <ul class="md-nav__list" data-md-scrollfix>
1790
1791
1792
1793
1794
1795 <li class="md-nav__item">
1796 <a href="../../migration/wsc30/php/" class="md-nav__link">
1797 PHP API
1798 </a>
1799 </li>
1800
1801
1802
1803
1804
1805
1806
1807 <li class="md-nav__item">
1808 <a href="../../migration/wsc30/javascript/" class="md-nav__link">
1809 JavaScript API
1810 </a>
1811 </li>
1812
1813
1814
1815
1816
1817
1818
1819 <li class="md-nav__item">
1820 <a href="../../migration/wsc30/templates/" class="md-nav__link">
1821 Templates
1822 </a>
1823 </li>
1824
1825
1826
1827
1828
1829
1830
1831 <li class="md-nav__item">
1832 <a href="../../migration/wsc30/css/" class="md-nav__link">
1833 CSS
1834 </a>
1835 </li>
1836
1837
1838
1839
1840
1841
1842
1843 <li class="md-nav__item">
1844 <a href="../../migration/wsc30/package/" class="md-nav__link">
1845 Package Components
1846 </a>
1847 </li>
1848
1849
1850
1851 </ul>
1852 </nav>
1853 </li>
1854
1855
1856
1857
1858
1859
1860
1861
1862 <li class="md-nav__item md-nav__item--nested">
1863
1864
1865 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_5" type="checkbox" id="__nav_6_5" >
1866
1867 <label class="md-nav__link" for="__nav_6_5">
1868 Migrating from WCF 2.1
1869 <span class="md-nav__icon md-icon"></span>
1870 </label>
1871 <nav class="md-nav" aria-label="Migrating from WCF 2.1" data-md-level="2">
1872 <label class="md-nav__title" for="__nav_6_5">
1873 <span class="md-nav__icon md-icon"></span>
1874 Migrating from WCF 2.1
1875 </label>
1876 <ul class="md-nav__list" data-md-scrollfix>
1877
1878
1879
1880
1881
1882 <li class="md-nav__item">
1883 <a href="../../migration/wcf21/php/" class="md-nav__link">
1884 PHP API
1885 </a>
1886 </li>
1887
1888
1889
1890
1891
1892
1893
1894 <li class="md-nav__item">
1895 <a href="../../migration/wcf21/templates/" class="md-nav__link">
1896 Templates
1897 </a>
1898 </li>
1899
1900
1901
1902
1903
1904
1905
1906 <li class="md-nav__item">
1907 <a href="../../migration/wcf21/css/" class="md-nav__link">
1908 CSS
1909 </a>
1910 </li>
1911
1912
1913
1914
1915
1916
1917
1918 <li class="md-nav__item">
1919 <a href="../../migration/wcf21/package/" class="md-nav__link">
1920 Package Components
1921 </a>
1922 </li>
1923
1924
1925
1926 </ul>
1927 </nav>
1928 </li>
1929
1930
1931
1932 </ul>
1933 </nav>
1934 </li>
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946 <li class="md-nav__item md-nav__item--nested">
1947
1948
1949 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_7" type="checkbox" id="__nav_7" >
1950
1951 <label class="md-nav__link" for="__nav_7">
1952 Tutorials
1953 <span class="md-nav__icon md-icon"></span>
1954 </label>
1955 <nav class="md-nav" aria-label="Tutorials" data-md-level="1">
1956 <label class="md-nav__title" for="__nav_7">
1957 <span class="md-nav__icon md-icon"></span>
1958 Tutorials
1959 </label>
1960 <ul class="md-nav__list" data-md-scrollfix>
1961
1962
1963
1964
1965
1966
1967 <li class="md-nav__item md-nav__item--nested">
1968
1969
1970 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_7_1" type="checkbox" id="__nav_7_1" >
1971
1972 <label class="md-nav__link" for="__nav_7_1">
1973 Tutorial Series
1974 <span class="md-nav__icon md-icon"></span>
1975 </label>
1976 <nav class="md-nav" aria-label="Tutorial Series" data-md-level="2">
1977 <label class="md-nav__title" for="__nav_7_1">
1978 <span class="md-nav__icon md-icon"></span>
1979 Tutorial Series
1980 </label>
1981 <ul class="md-nav__list" data-md-scrollfix>
1982
1983
1984
1985
1986
1987 <li class="md-nav__item">
1988 <a href="../../tutorial/series/overview/" class="md-nav__link">
1989 Overview
1990 </a>
1991 </li>
1992
1993
1994
1995
1996
1997
1998
1999 <li class="md-nav__item">
2000 <a href="../../tutorial/series/part_1/" class="md-nav__link">
2001 Part 1
2002 </a>
2003 </li>
2004
2005
2006
2007
2008
2009
2010
2011 <li class="md-nav__item">
2012 <a href="../../tutorial/series/part_2/" class="md-nav__link">
2013 Part 2
2014 </a>
2015 </li>
2016
2017
2018
2019
2020
2021
2022
2023 <li class="md-nav__item">
2024 <a href="../../tutorial/series/part_3/" class="md-nav__link">
2025 Part 3
2026 </a>
2027 </li>
2028
2029
2030
2031 </ul>
2032 </nav>
2033 </li>
2034
2035
2036
2037 </ul>
2038 </nav>
2039 </li>
2040
2041
2042
2043 </ul>
2044 </nav>
2045 </div>
2046 </div>
2047 </div>
2048
2049
2050
2051 <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
2052 <div class="md-sidebar__scrollwrap">
2053 <div class="md-sidebar__inner">
2054
2055 <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
2056
2057
2058
2059
2060
2061 <label class="md-nav__title" for="__toc">
2062 <span class="md-nav__icon md-icon"></span>
2063 Table of contents
2064 </label>
2065 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
2066
2067 <li class="md-nav__item">
2068 <a href="#abstractpage" class="md-nav__link">
2069 AbstractPage
2070 </a>
2071
2072 <nav class="md-nav" aria-label="AbstractPage">
2073 <ul class="md-nav__list">
2074
2075 <li class="md-nav__item">
2076 <a href="#method-chain" class="md-nav__link">
2077 Method Chain
2078 </a>
2079
2080 <nav class="md-nav" aria-label="Method Chain">
2081 <ul class="md-nav__list">
2082
2083 <li class="md-nav__item">
2084 <a href="#__run" class="md-nav__link">
2085 __run()
2086 </a>
2087
2088 </li>
2089
2090 <li class="md-nav__item">
2091 <a href="#readparameters" class="md-nav__link">
2092 readParameters()
2093 </a>
2094
2095 </li>
2096
2097 <li class="md-nav__item">
2098 <a href="#show" class="md-nav__link">
2099 show()
2100 </a>
2101
2102 </li>
2103
2104 <li class="md-nav__item">
2105 <a href="#readdata" class="md-nav__link">
2106 readData()
2107 </a>
2108
2109 </li>
2110
2111 <li class="md-nav__item">
2112 <a href="#assignvariables" class="md-nav__link">
2113 assignVariables()
2114 </a>
2115
2116 </li>
2117
2118 </ul>
2119 </nav>
2120
2121 </li>
2122
2123 </ul>
2124 </nav>
2125
2126 </li>
2127
2128 <li class="md-nav__item">
2129 <a href="#abstractform" class="md-nav__link">
2130 AbstractForm
2131 </a>
2132
2133 <nav class="md-nav" aria-label="AbstractForm">
2134 <ul class="md-nav__list">
2135
2136 <li class="md-nav__item">
2137 <a href="#method-chain_1" class="md-nav__link">
2138 Method Chain
2139 </a>
2140
2141 <nav class="md-nav" aria-label="Method Chain">
2142 <ul class="md-nav__list">
2143
2144 <li class="md-nav__item">
2145 <a href="#__run_1" class="md-nav__link">
2146 __run()
2147 </a>
2148
2149 </li>
2150
2151 <li class="md-nav__item">
2152 <a href="#readparameters_1" class="md-nav__link">
2153 readParameters()
2154 </a>
2155
2156 </li>
2157
2158 <li class="md-nav__item">
2159 <a href="#show_1" class="md-nav__link">
2160 show()
2161 </a>
2162
2163 </li>
2164
2165 <li class="md-nav__item">
2166 <a href="#submit" class="md-nav__link">
2167 submit()
2168 </a>
2169
2170 </li>
2171
2172 <li class="md-nav__item">
2173 <a href="#readformparameters" class="md-nav__link">
2174 readFormParameters()
2175 </a>
2176
2177 </li>
2178
2179 <li class="md-nav__item">
2180 <a href="#validate" class="md-nav__link">
2181 validate()
2182 </a>
2183
2184 </li>
2185
2186 <li class="md-nav__item">
2187 <a href="#save" class="md-nav__link">
2188 save()
2189 </a>
2190
2191 </li>
2192
2193 <li class="md-nav__item">
2194 <a href="#saved" class="md-nav__link">
2195 saved()
2196 </a>
2197
2198 </li>
2199
2200 <li class="md-nav__item">
2201 <a href="#readdata_1" class="md-nav__link">
2202 readData()
2203 </a>
2204
2205 </li>
2206
2207 <li class="md-nav__item">
2208 <a href="#assignvariables_1" class="md-nav__link">
2209 assignVariables()
2210 </a>
2211
2212 </li>
2213
2214 </ul>
2215 </nav>
2216
2217 </li>
2218
2219 </ul>
2220 </nav>
2221
2222 </li>
2223
2224 </ul>
2225
2226 </nav>
2227 </div>
2228 </div>
2229 </div>
2230
2231
2232 <div class="md-content" data-md-component="content">
2233 <article class="md-content__inner md-typeset">
2234
2235
2236 <a href="https://github.com/WoltLab/docs.woltlab.com/edit/5.4/docs/php/pages.md" title="Edit this page" class="md-content__button md-icon">
2237 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"/></svg>
2238 </a>
2239
2240
2241 <h1 id="page-types">Page Types<a class="headerlink" href="#page-types" title="Permanent link">#</a></h1>
2242 <h2 id="abstractpage">AbstractPage<a class="headerlink" href="#abstractpage" title="Permanent link">#</a></h2>
2243 <p>The default implementation for pages to present any sort of content, but are designed to handle <code>GET</code> requests only. They usually follow a fixed method chain that will be invoked one after another, adding logical sections to the request flow.</p>
2244 <h3 id="method-chain">Method Chain<a class="headerlink" href="#method-chain" title="Permanent link">#</a></h3>
2245 <h4 id="__run">__run()<a class="headerlink" href="#__run" title="Permanent link">#</a></h4>
2246 <p>This is the only method being invoked from the outside and starts the whole chain.</p>
2247 <h4 id="readparameters">readParameters()<a class="headerlink" href="#readparameters" title="Permanent link">#</a></h4>
2248 <p>Reads and sanitizes request parameters, this should be the only method to ever read user-supplied input. Read data should be stored in class properties to be accessible at a later point, allowing your code to safely assume that the data has been sanitized and is safe to work with.</p>
2249 <p>A typical example is the board page from the forum app that reads the id and attempts to identify the request forum.</p>
2250 <div class="highlight"><pre><span></span><code><span class="k">public</span> <span class="k">function</span> <span class="nf">readParameters</span><span class="p">()</span> <span class="p">{</span>
2251 <span class="k">parent</span><span class="o">::</span><span class="na">readParameters</span><span class="p">();</span>
2252
2253 <span class="k">if</span> <span class="p">(</span><span class="nb">isset</span><span class="p">(</span><span class="nv">$_REQUEST</span><span class="p">[</span><span class="s1">&#39;id&#39;</span><span class="p">]))</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">boardID</span> <span class="o">=</span> <span class="nb">intval</span><span class="p">(</span><span class="nv">$_REQUEST</span><span class="p">[</span><span class="s1">&#39;id&#39;</span><span class="p">]);</span>
2254 <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">board</span> <span class="o">=</span> <span class="nx">BoardCache</span><span class="o">::</span><span class="na">getInstance</span><span class="p">()</span><span class="o">-&gt;</span><span class="na">getBoard</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">boardID</span><span class="p">);</span>
2255 <span class="k">if</span> <span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">board</span> <span class="o">===</span> <span class="k">null</span><span class="p">)</span> <span class="p">{</span>
2256 <span class="k">throw</span> <span class="k">new</span> <span class="nx">IllegalLinkException</span><span class="p">();</span>
2257 <span class="p">}</span>
2258
2259 <span class="c1">// check permissions</span>
2260 <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">board</span><span class="o">-&gt;</span><span class="na">canEnter</span><span class="p">())</span> <span class="p">{</span>
2261 <span class="k">throw</span> <span class="k">new</span> <span class="nx">PermissionDeniedException</span><span class="p">();</span>
2262 <span class="p">}</span>
2263 <span class="p">}</span>
2264 </code></pre></div>
2265 <p><span class="label label-info">Events</span> <code>readParameters</code></p>
2266 <h4 id="show">show()<a class="headerlink" href="#show" title="Permanent link">#</a></h4>
2267 <p>Used to be the method of choice to handle permissions and module option checks, but has been used almost entirely as an internal method since the introduction of the properties <code>$loginRequired</code>, <code>$neededModules</code> and <code>$neededPermissions</code>.</p>
2268 <p><span class="label label-info">Events</span> <code>checkModules</code>, <code>checkPermissions</code> and <code>show</code></p>
2269 <h4 id="readdata">readData()<a class="headerlink" href="#readdata" title="Permanent link">#</a></h4>
2270 <p>Central method for data retrieval based on class properties including those populated with user data in <code>readParameters()</code>. It is strongly recommended to use this method to read data in order to properly separate the business logic present in your class.</p>
2271 <p><span class="label label-info">Events</span> <code>readData</code></p>
2272 <h4 id="assignvariables">assignVariables()<a class="headerlink" href="#assignvariables" title="Permanent link">#</a></h4>
2273 <p>Last method call before the template engine kicks in and renders the template. All though some properties are bound to the template automatically, you still need to pass any custom variables and class properties to the engine to make them available in templates.</p>
2274 <p>Following the example in <code>readParameters()</code>, the code below adds the board data to the template.</p>
2275 <div class="highlight"><pre><span></span><code><span class="k">public</span> <span class="k">function</span> <span class="nf">assignVariables</span><span class="p">()</span> <span class="p">{</span>
2276 <span class="k">parent</span><span class="o">::</span><span class="na">assignVariables</span><span class="p">();</span>
2277
2278 <span class="nx">WCF</span><span class="o">::</span><span class="na">getTPL</span><span class="p">()</span><span class="o">-&gt;</span><span class="na">assign</span><span class="p">([</span>
2279 <span class="s1">&#39;board&#39;</span> <span class="o">=&gt;</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">board</span><span class="p">,</span>
2280 <span class="s1">&#39;boardID&#39;</span> <span class="o">=&gt;</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">boardID</span>
2281 <span class="p">]);</span>
2282 <span class="p">}</span>
2283 </code></pre></div>
2284 <p><span class="label label-info">Events</span> <code>assignVariables</code></p>
2285 <h2 id="abstractform">AbstractForm<a class="headerlink" href="#abstractform" title="Permanent link">#</a></h2>
2286 <p>Extends the AbstractPage implementation with additional methods designed to handle form submissions properly.</p>
2287 <h3 id="method-chain_1">Method Chain<a class="headerlink" href="#method-chain_1" title="Permanent link">#</a></h3>
2288 <h4 id="__run_1">__run()<a class="headerlink" href="#__run_1" title="Permanent link">#</a></h4>
2289 <p><em>Inherited from AbstractPage.</em></p>
2290 <h4 id="readparameters_1">readParameters()<a class="headerlink" href="#readparameters_1" title="Permanent link">#</a></h4>
2291 <p><em>Inherited from AbstractPage.</em></p>
2292 <h4 id="show_1">show()<a class="headerlink" href="#show_1" title="Permanent link">#</a></h4>
2293 <p><em>Inherited from AbstractPage.</em></p>
2294 <h4 id="submit">submit()<a class="headerlink" href="#submit" title="Permanent link">#</a></h4>
2295 <div class="admonition warning">
2296 <p class="admonition-title">The methods <code>submit()</code> up until <code>save()</code> are only invoked if either <code>$_POST</code> or <code>$_FILES</code> are not empty, otherwise they won't be invoked and the execution will continue with <code>readData()</code>.</p>
2297 </div>
2298 <p>This is an internal method that is responsible of input processing and validation.</p>
2299 <p><span class="label label-info">Events</span> <code>submit</code></p>
2300 <h4 id="readformparameters">readFormParameters()<a class="headerlink" href="#readformparameters" title="Permanent link">#</a></h4>
2301 <p>This method is quite similar to <code>readParameters()</code> that is being called earlier, but is designed around reading form data submitted through POST requests. You should avoid accessing <code>$_GET</code> or <code>$_REQUEST</code> in this context to avoid mixing up parameters evaluated when retrieving the page on first load and when submitting to it.</p>
2302 <p><span class="label label-info">Events</span> <code>readFormParameters</code></p>
2303 <h4 id="validate">validate()<a class="headerlink" href="#validate" title="Permanent link">#</a></h4>
2304 <p>Deals with input validation and automatically catches exceptions deriving from <code>wcf\system\exception\UserInputException</code>, resulting in a clean and consistent error handling for the user.</p>
2305 <p><span class="label label-info">Events</span> <code>validate</code></p>
2306 <h4 id="save">save()<a class="headerlink" href="#save" title="Permanent link">#</a></h4>
2307 <p>Saves the processed data to database or any other source of your choice. Please keep in mind to invoke <code>$this-&gt;saved()</code> before resetting the form data.</p>
2308 <p><span class="label label-info">Events</span> <code>save</code></p>
2309 <h4 id="saved">saved()<a class="headerlink" href="#saved" title="Permanent link">#</a></h4>
2310 <div class="admonition warning">
2311 <p class="admonition-title">This method is not called automatically and must be invoked manually by executing <code>$this-&gt;saved()</code> inside <code>save()</code>.</p>
2312 </div>
2313 <p>The only purpose of this method is to fire the event <code>saved</code> that signals that the form data has been processed successfully and data has been saved. It is somewhat special as it is dispatched after the data has been saved, but before the data is purged during form reset. This is by default the last event that has access to the processed data.</p>
2314 <p><span class="label label-info">Events</span> <code>saved</code></p>
2315 <h4 id="readdata_1">readData()<a class="headerlink" href="#readdata_1" title="Permanent link">#</a></h4>
2316 <p><em>Inherited from AbstractPage.</em></p>
2317 <h4 id="assignvariables_1">assignVariables()<a class="headerlink" href="#assignvariables_1" title="Permanent link">#</a></h4>
2318 <p><em>Inherited from AbstractPage.</em></p>
2319
2320
2321
2322
2323 <hr>
2324 <div class="md-source-date">
2325 <small>
2326
2327 Last update: 2021-01-08
2328
2329 </small>
2330 </div>
2331
2332
2333
2334
2335
2336
2337
2338
2339 </article>
2340 </div>
2341 </div>
2342
2343 </main>
2344
2345
2346 <footer class="md-footer">
2347
2348 <nav class="md-footer__inner md-grid" aria-label="Footer">
2349
2350 <a href="../../getting-started/" class="md-footer__link md-footer__link--prev" rel="prev">
2351 <div class="md-footer__button md-icon">
2352 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
2353 </div>
2354 <div class="md-footer__title">
2355 <div class="md-ellipsis">
2356 <span class="md-footer__direction">
2357 Previous
2358 </span>
2359 Getting Started
2360 </div>
2361 </div>
2362 </a>
2363
2364
2365 <a href="../database-objects/" class="md-footer__link md-footer__link--next" rel="next">
2366 <div class="md-footer__title">
2367 <div class="md-ellipsis">
2368 <span class="md-footer__direction">
2369 Next
2370 </span>
2371 Database Objects
2372 </div>
2373 </div>
2374 <div class="md-footer__button md-icon">
2375 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"/></svg>
2376 </div>
2377 </a>
2378
2379 </nav>
2380
2381 <div class="md-footer-meta md-typeset">
2382 <div class="md-footer-meta__inner md-grid">
2383 <div class="md-footer-copyright">
2384
2385 <div class="md-footer-copyright__highlight">
2386 Copyright © 2020 WoltLab GmbH
2387 </div>
2388
2389 Made with
2390 <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
2391 Material for MkDocs
2392 </a>
2393
2394 </div>
2395 <div class="md-footer-copyright">
2396 <a href="https://www.woltlab.com/legal-notice/">Legal Notice</a>
2397 <a href="https://www.woltlab.com/privacy-policy/">Privacy Policy</a>
2398 </div>
2399 </div>
2400 </div>
2401 </footer>
2402
2403 </div>
2404 <div class="md-dialog" data-md-component="dialog">
2405 <div class="md-dialog__inner md-typeset"></div>
2406 </div>
2407 <script id="__config" type="application/json">{"base": "../..", "features": [], "translations": {"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}, "search": "../../assets/javascripts/workers/search.fe42c31b.min.js", "version": {"provider": "mike"}}</script>
2408
2409
2410 <script src="../../assets/javascripts/bundle.d892486b.min.js"></script>
2411
2412
2413 </body>
2414 </html>