forum.coppermine-gallery.net

Support => Français (French) => Language Specific Support => cpg1.4.x Français (French) => Topic started by: easyjava on February 07, 2008, 10:54:18 am

Title: [WIP] Nouveau Projet : Coppermine MAP HELP !!!
Post by: easyjava on February 07, 2008, 10:54:18 am
Bonjour,

Toujours à la recherche de nouveautés pour ma galerie je me suis lancé dans un défi. Je vous invite, par l'intermédiaire de ce topic, à me donner vos remarques, conseils et tout autres commentaires constructifs si possible.

Quote
Objectif :
Créer une liste des utilisateurs connectés et afficher pour chacun d'eux le nom de l'album dans le quel ils se trouvent ou la photo qu'ils sont entrain de visionner. Par la suite, créer une sorte de carte représentant tous les albums et la position des visiteurs ainsi que l'historique de navigation.

L'apparence est encore à définir. Pour avoir un rendu parfait le tout sera actualisé via AJAX.


 :D OK -- Etape 1 : Créer le tracker.
Script qui stocke les informations de l'utilisateur (position, sessid, ip, username et time)

 :D OK -- Etape 2 : Créer une liste pour afficher les positions des utilisateurs lors des dernières 60 secondes
 :D OK -- Etape 2.1 : Ajaxer le tout

 :D OK -- Etape 3 : Limiter l'affichage à 1 enregistrement par user
A lieu d'afficher dans la même liste les x positions des dernières 60 sec n'afficher que la dernière par user afin d'obtenir une ligne par utilisateur.

 ??? -- Etape 4 : Convertir les url de position pour pouvoir en extraire le nom de l'album et l'id de la photo

 ??? -- Etape 5 : JavaScript et CSS pour designer le tout

 ??? -- Etape 6 : Copperminiser le tout (variables, traductions, templates etc..)

 ??? -- Etape 7 : Convertir le Hack en Plugin


Voilà pour l'affichage en liste. On verra pour la carte après.

PS : Bien entendu le script sera rendu public dès qu'il sera terminé et en attendant je posterais les portions de script pour les courageux qui veulent me filler un coup de main.  ;)

Et maintenant, en avant.
Title: Re: [WIP] Nouveau Projet : Coppermine MAP
Post by: François Keller on February 07, 2008, 11:08:27 am
projet prometteur.
Sous forme de plugin ou de MOD/HACK sachant que plugin serait mieux et plus facile pour la maintenance de la galerie.
Je veux bien tester pas de problèmes.
si tu as besoin d'un coup de main dans la mesure de mes connaissances, je veux bien (AJAX c'est pas mon truc j'y connais rien)
Title: Re: [WIP] Nouveau Projet : Coppermine MAP
Post by: Pascal YAP on February 07, 2008, 11:16:54 am
WoW,

L'idée est ambitieuse et le défi de poids !
L'idée est passionnante, et tous nos regards sont tournés vers EasyJava  ;D

Bien entendu nous sommes tous à disposition pour faire avancer le projet... idem pour la Dev Team anglophone je pense  ;)

Cependant, n'oublions pas que la version 1.5x est sur le grille en version Alpha.
Il serait judicieux de développer pour cette nouvelle version en même temps que pour la 1.4.x n'est-ce pas ?

PYAP
Title: Re: [WIP] Nouveau Projet : Coppermine MAP
Post by: easyjava on February 07, 2008, 11:18:48 am
J'aurais besoin d'aide pour le passage du Hack au plug-in.
Mais cela ne sera pas trop difficile puisque la majorité du projet exécute des pages qui sont nouvelles. Il faut juste inclure le script du tracker sur une page qui est chargée à chaque clique. Pour le moment je l'ai mis sur mon theme.php. Pour ce qui est d'AJAX ca devrait aller, je ne suis pas non plus expert mais il n'y en a qu'un peu pour l'actualisation et il est déjà mis en place.

EDIT : Pour la version 1.5 il ne devrait pas y avoir de gros soucis puisque, comme dit ci-dessus, il y a peu de modifications à apporter aux fichier de Coppermine.
Title: Re: [WIP] Nouveau Projet : Coppermine MAP
Post by: François Keller on February 07, 2008, 12:54:50 pm
pour passer le HAck au plugin je pense pouvoir aider
en ce qui concerne la version 1.5 les plus grands changements viennent du fait de l'utilisation de la classe Inspekt pour sécuriser les variables super-globales, mais ce n'est pas insurmontable.
Par contre il est nécessaire de prévoir l'internationalisation de tout ça avec un fichier langue séparé
Title: Re: [WIP] Nouveau Projet : Coppermine MAP
Post by: easyjava on February 07, 2008, 01:30:30 pm
J'ai rajouté le point 6 à la fin de la todo list. Pour le moment je code de manière générale, sans me soucier des variables propores à Coppermine. Une fois que tout sera terminé je m'en occuperais.
Title: Re: [WIP] Nouveau Projet : Coppermine MAP
Post by: easyjava on February 07, 2008, 01:33:33 pm
Avez vous des suggestions concernant l'affichage de la liste ?

