FluxBB.fr

Le site des utilisateurs francophones de FluxBB.

Vous n'êtes pas identifié(e).

#1 14-03-2012 23:22:52

Glayne
Membre
Inscription : 12-03-2012
Messages : 26

Cacher les liens youtube aux invités !

Bien le bonsoir,
J'ai un forum de chant smile En effet nous partageons nos vidéos ou nous composons des musiques etc ....
Le forum est assez fréquenter. Et je migre actuellement vers la V3 qui sera sous fluxbb. Cependant je rencontre un petit soucis.
J'aimerais que mon forum soit visible à tous sans utiliser le HIDE autour des liens YouTube.
Car j'ai déja pas mal de contenu donc je me vois mal tout refaire avec le HIDE happy
C'est pourquoi j'aimerais savoir ce que je dois modifier dans mon viewtopic.php pour cacher les liens YouTube. De base IPB le faisait avec un mod happy !
Je re débute en PHP et je suppose que ça doit être à coup de regex mais aucune idée de ce que je dois modifier.
Si quelqu'un voulait bien éclairé ma lanterne tongue
Merci encore à tous pour ce forum et ce super CMS qu'est FluxBB moi qui était pourtant amoureux de IPB ...
Une bonne soirée à tous,
Glayne

Hors ligne

#2 15-03-2012 18:02:49

adaur
Membre
Lieu : Derrière Notepad ++ !
Inscription : 25-09-2008
Messages : 1 937
Site Web

Re : Cacher les liens youtube aux invités !

Salut smile

On va dire que tu installes FluxToolbar pour avoir le BBCode de vidéo.

Une fois installée, va dans include/parser.php et cherche

 	$replace[] = '<object type="application/x-shockwave-flash" data="http://www.dailymotion.com/swf/video/$2" width="480" height="384"><param name="movie" value="http://www.dailymotion.com/swf/video/$2" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><p>Flash required</p></object>';
	$replace[] = '<object type="application/x-shockwave-flash" data="http://www.dailymotion.com/swf/video/$4" width="$1" height="$2"><param name="movie" value="http://www.dailymotion.com/swf/video/$4" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><p>Flash required</p></object>';
	$replace[] = '<object type="application/x-shockwave-flash" data="http://www.youtube.com/v/$3" width="425" height="344"><param name="movie" value="http://www.youtube.com/v/$3" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><p>Flash required</p></object>';
	$replace[] = '<object type="application/x-shockwave-flash" data="http://www.youtube.com/v/$5" width="$1" height="$2"><param name="movie" value="http://www.youtube.com/v/$5" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><p>Flash required</p></object>';

Remplace par

	if (!$pun_user['is_guest']) // Si c'est un membre, on affiche les vidéos
	{
		$replace[] = '<object type="application/x-shockwave-flash" data="http://www.dailymotion.com/swf/video/$2" width="480" height="384"><param name="movie" value="http://www.dailymotion.com/swf/video/$2" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><p>Flash required</p></object>';
		$replace[] = '<object type="application/x-shockwave-flash" data="http://www.dailymotion.com/swf/video/$4" width="$1" height="$2"><param name="movie" value="http://www.dailymotion.com/swf/video/$4" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><p>Flash required</p></object>';
		$replace[] = '<object type="application/x-shockwave-flash" data="http://www.youtube.com/v/$3" width="425" height="344"><param name="movie" value="http://www.youtube.com/v/$3" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><p>Flash required</p></object>';
		$replace[] = '<object type="application/x-shockwave-flash" data="http://www.youtube.com/v/$5" width="$1" height="$2"><param name="movie" value="http://www.youtube.com/v/$5" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><p>Flash required</p></object>';
	}
	else // Sinon on affiche un message
	{
		$replace[] = '<p>Vidéos réservées aux membres.</p>';
		$replace[] = '<p>Vidéos réservées aux membres.</p>';
		$replace[] = '<p>Vidéos réservées aux membres.</p>';
		$replace[] = '<p>Vidéos réservées aux membres.</p>';
	}

Je t'ai commenté le code smile

Tu peux bien évidemment changer le texte de remplacement pour les invités afin d'ajouter un lien pour s'inscrire par exemple.

Dernière modification par adaur (15-03-2012 18:03:15)


"As code is more often read than written it's really important to write clean code." - Franz
Twitter: @adaurfr
Mon fork de FluxBB: FeatherBB

Hors ligne

#3 15-03-2012 20:30:28

Glayne
Membre
Inscription : 12-03-2012
Messages : 26

Re : Cacher les liens youtube aux invités !

Bonsoir adaur,
Le problème c'est que comme je l'ai dis on était sur IPB avant et c'est vraiment des URL vers youtube que l'on à mis happy
Donc j'ai pas de balise video autours des liens happy
Y faudrait vraiment que je place une regex quelque part mais j'arrive pas à savoir ou ... hmm

Hors ligne

#4 16-03-2012 19:21:21

adaur
Membre
Lieu : Derrière Notepad ++ !
Inscription : 25-09-2008
Messages : 1 937
Site Web

Re : Cacher les liens youtube aux invités !

En effet, il te faudrait des regex là; je n'en suis pas pro, désolé tongue.

Tu pourrais éventuellement t'inspirer de http://code18.blogspot.com/2010/11/rege … utube.html, mais je n'ai pas le temps de chercher plus maintenant, désolé.

Je ne connais pas la taille de ton forum, mais l'autre option consisterait à le faire manuellement, jusqu'à une centaine de posts ça reste gérable.


