FonfonBlog, CMS Blog - version 1.0 Alpha

ViPHP
ViPHP | 5462 Messages

17 nov. 2010, 19:06

tu peux savoir si la requete est en ajax ou pas avec une petite fonction genre
function isAJAX()
{
    if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest')
    { 
        return true; 
    }
    		
    return false; 
}

Eléphant du PHP | 398 Messages

19 nov. 2010, 10:09

Je testerai vos solutions mais là comme ça en regardant je ne vois pas trop comment le traitement est décidé : si on passe par AJAX si JS activé ou traitement classique si JS désactivé.
Quoi qu'il arrive, ça va passer par la page administration/ajout/mail.html (qui correspond au fichier views/ajax_ajout.php?type=mail).

Donc si je met une variable dans mon formulaire de type :
<input type="hidden" name="JSOff" value="1" />
mon script PHP peut regarder si cette variable existe ou pas, si elle existe, je sais que je ne suis pas passé par AJAX donc je fais un header redirigeant sur ma page.ça m a l'air de tenir la route.

PS : je disais une version de dispo à la fin de semaine...il faut plutôt compter fin de semaine prochaine...

TODO :
- [CORRIGE]Ajouter la balise [quote][/quote] dans l editeur WYSIWIG
- Ajouter la balise dans appControl.php
- [CORRIGE]Enlever l'alert dans ajout commentaire
- [CORRIGE]Modifier page credit.html (non prioritaire)
- [CORRIGE]Debug Signalement de commentaire
- Accessibilité !! (très important)
- [CORRIGE]Modifier CSS commentaires et bloc commentaire
----------------------------------------------------------------------------------
https://astro-otter.space - Discover wonders and mysteries of Universe

Eléphant du PHP | 398 Messages

25 nov. 2010, 16:48

Je vais modifier mes classes sur la connexion à la BD, donc la sortie d'une version pré-finale ne sera pas pour cette semaine...je sais vous êtes tous déçus mais "this the law" comme dirait le sergent Pepper.

Toutes mes classes héritent de la classe appControl.php. Et toutes mes classes (sauf tpete 2) ont dans leur constructeur ceci :
function __construct(){
	$this->m_nAccesBD = new connexionBD();
}
Ce que je veux faire, c est déplacer ça dans le constructeur de appControl(), comme ça ça sera appelé qu'à un seul endroit, et dans cette classe, faire une méthode du style function machin($sql){ } qui sera appelé dans chacune de mes méthodes ou j'ai un traitement SQL.
Cette méthode aura al connexion BD, l'envoie de la requête SQL envoyé en paramètres, et ptete la récupération des données.

Je vais tester ce soir et si c est satisfaisant, j'étends ça à tout :D
----------------------------------------------------------------------------------
https://astro-otter.space - Discover wonders and mysteries of Universe

Eléphant du PHP | 398 Messages

29 nov. 2010, 17:17

J'ai un petit soucis avec le BB Code et les balises de type
[/html ], [sql ][/sql ], [php ][/php ] etc...
Je voudrais leur faire appliquer la coloration syntaxique de la librairie PEAR Text_Highlighter mais je ne sais pas du tout comment coupler les deux systèmes.

Pour parser le code BB et lui faire ressortir du html, je fonctionne comme ceci : 
[php]
function bbcodeParse($texte){
	$texte = preg_replace('`\[code\](.+)\[/code\]`iUs','$1',$texte);
}
[/php]
et pour faire afficher de la coloration syntaxique, la librairie s'utilise de cette façon :
[php]
$hlSQL =& Text_Highlighter::factory("SQL");
$hlSQL->setRenderer(new Text_Highlighter_Renderer_Console);
echo $hlSQL->highlight("SELECT * FROM some_table WHERE id = 12");
[/php]

le soucis est comment interpréter du [sql]select * from truc[/sql ] dans ma fonction bbcodeParse.
J ai essayé de récupérer le contenu de la balise en faisant un preg_match du genre :
[php]
if(preg_match('`\[sql\](.+)\[/sql\]`iUs',$texte)){
	$hl =& Text_Highlighter::factory("SQL");
	$hl->setRenderer(new Text_Highlighter_Renderer_Console);
	$texte = preg_replace('`\[sql](.+)\[/sql\]`iUs',$hlSQL->highlight($1),$texte);
}
[/php]
mais ça ne fonctionne pas et c'est même normal que ça fonctionne pas  :D . Sauf que je ne vois aps du tout comment contourner le problème.
----------------------------------------------------------------------------------
https://astro-otter.space - Discover wonders and mysteries of Universe

ViPHP
ViPHP | 5462 Messages

29 nov. 2010, 17:22

avec preg_replace_callback
$texte = preg_replace_callback('`\[sql](.+)\[/sql\]`iUs', array($hlSQL, 'highlight'), $texte);
par contre je déconseille l'utilisation du ` : http://www.php.net/manual/fr/language.o ... cution.php

Eléphant du PHP | 398 Messages

29 nov. 2010, 17:25