Par exemple afficher l'avatar si user logué ou d'autres conseils pour l'affichage de la liste ?
Title: Re: [WIP] Nouveau Projet : Coppermine MAP
Post by: François Keller on February 07, 2008, 01:43:37 pm
Tout dépends de la manière dont la liste sera affichée:
si cette liste s'affiche dans une nouvelle page, tu peux mettre des détails (mais les avatars ne sont dispos que dans le modpack de Stramm)
si la liste s'affiche su la page d'index (box en plus, il faut limiter les détails pour une question de place)
Title: Re: [WIP] Nouveau Projet : Coppermine MAP
Post by: easyjava on February 07, 2008, 01:47:05 pm
Pour le moment il n'est pas prévu d'implantation sous forme de "box" sur la page d'accueil. Le script de visualisation est très gourmand en ressources (1 requête) par seconde par visiteur. Je pense qu'il est plus sage de le séparer sur une page annexe.
Title: Re: [WIP] Nouveau Projet : Coppermine MAP
Post by: easyjava on February 07, 2008, 02:19:21 pm
Tout bien réfléchi ce n'est pas énorme 1 requête par personne/seconde  8).

Par contre j'ai besoin d'aide concernant un array.

Je crée une liste des actions des 10 dernières secondes ce qui me donne quelque chose comme cela :
Code: [Select]
ip - adresse - timece qui donne
Code: [Select]
123 - album.php - 20071011
123 - index.php - 20071011
123 - album.php - 20071011
148 - album.php - 20071011
148 - page.php - 20071011
132 - test.php - 20071011

Comment puis-je faire pour n'obtenir qu'une ligne par ip et l'ordonner pour afficher l'événement le plus récent. J'ai essayé avec GROUP BY mais je n'arrive pas à ordonner. Peut-être faut-il tout stocke dans un array puis le trier avec une boucle ?


EDIT : Est ce que quelqu'un peut m'expliquer comment sont gérés les sessions dans coppermine. Coppermine crée t-il un session id pour chaque visiteur même anonyme ? Si oui cela serait pratique pour moi.
Title: Re: [WIP] Nouveau Projet : Coppermine MAP
Post by: Pascal YAP on February 07, 2008, 02:44:53 pm
Quote
Tout bien réfléchi ce n'est pas énorme 1 requête par personne/seconde
Si si c'est énorme !
Imaginons une Galerie X ouY totalise un nombre extrême de visites ! Par exemple 10 visites par minute ce qui n'est pas impossible ! Immédiatement le nombre de requètes SQL atteint 60  ???
Sans parler des requêtes pour l'affichage des images ou autre gourmandises, le serveur peut être chargé !
La réflexion se doit d'être plus fine.

Quote
Peut-être faut-il tout stocke dans un array puis le trier avec une boucle ?
Effectivement c'est une idée à creuser.

PYAP
Title: Re: [WIP] Nouveau Projet : Coppermine MAP
Post by: François Keller on February 07, 2008, 03:37:18 pm
Quote
e crée une liste des actions des 10 dernières secondes ce qui me donne quelque chose comme cela :
Code: [Select]

ip - adresse - time
ce qui donne
Code: [Select]

123 - album.php - 20071011
123 - index.php - 20071011
123 - album.php - 20071011
148 - album.php - 20071011
148 - page.php - 20071011
132 - test.php - 20071011

Comment puis-je faire pour n'obtenir qu'une ligne par ip et l'ordonner pour afficher l'événement le plus récent. J'ai essayé avec GROUP BY mais je n'arrive pas à ordonner. Peut-être faut-il tout stocke dans un array puis le trier avec une boucle ?
il faut effectivement placer ça dans un tableau et trier le tableau pour ne garder que la valeur la plus récente (il faut stocker quelque chose avec la date et l'heure pour ce calcul)
Quote
Est ce que quelqu'un peut m'expliquer comment sont gérés les sessions dans coppermine. Coppermine crée t-il un session id pour chaque visiteur même anonyme ? Si oui cela serait pratique pour moi.
a ma connaissance, coppermine crée une variable USER_ID pour les utilisateurs enregistrés.
Concernant les sessions, j'avoue ne pas savoir exacement mais il doit effectivement y avoir quelque chose puisque deux cookies sont crées.
pour les cookies, regardes entre autre dans le fichier include/functions.inc.php vers la ligne 122
Title: Re: [WIP] Nouveau Projet : Coppermine MAP
Post by: easyjava on February 07, 2008, 04:02:55 pm
Ok pour le tableau.

Enfait j'ai jeté un coup d'oeil à la base cpg1410_sessions. Je ne pense pas utiliser les cookies mais plutot ce qui est stocké dans la base de données. Il y a un userid dans cette table et cela arrive que des enregistrements possèdent bien un session_id mais avec un user_id 0. Cela voudrait-il dire que Coppermine crée aussi des sessions_id pour les visiteurs anonymes  ???
Title: Re: [WIP] Nouveau Projet : Coppermine MAP
Post by: François Keller on February 07, 2008, 04:27:28 pm
il semble en effet, maintenant il faudrait voir avec plusieurs connections de visiteurs anonymes ce qu'il y a dans la table (en local c'est pas évident)
Title: Re: [WIP] Nouveau Projet : Coppermine MAP
Post by: easyjava on February 08, 2008, 01:56:10 pm
Je suis contant car je viens de réussi, avec un peu d'aide, à créer ma requête.
Il fallait faire une boucle n'affichant qu'un ip par ligne qui soit le dernier enregistrement mais dont le dernier enregistrement soit plus récent que date('U')-60 soit les actions passées dans la dernière minute... heu je ne sais pas si vous me suivez...  ::)

