[Résolu]Parser les posts à l'affichage

Forums consacré à la conception de site web : W3C (HTML, CSS, XML, XSL etc.), langages de programmation (PHP, JavaScript, etc.), bases de données (MYSLQ ..), scripts, outils de développement.

Modérateur: Modérateurs

[Résolu]Parser les posts à l'affichage

Messagede MendelYev » Jeu Nov 25, 2010 2:15 am

Bonjour,
J'ai 3 problèmes à vous exposer mais voila le plus important :
J'ai développé une application php qui dialogue avec un forum phpBB. Certains posts sont interprétés par l'application et inversement l'application soumet des posts à phpBB. L'application utilise phpmathpublisher pour afficher les formules depuis les balises [m] et [/m] et il me faudrait en faire de même sur le forum avec un post soumis par l'application. En cherchant sur le forum j'ai trouvé que certains utilisaient un BBcode appelant une page php intégrant phpmathpublisher avec les infos en paramètre GET dans l'URL, mais cela condamne le signe "+" et ça n'est vraiment pas envisageable dans mon cas. Y aurait-il moyen de parser le message juste avant l'affichage en modifiant une des fonction de phpBB ? Je ne trouve pas la quelle éditer !

J'ai essayé d'introduire le code dans message_parser.php mais cela n'a fonctionné que pour l'affichage de l'aperçu des messages (sur la bonne voie ?). Dans le viewpost ça ne fonctionne pas.
J'ai aussi essayé de l'introduire dans gererate_text_for_display(), mais apparemment cette fonction était réservée à d'autres messages que les posts.
Je cherche à placer le code juste avant l'affichage à l'écran (après parsing des bbcode, des smileys...) et non à l'enregistrement du post dans la table mysql.

2 autres petites questions : pour faciliter le dialogue avec l'application j'ai défini en javascrpit self.name="phpBB" dans le overall_header.htm, y a-t-il une "contre indication" à cette manipulation ? Est-ce que cela peut bloquer certaines fonctions de phpBB ?
Dernière question : en ajoutant des posts, topics, users... j'ai besoin de récupérer l'ID de ces ajouts pour les intégrer dans une table MySQL de l'application et pour cela je n'ai trouvé qu'une solution : collecter l'ID de la dernière ligne de la table après chaque ajout. N'y aurait-il pas une méthode plus propre ?

Merci d'avance pour toute l'aide que vous pourriez m'apporter.
Dernière édition par MendelYev le Jeu Nov 25, 2010 9:55 pm, édité 2 fois.
MendelYev
 
Messages: 18
Inscription: Jeu Nov 25, 2010 2:12 am

Publicité

Re: Parser les posts à l'affichage

Messagede gowap » Jeu Nov 25, 2010 8:52 pm

MendelYev a écrit:En cherchant sur le forum j'ai trouvé que certains utilisaient un BBcode appelant une page php intégrant phpmathpublisher avec les infos en paramètre GET dans l'URL, mais cela condamne le signe "+" et ça n'est vraiment pas envisageable dans mon cas. Y aurait-il moyen de parser le message juste avant l'affichage en modifiant une des fonction de phpBB ?

Il "suffit" d'encoder ta chaine avant de la balancer en paramètre de l'url, ce qui evitera les problemes des "+" qui deviennent des espaces.
Via le bbcode, tu peux définir comme remplacement un script en javascript qui avant d'appeler ta page phpmathpublisher , encodera l'url avec la fonction encodeURIComponent

J'ai testé ca vite fait :
creation bbcode [m] avec
Code: Tout sélectionner
[m]{TEXT}[/m]

et code de remplacement :
Code: Tout sélectionner
<script type="text/javascript">
var m = encodeURIComponent("{TEXT}");
document.write('<script type="text/javascript" src="m.php?m=' +  m + '"></scr' + 'ipt>');
</script>


encodage du texte math dans la variable m, puis appel page externe (appelée m.php dans mon exemple) avec m=.... en query string

a toi ensuite de gérer le code phpmathpublisher dans la page appelée, moi j'ai testé avec le code suivant qui ne fait rien d'autre que réafficher le texte entre les balises du bbcode
Code: Tout sélectionner
<?php

$var=$_GET['m'];

print "document.write('" . $var . "');";

?>


bon, par contre, c'est bricolé a l'arrache sur le coin d'une nappe hein, y a de fortes chances que s'il y a des apostrophes ou guillemets dans ton texte math, il faille rajouter du code javascript/php pour gérer correctement ca, mais au moins tu as une base fonctionnelle qui ne touche pas au code phpbb.

en ajoutant des posts, topics, users... j'ai besoin de récupérer l'ID de ces ajouts pour les intégrer dans une table MySQL de l'application et pour cela je n'ai trouvé qu'une solution : collecter l'ID de la dernière ligne de la table après chaque ajout. N'y aurait-il pas une méthode plus propre ?
L'ajout de posts/topics est censé se faire en utilisant la fonction submit_post de phpbb qui te retourne les id dont tu as besoin.
Gravure-News : la communauté francophone de la gravure de CD/DVD et son forum d'entraide.
Avatar de l’utilisateur
gowap
phpBB SEO Team
phpBB SEO Team
 
