Perso Web PMI Prog Réseaux sociaux Développement Etudes OS Sécurité Infographie Mobiles Référencement iPhone Apple Scrum

26 déc. 2009

Mettre en place un bridge entre Joomla 1.5 et PHPBB 3 avec JFusion

Par Jean-Christophe Duvivier à 15:00

Mots Clés Bridge, Forum, Joomla, PHPBB,

Mettre en place un bridge entre Joomla 1.5 et PHPBB 3 avec JFusion

Ayant eu à mettre en place ce type d'installation sur un de mes projets et m'étant heurté à quelques difficultés, j'ai décidé de vous en faire part avec d'espérer résoudre vos problèmes et ainsi optimiser votre temps de travail ;)

Tout d'abord le contexte. Le contexte dans lequel je me trouve est assez précis, aussi il conviendra à certains d'entre vous, mais pas à d'autres (cela dit, les "autres" ne devraient pas avoir de problème avec leur installation en se référant aux tutos de base disponibles sur la toile).

Je vais vous montrer comment mettre en place un brige entre Joomla 1.5 (paramétré en slave) et PHPBB 3 (paramétré en master et accessible via un sous-domaine) grâce au composant JFusion. Dans le meilleur des cas, le dual login avec cette configuration fonctionne dans un sens (Joomla > PHPBB) mais pas dans l'autre. Ou alors cela fonctionne sur IE mais pas sur FF ou Chrome. Bref, grâce à ce tuto, tous ces petits soucis devraient disparaître.

Lire la suite...

29 oct. 2009

PHPBB Gallery, calculer la moyenne des notes obtenues

Par Jean-Christophe Duvivier à 11:12

Mots Clés Dotclear, Forum, PHP, PHPBB, Plugins,

Logo PHPBBÉtant en train de mettre en place un forum PHPBB, je me suis rapidement confronté aux problèmes d'ajout de modules qui, sur PHPBB, sont loin d'être automatisés. Ayant pris l'habitude des installations de plugins sous Dotclear, ça change... Bref. Il m'était nécessaire d'installer un module de gestion de galerie et je me suis tourné vers PHPBB Gallery qui connaît une certaine popularité. Après 60 minutes de procédure d'installation et après avoir découvert les fonctionnalités de cet excellent module, je me suis heurté à quelques difficultés. En effet, ce module étant doté d'un système de notation, je voulais afficher la note moyenne de chaque membre pour toutes les photos qu'il a mis en ligne, afin que chacun sache où se situer en terme de "performance". Malheureusement, cette fonctionnalité n'est pas disponible de base, dans la version 1.0.3. Je l'ai donc développée.

PHPBB Gallery - Moyenne des notes

Voici la procédure :

1. Le traitement

a - Tout d'abord nous allons nous occuper du traitement, c'est à dire le calcul de la moyenne de chaque membre. Pour ceci, rendez-vous à la racine de votre forum et ouvrez le fichier viewtopic.php avec votre éditeur PHP préféré. Cherchez-y le bout de code suivant :

