dolibarr-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Dolibarr-dev] Pas de test avant l'instanciation d'une classe de mod


From: Pierre Morin
Subject: Re: [Dolibarr-dev] Pas de test avant l'instanciation d'une classe de module incluse
Date: Tue, 20 Apr 2010 16:56:32 +0200

En effet, je suis dans le cas où la classe est mal nommée.

Mais de toutes manières, il ne faut pas tenir compte de mes codes mis dans mon e-mail car ce n'était pas la bonne version.

Au final, le problème est le même (pas de test avant instanciation) mais le code à prendre en compte est le suivant (à partir de la ligne 80) :
+-----------------------------------------------------------------------------------------------------------------------------------+
if ($modName)
{
$file = $modName . ".class.php";
foreach ($conf->file->dol_document_root as $dol_document_root)
{
address@hidden($dol_document_root."/includes/modules/".$file);
if ($found) break;
}

$objMod = new $modName($db);
+-----------------------------------------------------------------------------------------------------------------------------------+
Et un code qui-irait-bien pour régler ce problème :
+-----------------------------------------------------------------------------------------------------------------------------------+
if ($modName)
{
    $file = $modName . ".class.php";
    foreach ($conf->file->dol_document_root as $dol_document_root)
    {
        address@hidden($dol_document_root."/includes/modules/".$file);
        if ($found) break;
    }

    if(class_exists($modName)) $objMod = new $modName($db);
    else
...
+-----------------------------------------------------------------------------------------------------------------------------------+


Bien cordialement,


-- 
Pierre Morin
address@hidden


Le mardi 20 avril 2010 à 16:33 +0200, Régis Houssin a écrit :
Il y a une vérification de l’existence du fichier juste avant, c’est justement le nom du fichier qui détermine le nom de la classe:
modMymodule.class.php  = class modMymodule

Donc si il y erreur c’est que la classe a été mal nommée




Le 20/04/10 16:03, « Pierre Morin » <address@hidden> a écrit :

Bonjour,

Je viens de constater qu'il y a un gros problème dans "htdocs/admin/modules.php". En effet, à la ligne 72, une classe est instanciée avant même avoir testé que l'inclusion de la ligne précédante avais bien fonctionnée (ou, tout du moins, que la classe à instancier était bien déclarée quelque part).

Voici le code incriminé :
+------------------------------------------------------------------------------------------------------------------+
if ($modName)
{
    $file = $modName . ".class.php";
    include_once(DOL_DOCUMENT_ROOT."/includes/modules/$file");
    $objMod = new $modName($db);
+------------------------------------------------------------------------------------------------------------------+
Voici une mini-ébauche de ce qui pourrait régler ce problème :
+------------------------------------------------------------------------------------------------------------------+
if ($modName)
{
    $file = $modName . ".class.php";
    include_once(DOL_DOCUMENT_ROOT."/includes/modules/$file");
    if(class_exists($modName)) $objMod = new $modName($db);
    else
+------------------------------------------------------------------------------------------------------------------+

Par contre, je ne sais pas trop quoi mettre après le "else"...

Et j'avoue que j'ai un peu peur de toucher à quelque chose d'aussi central que l'activation des modules Dolibarr donc je préfère vous faire part de ma découverte.

Bien cordialement,


--
Régis Houssin
------------------------------------------------------
Cap-Networks
30, Quai de Verdun
71700 Tournus
Tél. +33 6 33 02 07 97
Web: http://www.cap-networks.com
Email: address@hidden

Développeur Dolibarr : address@hidden
Portail francophone : www.dolibarr.fr
Offres SaaS de Dolibarr : www.dolibox.fr
Development platform : www.dolibarr.pro
------------------------------------------------------
_______________________________________________
Dolibarr-dev mailing list
address@hidden
http://lists.nongnu.org/mailman/listinfo/dolibarr-dev

reply via email to

[Prev in Thread] Current Thread [Next in Thread]