Messages: 1510
Inscription: Dim Mai 07, 2006 10:56 pm

Re: Parser les posts à l'affichage

Messagede MendelYev » Jeu Nov 25, 2010 9:54 pm

Merci beaucoup ! Je crois en effet que ce sera plus simple comme ça.
MendelYev
 
Messages: 18
Inscription: Jeu Nov 25, 2010 2:12 am

Re: [Résolu]Parser les posts à l'affichage

Messagede MendelYev » Sam Nov 27, 2010 10:45 am

Finalement je ne sait pas si c'est ce qu'il y a de mieux : la page php appelée doit décoder la chaîne et je ne trouve pas de fonction native dans php qui le fasse. Il y a bien rawurldecode() mais qui n'est pas compatible avec l'urlencode de javascript (j'ai essayé d'adapter mais à chaque fois 1 caractère n'est plus compatible). Je me suis penché sur un encodage base64, sauf que le javascript n'a plus aucune effet une fois entré dans le bbcode (variables déjà utilisées par phpBB ??) et cela commencerait à faire lourd pour des pages avec une cinquantaine de formules...
MendelYev
 
Messages: 18
Inscription: Jeu Nov 25, 2010 2:12 am

Re: [Résolu]Parser les posts à l'affichage

Messagede gowap » Sam Nov 27, 2010 11:36 am

Tu peux donner un exemple de chaine math qui aurait besoin d'être décodée à l'arrivée dans la page php ?
Quand j'ai testé avec un exemple du site PhpMathPublisher (qui est juste down la maintenant), expression dans laquelle il y avait de tout : {, +, ^ ... mon bbcode d'exemple me réaffichait bien le code sans différence par rapport avec ce qui était soumis.
Gravure-News : la communauté francophone de la gravure de CD/DVD et son forum d'entraide.
Avatar de l’utilisateur
gowap
phpBB SEO Team
phpBB SEO Team
 
Messages: 1510
Inscription: Dim Mai 07, 2006 10:56 pm

Re: [Résolu]Parser les posts à l'affichage

Messagede MendelYev » Sam Nov 27, 2010 3:29 pm

Les caractères suivants ne passent pas : & < > ' et surement d'autres. J'obtiens leur entité html (&amp;) et les htmlspecialchars_decode reste sans effet dessus...
MendelYev
 
Messages: 18
Inscription: Jeu Nov 25, 2010 2:12 am

Re: [Résolu]Parser les posts à l'affichage

Messagede gowap » Sam Nov 27, 2010 4:17 pm

Si je pars du texte "à probleme" suivant :
Code: Tout sélectionner
[m]mon texte "&" un 'caractere' > special[/m]


l'url encodée va etre
Code: Tout sélectionner
m.php?m=mon%20texte%20%26quot%3B%26amp%3B%26quot%3B%20un%20%26%2339%3Bcaractere%26%2339%3B%20%26gt%3B%20special


sous php :
$var = $_GET['m'];
vaudra :
Code: Tout sélectionner
mon texte &quot;&amp;&quot; un &#39;caractere&#39; &gt; special


la dessus, un htmlspecialchars_decode($var,ENT_QUOTES) donne :
Code: Tout sélectionner
mon texte "&" un 'caractere' > special

C'est bien la chaine dont on a besoin avant d'en faire une image...
Gravure-News : la communauté francophone de la gravure de CD/DVD et son forum d'entraide.
Avatar de l’utilisateur
gowap
phpBB SEO Team
phpBB SEO Team
 
Messages: 1510
Inscription: Dim Mai 07, 2006 10:56 pm

Re: [Résolu]Parser les posts à l'affichage

Messagede MendelYev » Dim Déc 05, 2010 6:42 pm

Désolé de ne pas avoir répondu.
J'ai trouvé quel était le problème : le texte était bien restitué mais mathpublisher mettait en titre de la balise <img> le texte lui-même. Donc en plaçant des apostrophes dans la formule, le titre était tronqué et la balise <img> n'était pas refermée.

Merci pour tout !
MendelYev
 
Messages: 18
Inscription: Jeu Nov 25, 2010 2:12 am

Re: [Résolu]Parser les posts à l'affichage

Messagede gowap » Dim Déc 05, 2010 8:42 pm

Nous avons fait progresser la science :P
Gravure-News : la communauté francophone de la gravure de CD/DVD et son forum d'entraide.
Avatar de l’utilisateur
gowap
phpBB SEO Team
phpBB SEO Team
 
Messages: 1510
Inscription: Dim Mai 07, 2006 10:56 pm


Retourner vers Développement de site

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: VoilaBot [Bot] et 11 invités