"As code is more often read than written it's really important to write clean code." - Franz
Twitter: @adaurfr
Mon fork de FluxBB: FeatherBB

Hors ligne

#5 16-03-2012 19:26:13

Otomatic
Régisseur
Lieu : Paris, France
Inscription : 12-12-2005
Messages : 3 660
Site Web

Re : Cacher les liens youtube aux invités !

Glayne a écrit :

... c'est vraiment des URL vers youtube que l'on à mis...

Bonjour,

Quelle est la partie commune à toutes ces URL ? (Par exemple : http://youtube.com/xyztry)
Et, deux ou trois exemples complets seraient les bienvenus siffle


Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Sont différents : ça et sa - est et ait - à et a - ce et se - mes et mais ou met - été et était - c'est et ces - ce-si et ceci
La vie sans musique est tout simplement une erreur, une fatigue, un exil. Friedrich Nietzsche

Hors ligne

#6 17-03-2012 01:57:41

Glayne
Membre
Inscription : 12-03-2012
Messages : 26

Re : Cacher les liens youtube aux invités !

Otomatic a écrit :
Glayne a écrit :

... c'est vraiment des URL vers youtube que l'on à mis...

Bonjour,

Quelle est la partie commune à toutes ces URL ? (Par exemple : http://youtube.com/xyztry)
Et, deux ou trois exemples complets seraient les bienvenus siffle

J'ai pas trop compris ou tu voulais en venir ... happy

Hors ligne

#7 17-03-2012 14:06:29

adaur
Membre
Lieu : Derrière Notepad ++ !
Inscription : 25-09-2008
Messages : 1 937
Site Web

Re : Cacher les liens youtube aux invités !

Simple à comprendre pourtant happy. Donne nous un exemple de 2 ou 3 posts avec des liens youtube dedans, afin qu'on voit la forme de ceux-ci: avec www/sans, youtube.com/youtu.be, etc...


"As code is more often read than written it's really important to write clean code." - Franz
Twitter: @adaurfr
Mon fork de FluxBB: FeatherBB

Hors ligne

#8 17-03-2012 17:16:05

Glayne
Membre
Inscription : 12-03-2012
Messages : 26

Re : Cacher les liens youtube aux invités !

Mmmmh d'accord happy
Bah www.youtube.com/blablblalbla & youtube.com/blablabla smile

Hors ligne

#9 17-03-2012 17:33:35

Otomatic
Régisseur
Lieu : Paris, France
Inscription : 12-12-2005
Messages : 3 660
Site Web

Re : Cacher les liens youtube aux invités !

Bonjour,

Il faudra adapter pour tes liens, mais je pars du principe qu'il faut cacher aux visiteurs tous les liens qui commencent par

http://www.youtube

Nota : Il n'apparaitront pas du tout, même en visualisant la source de la page.

Donc, dans le fichier include/parser.php, remplacer

function handle_url_tag($url, $link = '', $bbcode = false)
{
	$url = pun_trim($url);

par

function handle_url_tag($url, $link = '', $bbcode = false)
{	global $pun_user, $lang_common;
	$url = pun_trim($url);

puis remplacer

			$link = stripslashes($link);

		return '<a href="'.$full_url.'">'.$link.'</a>';
	}

par

			$link = stripslashes($link);
		
		if(!$pun_user['is_guest'])
			return '<a href="'.$full_url.'">'.$link.'</a>';
		else
		{
			if(strpos($full_url,'http://www.youtube') !== false)
				return $lang_common['No permission'];
			else
				return '<a href="'.$full_url.'">'.$link.'</a>';
		}
	}

Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Sont différents : ça et sa - est et ait - à et a - ce et se - mes et mais ou met - été et était - c'est et ces - ce-si et ceci
La vie sans musique est tout simplement une erreur, une fatigue, un exil. Friedrich Nietzsche

Hors ligne

#10 18-03-2012 03:29:11

Glayne
Membre
Inscription : 12-03-2012
Messages : 26

Re : Cacher les liens youtube aux invités !

Merci beaucoup Otomatic smile ! Ca ma permis de bidouiller un peu en faisant un array etc ... smile
Tout vas bien désormais. Seul je me rends compte que j'ai plusieurs membre qui ont mis leurs liens dans des balises code ...
Et vu que l'url dans un lien code n'est pas cliquable ... happy
J'ai essayé de bidouiller un peu seulement je merdouille pas mal happy

Hors ligne

#11 18-03-2012 13:30:35

Otomatic
Régisseur
Lieu : Paris, France
Inscription : 12-12-2005
Messages : 3 660
Site Web

Re : Cacher les liens youtube aux invités !

Glayne a écrit :

Seul je me rends compte que j'ai plusieurs membre qui ont mis leurs liens dans des balises code...

Bonjour,

Il est possible de traiter le contenu des balises code. Ça peut se faire, toujours dans le fichier include/parser.php, juste après la détection et l'extraction du contenu, c'est-à-dire, juste après :

	// If the message contains a code tag we have to split it up (text within  shouldn't be touched)
	if (strpos($text, '[code]') !== false && strpos($text, '[/code]') !== false)
		list($inside, $text) = extract_blocks($text, '[code]', '[/code]');

Le contenu interne aux balises code se retrouve dans $inside


Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Sont différents : ça et sa - est et ait - à et a - ce et se - mes et mais ou met - été et était - c'est et ces - ce-si et ceci
La vie sans musique est tout simplement une erreur, une fatigue, un exil. Friedrich Nietzsche

Hors ligne

Pied de page des forums