Copied 5.4 to latest with mike 0.5.5
[GitHub/WoltLab/woltlab.github.io.git] / latest / package / package-xml / 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="shortcut icon" href="../../assets/default.favicon.ico">
13 <meta name="generator" content="mkdocs-1.1.2, mkdocs-material-7.0.3">
14
15
16
17 <title>package.xml - WoltLab Suite Documentation</title>
18
19
20
21 <link rel="stylesheet" href="../../assets/stylesheets/main.1655a90d.min.css">
22
23
24 <link rel="stylesheet" href="../../assets/stylesheets/palette.7fa14f5b.min.css">
25
26
27
28 <meta name="theme-color" content="#009485">
29
30
31
32
33
34
35
36
37 <link rel="stylesheet" href="../../stylesheets/extra.css">
38
39
40
41
42
43 </head>
44
45
46
47
48
49
50
51 <body dir="ltr" data-md-color-scheme="" data-md-color-primary="teal" data-md-color-accent="">
52
53
54
55 <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
56 <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
57 <label class="md-overlay" for="__drawer"></label>
58 <div data-md-component="skip">
59
60
61 <a href="#packagexml" class="md-skip">
62 Skip to content
63 </a>
64
65 </div>
66 <div data-md-component="announce">
67
68 <aside class="md-announce">
69 <div class="md-announce__inner md-grid md-typeset">
70
71 <a href="https://www.woltlab.com">Back to <strong>woltlab.com</strong></a>
72
73 </div>
74 </aside>
75
76 </div>
77
78
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">
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 package.xml
101
102 </span>
103 </div>
104 </div>
105 </div>
106 <div class="md-header__options">
107
108 </div>
109
110 <label class="md-header__button md-icon" for="__search">
111 <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>
112 </label>
113
114 <div class="md-search" data-md-component="search" role="dialog">
115 <label class="md-search__overlay" for="__search"></label>
116 <div class="md-search__inner" role="search">
117 <form class="md-search__form" name="search">
118 <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>
119 <label class="md-search__icon md-icon" for="__search">
120 <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>
121 <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>
122 </label>
123 <button type="reset" class="md-search__icon md-icon" aria-label="Clear" tabindex="-1">
124 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41L17.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>
125 </button>
126 </form>
127 <div class="md-search__output">
128 <div class="md-search__scrollwrap" data-md-scrollfix>
129 <div class="md-search-result" data-md-component="search-result">
130 <div class="md-search-result__meta">
131 Initializing search
132 </div>
133 <ol class="md-search-result__list"></ol>
134 </div>
135 </div>
136 </div>
137 </div>
138 </div>
139
140
141 </nav>
142 </header>
143
144 <div class="md-container" data-md-component="container">
145
146
147
148
149 <main class="md-main" data-md-component="main">
150 <div class="md-main__inner md-grid">
151
152
153
154 <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
155 <div class="md-sidebar__scrollwrap">
156 <div class="md-sidebar__inner">
157
158
159
160
161
162 <nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
163 <label class="md-nav__title" for="__drawer">
164 <a href="../.." title="WoltLab Suite Documentation" class="md-nav__button md-logo" aria-label="WoltLab Suite Documentation">
165
166 <img src="../../assets/logo.png" alt="logo">
167
168 </a>
169 WoltLab Suite Documentation
170 </label>
171
172 <ul class="md-nav__list" data-md-scrollfix>
173
174
175
176
177
178
179
180
181 <li class="md-nav__item">
182 <a href="../../getting-started/" class="md-nav__link">
183 Getting Started
184 </a>
185 </li>
186
187
188
189
190
191
192
193
194
195
196
197 <li class="md-nav__item md-nav__item--nested">
198
199
200 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2" type="checkbox" id="__nav_2" >
201
202 <label class="md-nav__link" for="__nav_2">
203 PHP API
204 <span class="md-nav__icon md-icon"></span>
205 </label>
206 <nav class="md-nav" aria-label="PHP API" data-md-level="1">
207 <label class="md-nav__title" for="__nav_2">
208 <span class="md-nav__icon md-icon"></span>
209 PHP API
210 </label>
211 <ul class="md-nav__list" data-md-scrollfix>
212
213
214
215
216
217 <li class="md-nav__item">
218 <a href="../../php/pages/" class="md-nav__link">
219 Pages
220 </a>
221 </li>
222
223
224
225
226
227
228
229 <li class="md-nav__item">
230 <a href="../../php/database-objects/" class="md-nav__link">
231 Database Objects
232 </a>
233 </li>
234
235
236
237
238
239
240
241 <li class="md-nav__item">
242 <a href="../../php/database-access/" class="md-nav__link">
243 Database Access
244 </a>
245 </li>
246
247
248
249
250
251
252
253 <li class="md-nav__item">
254 <a href="../../php/exceptions/" class="md-nav__link">
255 Exceptions
256 </a>
257 </li>
258
259
260
261
262
263
264
265
266 <li class="md-nav__item md-nav__item--nested">
267
268
269 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_5" type="checkbox" id="__nav_2_5" >
270
271 <label class="md-nav__link" for="__nav_2_5">
272 API
273 <span class="md-nav__icon md-icon"></span>
274 </label>
275 <nav class="md-nav" aria-label="API" data-md-level="2">
276 <label class="md-nav__title" for="__nav_2_5">
277 <span class="md-nav__icon md-icon"></span>
278 API
279 </label>
280 <ul class="md-nav__list" data-md-scrollfix>
281
282
283
284
285
286 <li class="md-nav__item">
287 <a href="../../php/api/caches/" class="md-nav__link">
288 Caches
289 </a>
290 </li>
291
292
293
294
295
296
297
298 <li class="md-nav__item">
299 <a href="../../php/api/comments/" class="md-nav__link">
300 Comments
301 </a>
302 </li>
303
304
305
306
307
308
309
310 <li class="md-nav__item">
311 <a href="../../php/api/cronjobs/" class="md-nav__link">
312 Cronjobs
313 </a>
314 </li>
315
316
317
318
319
320
321
322 <li class="md-nav__item">
323 <a href="../../php/api/events/" class="md-nav__link">
324 Events
325 </a>
326 </li>
327
328
329
330
331
332
333
334
335 <li class="md-nav__item md-nav__item--nested">
336
337
338 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_5_5" type="checkbox" id="__nav_2_5_5" >
339
340 <label class="md-nav__link" for="__nav_2_5_5">
341 Form Builder
342 <span class="md-nav__icon md-icon"></span>
343 </label>
344 <nav class="md-nav" aria-label="Form Builder" data-md-level="3">
345 <label class="md-nav__title" for="__nav_2_5_5">
346 <span class="md-nav__icon md-icon"></span>
347 Form Builder
348 </label>
349 <ul class="md-nav__list" data-md-scrollfix>
350
351
352
353
354
355 <li class="md-nav__item">
356 <a href="../../php/api/form_builder/overview/" class="md-nav__link">
357 Overview
358 </a>
359 </li>
360
361
362
363
364
365
366
367 <li class="md-nav__item">
368 <a href="../../php/api/form_builder/structure/" class="md-nav__link">
369 Structure
370 </a>
371 </li>
372
373
374
375
376
377
378
379 <li class="md-nav__item">
380 <a href="../../php/api/form_builder/form_fields/" class="md-nav__link">
381 Fields
382 </a>
383 </li>
384
385
386
387
388
389
390
391 <li class="md-nav__item">
392 <a href="../../php/api/form_builder/validation_data/" class="md-nav__link">
393 Validation and Data
394 </a>
395 </li>
396
397
398
399
400
401
402
403 <li class="md-nav__item">
404 <a href="../../php/api/form_builder/dependencies/" class="md-nav__link">
405 Dependencies
406 </a>
407 </li>
408
409
410
411 </ul>
412 </nav>
413 </li>
414
415
416
417
418
419
420
421 <li class="md-nav__item">
422 <a href="../../php/api/package_installation_plugins/" class="md-nav__link">
423 Package Installation Plugins
424 </a>
425 </li>
426
427
428
429
430
431
432
433 <li class="md-nav__item">
434 <a href="../../php/api/user_activity_points/" class="md-nav__link">
435 User Activity Points
436 </a>
437 </li>
438
439
440
441
442
443
444
445 <li class="md-nav__item">
446 <a href="../../php/api/user_notifications/" class="md-nav__link">
447 User Notifications
448 </a>
449 </li>
450
451
452
453
454
455
456
457 <li class="md-nav__item">
458 <a href="../../php/api/sitemaps/" class="md-nav__link">
459 Sitemaps
460 </a>
461 </li>
462
463
464
465 </ul>
466 </nav>
467 </li>
468
469
470
471
472
473
474
475 <li class="md-nav__item">
476 <a href="../../php/code-style/" class="md-nav__link">
477 Code Style
478 </a>
479 </li>
480
481
482
483
484
485
486
487 <li class="md-nav__item">
488 <a href="../../php/apps/" class="md-nav__link">
489 Apps
490 </a>
491 </li>
492
493
494
495
496
497
498
499 <li class="md-nav__item">
500 <a href="../../php/gdpr/" class="md-nav__link">
501 GDPR
502 </a>
503 </li>
504
505
506
507 </ul>
508 </nav>
509 </li>
510
511
512
513
514
515
516
517
518
519
520
521 <li class="md-nav__item md-nav__item--nested">
522
523
524 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3" type="checkbox" id="__nav_3" >
525
526 <label class="md-nav__link" for="__nav_3">
527 Languages, Templates & CSS
528 <span class="md-nav__icon md-icon"></span>
529 </label>
530 <nav class="md-nav" aria-label="Languages, Templates & CSS" data-md-level="1">
531 <label class="md-nav__title" for="__nav_3">
532 <span class="md-nav__icon md-icon"></span>
533 Languages, Templates & CSS
534 </label>
535 <ul class="md-nav__list" data-md-scrollfix>
536
537
538
539
540
541 <li class="md-nav__item">
542 <a href="../../view/languages/" class="md-nav__link">
543 Languages
544 </a>
545 </li>
546
547
548
549
550
551
552
553 <li class="md-nav__item">
554 <a href="../../view/templates/" class="md-nav__link">
555 Templates
556 </a>
557 </li>
558
559
560
561
562
563
564
565 <li class="md-nav__item">
566 <a href="../../view/css/" class="md-nav__link">
567 CSS
568 </a>
569 </li>
570
571
572
573 </ul>
574 </nav>
575 </li>
576
577
578
579
580
581
582
583
584
585
586
587 <li class="md-nav__item md-nav__item--nested">
588
589
590 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_4" type="checkbox" id="__nav_4" >
591
592 <label class="md-nav__link" for="__nav_4">
593 JavaScript API
594 <span class="md-nav__icon md-icon"></span>
595 </label>
596 <nav class="md-nav" aria-label="JavaScript API" data-md-level="1">
597 <label class="md-nav__title" for="__nav_4">
598 <span class="md-nav__icon md-icon"></span>
599 JavaScript API
600 </label>
601 <ul class="md-nav__list" data-md-scrollfix>
602
603
604
605
606
607 <li class="md-nav__item">
608 <a href="../../javascript/general-usage/" class="md-nav__link">
609 General Usage
610 </a>
611 </li>
612
613
614
615
616
617
618
619
620 <li class="md-nav__item md-nav__item--nested">
621
622
623 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" >
624
625 <label class="md-nav__link" for="__nav_4_2">
626 New API
627 <span class="md-nav__icon md-icon"></span>
628 </label>
629 <nav class="md-nav" aria-label="New API" data-md-level="2">
630 <label class="md-nav__title" for="__nav_4_2">
631 <span class="md-nav__icon md-icon"></span>
632 New API
633 </label>
634 <ul class="md-nav__list" data-md-scrollfix>
635
636
637
638
639
640 <li class="md-nav__item">
641 <a href="../../javascript/new-api_writing-a-module/" class="md-nav__link">
642 Writing a module
643 </a>
644 </li>
645
646
647
648
649
650
651
652 <li class="md-nav__item">
653 <a href="../../javascript/new-api_data-structures/" class="md-nav__link">
654 Data Structures
655 </a>
656 </li>
657
658
659
660
661
662
663
664 <li class="md-nav__item">
665 <a href="../../javascript/new-api_core/" class="md-nav__link">
666 Core Functions
667 </a>
668 </li>
669
670
671
672
673
674
675
676 <li class="md-nav__item">
677 <a href="../../javascript/new-api_dom/" class="md-nav__link">
678 DOM
679 </a>
680 </li>
681
682
683
684
685
686
687
688 <li class="md-nav__item">
689 <a href="../../javascript/new-api_events/" class="md-nav__link">
690 Event Handling
691 </a>
692 </li>
693
694
695
696
697
698
699
700 <li class="md-nav__item">
701 <a href="../../javascript/new-api_ajax/" class="md-nav__link">
702 Ajax
703 </a>
704 </li>
705
706
707
708
709
710
711
712 <li class="md-nav__item">
713 <a href="../../javascript/new-api_dialogs/" class="md-nav__link">
714 Dialogs
715 </a>
716 </li>
717
718
719
720
721
722
723
724 <li class="md-nav__item">
725 <a href="../../javascript/new-api_browser/" class="md-nav__link">
726 Browser and Screen Sizes
727 </a>
728 </li>
729
730
731
732
733
734
735
736 <li class="md-nav__item">
737 <a href="../../javascript/new-api_ui/" class="md-nav__link">
738 User Interface
739 </a>
740 </li>
741
742
743
744 </ul>
745 </nav>
746 </li>
747
748
749
750
751
752
753
754 <li class="md-nav__item">
755 <a href="../../javascript/legacy-api/" class="md-nav__link">
756 Legacy API
757 </a>
758 </li>
759
760
761
762
763
764
765
766 <li class="md-nav__item">
767 <a href="../../javascript/helper-functions/" class="md-nav__link">
768 Helper Functions
769 </a>
770 </li>
771
772
773
774
775
776
777
778 <li class="md-nav__item">
779 <a href="../../javascript/code-snippets/" class="md-nav__link">
780 Code Snippets
781 </a>
782 </li>
783
784
785
786 </ul>
787 </nav>
788 </li>
789
790
791
792
793
794
795
796
797
798
799
800
801
802 <li class="md-nav__item md-nav__item--active md-nav__item--nested">
803
804
805 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5" type="checkbox" id="__nav_5" checked>
806
807 <label class="md-nav__link" for="__nav_5">
808 Package Components
809 <span class="md-nav__icon md-icon"></span>
810 </label>
811 <nav class="md-nav" aria-label="Package Components" data-md-level="1">
812 <label class="md-nav__title" for="__nav_5">
813 <span class="md-nav__icon md-icon"></span>
814 Package Components
815 </label>
816 <ul class="md-nav__list" data-md-scrollfix>
817
818
819
820
821
822
823
824 <li class="md-nav__item md-nav__item--active">
825
826 <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
827
828
829
830
831 <label class="md-nav__link md-nav__link--active" for="__toc">
832 package.xml
833 <span class="md-nav__icon md-icon"></span>
834 </label>
835
836 <a href="./" class="md-nav__link md-nav__link--active">
837 package.xml
838 </a>
839
840
841 <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
842
843
844
845
846
847 <label class="md-nav__title" for="__toc">
848 <span class="md-nav__icon md-icon"></span>
849 Table of contents
850 </label>
851 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
852
853 <li class="md-nav__item">
854 <a href="#example" class="md-nav__link">
855 Example
856 </a>
857
858 </li>
859
860 <li class="md-nav__item">
861 <a href="#elements" class="md-nav__link">
862 Elements
863 </a>
864
865 <nav class="md-nav" aria-label="Elements">
866 <ul class="md-nav__list">
867
868 <li class="md-nav__item">
869 <a href="#package" class="md-nav__link">
870 &lt;package&gt;
871 </a>
872
873 </li>
874
875 <li class="md-nav__item">
876 <a href="#packageinformation" class="md-nav__link">
877 &lt;packageinformation&gt;
878 </a>
879
880 <nav class="md-nav" aria-label="&lt;packageinformation&gt;">
881 <ul class="md-nav__list">
882
883 <li class="md-nav__item">
884 <a href="#packagename" class="md-nav__link">
885 &lt;packagename&gt;
886 </a>
887
888 </li>
889
890 <li class="md-nav__item">
891 <a href="#packagedescription" class="md-nav__link">
892 &lt;packagedescription&gt;
893 </a>
894
895 </li>
896
897 <li class="md-nav__item">
898 <a href="#version" class="md-nav__link">
899 &lt;version&gt;
900 </a>
901
902 </li>
903
904 <li class="md-nav__item">
905 <a href="#date" class="md-nav__link">
906 &lt;date&gt;
907 </a>
908
909 </li>
910
911 </ul>
912 </nav>
913
914 </li>
915
916 <li class="md-nav__item">
917 <a href="#authorinformation" class="md-nav__link">
918 &lt;authorinformation&gt;
919 </a>
920
921 <nav class="md-nav" aria-label="&lt;authorinformation&gt;">
922 <ul class="md-nav__list">
923
924 <li class="md-nav__item">
925 <a href="#author" class="md-nav__link">
926 &lt;author&gt;
927 </a>
928
929 </li>
930
931 <li class="md-nav__item">
932 <a href="#authorurl" class="md-nav__link">
933 &lt;authorurl&gt;
934 </a>
935
936 </li>
937
938 </ul>
939 </nav>
940
941 </li>
942
943 <li class="md-nav__item">
944 <a href="#requiredpackages" class="md-nav__link">
945 &lt;requiredpackages&gt;
946 </a>
947
948 <nav class="md-nav" aria-label="&lt;requiredpackages&gt;">
949 <ul class="md-nav__list">
950
951 <li class="md-nav__item">
952 <a href="#requiredpackage" class="md-nav__link">
953 &lt;requiredpackage&gt;
954 </a>
955
956 </li>
957
958 </ul>
959 </nav>
960
961 </li>
962
963 <li class="md-nav__item">
964 <a href="#optionalpackage" class="md-nav__link">
965 &lt;optionalpackage&gt;
966 </a>
967
968 <nav class="md-nav" aria-label="&lt;optionalpackage&gt;">
969 <ul class="md-nav__list">
970
971 <li class="md-nav__item">
972 <a href="#optionalpackage_1" class="md-nav__link">
973 &lt;optionalpackage&gt;
974 </a>
975
976 </li>
977
978 </ul>
979 </nav>
980
981 </li>
982
983 <li class="md-nav__item">
984 <a href="#excludedpackages" class="md-nav__link">
985 &lt;excludedpackages&gt;
986 </a>
987
988 <nav class="md-nav" aria-label="&lt;excludedpackages&gt;">
989 <ul class="md-nav__list">
990
991 <li class="md-nav__item">
992 <a href="#excludedpackage" class="md-nav__link">
993 &lt;excludedpackage&gt;
994 </a>
995
996 </li>
997
998 <li class="md-nav__item">
999 <a href="#existing-api-versions" class="md-nav__link">
1000 Existing API versions
1001 </a>
1002
1003 </li>
1004
1005 </ul>
1006 </nav>
1007
1008 </li>
1009
1010 <li class="md-nav__item">
1011 <a href="#instructions" class="md-nav__link">
1012 &lt;instructions&gt;
1013 </a>
1014
1015 <nav class="md-nav" aria-label="&lt;instructions&gt;">
1016 <ul class="md-nav__list">
1017
1018 <li class="md-nav__item">
1019 <a href="#instructions-typeinstall" class="md-nav__link">
1020 &lt;instructions type="install"&gt;
1021 </a>
1022
1023 </li>
1024
1025 <li class="md-nav__item">
1026 <a href="#instructions-typeupdate-fromversion" class="md-nav__link">
1027 &lt;instructions type="update" fromversion="…"&gt;
1028 </a>
1029
1030 </li>
1031
1032 <li class="md-nav__item">
1033 <a href="#instruction" class="md-nav__link">
1034 &lt;instruction&gt;
1035 </a>
1036
1037 </li>
1038
1039 <li class="md-nav__item">
1040 <a href="#void" class="md-nav__link">
1041 &lt;void/&gt;
1042 </a>
1043
1044 </li>
1045
1046 </ul>
1047 </nav>
1048
1049 </li>
1050
1051 </ul>
1052 </nav>
1053
1054 </li>
1055
1056 </ul>
1057
1058 </nav>
1059
1060 </li>
1061
1062
1063
1064
1065
1066
1067
1068
1069 <li class="md-nav__item md-nav__item--nested">
1070
1071
1072 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5_2" type="checkbox" id="__nav_5_2" >
1073
1074 <label class="md-nav__link" for="__nav_5_2">
1075 PIPs
1076 <span class="md-nav__icon md-icon"></span>
1077 </label>
1078 <nav class="md-nav" aria-label="PIPs" data-md-level="2">
1079 <label class="md-nav__title" for="__nav_5_2">
1080 <span class="md-nav__icon md-icon"></span>
1081 PIPs
1082 </label>
1083 <ul class="md-nav__list" data-md-scrollfix>
1084
1085
1086
1087
1088
1089 <li class="md-nav__item">
1090 <a href="../pip/" class="md-nav__link">
1091 Overview
1092 </a>
1093 </li>
1094
1095
1096
1097
1098
1099
1100
1101 <li class="md-nav__item">
1102 <a href="../pip/acl-option/" class="md-nav__link">
1103 aclOption
1104 </a>
1105 </li>
1106
1107
1108
1109
1110
1111
1112
1113 <li class="md-nav__item">
1114 <a href="../pip/acp-menu/" class="md-nav__link">
1115 acpMenu
1116 </a>
1117 </li>
1118
1119
1120
1121
1122
1123
1124
1125 <li class="md-nav__item">
1126 <a href="../pip/acp-search-provider/" class="md-nav__link">
1127 acpSearchProvider
1128 </a>
1129 </li>
1130
1131
1132
1133
1134
1135
1136
1137 <li class="md-nav__item">
1138 <a href="../pip/acp-template/" class="md-nav__link">
1139 acpTemplate
1140 </a>
1141 </li>
1142
1143
1144
1145
1146
1147
1148
1149 <li class="md-nav__item">
1150 <a href="../pip/bbcode/" class="md-nav__link">
1151 bbcode
1152 </a>
1153 </li>
1154
1155
1156
1157
1158
1159
1160
1161 <li class="md-nav__item">
1162 <a href="../pip/box/" class="md-nav__link">
1163 box
1164 </a>
1165 </li>
1166
1167
1168
1169
1170
1171
1172
1173 <li class="md-nav__item">
1174 <a href="../pip/clipboard-action/" class="md-nav__link">
1175 clipboardAction
1176 </a>
1177 </li>
1178
1179
1180
1181
1182
1183
1184
1185 <li class="md-nav__item">
1186 <a href="../pip/core-object/" class="md-nav__link">
1187 coreObject
1188 </a>
1189 </li>
1190
1191
1192
1193
1194
1195
1196
1197 <li class="md-nav__item">
1198 <a href="../pip/cronjob/" class="md-nav__link">
1199 cronjob
1200 </a>
1201 </li>
1202
1203
1204
1205
1206
1207
1208
1209 <li class="md-nav__item">
1210 <a href="../pip/event-listener/" class="md-nav__link">
1211 eventListener
1212 </a>
1213 </li>
1214
1215
1216
1217
1218
1219
1220
1221 <li class="md-nav__item">
1222 <a href="../pip/file/" class="md-nav__link">
1223 file
1224 </a>
1225 </li>
1226
1227
1228
1229
1230
1231
1232
1233 <li class="md-nav__item">
1234 <a href="../pip/language/" class="md-nav__link">
1235 language
1236 </a>
1237 </li>
1238
1239
1240
1241
1242
1243
1244
1245 <li class="md-nav__item">
1246 <a href="../pip/media-provider/" class="md-nav__link">
1247 mediaProvider
1248 </a>
1249 </li>
1250
1251
1252
1253
1254
1255
1256
1257 <li class="md-nav__item">
1258 <a href="../pip/menu/" class="md-nav__link">
1259 menu
1260 </a>
1261 </li>
1262
1263
1264
1265
1266
1267
1268
1269 <li class="md-nav__item">
1270 <a href="../pip/menu-item/" class="md-nav__link">
1271 menuItem
1272 </a>
1273 </li>
1274
1275
1276
1277
1278
1279
1280
1281 <li class="md-nav__item">
1282 <a href="../pip/object-type/" class="md-nav__link">
1283 objectType
1284 </a>
1285 </li>
1286
1287
1288
1289
1290
1291
1292
1293 <li class="md-nav__item">
1294 <a href="../pip/object-type-definition/" class="md-nav__link">
1295 objectTypeDefinition
1296 </a>
1297 </li>
1298
1299
1300
1301
1302
1303
1304
1305 <li class="md-nav__item">
1306 <a href="../pip/option/" class="md-nav__link">
1307 option
1308 </a>
1309 </li>
1310
1311
1312
1313
1314
1315
1316
1317 <li class="md-nav__item">
1318 <a href="../pip/page/" class="md-nav__link">
1319 page
1320 </a>
1321 </li>
1322
1323
1324
1325
1326
1327
1328
1329 <li class="md-nav__item">
1330 <a href="../pip/pip/" class="md-nav__link">
1331 pip
1332 </a>
1333 </li>
1334
1335
1336
1337
1338
1339
1340
1341 <li class="md-nav__item">
1342 <a href="../pip/script/" class="md-nav__link">
1343 script
1344 </a>
1345 </li>
1346
1347
1348
1349
1350
1351
1352
1353 <li class="md-nav__item">
1354 <a href="../pip/smiley/" class="md-nav__link">
1355 smiley
1356 </a>
1357 </li>
1358
1359
1360
1361
1362
1363
1364
1365 <li class="md-nav__item">
1366 <a href="../pip/sql/" class="md-nav__link">
1367 sql
1368 </a>
1369 </li>
1370
1371
1372
1373
1374
1375
1376
1377 <li class="md-nav__item">
1378 <a href="../pip/style/" class="md-nav__link">
1379 style
1380 </a>
1381 </li>
1382
1383
1384
1385
1386
1387
1388
1389 <li class="md-nav__item">
1390 <a href="../pip/template/" class="md-nav__link">
1391 template
1392 </a>
1393 </li>
1394
1395
1396
1397
1398
1399
1400
1401 <li class="md-nav__item">
1402 <a href="../pip/template-listener/" class="md-nav__link">
1403 templateListener
1404 </a>
1405 </li>
1406
1407
1408
1409
1410
1411
1412
1413 <li class="md-nav__item">
1414 <a href="../pip/user-group-option/" class="md-nav__link">
1415 userGroupOption
1416 </a>
1417 </li>
1418
1419
1420
1421
1422
1423
1424
1425 <li class="md-nav__item">
1426 <a href="../pip/user-menu/" class="md-nav__link">
1427 userMenu
1428 </a>
1429 </li>
1430
1431
1432
1433
1434
1435
1436
1437 <li class="md-nav__item">
1438 <a href="../pip/user-notification-event/" class="md-nav__link">
1439 userNotificationEvent
1440 </a>
1441 </li>
1442
1443
1444
1445
1446
1447
1448
1449 <li class="md-nav__item">
1450 <a href="../pip/user-option/" class="md-nav__link">
1451 userOption
1452 </a>
1453 </li>
1454
1455
1456
1457
1458
1459
1460
1461 <li class="md-nav__item">
1462 <a href="../pip/user-profile-menu/" class="md-nav__link">
1463 userProfileMenu
1464 </a>
1465 </li>
1466
1467
1468
1469 </ul>
1470 </nav>
1471 </li>
1472
1473
1474
1475
1476
1477
1478
1479 <li class="md-nav__item">
1480 <a href="../database-php-api/" class="md-nav__link">
1481 Database PHP API
1482 </a>
1483 </li>
1484
1485
1486
1487 </ul>
1488 </nav>
1489 </li>
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501 <li class="md-nav__item md-nav__item--nested">
1502
1503
1504 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6" type="checkbox" id="__nav_6" >
1505
1506 <label class="md-nav__link" for="__nav_6">
1507 Migration
1508 <span class="md-nav__icon md-icon"></span>
1509 </label>
1510 <nav class="md-nav" aria-label="Migration" data-md-level="1">
1511 <label class="md-nav__title" for="__nav_6">
1512 <span class="md-nav__icon md-icon"></span>
1513 Migration
1514 </label>
1515 <ul class="md-nav__list" data-md-scrollfix>
1516
1517
1518
1519
1520
1521
1522 <li class="md-nav__item md-nav__item--nested">
1523
1524
1525 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_1" type="checkbox" id="__nav_6_1" >
1526
1527 <label class="md-nav__link" for="__nav_6_1">
1528 Migrating from WSC 5.3
1529 <span class="md-nav__icon md-icon"></span>
1530 </label>
1531 <nav class="md-nav" aria-label="Migrating from WSC 5.3" data-md-level="2">
1532 <label class="md-nav__title" for="__nav_6_1">
1533 <span class="md-nav__icon md-icon"></span>
1534 Migrating from WSC 5.3
1535 </label>
1536 <ul class="md-nav__list" data-md-scrollfix>
1537
1538
1539
1540
1541
1542 <li class="md-nav__item">
1543 <a href="../../migration/wsc53/php/" class="md-nav__link">
1544 PHP API
1545 </a>
1546 </li>
1547
1548
1549
1550
1551
1552
1553
1554 <li class="md-nav__item">
1555 <a href="../../migration/wsc53/session/" class="md-nav__link">
1556 Session Handling and Authentication
1557 </a>
1558 </li>
1559
1560
1561
1562
1563
1564
1565
1566 <li class="md-nav__item">
1567 <a href="../../migration/wsc53/javascript/" class="md-nav__link">
1568 JavaScript
1569 </a>
1570 </li>
1571
1572
1573
1574
1575
1576
1577
1578 <li class="md-nav__item">
1579 <a href="../../migration/wsc53/templates/" class="md-nav__link">
1580 Templates
1581 </a>
1582 </li>
1583
1584
1585
1586
1587
1588
1589
1590 <li class="md-nav__item">
1591 <a href="../../migration/wsc53/libraries/" class="md-nav__link">
1592 Third Party Libraries
1593 </a>
1594 </li>
1595
1596
1597
1598 </ul>
1599 </nav>
1600 </li>
1601
1602
1603
1604
1605
1606
1607
1608
1609 <li class="md-nav__item md-nav__item--nested">
1610
1611
1612 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_2" type="checkbox" id="__nav_6_2" >
1613
1614 <label class="md-nav__link" for="__nav_6_2">
1615 Migrating from WSC 5.2
1616 <span class="md-nav__icon md-icon"></span>
1617 </label>
1618 <nav class="md-nav" aria-label="Migrating from WSC 5.2" data-md-level="2">
1619 <label class="md-nav__title" for="__nav_6_2">
1620 <span class="md-nav__icon md-icon"></span>
1621 Migrating from WSC 5.2
1622 </label>
1623 <ul class="md-nav__list" data-md-scrollfix>
1624
1625
1626
1627
1628
1629 <li class="md-nav__item">
1630 <a href="../../migration/wsc52/php/" class="md-nav__link">
1631 PHP API
1632 </a>
1633 </li>
1634
1635
1636
1637
1638
1639
1640
1641 <li class="md-nav__item">
1642 <a href="../../migration/wsc52/templates/" class="md-nav__link">
1643 Templates and Languages
1644 </a>
1645 </li>
1646
1647
1648
1649
1650
1651
1652
1653 <li class="md-nav__item">
1654 <a href="../../migration/wsc52/libraries/" class="md-nav__link">
1655 Third Party Libraries
1656 </a>
1657 </li>
1658
1659
1660
1661 </ul>
1662 </nav>
1663 </li>
1664
1665
1666
1667
1668
1669
1670
1671
1672 <li class="md-nav__item md-nav__item--nested">
1673
1674
1675 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_3" type="checkbox" id="__nav_6_3" >
1676
1677 <label class="md-nav__link" for="__nav_6_3">
1678 Migrating from WSC 3.1
1679 <span class="md-nav__icon md-icon"></span>
1680 </label>
1681 <nav class="md-nav" aria-label="Migrating from WSC 3.1" data-md-level="2">
1682 <label class="md-nav__title" for="__nav_6_3">
1683 <span class="md-nav__icon md-icon"></span>
1684 Migrating from WSC 3.1
1685 </label>
1686 <ul class="md-nav__list" data-md-scrollfix>
1687
1688
1689
1690
1691
1692 <li class="md-nav__item">
1693 <a href="../../migration/wsc31/php/" class="md-nav__link">
1694 PHP API
1695 </a>
1696 </li>
1697
1698
1699
1700 </ul>
1701 </nav>
1702 </li>
1703
1704
1705
1706
1707
1708
1709
1710
1711 <li class="md-nav__item md-nav__item--nested">
1712
1713
1714 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_4" type="checkbox" id="__nav_6_4" >
1715
1716 <label class="md-nav__link" for="__nav_6_4">
1717 Migrating from WSC 3.0
1718 <span class="md-nav__icon md-icon"></span>
1719 </label>
1720 <nav class="md-nav" aria-label="Migrating from WSC 3.0" data-md-level="2">
1721 <label class="md-nav__title" for="__nav_6_4">
1722 <span class="md-nav__icon md-icon"></span>
1723 Migrating from WSC 3.0
1724 </label>
1725 <ul class="md-nav__list" data-md-scrollfix>
1726
1727
1728
1729
1730
1731 <li class="md-nav__item">
1732 <a href="../../migration/wsc30/php/" class="md-nav__link">
1733 PHP API
1734 </a>
1735 </li>
1736
1737
1738
1739
1740
1741
1742
1743 <li class="md-nav__item">
1744 <a href="../../migration/wsc30/javascript/" class="md-nav__link">
1745 JavaScript API
1746 </a>
1747 </li>
1748
1749
1750
1751
1752
1753
1754
1755 <li class="md-nav__item">
1756 <a href="../../migration/wsc30/templates/" class="md-nav__link">
1757 Templates
1758 </a>
1759 </li>
1760
1761
1762
1763
1764
1765
1766
1767 <li class="md-nav__item">
1768 <a href="../../migration/wsc30/css/" class="md-nav__link">
1769 CSS
1770 </a>
1771 </li>
1772
1773
1774
1775
1776
1777
1778
1779 <li class="md-nav__item">
1780 <a href="../../migration/wsc30/package/" class="md-nav__link">
1781 Package Components
1782 </a>
1783 </li>
1784
1785
1786
1787 </ul>
1788 </nav>
1789 </li>
1790
1791
1792
1793
1794
1795
1796
1797
1798 <li class="md-nav__item md-nav__item--nested">
1799
1800
1801 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_5" type="checkbox" id="__nav_6_5" >
1802
1803 <label class="md-nav__link" for="__nav_6_5">
1804 Migrating from WCF 2.1
1805 <span class="md-nav__icon md-icon"></span>
1806 </label>
1807 <nav class="md-nav" aria-label="Migrating from WCF 2.1" data-md-level="2">
1808 <label class="md-nav__title" for="__nav_6_5">
1809 <span class="md-nav__icon md-icon"></span>
1810 Migrating from WCF 2.1
1811 </label>
1812 <ul class="md-nav__list" data-md-scrollfix>
1813
1814
1815
1816
1817
1818 <li class="md-nav__item">
1819 <a href="../../migration/wcf21/php/" class="md-nav__link">
1820 PHP API
1821 </a>
1822 </li>
1823
1824
1825
1826
1827
1828
1829
1830 <li class="md-nav__item">
1831 <a href="../../migration/wcf21/templates/" class="md-nav__link">
1832 Templates
1833 </a>
1834 </li>
1835
1836
1837
1838
1839
1840
1841
1842 <li class="md-nav__item">
1843 <a href="../../migration/wcf21/css/" class="md-nav__link">
1844 CSS
1845 </a>
1846 </li>
1847
1848
1849
1850
1851
1852
1853
1854 <li class="md-nav__item">
1855 <a href="../../migration/wcf21/package/" class="md-nav__link">
1856 Package Components
1857 </a>
1858 </li>
1859
1860
1861
1862 </ul>
1863 </nav>
1864 </li>
1865
1866
1867
1868 </ul>
1869 </nav>
1870 </li>
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882 <li class="md-nav__item md-nav__item--nested">
1883
1884
1885 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_7" type="checkbox" id="__nav_7" >
1886
1887 <label class="md-nav__link" for="__nav_7">
1888 Tutorials
1889 <span class="md-nav__icon md-icon"></span>
1890 </label>
1891 <nav class="md-nav" aria-label="Tutorials" data-md-level="1">
1892 <label class="md-nav__title" for="__nav_7">
1893 <span class="md-nav__icon md-icon"></span>
1894 Tutorials
1895 </label>
1896 <ul class="md-nav__list" data-md-scrollfix>
1897
1898
1899
1900
1901
1902
1903 <li class="md-nav__item md-nav__item--nested">
1904
1905
1906 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_7_1" type="checkbox" id="__nav_7_1" >
1907
1908 <label class="md-nav__link" for="__nav_7_1">
1909 Tutorial Series
1910 <span class="md-nav__icon md-icon"></span>
1911 </label>
1912 <nav class="md-nav" aria-label="Tutorial Series" data-md-level="2">
1913 <label class="md-nav__title" for="__nav_7_1">
1914 <span class="md-nav__icon md-icon"></span>
1915 Tutorial Series
1916 </label>
1917 <ul class="md-nav__list" data-md-scrollfix>
1918
1919
1920
1921
1922
1923 <li class="md-nav__item">
1924 <a href="../../tutorial/series/overview/" class="md-nav__link">
1925 Overview
1926 </a>
1927 </li>
1928
1929
1930
1931
1932
1933
1934
1935 <li class="md-nav__item">
1936 <a href="../../tutorial/series/part_1/" class="md-nav__link">
1937 Part 1
1938 </a>
1939 </li>
1940
1941
1942
1943
1944
1945
1946
1947 <li class="md-nav__item">
1948 <a href="../../tutorial/series/part_2/" class="md-nav__link">
1949 Part 2
1950 </a>
1951 </li>
1952
1953
1954
1955
1956
1957
1958
1959 <li class="md-nav__item">
1960 <a href="../../tutorial/series/part_3/" class="md-nav__link">
1961 Part 3
1962 </a>
1963 </li>
1964
1965
1966
1967 </ul>
1968 </nav>
1969 </li>
1970
1971
1972
1973 </ul>
1974 </nav>
1975 </li>
1976
1977
1978
1979 </ul>
1980 </nav>
1981 </div>
1982 </div>
1983 </div>
1984
1985
1986
1987 <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
1988 <div class="md-sidebar__scrollwrap">
1989 <div class="md-sidebar__inner">
1990
1991 <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
1992
1993
1994
1995
1996
1997 <label class="md-nav__title" for="__toc">
1998 <span class="md-nav__icon md-icon"></span>
1999 Table of contents
2000 </label>
2001 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
2002
2003 <li class="md-nav__item">
2004 <a href="#example" class="md-nav__link">
2005 Example
2006 </a>
2007
2008 </li>
2009
2010 <li class="md-nav__item">
2011 <a href="#elements" class="md-nav__link">
2012 Elements
2013 </a>
2014
2015 <nav class="md-nav" aria-label="Elements">
2016 <ul class="md-nav__list">
2017
2018 <li class="md-nav__item">
2019 <a href="#package" class="md-nav__link">
2020 &lt;package&gt;
2021 </a>
2022
2023 </li>
2024
2025 <li class="md-nav__item">
2026 <a href="#packageinformation" class="md-nav__link">
2027 &lt;packageinformation&gt;
2028 </a>
2029
2030 <nav class="md-nav" aria-label="&lt;packageinformation&gt;">
2031 <ul class="md-nav__list">
2032
2033 <li class="md-nav__item">
2034 <a href="#packagename" class="md-nav__link">
2035 &lt;packagename&gt;
2036 </a>
2037
2038 </li>
2039
2040 <li class="md-nav__item">
2041 <a href="#packagedescription" class="md-nav__link">
2042 &lt;packagedescription&gt;
2043 </a>
2044
2045 </li>
2046
2047 <li class="md-nav__item">
2048 <a href="#version" class="md-nav__link">
2049 &lt;version&gt;
2050 </a>
2051
2052 </li>
2053
2054 <li class="md-nav__item">
2055 <a href="#date" class="md-nav__link">
2056 &lt;date&gt;
2057 </a>
2058
2059 </li>
2060
2061 </ul>
2062 </nav>
2063
2064 </li>
2065
2066 <li class="md-nav__item">
2067 <a href="#authorinformation" class="md-nav__link">
2068 &lt;authorinformation&gt;
2069 </a>
2070
2071 <nav class="md-nav" aria-label="&lt;authorinformation&gt;">
2072 <ul class="md-nav__list">
2073
2074 <li class="md-nav__item">
2075 <a href="#author" class="md-nav__link">
2076 &lt;author&gt;
2077 </a>
2078
2079 </li>
2080
2081 <li class="md-nav__item">
2082 <a href="#authorurl" class="md-nav__link">
2083 &lt;authorurl&gt;
2084 </a>
2085
2086 </li>
2087
2088 </ul>
2089 </nav>
2090
2091 </li>
2092
2093 <li class="md-nav__item">
2094 <a href="#requiredpackages" class="md-nav__link">
2095 &lt;requiredpackages&gt;
2096 </a>
2097
2098 <nav class="md-nav" aria-label="&lt;requiredpackages&gt;">
2099 <ul class="md-nav__list">
2100
2101 <li class="md-nav__item">
2102 <a href="#requiredpackage" class="md-nav__link">
2103 &lt;requiredpackage&gt;
2104 </a>
2105
2106 </li>
2107
2108 </ul>
2109 </nav>
2110
2111 </li>
2112
2113 <li class="md-nav__item">
2114 <a href="#optionalpackage" class="md-nav__link">
2115 &lt;optionalpackage&gt;
2116 </a>
2117
2118 <nav class="md-nav" aria-label="&lt;optionalpackage&gt;">
2119 <ul class="md-nav__list">
2120
2121 <li class="md-nav__item">
2122 <a href="#optionalpackage_1" class="md-nav__link">
2123 &lt;optionalpackage&gt;
2124 </a>
2125
2126 </li>
2127
2128 </ul>
2129 </nav>
2130
2131 </li>
2132
2133 <li class="md-nav__item">
2134 <a href="#excludedpackages" class="md-nav__link">
2135 &lt;excludedpackages&gt;
2136 </a>
2137
2138 <nav class="md-nav" aria-label="&lt;excludedpackages&gt;">
2139 <ul class="md-nav__list">
2140
2141 <li class="md-nav__item">
2142 <a href="#excludedpackage" class="md-nav__link">
2143 &lt;excludedpackage&gt;
2144 </a>
2145
2146 </li>
2147
2148 <li class="md-nav__item">
2149 <a href="#existing-api-versions" class="md-nav__link">
2150 Existing API versions
2151 </a>
2152
2153 </li>
2154
2155 </ul>
2156 </nav>
2157
2158 </li>
2159
2160 <li class="md-nav__item">
2161 <a href="#instructions" class="md-nav__link">
2162 &lt;instructions&gt;
2163 </a>
2164
2165 <nav class="md-nav" aria-label="&lt;instructions&gt;">
2166 <ul class="md-nav__list">
2167
2168 <li class="md-nav__item">
2169 <a href="#instructions-typeinstall" class="md-nav__link">
2170 &lt;instructions type="install"&gt;
2171 </a>
2172
2173 </li>
2174
2175 <li class="md-nav__item">
2176 <a href="#instructions-typeupdate-fromversion" class="md-nav__link">
2177 &lt;instructions type="update" fromversion="…"&gt;
2178 </a>
2179
2180 </li>
2181
2182 <li class="md-nav__item">
2183 <a href="#instruction" class="md-nav__link">
2184 &lt;instruction&gt;
2185 </a>
2186
2187 </li>
2188
2189 <li class="md-nav__item">
2190 <a href="#void" class="md-nav__link">
2191 &lt;void/&gt;
2192 </a>
2193
2194 </li>
2195
2196 </ul>
2197 </nav>
2198
2199 </li>
2200
2201 </ul>
2202 </nav>
2203
2204 </li>
2205
2206 </ul>
2207
2208 </nav>
2209 </div>
2210 </div>
2211 </div>
2212
2213
2214 <div class="md-content" data-md-component="content">
2215 <article class="md-content__inner md-typeset">
2216
2217
2218
2219 <h1 id="packagexml">package.xml<a class="headerlink" href="#packagexml" title="Permanent link">#</a></h1>
2220 <p>The <code>package.xml</code> is the core component of every package.
2221 It provides the meta data (e.g. package name, description, author) and the instruction set for a new installation and/or updating from a previous version.</p>
2222 <h2 id="example">Example<a class="headerlink" href="#example" title="Permanent link">#</a></h2>
2223 <div class="highlight"><pre><span></span><code><span class="cp">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</span>
2224 <span class="nt">&lt;package</span> <span class="na">name=</span><span class="s">&quot;com.example.package&quot;</span> <span class="na">xmlns=</span><span class="s">&quot;http://www.woltlab.com&quot;</span> <span class="na">xmlns:xsi=</span><span class="s">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span> <span class="na">xsi:schemaLocation=</span><span class="s">&quot;http://www.woltlab.com http://www.woltlab.com/XSD/2019/package.xsd&quot;</span><span class="nt">&gt;</span>
2225 <span class="nt">&lt;packageinformation&gt;</span>
2226 <span class="nt">&lt;packagename&gt;</span>Simple Package<span class="nt">&lt;/packagename&gt;</span>
2227 <span class="nt">&lt;packagedescription&gt;</span>A simple package to demonstrate the package system of WoltLab Suite Core<span class="nt">&lt;/packagedescription&gt;</span>
2228 <span class="nt">&lt;version&gt;</span>1.0.0<span class="nt">&lt;/version&gt;</span>
2229 <span class="nt">&lt;date&gt;</span>2016-12-18<span class="nt">&lt;/date&gt;</span>
2230 <span class="nt">&lt;/packageinformation&gt;</span>
2231
2232 <span class="nt">&lt;authorinformation&gt;</span>
2233 <span class="nt">&lt;author&gt;</span>YOUR NAME<span class="nt">&lt;/author&gt;</span>
2234 <span class="nt">&lt;authorurl&gt;</span>http://www.example.com<span class="nt">&lt;/authorurl&gt;</span>
2235 <span class="nt">&lt;/authorinformation&gt;</span>
2236
2237 <span class="nt">&lt;requiredpackages&gt;</span>
2238 <span class="nt">&lt;requiredpackage</span> <span class="na">minversion=</span><span class="s">&quot;3.0.0&quot;</span><span class="nt">&gt;</span>com.woltlab.wcf<span class="nt">&lt;/requiredpackage&gt;</span>
2239 <span class="nt">&lt;/requiredpackages&gt;</span>
2240
2241 <span class="nt">&lt;excludedpackages&gt;</span>
2242 <span class="nt">&lt;excludedpackage</span> <span class="na">version=</span><span class="s">&quot;6.0.0 Alpha 1&quot;</span><span class="nt">&gt;</span>com.woltlab.wcf<span class="nt">&lt;/excludedpackage&gt;</span>
2243 <span class="nt">&lt;/excludedpackages&gt;</span>
2244
2245 <span class="nt">&lt;instructions</span> <span class="na">type=</span><span class="s">&quot;install&quot;</span><span class="nt">&gt;</span>
2246 <span class="nt">&lt;instruction</span> <span class="na">type=</span><span class="s">&quot;file&quot;</span> <span class="nt">/&gt;</span>
2247 <span class="nt">&lt;instruction</span> <span class="na">type=</span><span class="s">&quot;template&quot;</span><span class="nt">&gt;</span>templates.tar<span class="nt">&lt;/instruction&gt;</span>
2248 <span class="nt">&lt;/instructions&gt;</span>
2249 <span class="nt">&lt;/package&gt;</span>
2250 </code></pre></div>
2251
2252 <h2 id="elements">Elements<a class="headerlink" href="#elements" title="Permanent link">#</a></h2>
2253 <h3 id="package"><code>&lt;package&gt;</code><a class="headerlink" href="#package" title="Permanent link">#</a></h3>
2254 <p>The root node of every <code>package.xml</code> it contains the reference to the namespace and the location of the XML Schema Definition (XSD).</p>
2255 <p>The attribute <code>name</code> is the most important part, it holds the unique package identifier and is mandatory.
2256 It is based upon your domain name and the package name of your choice.</p>
2257 <p>For example WoltLab Suite Forum (formerly know an WoltLab Burning Board and usually abbreviated as <code>wbb</code>) is created by WoltLab which owns the domain <code>woltlab.com</code>.
2258 The resulting package identifier is <code>com.woltlab.wbb</code> (<code>&lt;tld&gt;.&lt;domain&gt;.&lt;packageName&gt;</code>).</p>
2259 <h3 id="packageinformation"><code>&lt;packageinformation&gt;</code><a class="headerlink" href="#packageinformation" title="Permanent link">#</a></h3>
2260 <p>Holds the entire meta data of the package.</p>
2261 <h4 id="packagename"><code>&lt;packagename&gt;</code><a class="headerlink" href="#packagename" title="Permanent link">#</a></h4>
2262 <p>This is the actual package name displayed to the end user, this can be anything you want, try to keep it short.
2263 It supports the attribute <code>languagecode</code> which allows you to provide the package name in different languages, please be aware that if it is not present, <code>en</code> (English) is assumed:</p>
2264 <div class="highlight"><pre><span></span><code><span class="nt">&lt;packageinformation&gt;</span>
2265 <span class="nt">&lt;packagename&gt;</span>Simple Package<span class="nt">&lt;/packagename&gt;</span>
2266 <span class="nt">&lt;packagename</span> <span class="na">languagecode=</span><span class="s">&quot;de&quot;</span><span class="nt">&gt;</span>Einfaches Paket<span class="nt">&lt;/packagename&gt;</span>
2267 <span class="nt">&lt;/packageinformation&gt;</span>
2268 </code></pre></div>
2269
2270 <h4 id="packagedescription"><code>&lt;packagedescription&gt;</code><a class="headerlink" href="#packagedescription" title="Permanent link">#</a></h4>
2271 <p>Brief summary of the package, use it to explain what it does since the package name might not always be clear enough.
2272 The attribute <code>languagecode</code> is available here too, please reference to <a href="#packageName"><code>&lt;packagename&gt;</code></a> for details.</p>
2273 <h4 id="version"><code>&lt;version&gt;</code><a class="headerlink" href="#version" title="Permanent link">#</a></h4>
2274 <p>The package's version number, this is a string consisting of three numbers separated with a dot and optionally followed by a keyword (must be followed with another number).</p>
2275 <p>The possible keywords are:</p>
2276 <ul>
2277 <li>Alpha/dev (both is regarded to be the same)</li>
2278 <li>Beta</li>
2279 <li>RC (release candidate)</li>
2280 <li>pl (patch level)</li>
2281 </ul>
2282 <p>Valid examples:</p>
2283 <ul>
2284 <li>1.0.0</li>
2285 <li>1.12.13 Alpha 19</li>
2286 <li>7.0.0 pl 3</li>
2287 </ul>
2288 <p>Invalid examples:</p>
2289 <ul>
2290 <li>1.0.0 Beta (keyword Beta must be followed by a number)</li>
2291 <li>2.0 RC 3 (version number must consists of 3 blocks of numbers)</li>
2292 <li>1.2.3 dev 4.5 (4.5 is not an integer, 4 or 5 would be valid but not the fraction)</li>
2293 </ul>
2294 <h4 id="date"><code>&lt;date&gt;</code><a class="headerlink" href="#date" title="Permanent link">#</a></h4>
2295 <p>Must be a valid <a href="http://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a> date, e.g. <code>2013-12-27</code>.</p>
2296 <h3 id="authorinformation"><code>&lt;authorinformation&gt;</code><a class="headerlink" href="#authorinformation" title="Permanent link">#</a></h3>
2297 <p>Holds meta data regarding the package's author.</p>
2298 <h4 id="author"><code>&lt;author&gt;</code><a class="headerlink" href="#author" title="Permanent link">#</a></h4>
2299 <p>Can be anything you want.</p>
2300 <h4 id="authorurl"><code>&lt;authorurl&gt;</code><a class="headerlink" href="#authorurl" title="Permanent link">#</a></h4>
2301 <blockquote>
2302 <p>(optional)</p>
2303 </blockquote>
2304 <p>URL to the author's website.</p>
2305 <h3 id="requiredpackages"><code>&lt;requiredpackages&gt;</code><a class="headerlink" href="#requiredpackages" title="Permanent link">#</a></h3>
2306 <p>A list of packages including their version required for this package to work.</p>
2307 <h4 id="requiredpackage"><code>&lt;requiredpackage&gt;</code><a class="headerlink" href="#requiredpackage" title="Permanent link">#</a></h4>
2308 <p>Example:</p>
2309 <div class="highlight"><pre><span></span><code><span class="nt">&lt;requiredpackage</span> <span class="na">minversion=</span><span class="s">&quot;2.0.0&quot;</span> <span class="na">file=</span><span class="s">&quot;requirements/com.woltlab.wcf.tar&quot;</span><span class="nt">&gt;</span>com.woltlab.wcf<span class="nt">&lt;/requiredpackage&gt;</span>
2310 </code></pre></div>
2311
2312 <p>The attribute <code>minversion</code> must be a valid version number as described in <a href="#version"><code>&lt;version&gt;</code></a>.
2313 The <code>file</code> attribute is optional and specifies the location of the required package's archive relative to the <code>package.xml</code>.</p>
2314 <h3 id="optionalpackage"><code>&lt;optionalpackage&gt;</code><a class="headerlink" href="#optionalpackage" title="Permanent link">#</a></h3>
2315 <p>A list of optional packages which can be selected by the user at the very end of the installation process.</p>
2316 <h4 id="optionalpackage_1"><code>&lt;optionalpackage&gt;</code><a class="headerlink" href="#optionalpackage_1" title="Permanent link">#</a></h4>
2317 <p>Example:</p>
2318 <div class="highlight"><pre><span></span><code><span class="nt">&lt;optionalpackage</span> <span class="na">file=</span><span class="s">&quot;optionals/com.woltlab.wcf.moderatedUserGroup.tar&quot;</span><span class="nt">&gt;</span>com.woltlab.wcf.moderatedUserGroup<span class="nt">&lt;/optionalpackage&gt;</span>
2319 </code></pre></div>
2320
2321 <p>The <code>file</code> attribute specifies the location of the optional package's archive relative to the <code>package.xml</code>.</p>
2322 <h3 id="excludedpackages"><code>&lt;excludedpackages&gt;</code><a class="headerlink" href="#excludedpackages" title="Permanent link">#</a></h3>
2323 <p>List of packages which conflict with this package. It is not possible to install it if any of the specified packages is installed. In return you cannot install an excluded package if this package is installed.</p>
2324 <h4 id="excludedpackage"><code>&lt;excludedpackage&gt;</code><a class="headerlink" href="#excludedpackage" title="Permanent link">#</a></h4>
2325 <p>Example:</p>
2326 <div class="highlight"><pre><span></span><code><span class="nt">&lt;excludedpackage</span> <span class="na">version=</span><span class="s">&quot;3.1.0 Alpha 1&quot;</span><span class="nt">&gt;</span>com.woltlab.wcf<span class="nt">&lt;/excludedpackage&gt;</span>
2327 </code></pre></div>
2328
2329 <p>The attribute <code>version</code> must be a valid version number as described in the <a href="#version">\&lt;version></a> section. In the example above it will be impossible to install this package in WoltLab Suite Core 3.1.0 Alpha 1 or higher.</p>
2330 <div class="admonition info">
2331 <p class="admonition-title">Available since WoltLab Suite 3.1</p>
2332 </div>
2333 <div class="admonition warning">
2334 <p class="admonition-title">With the release of WoltLab Suite 5.2 the API versions were abolished. Instead of using API versions packages should exclude version <code>6.0.0 Alpha 1</code> of <code>com.woltlab.wcf</code> going forward.</p>
2335 </div>
2336 <p>WoltLab Suite 3.1 introduced a new versioning system that focused around the API compatibility and is intended to replace the <code>&lt;excludedpackage&gt;</code> instruction for the Core for most plugins.</p>
2337 <p>The <code>&lt;compatibility&gt;</code>-tag holds a list of compatible API versions, and while only a single version is available at the time of writing, future versions will add more versions with backwards-compatibility in mind.</p>
2338 <p>Example:</p>
2339 <div class="highlight"><pre><span></span><code><span class="nt">&lt;compatibility&gt;</span>
2340 <span class="nt">&lt;api</span> <span class="na">version=</span><span class="s">&quot;2018&quot;</span> <span class="nt">/&gt;</span>
2341 <span class="nt">&lt;/compatibility&gt;</span>
2342 </code></pre></div>
2343
2344 <h4 id="existing-api-versions">Existing API versions<a class="headerlink" href="#existing-api-versions" title="Permanent link">#</a></h4>
2345 <table>
2346 <thead>
2347 <tr>
2348 <th>WoltLab Suite Core</th>
2349 <th>API-Version</th>
2350 <th>Backwards-Compatible to API-Version</th>
2351 </tr>
2352 </thead>
2353 <tbody>
2354 <tr>
2355 <td>3.1</td>
2356 <td>2018</td>
2357 <td>n/a</td>
2358 </tr>
2359 </tbody>
2360 </table>
2361 <h3 id="instructions"><code>&lt;instructions&gt;</code><a class="headerlink" href="#instructions" title="Permanent link">#</a></h3>
2362 <p>List of instructions to be executed upon install or update. The order is important, the topmost <code>&lt;instruction&gt;</code> will be executed first.</p>
2363 <h4 id="instructions-typeinstall"><code>&lt;instructions type="install"&gt;</code><a class="headerlink" href="#instructions-typeinstall" title="Permanent link">#</a></h4>
2364 <p>List of instructions for a new installation of this package.</p>
2365 <h4 id="instructions-typeupdate-fromversion"><code>&lt;instructions type="update" fromversion="…"&gt;</code><a class="headerlink" href="#instructions-typeupdate-fromversion" title="Permanent link">#</a></h4>
2366 <p>The attribute <code>fromversion</code> must be a valid version number as described in the <a href="#version">\&lt;version></a> section and specifies a possible update from that very version to the package's version.</p>
2367 <div class="admonition warning">
2368 <p class="admonition-title">The installation process will pick exactly one update instruction, ignoring everything else. Please read the explanation below!</p>
2369 </div>
2370 <p>Example:</p>
2371 <ul>
2372 <li>Installed version: <code>1.0.0</code></li>
2373 <li>Package version: <code>1.0.2</code></li>
2374 </ul>
2375 <div class="highlight"><pre><span></span><code><span class="nt">&lt;instructions</span> <span class="na">type=</span><span class="s">&quot;update&quot;</span> <span class="na">fromversion=</span><span class="s">&quot;1.0.0&quot;</span><span class="nt">&gt;</span>
2376 <span class="c">&lt;!-- … --&gt;</span>
2377 <span class="nt">&lt;/instructions&gt;</span>
2378 <span class="nt">&lt;instructions</span> <span class="na">type=</span><span class="s">&quot;update&quot;</span> <span class="na">fromversion=</span><span class="s">&quot;1.0.1&quot;</span><span class="nt">&gt;</span>
2379 <span class="c">&lt;!-- … --&gt;</span>
2380 <span class="nt">&lt;/instructions&gt;</span>
2381 </code></pre></div>
2382
2383 <p>In this example WoltLab Suite Core will pick the first update block since it allows an update from <code>1.0.0 -&gt; 1.0.2</code>.
2384 The other block is not considered, since the currently installed version is <code>1.0.0</code>. After applying the update block (<code>fromversion="1.0.0"</code>), the version now reads <code>1.0.2</code>.</p>
2385 <h4 id="instruction"><code>&lt;instruction&gt;</code><a class="headerlink" href="#instruction" title="Permanent link">#</a></h4>
2386 <p>Example:</p>
2387 <div class="highlight"><pre><span></span><code><span class="nt">&lt;instruction</span> <span class="na">type=</span><span class="s">&quot;objectTypeDefinition&quot;</span><span class="nt">&gt;</span>objectTypeDefinition.xml<span class="nt">&lt;/instruction&gt;</span>
2388 </code></pre></div>
2389
2390 <p>The attribute <code>type</code> specifies the instruction type which is used to determine the package installation plugin (PIP) invoked to handle its value.
2391 The value must be a valid file relative to the location of <code>package.xml</code>.
2392 Many PIPs provide default file names which are used if no value is given:</p>
2393 <div class="highlight"><pre><span></span><code><span class="nt">&lt;instruction</span> <span class="na">type=</span><span class="s">&quot;objectTypeDefinition&quot;</span> <span class="nt">/&gt;</span>
2394 </code></pre></div>
2395
2396 <p>There is a <a href="../pip/">list of all default PIPs</a> available.</p>
2397 <div class="admonition warning">
2398 <p class="admonition-title">Both the <code>type</code>-attribute and the element value are case-sensitive. Windows does not care if the file is called <code>objecttypedefinition.xml</code> but was referenced as <code>objectTypeDefinition.xml</code>, but both Linux and Mac systems will be unable to find the file.</p>
2399 </div>
2400 <p>In addition to the <code>type</code> attribute, an optional <code>run</code> attribute (with <code>standalone</code> as the only valid value) is supported which forces the installation to execute this PIP in an isolated request, allowing a single, resource-heavy PIP to execute without encountering restrictions such as PHP’s <code>memory_limit</code> or <code>max_execution_time</code>:</p>
2401 <div class="highlight"><pre><span></span><code><span class="nt">&lt;instruction</span> <span class="na">type=</span><span class="s">&quot;file&quot;</span> <span class="na">run=</span><span class="s">&quot;standalone&quot;</span> <span class="nt">/&gt;</span>
2402 </code></pre></div>
2403
2404 <h4 id="void"><code>&lt;void/&gt;</code><a class="headerlink" href="#void" title="Permanent link">#</a></h4>
2405 <p>Sometimes a package update should only adjust the metadata of the package, for example, an optional package was added.
2406 However, WoltLab Suite Core requires that the list of <code>&lt;instructions&gt;</code> is non-empty.
2407 Instead of using a dummy <code>&lt;instruction&gt;</code> that idempotently updates some PIP, the <code>&lt;void/&gt;</code> tag can be used for this use-case.</p>
2408 <p>Using the <code>&lt;void/&gt;</code> tag is only valid for <code>&lt;instructions type="update"&gt;</code> and must not be accompanied by other <code>&lt;instruction&gt;</code> tags.</p>
2409 <p>Example:</p>
2410 <div class="highlight"><pre><span></span><code><span class="nt">&lt;instructions</span> <span class="na">type=</span><span class="s">&quot;update&quot;</span> <span class="na">fromversion=</span><span class="s">&quot;1.0.0&quot;</span><span class="nt">&gt;</span>
2411 <span class="nt">&lt;void/&gt;</span>
2412 <span class="nt">&lt;/instructions&gt;</span>
2413 </code></pre></div>
2414
2415
2416
2417
2418
2419
2420
2421 </article>
2422 </div>
2423 </div>
2424 </main>
2425
2426
2427 <footer class="md-footer">
2428
2429 <nav class="md-footer__inner md-grid" aria-label="Footer">
2430
2431 <a href="../../javascript/code-snippets/" class="md-footer__link md-footer__link--prev" rel="prev">
2432 <div class="md-footer__button md-icon">
2433 <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>
2434 </div>
2435 <div class="md-footer__title">
2436 <div class="md-ellipsis">
2437 <span class="md-footer__direction">
2438 Previous
2439 </span>
2440 Code Snippets
2441 </div>
2442 </div>
2443 </a>
2444
2445
2446 <a href="../pip/" class="md-footer__link md-footer__link--next" rel="next">
2447 <div class="md-footer__title">
2448 <div class="md-ellipsis">
2449 <span class="md-footer__direction">
2450 Next
2451 </span>
2452 Overview
2453 </div>
2454 </div>
2455 <div class="md-footer__button md-icon">
2456 <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>
2457 </div>
2458 </a>
2459
2460 </nav>
2461
2462 <div class="md-footer-meta md-typeset">
2463 <div class="md-footer-meta__inner md-grid">
2464 <div class="md-footer-copyright">
2465
2466 <div class="md-footer-copyright__highlight">
2467 Copyright © 2020 WoltLab GmbH
2468 </div>
2469
2470 Made with
2471 <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
2472 Material for MkDocs
2473 </a>
2474 </div>
2475 <div class="md-footer-copyright">
2476 <a href="https://www.woltlab.com/legal-notice/">Legal Notice</a>
2477 <a href="https://www.woltlab.com/privacy-policy/">Privacy Policy</a>
2478 </div>
2479 </div>
2480 </div>
2481 </footer>
2482
2483 </div>
2484 <div class="md-dialog" data-md-component="dialog">
2485 <div class="md-dialog__inner md-typeset"></div>
2486 </div>
2487 <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.fb4a9340.min.js", "version": {"provider": "mike"}}</script>
2488
2489
2490 <script src="../../assets/javascripts/bundle.ca5457b8.min.js"></script>
2491
2492
2493 </body>
2494 </html>