Fork me on GitHub

Rapport de message :*
 

Re: XGallery : Page "Mieux notées" = lien ne correspondant pas aux vignettes

Titre du sujet : Re: XGallery : Page "Mieux notées" = lien ne correspondant pas aux vignettes
par blueteen sur 08/10/2010 15:58:14

Après quelques tests, j'ai constaté le même phénomène sur une version 2.02.
Y compris sur la pages des photos "les plus vues".
Le contenu de la base de données semblant correct (pid correspondant bien au bon nom de l'image), j'ai cherché ailleurs.
Ce qui me semblait être un problème aléatoire ne l'était en fait pas.
J'ai percuté d'un coup lorsque j'ai vu que le souci se produisait sur des photos comportant le même nombre de vues (d'où l'aspect aléatoire du souci, puisque le compteur changeant, je n'obtenais pas toujours le même résultat).
Après avoir cherché sur displayimage.php, puis thumbnails.php, j'ai trouvé mon bonheur dans le fichier /include/functions.inc.php

Aux alentours des lignes 280 et 305, pour les cas :
case 'topn':
case 'toprated':

Dans les requêtes (sur ma version 2.02), le tri n'était fait que sur le nombre de vues (ou de hits).
J'ai donc ajouté un ordre de tri sur le 'pid' de l'image, pour rendre cet ordre plus logique et infaillible (pas possible d'avoir 2 fois le même 'pid' pour une image, donc un tri toujours impeccable et cohérent).

Pour la version 2.02, j'ai donc changé ça dans le code
Pour 'topn',
$result $xoopsDB->query("SELECT $select_columns FROM ".$xoopsDB->prefix("xcgal_pictures")." WHERE approved = 'YES'AND hits > 0 $ALBUM_SET ORDER BY hits DESC $limit");

devient (ajout du tri par pid ordre croissant en fin de requête)
$result $xoopsDB->query("SELECT $select_columns FROM ".$xoopsDB->prefix("xcgal_pictures")." WHERE approved = 'YES'AND hits > 0 $ALBUM_SET ORDER BY hits DESC, pid ASC $limit");


Pour 'toprated,'
$result $xoopsDB->query("SELECT $select_columns FROM ".$xoopsDB->prefix("xcgal_pictures")." WHERE approved = 'YES' AND votes >= '{$xoopsModuleConfig['min_votes_for_rating']}$ALBUM_SET ORDER BY ROUND((pic_rating+1)/2000) DESC, votes DESC $limit");

devient (voir en fin de requête également)
$result $xoopsDB->query("SELECT $select_columns FROM ".$xoopsDB->prefix("xcgal_pictures")." WHERE approved = 'YES' AND votes >= '{$xoopsModuleConfig['min_votes_for_rating']}$ALBUM_SET ORDER BY ROUND((pic_rating+1)/2000) DESC, votes DESC, pid ASC $limit");


Dans sa version (2.04 il me semble), Jey n'avait apparemment le souci qu'avec les photos les mieux notées, il m'a donc passé son fichier /include/functions.inc.php (en version 1.6 en en-tête de fichier).
Et j'ai juste changé la ligne 305 :
$result $xoopsDB->query("SELECT $select_columns FROM ".$xoopsDB->prefix("xcgal_pictures")." WHERE approved = 'YES' AND votes >= '{$xoopsModuleConfig['min_votes_for_rating']}$ALBUM_SET ORDER BY ROUND((pic_rating+1)/2000) DESC, votes DESC $limit");

devient (voir en fin de requête)
$result $xoopsDB->query("SELECT $select_columns FROM ".$xoopsDB->prefix("xcgal_pictures")." WHERE approved = 'YES' AND votes >= '{$xoopsModuleConfig['min_votes_for_rating']}$ALBUM_SET ORDER BY ROUND((pic_rating+1)/2000) DESC, votes DESC, pid ASC $limit");


Dans cette version de fichier, la partie concernant les images les plus vues était déjà corrigées (on y trouve un tri complété avec "ctime, mtime").
On aurait d'ailleurs pu utiliser le même style de requête au lieu de mon 'pid ASC'.
Faites au mieux ! (j'avais fait ma modification avant de voir le fichier de xcgal 2.04).

EDIT : Pour info, la version 2.05 est disponible à cette adresse :
http://artcode.eu/uploads/xoops/xcgal_ac_2_05.zip

Par contre, le bug concernant les photos les plus notées est présent aussi dans cette version. Vous pouvez appliquer la modification ci-dessus, le fichier est quasiment le même (et si quelqu'un a le temps de prévenir l'auteur du module, ça servira à d'autres).
Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

13 Personne(s) en ligne (7 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 13 | Plus ...