$user_cache[$poster_id] = array(
'joined'		    => '',
'posts'		    => '',

Et remplacez-le par celui-ci :

$user_cache[$poster_id] = array(
'joined'		    => '',
'posts'		    => '',
'rates_average' => '',

On ajoute tout simplement un élément dans le tableau user afin d'y renseigner la moyenne des notes. Ici, on est dans le cas où l'utilisateur qui poste n'a pas de compte, on ne lui attribue donc pas de valeur.

b - Ensuite, recherchez ce code :

$user_sig = '';
// We add the signature to every posters entry because enable_sig is post dependant
if ($row['user_sig'] && $config['allow_sig'] && $user->optionget('viewsigs'))
{
	$user_sig = $row['user_sig'];
}

Et placez-y juste avant (donc au début du else) le code suivant :

// Moyenne des notes
$sql_rates_average = 'SELECT ROUND(AVG(m),1) AS rates_average, rate_image_id FROM 
(SELECT rate_image_id, AVG(rate_point) as m FROM '.GALLERY_RATES_TABLE.' GROUP BY rate_image_id) AS td WHERE 
rate_image_id IN (SELECT image_id FROM '.GALLERY_IMAGES_TABLE.' WHERE image_user_id = '.$poster_id.')';
$result_rates_average = $db->sql_query($sql_rates_average);
$row_rates_average = $db->sql_fetchrow($result_rates_average);
$user_rates_average = $row_rates_average['rates_average'];
$db->sql_freeresult($result_rates_average);

C'est tout simplement la requête SQL qui va récupérer les notes de toutes les photos de chaque utilisateur et va en faire la moyenne. À noter que la moyenne est calculée en fonction des moyennes de chaque photo et non pas en fonction de toutes les notes reçues par l'utilisateur.

c - Ensuite, recherchez ce code :

$user_cache[$poster_id] = array(
'joined'		=> $user->format_date($row['user_regdate']),
'posts'		=> $row['user_posts'],

Et remplacez-le par celui-ci :

$user_cache[$poster_id] = array(
'joined'			=> $user->format_date($row['user_regdate']),
'posts'			=> $row['user_posts'],
'rates_average' 	=> $user_rates_average,

Comme dans l'étape a, cette étape consiste à rajouter un élément dans le tableau de l'utilisateur afin de lui attribuer sa moyenne de notes. Il s'agit ici des utilisateurs enregistrés, on peut donc leur attribuer une valeur.

d - Enfin, recherchez ce code :

'POSTER_JOINED'		=> $user_cache[$poster_id]['joined'],
'POSTER_POSTS'		=> $user_cache[$poster_id]['posts'],

Et remplacez-le par le code suivant :

'POSTER_JOINED'		=> $user_cache[$poster_id]['joined'],
'POSTER_POSTS'		=> $user_cache[$poster_id]['posts'],
'POSTER_RATES_AVERAGE'	=> $user_cache[$poster_id]['rates_average'],

Ici, on attribue simplement une référence texte à la valeur de la moyenne des notes, afin de l'afficher dans le squelette (c'est une gestion de template ordinaire).

Maintenant que la moyenne de chaque membre est calculée, il reste à l'afficher au bon endroit.

2. L'affichage

e - Tout d'abord, rendez-vous dans le fichier language > fr > common.php et recherchez ce bout de code :

'READING_FORUM'			=> 'Consulte les sujets dans %s',
'READING_GLOBAL_ANNOUNCE'	=> 'Consulte une annonce globale',

Et remplacez-le par celui-ci :

'RATES_AVERAGE'			=> 'Moyenne des notes',
'READING_FORUM'			=> 'Consulte les sujets dans %s',
'READING_GLOBAL_ANNOUNCE'	=> 'Consulte une annonce globale',

Encore une fois, on attribue une référence à une chaîne de caractère afin de l'afficher dans le squelette.

f - Ensuite, rendez-vous dans styles > votre style (prosilver par exemple) > template > viewtopic_body.html et recherchez ce bout de code :

<!-- IF postrow.POSTER_POSTS != '' --><dd><strong>{L_POSTS}:</strong> {postrow.POSTER_POSTS}</dd><!-- ENDIF -->

et remplacez-le par celui-ci :

<!-- IF postrow.POSTER_POSTS != '' --><dd><strong>{L_POSTS}:</strong> {postrow.POSTER_POSTS}</dd><!-- ENDIF -->
<!-- IF postrow.POSTER_RATES_AVERAGE != '' --><dd><strong>{L_RATES_AVERAGE}:</strong> 
{postrow.POSTER_RATES_AVERAGE}</dd><!-- ENDIF -->

Ici, on renseigne tout simplement nos références dans notre squelette, ce qui permet d'afficher toutes nos informations.

La manipulation est terminée ! Théoriquement, vous devriez voir la moyenne des notes de chaque membre en dessous leur avatar (comme sur l'image en haut du billet), sous réserve qu'ils aient posté des photos et que celles-ci aient été notées ;).

Si vous avez des questions et/ou des remarques, n'hésitez pas !

Propulsé par Dotclear - Hebergé par PlanetHoster - Thème Green Mantis par jchristophe
© jchristophe.fr 2008 - 2009
Valide CSS 2.1 CSS 2.1 Valide XHTML 1.0 XHTML Strict 1.0 Flux RSS RSS