diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php index 57a437266a4..63b4210ba72 100644 --- a/htdocs/admin/modules.php +++ b/htdocs/admin/modules.php @@ -33,20 +33,24 @@ require("./pre.inc.php"); if (!$user->admin) accessforbidden(); - +/* + * Actions + */ if ($_GET["action"] == 'set' && $user->admin) { - Activate($_GET["value"]); - - Header("Location: modules.php?spe=".$_GET["spe"]); + $result=Activate($_GET["value"]); + $mesg=''; + if ($result) $mesg=$result; + Header("Location: modules.php?spe=".$_GET["spe"]."&mesg=".urlencode($mesg)); } if ($_GET["action"] == 'reset' && $user->admin) { - UnActivate($_GET["value"]); - - Header("Location: modules.php?spe=".$_GET["spe"]); + $result=UnActivate($_GET["value"]); + $mesg=''; + if ($result) $mesg=$result; + Header("Location: modules.php?spe=".$_GET["spe"]."&mesg=".urlencode($mesg)); } @@ -55,7 +59,7 @@ if ($_GET["action"] == 'reset' && $user->admin) */ function Activate($value) { - global $db, $modules; + global $db, $modules, $langs; $modName = $value; @@ -65,6 +69,15 @@ function Activate($value) $file = $modName . ".class.php"; include_once("../includes/modules/$file"); $objMod = new $modName($db); + + // Test si version PHP ok + $verphp=versionphp(); + $vermin=$objMod->phpmin; + if (is_array($vermin) && versioncompare($verphp,$vermin) < 0) + { + return $langs->trans("ErrorModuleRequirePHPVersion",versiontostring($vermin)); + } + $objMod->init(); } @@ -80,6 +93,7 @@ function Activate($value) UnActivate($objMod->conflictwith[$i],0); } + return 0; } @@ -111,30 +125,26 @@ function UnActivate($value,$requiredby=1) } } - Header("Location: modules.php"); + return 0; } - +/* + * Affichage page + */ + llxHeader("",""); -if (!$_GET["spe"]) -{ - $hselected = 0; -} -else -{ - $hselected = 1; -} - $h = 0; + $head[$h][0] = DOL_URL_ROOT."/admin/modules.php?spe=0"; $head[$h][1] = $langs->trans("ModulesCommon"); - +if (!$_GET["spe"]) $hselected=$h; $h++; $head[$h][0] = DOL_URL_ROOT."/admin/modules.php?spe=1"; $head[$h][1] = $langs->trans("ModulesSpecial"); +if ($_GET["spe"]) $hselected=$h; $h++; dolibarr_fiche_head($head, $hselected, $langs->trans("Modules")); @@ -149,7 +159,11 @@ else print $langs->trans("ModulesSpecialDesc")."
\n"; } - +if ($_GET["mesg"]) +{ + $mesg=urldecode($_GET["mesg"]); + print '
'.$mesg.'
'; +} print "
\n"; print "\n"; diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 8187d33a798..7894b64f191 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -11,6 +11,7 @@ InternalUsers=Internal users ExternalUsers=External users GlobalSetup=Global setup GUISetup=GUI setup +ErrorModuleRequirePHPVersion=Error, this module require PHP version %s or higher DictionnarySetup=Dictionnary setup DisableJavascript=Disable javascript functions NextValue=Next value diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index 46540eeb3e1..c14d78294ed 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -11,6 +11,7 @@ InternalUsers=Utilisateurs internes ExternalUsers=Utilisateurs externes GlobalSetup=Général GUISetup=Interface +ErrorModuleRequirePHPVersion=Erreur, ce module requiert une version %s ou supérieure de PHP DictionnarySetup=Dictionnaires DisableJavascript=Désactiver les fonctions javascript NextValue=Prochaine valeur diff --git a/htdocs/lib/functions.inc.php b/htdocs/lib/functions.inc.php index af0952548cc..ec2624aa13b 100644 --- a/htdocs/lib/functions.inc.php +++ b/htdocs/lib/functions.inc.php @@ -39,6 +39,44 @@ */ +/** + \brief Renvoi une version en chaine depuis une version en tableau + \param versionarray Tableau de version (vermajeur,vermineur,autre) + \return string Chaine version +*/ +function versiontostring($versionarray) +{ + $string='?'; + if (isset($versionarray[0])) $string=$versionarray[0]; + if (isset($versionarray[1])) $string.='.'.$versionarray[1]; + if (isset($versionarray[2])) $string.='.'.$versionarray[2]; + return $string; +} + +/** + \brief Compare 2 versions + \param versionarray1 Tableau de version (vermajeur,vermineur,autre) + \param versionarray2 Tableau de version (vermajeur,vermineur,autre) + \return int <0 si versionarray1>versionarray2, 0 si =, >0 si versionarray1>versionarray2 +*/ +function versioncompare($versionarray1,$versionarray2) +{ + // \todo + + return 0; +} + + +/** + \brief Compare 2 versions + \return array Tableau de version (vermajeur,vermineur,autre) +*/ +function versionphp() +{ + return split('\.',PHP_VERSION); +} + + /** \brief Renvoi vrai si l'email est syntaxiquement valide \param address adresse email (Ex: "toto@titi.com", "John Do ")