MDL-76441 env: Moodle 4.2.x and 4.3.x do not support PHP 8.3
[moodle.git] / admin / environment.xml
blob4925aafb1c80dec451cb4f0b51cf67fa65ea30ae
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <COMPATIBILITY_MATRIX>
3   <MOODLE version="1.5">
4     <DATABASE level="required">
5       <VENDOR name="mysql" version="3.23" />
6       <VENDOR name="postgres" version="7.4" />
7     </DATABASE>
8     <PHP version="4.1.0" level="required" />
9     <PHP_EXTENSIONS>
10       <PHP_EXTENSION name="mbstring" level="optional" />
11     </PHP_EXTENSIONS>
12   </MOODLE>
13   <MOODLE version="1.6">
14     <DATABASE level="required">
15       <VENDOR name="mysql" version="4.1.16">
16         <FEEDBACK>
17           <ON_ERROR message="mysql416required" />
18         </FEEDBACK>
19         <BYPASS function="bypass_mysql416_reqs" message="mysql416bypassed" />
20       </VENDOR>
21       <VENDOR name="postgres" version="7.4" />
22     </DATABASE>
23     <PHP version="4.3.0" level="required" />
24     <PHP_EXTENSIONS>
25       <PHP_EXTENSION name="iconv" level="optional">
26         <FEEDBACK>
27           <ON_CHECK message="iconvrecommended" />
28         </FEEDBACK>
29       </PHP_EXTENSION>
30       <PHP_EXTENSION name="mbstring" level="optional">
31         <FEEDBACK>
32           <ON_CHECK message="mbstringrecommended" />
33         </FEEDBACK>
34       </PHP_EXTENSION>
35     </PHP_EXTENSIONS>
36   </MOODLE>
37   <MOODLE version="1.7">
38     <UNICODE level="optional">
39       <FEEDBACK>
40         <ON_CHECK message="unicoderecommended" />
41       </FEEDBACK>
42     </UNICODE>
43     <DATABASE level="required">
44       <VENDOR name="mysql" version="4.1.16">
45         <FEEDBACK>
46           <ON_ERROR message="mysql416required" />
47         </FEEDBACK>
48         <BYPASS function="bypass_mysql416_reqs" message="mysql416bypassed" />
49       </VENDOR>
50       <VENDOR name="postgres" version="7.4" />
51       <VENDOR name="mssql" version="9.0" />
52       <VENDOR name="odbc_mssql" version="9.0" />
53       <VENDOR name="mssql_n" version="9.0" />
54       <VENDOR name="oracle" version="9.0" />
55     </DATABASE>
56     <PHP version="4.3.0" level="required">
57       <RESTRICT function="restrict_php50_version" message="php50restricted" />
58     </PHP>
59     <PHP_EXTENSIONS>
60       <PHP_EXTENSION name="iconv" level="optional">
61         <FEEDBACK>
62           <ON_CHECK message="iconvrecommended" />
63         </FEEDBACK>
64       </PHP_EXTENSION>
65       <PHP_EXTENSION name="mbstring" level="optional">
66         <FEEDBACK>
67           <ON_CHECK message="mbstringrecommended" />
68         </FEEDBACK>
69       </PHP_EXTENSION>
70     </PHP_EXTENSIONS>
71   </MOODLE>
72   <MOODLE version="1.8">
73     <UNICODE level="required">
74       <FEEDBACK>
75         <ON_ERROR message="unicoderequired" />
76       </FEEDBACK>
77     </UNICODE>
78     <DATABASE level="required">
79       <VENDOR name="mysql" version="4.1.16">
80         <FEEDBACK>
81           <ON_ERROR message="mysql416required" />
82         </FEEDBACK>
83       </VENDOR>
84       <VENDOR name="postgres" version="7.4" />
85       <VENDOR name="mssql" version="9.0" />
86       <VENDOR name="odbc_mssql" version="9.0" />
87       <VENDOR name="mssql_n" version="9.0" />
88       <VENDOR name="oracle" version="9.0" />
89     </DATABASE>
90     <PHP version="4.3.0" level="required">
91       <RESTRICT function="restrict_php50_version" message="php50restricted" />
92     </PHP>
93     <PHP_EXTENSIONS>
94       <PHP_EXTENSION name="iconv" level="optional">
95         <FEEDBACK>
96           <ON_CHECK message="iconvrecommended" />
97         </FEEDBACK>
98       </PHP_EXTENSION>
99       <PHP_EXTENSION name="mbstring" level="optional">
100         <FEEDBACK>
101           <ON_CHECK message="mbstringrecommended" />
102         </FEEDBACK>
103       </PHP_EXTENSION>
104       <PHP_EXTENSION name="curl" level="optional">
105         <FEEDBACK>
106           <ON_CHECK message="curlrecommended" />
107         </FEEDBACK>
108       </PHP_EXTENSION>
109       <PHP_EXTENSION name="openssl" level="optional">
110         <FEEDBACK>
111           <ON_CHECK message="opensslrecommended" />
112         </FEEDBACK>
113       </PHP_EXTENSION>
114       <PHP_EXTENSION name="tokenizer" level="optional">
115         <FEEDBACK>
116           <ON_CHECK message="tokenizerrecommended" />
117         </FEEDBACK>
118       </PHP_EXTENSION>
119       <PHP_EXTENSION name="xmlrpc" level="optional">
120         <FEEDBACK>
121           <ON_CHECK message="xmlrpcrecommended" />
122         </FEEDBACK>
123       </PHP_EXTENSION>
124       <PHP_EXTENSION name="ctype" level="optional">
125         <FEEDBACK>
126           <ON_CHECK message="ctyperecommended" />
127         </FEEDBACK>
128       </PHP_EXTENSION>
129     </PHP_EXTENSIONS>
130   </MOODLE>
131   <MOODLE version="1.9">
132     <UNICODE level="required">
133       <FEEDBACK>
134         <ON_ERROR message="unicoderequired" />
135       </FEEDBACK>
136     </UNICODE>
137     <DATABASE level="required">
138       <VENDOR name="mysql" version="4.1.16">
139         <FEEDBACK>
140           <ON_ERROR message="mysql416required" />
141         </FEEDBACK>
142       </VENDOR>
143       <VENDOR name="postgres" version="8.0" />
144       <VENDOR name="mssql" version="9.0" />
145       <VENDOR name="odbc_mssql" version="9.0" />
146       <VENDOR name="mssql_n" version="9.0" />
147       <VENDOR name="oracle" version="9.0" />
148     </DATABASE>
149     <PHP version="4.3.0" level="required">
150       <RESTRICT function="restrict_php50_version" message="php50restricted" />
151     </PHP>
152     <PHP_EXTENSIONS>
153       <PHP_EXTENSION name="iconv" level="optional">
154         <FEEDBACK>
155           <ON_CHECK message="iconvrecommended" />
156         </FEEDBACK>
157       </PHP_EXTENSION>
158       <PHP_EXTENSION name="mbstring" level="optional">
159         <FEEDBACK>
160           <ON_CHECK message="mbstringrecommended" />
161         </FEEDBACK>
162       </PHP_EXTENSION>
163       <PHP_EXTENSION name="curl" level="optional">
164         <FEEDBACK>
165           <ON_CHECK message="curlrecommended" />
166         </FEEDBACK>
167       </PHP_EXTENSION>
168       <PHP_EXTENSION name="openssl" level="optional">
169         <FEEDBACK>
170           <ON_CHECK message="opensslrecommended" />
171         </FEEDBACK>
172       </PHP_EXTENSION>
173       <PHP_EXTENSION name="tokenizer" level="optional">
174         <FEEDBACK>
175           <ON_CHECK message="tokenizerrecommended" />
176         </FEEDBACK>
177       </PHP_EXTENSION>
178       <PHP_EXTENSION name="xmlrpc" level="optional">
179         <FEEDBACK>
180           <ON_CHECK message="xmlrpcrecommended" />
181         </FEEDBACK>
182       </PHP_EXTENSION>
183       <PHP_EXTENSION name="ctype" level="optional">
184         <FEEDBACK>
185           <ON_CHECK message="ctyperecommended" />
186         </FEEDBACK>
187       </PHP_EXTENSION>
188       <PHP_EXTENSION name="pcre" level="required">
189       </PHP_EXTENSION>
190     </PHP_EXTENSIONS>
191     <CUSTOM_CHECKS>
192       <CUSTOM_CHECK file="question/upgrade.php" function="question_check_no_rqp_questions" level="optional">
193         <FEEDBACK>
194           <ON_CHECK message="qtyperqpwillberemovedanyway" />
195           <ON_OK message="qtyperqpwillberemoved" />
196         </FEEDBACK>
197       </CUSTOM_CHECK>
198       <CUSTOM_CHECK file="question/upgrade.php" function="question_random_check" level="optional">
199         <FEEDBACK>
200           <ON_OK message="questioncwqpfsok" />
201         </FEEDBACK>
202       </CUSTOM_CHECK>
203       <CUSTOM_CHECK file="lib/customcheckslib.php" function="php_check_register_globals" level="required">
204         <FEEDBACK>
205           <ON_CHECK message="globalswarning" />
206         </FEEDBACK>
207       </CUSTOM_CHECK>
208     </CUSTOM_CHECKS>
209   </MOODLE>
210   <MOODLE version="2.0" requires="1.9">
211     <UNICODE level="required">
212       <FEEDBACK>
213         <ON_ERROR message="unicoderequired" />
214       </FEEDBACK>
215     </UNICODE>
216     <DATABASE level="required">
217       <VENDOR name="mysql" version="5.0.25" />
218       <VENDOR name="postgres" version="8.3" />
219       <VENDOR name="mssql" version="9.0" />
220       <VENDOR name="odbc_mssql" version="9.0" />
221       <VENDOR name="mssql_n" version="9.0" />
222       <VENDOR name="oracle" version="10.2" />
223       <VENDOR name="sqlite" version="2.0" />
224     </DATABASE>
225     <PHP version="5.2.8" level="required">
226     </PHP>
227     <PHP_EXTENSIONS>
228       <PHP_EXTENSION name="iconv" level="required">
229         <FEEDBACK>
230           <ON_ERROR message="iconvrequired" />
231         </FEEDBACK>
232       </PHP_EXTENSION>
233       <PHP_EXTENSION name="mbstring" level="optional">
234         <FEEDBACK>
235           <ON_CHECK message="mbstringrecommended" />
236         </FEEDBACK>
237       </PHP_EXTENSION>
238       <PHP_EXTENSION name="curl" level="required">
239         <FEEDBACK>
240           <ON_ERROR message="curlrequired" />
241         </FEEDBACK>
242       </PHP_EXTENSION>
243       <PHP_EXTENSION name="openssl" level="optional">
244         <FEEDBACK>
245           <ON_CHECK message="opensslrecommended" />
246         </FEEDBACK>
247       </PHP_EXTENSION>
248       <PHP_EXTENSION name="tokenizer" level="optional">
249         <FEEDBACK>
250           <ON_CHECK message="tokenizerrecommended" />
251         </FEEDBACK>
252       </PHP_EXTENSION>
253       <PHP_EXTENSION name="xmlrpc" level="optional">
254         <FEEDBACK>
255           <ON_CHECK message="xmlrpcrecommended" />
256         </FEEDBACK>
257       </PHP_EXTENSION>
258       <PHP_EXTENSION name="soap" level="optional">
259         <FEEDBACK>
260           <ON_CHECK message="soaprecommended" />
261         </FEEDBACK>
262       </PHP_EXTENSION>
263       <PHP_EXTENSION name="ctype" level="required">
264         <FEEDBACK>
265           <ON_ERROR message="ctyperequired" />
266         </FEEDBACK>
267       </PHP_EXTENSION>
268       <PHP_EXTENSION name="zip" level="required">
269         <FEEDBACK>
270           <ON_ERROR message="ziprequired" />
271         </FEEDBACK>
272       </PHP_EXTENSION>
273       <PHP_EXTENSION name="gd" level="optional">
274         <FEEDBACK>
275           <ON_CHECK message="gdrecommended" />
276         </FEEDBACK>
277       </PHP_EXTENSION>
278       <PHP_EXTENSION name="simplexml" level="required">
279         <FEEDBACK>
280           <ON_ERROR message="simplexmlrequired" />
281         </FEEDBACK>
282       </PHP_EXTENSION>
283       <PHP_EXTENSION name="spl" level="required">
284         <FEEDBACK>
285           <ON_ERROR message="splrequired" />
286         </FEEDBACK>
287       </PHP_EXTENSION>
288       <PHP_EXTENSION name="pcre" level="required">
289       </PHP_EXTENSION>
290       <PHP_EXTENSION name="dom" level="required">
291       </PHP_EXTENSION>
292       <PHP_EXTENSION name="xml" level="required">
293       </PHP_EXTENSION>
294       <PHP_EXTENSION name="intl" level="optional">
295         <FEEDBACK>
296           <ON_CHECK message="intlrecommended" />
297         </FEEDBACK>
298       </PHP_EXTENSION>
299       <PHP_EXTENSION name="json" level="required">
300       </PHP_EXTENSION>
301     </PHP_EXTENSIONS>
302     <PHP_SETTINGS>
303       <PHP_SETTING name="memory_limit" value="40M" level="required">
304         <FEEDBACK>
305           <ON_ERROR message="settingmemorylimit" />
306         </FEEDBACK>
307       </PHP_SETTING>
308       <PHP_SETTING name="safe_mode" value="0" level="optional">
309         <FEEDBACK>
310           <ON_CHECK message="settingsafemode" />
311         </FEEDBACK>
312       </PHP_SETTING>
313       <PHP_SETTING name="file_uploads" value="1" level="optional">
314         <FEEDBACK>
315           <ON_CHECK message="settingfileuploads" />
316         </FEEDBACK>
317       </PHP_SETTING>
318     </PHP_SETTINGS>
319     <CUSTOM_CHECKS>
320       <CUSTOM_CHECK file="lib/customcheckslib.php" function="php_check_php533" level="optional">
321         <FEEDBACK>
322           <ON_CHECK message="php533warning" />
323         </FEEDBACK>
324       </CUSTOM_CHECK>
325     </CUSTOM_CHECKS>
326   </MOODLE>
327   <MOODLE version="2.1" requires="1.9">
328     <UNICODE level="required">
329       <FEEDBACK>
330         <ON_ERROR message="unicoderequired" />
331       </FEEDBACK>
332     </UNICODE>
333     <DATABASE level="required">
334       <VENDOR name="mysql" version="5.0.25" />
335       <VENDOR name="postgres" version="8.3" />
336       <VENDOR name="mssql" version="9.0" />
337       <VENDOR name="odbc_mssql" version="9.0" />
338       <VENDOR name="mssql_n" version="9.0" />
339       <VENDOR name="oracle" version="10.2" />
340       <VENDOR name="sqlite" version="2.0" />
341     </DATABASE>
342     <PHP version="5.3.2" level="required">
343     </PHP>
344     <PHP_EXTENSIONS>
345       <PHP_EXTENSION name="iconv" level="required">
346         <FEEDBACK>
347           <ON_ERROR message="iconvrequired" />
348         </FEEDBACK>
349       </PHP_EXTENSION>
350       <PHP_EXTENSION name="mbstring" level="optional">
351         <FEEDBACK>
352           <ON_CHECK message="mbstringrecommended" />
353         </FEEDBACK>
354       </PHP_EXTENSION>
355       <PHP_EXTENSION name="curl" level="required">
356         <FEEDBACK>
357           <ON_ERROR message="curlrequired" />
358         </FEEDBACK>
359       </PHP_EXTENSION>
360       <PHP_EXTENSION name="openssl" level="optional">
361         <FEEDBACK>
362           <ON_CHECK message="opensslrecommended" />
363         </FEEDBACK>
364       </PHP_EXTENSION>
365       <PHP_EXTENSION name="tokenizer" level="optional">
366         <FEEDBACK>
367           <ON_CHECK message="tokenizerrecommended" />
368         </FEEDBACK>
369       </PHP_EXTENSION>
370       <PHP_EXTENSION name="xmlrpc" level="optional">
371         <FEEDBACK>
372           <ON_CHECK message="xmlrpcrecommended" />
373         </FEEDBACK>
374       </PHP_EXTENSION>
375       <PHP_EXTENSION name="soap" level="optional">
376         <FEEDBACK>
377           <ON_CHECK message="soaprecommended" />
378         </FEEDBACK>
379       </PHP_EXTENSION>
380       <PHP_EXTENSION name="ctype" level="required">
381         <FEEDBACK>
382           <ON_ERROR message="ctyperequired" />
383         </FEEDBACK>
384       </PHP_EXTENSION>
385       <PHP_EXTENSION name="zip" level="required">
386         <FEEDBACK>
387           <ON_ERROR message="ziprequired" />
388         </FEEDBACK>
389       </PHP_EXTENSION>
390       <PHP_EXTENSION name="gd" level="optional">
391         <FEEDBACK>
392           <ON_CHECK message="gdrecommended" />
393         </FEEDBACK>
394       </PHP_EXTENSION>
395       <PHP_EXTENSION name="simplexml" level="required">
396         <FEEDBACK>
397           <ON_ERROR message="simplexmlrequired" />
398         </FEEDBACK>
399       </PHP_EXTENSION>
400       <PHP_EXTENSION name="spl" level="required">
401         <FEEDBACK>
402           <ON_ERROR message="splrequired" />
403         </FEEDBACK>
404       </PHP_EXTENSION>
405       <PHP_EXTENSION name="pcre" level="required">
406       </PHP_EXTENSION>
407       <PHP_EXTENSION name="dom" level="required">
408       </PHP_EXTENSION>
409       <PHP_EXTENSION name="xml" level="required">
410       </PHP_EXTENSION>
411       <PHP_EXTENSION name="intl" level="optional">
412         <FEEDBACK>
413           <ON_CHECK message="intlrecommended" />
414         </FEEDBACK>
415       </PHP_EXTENSION>
416       <PHP_EXTENSION name="json" level="required">
417       </PHP_EXTENSION>
418     </PHP_EXTENSIONS>
419     <PHP_SETTINGS>
420       <PHP_SETTING name="memory_limit" value="40M" level="required">
421         <FEEDBACK>
422           <ON_ERROR message="settingmemorylimit" />
423         </FEEDBACK>
424       </PHP_SETTING>
425       <PHP_SETTING name="safe_mode" value="0" level="optional">
426         <FEEDBACK>
427           <ON_CHECK message="settingsafemode" />
428         </FEEDBACK>
429       </PHP_SETTING>
430       <PHP_SETTING name="file_uploads" value="1" level="optional">
431         <FEEDBACK>
432           <ON_CHECK message="settingfileuploads" />
433         </FEEDBACK>
434       </PHP_SETTING>
435     </PHP_SETTINGS>
436   </MOODLE>
437   <MOODLE version="2.2" requires="1.9">
438     <UNICODE level="required">
439       <FEEDBACK>
440         <ON_ERROR message="unicoderequired" />
441       </FEEDBACK>
442     </UNICODE>
443     <DATABASE level="required">
444       <VENDOR name="mysql" version="5.0.25" />
445       <VENDOR name="postgres" version="8.3" />
446       <VENDOR name="mssql" version="9.0" />
447       <VENDOR name="odbc_mssql" version="9.0" />
448       <VENDOR name="mssql_n" version="9.0" />
449       <VENDOR name="oracle" version="10.2" />
450       <VENDOR name="sqlite" version="2.0" />
451     </DATABASE>
452     <PHP version="5.3.2" level="required">
453     </PHP>
454     <PHP_EXTENSIONS>
455       <PHP_EXTENSION name="iconv" level="required">
456         <FEEDBACK>
457           <ON_ERROR message="iconvrequired" />
458         </FEEDBACK>
459       </PHP_EXTENSION>
460       <PHP_EXTENSION name="mbstring" level="optional">
461         <FEEDBACK>
462           <ON_CHECK message="mbstringrecommended" />
463         </FEEDBACK>
464       </PHP_EXTENSION>
465       <PHP_EXTENSION name="curl" level="required">
466         <FEEDBACK>
467           <ON_ERROR message="curlrequired" />
468         </FEEDBACK>
469       </PHP_EXTENSION>
470       <PHP_EXTENSION name="openssl" level="optional">
471         <FEEDBACK>
472           <ON_CHECK message="opensslrecommended" />
473         </FEEDBACK>
474       </PHP_EXTENSION>
475       <PHP_EXTENSION name="tokenizer" level="optional">
476         <FEEDBACK>
477           <ON_CHECK message="tokenizerrecommended" />
478         </FEEDBACK>
479       </PHP_EXTENSION>
480       <PHP_EXTENSION name="xmlrpc" level="optional">
481         <FEEDBACK>
482           <ON_CHECK message="xmlrpcrecommended" />
483         </FEEDBACK>
484       </PHP_EXTENSION>
485       <PHP_EXTENSION name="soap" level="optional">
486         <FEEDBACK>
487           <ON_CHECK message="soaprecommended" />
488         </FEEDBACK>
489       </PHP_EXTENSION>
490       <PHP_EXTENSION name="ctype" level="required">
491         <FEEDBACK>
492           <ON_ERROR message="ctyperequired" />
493         </FEEDBACK>
494       </PHP_EXTENSION>
495       <PHP_EXTENSION name="zip" level="required">
496         <FEEDBACK>
497           <ON_ERROR message="ziprequired" />
498         </FEEDBACK>
499       </PHP_EXTENSION>
500       <PHP_EXTENSION name="gd" level="optional">
501         <FEEDBACK>
502           <ON_CHECK message="gdrecommended" />
503         </FEEDBACK>
504       </PHP_EXTENSION>
505       <PHP_EXTENSION name="simplexml" level="required">
506         <FEEDBACK>
507           <ON_ERROR message="simplexmlrequired" />
508         </FEEDBACK>
509       </PHP_EXTENSION>
510       <PHP_EXTENSION name="spl" level="required">
511         <FEEDBACK>
512           <ON_ERROR message="splrequired" />
513         </FEEDBACK>
514       </PHP_EXTENSION>
515       <PHP_EXTENSION name="pcre" level="required">
516       </PHP_EXTENSION>
517       <PHP_EXTENSION name="dom" level="required">
518       </PHP_EXTENSION>
519       <PHP_EXTENSION name="xml" level="required">
520       </PHP_EXTENSION>
521       <PHP_EXTENSION name="intl" level="optional">
522         <FEEDBACK>
523           <ON_CHECK message="intlrecommended" />
524         </FEEDBACK>
525       </PHP_EXTENSION>
526       <PHP_EXTENSION name="json" level="required">
527       </PHP_EXTENSION>
528     </PHP_EXTENSIONS>
529     <PHP_SETTINGS>
530       <PHP_SETTING name="memory_limit" value="40M" level="required">
531         <FEEDBACK>
532           <ON_ERROR message="settingmemorylimit" />
533         </FEEDBACK>
534       </PHP_SETTING>
535       <PHP_SETTING name="safe_mode" value="0" level="optional">
536         <FEEDBACK>
537           <ON_CHECK message="settingsafemode" />
538         </FEEDBACK>
539       </PHP_SETTING>
540       <PHP_SETTING name="file_uploads" value="1" level="optional">
541         <FEEDBACK>
542           <ON_CHECK message="settingfileuploads" />
543         </FEEDBACK>
544       </PHP_SETTING>
545     </PHP_SETTINGS>
546   </MOODLE>
547   <MOODLE version="2.3" requires="2.2">
548     <UNICODE level="required">
549       <FEEDBACK>
550         <ON_ERROR message="unicoderequired" />
551       </FEEDBACK>
552     </UNICODE>
553     <DATABASE level="required">
554       <VENDOR name="mysql" version="5.1.33" />
555       <VENDOR name="postgres" version="8.3" />
556       <VENDOR name="mssql" version="9.0" />
557       <VENDOR name="odbc_mssql" version="9.0" />
558       <VENDOR name="mssql_n" version="9.0" />
559       <VENDOR name="oracle" version="10.2" />
560       <VENDOR name="sqlite" version="2.0" />
561     </DATABASE>
562     <PHP version="5.3.2" level="required">
563     </PHP>
564     <PCREUNICODE level="optional">
565       <FEEDBACK>
566         <ON_CHECK message="pcreunicodewarning" />
567       </FEEDBACK>
568     </PCREUNICODE>
569     <PHP_EXTENSIONS>
570       <PHP_EXTENSION name="iconv" level="required">
571         <FEEDBACK>
572           <ON_ERROR message="iconvrequired" />
573         </FEEDBACK>
574       </PHP_EXTENSION>
575       <PHP_EXTENSION name="mbstring" level="optional">
576         <FEEDBACK>
577           <ON_CHECK message="mbstringrecommended" />
578         </FEEDBACK>
579       </PHP_EXTENSION>
580       <PHP_EXTENSION name="curl" level="required">
581         <FEEDBACK>
582           <ON_ERROR message="curlrequired" />
583         </FEEDBACK>
584       </PHP_EXTENSION>
585       <PHP_EXTENSION name="openssl" level="optional">
586         <FEEDBACK>
587           <ON_CHECK message="opensslrecommended" />
588         </FEEDBACK>
589       </PHP_EXTENSION>
590       <PHP_EXTENSION name="tokenizer" level="optional">
591         <FEEDBACK>
592           <ON_CHECK message="tokenizerrecommended" />
593         </FEEDBACK>
594       </PHP_EXTENSION>
595       <PHP_EXTENSION name="xmlrpc" level="optional">
596         <FEEDBACK>
597           <ON_CHECK message="xmlrpcrecommended" />
598         </FEEDBACK>
599       </PHP_EXTENSION>
600       <PHP_EXTENSION name="soap" level="optional">
601         <FEEDBACK>
602           <ON_CHECK message="soaprecommended" />
603         </FEEDBACK>
604       </PHP_EXTENSION>
605       <PHP_EXTENSION name="ctype" level="required">
606         <FEEDBACK>
607           <ON_ERROR message="ctyperequired" />
608         </FEEDBACK>
609       </PHP_EXTENSION>
610       <PHP_EXTENSION name="zip" level="required">
611         <FEEDBACK>
612           <ON_ERROR message="ziprequired" />
613         </FEEDBACK>
614       </PHP_EXTENSION>
615       <PHP_EXTENSION name="gd" level="optional">
616         <FEEDBACK>
617           <ON_CHECK message="gdrecommended" />
618         </FEEDBACK>
619       </PHP_EXTENSION>
620       <PHP_EXTENSION name="simplexml" level="required">
621         <FEEDBACK>
622           <ON_ERROR message="simplexmlrequired" />
623         </FEEDBACK>
624       </PHP_EXTENSION>
625       <PHP_EXTENSION name="spl" level="required">
626         <FEEDBACK>
627           <ON_ERROR message="splrequired" />
628         </FEEDBACK>
629       </PHP_EXTENSION>
630       <PHP_EXTENSION name="pcre" level="required">
631       </PHP_EXTENSION>
632       <PHP_EXTENSION name="dom" level="required">
633       </PHP_EXTENSION>
634       <PHP_EXTENSION name="xml" level="required">
635       </PHP_EXTENSION>
636       <PHP_EXTENSION name="intl" level="optional">
637         <FEEDBACK>
638           <ON_CHECK message="intlrecommended" />
639         </FEEDBACK>
640       </PHP_EXTENSION>
641       <PHP_EXTENSION name="json" level="required">
642       </PHP_EXTENSION>
643       <PHP_EXTENSION name="hash" level="required"/>
644     </PHP_EXTENSIONS>
645     <PHP_SETTINGS>
646       <PHP_SETTING name="memory_limit" value="40M" level="required">
647         <FEEDBACK>
648           <ON_ERROR message="settingmemorylimit" />
649         </FEEDBACK>
650       </PHP_SETTING>
651       <PHP_SETTING name="safe_mode" value="0" level="optional">
652         <FEEDBACK>
653           <ON_CHECK message="settingsafemode" />
654         </FEEDBACK>
655       </PHP_SETTING>
656       <PHP_SETTING name="file_uploads" value="1" level="optional">
657         <FEEDBACK>
658           <ON_CHECK message="settingfileuploads" />
659         </FEEDBACK>
660       </PHP_SETTING>
661     </PHP_SETTINGS>
662   </MOODLE>
663   <MOODLE version="2.4" requires="2.2">
664     <UNICODE level="required">
665       <FEEDBACK>
666         <ON_ERROR message="unicoderequired" />
667       </FEEDBACK>
668     </UNICODE>
669     <DATABASE level="required">
670       <VENDOR name="mysql" version="5.1.33" />
671       <VENDOR name="postgres" version="8.3" />
672       <VENDOR name="mssql" version="9.0" />
673       <VENDOR name="odbc_mssql" version="9.0" />
674       <VENDOR name="mssql_n" version="9.0" />
675       <VENDOR name="oracle" version="10.2" />
676       <VENDOR name="sqlite" version="2.0" />
677     </DATABASE>
678     <PHP version="5.3.2" level="required">
679     </PHP>
680     <PCREUNICODE level="optional">
681       <FEEDBACK>
682         <ON_CHECK message="pcreunicodewarning" />
683       </FEEDBACK>
684     </PCREUNICODE>
685     <PHP_EXTENSIONS>
686       <PHP_EXTENSION name="iconv" level="required">
687         <FEEDBACK>
688           <ON_ERROR message="iconvrequired" />
689         </FEEDBACK>
690       </PHP_EXTENSION>
691       <PHP_EXTENSION name="mbstring" level="optional">
692         <FEEDBACK>
693           <ON_CHECK message="mbstringrecommended" />
694         </FEEDBACK>
695       </PHP_EXTENSION>
696       <PHP_EXTENSION name="curl" level="required">
697         <FEEDBACK>
698           <ON_ERROR message="curlrequired" />
699         </FEEDBACK>
700       </PHP_EXTENSION>
701       <PHP_EXTENSION name="openssl" level="optional">
702         <FEEDBACK>
703           <ON_CHECK message="opensslrecommended" />
704         </FEEDBACK>
705       </PHP_EXTENSION>
706       <PHP_EXTENSION name="tokenizer" level="optional">
707         <FEEDBACK>
708           <ON_CHECK message="tokenizerrecommended" />
709         </FEEDBACK>
710       </PHP_EXTENSION>
711       <PHP_EXTENSION name="xmlrpc" level="optional">
712         <FEEDBACK>
713           <ON_CHECK message="xmlrpcrecommended" />
714         </FEEDBACK>
715       </PHP_EXTENSION>
716       <PHP_EXTENSION name="soap" level="optional">
717         <FEEDBACK>
718           <ON_CHECK message="soaprecommended" />
719         </FEEDBACK>
720       </PHP_EXTENSION>
721       <PHP_EXTENSION name="ctype" level="required">
722         <FEEDBACK>
723           <ON_ERROR message="ctyperequired" />
724         </FEEDBACK>
725       </PHP_EXTENSION>
726       <PHP_EXTENSION name="zip" level="required">
727         <FEEDBACK>
728           <ON_ERROR message="ziprequired" />
729         </FEEDBACK>
730       </PHP_EXTENSION>
731       <PHP_EXTENSION name="gd" level="optional">
732         <FEEDBACK>
733           <ON_CHECK message="gdrecommended" />
734         </FEEDBACK>
735       </PHP_EXTENSION>
736       <PHP_EXTENSION name="simplexml" level="required">
737         <FEEDBACK>
738           <ON_ERROR message="simplexmlrequired" />
739         </FEEDBACK>
740       </PHP_EXTENSION>
741       <PHP_EXTENSION name="spl" level="required">
742         <FEEDBACK>
743           <ON_ERROR message="splrequired" />
744         </FEEDBACK>
745       </PHP_EXTENSION>
746       <PHP_EXTENSION name="pcre" level="required">
747       </PHP_EXTENSION>
748       <PHP_EXTENSION name="dom" level="required">
749       </PHP_EXTENSION>
750       <PHP_EXTENSION name="xml" level="required">
751       </PHP_EXTENSION>
752       <PHP_EXTENSION name="intl" level="optional">
753         <FEEDBACK>
754           <ON_CHECK message="intlrecommended" />
755         </FEEDBACK>
756       </PHP_EXTENSION>
757       <PHP_EXTENSION name="json" level="required">
758       </PHP_EXTENSION>
759       <PHP_EXTENSION name="hash" level="required"/>
760     </PHP_EXTENSIONS>
761     <PHP_SETTINGS>
762       <PHP_SETTING name="memory_limit" value="40M" level="required">
763         <FEEDBACK>
764           <ON_ERROR message="settingmemorylimit" />
765         </FEEDBACK>
766       </PHP_SETTING>
767       <PHP_SETTING name="safe_mode" value="0" level="optional">
768         <FEEDBACK>
769           <ON_CHECK message="settingsafemode" />
770         </FEEDBACK>
771       </PHP_SETTING>
772       <PHP_SETTING name="file_uploads" value="1" level="optional">
773         <FEEDBACK>
774           <ON_CHECK message="settingfileuploads" />
775         </FEEDBACK>
776       </PHP_SETTING>
777     </PHP_SETTINGS>
778   </MOODLE>
779   <MOODLE version="2.5" requires="2.2">
780     <UNICODE level="required">
781       <FEEDBACK>
782         <ON_ERROR message="unicoderequired" />
783       </FEEDBACK>
784     </UNICODE>
785     <DATABASE level="required">
786       <VENDOR name="mysql" version="5.1.33" />
787       <VENDOR name="postgres" version="8.3" />
788       <VENDOR name="mssql" version="9.0" />
789       <VENDOR name="odbc_mssql" version="9.0" />
790       <VENDOR name="mssql_n" version="9.0" />
791       <VENDOR name="oracle" version="10.2" />
792       <VENDOR name="sqlite" version="2.0" />
793     </DATABASE>
794     <PHP version="5.3.3" level="required">
795     </PHP>
796     <PCREUNICODE level="optional">
797       <FEEDBACK>
798         <ON_CHECK message="pcreunicodewarning" />
799       </FEEDBACK>
800     </PCREUNICODE>
801     <PHP_EXTENSIONS>
802       <PHP_EXTENSION name="iconv" level="required">
803         <FEEDBACK>
804           <ON_ERROR message="iconvrequired" />
805         </FEEDBACK>
806       </PHP_EXTENSION>
807       <PHP_EXTENSION name="mbstring" level="optional">
808         <FEEDBACK>
809           <ON_CHECK message="mbstringrecommended" />
810         </FEEDBACK>
811       </PHP_EXTENSION>
812       <PHP_EXTENSION name="curl" level="required">
813         <FEEDBACK>
814           <ON_ERROR message="curlrequired" />
815         </FEEDBACK>
816       </PHP_EXTENSION>
817       <PHP_EXTENSION name="openssl" level="optional">
818         <FEEDBACK>
819           <ON_CHECK message="opensslrecommended" />
820         </FEEDBACK>
821       </PHP_EXTENSION>
822       <PHP_EXTENSION name="tokenizer" level="optional">
823         <FEEDBACK>
824           <ON_CHECK message="tokenizerrecommended" />
825         </FEEDBACK>
826       </PHP_EXTENSION>
827       <PHP_EXTENSION name="xmlrpc" level="optional">
828         <FEEDBACK>
829           <ON_CHECK message="xmlrpcrecommended" />
830         </FEEDBACK>
831       </PHP_EXTENSION>
832       <PHP_EXTENSION name="soap" level="optional">
833         <FEEDBACK>
834           <ON_CHECK message="soaprecommended" />
835         </FEEDBACK>
836       </PHP_EXTENSION>
837       <PHP_EXTENSION name="ctype" level="required">
838         <FEEDBACK>
839           <ON_ERROR message="ctyperequired" />
840         </FEEDBACK>
841       </PHP_EXTENSION>
842       <PHP_EXTENSION name="zip" level="required">
843         <FEEDBACK>
844           <ON_ERROR message="ziprequired" />
845         </FEEDBACK>
846       </PHP_EXTENSION>
847       <PHP_EXTENSION name="gd" level="required">
848         <FEEDBACK>
849           <ON_ERROR message="gdrequired" />
850         </FEEDBACK>
851       </PHP_EXTENSION>
852       <PHP_EXTENSION name="simplexml" level="required">
853         <FEEDBACK>
854           <ON_ERROR message="simplexmlrequired" />
855         </FEEDBACK>
856       </PHP_EXTENSION>
857       <PHP_EXTENSION name="spl" level="required">
858         <FEEDBACK>
859           <ON_ERROR message="splrequired" />
860         </FEEDBACK>
861       </PHP_EXTENSION>
862       <PHP_EXTENSION name="pcre" level="required">
863       </PHP_EXTENSION>
864       <PHP_EXTENSION name="dom" level="required">
865       </PHP_EXTENSION>
866       <PHP_EXTENSION name="xml" level="required">
867       </PHP_EXTENSION>
868       <PHP_EXTENSION name="intl" level="optional">
869         <FEEDBACK>
870           <ON_CHECK message="intlrecommended" />
871         </FEEDBACK>
872       </PHP_EXTENSION>
873       <PHP_EXTENSION name="json" level="required">
874       </PHP_EXTENSION>
875       <PHP_EXTENSION name="hash" level="required"/>
876     </PHP_EXTENSIONS>
877     <PHP_SETTINGS>
878       <PHP_SETTING name="memory_limit" value="40M" level="required">
879         <FEEDBACK>
880           <ON_ERROR message="settingmemorylimit" />
881         </FEEDBACK>
882       </PHP_SETTING>
883       <PHP_SETTING name="safe_mode" value="0" level="optional">
884         <FEEDBACK>
885           <ON_CHECK message="settingsafemode" />
886         </FEEDBACK>
887       </PHP_SETTING>
888       <PHP_SETTING name="file_uploads" value="1" level="optional">
889         <FEEDBACK>
890           <ON_CHECK message="settingfileuploads" />
891         </FEEDBACK>
892       </PHP_SETTING>
893     </PHP_SETTINGS>
894   </MOODLE>
895   <MOODLE version="2.6" requires="2.2">
896     <UNICODE level="required">
897       <FEEDBACK>
898         <ON_ERROR message="unicoderequired" />
899       </FEEDBACK>
900     </UNICODE>
901     <DATABASE level="required">
902       <VENDOR name="mariadb" version="5.3.5" />
903       <VENDOR name="mysql" version="5.1.33" />
904       <VENDOR name="postgres" version="8.3" />
905       <VENDOR name="mssql" version="9.0" />
906       <VENDOR name="oracle" version="10.2" />
907     </DATABASE>
908     <PHP version="5.3.3" level="required">
909     </PHP>
910     <PCREUNICODE level="optional">
911       <FEEDBACK>
912         <ON_CHECK message="pcreunicodewarning" />
913       </FEEDBACK>
914     </PCREUNICODE>
915     <PHP_EXTENSIONS>
916       <PHP_EXTENSION name="iconv" level="required">
917         <FEEDBACK>
918           <ON_ERROR message="iconvrequired" />
919         </FEEDBACK>
920       </PHP_EXTENSION>
921       <PHP_EXTENSION name="mbstring" level="optional">
922         <FEEDBACK>
923           <ON_CHECK message="mbstringrecommended" />
924         </FEEDBACK>
925       </PHP_EXTENSION>
926       <PHP_EXTENSION name="curl" level="required">
927         <FEEDBACK>
928           <ON_ERROR message="curlrequired" />
929         </FEEDBACK>
930       </PHP_EXTENSION>
931       <PHP_EXTENSION name="openssl" level="optional">
932         <FEEDBACK>
933           <ON_CHECK message="opensslrecommended" />
934         </FEEDBACK>
935       </PHP_EXTENSION>
936       <PHP_EXTENSION name="tokenizer" level="optional">
937         <FEEDBACK>
938           <ON_CHECK message="tokenizerrecommended" />
939         </FEEDBACK>
940       </PHP_EXTENSION>
941       <PHP_EXTENSION name="xmlrpc" level="optional">
942         <FEEDBACK>
943           <ON_CHECK message="xmlrpcrecommended" />
944         </FEEDBACK>
945       </PHP_EXTENSION>
946       <PHP_EXTENSION name="soap" level="optional">
947         <FEEDBACK>
948           <ON_CHECK message="soaprecommended" />
949         </FEEDBACK>
950       </PHP_EXTENSION>
951       <PHP_EXTENSION name="ctype" level="required">
952         <FEEDBACK>
953           <ON_ERROR message="ctyperequired" />
954         </FEEDBACK>
955       </PHP_EXTENSION>
956       <PHP_EXTENSION name="zip" level="required">
957         <FEEDBACK>
958           <ON_ERROR message="ziprequired" />
959         </FEEDBACK>
960       </PHP_EXTENSION>
961       <PHP_EXTENSION name="zlib" level="optional">
962       </PHP_EXTENSION>
963       <PHP_EXTENSION name="gd" level="required">
964         <FEEDBACK>
965           <ON_ERROR message="gdrequired" />
966         </FEEDBACK>
967       </PHP_EXTENSION>
968       <PHP_EXTENSION name="simplexml" level="required">
969         <FEEDBACK>
970           <ON_ERROR message="simplexmlrequired" />
971         </FEEDBACK>
972       </PHP_EXTENSION>
973       <PHP_EXTENSION name="spl" level="required">
974         <FEEDBACK>
975           <ON_ERROR message="splrequired" />
976         </FEEDBACK>
977       </PHP_EXTENSION>
978       <PHP_EXTENSION name="pcre" level="required">
979       </PHP_EXTENSION>
980       <PHP_EXTENSION name="dom" level="required">
981       </PHP_EXTENSION>
982       <PHP_EXTENSION name="xml" level="required">
983       </PHP_EXTENSION>
984       <PHP_EXTENSION name="intl" level="optional">
985         <FEEDBACK>
986           <ON_CHECK message="intlrecommended" />
987         </FEEDBACK>
988       </PHP_EXTENSION>
989       <PHP_EXTENSION name="json" level="required">
990       </PHP_EXTENSION>
991       <PHP_EXTENSION name="hash" level="required"/>
992     </PHP_EXTENSIONS>
993     <PHP_SETTINGS>
994       <PHP_SETTING name="memory_limit" value="64M" level="required">
995         <FEEDBACK>
996           <ON_ERROR message="settingmemorylimit" />
997         </FEEDBACK>
998       </PHP_SETTING>
999       <PHP_SETTING name="safe_mode" value="0" level="optional">
1000         <FEEDBACK>
1001           <ON_CHECK message="settingsafemode" />
1002         </FEEDBACK>
1003       </PHP_SETTING>
1004       <PHP_SETTING name="file_uploads" value="1" level="optional">
1005         <FEEDBACK>
1006           <ON_CHECK message="settingfileuploads" />
1007         </FEEDBACK>
1008       </PHP_SETTING>
1009       <PHP_SETTING name="opcache.enable" value="1" level="optional">
1010         <FEEDBACK>
1011           <ON_CHECK message="opcacherecommended" />
1012         </FEEDBACK>
1013       </PHP_SETTING>
1014     </PHP_SETTINGS>
1015   </MOODLE>
1016   <MOODLE version="2.7" requires="2.2">
1017     <UNICODE level="required">
1018       <FEEDBACK>
1019         <ON_ERROR message="unicoderequired" />
1020       </FEEDBACK>
1021     </UNICODE>
1022     <DATABASE level="required">
1023       <VENDOR name="mariadb" version="5.5.31" />
1024       <VENDOR name="mysql" version="5.5.31" />
1025       <VENDOR name="postgres" version="9.1" />
1026       <VENDOR name="mssql" version="10.0" />
1027       <VENDOR name="oracle" version="10.2" />
1028     </DATABASE>
1029     <PHP version="5.4.4" level="required">
1030       <RESTRICT function="restrict_php_version_7" message="unsupportedphpversion7" />
1031     </PHP>
1032     <PCREUNICODE level="optional">
1033       <FEEDBACK>
1034         <ON_CHECK message="pcreunicodewarning" />
1035       </FEEDBACK>
1036     </PCREUNICODE>
1037     <PHP_EXTENSIONS>
1038       <PHP_EXTENSION name="iconv" level="required">
1039         <FEEDBACK>
1040           <ON_ERROR message="iconvrequired" />
1041         </FEEDBACK>
1042       </PHP_EXTENSION>
1043       <PHP_EXTENSION name="mbstring" level="optional">
1044         <FEEDBACK>
1045           <ON_CHECK message="mbstringrecommended" />
1046         </FEEDBACK>
1047       </PHP_EXTENSION>
1048       <PHP_EXTENSION name="curl" level="required">
1049         <FEEDBACK>
1050           <ON_ERROR message="curlrequired" />
1051         </FEEDBACK>
1052       </PHP_EXTENSION>
1053       <PHP_EXTENSION name="openssl" level="optional">
1054         <FEEDBACK>
1055           <ON_CHECK message="opensslrecommended" />
1056         </FEEDBACK>
1057       </PHP_EXTENSION>
1058       <PHP_EXTENSION name="tokenizer" level="optional">
1059         <FEEDBACK>
1060           <ON_CHECK message="tokenizerrecommended" />
1061         </FEEDBACK>
1062       </PHP_EXTENSION>
1063       <PHP_EXTENSION name="xmlrpc" level="optional">
1064         <FEEDBACK>
1065           <ON_CHECK message="xmlrpcrecommended" />
1066         </FEEDBACK>
1067       </PHP_EXTENSION>
1068       <PHP_EXTENSION name="soap" level="optional">
1069         <FEEDBACK>
1070           <ON_CHECK message="soaprecommended" />
1071         </FEEDBACK>
1072       </PHP_EXTENSION>
1073       <PHP_EXTENSION name="ctype" level="required">
1074         <FEEDBACK>
1075           <ON_ERROR message="ctyperequired" />
1076         </FEEDBACK>
1077       </PHP_EXTENSION>
1078       <PHP_EXTENSION name="zip" level="required">
1079         <FEEDBACK>
1080           <ON_ERROR message="ziprequired" />
1081         </FEEDBACK>
1082       </PHP_EXTENSION>
1083       <PHP_EXTENSION name="zlib" level="required">
1084       </PHP_EXTENSION>
1085       <PHP_EXTENSION name="gd" level="required">
1086         <FEEDBACK>
1087           <ON_ERROR message="gdrequired" />
1088         </FEEDBACK>
1089       </PHP_EXTENSION>
1090       <PHP_EXTENSION name="simplexml" level="required">
1091         <FEEDBACK>
1092           <ON_ERROR message="simplexmlrequired" />
1093         </FEEDBACK>
1094       </PHP_EXTENSION>
1095       <PHP_EXTENSION name="spl" level="required">
1096         <FEEDBACK>
1097           <ON_ERROR message="splrequired" />
1098         </FEEDBACK>
1099       </PHP_EXTENSION>
1100       <PHP_EXTENSION name="pcre" level="required">
1101       </PHP_EXTENSION>
1102       <PHP_EXTENSION name="dom" level="required">
1103       </PHP_EXTENSION>
1104       <PHP_EXTENSION name="xml" level="required">
1105       </PHP_EXTENSION>
1106       <PHP_EXTENSION name="intl" level="optional">
1107         <FEEDBACK>
1108           <ON_CHECK message="intlrecommended" />
1109         </FEEDBACK>
1110       </PHP_EXTENSION>
1111       <PHP_EXTENSION name="json" level="required">
1112       </PHP_EXTENSION>
1113       <PHP_EXTENSION name="hash" level="required"/>
1114     </PHP_EXTENSIONS>
1115     <PHP_SETTINGS>
1116       <PHP_SETTING name="memory_limit" value="96M" level="required">
1117         <FEEDBACK>
1118           <ON_ERROR message="settingmemorylimit" />
1119         </FEEDBACK>
1120       </PHP_SETTING>
1121       <PHP_SETTING name="file_uploads" value="1" level="optional">
1122         <FEEDBACK>
1123           <ON_CHECK message="settingfileuploads" />
1124         </FEEDBACK>
1125       </PHP_SETTING>
1126       <PHP_SETTING name="opcache.enable" value="1" level="optional">
1127         <FEEDBACK>
1128           <ON_CHECK message="opcacherecommended" />
1129         </FEEDBACK>
1130       </PHP_SETTING>
1131     </PHP_SETTINGS>
1132     <CUSTOM_CHECKS>
1133       <CUSTOM_CHECK file="question/engine/upgrade/upgradelib.php" function="quiz_attempts_upgraded" level="required">
1134         <FEEDBACK>
1135           <ON_ERROR message="quizattemptsupgradedmessage" />
1136         </FEEDBACK>
1137       </CUSTOM_CHECK>
1138       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_slasharguments" level="optional">
1139         <FEEDBACK>
1140           <ON_CHECK message="slashargumentswarning" />
1141         </FEEDBACK>
1142       </CUSTOM_CHECK>
1143       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_tables_row_format" level="optional">
1144         <FEEDBACK>
1145           <ON_CHECK message="unsupporteddbtablerowformat" />
1146         </FEEDBACK>
1147       </CUSTOM_CHECK>
1148       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_libcurl_version" level="optional">
1149         <FEEDBACK>
1150           <ON_CHECK message="libcurlwarning" />
1151         </FEEDBACK>
1152       </CUSTOM_CHECK>
1153     </CUSTOM_CHECKS>
1154   </MOODLE>
1155   <MOODLE version="2.8" requires="2.2">
1156     <UNICODE level="required">
1157       <FEEDBACK>
1158         <ON_ERROR message="unicoderequired" />
1159       </FEEDBACK>
1160     </UNICODE>
1161     <DATABASE level="required">
1162       <VENDOR name="mariadb" version="5.5.31" />
1163       <VENDOR name="mysql" version="5.5.31" />
1164       <VENDOR name="postgres" version="9.1" />
1165       <VENDOR name="mssql" version="10.0" />
1166       <VENDOR name="oracle" version="10.2" />
1167     </DATABASE>
1168     <PHP version="5.4.4" level="required">
1169       <RESTRICT function="restrict_php_version_7" message="unsupportedphpversion7" />
1170     </PHP>
1171     <PCREUNICODE level="optional">
1172       <FEEDBACK>
1173         <ON_CHECK message="pcreunicodewarning" />
1174       </FEEDBACK>
1175     </PCREUNICODE>
1176     <PHP_EXTENSIONS>
1177       <PHP_EXTENSION name="iconv" level="required">
1178         <FEEDBACK>
1179           <ON_ERROR message="iconvrequired" />
1180         </FEEDBACK>
1181       </PHP_EXTENSION>
1182       <PHP_EXTENSION name="mbstring" level="optional">
1183         <FEEDBACK>
1184           <ON_CHECK message="mbstringrecommended" />
1185         </FEEDBACK>
1186       </PHP_EXTENSION>
1187       <PHP_EXTENSION name="curl" level="required">
1188         <FEEDBACK>
1189           <ON_ERROR message="curlrequired" />
1190         </FEEDBACK>
1191       </PHP_EXTENSION>
1192       <PHP_EXTENSION name="openssl" level="optional">
1193         <FEEDBACK>
1194           <ON_CHECK message="opensslrecommended" />
1195         </FEEDBACK>
1196       </PHP_EXTENSION>
1197       <PHP_EXTENSION name="tokenizer" level="optional">
1198         <FEEDBACK>
1199           <ON_CHECK message="tokenizerrecommended" />
1200         </FEEDBACK>
1201       </PHP_EXTENSION>
1202       <PHP_EXTENSION name="xmlrpc" level="optional">
1203         <FEEDBACK>
1204           <ON_CHECK message="xmlrpcrecommended" />
1205         </FEEDBACK>
1206       </PHP_EXTENSION>
1207       <PHP_EXTENSION name="soap" level="optional">
1208         <FEEDBACK>
1209           <ON_CHECK message="soaprecommended" />
1210         </FEEDBACK>
1211       </PHP_EXTENSION>
1212       <PHP_EXTENSION name="ctype" level="required">
1213         <FEEDBACK>
1214           <ON_ERROR message="ctyperequired" />
1215         </FEEDBACK>
1216       </PHP_EXTENSION>
1217       <PHP_EXTENSION name="zip" level="required">
1218         <FEEDBACK>
1219           <ON_ERROR message="ziprequired" />
1220         </FEEDBACK>
1221       </PHP_EXTENSION>
1222       <PHP_EXTENSION name="zlib" level="required">
1223       </PHP_EXTENSION>
1224       <PHP_EXTENSION name="gd" level="required">
1225         <FEEDBACK>
1226           <ON_ERROR message="gdrequired" />
1227         </FEEDBACK>
1228       </PHP_EXTENSION>
1229       <PHP_EXTENSION name="simplexml" level="required">
1230         <FEEDBACK>
1231           <ON_ERROR message="simplexmlrequired" />
1232         </FEEDBACK>
1233       </PHP_EXTENSION>
1234       <PHP_EXTENSION name="spl" level="required">
1235         <FEEDBACK>
1236           <ON_ERROR message="splrequired" />
1237         </FEEDBACK>
1238       </PHP_EXTENSION>
1239       <PHP_EXTENSION name="pcre" level="required">
1240       </PHP_EXTENSION>
1241       <PHP_EXTENSION name="dom" level="required">
1242       </PHP_EXTENSION>
1243       <PHP_EXTENSION name="xml" level="required">
1244       </PHP_EXTENSION>
1245       <PHP_EXTENSION name="intl" level="optional">
1246         <FEEDBACK>
1247           <ON_CHECK message="intlrecommended" />
1248         </FEEDBACK>
1249       </PHP_EXTENSION>
1250       <PHP_EXTENSION name="json" level="required">
1251       </PHP_EXTENSION>
1252       <PHP_EXTENSION name="hash" level="required"/>
1253     </PHP_EXTENSIONS>
1254     <PHP_SETTINGS>
1255       <PHP_SETTING name="memory_limit" value="96M" level="required">
1256         <FEEDBACK>
1257           <ON_ERROR message="settingmemorylimit" />
1258         </FEEDBACK>
1259       </PHP_SETTING>
1260       <PHP_SETTING name="file_uploads" value="1" level="optional">
1261         <FEEDBACK>
1262           <ON_CHECK message="settingfileuploads" />
1263         </FEEDBACK>
1264       </PHP_SETTING>
1265       <PHP_SETTING name="opcache.enable" value="1" level="optional">
1266         <FEEDBACK>
1267           <ON_CHECK message="opcacherecommended" />
1268         </FEEDBACK>
1269       </PHP_SETTING>
1270     </PHP_SETTINGS>
1271     <CUSTOM_CHECKS>
1272       <CUSTOM_CHECK file="question/engine/upgrade/upgradelib.php" function="quiz_attempts_upgraded" level="required">
1273         <FEEDBACK>
1274           <ON_ERROR message="quizattemptsupgradedmessage" />
1275         </FEEDBACK>
1276       </CUSTOM_CHECK>
1277       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_slasharguments" level="optional">
1278         <FEEDBACK>
1279           <ON_CHECK message="slashargumentswarning" />
1280         </FEEDBACK>
1281       </CUSTOM_CHECK>
1282       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_tables_row_format" level="optional">
1283         <FEEDBACK>
1284           <ON_CHECK message="unsupporteddbtablerowformat" />
1285         </FEEDBACK>
1286       </CUSTOM_CHECK>
1287     </CUSTOM_CHECKS>
1288   </MOODLE>
1289   <MOODLE version="2.9" requires="2.2">
1290     <UNICODE level="required">
1291       <FEEDBACK>
1292         <ON_ERROR message="unicoderequired" />
1293       </FEEDBACK>
1294     </UNICODE>
1295     <DATABASE level="required">
1296       <VENDOR name="mariadb" version="5.5.31" />
1297       <VENDOR name="mysql" version="5.5.31" />
1298       <VENDOR name="postgres" version="9.1" />
1299       <VENDOR name="mssql" version="10.0" />
1300       <VENDOR name="oracle" version="10.2" />
1301     </DATABASE>
1302     <PHP version="5.4.4" level="required">
1303       <RESTRICT function="restrict_php_version_7" message="unsupportedphpversion7" />
1304     </PHP>
1305     <PCREUNICODE level="optional">
1306       <FEEDBACK>
1307         <ON_CHECK message="pcreunicodewarning" />
1308       </FEEDBACK>
1309     </PCREUNICODE>
1310     <PHP_EXTENSIONS>
1311       <PHP_EXTENSION name="iconv" level="required">
1312         <FEEDBACK>
1313           <ON_ERROR message="iconvrequired" />
1314         </FEEDBACK>
1315       </PHP_EXTENSION>
1316       <PHP_EXTENSION name="mbstring" level="optional">
1317         <FEEDBACK>
1318           <ON_CHECK message="mbstringrecommended" />
1319         </FEEDBACK>
1320       </PHP_EXTENSION>
1321       <PHP_EXTENSION name="curl" level="required">
1322         <FEEDBACK>
1323           <ON_ERROR message="curlrequired" />
1324         </FEEDBACK>
1325       </PHP_EXTENSION>
1326       <PHP_EXTENSION name="openssl" level="optional">
1327         <FEEDBACK>
1328           <ON_CHECK message="opensslrecommended" />
1329         </FEEDBACK>
1330       </PHP_EXTENSION>
1331       <PHP_EXTENSION name="tokenizer" level="optional">
1332         <FEEDBACK>
1333           <ON_CHECK message="tokenizerrecommended" />
1334         </FEEDBACK>
1335       </PHP_EXTENSION>
1336       <PHP_EXTENSION name="xmlrpc" level="optional">
1337         <FEEDBACK>
1338           <ON_CHECK message="xmlrpcrecommended" />
1339         </FEEDBACK>
1340       </PHP_EXTENSION>
1341       <PHP_EXTENSION name="soap" level="optional">
1342         <FEEDBACK>
1343           <ON_CHECK message="soaprecommended" />
1344         </FEEDBACK>
1345       </PHP_EXTENSION>
1346       <PHP_EXTENSION name="ctype" level="required">
1347         <FEEDBACK>
1348           <ON_ERROR message="ctyperequired" />
1349         </FEEDBACK>
1350       </PHP_EXTENSION>
1351       <PHP_EXTENSION name="zip" level="required">
1352         <FEEDBACK>
1353           <ON_ERROR message="ziprequired" />
1354         </FEEDBACK>
1355       </PHP_EXTENSION>
1356       <PHP_EXTENSION name="zlib" level="required">
1357       </PHP_EXTENSION>
1358       <PHP_EXTENSION name="gd" level="required">
1359         <FEEDBACK>
1360           <ON_ERROR message="gdrequired" />
1361         </FEEDBACK>
1362       </PHP_EXTENSION>
1363       <PHP_EXTENSION name="simplexml" level="required">
1364         <FEEDBACK>
1365           <ON_ERROR message="simplexmlrequired" />
1366         </FEEDBACK>
1367       </PHP_EXTENSION>
1368       <PHP_EXTENSION name="spl" level="required">
1369         <FEEDBACK>
1370           <ON_ERROR message="splrequired" />
1371         </FEEDBACK>
1372       </PHP_EXTENSION>
1373       <PHP_EXTENSION name="pcre" level="required">
1374       </PHP_EXTENSION>
1375       <PHP_EXTENSION name="dom" level="required">
1376       </PHP_EXTENSION>
1377       <PHP_EXTENSION name="xml" level="required">
1378       </PHP_EXTENSION>
1379       <PHP_EXTENSION name="intl" level="optional">
1380         <FEEDBACK>
1381           <ON_CHECK message="intlrecommended" />
1382         </FEEDBACK>
1383       </PHP_EXTENSION>
1384       <PHP_EXTENSION name="json" level="required">
1385       </PHP_EXTENSION>
1386       <PHP_EXTENSION name="hash" level="required"/>
1387     </PHP_EXTENSIONS>
1388     <PHP_SETTINGS>
1389       <PHP_SETTING name="memory_limit" value="96M" level="required">
1390         <FEEDBACK>
1391           <ON_ERROR message="settingmemorylimit" />
1392         </FEEDBACK>
1393       </PHP_SETTING>
1394       <PHP_SETTING name="file_uploads" value="1" level="optional">
1395         <FEEDBACK>
1396           <ON_CHECK message="settingfileuploads" />
1397         </FEEDBACK>
1398       </PHP_SETTING>
1399       <PHP_SETTING name="opcache.enable" value="1" level="optional">
1400         <FEEDBACK>
1401           <ON_CHECK message="opcacherecommended" />
1402         </FEEDBACK>
1403       </PHP_SETTING>
1404     </PHP_SETTINGS>
1405     <CUSTOM_CHECKS>
1406       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_storage_engine" level="required">
1407         <FEEDBACK>
1408           <ON_ERROR message="unsupporteddbstorageengine" />
1409         </FEEDBACK>
1410       </CUSTOM_CHECK>
1411       <CUSTOM_CHECK file="question/engine/upgrade/upgradelib.php" function="quiz_attempts_upgraded" level="required">
1412         <FEEDBACK>
1413           <ON_ERROR message="quizattemptsupgradedmessage" />
1414         </FEEDBACK>
1415       </CUSTOM_CHECK>
1416       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_slasharguments" level="optional">
1417         <FEEDBACK>
1418           <ON_CHECK message="slashargumentswarning" />
1419         </FEEDBACK>
1420       </CUSTOM_CHECK>
1421       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_tables_row_format" level="optional">
1422         <FEEDBACK>
1423           <ON_CHECK message="unsupporteddbtablerowformat" />
1424         </FEEDBACK>
1425       </CUSTOM_CHECK>
1426       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_libcurl_version" level="optional">
1427         <FEEDBACK>
1428           <ON_CHECK message="libcurlwarning" />
1429         </FEEDBACK>
1430       </CUSTOM_CHECK>
1431     </CUSTOM_CHECKS>
1432   </MOODLE>
1433   <MOODLE version="3.0" requires="2.2">
1434     <UNICODE level="required">
1435       <FEEDBACK>
1436         <ON_ERROR message="unicoderequired" />
1437       </FEEDBACK>
1438     </UNICODE>
1439     <DATABASE level="required">
1440       <VENDOR name="mariadb" version="5.5.31" />
1441       <VENDOR name="mysql" version="5.5.31" />
1442       <VENDOR name="postgres" version="9.1" />
1443       <VENDOR name="mssql" version="10.0" />
1444       <VENDOR name="oracle" version="10.2" />
1445     </DATABASE>
1446     <PHP version="5.4.4" level="required">
1447       <RESTRICT function="restrict_php_version_71" message="unsupportedphpversion71" />
1448     </PHP>
1449     <PCREUNICODE level="optional">
1450       <FEEDBACK>
1451         <ON_CHECK message="pcreunicodewarning" />
1452       </FEEDBACK>
1453     </PCREUNICODE>
1454     <PHP_EXTENSIONS>
1455       <PHP_EXTENSION name="iconv" level="required">
1456         <FEEDBACK>
1457           <ON_ERROR message="iconvrequired" />
1458         </FEEDBACK>
1459       </PHP_EXTENSION>
1460       <PHP_EXTENSION name="mbstring" level="optional">
1461         <FEEDBACK>
1462           <ON_CHECK message="mbstringrecommended" />
1463         </FEEDBACK>
1464       </PHP_EXTENSION>
1465       <PHP_EXTENSION name="curl" level="required">
1466         <FEEDBACK>
1467           <ON_ERROR message="curlrequired" />
1468         </FEEDBACK>
1469       </PHP_EXTENSION>
1470       <PHP_EXTENSION name="openssl" level="optional">
1471         <FEEDBACK>
1472           <ON_CHECK message="opensslrecommended" />
1473         </FEEDBACK>
1474       </PHP_EXTENSION>
1475       <PHP_EXTENSION name="tokenizer" level="optional">
1476         <FEEDBACK>
1477           <ON_CHECK message="tokenizerrecommended" />
1478         </FEEDBACK>
1479       </PHP_EXTENSION>
1480       <PHP_EXTENSION name="xmlrpc" level="optional">
1481         <FEEDBACK>
1482           <ON_CHECK message="xmlrpcrecommended" />
1483         </FEEDBACK>
1484       </PHP_EXTENSION>
1485       <PHP_EXTENSION name="soap" level="optional">
1486         <FEEDBACK>
1487           <ON_CHECK message="soaprecommended" />
1488         </FEEDBACK>
1489       </PHP_EXTENSION>
1490       <PHP_EXTENSION name="ctype" level="required">
1491         <FEEDBACK>
1492           <ON_ERROR message="ctyperequired" />
1493         </FEEDBACK>
1494       </PHP_EXTENSION>
1495       <PHP_EXTENSION name="zip" level="required">
1496         <FEEDBACK>
1497           <ON_ERROR message="ziprequired" />
1498         </FEEDBACK>
1499       </PHP_EXTENSION>
1500       <PHP_EXTENSION name="zlib" level="required">
1501       </PHP_EXTENSION>
1502       <PHP_EXTENSION name="gd" level="required">
1503         <FEEDBACK>
1504           <ON_ERROR message="gdrequired" />
1505         </FEEDBACK>
1506       </PHP_EXTENSION>
1507       <PHP_EXTENSION name="simplexml" level="required">
1508         <FEEDBACK>
1509           <ON_ERROR message="simplexmlrequired" />
1510         </FEEDBACK>
1511       </PHP_EXTENSION>
1512       <PHP_EXTENSION name="spl" level="required">
1513         <FEEDBACK>
1514           <ON_ERROR message="splrequired" />
1515         </FEEDBACK>
1516       </PHP_EXTENSION>
1517       <PHP_EXTENSION name="pcre" level="required">
1518       </PHP_EXTENSION>
1519       <PHP_EXTENSION name="dom" level="required">
1520       </PHP_EXTENSION>
1521       <PHP_EXTENSION name="xml" level="required">
1522       </PHP_EXTENSION>
1523       <PHP_EXTENSION name="intl" level="optional">
1524         <FEEDBACK>
1525           <ON_CHECK message="intlrecommended" />
1526         </FEEDBACK>
1527       </PHP_EXTENSION>
1528       <PHP_EXTENSION name="json" level="required">
1529       </PHP_EXTENSION>
1530       <PHP_EXTENSION name="hash" level="required"/>
1531     </PHP_EXTENSIONS>
1532     <PHP_SETTINGS>
1533       <PHP_SETTING name="memory_limit" value="96M" level="required">
1534         <FEEDBACK>
1535           <ON_ERROR message="settingmemorylimit" />
1536         </FEEDBACK>
1537       </PHP_SETTING>
1538       <PHP_SETTING name="file_uploads" value="1" level="optional">
1539         <FEEDBACK>
1540           <ON_CHECK message="settingfileuploads" />
1541         </FEEDBACK>
1542       </PHP_SETTING>
1543       <PHP_SETTING name="opcache.enable" value="1" level="optional">
1544         <FEEDBACK>
1545           <ON_CHECK message="opcacherecommended" />
1546         </FEEDBACK>
1547       </PHP_SETTING>
1548     </PHP_SETTINGS>
1549     <CUSTOM_CHECKS>
1550       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_storage_engine" level="required">
1551         <FEEDBACK>
1552           <ON_ERROR message="unsupporteddbstorageengine" />
1553         </FEEDBACK>
1554       </CUSTOM_CHECK>
1555       <CUSTOM_CHECK file="question/engine/upgrade/upgradelib.php" function="quiz_attempts_upgraded" level="required">
1556         <FEEDBACK>
1557           <ON_ERROR message="quizattemptsupgradedmessage" />
1558         </FEEDBACK>
1559       </CUSTOM_CHECK>
1560       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_slasharguments" level="optional">
1561         <FEEDBACK>
1562           <ON_CHECK message="slashargumentswarning" />
1563         </FEEDBACK>
1564       </CUSTOM_CHECK>
1565       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_tables_row_format" level="optional">
1566         <FEEDBACK>
1567           <ON_CHECK message="unsupporteddbtablerowformat" />
1568         </FEEDBACK>
1569       </CUSTOM_CHECK>
1570       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_libcurl_version" level="optional">
1571         <FEEDBACK>
1572           <ON_CHECK message="libcurlwarning" />
1573         </FEEDBACK>
1574       </CUSTOM_CHECK>
1575     </CUSTOM_CHECKS>
1576   </MOODLE>
1577   <MOODLE version="3.1" requires="2.7">
1578     <UNICODE level="required">
1579       <FEEDBACK>
1580         <ON_ERROR message="unicoderequired" />
1581       </FEEDBACK>
1582     </UNICODE>
1583     <DATABASE level="required">
1584       <VENDOR name="mariadb" version="5.5.31" />
1585       <VENDOR name="mysql" version="5.5.31" />
1586       <VENDOR name="postgres" version="9.1" />
1587       <VENDOR name="mssql" version="10.0" />
1588       <VENDOR name="oracle" version="10.2" />
1589     </DATABASE>
1590     <PHP version="5.4.4" level="required">
1591       <RESTRICT function="restrict_php_version_71" message="unsupportedphpversion71" />
1592     </PHP>
1593     <PCREUNICODE level="optional">
1594       <FEEDBACK>
1595         <ON_CHECK message="pcreunicodewarning" />
1596       </FEEDBACK>
1597     </PCREUNICODE>
1598     <PHP_EXTENSIONS>
1599       <PHP_EXTENSION name="iconv" level="required">
1600         <FEEDBACK>
1601           <ON_ERROR message="iconvrequired" />
1602         </FEEDBACK>
1603       </PHP_EXTENSION>
1604       <PHP_EXTENSION name="mbstring" level="optional">
1605         <FEEDBACK>
1606           <ON_CHECK message="mbstringrecommended" />
1607         </FEEDBACK>
1608       </PHP_EXTENSION>
1609       <PHP_EXTENSION name="curl" level="required">
1610         <FEEDBACK>
1611           <ON_ERROR message="curlrequired" />
1612         </FEEDBACK>
1613       </PHP_EXTENSION>
1614       <PHP_EXTENSION name="openssl" level="optional">
1615         <FEEDBACK>
1616           <ON_CHECK message="opensslrecommended" />
1617         </FEEDBACK>
1618       </PHP_EXTENSION>
1619       <PHP_EXTENSION name="tokenizer" level="optional">
1620         <FEEDBACK>
1621           <ON_CHECK message="tokenizerrecommended" />
1622         </FEEDBACK>
1623       </PHP_EXTENSION>
1624       <PHP_EXTENSION name="xmlrpc" level="optional">
1625         <FEEDBACK>
1626           <ON_CHECK message="xmlrpcrecommended" />
1627         </FEEDBACK>
1628       </PHP_EXTENSION>
1629       <PHP_EXTENSION name="soap" level="optional">
1630         <FEEDBACK>
1631           <ON_CHECK message="soaprecommended" />
1632         </FEEDBACK>
1633       </PHP_EXTENSION>
1634       <PHP_EXTENSION name="ctype" level="required">
1635         <FEEDBACK>
1636           <ON_ERROR message="ctyperequired" />
1637         </FEEDBACK>
1638       </PHP_EXTENSION>
1639       <PHP_EXTENSION name="zip" level="required">
1640         <FEEDBACK>
1641           <ON_ERROR message="ziprequired" />
1642         </FEEDBACK>
1643       </PHP_EXTENSION>
1644       <PHP_EXTENSION name="zlib" level="required">
1645       </PHP_EXTENSION>
1646       <PHP_EXTENSION name="gd" level="required">
1647         <FEEDBACK>
1648           <ON_ERROR message="gdrequired" />
1649         </FEEDBACK>
1650       </PHP_EXTENSION>
1651       <PHP_EXTENSION name="simplexml" level="required">
1652         <FEEDBACK>
1653           <ON_ERROR message="simplexmlrequired" />
1654         </FEEDBACK>
1655       </PHP_EXTENSION>
1656       <PHP_EXTENSION name="spl" level="required">
1657         <FEEDBACK>
1658           <ON_ERROR message="splrequired" />
1659         </FEEDBACK>
1660       </PHP_EXTENSION>
1661       <PHP_EXTENSION name="pcre" level="required">
1662       </PHP_EXTENSION>
1663       <PHP_EXTENSION name="dom" level="required">
1664       </PHP_EXTENSION>
1665       <PHP_EXTENSION name="xml" level="required">
1666       </PHP_EXTENSION>
1667       <PHP_EXTENSION name="xmlreader" level="required">
1668       </PHP_EXTENSION>
1669       <PHP_EXTENSION name="intl" level="optional">
1670         <FEEDBACK>
1671           <ON_CHECK message="intlrecommended" />
1672         </FEEDBACK>
1673       </PHP_EXTENSION>
1674       <PHP_EXTENSION name="json" level="required">
1675       </PHP_EXTENSION>
1676       <PHP_EXTENSION name="hash" level="required"/>
1677     </PHP_EXTENSIONS>
1678     <PHP_SETTINGS>
1679       <PHP_SETTING name="memory_limit" value="96M" level="required">
1680         <FEEDBACK>
1681           <ON_ERROR message="settingmemorylimit" />
1682         </FEEDBACK>
1683       </PHP_SETTING>
1684       <PHP_SETTING name="file_uploads" value="1" level="optional">
1685         <FEEDBACK>
1686           <ON_CHECK message="settingfileuploads" />
1687         </FEEDBACK>
1688       </PHP_SETTING>
1689       <PHP_SETTING name="opcache.enable" value="1" level="optional">
1690         <FEEDBACK>
1691           <ON_CHECK message="opcacherecommended" />
1692         </FEEDBACK>
1693       </PHP_SETTING>
1694     </PHP_SETTINGS>
1695     <CUSTOM_CHECKS>
1696       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_storage_engine" level="required">
1697         <FEEDBACK>
1698           <ON_ERROR message="unsupporteddbstorageengine" />
1699         </FEEDBACK>
1700       </CUSTOM_CHECK>
1701       <CUSTOM_CHECK file="question/engine/upgrade/upgradelib.php" function="quiz_attempts_upgraded" level="required">
1702         <FEEDBACK>
1703           <ON_ERROR message="quizattemptsupgradedmessage" />
1704         </FEEDBACK>
1705       </CUSTOM_CHECK>
1706       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_slasharguments" level="optional">
1707         <FEEDBACK>
1708           <ON_CHECK message="slashargumentswarning" />
1709         </FEEDBACK>
1710       </CUSTOM_CHECK>
1711       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_tables_row_format" level="optional">
1712         <FEEDBACK>
1713           <ON_CHECK message="unsupporteddbtablerowformat" />
1714         </FEEDBACK>
1715       </CUSTOM_CHECK>
1716       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_unoconv_version" level="optional">
1717         <FEEDBACK>
1718           <ON_CHECK message="unoconvwarning" />
1719         </FEEDBACK>
1720       </CUSTOM_CHECK>
1721       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_libcurl_version" level="optional">
1722         <FEEDBACK>
1723           <ON_CHECK message="libcurlwarning" />
1724         </FEEDBACK>
1725       </CUSTOM_CHECK>
1726       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_format" level="required">
1727         <FEEDBACK>
1728           <ON_ERROR message="unsupporteddbfileformat" />
1729         </FEEDBACK>
1730       </CUSTOM_CHECK>
1731       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_per_table" level="required">
1732         <FEEDBACK>
1733           <ON_ERROR message="unsupporteddbfilepertable" />
1734         </FEEDBACK>
1735       </CUSTOM_CHECK>
1736       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_large_prefix" level="required">
1737         <FEEDBACK>
1738           <ON_ERROR message="unsupporteddblargeprefix" />
1739         </FEEDBACK>
1740       </CUSTOM_CHECK>
1741     </CUSTOM_CHECKS>
1742   </MOODLE>
1743   <MOODLE version="3.2" requires="2.7">
1744     <UNICODE level="required">
1745       <FEEDBACK>
1746         <ON_ERROR message="unicoderequired" />
1747       </FEEDBACK>
1748     </UNICODE>
1749     <DATABASE level="required">
1750       <VENDOR name="mariadb" version="5.5.31" />
1751       <VENDOR name="mysql" version="5.5.31" />
1752       <VENDOR name="postgres" version="9.1" />
1753       <VENDOR name="mssql" version="10.0" />
1754       <VENDOR name="oracle" version="10.2" />
1755     </DATABASE>
1756     <PHP version="5.6.5" level="required">
1757       <RESTRICT function="restrict_php_version_72" message="unsupportedphpversion72" />
1758     </PHP>
1759     <PCREUNICODE level="optional">
1760       <FEEDBACK>
1761         <ON_CHECK message="pcreunicodewarning" />
1762       </FEEDBACK>
1763     </PCREUNICODE>
1764     <PHP_EXTENSIONS>
1765       <PHP_EXTENSION name="iconv" level="required">
1766         <FEEDBACK>
1767           <ON_ERROR message="iconvrequired" />
1768         </FEEDBACK>
1769       </PHP_EXTENSION>
1770       <PHP_EXTENSION name="mbstring" level="optional">
1771         <FEEDBACK>
1772           <ON_CHECK message="mbstringrecommended" />
1773         </FEEDBACK>
1774       </PHP_EXTENSION>
1775       <PHP_EXTENSION name="curl" level="required">
1776         <FEEDBACK>
1777           <ON_ERROR message="curlrequired" />
1778         </FEEDBACK>
1779       </PHP_EXTENSION>
1780       <PHP_EXTENSION name="openssl" level="optional">
1781         <FEEDBACK>
1782           <ON_CHECK message="opensslrecommended" />
1783         </FEEDBACK>
1784       </PHP_EXTENSION>
1785       <PHP_EXTENSION name="tokenizer" level="optional">
1786         <FEEDBACK>
1787           <ON_CHECK message="tokenizerrecommended" />
1788         </FEEDBACK>
1789       </PHP_EXTENSION>
1790       <PHP_EXTENSION name="xmlrpc" level="optional">
1791         <FEEDBACK>
1792           <ON_CHECK message="xmlrpcrecommended" />
1793         </FEEDBACK>
1794       </PHP_EXTENSION>
1795       <PHP_EXTENSION name="soap" level="optional">
1796         <FEEDBACK>
1797           <ON_CHECK message="soaprecommended" />
1798         </FEEDBACK>
1799       </PHP_EXTENSION>
1800       <PHP_EXTENSION name="ctype" level="required">
1801         <FEEDBACK>
1802           <ON_ERROR message="ctyperequired" />
1803         </FEEDBACK>
1804       </PHP_EXTENSION>
1805       <PHP_EXTENSION name="zip" level="required">
1806         <FEEDBACK>
1807           <ON_ERROR message="ziprequired" />
1808         </FEEDBACK>
1809       </PHP_EXTENSION>
1810       <PHP_EXTENSION name="zlib" level="required">
1811       </PHP_EXTENSION>
1812       <PHP_EXTENSION name="gd" level="required">
1813         <FEEDBACK>
1814           <ON_ERROR message="gdrequired" />
1815         </FEEDBACK>
1816       </PHP_EXTENSION>
1817       <PHP_EXTENSION name="simplexml" level="required">
1818         <FEEDBACK>
1819           <ON_ERROR message="simplexmlrequired" />
1820         </FEEDBACK>
1821       </PHP_EXTENSION>
1822       <PHP_EXTENSION name="spl" level="required">
1823         <FEEDBACK>
1824           <ON_ERROR message="splrequired" />
1825         </FEEDBACK>
1826       </PHP_EXTENSION>
1827       <PHP_EXTENSION name="pcre" level="required">
1828       </PHP_EXTENSION>
1829       <PHP_EXTENSION name="dom" level="required">
1830       </PHP_EXTENSION>
1831       <PHP_EXTENSION name="xml" level="required">
1832       </PHP_EXTENSION>
1833       <PHP_EXTENSION name="xmlreader" level="required">
1834       </PHP_EXTENSION>
1835       <PHP_EXTENSION name="intl" level="optional">
1836         <FEEDBACK>
1837           <ON_CHECK message="intlrecommended" />
1838         </FEEDBACK>
1839       </PHP_EXTENSION>
1840       <PHP_EXTENSION name="json" level="required">
1841       </PHP_EXTENSION>
1842       <PHP_EXTENSION name="hash" level="required"/>
1843     </PHP_EXTENSIONS>
1844     <PHP_SETTINGS>
1845       <PHP_SETTING name="memory_limit" value="96M" level="required">
1846         <FEEDBACK>
1847           <ON_ERROR message="settingmemorylimit" />
1848         </FEEDBACK>
1849       </PHP_SETTING>
1850       <PHP_SETTING name="file_uploads" value="1" level="optional">
1851         <FEEDBACK>
1852           <ON_CHECK message="settingfileuploads" />
1853         </FEEDBACK>
1854       </PHP_SETTING>
1855       <PHP_SETTING name="opcache.enable" value="1" level="optional">
1856         <FEEDBACK>
1857           <ON_CHECK message="opcacherecommended" />
1858         </FEEDBACK>
1859       </PHP_SETTING>
1860     </PHP_SETTINGS>
1861     <CUSTOM_CHECKS>
1862       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_storage_engine" level="required">
1863         <FEEDBACK>
1864           <ON_ERROR message="unsupporteddbstorageengine" />
1865         </FEEDBACK>
1866       </CUSTOM_CHECK>
1867       <CUSTOM_CHECK file="question/engine/upgrade/upgradelib.php" function="quiz_attempts_upgraded" level="required">
1868         <FEEDBACK>
1869           <ON_ERROR message="quizattemptsupgradedmessage" />
1870         </FEEDBACK>
1871       </CUSTOM_CHECK>
1872       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_slasharguments" level="optional">
1873         <FEEDBACK>
1874           <ON_CHECK message="slashargumentswarning" />
1875         </FEEDBACK>
1876       </CUSTOM_CHECK>
1877       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_tables_row_format" level="optional">
1878         <FEEDBACK>
1879           <ON_CHECK message="unsupporteddbtablerowformat" />
1880         </FEEDBACK>
1881       </CUSTOM_CHECK>
1882       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_unoconv_version" level="optional">
1883         <FEEDBACK>
1884           <ON_CHECK message="unoconvwarning" />
1885         </FEEDBACK>
1886       </CUSTOM_CHECK>
1887       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_libcurl_version" level="optional">
1888         <FEEDBACK>
1889           <ON_CHECK message="libcurlwarning" />
1890         </FEEDBACK>
1891       </CUSTOM_CHECK>
1892       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_format" level="required">
1893         <FEEDBACK>
1894           <ON_ERROR message="unsupporteddbfileformat" />
1895         </FEEDBACK>
1896       </CUSTOM_CHECK>
1897       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_per_table" level="required">
1898         <FEEDBACK>
1899           <ON_ERROR message="unsupporteddbfilepertable" />
1900         </FEEDBACK>
1901       </CUSTOM_CHECK>
1902       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_large_prefix" level="required">
1903         <FEEDBACK>
1904           <ON_ERROR message="unsupporteddblargeprefix" />
1905         </FEEDBACK>
1906       </CUSTOM_CHECK>
1907     </CUSTOM_CHECKS>
1908   </MOODLE>
1909   <MOODLE version="3.3" requires="2.7">
1910     <UNICODE level="required">
1911       <FEEDBACK>
1912         <ON_ERROR message="unicoderequired" />
1913       </FEEDBACK>
1914     </UNICODE>
1915     <DATABASE level="required">
1916       <VENDOR name="mariadb" version="5.5.31" />
1917       <VENDOR name="mysql" version="5.5.31" />
1918       <VENDOR name="postgres" version="9.3" />
1919       <VENDOR name="mssql" version="10.0" />
1920       <VENDOR name="oracle" version="10.2" />
1921     </DATABASE>
1922     <PHP version="5.6.5" level="required">
1923       <RESTRICT function="restrict_php_version_72" message="unsupportedphpversion72" />
1924     </PHP>
1925     <PCREUNICODE level="optional">
1926       <FEEDBACK>
1927         <ON_CHECK message="pcreunicodewarning" />
1928       </FEEDBACK>
1929     </PCREUNICODE>
1930     <PHP_EXTENSIONS>
1931       <PHP_EXTENSION name="iconv" level="required">
1932         <FEEDBACK>
1933           <ON_ERROR message="iconvrequired" />
1934         </FEEDBACK>
1935       </PHP_EXTENSION>
1936       <PHP_EXTENSION name="mbstring" level="optional">
1937         <FEEDBACK>
1938           <ON_CHECK message="mbstringrecommended" />
1939         </FEEDBACK>
1940       </PHP_EXTENSION>
1941       <PHP_EXTENSION name="curl" level="required">
1942         <FEEDBACK>
1943           <ON_ERROR message="curlrequired" />
1944         </FEEDBACK>
1945       </PHP_EXTENSION>
1946       <PHP_EXTENSION name="openssl" level="required">
1947         <FEEDBACK>
1948           <ON_ERROR message="opensslrequired" />
1949         </FEEDBACK>
1950       </PHP_EXTENSION>
1951       <PHP_EXTENSION name="tokenizer" level="optional">
1952         <FEEDBACK>
1953           <ON_CHECK message="tokenizerrecommended" />
1954         </FEEDBACK>
1955       </PHP_EXTENSION>
1956       <PHP_EXTENSION name="xmlrpc" level="optional">
1957         <FEEDBACK>
1958           <ON_CHECK message="xmlrpcrecommended" />
1959         </FEEDBACK>
1960       </PHP_EXTENSION>
1961       <PHP_EXTENSION name="soap" level="optional">
1962         <FEEDBACK>
1963           <ON_CHECK message="soaprecommended" />
1964         </FEEDBACK>
1965       </PHP_EXTENSION>
1966       <PHP_EXTENSION name="ctype" level="required">
1967         <FEEDBACK>
1968           <ON_ERROR message="ctyperequired" />
1969         </FEEDBACK>
1970       </PHP_EXTENSION>
1971       <PHP_EXTENSION name="zip" level="required">
1972         <FEEDBACK>
1973           <ON_ERROR message="ziprequired" />
1974         </FEEDBACK>
1975       </PHP_EXTENSION>
1976       <PHP_EXTENSION name="zlib" level="required">
1977       </PHP_EXTENSION>
1978       <PHP_EXTENSION name="gd" level="required">
1979         <FEEDBACK>
1980           <ON_ERROR message="gdrequired" />
1981         </FEEDBACK>
1982       </PHP_EXTENSION>
1983       <PHP_EXTENSION name="simplexml" level="required">
1984         <FEEDBACK>
1985           <ON_ERROR message="simplexmlrequired" />
1986         </FEEDBACK>
1987       </PHP_EXTENSION>
1988       <PHP_EXTENSION name="spl" level="required">
1989         <FEEDBACK>
1990           <ON_ERROR message="splrequired" />
1991         </FEEDBACK>
1992       </PHP_EXTENSION>
1993       <PHP_EXTENSION name="pcre" level="required">
1994       </PHP_EXTENSION>
1995       <PHP_EXTENSION name="dom" level="required">
1996       </PHP_EXTENSION>
1997       <PHP_EXTENSION name="xml" level="required">
1998       </PHP_EXTENSION>
1999       <PHP_EXTENSION name="xmlreader" level="required">
2000       </PHP_EXTENSION>
2001       <PHP_EXTENSION name="intl" level="optional">
2002         <FEEDBACK>
2003           <ON_CHECK message="intlrecommended" />
2004         </FEEDBACK>
2005       </PHP_EXTENSION>
2006       <PHP_EXTENSION name="json" level="required">
2007       </PHP_EXTENSION>
2008       <PHP_EXTENSION name="hash" level="required"/>
2009       <PHP_EXTENSION name="fileinfo" level="required"/>
2010     </PHP_EXTENSIONS>
2011     <PHP_SETTINGS>
2012       <PHP_SETTING name="memory_limit" value="96M" level="required">
2013         <FEEDBACK>
2014           <ON_ERROR message="settingmemorylimit" />
2015         </FEEDBACK>
2016       </PHP_SETTING>
2017       <PHP_SETTING name="file_uploads" value="1" level="optional">
2018         <FEEDBACK>
2019           <ON_CHECK message="settingfileuploads" />
2020         </FEEDBACK>
2021       </PHP_SETTING>
2022       <PHP_SETTING name="opcache.enable" value="1" level="optional">
2023         <FEEDBACK>
2024           <ON_CHECK message="opcacherecommended" />
2025         </FEEDBACK>
2026       </PHP_SETTING>
2027     </PHP_SETTINGS>
2028     <CUSTOM_CHECKS>
2029       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_storage_engine" level="required">
2030         <FEEDBACK>
2031           <ON_ERROR message="unsupporteddbstorageengine" />
2032         </FEEDBACK>
2033       </CUSTOM_CHECK>
2034       <CUSTOM_CHECK file="question/engine/upgrade/upgradelib.php" function="quiz_attempts_upgraded" level="required">
2035         <FEEDBACK>
2036           <ON_ERROR message="quizattemptsupgradedmessage" />
2037         </FEEDBACK>
2038       </CUSTOM_CHECK>
2039       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_slasharguments" level="optional">
2040         <FEEDBACK>
2041           <ON_CHECK message="slashargumentswarning" />
2042         </FEEDBACK>
2043       </CUSTOM_CHECK>
2044       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_tables_row_format" level="optional">
2045         <FEEDBACK>
2046           <ON_CHECK message="unsupporteddbtablerowformat" />
2047         </FEEDBACK>
2048       </CUSTOM_CHECK>
2049       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_unoconv_version" level="optional">
2050         <FEEDBACK>
2051           <ON_CHECK message="unoconvwarning" />
2052         </FEEDBACK>
2053       </CUSTOM_CHECK>
2054       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_libcurl_version" level="optional">
2055         <FEEDBACK>
2056           <ON_CHECK message="libcurlwarning" />
2057         </FEEDBACK>
2058       </CUSTOM_CHECK>
2059       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_format" level="required">
2060         <FEEDBACK>
2061           <ON_ERROR message="unsupporteddbfileformat" />
2062         </FEEDBACK>
2063       </CUSTOM_CHECK>
2064       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_per_table" level="required">
2065         <FEEDBACK>
2066           <ON_ERROR message="unsupporteddbfilepertable" />
2067         </FEEDBACK>
2068       </CUSTOM_CHECK>
2069       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_large_prefix" level="required">
2070         <FEEDBACK>
2071           <ON_ERROR message="unsupporteddblargeprefix" />
2072         </FEEDBACK>
2073       </CUSTOM_CHECK>
2074       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_is_https" level="optional">
2075         <FEEDBACK>
2076           <ON_CHECK message="ishttpswarning" />
2077         </FEEDBACK>
2078       </CUSTOM_CHECK>
2079       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_incomplete_unicode_support" level="optional">
2080         <FEEDBACK>
2081           <ON_CHECK message="incompleteunicodesupport" />
2082         </FEEDBACK>
2083       </CUSTOM_CHECK>
2084     </CUSTOM_CHECKS>
2085   </MOODLE>
2086   <MOODLE version="3.4" requires="3.0">
2087     <UNICODE level="required">
2088       <FEEDBACK>
2089         <ON_ERROR message="unicoderequired" />
2090       </FEEDBACK>
2091     </UNICODE>
2092     <DATABASE level="required">
2093       <VENDOR name="mariadb" version="5.5.31" />
2094       <VENDOR name="mysql" version="5.5.31" />
2095       <VENDOR name="postgres" version="9.3" />
2096       <VENDOR name="mssql" version="10.0" />
2097       <VENDOR name="oracle" version="10.2" />
2098     </DATABASE>
2099     <PHP version="7.0.0" level="required">
2100       <RESTRICT function="restrict_php_version_73" message="unsupportedphpversion73" />
2101     </PHP>
2102     <PCREUNICODE level="optional">
2103       <FEEDBACK>
2104         <ON_CHECK message="pcreunicodewarning" />
2105       </FEEDBACK>
2106     </PCREUNICODE>
2107     <PHP_EXTENSIONS>
2108       <PHP_EXTENSION name="iconv" level="required">
2109         <FEEDBACK>
2110           <ON_ERROR message="iconvrequired" />
2111         </FEEDBACK>
2112       </PHP_EXTENSION>
2113       <PHP_EXTENSION name="mbstring" level="optional">
2114         <FEEDBACK>
2115           <ON_CHECK message="mbstringrecommended" />
2116         </FEEDBACK>
2117       </PHP_EXTENSION>
2118       <PHP_EXTENSION name="curl" level="required">
2119         <FEEDBACK>
2120           <ON_ERROR message="curlrequired" />
2121         </FEEDBACK>
2122       </PHP_EXTENSION>
2123       <PHP_EXTENSION name="openssl" level="required">
2124         <FEEDBACK>
2125           <ON_ERROR message="opensslrequired" />
2126         </FEEDBACK>
2127       </PHP_EXTENSION>
2128       <PHP_EXTENSION name="tokenizer" level="optional">
2129         <FEEDBACK>
2130           <ON_CHECK message="tokenizerrecommended" />
2131         </FEEDBACK>
2132       </PHP_EXTENSION>
2133       <PHP_EXTENSION name="xmlrpc" level="optional">
2134         <FEEDBACK>
2135           <ON_CHECK message="xmlrpcrecommended" />
2136         </FEEDBACK>
2137       </PHP_EXTENSION>
2138       <PHP_EXTENSION name="soap" level="optional">
2139         <FEEDBACK>
2140           <ON_CHECK message="soaprecommended" />
2141         </FEEDBACK>
2142       </PHP_EXTENSION>
2143       <PHP_EXTENSION name="ctype" level="required">
2144         <FEEDBACK>
2145           <ON_ERROR message="ctyperequired" />
2146         </FEEDBACK>
2147       </PHP_EXTENSION>
2148       <PHP_EXTENSION name="zip" level="required">
2149         <FEEDBACK>
2150           <ON_ERROR message="ziprequired" />
2151         </FEEDBACK>
2152       </PHP_EXTENSION>
2153       <PHP_EXTENSION name="zlib" level="required">
2154       </PHP_EXTENSION>
2155       <PHP_EXTENSION name="gd" level="required">
2156         <FEEDBACK>
2157           <ON_ERROR message="gdrequired" />
2158         </FEEDBACK>
2159       </PHP_EXTENSION>
2160       <PHP_EXTENSION name="simplexml" level="required">
2161         <FEEDBACK>
2162           <ON_ERROR message="simplexmlrequired" />
2163         </FEEDBACK>
2164       </PHP_EXTENSION>
2165       <PHP_EXTENSION name="spl" level="required">
2166         <FEEDBACK>
2167           <ON_ERROR message="splrequired" />
2168         </FEEDBACK>
2169       </PHP_EXTENSION>
2170       <PHP_EXTENSION name="pcre" level="required">
2171       </PHP_EXTENSION>
2172       <PHP_EXTENSION name="dom" level="required">
2173       </PHP_EXTENSION>
2174       <PHP_EXTENSION name="xml" level="required">
2175       </PHP_EXTENSION>
2176       <PHP_EXTENSION name="xmlreader" level="required">
2177       </PHP_EXTENSION>
2178       <PHP_EXTENSION name="intl" level="required">
2179         <FEEDBACK>
2180           <ON_ERROR message="intlrequired" />
2181         </FEEDBACK>
2182       </PHP_EXTENSION>
2183       <PHP_EXTENSION name="json" level="required">
2184       </PHP_EXTENSION>
2185       <PHP_EXTENSION name="hash" level="required"/>
2186       <PHP_EXTENSION name="fileinfo" level="required"/>
2187     </PHP_EXTENSIONS>
2188     <PHP_SETTINGS>
2189       <PHP_SETTING name="memory_limit" value="96M" level="required">
2190         <FEEDBACK>
2191           <ON_ERROR message="settingmemorylimit" />
2192         </FEEDBACK>
2193       </PHP_SETTING>
2194       <PHP_SETTING name="file_uploads" value="1" level="optional">
2195         <FEEDBACK>
2196           <ON_CHECK message="settingfileuploads" />
2197         </FEEDBACK>
2198       </PHP_SETTING>
2199       <PHP_SETTING name="opcache.enable" value="1" level="optional">
2200         <FEEDBACK>
2201           <ON_CHECK message="opcacherecommended" />
2202         </FEEDBACK>
2203       </PHP_SETTING>
2204     </PHP_SETTINGS>
2205     <CUSTOM_CHECKS>
2206       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_storage_engine" level="required">
2207         <FEEDBACK>
2208           <ON_ERROR message="unsupporteddbstorageengine" />
2209         </FEEDBACK>
2210       </CUSTOM_CHECK>
2211       <CUSTOM_CHECK file="question/engine/upgrade/upgradelib.php" function="quiz_attempts_upgraded" level="required">
2212         <FEEDBACK>
2213           <ON_ERROR message="quizattemptsupgradedmessage" />
2214         </FEEDBACK>
2215       </CUSTOM_CHECK>
2216       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_slasharguments" level="optional">
2217         <FEEDBACK>
2218           <ON_CHECK message="slashargumentswarning" />
2219         </FEEDBACK>
2220       </CUSTOM_CHECK>
2221       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_tables_row_format" level="optional">
2222         <FEEDBACK>
2223           <ON_CHECK message="unsupporteddbtablerowformat" />
2224         </FEEDBACK>
2225       </CUSTOM_CHECK>
2226       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_unoconv_version" level="optional">
2227         <FEEDBACK>
2228           <ON_CHECK message="unoconvwarning" />
2229         </FEEDBACK>
2230       </CUSTOM_CHECK>
2231       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_libcurl_version" level="optional">
2232         <FEEDBACK>
2233           <ON_CHECK message="libcurlwarning" />
2234         </FEEDBACK>
2235       </CUSTOM_CHECK>
2236       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_format" level="required">
2237         <FEEDBACK>
2238           <ON_ERROR message="unsupporteddbfileformat" />
2239         </FEEDBACK>
2240       </CUSTOM_CHECK>
2241       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_per_table" level="required">
2242         <FEEDBACK>
2243           <ON_ERROR message="unsupporteddbfilepertable" />
2244         </FEEDBACK>
2245       </CUSTOM_CHECK>
2246       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_large_prefix" level="required">
2247         <FEEDBACK>
2248           <ON_ERROR message="unsupporteddblargeprefix" />
2249         </FEEDBACK>
2250       </CUSTOM_CHECK>
2251       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_is_https" level="optional">
2252         <FEEDBACK>
2253           <ON_CHECK message="ishttpswarning" />
2254         </FEEDBACK>
2255       </CUSTOM_CHECK>
2256       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_incomplete_unicode_support" level="optional">
2257         <FEEDBACK>
2258           <ON_CHECK message="incompleteunicodesupport" />
2259         </FEEDBACK>
2260       </CUSTOM_CHECK>
2261     </CUSTOM_CHECKS>
2262   </MOODLE>
2263   <MOODLE version="3.5" requires="3.1">
2264     <UNICODE level="required">
2265       <FEEDBACK>
2266         <ON_ERROR message="unicoderequired" />
2267       </FEEDBACK>
2268     </UNICODE>
2269     <DATABASE level="required">
2270       <VENDOR name="mariadb" version="5.5.31" />
2271       <VENDOR name="mysql" version="5.5.31" />
2272       <VENDOR name="postgres" version="9.3" />
2273       <VENDOR name="mssql" version="10.0" />
2274       <VENDOR name="oracle" version="10.2" />
2275     </DATABASE>
2276     <PHP version="7.0.0" level="required">
2277       <RESTRICT function="restrict_php_version_73" message="unsupportedphpversion73" />
2278     </PHP>
2279     <PCREUNICODE level="optional">
2280       <FEEDBACK>
2281         <ON_CHECK message="pcreunicodewarning" />
2282       </FEEDBACK>
2283     </PCREUNICODE>
2284     <PHP_EXTENSIONS>
2285       <PHP_EXTENSION name="iconv" level="required">
2286         <FEEDBACK>
2287           <ON_ERROR message="iconvrequired" />
2288         </FEEDBACK>
2289       </PHP_EXTENSION>
2290       <PHP_EXTENSION name="mbstring" level="optional">
2291         <FEEDBACK>
2292           <ON_CHECK message="mbstringrecommended" />
2293         </FEEDBACK>
2294       </PHP_EXTENSION>
2295       <PHP_EXTENSION name="curl" level="required">
2296         <FEEDBACK>
2297           <ON_ERROR message="curlrequired" />
2298         </FEEDBACK>
2299       </PHP_EXTENSION>
2300       <PHP_EXTENSION name="openssl" level="required">
2301         <FEEDBACK>
2302           <ON_ERROR message="opensslrequired" />
2303         </FEEDBACK>
2304       </PHP_EXTENSION>
2305       <PHP_EXTENSION name="tokenizer" level="optional">
2306         <FEEDBACK>
2307           <ON_CHECK message="tokenizerrecommended" />
2308         </FEEDBACK>
2309       </PHP_EXTENSION>
2310       <PHP_EXTENSION name="xmlrpc" level="optional">
2311         <FEEDBACK>
2312           <ON_CHECK message="xmlrpcrecommended" />
2313         </FEEDBACK>
2314       </PHP_EXTENSION>
2315       <PHP_EXTENSION name="soap" level="optional">
2316         <FEEDBACK>
2317           <ON_CHECK message="soaprecommended" />
2318         </FEEDBACK>
2319       </PHP_EXTENSION>
2320       <PHP_EXTENSION name="ctype" level="required">
2321         <FEEDBACK>
2322           <ON_ERROR message="ctyperequired" />
2323         </FEEDBACK>
2324       </PHP_EXTENSION>
2325       <PHP_EXTENSION name="zip" level="required">
2326         <FEEDBACK>
2327           <ON_ERROR message="ziprequired" />
2328         </FEEDBACK>
2329       </PHP_EXTENSION>
2330       <PHP_EXTENSION name="zlib" level="required">
2331       </PHP_EXTENSION>
2332       <PHP_EXTENSION name="gd" level="required">
2333         <FEEDBACK>
2334           <ON_ERROR message="gdrequired" />
2335         </FEEDBACK>
2336       </PHP_EXTENSION>
2337       <PHP_EXTENSION name="simplexml" level="required">
2338         <FEEDBACK>
2339           <ON_ERROR message="simplexmlrequired" />
2340         </FEEDBACK>
2341       </PHP_EXTENSION>
2342       <PHP_EXTENSION name="spl" level="required">
2343         <FEEDBACK>
2344           <ON_ERROR message="splrequired" />
2345         </FEEDBACK>
2346       </PHP_EXTENSION>
2347       <PHP_EXTENSION name="pcre" level="required">
2348       </PHP_EXTENSION>
2349       <PHP_EXTENSION name="dom" level="required">
2350       </PHP_EXTENSION>
2351       <PHP_EXTENSION name="xml" level="required">
2352       </PHP_EXTENSION>
2353       <PHP_EXTENSION name="xmlreader" level="required">
2354       </PHP_EXTENSION>
2355       <PHP_EXTENSION name="intl" level="required">
2356         <FEEDBACK>
2357           <ON_ERROR message="intlrequired" />
2358         </FEEDBACK>
2359       </PHP_EXTENSION>
2360       <PHP_EXTENSION name="json" level="required">
2361       </PHP_EXTENSION>
2362       <PHP_EXTENSION name="hash" level="required"/>
2363       <PHP_EXTENSION name="fileinfo" level="required"/>
2364     </PHP_EXTENSIONS>
2365     <PHP_SETTINGS>
2366       <PHP_SETTING name="memory_limit" value="96M" level="required">
2367         <FEEDBACK>
2368           <ON_ERROR message="settingmemorylimit" />
2369         </FEEDBACK>
2370       </PHP_SETTING>
2371       <PHP_SETTING name="file_uploads" value="1" level="optional">
2372         <FEEDBACK>
2373           <ON_CHECK message="settingfileuploads" />
2374         </FEEDBACK>
2375       </PHP_SETTING>
2376       <PHP_SETTING name="opcache.enable" value="1" level="optional">
2377         <FEEDBACK>
2378           <ON_CHECK message="opcacherecommended" />
2379         </FEEDBACK>
2380       </PHP_SETTING>
2381     </PHP_SETTINGS>
2382     <CUSTOM_CHECKS>
2383       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_storage_engine" level="required">
2384         <FEEDBACK>
2385           <ON_ERROR message="unsupporteddbstorageengine" />
2386         </FEEDBACK>
2387       </CUSTOM_CHECK>
2388       <CUSTOM_CHECK file="question/engine/upgrade/upgradelib.php" function="quiz_attempts_upgraded" level="required">
2389         <FEEDBACK>
2390           <ON_ERROR message="quizattemptsupgradedmessage" />
2391         </FEEDBACK>
2392       </CUSTOM_CHECK>
2393       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_slasharguments" level="optional">
2394         <FEEDBACK>
2395           <ON_CHECK message="slashargumentswarning" />
2396         </FEEDBACK>
2397       </CUSTOM_CHECK>
2398       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_tables_row_format" level="optional">
2399         <FEEDBACK>
2400           <ON_CHECK message="unsupporteddbtablerowformat" />
2401         </FEEDBACK>
2402       </CUSTOM_CHECK>
2403       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_unoconv_version" level="optional">
2404         <FEEDBACK>
2405           <ON_CHECK message="unoconvwarning" />
2406         </FEEDBACK>
2407       </CUSTOM_CHECK>
2408       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_libcurl_version" level="optional">
2409         <FEEDBACK>
2410           <ON_CHECK message="libcurlwarning" />
2411         </FEEDBACK>
2412       </CUSTOM_CHECK>
2413       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_format" level="required">
2414         <FEEDBACK>
2415           <ON_ERROR message="unsupporteddbfileformat" />
2416         </FEEDBACK>
2417       </CUSTOM_CHECK>
2418       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_per_table" level="required">
2419         <FEEDBACK>
2420           <ON_ERROR message="unsupporteddbfilepertable" />
2421         </FEEDBACK>
2422       </CUSTOM_CHECK>
2423       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_large_prefix" level="required">
2424         <FEEDBACK>
2425           <ON_ERROR message="unsupporteddblargeprefix" />
2426         </FEEDBACK>
2427       </CUSTOM_CHECK>
2428       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_is_https" level="optional">
2429         <FEEDBACK>
2430           <ON_CHECK message="ishttpswarning" />
2431         </FEEDBACK>
2432       </CUSTOM_CHECK>
2433       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_incomplete_unicode_support" level="optional">
2434         <FEEDBACK>
2435           <ON_CHECK message="incompleteunicodesupport" />
2436         </FEEDBACK>
2437       </CUSTOM_CHECK>
2438     </CUSTOM_CHECKS>
2439   </MOODLE>
2440   <MOODLE version="3.6" requires="3.1">
2441     <UNICODE level="required">
2442       <FEEDBACK>
2443         <ON_ERROR message="unicoderequired" />
2444       </FEEDBACK>
2445     </UNICODE>
2446     <DATABASE level="required">
2447       <VENDOR name="mariadb" version="5.5.31" />
2448       <VENDOR name="mysql" version="5.6" />
2449       <VENDOR name="postgres" version="9.4" />
2450       <VENDOR name="mssql" version="10.0" />
2451       <VENDOR name="oracle" version="11.2" />
2452     </DATABASE>
2453     <PHP version="7.0.0" level="required">
2454       <RESTRICT function="restrict_php_version_74" message="unsupportedphpversion74" />
2455     </PHP>
2456     <PCREUNICODE level="optional">
2457       <FEEDBACK>
2458         <ON_CHECK message="pcreunicodewarning" />
2459       </FEEDBACK>
2460     </PCREUNICODE>
2461     <PHP_EXTENSIONS>
2462       <PHP_EXTENSION name="iconv" level="required">
2463         <FEEDBACK>
2464           <ON_ERROR message="iconvrequired" />
2465         </FEEDBACK>
2466       </PHP_EXTENSION>
2467       <PHP_EXTENSION name="mbstring" level="optional">
2468         <FEEDBACK>
2469           <ON_CHECK message="mbstringrecommended" />
2470         </FEEDBACK>
2471       </PHP_EXTENSION>
2472       <PHP_EXTENSION name="curl" level="required">
2473         <FEEDBACK>
2474           <ON_ERROR message="curlrequired" />
2475         </FEEDBACK>
2476       </PHP_EXTENSION>
2477       <PHP_EXTENSION name="openssl" level="required">
2478         <FEEDBACK>
2479           <ON_ERROR message="opensslrequired" />
2480         </FEEDBACK>
2481       </PHP_EXTENSION>
2482       <PHP_EXTENSION name="tokenizer" level="optional">
2483         <FEEDBACK>
2484           <ON_CHECK message="tokenizerrecommended" />
2485         </FEEDBACK>
2486       </PHP_EXTENSION>
2487       <PHP_EXTENSION name="xmlrpc" level="optional">
2488         <FEEDBACK>
2489           <ON_CHECK message="xmlrpcrecommended" />
2490         </FEEDBACK>
2491       </PHP_EXTENSION>
2492       <PHP_EXTENSION name="soap" level="optional">
2493         <FEEDBACK>
2494           <ON_CHECK message="soaprecommended" />
2495         </FEEDBACK>
2496       </PHP_EXTENSION>
2497       <PHP_EXTENSION name="ctype" level="required">
2498         <FEEDBACK>
2499           <ON_ERROR message="ctyperequired" />
2500         </FEEDBACK>
2501       </PHP_EXTENSION>
2502       <PHP_EXTENSION name="zip" level="required">
2503         <FEEDBACK>
2504           <ON_ERROR message="ziprequired" />
2505         </FEEDBACK>
2506       </PHP_EXTENSION>
2507       <PHP_EXTENSION name="zlib" level="required">
2508       </PHP_EXTENSION>
2509       <PHP_EXTENSION name="gd" level="required">
2510         <FEEDBACK>
2511           <ON_ERROR message="gdrequired" />
2512         </FEEDBACK>
2513       </PHP_EXTENSION>
2514       <PHP_EXTENSION name="simplexml" level="required">
2515         <FEEDBACK>
2516           <ON_ERROR message="simplexmlrequired" />
2517         </FEEDBACK>
2518       </PHP_EXTENSION>
2519       <PHP_EXTENSION name="spl" level="required">
2520         <FEEDBACK>
2521           <ON_ERROR message="splrequired" />
2522         </FEEDBACK>
2523       </PHP_EXTENSION>
2524       <PHP_EXTENSION name="pcre" level="required">
2525       </PHP_EXTENSION>
2526       <PHP_EXTENSION name="dom" level="required">
2527       </PHP_EXTENSION>
2528       <PHP_EXTENSION name="xml" level="required">
2529       </PHP_EXTENSION>
2530       <PHP_EXTENSION name="xmlreader" level="required">
2531       </PHP_EXTENSION>
2532       <PHP_EXTENSION name="intl" level="required">
2533         <FEEDBACK>
2534           <ON_ERROR message="intlrequired" />
2535         </FEEDBACK>
2536       </PHP_EXTENSION>
2537       <PHP_EXTENSION name="json" level="required">
2538       </PHP_EXTENSION>
2539       <PHP_EXTENSION name="hash" level="required"/>
2540       <PHP_EXTENSION name="fileinfo" level="required"/>
2541     </PHP_EXTENSIONS>
2542     <PHP_SETTINGS>
2543       <PHP_SETTING name="memory_limit" value="96M" level="required">
2544         <FEEDBACK>
2545           <ON_ERROR message="settingmemorylimit" />
2546         </FEEDBACK>
2547       </PHP_SETTING>
2548       <PHP_SETTING name="file_uploads" value="1" level="optional">
2549         <FEEDBACK>
2550           <ON_CHECK message="settingfileuploads" />
2551         </FEEDBACK>
2552       </PHP_SETTING>
2553       <PHP_SETTING name="opcache.enable" value="1" level="optional">
2554         <FEEDBACK>
2555           <ON_CHECK message="opcacherecommended" />
2556         </FEEDBACK>
2557       </PHP_SETTING>
2558     </PHP_SETTINGS>
2559     <CUSTOM_CHECKS>
2560       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_storage_engine" level="required">
2561         <FEEDBACK>
2562           <ON_ERROR message="unsupporteddbstorageengine" />
2563         </FEEDBACK>
2564       </CUSTOM_CHECK>
2565       <CUSTOM_CHECK file="question/engine/upgrade/upgradelib.php" function="quiz_attempts_upgraded" level="required">
2566         <FEEDBACK>
2567           <ON_ERROR message="quizattemptsupgradedmessage" />
2568         </FEEDBACK>
2569       </CUSTOM_CHECK>
2570       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_slasharguments" level="optional">
2571         <FEEDBACK>
2572           <ON_CHECK message="slashargumentswarning" />
2573         </FEEDBACK>
2574       </CUSTOM_CHECK>
2575       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_tables_row_format" level="optional">
2576         <FEEDBACK>
2577           <ON_CHECK message="unsupporteddbtablerowformat" />
2578         </FEEDBACK>
2579       </CUSTOM_CHECK>
2580       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_unoconv_version" level="optional">
2581         <FEEDBACK>
2582           <ON_CHECK message="unoconvwarning" />
2583         </FEEDBACK>
2584       </CUSTOM_CHECK>
2585       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_libcurl_version" level="optional">
2586         <FEEDBACK>
2587           <ON_CHECK message="libcurlwarning" />
2588         </FEEDBACK>
2589       </CUSTOM_CHECK>
2590       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_format" level="required">
2591         <FEEDBACK>
2592           <ON_ERROR message="unsupporteddbfileformat" />
2593         </FEEDBACK>
2594       </CUSTOM_CHECK>
2595       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_per_table" level="required">
2596         <FEEDBACK>
2597           <ON_ERROR message="unsupporteddbfilepertable" />
2598         </FEEDBACK>
2599       </CUSTOM_CHECK>
2600       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_large_prefix" level="required">
2601         <FEEDBACK>
2602           <ON_ERROR message="unsupporteddblargeprefix" />
2603         </FEEDBACK>
2604       </CUSTOM_CHECK>
2605       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_is_https" level="optional">
2606         <FEEDBACK>
2607           <ON_CHECK message="ishttpswarning" />
2608         </FEEDBACK>
2609       </CUSTOM_CHECK>
2610       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_incomplete_unicode_support" level="optional">
2611         <FEEDBACK>
2612           <ON_CHECK message="incompleteunicodesupport" />
2613         </FEEDBACK>
2614       </CUSTOM_CHECK>
2615       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_sixtyfour_bits" level="optional">
2616         <FEEDBACK>
2617           <ON_CHECK message="sixtyfourbitswarning" />
2618         </FEEDBACK>
2619       </CUSTOM_CHECK>
2620     </CUSTOM_CHECKS>
2621   </MOODLE>
2622   <MOODLE version="3.7" requires="3.2">
2623     <UNICODE level="required">
2624       <FEEDBACK>
2625         <ON_ERROR message="unicoderequired" />
2626       </FEEDBACK>
2627     </UNICODE>
2628     <DATABASE level="required">
2629       <VENDOR name="mariadb" version="5.5.31" />
2630       <VENDOR name="mysql" version="5.6" />
2631       <VENDOR name="postgres" version="9.4" />
2632       <VENDOR name="mssql" version="10.0" />
2633       <VENDOR name="oracle" version="11.2" />
2634     </DATABASE>
2635     <PHP version="7.1.0" level="required">
2636       <RESTRICT function="restrict_php_version_74" message="unsupportedphpversion74" />
2637     </PHP>
2638     <PCREUNICODE level="optional">
2639       <FEEDBACK>
2640         <ON_CHECK message="pcreunicodewarning" />
2641       </FEEDBACK>
2642     </PCREUNICODE>
2643     <PHP_EXTENSIONS>
2644       <PHP_EXTENSION name="iconv" level="required">
2645         <FEEDBACK>
2646           <ON_ERROR message="iconvrequired" />
2647         </FEEDBACK>
2648       </PHP_EXTENSION>
2649       <PHP_EXTENSION name="mbstring" level="optional">
2650         <FEEDBACK>
2651           <ON_CHECK message="mbstringrecommended" />
2652         </FEEDBACK>
2653       </PHP_EXTENSION>
2654       <PHP_EXTENSION name="curl" level="required">
2655         <FEEDBACK>
2656           <ON_ERROR message="curlrequired" />
2657         </FEEDBACK>
2658       </PHP_EXTENSION>
2659       <PHP_EXTENSION name="openssl" level="required">
2660         <FEEDBACK>
2661           <ON_ERROR message="opensslrequired" />
2662         </FEEDBACK>
2663       </PHP_EXTENSION>
2664       <PHP_EXTENSION name="tokenizer" level="optional">
2665         <FEEDBACK>
2666           <ON_CHECK message="tokenizerrecommended" />
2667         </FEEDBACK>
2668       </PHP_EXTENSION>
2669       <PHP_EXTENSION name="xmlrpc" level="optional">
2670         <FEEDBACK>
2671           <ON_CHECK message="xmlrpcrecommended" />
2672         </FEEDBACK>
2673       </PHP_EXTENSION>
2674       <PHP_EXTENSION name="soap" level="optional">
2675         <FEEDBACK>
2676           <ON_CHECK message="soaprecommended" />
2677         </FEEDBACK>
2678       </PHP_EXTENSION>
2679       <PHP_EXTENSION name="ctype" level="required">
2680         <FEEDBACK>
2681           <ON_ERROR message="ctyperequired" />
2682         </FEEDBACK>
2683       </PHP_EXTENSION>
2684       <PHP_EXTENSION name="zip" level="required">
2685         <FEEDBACK>
2686           <ON_ERROR message="ziprequired" />
2687         </FEEDBACK>
2688       </PHP_EXTENSION>
2689       <PHP_EXTENSION name="zlib" level="required">
2690       </PHP_EXTENSION>
2691       <PHP_EXTENSION name="gd" level="required">
2692         <FEEDBACK>
2693           <ON_ERROR message="gdrequired" />
2694         </FEEDBACK>
2695       </PHP_EXTENSION>
2696       <PHP_EXTENSION name="simplexml" level="required">
2697         <FEEDBACK>
2698           <ON_ERROR message="simplexmlrequired" />
2699         </FEEDBACK>
2700       </PHP_EXTENSION>
2701       <PHP_EXTENSION name="spl" level="required">
2702         <FEEDBACK>
2703           <ON_ERROR message="splrequired" />
2704         </FEEDBACK>
2705       </PHP_EXTENSION>
2706       <PHP_EXTENSION name="pcre" level="required">
2707       </PHP_EXTENSION>
2708       <PHP_EXTENSION name="dom" level="required">
2709       </PHP_EXTENSION>
2710       <PHP_EXTENSION name="xml" level="required">
2711       </PHP_EXTENSION>
2712       <PHP_EXTENSION name="xmlreader" level="required">
2713       </PHP_EXTENSION>
2714       <PHP_EXTENSION name="intl" level="required">
2715         <FEEDBACK>
2716           <ON_ERROR message="intlrequired" />
2717         </FEEDBACK>
2718       </PHP_EXTENSION>
2719       <PHP_EXTENSION name="json" level="required">
2720       </PHP_EXTENSION>
2721       <PHP_EXTENSION name="hash" level="required"/>
2722       <PHP_EXTENSION name="fileinfo" level="required"/>
2723     </PHP_EXTENSIONS>
2724     <PHP_SETTINGS>
2725       <PHP_SETTING name="memory_limit" value="96M" level="required">
2726         <FEEDBACK>
2727           <ON_ERROR message="settingmemorylimit" />
2728         </FEEDBACK>
2729       </PHP_SETTING>
2730       <PHP_SETTING name="file_uploads" value="1" level="optional">
2731         <FEEDBACK>
2732           <ON_CHECK message="settingfileuploads" />
2733         </FEEDBACK>
2734       </PHP_SETTING>
2735       <PHP_SETTING name="opcache.enable" value="1" level="optional">
2736         <FEEDBACK>
2737           <ON_CHECK message="opcacherecommended" />
2738         </FEEDBACK>
2739       </PHP_SETTING>
2740     </PHP_SETTINGS>
2741     <CUSTOM_CHECKS>
2742       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_storage_engine" level="required">
2743         <FEEDBACK>
2744           <ON_ERROR message="unsupporteddbstorageengine" />
2745         </FEEDBACK>
2746       </CUSTOM_CHECK>
2747       <CUSTOM_CHECK file="question/engine/upgrade/upgradelib.php" function="quiz_attempts_upgraded" level="required">
2748         <FEEDBACK>
2749           <ON_ERROR message="quizattemptsupgradedmessage" />
2750         </FEEDBACK>
2751       </CUSTOM_CHECK>
2752       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_slasharguments" level="optional">
2753         <FEEDBACK>
2754           <ON_CHECK message="slashargumentswarning" />
2755         </FEEDBACK>
2756       </CUSTOM_CHECK>
2757       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_tables_row_format" level="optional">
2758         <FEEDBACK>
2759           <ON_CHECK message="unsupporteddbtablerowformat" />
2760         </FEEDBACK>
2761       </CUSTOM_CHECK>
2762       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_unoconv_version" level="optional">
2763         <FEEDBACK>
2764           <ON_CHECK message="unoconvwarning" />
2765         </FEEDBACK>
2766       </CUSTOM_CHECK>
2767       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_libcurl_version" level="optional">
2768         <FEEDBACK>
2769           <ON_CHECK message="libcurlwarning" />
2770         </FEEDBACK>
2771       </CUSTOM_CHECK>
2772       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_format" level="required">
2773         <FEEDBACK>
2774           <ON_ERROR message="unsupporteddbfileformat" />
2775         </FEEDBACK>
2776       </CUSTOM_CHECK>
2777       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_per_table" level="required">
2778         <FEEDBACK>
2779           <ON_ERROR message="unsupporteddbfilepertable" />
2780         </FEEDBACK>
2781       </CUSTOM_CHECK>
2782       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_large_prefix" level="required">
2783         <FEEDBACK>
2784           <ON_ERROR message="unsupporteddblargeprefix" />
2785         </FEEDBACK>
2786       </CUSTOM_CHECK>
2787       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_is_https" level="optional">
2788         <FEEDBACK>
2789           <ON_CHECK message="ishttpswarning" />
2790         </FEEDBACK>
2791       </CUSTOM_CHECK>
2792       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_incomplete_unicode_support" level="optional">
2793         <FEEDBACK>
2794           <ON_CHECK message="incompleteunicodesupport" />
2795         </FEEDBACK>
2796       </CUSTOM_CHECK>
2797       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_sixtyfour_bits" level="optional">
2798         <FEEDBACK>
2799           <ON_CHECK message="sixtyfourbitswarning" />
2800         </FEEDBACK>
2801       </CUSTOM_CHECK>
2802     </CUSTOM_CHECKS>
2803   </MOODLE>
2804   <MOODLE version="3.8" requires="3.2">
2805     <UNICODE level="required">
2806       <FEEDBACK>
2807         <ON_ERROR message="unicoderequired" />
2808       </FEEDBACK>
2809     </UNICODE>
2810     <DATABASE level="required">
2811       <VENDOR name="mariadb" version="5.5.31" />
2812       <VENDOR name="mysql" version="5.6" />
2813       <VENDOR name="postgres" version="9.4" />
2814       <VENDOR name="mssql" version="11.0" />
2815       <VENDOR name="oracle" version="11.2" />
2816     </DATABASE>
2817     <PHP version="7.1.0" level="required">
2818       <RESTRICT function="restrict_php_version_80" message="unsupportedphpversion80" />
2819     </PHP>
2820     <PCREUNICODE level="optional">
2821       <FEEDBACK>
2822         <ON_CHECK message="pcreunicodewarning" />
2823       </FEEDBACK>
2824     </PCREUNICODE>
2825     <PHP_EXTENSIONS>
2826       <PHP_EXTENSION name="iconv" level="required">
2827         <FEEDBACK>
2828           <ON_ERROR message="iconvrequired" />
2829         </FEEDBACK>
2830       </PHP_EXTENSION>
2831       <PHP_EXTENSION name="mbstring" level="optional">
2832         <FEEDBACK>
2833           <ON_CHECK message="mbstringrecommended" />
2834         </FEEDBACK>
2835       </PHP_EXTENSION>
2836       <PHP_EXTENSION name="curl" level="required">
2837         <FEEDBACK>
2838           <ON_ERROR message="curlrequired" />
2839         </FEEDBACK>
2840       </PHP_EXTENSION>
2841       <PHP_EXTENSION name="openssl" level="required">
2842         <FEEDBACK>
2843           <ON_ERROR message="opensslrequired" />
2844         </FEEDBACK>
2845       </PHP_EXTENSION>
2846       <PHP_EXTENSION name="tokenizer" level="optional">
2847         <FEEDBACK>
2848           <ON_CHECK message="tokenizerrecommended" />
2849         </FEEDBACK>
2850       </PHP_EXTENSION>
2851       <PHP_EXTENSION name="xmlrpc" level="optional">
2852         <FEEDBACK>
2853           <ON_CHECK message="xmlrpcrecommended" />
2854         </FEEDBACK>
2855       </PHP_EXTENSION>
2856       <PHP_EXTENSION name="soap" level="optional">
2857         <FEEDBACK>
2858           <ON_CHECK message="soaprecommended" />
2859         </FEEDBACK>
2860       </PHP_EXTENSION>
2861       <PHP_EXTENSION name="ctype" level="required">
2862         <FEEDBACK>
2863           <ON_ERROR message="ctyperequired" />
2864         </FEEDBACK>
2865       </PHP_EXTENSION>
2866       <PHP_EXTENSION name="zip" level="required">
2867         <FEEDBACK>
2868           <ON_ERROR message="ziprequired" />
2869         </FEEDBACK>
2870       </PHP_EXTENSION>
2871       <PHP_EXTENSION name="zlib" level="required">
2872       </PHP_EXTENSION>
2873       <PHP_EXTENSION name="gd" level="required">
2874         <FEEDBACK>
2875           <ON_ERROR message="gdrequired" />
2876         </FEEDBACK>
2877       </PHP_EXTENSION>
2878       <PHP_EXTENSION name="simplexml" level="required">
2879         <FEEDBACK>
2880           <ON_ERROR message="simplexmlrequired" />
2881         </FEEDBACK>
2882       </PHP_EXTENSION>
2883       <PHP_EXTENSION name="spl" level="required">
2884         <FEEDBACK>
2885           <ON_ERROR message="splrequired" />
2886         </FEEDBACK>
2887       </PHP_EXTENSION>
2888       <PHP_EXTENSION name="pcre" level="required">
2889       </PHP_EXTENSION>
2890       <PHP_EXTENSION name="dom" level="required">
2891       </PHP_EXTENSION>
2892       <PHP_EXTENSION name="xml" level="required">
2893       </PHP_EXTENSION>
2894       <PHP_EXTENSION name="xmlreader" level="required">
2895       </PHP_EXTENSION>
2896       <PHP_EXTENSION name="intl" level="required">
2897         <FEEDBACK>
2898           <ON_ERROR message="intlrequired" />
2899         </FEEDBACK>
2900       </PHP_EXTENSION>
2901       <PHP_EXTENSION name="json" level="required">
2902       </PHP_EXTENSION>
2903       <PHP_EXTENSION name="hash" level="required"/>
2904       <PHP_EXTENSION name="fileinfo" level="required"/>
2905     </PHP_EXTENSIONS>
2906     <PHP_SETTINGS>
2907       <PHP_SETTING name="memory_limit" value="96M" level="required">
2908         <FEEDBACK>
2909           <ON_ERROR message="settingmemorylimit" />
2910         </FEEDBACK>
2911       </PHP_SETTING>
2912       <PHP_SETTING name="file_uploads" value="1" level="optional">
2913         <FEEDBACK>
2914           <ON_CHECK message="settingfileuploads" />
2915         </FEEDBACK>
2916       </PHP_SETTING>
2917       <PHP_SETTING name="opcache.enable" value="1" level="optional">
2918         <FEEDBACK>
2919           <ON_CHECK message="opcacherecommended" />
2920         </FEEDBACK>
2921       </PHP_SETTING>
2922     </PHP_SETTINGS>
2923     <CUSTOM_CHECKS>
2924       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_storage_engine" level="required">
2925         <FEEDBACK>
2926           <ON_ERROR message="unsupporteddbstorageengine" />
2927         </FEEDBACK>
2928       </CUSTOM_CHECK>
2929       <CUSTOM_CHECK file="question/engine/upgrade/upgradelib.php" function="quiz_attempts_upgraded" level="required">
2930         <FEEDBACK>
2931           <ON_ERROR message="quizattemptsupgradedmessage" />
2932         </FEEDBACK>
2933       </CUSTOM_CHECK>
2934       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_slasharguments" level="optional">
2935         <FEEDBACK>
2936           <ON_CHECK message="slashargumentswarning" />
2937         </FEEDBACK>
2938       </CUSTOM_CHECK>
2939       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_tables_row_format" level="optional">
2940         <FEEDBACK>
2941           <ON_CHECK message="unsupporteddbtablerowformat" />
2942         </FEEDBACK>
2943       </CUSTOM_CHECK>
2944       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_unoconv_version" level="optional">
2945         <FEEDBACK>
2946           <ON_CHECK message="unoconvwarning" />
2947         </FEEDBACK>
2948       </CUSTOM_CHECK>
2949       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_libcurl_version" level="optional">
2950         <FEEDBACK>
2951           <ON_CHECK message="libcurlwarning" />
2952         </FEEDBACK>
2953       </CUSTOM_CHECK>
2954       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_format" level="required">
2955         <FEEDBACK>
2956           <ON_ERROR message="unsupporteddbfileformat" />
2957         </FEEDBACK>
2958       </CUSTOM_CHECK>
2959       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_per_table" level="required">
2960         <FEEDBACK>
2961           <ON_ERROR message="unsupporteddbfilepertable" />
2962         </FEEDBACK>
2963       </CUSTOM_CHECK>
2964       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_large_prefix" level="required">
2965         <FEEDBACK>
2966           <ON_ERROR message="unsupporteddblargeprefix" />
2967         </FEEDBACK>
2968       </CUSTOM_CHECK>
2969       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_is_https" level="optional">
2970         <FEEDBACK>
2971           <ON_CHECK message="ishttpswarning" />
2972         </FEEDBACK>
2973       </CUSTOM_CHECK>
2974       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_incomplete_unicode_support" level="optional">
2975         <FEEDBACK>
2976           <ON_CHECK message="incompleteunicodesupport" />
2977         </FEEDBACK>
2978       </CUSTOM_CHECK>
2979       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_sixtyfour_bits" level="optional">
2980         <FEEDBACK>
2981           <ON_CHECK message="sixtyfourbitswarning" />
2982         </FEEDBACK>
2983       </CUSTOM_CHECK>
2984     </CUSTOM_CHECKS>
2985   </MOODLE>
2986   <MOODLE version="3.9" requires="3.5">
2987     <UNICODE level="required">
2988       <FEEDBACK>
2989         <ON_ERROR message="unicoderequired" />
2990       </FEEDBACK>
2991     </UNICODE>
2992     <DATABASE level="required">
2993       <VENDOR name="mariadb" version="10.2.29" />
2994       <VENDOR name="mysql" version="5.6" />
2995       <VENDOR name="postgres" version="9.5" />
2996       <VENDOR name="mssql" version="11.0" />
2997       <VENDOR name="oracle" version="11.2" />
2998     </DATABASE>
2999     <PHP version="7.2.0" level="required">
3000       <RESTRICT function="restrict_php_version_80" message="unsupportedphpversion80" />
3001     </PHP>
3002     <PCREUNICODE level="optional">
3003       <FEEDBACK>
3004         <ON_CHECK message="pcreunicodewarning" />
3005       </FEEDBACK>
3006     </PCREUNICODE>
3007     <PHP_EXTENSIONS>
3008       <PHP_EXTENSION name="iconv" level="required">
3009         <FEEDBACK>
3010           <ON_ERROR message="iconvrequired" />
3011         </FEEDBACK>
3012       </PHP_EXTENSION>
3013       <PHP_EXTENSION name="mbstring" level="required">
3014         <FEEDBACK>
3015           <ON_ERROR message="mbstringrequired" />
3016         </FEEDBACK>
3017       </PHP_EXTENSION>
3018       <PHP_EXTENSION name="curl" level="required">
3019         <FEEDBACK>
3020           <ON_ERROR message="curlrequired" />
3021         </FEEDBACK>
3022       </PHP_EXTENSION>
3023       <PHP_EXTENSION name="openssl" level="required">
3024         <FEEDBACK>
3025           <ON_ERROR message="opensslrequired" />
3026         </FEEDBACK>
3027       </PHP_EXTENSION>
3028       <PHP_EXTENSION name="tokenizer" level="optional">
3029         <FEEDBACK>
3030           <ON_CHECK message="tokenizerrecommended" />
3031         </FEEDBACK>
3032       </PHP_EXTENSION>
3033       <PHP_EXTENSION name="xmlrpc" level="optional">
3034         <FEEDBACK>
3035           <ON_CHECK message="xmlrpcrecommended" />
3036         </FEEDBACK>
3037       </PHP_EXTENSION>
3038       <PHP_EXTENSION name="soap" level="optional">
3039         <FEEDBACK>
3040           <ON_CHECK message="soaprecommended" />
3041         </FEEDBACK>
3042       </PHP_EXTENSION>
3043       <PHP_EXTENSION name="ctype" level="required">
3044         <FEEDBACK>
3045           <ON_ERROR message="ctyperequired" />
3046         </FEEDBACK>
3047       </PHP_EXTENSION>
3048       <PHP_EXTENSION name="zip" level="required">
3049         <FEEDBACK>
3050           <ON_ERROR message="ziprequired" />
3051         </FEEDBACK>
3052       </PHP_EXTENSION>
3053       <PHP_EXTENSION name="zlib" level="required">
3054       </PHP_EXTENSION>
3055       <PHP_EXTENSION name="gd" level="required">
3056         <FEEDBACK>
3057           <ON_ERROR message="gdrequired" />
3058         </FEEDBACK>
3059       </PHP_EXTENSION>
3060       <PHP_EXTENSION name="simplexml" level="required">
3061         <FEEDBACK>
3062           <ON_ERROR message="simplexmlrequired" />
3063         </FEEDBACK>
3064       </PHP_EXTENSION>
3065       <PHP_EXTENSION name="spl" level="required">
3066         <FEEDBACK>
3067           <ON_ERROR message="splrequired" />
3068         </FEEDBACK>
3069       </PHP_EXTENSION>
3070       <PHP_EXTENSION name="pcre" level="required">
3071       </PHP_EXTENSION>
3072       <PHP_EXTENSION name="dom" level="required">
3073       </PHP_EXTENSION>
3074       <PHP_EXTENSION name="xml" level="required">
3075       </PHP_EXTENSION>
3076       <PHP_EXTENSION name="xmlreader" level="required">
3077       </PHP_EXTENSION>
3078       <PHP_EXTENSION name="intl" level="required">
3079         <FEEDBACK>
3080           <ON_ERROR message="intlrequired" />
3081         </FEEDBACK>
3082       </PHP_EXTENSION>
3083       <PHP_EXTENSION name="json" level="required">
3084       </PHP_EXTENSION>
3085       <PHP_EXTENSION name="hash" level="required"/>
3086       <PHP_EXTENSION name="fileinfo" level="required"/>
3087     </PHP_EXTENSIONS>
3088     <PHP_SETTINGS>
3089       <PHP_SETTING name="memory_limit" value="96M" level="required">
3090         <FEEDBACK>
3091           <ON_ERROR message="settingmemorylimit" />
3092         </FEEDBACK>
3093       </PHP_SETTING>
3094       <PHP_SETTING name="file_uploads" value="1" level="optional">
3095         <FEEDBACK>
3096           <ON_CHECK message="settingfileuploads" />
3097         </FEEDBACK>
3098       </PHP_SETTING>
3099       <PHP_SETTING name="opcache.enable" value="1" level="optional">
3100         <FEEDBACK>
3101           <ON_CHECK message="opcacherecommended" />
3102         </FEEDBACK>
3103       </PHP_SETTING>
3104     </PHP_SETTINGS>
3105     <CUSTOM_CHECKS>
3106       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_storage_engine" level="required">
3107         <FEEDBACK>
3108           <ON_ERROR message="unsupporteddbstorageengine" />
3109         </FEEDBACK>
3110       </CUSTOM_CHECK>
3111       <CUSTOM_CHECK file="question/engine/upgrade/upgradelib.php" function="quiz_attempts_upgraded" level="required">
3112         <FEEDBACK>
3113           <ON_ERROR message="quizattemptsupgradedmessage" />
3114         </FEEDBACK>
3115       </CUSTOM_CHECK>
3116       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_slasharguments" level="optional">
3117         <FEEDBACK>
3118           <ON_CHECK message="slashargumentswarning" />
3119         </FEEDBACK>
3120       </CUSTOM_CHECK>
3121       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_tables_row_format" level="optional">
3122         <FEEDBACK>
3123           <ON_CHECK message="unsupporteddbtablerowformat" />
3124         </FEEDBACK>
3125       </CUSTOM_CHECK>
3126       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_unoconv_version" level="optional">
3127         <FEEDBACK>
3128           <ON_CHECK message="unoconvwarning" />
3129         </FEEDBACK>
3130       </CUSTOM_CHECK>
3131       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_libcurl_version" level="optional">
3132         <FEEDBACK>
3133           <ON_CHECK message="libcurlwarning" />
3134         </FEEDBACK>
3135       </CUSTOM_CHECK>
3136       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_format" level="required">
3137         <FEEDBACK>
3138           <ON_ERROR message="unsupporteddbfileformat" />
3139         </FEEDBACK>
3140       </CUSTOM_CHECK>
3141       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_per_table" level="required">
3142         <FEEDBACK>
3143           <ON_ERROR message="unsupporteddbfilepertable" />
3144         </FEEDBACK>
3145       </CUSTOM_CHECK>
3146       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_large_prefix" level="required">
3147         <FEEDBACK>
3148           <ON_ERROR message="unsupporteddblargeprefix" />
3149         </FEEDBACK>
3150       </CUSTOM_CHECK>
3151       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_is_https" level="optional">
3152         <FEEDBACK>
3153           <ON_CHECK message="ishttpswarning" />
3154         </FEEDBACK>
3155       </CUSTOM_CHECK>
3156       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_incomplete_unicode_support" level="optional">
3157         <FEEDBACK>
3158           <ON_CHECK message="incompleteunicodesupport" />
3159         </FEEDBACK>
3160       </CUSTOM_CHECK>
3161       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_sixtyfour_bits" level="optional">
3162         <FEEDBACK>
3163           <ON_CHECK message="sixtyfourbitswarning" />
3164         </FEEDBACK>
3165       </CUSTOM_CHECK>
3166       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_igbinary322_version" level="optional">
3167         <FEEDBACK>
3168           <ON_CHECK message="igbinary322buggyversion" />
3169         </FEEDBACK>
3170       </CUSTOM_CHECK>
3171     </CUSTOM_CHECKS>
3172   </MOODLE>
3173   <MOODLE version="3.10" requires="3.5">
3174     <UNICODE level="required">
3175       <FEEDBACK>
3176         <ON_ERROR message="unicoderequired" />
3177       </FEEDBACK>
3178     </UNICODE>
3179     <DATABASE level="required">
3180       <VENDOR name="mariadb" version="10.2.29" />
3181       <VENDOR name="mysql" version="5.7" />
3182       <VENDOR name="postgres" version="9.6" />
3183       <VENDOR name="mssql" version="11.0" />
3184       <VENDOR name="oracle" version="11.2" />
3185     </DATABASE>
3186     <PHP version="7.2.0" level="required">
3187       <RESTRICT function="restrict_php_version_80" message="unsupportedphpversion80" />
3188     </PHP>
3189     <PCREUNICODE level="optional">
3190       <FEEDBACK>
3191         <ON_CHECK message="pcreunicodewarning" />
3192       </FEEDBACK>
3193     </PCREUNICODE>
3194     <PHP_EXTENSIONS>
3195       <PHP_EXTENSION name="iconv" level="required">
3196         <FEEDBACK>
3197           <ON_ERROR message="iconvrequired" />
3198         </FEEDBACK>
3199       </PHP_EXTENSION>
3200       <PHP_EXTENSION name="mbstring" level="required">
3201         <FEEDBACK>
3202           <ON_ERROR message="mbstringrequired" />
3203         </FEEDBACK>
3204       </PHP_EXTENSION>
3205       <PHP_EXTENSION name="curl" level="required">
3206         <FEEDBACK>
3207           <ON_ERROR message="curlrequired" />
3208         </FEEDBACK>
3209       </PHP_EXTENSION>
3210       <PHP_EXTENSION name="openssl" level="required">
3211         <FEEDBACK>
3212           <ON_ERROR message="opensslrequired" />
3213         </FEEDBACK>
3214       </PHP_EXTENSION>
3215       <PHP_EXTENSION name="tokenizer" level="optional">
3216         <FEEDBACK>
3217           <ON_CHECK message="tokenizerrecommended" />
3218         </FEEDBACK>
3219       </PHP_EXTENSION>
3220       <PHP_EXTENSION name="xmlrpc" level="optional">
3221         <FEEDBACK>
3222           <ON_CHECK message="xmlrpcrecommended" />
3223         </FEEDBACK>
3224       </PHP_EXTENSION>
3225       <PHP_EXTENSION name="soap" level="optional">
3226         <FEEDBACK>
3227           <ON_CHECK message="soaprecommended" />
3228         </FEEDBACK>
3229       </PHP_EXTENSION>
3230       <PHP_EXTENSION name="ctype" level="required">
3231         <FEEDBACK>
3232           <ON_ERROR message="ctyperequired" />
3233         </FEEDBACK>
3234       </PHP_EXTENSION>
3235       <PHP_EXTENSION name="zip" level="required">
3236         <FEEDBACK>
3237           <ON_ERROR message="ziprequired" />
3238         </FEEDBACK>
3239       </PHP_EXTENSION>
3240       <PHP_EXTENSION name="zlib" level="required">
3241       </PHP_EXTENSION>
3242       <PHP_EXTENSION name="gd" level="required">
3243         <FEEDBACK>
3244           <ON_ERROR message="gdrequired" />
3245         </FEEDBACK>
3246       </PHP_EXTENSION>
3247       <PHP_EXTENSION name="simplexml" level="required">
3248         <FEEDBACK>
3249           <ON_ERROR message="simplexmlrequired" />
3250         </FEEDBACK>
3251       </PHP_EXTENSION>
3252       <PHP_EXTENSION name="spl" level="required">
3253         <FEEDBACK>
3254           <ON_ERROR message="splrequired" />
3255         </FEEDBACK>
3256       </PHP_EXTENSION>
3257       <PHP_EXTENSION name="pcre" level="required">
3258       </PHP_EXTENSION>
3259       <PHP_EXTENSION name="dom" level="required">
3260       </PHP_EXTENSION>
3261       <PHP_EXTENSION name="xml" level="required">
3262       </PHP_EXTENSION>
3263       <PHP_EXTENSION name="xmlreader" level="required">
3264       </PHP_EXTENSION>
3265       <PHP_EXTENSION name="intl" level="required">
3266         <FEEDBACK>
3267           <ON_ERROR message="intlrequired" />
3268         </FEEDBACK>
3269       </PHP_EXTENSION>
3270       <PHP_EXTENSION name="json" level="required">
3271       </PHP_EXTENSION>
3272       <PHP_EXTENSION name="hash" level="required"/>
3273       <PHP_EXTENSION name="fileinfo" level="required"/>
3274     </PHP_EXTENSIONS>
3275     <PHP_SETTINGS>
3276       <PHP_SETTING name="memory_limit" value="96M" level="required">
3277         <FEEDBACK>
3278           <ON_ERROR message="settingmemorylimit" />
3279         </FEEDBACK>
3280       </PHP_SETTING>
3281       <PHP_SETTING name="file_uploads" value="1" level="optional">
3282         <FEEDBACK>
3283           <ON_CHECK message="settingfileuploads" />
3284         </FEEDBACK>
3285       </PHP_SETTING>
3286       <PHP_SETTING name="opcache.enable" value="1" level="optional">
3287         <FEEDBACK>
3288           <ON_CHECK message="opcacherecommended" />
3289         </FEEDBACK>
3290       </PHP_SETTING>
3291     </PHP_SETTINGS>
3292     <CUSTOM_CHECKS>
3293       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_storage_engine" level="required">
3294         <FEEDBACK>
3295           <ON_ERROR message="unsupporteddbstorageengine" />
3296         </FEEDBACK>
3297       </CUSTOM_CHECK>
3298       <CUSTOM_CHECK file="question/engine/upgrade/upgradelib.php" function="quiz_attempts_upgraded" level="required">
3299         <FEEDBACK>
3300           <ON_ERROR message="quizattemptsupgradedmessage" />
3301         </FEEDBACK>
3302       </CUSTOM_CHECK>
3303       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_slasharguments" level="optional">
3304         <FEEDBACK>
3305           <ON_CHECK message="slashargumentswarning" />
3306         </FEEDBACK>
3307       </CUSTOM_CHECK>
3308       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_tables_row_format" level="optional">
3309         <FEEDBACK>
3310           <ON_CHECK message="unsupporteddbtablerowformat" />
3311         </FEEDBACK>
3312       </CUSTOM_CHECK>
3313       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_unoconv_version" level="optional">
3314         <FEEDBACK>
3315           <ON_CHECK message="unoconvwarning" />
3316         </FEEDBACK>
3317       </CUSTOM_CHECK>
3318       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_libcurl_version" level="optional">
3319         <FEEDBACK>
3320           <ON_CHECK message="libcurlwarning" />
3321         </FEEDBACK>
3322       </CUSTOM_CHECK>
3323       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_format" level="required">
3324         <FEEDBACK>
3325           <ON_ERROR message="unsupporteddbfileformat" />
3326         </FEEDBACK>
3327       </CUSTOM_CHECK>
3328       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_per_table" level="required">
3329         <FEEDBACK>
3330           <ON_ERROR message="unsupporteddbfilepertable" />
3331         </FEEDBACK>
3332       </CUSTOM_CHECK>
3333       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_large_prefix" level="required">
3334         <FEEDBACK>
3335           <ON_ERROR message="unsupporteddblargeprefix" />
3336         </FEEDBACK>
3337       </CUSTOM_CHECK>
3338       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_is_https" level="optional">
3339         <FEEDBACK>
3340           <ON_CHECK message="ishttpswarning" />
3341         </FEEDBACK>
3342       </CUSTOM_CHECK>
3343       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_incomplete_unicode_support" level="optional">
3344         <FEEDBACK>
3345           <ON_CHECK message="incompleteunicodesupport" />
3346         </FEEDBACK>
3347       </CUSTOM_CHECK>
3348       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_sixtyfour_bits" level="optional">
3349         <FEEDBACK>
3350           <ON_CHECK message="sixtyfourbitswarning" />
3351         </FEEDBACK>
3352       </CUSTOM_CHECK>
3353       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_igbinary322_version" level="optional">
3354         <FEEDBACK>
3355           <ON_CHECK message="igbinary322buggyversion" />
3356         </FEEDBACK>
3357       </CUSTOM_CHECK>
3358     </CUSTOM_CHECKS>
3359   </MOODLE>
3360   <MOODLE version="3.11" requires="3.6">
3361     <UNICODE level="required">
3362       <FEEDBACK>
3363         <ON_ERROR message="unicoderequired" />
3364       </FEEDBACK>
3365     </UNICODE>
3366     <DATABASE level="required">
3367       <VENDOR name="mariadb" version="10.2.29" />
3368       <VENDOR name="mysql" version="5.7" />
3369       <VENDOR name="postgres" version="9.6" />
3370       <VENDOR name="mssql" version="14.0" />
3371       <VENDOR name="oracle" version="11.2" />
3372     </DATABASE>
3373     <PHP version="7.3.0" level="required">
3374       <RESTRICT function="restrict_php_version_81" message="unsupportedphpversion81" />
3375     </PHP>
3376     <PCREUNICODE level="optional">
3377       <FEEDBACK>
3378         <ON_CHECK message="pcreunicodewarning" />
3379       </FEEDBACK>
3380     </PCREUNICODE>
3381     <PHP_EXTENSIONS>
3382       <PHP_EXTENSION name="iconv" level="required">
3383         <FEEDBACK>
3384           <ON_ERROR message="iconvrequired" />
3385         </FEEDBACK>
3386       </PHP_EXTENSION>
3387       <PHP_EXTENSION name="mbstring" level="required">
3388         <FEEDBACK>
3389           <ON_ERROR message="mbstringrequired" />
3390         </FEEDBACK>
3391       </PHP_EXTENSION>
3392       <PHP_EXTENSION name="curl" level="required">
3393         <FEEDBACK>
3394           <ON_ERROR message="curlrequired" />
3395         </FEEDBACK>
3396       </PHP_EXTENSION>
3397       <PHP_EXTENSION name="openssl" level="required">
3398         <FEEDBACK>
3399           <ON_ERROR message="opensslrequired" />
3400         </FEEDBACK>
3401       </PHP_EXTENSION>
3402       <PHP_EXTENSION name="tokenizer" level="optional">
3403         <FEEDBACK>
3404           <ON_CHECK message="tokenizerrecommended" />
3405         </FEEDBACK>
3406       </PHP_EXTENSION>
3407       <PHP_EXTENSION name="xmlrpc" level="optional">
3408         <FEEDBACK>
3409           <ON_CHECK message="xmlrpcrecommended" />
3410         </FEEDBACK>
3411       </PHP_EXTENSION>
3412       <PHP_EXTENSION name="soap" level="optional">
3413         <FEEDBACK>
3414           <ON_CHECK message="soaprecommended" />
3415         </FEEDBACK>
3416       </PHP_EXTENSION>
3417       <PHP_EXTENSION name="ctype" level="required">
3418         <FEEDBACK>
3419           <ON_ERROR message="ctyperequired" />
3420         </FEEDBACK>
3421       </PHP_EXTENSION>
3422       <PHP_EXTENSION name="zip" level="required">
3423         <FEEDBACK>
3424           <ON_ERROR message="ziprequired" />
3425         </FEEDBACK>
3426       </PHP_EXTENSION>
3427       <PHP_EXTENSION name="zlib" level="required">
3428       </PHP_EXTENSION>
3429       <PHP_EXTENSION name="gd" level="required">
3430         <FEEDBACK>
3431           <ON_ERROR message="gdrequired" />
3432         </FEEDBACK>
3433       </PHP_EXTENSION>
3434       <PHP_EXTENSION name="simplexml" level="required">
3435         <FEEDBACK>
3436           <ON_ERROR message="simplexmlrequired" />
3437         </FEEDBACK>
3438       </PHP_EXTENSION>
3439       <PHP_EXTENSION name="spl" level="required">
3440         <FEEDBACK>
3441           <ON_ERROR message="splrequired" />
3442         </FEEDBACK>
3443       </PHP_EXTENSION>
3444       <PHP_EXTENSION name="pcre" level="required">
3445       </PHP_EXTENSION>
3446       <PHP_EXTENSION name="dom" level="required">
3447       </PHP_EXTENSION>
3448       <PHP_EXTENSION name="xml" level="required">
3449       </PHP_EXTENSION>
3450       <PHP_EXTENSION name="xmlreader" level="required">
3451       </PHP_EXTENSION>
3452       <PHP_EXTENSION name="intl" level="required">
3453         <FEEDBACK>
3454           <ON_ERROR message="intlrequired" />
3455         </FEEDBACK>
3456       </PHP_EXTENSION>
3457       <PHP_EXTENSION name="json" level="required">
3458       </PHP_EXTENSION>
3459       <PHP_EXTENSION name="hash" level="required"/>
3460       <PHP_EXTENSION name="fileinfo" level="required"/>
3461       <PHP_EXTENSION name="sodium" level="optional"/>
3462     </PHP_EXTENSIONS>
3463     <PHP_SETTINGS>
3464       <PHP_SETTING name="memory_limit" value="96M" level="required">
3465         <FEEDBACK>
3466           <ON_ERROR message="settingmemorylimit" />
3467         </FEEDBACK>
3468       </PHP_SETTING>
3469       <PHP_SETTING name="file_uploads" value="1" level="optional">
3470         <FEEDBACK>
3471           <ON_CHECK message="settingfileuploads" />
3472         </FEEDBACK>
3473       </PHP_SETTING>
3474       <PHP_SETTING name="opcache.enable" value="1" level="optional">
3475         <FEEDBACK>
3476           <ON_CHECK message="opcacherecommended" />
3477         </FEEDBACK>
3478       </PHP_SETTING>
3479     </PHP_SETTINGS>
3480     <CUSTOM_CHECKS>
3481       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_storage_engine" level="required">
3482         <FEEDBACK>
3483           <ON_ERROR message="unsupporteddbstorageengine" />
3484         </FEEDBACK>
3485       </CUSTOM_CHECK>
3486       <CUSTOM_CHECK file="question/engine/upgrade/upgradelib.php" function="quiz_attempts_upgraded" level="required">
3487         <FEEDBACK>
3488           <ON_ERROR message="quizattemptsupgradedmessage" />
3489         </FEEDBACK>
3490       </CUSTOM_CHECK>
3491       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_slasharguments" level="optional">
3492         <FEEDBACK>
3493           <ON_CHECK message="slashargumentswarning" />
3494         </FEEDBACK>
3495       </CUSTOM_CHECK>
3496       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_tables_row_format" level="optional">
3497         <FEEDBACK>
3498           <ON_CHECK message="unsupporteddbtablerowformat" />
3499         </FEEDBACK>
3500       </CUSTOM_CHECK>
3501       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_unoconv_version" level="optional">
3502         <FEEDBACK>
3503           <ON_CHECK message="unoconvwarning" />
3504         </FEEDBACK>
3505       </CUSTOM_CHECK>
3506       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_libcurl_version" level="optional">
3507         <FEEDBACK>
3508           <ON_CHECK message="libcurlwarning" />
3509         </FEEDBACK>
3510       </CUSTOM_CHECK>
3511       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_format" level="required">
3512         <FEEDBACK>
3513           <ON_ERROR message="unsupporteddbfileformat" />
3514         </FEEDBACK>
3515       </CUSTOM_CHECK>
3516       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_per_table" level="required">
3517         <FEEDBACK>
3518           <ON_ERROR message="unsupporteddbfilepertable" />
3519         </FEEDBACK>
3520       </CUSTOM_CHECK>
3521       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_large_prefix" level="required">
3522         <FEEDBACK>
3523           <ON_ERROR message="unsupporteddblargeprefix" />
3524         </FEEDBACK>
3525       </CUSTOM_CHECK>
3526       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_is_https" level="optional">
3527         <FEEDBACK>
3528           <ON_CHECK message="ishttpswarning" />
3529         </FEEDBACK>
3530       </CUSTOM_CHECK>
3531       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_incomplete_unicode_support" level="optional">
3532         <FEEDBACK>
3533           <ON_CHECK message="incompleteunicodesupport" />
3534         </FEEDBACK>
3535       </CUSTOM_CHECK>
3536       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_sixtyfour_bits" level="optional">
3537         <FEEDBACK>
3538           <ON_CHECK message="sixtyfourbitswarning" />
3539         </FEEDBACK>
3540       </CUSTOM_CHECK>
3541       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_max_input_vars" level="optional">
3542       </CUSTOM_CHECK>
3543       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_xmlrpc_usage" level="optional">
3544       </CUSTOM_CHECK>
3545     </CUSTOM_CHECKS>
3546   </MOODLE>
3547   <MOODLE version="4.0" requires="3.6">
3548     <UNICODE level="required">
3549       <FEEDBACK>
3550         <ON_ERROR message="unicoderequired" />
3551       </FEEDBACK>
3552     </UNICODE>
3553     <DATABASE level="required">
3554       <VENDOR name="mariadb" version="10.2.29" />
3555       <VENDOR name="mysql" version="5.7" />
3556       <VENDOR name="postgres" version="10" />
3557       <VENDOR name="mssql" version="14.0" />
3558       <VENDOR name="oracle" version="11.2" />
3559     </DATABASE>
3560     <PHP version="7.3.0" level="required">
3561       <RESTRICT function="restrict_php_version_81" message="unsupportedphpversion81" />
3562     </PHP>
3563     <PCREUNICODE level="optional">
3564       <FEEDBACK>
3565         <ON_CHECK message="pcreunicodewarning" />
3566       </FEEDBACK>
3567     </PCREUNICODE>
3568     <PHP_EXTENSIONS>
3569       <PHP_EXTENSION name="iconv" level="required">
3570         <FEEDBACK>
3571           <ON_ERROR message="iconvrequired" />
3572         </FEEDBACK>
3573       </PHP_EXTENSION>
3574       <PHP_EXTENSION name="mbstring" level="required">
3575         <FEEDBACK>
3576           <ON_ERROR message="mbstringrequired" />
3577         </FEEDBACK>
3578       </PHP_EXTENSION>
3579       <PHP_EXTENSION name="curl" level="required">
3580         <FEEDBACK>
3581           <ON_ERROR message="curlrequired" />
3582         </FEEDBACK>
3583       </PHP_EXTENSION>
3584       <PHP_EXTENSION name="openssl" level="required">
3585         <FEEDBACK>
3586           <ON_ERROR message="opensslrequired" />
3587         </FEEDBACK>
3588       </PHP_EXTENSION>
3589       <PHP_EXTENSION name="tokenizer" level="optional">
3590         <FEEDBACK>
3591           <ON_CHECK message="tokenizerrecommended" />
3592         </FEEDBACK>
3593       </PHP_EXTENSION>
3594       <PHP_EXTENSION name="xmlrpc" level="optional">
3595         <FEEDBACK>
3596           <ON_CHECK message="xmlrpcrecommended" />
3597         </FEEDBACK>
3598       </PHP_EXTENSION>
3599       <PHP_EXTENSION name="soap" level="optional">
3600         <FEEDBACK>
3601           <ON_CHECK message="soaprecommended" />
3602         </FEEDBACK>
3603       </PHP_EXTENSION>
3604       <PHP_EXTENSION name="ctype" level="required">
3605         <FEEDBACK>
3606           <ON_ERROR message="ctyperequired" />
3607         </FEEDBACK>
3608       </PHP_EXTENSION>
3609       <PHP_EXTENSION name="zip" level="required">
3610         <FEEDBACK>
3611           <ON_ERROR message="ziprequired" />
3612         </FEEDBACK>
3613       </PHP_EXTENSION>
3614       <PHP_EXTENSION name="zlib" level="required">
3615       </PHP_EXTENSION>
3616       <PHP_EXTENSION name="gd" level="required">
3617         <FEEDBACK>
3618           <ON_ERROR message="gdrequired" />
3619         </FEEDBACK>
3620       </PHP_EXTENSION>
3621       <PHP_EXTENSION name="simplexml" level="required">
3622         <FEEDBACK>
3623           <ON_ERROR message="simplexmlrequired" />
3624         </FEEDBACK>
3625       </PHP_EXTENSION>
3626       <PHP_EXTENSION name="spl" level="required">
3627         <FEEDBACK>
3628           <ON_ERROR message="splrequired" />
3629         </FEEDBACK>
3630       </PHP_EXTENSION>
3631       <PHP_EXTENSION name="pcre" level="required">
3632       </PHP_EXTENSION>
3633       <PHP_EXTENSION name="dom" level="required">
3634       </PHP_EXTENSION>
3635       <PHP_EXTENSION name="xml" level="required">
3636       </PHP_EXTENSION>
3637       <PHP_EXTENSION name="xmlreader" level="required">
3638       </PHP_EXTENSION>
3639       <PHP_EXTENSION name="intl" level="required">
3640         <FEEDBACK>
3641           <ON_ERROR message="intlrequired" />
3642         </FEEDBACK>
3643       </PHP_EXTENSION>
3644       <PHP_EXTENSION name="json" level="required">
3645       </PHP_EXTENSION>
3646       <PHP_EXTENSION name="hash" level="required"/>
3647       <PHP_EXTENSION name="fileinfo" level="required"/>
3648       <PHP_EXTENSION name="sodium" level="optional"/>
3649       <PHP_EXTENSION name="exif" level="optional"/>
3650     </PHP_EXTENSIONS>
3651     <PHP_SETTINGS>
3652       <PHP_SETTING name="memory_limit" value="96M" level="required">
3653         <FEEDBACK>
3654           <ON_ERROR message="settingmemorylimit" />
3655         </FEEDBACK>
3656       </PHP_SETTING>
3657       <PHP_SETTING name="file_uploads" value="1" level="optional">
3658         <FEEDBACK>
3659           <ON_CHECK message="settingfileuploads" />
3660         </FEEDBACK>
3661       </PHP_SETTING>
3662       <PHP_SETTING name="opcache.enable" value="1" level="optional">
3663         <FEEDBACK>
3664           <ON_CHECK message="opcacherecommended" />
3665         </FEEDBACK>
3666       </PHP_SETTING>
3667     </PHP_SETTINGS>
3668     <CUSTOM_CHECKS>
3669       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_storage_engine" level="required">
3670         <FEEDBACK>
3671           <ON_ERROR message="unsupporteddbstorageengine" />
3672         </FEEDBACK>
3673       </CUSTOM_CHECK>
3674       <CUSTOM_CHECK file="question/engine/upgrade/upgradelib.php" function="quiz_attempts_upgraded" level="required">
3675         <FEEDBACK>
3676           <ON_ERROR message="quizattemptsupgradedmessage" />
3677         </FEEDBACK>
3678       </CUSTOM_CHECK>
3679       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_slasharguments" level="optional">
3680         <FEEDBACK>
3681           <ON_CHECK message="slashargumentswarning" />
3682         </FEEDBACK>
3683       </CUSTOM_CHECK>
3684       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_tables_row_format" level="optional">
3685         <FEEDBACK>
3686           <ON_CHECK message="unsupporteddbtablerowformat" />
3687         </FEEDBACK>
3688       </CUSTOM_CHECK>
3689       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_unoconv_version" level="optional">
3690         <FEEDBACK>
3691           <ON_CHECK message="unoconvwarning" />
3692         </FEEDBACK>
3693       </CUSTOM_CHECK>
3694       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_libcurl_version" level="optional">
3695         <FEEDBACK>
3696           <ON_CHECK message="libcurlwarning" />
3697         </FEEDBACK>
3698       </CUSTOM_CHECK>
3699       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_format" level="required">
3700         <FEEDBACK>
3701           <ON_ERROR message="unsupporteddbfileformat" />
3702         </FEEDBACK>
3703       </CUSTOM_CHECK>
3704       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_per_table" level="required">
3705         <FEEDBACK>
3706           <ON_ERROR message="unsupporteddbfilepertable" />
3707         </FEEDBACK>
3708       </CUSTOM_CHECK>
3709       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_large_prefix" level="required">
3710         <FEEDBACK>
3711           <ON_ERROR message="unsupporteddblargeprefix" />
3712         </FEEDBACK>
3713       </CUSTOM_CHECK>
3714       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_is_https" level="optional">
3715         <FEEDBACK>
3716           <ON_CHECK message="ishttpswarning" />
3717         </FEEDBACK>
3718       </CUSTOM_CHECK>
3719       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_incomplete_unicode_support" level="optional">
3720         <FEEDBACK>
3721           <ON_CHECK message="incompleteunicodesupport" />
3722         </FEEDBACK>
3723       </CUSTOM_CHECK>
3724       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_sixtyfour_bits" level="optional">
3725         <FEEDBACK>
3726           <ON_CHECK message="sixtyfourbitswarning" />
3727         </FEEDBACK>
3728       </CUSTOM_CHECK>
3729       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_max_input_vars" level="optional">
3730       </CUSTOM_CHECK>
3731       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_admin_dir_usage" level="optional">
3732         <FEEDBACK>
3733           <ON_CHECK message="iscustomadminwarnings" />
3734         </FEEDBACK>
3735       </CUSTOM_CHECK>
3736       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_xmlrpc_usage" level="optional">
3737       </CUSTOM_CHECK>
3738     </CUSTOM_CHECKS>
3739   </MOODLE>
3740   <MOODLE version="4.1" requires="3.9">
3741     <UNICODE level="required">
3742       <FEEDBACK>
3743         <ON_ERROR message="unicoderequired" />
3744       </FEEDBACK>
3745     </UNICODE>
3746     <DATABASE level="required">
3747       <VENDOR name="mariadb" version="10.4" />
3748       <VENDOR name="mysql" version="5.7" />
3749       <VENDOR name="postgres" version="12" />
3750       <VENDOR name="mssql" version="14.0" />
3751       <VENDOR name="oracle" version="19" />
3752     </DATABASE>
3753     <PHP version="7.4.0" level="required">
3754       <RESTRICT function="restrict_php_version_82" message="unsupportedphpversion82" />
3755     </PHP>
3756     <PCREUNICODE level="optional">
3757       <FEEDBACK>
3758         <ON_CHECK message="pcreunicodewarning" />
3759       </FEEDBACK>
3760     </PCREUNICODE>
3761     <PHP_EXTENSIONS>
3762       <PHP_EXTENSION name="iconv" level="required">
3763         <FEEDBACK>
3764           <ON_ERROR message="iconvrequired" />
3765         </FEEDBACK>
3766       </PHP_EXTENSION>
3767       <PHP_EXTENSION name="mbstring" level="required">
3768         <FEEDBACK>
3769           <ON_ERROR message="mbstringrequired" />
3770         </FEEDBACK>
3771       </PHP_EXTENSION>
3772       <PHP_EXTENSION name="curl" level="required">
3773         <FEEDBACK>
3774           <ON_ERROR message="curlrequired" />
3775         </FEEDBACK>
3776       </PHP_EXTENSION>
3777       <PHP_EXTENSION name="openssl" level="required">
3778         <FEEDBACK>
3779           <ON_ERROR message="opensslrequired" />
3780         </FEEDBACK>
3781       </PHP_EXTENSION>
3782       <PHP_EXTENSION name="tokenizer" level="optional">
3783         <FEEDBACK>
3784           <ON_CHECK message="tokenizerrecommended" />
3785         </FEEDBACK>
3786       </PHP_EXTENSION>
3787       <PHP_EXTENSION name="soap" level="optional">
3788         <FEEDBACK>
3789           <ON_CHECK message="soaprecommended" />
3790         </FEEDBACK>
3791       </PHP_EXTENSION>
3792       <PHP_EXTENSION name="ctype" level="required">
3793         <FEEDBACK>
3794           <ON_ERROR message="ctyperequired" />
3795         </FEEDBACK>
3796       </PHP_EXTENSION>
3797       <PHP_EXTENSION name="zip" level="required">
3798         <FEEDBACK>
3799           <ON_ERROR message="ziprequired" />
3800         </FEEDBACK>
3801       </PHP_EXTENSION>
3802       <PHP_EXTENSION name="zlib" level="required">
3803       </PHP_EXTENSION>
3804       <PHP_EXTENSION name="gd" level="required">
3805         <FEEDBACK>
3806           <ON_ERROR message="gdrequired" />
3807         </FEEDBACK>
3808       </PHP_EXTENSION>
3809       <PHP_EXTENSION name="simplexml" level="required">
3810         <FEEDBACK>
3811           <ON_ERROR message="simplexmlrequired" />
3812         </FEEDBACK>
3813       </PHP_EXTENSION>
3814       <PHP_EXTENSION name="spl" level="required">
3815         <FEEDBACK>
3816           <ON_ERROR message="splrequired" />
3817         </FEEDBACK>
3818       </PHP_EXTENSION>
3819       <PHP_EXTENSION name="pcre" level="required">
3820       </PHP_EXTENSION>
3821       <PHP_EXTENSION name="dom" level="required">
3822       </PHP_EXTENSION>
3823       <PHP_EXTENSION name="xml" level="required">
3824       </PHP_EXTENSION>
3825       <PHP_EXTENSION name="xmlreader" level="required">
3826       </PHP_EXTENSION>
3827       <PHP_EXTENSION name="intl" level="required">
3828         <FEEDBACK>
3829           <ON_ERROR message="intlrequired" />
3830         </FEEDBACK>
3831       </PHP_EXTENSION>
3832       <PHP_EXTENSION name="json" level="required">
3833       </PHP_EXTENSION>
3834       <PHP_EXTENSION name="hash" level="required"/>
3835       <PHP_EXTENSION name="fileinfo" level="required"/>
3836       <PHP_EXTENSION name="sodium" level="optional"/>
3837       <PHP_EXTENSION name="exif" level="optional"/>
3838     </PHP_EXTENSIONS>
3839     <PHP_SETTINGS>
3840       <PHP_SETTING name="memory_limit" value="96M" level="required">
3841         <FEEDBACK>
3842           <ON_ERROR message="settingmemorylimit" />
3843         </FEEDBACK>
3844       </PHP_SETTING>
3845       <PHP_SETTING name="file_uploads" value="1" level="optional">
3846         <FEEDBACK>
3847           <ON_CHECK message="settingfileuploads" />
3848         </FEEDBACK>
3849       </PHP_SETTING>
3850       <PHP_SETTING name="opcache.enable" value="1" level="optional">
3851         <FEEDBACK>
3852           <ON_CHECK message="opcacherecommended" />
3853         </FEEDBACK>
3854       </PHP_SETTING>
3855     </PHP_SETTINGS>
3856     <CUSTOM_CHECKS>
3857       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_storage_engine" level="required">
3858         <FEEDBACK>
3859           <ON_ERROR message="unsupporteddbstorageengine" />
3860         </FEEDBACK>
3861       </CUSTOM_CHECK>
3862       <CUSTOM_CHECK file="question/engine/upgrade/upgradelib.php" function="quiz_attempts_upgraded" level="required">
3863         <FEEDBACK>
3864           <ON_ERROR message="quizattemptsupgradedmessage" />
3865         </FEEDBACK>
3866       </CUSTOM_CHECK>
3867       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_slasharguments" level="optional">
3868         <FEEDBACK>
3869           <ON_CHECK message="slashargumentswarning" />
3870         </FEEDBACK>
3871       </CUSTOM_CHECK>
3872       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_tables_row_format" level="optional">
3873         <FEEDBACK>
3874           <ON_CHECK message="unsupporteddbtablerowformat" />
3875         </FEEDBACK>
3876       </CUSTOM_CHECK>
3877       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_unoconv_version" level="optional">
3878         <FEEDBACK>
3879           <ON_CHECK message="unoconvwarning" />
3880         </FEEDBACK>
3881       </CUSTOM_CHECK>
3882       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_libcurl_version" level="optional">
3883         <FEEDBACK>
3884           <ON_CHECK message="libcurlwarning" />
3885         </FEEDBACK>
3886       </CUSTOM_CHECK>
3887       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_format" level="required">
3888         <FEEDBACK>
3889           <ON_ERROR message="unsupporteddbfileformat" />
3890         </FEEDBACK>
3891       </CUSTOM_CHECK>
3892       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_per_table" level="required">
3893         <FEEDBACK>
3894           <ON_ERROR message="unsupporteddbfilepertable" />
3895         </FEEDBACK>
3896       </CUSTOM_CHECK>
3897       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_large_prefix" level="required">
3898         <FEEDBACK>
3899           <ON_ERROR message="unsupporteddblargeprefix" />
3900         </FEEDBACK>
3901       </CUSTOM_CHECK>
3902       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_is_https" level="optional">
3903         <FEEDBACK>
3904           <ON_CHECK message="ishttpswarning" />
3905         </FEEDBACK>
3906       </CUSTOM_CHECK>
3907       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_incomplete_unicode_support" level="optional">
3908         <FEEDBACK>
3909           <ON_CHECK message="incompleteunicodesupport" />
3910         </FEEDBACK>
3911       </CUSTOM_CHECK>
3912       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_sixtyfour_bits" level="optional">
3913         <FEEDBACK>
3914           <ON_CHECK message="sixtyfourbitswarning" />
3915         </FEEDBACK>
3916       </CUSTOM_CHECK>
3917       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_max_input_vars" level="optional">
3918       </CUSTOM_CHECK>
3919       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_admin_dir_usage" level="optional">
3920         <FEEDBACK>
3921           <ON_CHECK message="iscustomadminwarnings" />
3922         </FEEDBACK>
3923       </CUSTOM_CHECK>
3924       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_xmlrpc_usage" level="optional">
3925       </CUSTOM_CHECK>
3926     </CUSTOM_CHECKS>
3927   </MOODLE>
3928   <MOODLE version="4.2" requires="3.11.8">
3929     <UNICODE level="required">
3930       <FEEDBACK>
3931         <ON_ERROR message="unicoderequired" />
3932       </FEEDBACK>
3933     </UNICODE>
3934     <DATABASE level="required">
3935       <VENDOR name="mariadb" version="10.6.7" />
3936       <VENDOR name="mysql" version="8.0" />
3937       <VENDOR name="postgres" version="13" />
3938       <VENDOR name="mssql" version="14.0" />
3939       <VENDOR name="oracle" version="19" />
3940     </DATABASE>
3941     <PHP version="8.0.0" level="required">
3942       <RESTRICT function="restrict_php_version_83" message="unsupportedphpversion83" />
3943     </PHP>
3944     <PCREUNICODE level="optional">
3945       <FEEDBACK>
3946         <ON_CHECK message="pcreunicodewarning" />
3947       </FEEDBACK>
3948     </PCREUNICODE>
3949     <PHP_EXTENSIONS>
3950       <PHP_EXTENSION name="iconv" level="required">
3951         <FEEDBACK>
3952           <ON_ERROR message="iconvrequired" />
3953         </FEEDBACK>
3954       </PHP_EXTENSION>
3955       <PHP_EXTENSION name="mbstring" level="required">
3956         <FEEDBACK>
3957           <ON_ERROR message="mbstringrequired" />
3958         </FEEDBACK>
3959       </PHP_EXTENSION>
3960       <PHP_EXTENSION name="curl" level="required">
3961         <FEEDBACK>
3962           <ON_ERROR message="curlrequired" />
3963         </FEEDBACK>
3964       </PHP_EXTENSION>
3965       <PHP_EXTENSION name="openssl" level="required">
3966         <FEEDBACK>
3967           <ON_ERROR message="opensslrequired" />
3968         </FEEDBACK>
3969       </PHP_EXTENSION>
3970       <PHP_EXTENSION name="tokenizer" level="optional">
3971         <FEEDBACK>
3972           <ON_CHECK message="tokenizerrecommended" />
3973         </FEEDBACK>
3974       </PHP_EXTENSION>
3975       <PHP_EXTENSION name="soap" level="optional">
3976         <FEEDBACK>
3977           <ON_CHECK message="soaprecommended" />
3978         </FEEDBACK>
3979       </PHP_EXTENSION>
3980       <PHP_EXTENSION name="ctype" level="required">
3981         <FEEDBACK>
3982           <ON_ERROR message="ctyperequired" />
3983         </FEEDBACK>
3984       </PHP_EXTENSION>
3985       <PHP_EXTENSION name="zip" level="required">
3986         <FEEDBACK>
3987           <ON_ERROR message="ziprequired" />
3988         </FEEDBACK>
3989       </PHP_EXTENSION>
3990       <PHP_EXTENSION name="zlib" level="required">
3991       </PHP_EXTENSION>
3992       <PHP_EXTENSION name="gd" level="required">
3993         <FEEDBACK>
3994           <ON_ERROR message="gdrequired" />
3995         </FEEDBACK>
3996       </PHP_EXTENSION>
3997       <PHP_EXTENSION name="simplexml" level="required">
3998         <FEEDBACK>
3999           <ON_ERROR message="simplexmlrequired" />
4000         </FEEDBACK>
4001       </PHP_EXTENSION>
4002       <PHP_EXTENSION name="spl" level="required">
4003         <FEEDBACK>
4004           <ON_ERROR message="splrequired" />
4005         </FEEDBACK>
4006       </PHP_EXTENSION>
4007       <PHP_EXTENSION name="pcre" level="required">
4008       </PHP_EXTENSION>
4009       <PHP_EXTENSION name="dom" level="required">
4010       </PHP_EXTENSION>
4011       <PHP_EXTENSION name="xml" level="required">
4012       </PHP_EXTENSION>
4013       <PHP_EXTENSION name="xmlreader" level="required">
4014       </PHP_EXTENSION>
4015       <PHP_EXTENSION name="intl" level="required">
4016         <FEEDBACK>
4017           <ON_ERROR message="intlrequired" />
4018         </FEEDBACK>
4019       </PHP_EXTENSION>
4020       <PHP_EXTENSION name="json" level="required">
4021       </PHP_EXTENSION>
4022       <PHP_EXTENSION name="hash" level="required"/>
4023       <PHP_EXTENSION name="fileinfo" level="required"/>
4024       <PHP_EXTENSION name="sodium" level="required"/>
4025       <PHP_EXTENSION name="exif" level="optional"/>
4026     </PHP_EXTENSIONS>
4027     <PHP_SETTINGS>
4028       <PHP_SETTING name="memory_limit" value="96M" level="required">
4029         <FEEDBACK>
4030           <ON_ERROR message="settingmemorylimit" />
4031         </FEEDBACK>
4032       </PHP_SETTING>
4033       <PHP_SETTING name="file_uploads" value="1" level="optional">
4034         <FEEDBACK>
4035           <ON_CHECK message="settingfileuploads" />
4036         </FEEDBACK>
4037       </PHP_SETTING>
4038       <PHP_SETTING name="opcache.enable" value="1" level="optional">
4039         <FEEDBACK>
4040           <ON_CHECK message="opcacherecommended" />
4041         </FEEDBACK>
4042       </PHP_SETTING>
4043     </PHP_SETTINGS>
4044     <CUSTOM_CHECKS>
4045       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_storage_engine" level="required">
4046         <FEEDBACK>
4047           <ON_ERROR message="unsupporteddbstorageengine" />
4048         </FEEDBACK>
4049       </CUSTOM_CHECK>
4050       <CUSTOM_CHECK file="question/engine/upgrade/upgradelib.php" function="quiz_attempts_upgraded" level="required">
4051         <FEEDBACK>
4052           <ON_ERROR message="quizattemptsupgradedmessage" />
4053         </FEEDBACK>
4054       </CUSTOM_CHECK>
4055       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_slasharguments" level="optional">
4056         <FEEDBACK>
4057           <ON_CHECK message="slashargumentswarning" />
4058         </FEEDBACK>
4059       </CUSTOM_CHECK>
4060       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_tables_row_format" level="optional">
4061         <FEEDBACK>
4062           <ON_CHECK message="unsupporteddbtablerowformat" />
4063         </FEEDBACK>
4064       </CUSTOM_CHECK>
4065       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_unoconv_version" level="optional">
4066         <FEEDBACK>
4067           <ON_CHECK message="unoconvwarning" />
4068         </FEEDBACK>
4069       </CUSTOM_CHECK>
4070       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_libcurl_version" level="optional">
4071         <FEEDBACK>
4072           <ON_CHECK message="libcurlwarning" />
4073         </FEEDBACK>
4074       </CUSTOM_CHECK>
4075       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_format" level="required">
4076         <FEEDBACK>
4077           <ON_ERROR message="unsupporteddbfileformat" />
4078         </FEEDBACK>
4079       </CUSTOM_CHECK>
4080       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_per_table" level="required">
4081         <FEEDBACK>
4082           <ON_ERROR message="unsupporteddbfilepertable" />
4083         </FEEDBACK>
4084       </CUSTOM_CHECK>
4085       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_large_prefix" level="required">
4086         <FEEDBACK>
4087           <ON_ERROR message="unsupporteddblargeprefix" />
4088         </FEEDBACK>
4089       </CUSTOM_CHECK>
4090       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_is_https" level="optional">
4091         <FEEDBACK>
4092           <ON_CHECK message="ishttpswarning" />
4093         </FEEDBACK>
4094       </CUSTOM_CHECK>
4095       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_incomplete_unicode_support" level="optional">
4096         <FEEDBACK>
4097           <ON_CHECK message="incompleteunicodesupport" />
4098         </FEEDBACK>
4099       </CUSTOM_CHECK>
4100       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_sixtyfour_bits" level="required">
4101         <FEEDBACK>
4102           <ON_ERROR message="sixtyfourbitsrequired" />
4103         </FEEDBACK>
4104       </CUSTOM_CHECK>
4105       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_max_input_vars" level="optional">
4106       </CUSTOM_CHECK>
4107       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_admin_dir_usage" level="optional">
4108         <FEEDBACK>
4109           <ON_CHECK message="iscustomadminwarnings" />
4110         </FEEDBACK>
4111       </CUSTOM_CHECK>
4112       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_xmlrpc_usage" level="optional">
4113       </CUSTOM_CHECK>
4114       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mod_assignment" level="required">
4115       </CUSTOM_CHECK>
4116     </CUSTOM_CHECKS>
4117   </MOODLE>
4118   <MOODLE version="4.3" requires="3.11.8">
4119     <UNICODE level="required">
4120       <FEEDBACK>
4121         <ON_ERROR message="unicoderequired" />
4122       </FEEDBACK>
4123     </UNICODE>
4124     <DATABASE level="required">
4125       <VENDOR name="mariadb" version="10.6.7" />
4126       <VENDOR name="mysql" version="8.0" />
4127       <VENDOR name="postgres" version="13" />
4128       <VENDOR name="mssql" version="14.0" />
4129       <VENDOR name="oracle" version="19" />
4130     </DATABASE>
4131     <PHP version="8.0.0" level="required">
4132       <RESTRICT function="restrict_php_version_83" message="unsupportedphpversion83" />
4133     </PHP>
4134     <PCREUNICODE level="optional">
4135       <FEEDBACK>
4136         <ON_CHECK message="pcreunicodewarning" />
4137       </FEEDBACK>
4138     </PCREUNICODE>
4139     <PHP_EXTENSIONS>
4140       <PHP_EXTENSION name="iconv" level="required">
4141         <FEEDBACK>
4142           <ON_ERROR message="iconvrequired" />
4143         </FEEDBACK>
4144       </PHP_EXTENSION>
4145       <PHP_EXTENSION name="mbstring" level="required">
4146         <FEEDBACK>
4147           <ON_ERROR message="mbstringrequired" />
4148         </FEEDBACK>
4149       </PHP_EXTENSION>
4150       <PHP_EXTENSION name="curl" level="required">
4151         <FEEDBACK>
4152           <ON_ERROR message="curlrequired" />
4153         </FEEDBACK>
4154       </PHP_EXTENSION>
4155       <PHP_EXTENSION name="openssl" level="required">
4156         <FEEDBACK>
4157           <ON_ERROR message="opensslrequired" />
4158         </FEEDBACK>
4159       </PHP_EXTENSION>
4160       <PHP_EXTENSION name="tokenizer" level="optional">
4161         <FEEDBACK>
4162           <ON_CHECK message="tokenizerrecommended" />
4163         </FEEDBACK>
4164       </PHP_EXTENSION>
4165       <PHP_EXTENSION name="soap" level="optional">
4166         <FEEDBACK>
4167           <ON_CHECK message="soaprecommended" />
4168         </FEEDBACK>
4169       </PHP_EXTENSION>
4170       <PHP_EXTENSION name="ctype" level="required">
4171         <FEEDBACK>
4172           <ON_ERROR message="ctyperequired" />
4173         </FEEDBACK>
4174       </PHP_EXTENSION>
4175       <PHP_EXTENSION name="zip" level="required">
4176         <FEEDBACK>
4177           <ON_ERROR message="ziprequired" />
4178         </FEEDBACK>
4179       </PHP_EXTENSION>
4180       <PHP_EXTENSION name="zlib" level="required">
4181       </PHP_EXTENSION>
4182       <PHP_EXTENSION name="gd" level="required">
4183         <FEEDBACK>
4184           <ON_ERROR message="gdrequired" />
4185         </FEEDBACK>
4186       </PHP_EXTENSION>
4187       <PHP_EXTENSION name="simplexml" level="required">
4188         <FEEDBACK>
4189           <ON_ERROR message="simplexmlrequired" />
4190         </FEEDBACK>
4191       </PHP_EXTENSION>
4192       <PHP_EXTENSION name="spl" level="required">
4193         <FEEDBACK>
4194           <ON_ERROR message="splrequired" />
4195         </FEEDBACK>
4196       </PHP_EXTENSION>
4197       <PHP_EXTENSION name="pcre" level="required">
4198       </PHP_EXTENSION>
4199       <PHP_EXTENSION name="dom" level="required">
4200       </PHP_EXTENSION>
4201       <PHP_EXTENSION name="xml" level="required">
4202       </PHP_EXTENSION>
4203       <PHP_EXTENSION name="xmlreader" level="required">
4204       </PHP_EXTENSION>
4205       <PHP_EXTENSION name="intl" level="required">
4206         <FEEDBACK>
4207           <ON_ERROR message="intlrequired" />
4208         </FEEDBACK>
4209       </PHP_EXTENSION>
4210       <PHP_EXTENSION name="json" level="required">
4211       </PHP_EXTENSION>
4212       <PHP_EXTENSION name="hash" level="required"/>
4213       <PHP_EXTENSION name="fileinfo" level="required"/>
4214       <PHP_EXTENSION name="sodium" level="required"/>
4215       <PHP_EXTENSION name="exif" level="optional"/>
4216     </PHP_EXTENSIONS>
4217     <PHP_SETTINGS>
4218       <PHP_SETTING name="memory_limit" value="96M" level="required">
4219         <FEEDBACK>
4220           <ON_ERROR message="settingmemorylimit" />
4221         </FEEDBACK>
4222       </PHP_SETTING>
4223       <PHP_SETTING name="file_uploads" value="1" level="optional">
4224         <FEEDBACK>
4225           <ON_CHECK message="settingfileuploads" />
4226         </FEEDBACK>
4227       </PHP_SETTING>
4228       <PHP_SETTING name="opcache.enable" value="1" level="optional">
4229         <FEEDBACK>
4230           <ON_CHECK message="opcacherecommended" />
4231         </FEEDBACK>
4232       </PHP_SETTING>
4233     </PHP_SETTINGS>
4234     <CUSTOM_CHECKS>
4235       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_storage_engine" level="required">
4236         <FEEDBACK>
4237           <ON_ERROR message="unsupporteddbstorageengine" />
4238         </FEEDBACK>
4239       </CUSTOM_CHECK>
4240       <CUSTOM_CHECK file="question/engine/upgrade/upgradelib.php" function="quiz_attempts_upgraded" level="required">
4241         <FEEDBACK>
4242           <ON_ERROR message="quizattemptsupgradedmessage" />
4243         </FEEDBACK>
4244       </CUSTOM_CHECK>
4245       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_slasharguments" level="optional">
4246         <FEEDBACK>
4247           <ON_CHECK message="slashargumentswarning" />
4248         </FEEDBACK>
4249       </CUSTOM_CHECK>
4250       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_tables_row_format" level="optional">
4251         <FEEDBACK>
4252           <ON_CHECK message="unsupporteddbtablerowformat" />
4253         </FEEDBACK>
4254       </CUSTOM_CHECK>
4255       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_unoconv_version" level="optional">
4256         <FEEDBACK>
4257           <ON_CHECK message="unoconvwarning" />
4258         </FEEDBACK>
4259       </CUSTOM_CHECK>
4260       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_libcurl_version" level="optional">
4261         <FEEDBACK>
4262           <ON_CHECK message="libcurlwarning" />
4263         </FEEDBACK>
4264       </CUSTOM_CHECK>
4265       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_format" level="required">
4266         <FEEDBACK>
4267           <ON_ERROR message="unsupporteddbfileformat" />
4268         </FEEDBACK>
4269       </CUSTOM_CHECK>
4270       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_per_table" level="required">
4271         <FEEDBACK>
4272           <ON_ERROR message="unsupporteddbfilepertable" />
4273         </FEEDBACK>
4274       </CUSTOM_CHECK>
4275       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_large_prefix" level="required">
4276         <FEEDBACK>
4277           <ON_ERROR message="unsupporteddblargeprefix" />
4278         </FEEDBACK>
4279       </CUSTOM_CHECK>
4280       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_is_https" level="optional">
4281         <FEEDBACK>
4282           <ON_CHECK message="ishttpswarning" />
4283         </FEEDBACK>
4284       </CUSTOM_CHECK>
4285       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_incomplete_unicode_support" level="optional">
4286         <FEEDBACK>
4287           <ON_CHECK message="incompleteunicodesupport" />
4288         </FEEDBACK>
4289       </CUSTOM_CHECK>
4290       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_sixtyfour_bits" level="required">
4291         <FEEDBACK>
4292           <ON_ERROR message="sixtyfourbitsrequired" />
4293         </FEEDBACK>
4294       </CUSTOM_CHECK>
4295       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_max_input_vars" level="optional">
4296       </CUSTOM_CHECK>
4297       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_admin_dir_usage" level="optional">
4298         <FEEDBACK>
4299           <ON_CHECK message="iscustomadminwarnings" />
4300         </FEEDBACK>
4301       </CUSTOM_CHECK>
4302       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_xmlrpc_usage" level="optional">
4303       </CUSTOM_CHECK>
4304       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mod_assignment" level="required">
4305       </CUSTOM_CHECK>
4306       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_db_prefix_length" level="required">
4307       </CUSTOM_CHECK>
4308     </CUSTOM_CHECKS>
4309   </MOODLE>
4310   <MOODLE version="4.4" requires="4.1.2">
4311     <UNICODE level="required">
4312       <FEEDBACK>
4313         <ON_ERROR message="unicoderequired" />
4314       </FEEDBACK>
4315     </UNICODE>
4316     <DATABASE level="required">
4317       <VENDOR name="mariadb" version="10.6.7" />
4318       <VENDOR name="mysql" version="8.0" />
4319       <VENDOR name="postgres" version="13" />
4320       <VENDOR name="mssql" version="14.0" />
4321       <VENDOR name="oracle" version="19" />
4322     </DATABASE>
4323     <PHP version="8.1.0" level="required">
4324     </PHP>
4325     <PCREUNICODE level="optional">
4326       <FEEDBACK>
4327         <ON_CHECK message="pcreunicodewarning" />
4328       </FEEDBACK>
4329     </PCREUNICODE>
4330     <PHP_EXTENSIONS>
4331       <PHP_EXTENSION name="iconv" level="required">
4332         <FEEDBACK>
4333           <ON_ERROR message="iconvrequired" />
4334         </FEEDBACK>
4335       </PHP_EXTENSION>
4336       <PHP_EXTENSION name="mbstring" level="required">
4337         <FEEDBACK>
4338           <ON_ERROR message="mbstringrequired" />
4339         </FEEDBACK>
4340       </PHP_EXTENSION>
4341       <PHP_EXTENSION name="curl" level="required">
4342         <FEEDBACK>
4343           <ON_ERROR message="curlrequired" />
4344         </FEEDBACK>
4345       </PHP_EXTENSION>
4346       <PHP_EXTENSION name="openssl" level="required">
4347         <FEEDBACK>
4348           <ON_ERROR message="opensslrequired" />
4349         </FEEDBACK>
4350       </PHP_EXTENSION>
4351       <PHP_EXTENSION name="tokenizer" level="optional">
4352         <FEEDBACK>
4353           <ON_CHECK message="tokenizerrecommended" />
4354         </FEEDBACK>
4355       </PHP_EXTENSION>
4356       <PHP_EXTENSION name="soap" level="optional">
4357         <FEEDBACK>
4358           <ON_CHECK message="soaprecommended" />
4359         </FEEDBACK>
4360       </PHP_EXTENSION>
4361       <PHP_EXTENSION name="ctype" level="required">
4362         <FEEDBACK>
4363           <ON_ERROR message="ctyperequired" />
4364         </FEEDBACK>
4365       </PHP_EXTENSION>
4366       <PHP_EXTENSION name="zip" level="required">
4367         <FEEDBACK>
4368           <ON_ERROR message="ziprequired" />
4369         </FEEDBACK>
4370       </PHP_EXTENSION>
4371       <PHP_EXTENSION name="zlib" level="required">
4372       </PHP_EXTENSION>
4373       <PHP_EXTENSION name="gd" level="required">
4374         <FEEDBACK>
4375           <ON_ERROR message="gdrequired" />
4376         </FEEDBACK>
4377       </PHP_EXTENSION>
4378       <PHP_EXTENSION name="simplexml" level="required">
4379         <FEEDBACK>
4380           <ON_ERROR message="simplexmlrequired" />
4381         </FEEDBACK>
4382       </PHP_EXTENSION>
4383       <PHP_EXTENSION name="spl" level="required">
4384         <FEEDBACK>
4385           <ON_ERROR message="splrequired" />
4386         </FEEDBACK>
4387       </PHP_EXTENSION>
4388       <PHP_EXTENSION name="pcre" level="required">
4389       </PHP_EXTENSION>
4390       <PHP_EXTENSION name="dom" level="required">
4391       </PHP_EXTENSION>
4392       <PHP_EXTENSION name="xml" level="required">
4393       </PHP_EXTENSION>
4394       <PHP_EXTENSION name="xmlreader" level="required">
4395       </PHP_EXTENSION>
4396       <PHP_EXTENSION name="intl" level="required">
4397         <FEEDBACK>
4398           <ON_ERROR message="intlrequired" />
4399         </FEEDBACK>
4400       </PHP_EXTENSION>
4401       <PHP_EXTENSION name="json" level="required">
4402       </PHP_EXTENSION>
4403       <PHP_EXTENSION name="hash" level="required"/>
4404       <PHP_EXTENSION name="fileinfo" level="required"/>
4405       <PHP_EXTENSION name="sodium" level="required"/>
4406       <PHP_EXTENSION name="exif" level="optional"/>
4407     </PHP_EXTENSIONS>
4408     <PHP_SETTINGS>
4409       <PHP_SETTING name="memory_limit" value="96M" level="required">
4410         <FEEDBACK>
4411           <ON_ERROR message="settingmemorylimit" />
4412         </FEEDBACK>
4413       </PHP_SETTING>
4414       <PHP_SETTING name="file_uploads" value="1" level="optional">
4415         <FEEDBACK>
4416           <ON_CHECK message="settingfileuploads" />
4417         </FEEDBACK>
4418       </PHP_SETTING>
4419       <PHP_SETTING name="opcache.enable" value="1" level="optional">
4420         <FEEDBACK>
4421           <ON_CHECK message="opcacherecommended" />
4422         </FEEDBACK>
4423       </PHP_SETTING>
4424     </PHP_SETTINGS>
4425     <CUSTOM_CHECKS>
4426       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_storage_engine" level="required">
4427         <FEEDBACK>
4428           <ON_ERROR message="unsupporteddbstorageengine" />
4429         </FEEDBACK>
4430       </CUSTOM_CHECK>
4431       <CUSTOM_CHECK file="question/engine/upgrade/upgradelib.php" function="quiz_attempts_upgraded" level="required">
4432         <FEEDBACK>
4433           <ON_ERROR message="quizattemptsupgradedmessage" />
4434         </FEEDBACK>
4435       </CUSTOM_CHECK>
4436       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_slasharguments" level="optional">
4437         <FEEDBACK>
4438           <ON_CHECK message="slashargumentswarning" />
4439         </FEEDBACK>
4440       </CUSTOM_CHECK>
4441       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_tables_row_format" level="optional">
4442         <FEEDBACK>
4443           <ON_CHECK message="unsupporteddbtablerowformat" />
4444         </FEEDBACK>
4445       </CUSTOM_CHECK>
4446       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_unoconv_version" level="optional">
4447         <FEEDBACK>
4448           <ON_CHECK message="unoconvwarning" />
4449         </FEEDBACK>
4450       </CUSTOM_CHECK>
4451       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_libcurl_version" level="optional">
4452         <FEEDBACK>
4453           <ON_CHECK message="libcurlwarning" />
4454         </FEEDBACK>
4455       </CUSTOM_CHECK>
4456       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_format" level="required">
4457         <FEEDBACK>
4458           <ON_ERROR message="unsupporteddbfileformat" />
4459         </FEEDBACK>
4460       </CUSTOM_CHECK>
4461       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_per_table" level="required">
4462         <FEEDBACK>
4463           <ON_ERROR message="unsupporteddbfilepertable" />
4464         </FEEDBACK>
4465       </CUSTOM_CHECK>
4466       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_large_prefix" level="required">
4467         <FEEDBACK>
4468           <ON_ERROR message="unsupporteddblargeprefix" />
4469         </FEEDBACK>
4470       </CUSTOM_CHECK>
4471       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_is_https" level="optional">
4472         <FEEDBACK>
4473           <ON_CHECK message="ishttpswarning" />
4474         </FEEDBACK>
4475       </CUSTOM_CHECK>
4476       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_incomplete_unicode_support" level="optional">
4477         <FEEDBACK>
4478           <ON_CHECK message="incompleteunicodesupport" />
4479         </FEEDBACK>
4480       </CUSTOM_CHECK>
4481       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_sixtyfour_bits" level="required">
4482         <FEEDBACK>
4483           <ON_ERROR message="sixtyfourbitsrequired" />
4484         </FEEDBACK>
4485       </CUSTOM_CHECK>
4486       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_max_input_vars" level="optional">
4487       </CUSTOM_CHECK>
4488       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_admin_dir_usage" level="optional">
4489         <FEEDBACK>
4490           <ON_CHECK message="iscustomadminwarnings" />
4491         </FEEDBACK>
4492       </CUSTOM_CHECK>
4493       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_xmlrpc_usage" level="optional">
4494       </CUSTOM_CHECK>
4495       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_mod_assignment" level="required">
4496       </CUSTOM_CHECK>
4497       <CUSTOM_CHECK file="lib/upgradelib.php" function="check_db_prefix_length" level="required">
4498       </CUSTOM_CHECK>
4499     </CUSTOM_CHECKS>
4500   </MOODLE>
4501 </COMPATIBILITY_MATRIX>