logo

NPDS : Gestion de contenu et de communauté


Content & Community Management System (CCMS) robuste, sécurisé, complet, performant, parlant vraiment français, libre (Open-Source) et gratuit.
43 visiteur(s) et 0 membre(s) en ligne.
Activité du Site

Pages vues depuis 25/05/2001 : 111 398 115

  • Nb. de membres 8 701
  • Nb. d'articles 1 695
  • Nb. de forums 26
  • Nb. de sujets 8
  • Nb. de critiques 92

Top 10  Statistiques

Index du forum »»  Le coin des codeurs »» Cannot redeclare class togglediv...

Cannot redeclare class togglediv...#24401

4Contributeur(s)
FURAX69HotfirenetJireckdeveloppeur
3 Modérateur(s)
developpeurjpbJireck
FURAX69 FURAX69icon_post
Bonjour à tous,

Suite à l'activation du "marquetapage" qui utilise "class togglediv", j'ai un souci dans le module "tdgalerie"... En cliquant sur "Arborescence" l'erreur suivante se déclenche...

"Fatal error: Cannot redeclare class togglediv in /homez.64/magicoas/www/modules/td-galerie/retro-compat/togglediv.class.php on line 28"

Comment faire pour l'éviter le plus simplement possible ?
Hotfirenet Hotfireneticon_post
le problème est que a classe toogle a deja été déclaré, c'est pour ca que ca te fait une erreur ....
FURAX69 FURAX69icon_post
Oui, ça j'avais compris... Le message d'erreur est clair ! :-(

Mais comment résoudre le prob ?
Sachant que marquetapage utilise cette class en provenance de /lib/togglediv.class.php
et td-galerie une class du même nom mais un peu différente (à priori) en provenance de /modules/td-galerie/retro-compat/togglediv.class.php



Message édité par : FURAX69 / 07-06-2009 20:36

Jireck Jireckicon_post
tu as bien



!include!_once("lib/togglediv.class.php");



dans marquetapage.php
FURAX69 FURAX69icon_post
Marche pas... Cela provoque :

Fatal error: Call to undefined function: _once() in /homez.64/magicoas/www/modules/marquetapage/marquetapage.php on line 30

à l'affichage du bloc marquetapage ! :-?

NB : A quoi sert d'ajouter les !! sur le !include! ?

Message édité par : FURAX69 / 09-06-2009 08:40

Jireck Jireckicon_post
explication :

les ! sont rajouté par l'antihack du forum

ton probleme vient que la lib togglediv est inclue plusieurs fois donc probleme

il faut qu'elle soit incluse qu'un fois, il faut donc que tu cherche ou elle est incluse et mettre _once au !include! pour qu'il n'inclue qu'un fois la lib
FURAX69 FURAX69icon_post
Le "once" figure déjà dans les deux appels :

J'ai ça dans l'adim de tg-galerie (adm_fun.php) :
!include!_once ("modules/$ModPath/retro-compat/togglediv.class.php");

Et ça dans marquetapage.php :
!include!_once("lib/togglediv.class.php");

Pourtant, cela déclenche ce refus...
"Fatal error: Cannot redeclare class togglediv in /homez.64/magicoas/www/modules/td-galerie/retro-compat/togglediv.class.php on line 28"

Hotfirenet Hotfireneticon_post
y'a un conflit entre les 2 librairie, a voir si ce produit le meme effet chez d'autre personne ..
developpeur developpeuricon_post
faut modifier l'appel se trouvant dans marquetapage je dirais pour qu'il pointe au même endroit que td-galerie / le _once devrait marcher alors
FURAX69 FURAX69icon_post
Citation : developpeur 

faut modifier l'appel se trouvant dans marquetapage je dirais pour qu'il pointe au même endroit que td-galerie / le _once devrait marcher alors  


C'est ce que j'ai pensé... Mais voila, les deux "togglediv.class.php" ne sont tout à fait pas identiques !!!
Et voici ce qu'il se passe si j'utilise le fichier de td-galerie...





Warning: main(modules//retro-compat/togglediv.class.php) [function.main]: failed to open stream: No such file or directory in /homez.64/magicoas/www/modules/marquetapage/marquetapage.php on line 17

Warning: main() [function.!include!]: Failed opening 'modules//retro-compat/togglediv.class.php' for inclusion (!include!_path='.:/usr/local/lib/php') in /homez.64/magicoas/www/modules/marquetapage/marquetapage.php on line 17

Fatal error: Cannot instantiate non-existent class: togglediv in /homez.64/magicoas/www/modules/marquetapage/marquetapage.php on line 50



Donc clairement, les deux fichiers portent le même nom, mais sont radicalement différents... Une boulette ça ! :-(

Message édité par : FURAX69 / 10-06-2009 20:34

FURAX69 FURAX69icon_post
Que pensez-vous de ce bout de code de td-galerie qui prépare le fonction arborescence (celle qui merde) ?



function PrintArbo() {
   global $ModPath, $ModStart, $ThisFile, $NPDS_Prefix;

   // Retro compatibilité SABLE
   if (!function_exists("MM_img")) {
      !include!_once ("modules/$ModPath/retro-compat/togglediv.class.php");
      echo "\n<script type=\"text/!javascript!\" src=\"modules/$ModPath/retro-compat/cookies.js\" language=\"!javascript!\"></script>\n";
   } else {
      !include!_once ("lib/togglediv.class.php");
   }
   // Retro compatibilité SABLE
...

Hotfirenet Hotfireneticon_post
perso je suis pas pour cette librairie, maintenant si tu peux t'en penser c mieu
developpeur developpeuricon_post
le problème n'est pas dans le code mais dans l'!include! : "modules//retro-compat". le // n'est pas normal
FURAX69 FURAX69icon_post
Bon, j'ai finalement fini par résoudre mon soucis de manière radicale...

J'ai dupliqué togglediv.class.php en faisant un togglediv2.class.php et en adaptant bien sûr les noms des variables en ajoutant le "2"...

Plus de conflits et tout fonctionne :=!