MDL-58746 core: Add environment check for finfo
authorAndrew Nicols <andrew@nicols.co.uk>
Mon, 1 May 2017 00:51:37 +0000 (08:51 +0800)
committerAndrew Nicols <andrew@nicols.co.uk>
Mon, 1 May 2017 01:01:21 +0000 (09:01 +0800)
admin/environment.xml
lang/en/admin.php
lib/upgradelib.php

index f875211..0730156 100644 (file)
           <ON_CHECK message="incompleteunicodesupport" />
         </FEEDBACK>
       </CUSTOM_CHECK>
+      <CUSTOM_CHECK file="lib/upgradelib.php" function="check_finfo" level="required">
+        <FEEDBACK>
+          <ON_ERROR message="finforequired" />
+        </FEEDBACK>
+      </CUSTOM_CHECK>
     </CUSTOM_CHECKS>
   </MOODLE>
 </COMPATIBILITY_MATRIX>
index 2df58eb..d17a733 100644 (file)
@@ -623,6 +623,7 @@ It is recommended to install local copy of free GeoLite2 City database from MaxM
 IP address location is displayed on simple map or using Google Maps. Please note that you need to have a Google account and apply for free Google Maps API key to enable interactive maps.';
 $string['iplookupmaxmindnote'] = 'This product includes GeoLite2 data created by MaxMind, available from <a href="http://www.maxmind.com">http://www.maxmind.com</a>.';
 $string['ishttpswarning'] = 'It has been detected that your site is not secured using HTTPS. For increased security and improved integrations with other systems is highly recommended to migrate your site to HTTPS.';
+$string['finforequired'] = 'The finfo PHP extension is now required by Moodle, in order to improve mimetype decoding.';
 $string['keeptagnamecase'] = 'Keep tag name casing';
 $string['lang'] = 'Default language';
 $string['langcache'] = 'Cache language menu';
index 2cdd6eb..4acff4c 100644 (file)
@@ -2516,3 +2516,20 @@ function check_libcurl_version(environment_results $result) {
 
     return null;
 }
+
+/**
+ * Check if the finfo class is present.
+ *
+ * @param environment_results $result object to update, if relevant.
+ * @return environment_results|null updated results or null.
+ */
+function check_finfo(environment_results $result) {
+    if (!class_exists('finfo')) {
+        $result->setInfo('finfo extension not enabled');
+        $result->setStatus(false);
+
+        return $result;
+    }
+
+    return null;
+}