- 1
[Opened] Jelix et Vbulletin...
Posted by Arnall on 08/05/2008 21:04
Bonjour à tous,
je tente d'intégrer un haut de page générer par Jelix dans un forum Vbulletin. Pour cela Vbulletin a prévu d'évaluer du code PHP à divers endroit de son code pour que l'on puisse rajouter du code PHP tiers et donc personnaliser son forum Vbulletin.
La méthode est donnée ici : http://www.vbulletin.com/docs/html/main/(..)
J'ai donc inclus ce code dans le gestionnaire de plugin de Vbulletin :
ob_start(); $_POST['module']='forum'; $_POST['action']='default:index'; chdir('/path/www/'); require_once("index.php"); // il s'agit de l'index de Jelix dans le rep /www chdir("/path/www/forumVbulletin/"); $includedphp = ob_get_contents(); ob_end_clean();
Mon controleur utilise une réponse Texte dont j'ai surchargé l'output pour ne renvoyer aucune entete HTTP ( vu que les entêtes sont déjà gérées par Vbulletin ). La variable $includedphp est ensuite incluse dans un template de Vbulletin et hop mon haut de page apparait avec les modules qui vont bien, et mon forum Vbulletin à la suite. Malheureusement pour une raison que j'ignore lorsque je tente de poster un message je me retrouve avec une page me listant une série de notice/erreurs PHP ( se rapportant à Vbulletin ) se terminant par celle ci :
[error 0] Jelix fatal error : Unknow class vB_Mail /home/ha/v2.lephoceen.fr/lib/jelix/init.php 123
Il s'agit de l'autoload de Jelix, je pourrais contourner le problème en rajoutant une clause dans l'autoload de Jelix mais je ne comprends pas comment Jelix se retrouve a vouloir charger une classe du forum Vbulletin, et seulement dans le cas ou j'essaye de poster un message... ( si je crée un nouvelle discussion tout se passe bien ...)
Je suis un peu dépassé par la chose alors si quelqu'un à une idée de piste ou je devrais regarder...je l'en remercie.
[Opened] Re: Jelix et Vbulletin...
Posted by Arnall on 08/06/2008 00:22
Je me réponds à moi même :)
autoload étant une fonction primaire de PHP elle est appelé par d'autres fonctions PHP comme class_exists. Or class_exists est utilisé par Vbulletin pour charger la classe vB_Mail, du coup class_exists déclenche autoload et comme __autoload a été écrite dans Jelix et que Jelix ne sait pas quoi faire de vB_Mail cela génère une erreur.
J'ai donc juste rajouté
if ($class =='vB_Mail'){return;}
dans l'__autoload de Jelix et tout roule.
Si vous voyez une solution plus propre qui m'évite de toucher à un fichier de Jelix je suis preneur. Pour l'heure je vais me coucher !
[Opened] Re: Jelix et Vbulletin...
Posted by laurentj on 08/11/2008 10:36
Salut,
Si vous voyez une solution plus propre qui m'évite de toucher à un fichier de Jelix je suis preneur
faire un include systématique de la classe en question ? ce serait plus propre que de hacker jelix ;-)
- 1