avec preg_replace_callback
$texte = preg_replace_callback('`\[sql](.+)\[/sql\]`iUs', array($hlSQL, 'highlight'), $texte);
par contre je déconseille l'utilisation du ` : http://www.php.net/manual/fr/language.o ... cution.php
Je ne connaissais pas cette fonction. je testerai ce soir avec plaisir, sinon j'ai trouvé un forum ou apaprement le mec a le même soucis : http://freak.no/forum/archive/index.php/t-164433.html, sauf que personnelement...je ne parle pas le norvégien :D (d'ailleurs si y'a un norvégien dans le coin, il pourrait peut-être traduire ^^)
----------------------------------------------------------------------------------
https://astro-otter.space - Discover wonders and mysteries of Universe

Eléphant du PHP | 398 Messages

29 nov. 2010, 19:58

Voila comment j'ai modifié avec du texte placé enter des balises [ sql] et [ /sql] :
 	if(preg_match('#\[sql\](.*)\[\/sql\]#sU',$texte)){
		$rendererSql =& new Text_Highlighter_Renderer_Html(array("numbers" => HL_NUMBERS_LI, "tabsize" => 4));
		$hlSql =& Text_Highlighter::factory("SQL");
		$hlSql->setRenderer($rendererSql);
		$texte = preg_replace_callback('`\[sql](.+)\[/sql\]`iUs', array($hlSql, 'highlight'), $texte);
	}
Le soucis c'est que ça me retourne rien, mais surtout que je n'ai aucun message d'erreur, rien...
Mais avec le preg_replace_callback, je ne comprends pas comment le contenu entre les balises sql est parsé :?
----------------------------------------------------------------------------------
https://astro-otter.space - Discover wonders and mysteries of Universe

ViPHP
ViPHP | 3607 Messages

29 nov. 2010, 19:59

A noter que pour récupérer les résultats de captures d'un preg_match(), il faut renseigner le troisième paramètre...
if(preg_match('...',$texte,$captures)){

    print_r($captures);
}

Eléphant du PHP | 398 Messages

29 nov. 2010, 20:07

A noter que pour récupérer les résultats de captures d'un preg_match(), il faut renseigner le troisième paramètre...
if(preg_match('...',$texte,$captures)){

    print_r($captures);
}
le preg_match me sert en fait à savoir quel type de balise BBcode est utilisée. Je ne compte pas me servir du résultat renvoyé :)
----------------------------------------------------------------------------------
https://astro-otter.space - Discover wonders and mysteries of Universe

Eléphant du PHP | 398 Messages

30 nov. 2010, 16:30

Et de cette façon, ça peut fonctionner ?
 	if(preg_match('#\[sql\](.*)\[\/sql\]#sU',$texte, $matches)){
		$rendererSql =& new Text_Highlighter_Renderer_Html(array("numbers" => HL_NUMBERS_LI, "tabsize" => 4));
		$hlSql =& Text_Highlighter::factory("SQL");
		$hlSql->setRenderer($rendererSql);
		$codeSql = $hlSql->highlight($matches[0]);
		$texte = preg_replace('`\[sql](.+)\[/sql\]`iUs', $codeSql, $texte);
	}
ps : étant au taff, je ne peux pas coder sur mon CMS ^^
----------------------------------------------------------------------------------
https://astro-otter.space - Discover wonders and mysteries of Universe

ViPHP
ViPHP | 5462 Messages

30 nov. 2010, 16:46

le preg_callback ca marche pas ?

Eléphant du PHP | 398 Messages

30 nov. 2010, 16:52

le preg_callback ca marche pas ?
En tout cas, pas de la façon ou je l'ai fait.
cf : vos-contributions/fonfonblog-cms-blog-v ... ml#p343202

Dans la solution que tu m as proposé, je dois passer un paramètre dans la fonction highlight(), or avec le preg_callback, il ne l'ai pas. Je ne sais pas trop comment passer le $1 issu de preg_replace.
Comme ça peut-être :
$texte = preg_replace_callback('`\[sql](.+)\[/sql\]`iUs', array($hlSql, 'highlight($1)'), $texte);
?
----------------------------------------------------------------------------------
https://astro-otter.space - Discover wonders and mysteries of Universe

ViPHP
ViPHP | 5462 Messages

30 nov. 2010, 17:07

pas besoin de faire ca, c'est les groupes les paramètres

c'est bien : array($hlSql, 'highlight')

Eléphant du PHP | 398 Messages

30 nov. 2010, 17:31

pas besoin de faire ca, c'est les groupes les paramètres

c'est bien : array($hlSql, 'highlight')
je comprends pas alors comment est passé dans highlight, le contenu des balises
.
----------------------------------------------------------------------------------
https://astro-otter.space - Discover wonders and mysteries of Universe

ViPHP
ViPHP | 5462 Messages

30 nov. 2010, 17:32

pas besoin de faire ca, c'est les groupes les paramètres

c'est bien : array($hlSql, 'highlight')
je comprends pas alors comment est passé dans highlight, le contenu des balises
.
parce que les paramètres de la fonction correspondent au groupe :wink: