[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / ecrire / inc / charger_php_extension.php
index 35f1722..f9ab900 100644 (file)
@@ -1,21 +1,37 @@
 <?php
 
-if (!defined('_ECRIRE_INC_VERSION')) return;
+/**
+ * Chargement d'une extension PHP
+ *
+ * @package SPIP\Core\Outils
+ **/
 
-// cette fonction (adaptee de phpMyAdmin)
-// permet de charger un module php
-// dont le nom est donne en argument (ex: 'mysql')
-// retourne true en cas de succes
-//
-// 3 etapes :
-// - 1) si le module est deja charge, on sort vainqueur
-// - 2) on teste si l'on a la possibilite de charger un module
-// via la meta 'dl_allowed'. Si elle n'est pas renseignee, 
-// elle sera cree en fonction des parametres de php
-// - 3) si l'on peut, on charge le module par la fonction dl()
-//
-// http://doc.spip.org/@inc_charger_php_extension_dist
-function inc_charger_php_extension_dist($module){
+if (!defined('_ECRIRE_INC_VERSION')) {
+       return;
+}
+
+/**
+ * Permet de charger un module PHP dont le nom est donné en argument
+ *
+ * Fonction adaptée de phpMyAdmin.
+ *
+ * Trois étapes :
+ *
+ * 1) si le module est deja charge, on sort vainqueur
+ * 2) on teste si l'on a la possibilité de charger un module
+ *    via la meta `dl_allowed`. Si elle n'est pas renseignée,
+ *    elle sera crée en fonction des paramètres de php
+ * 3) si l'on peut, on charge le module par la fonction `dl()`
+ *
+ * @note
+ *     La fonction `dl()` n'est plus présente à partir de PHP 5.3.
+ *
+ * @param string $module
+ *     Nom du module à charger (tel que 'mysql')
+ * @return bool
+ *     true en cas de succes
+ **/
+function inc_charger_php_extension_dist($module) {
        if (extension_loaded($module)) {
                return true;
        }
@@ -23,9 +39,10 @@ function inc_charger_php_extension_dist($module){
        // A-t-on le droit de faire un dl() ; si on peut, on memorise la reponse,
        // lourde a calculer, dans les meta
        if (!isset($GLOBALS['meta']['dl_allowed'])) {
-               if (!@ini_get('safe_mode') 
-                 && @ini_get('enable_dl')
-                 && @function_exists('dl')) {
+               if (!@ini_get('safe_mode')
+                       && @ini_get('enable_dl')
+                       && @function_exists('dl')
+               ) {
                        ob_start();
                        phpinfo(INFO_GENERAL); /* Only general info */
                        $a = strip_tags(ob_get_contents());
@@ -54,15 +71,7 @@ function inc_charger_php_extension_dist($module){
                return false;
        }
 
-       /* Once we require PHP >= 4.3, we might use PHP_SHLIB_SUFFIX here */
-       if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
-               $module_file = 'php_' . $module . '.dll';
-       } elseif (PHP_OS=='HP-UX') {
-               $module_file = $module . '.sl';
-       } else {
-               $module_file = $module . '.so';
-       }
+       $prefix = (PHP_SHLIB_SUFFIX === 'dll') ? 'php_' : '';
 
-       return @dl($module_file);
+       return @dl($prefix . $module_file . PHP_SHLIB_SUFFIX);
 }
-?>