Bref voici la requête sql actuelle :

Code: [Select]
'SELECT cpg1410_map.ip, cpg1410_map.url, cpg1410_map.username, cpg1410_map.datetime
FROM cpg1410_map
INNER JOIN (
SELECT MAX(datetime) AS datetime, ip
FROM cpg1410_map
    WHERE cpg1410_map.datetime = datetime
GROUP BY ip) b
ON (cpg1410_map.ip = b.ip AND cpg1410_map.datetime = b.datetime)
WHERE cpg1410_map.datetime >='.$limit.'
ORDER BY cpg1410_map.ip DESC';

Prochaine étape : la conversion des url (ou comment récupérer les albums_id et pictures_id).
Title: Re: [WIP] Nouveau Projet : Coppermine MAP
Post by: easyjava on February 09, 2008, 02:18:02 pm
Je rencontres quelques problèmes avec le système d'actualisation en AJAX uniquement sur certains ordinateurs et que sur Internet Explorer 7  >:( hmmm  :-X.

Je pense qu'il va falloir changer de trechnique. Actuellement toute la requête se rafraîchit chaque seconde. Mais je doute que le navigateur puisse charger 5 vignettes (par exemple) plus le texte en une seconde ! Malheureusement je ne sais pas trop comment m'y prendre, il va falloir que je fasse une investigation plus approfondie de la chose. Mais je vous tiens au courant.
Title: Re: [WIP] Nouveau Projet : Coppermine MAP
Post by: easyjava on February 18, 2008, 10:06:43 am
Bonjour,

Le projet avance et prend forme mais j'ai cependant besoin d'aide.
J'utilise une technique de bricolage pour récupérer l'id de la photo à partir de l'url et c'est vraiment boîteux.

Est ce que quelqu'un sait comment récupérer le pid quand on est sur displayimage.php ? Le mieux pour moi serait de pouvoir récupérer cet ID sur theme.php ?

Merci d'avance
Title: Re: [WIP] Nouveau Projet : Coppermine MAP HELP !!!
Post by: François Keller on February 18, 2008, 10:13:55 am
quand on est sur display.php on a $_GET['album'] qui donne l'album et $_GET['pos'] qui donne une position dans l'album, mais je n'ai jamais bien compris  a quoi ça correspond
Title: Re: [WIP] Nouveau Projet : Coppermine MAP HELP !!!
Post by: François Keller on February 18, 2008, 10:20:21 am
tu trouves aussi le pid dans l'url de l'image (celle qui est affichée dans les infos sur la page displayimage.php)
Title: Re: [WIP] Nouveau Projet : Coppermine MAP HELP !!!
Post by: easyjava on February 18, 2008, 11:24:34 am
Merci,

Je connaissais déjà ces informations. Mais ce n'est pas pratique. Je me suis dit qu'a un moment ou un autre il doit bien y avoir une variable pid qui est créée pour récupérer les informations d'une image (que ce soit pour l'url ou les infos). Personne n'a une idée ?
Title: Re: [WIP] Nouveau Projet : Coppermine MAP HELP !!!
Post by: François Keller on February 18, 2008, 11:50:09 am
ben dans le code de displayimage.php il y a
 
Code: [Select]
$pid = isset($_GET['pid']) ? (int)$_GET['pid'] : 0;par contre je ne sais pas ou est la requête
Title: Re: [WIP] Nouveau Projet : Coppermine MAP HELP !!!
Post by: easyjava on February 18, 2008, 03:19:33 pm
Merci  ;)
Malheureusement si $_GET['id'] est isset je n'ai pas besoin d'autre choses.
Mon problème est de trouver le PID de la photo quand on a une URL de ce genre displayimage.php?album=432&pos=46 (qui est fort peu pratique). Je peux bien faire une recherche dans la base pour la trouver mais étant donné la fréquence de refresh de l'ajax ça serait mieux si je pouvais extraire directement le pid. Mais je suis entrain de me dire qu'il n'existe pas forcément.  ???