Utilisateur le plus présent Utilisateur le plus présent
 

News:

cpg1.5.48 Security release - upgrade mandatory!
The Coppermine development team is releasing a security update for Coppermine in order to counter a recently discovered vulnerability. It is important that all users who run version cpg1.5.46 or older update to this latest version as soon as possible.
[more]

Main Menu

Utilisateur le plus présent

Started by easyjava, February 12, 2007, 11:21:06 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

easyjava

--- post original : http://forum.coppermine-gallery.net/index.php?topic=18405.0 ---

Voici comment calculer le temps passé par les utilisateurs sur votre site.

1- Exécuter dans mysql :

CREATE TABLE cpg145_onlinetimer (
  uid int(11) NOT NULL default '0',
  lastaction int(11) NOT NULL default '0',
  cumulative int(11) NOT NULL default '0',
  PRIMARY KEY  (uid),
  KEY cumulative (cumulative)
);


2 - Editer include/init.inc.php
Ajouter avant ?>

// calculateur de présence
if (USER_ID){
cpg_db_query("INSERT IGNORE INTO cpg145_onlinetimer (uid, lastaction) VALUES ('$user_id', UNIX_TIMESTAMP())");
cpg_db_query("UPDATE cpg145_onlinetimer SET cumulative = cumulative + (UNIX_TIMESTAMP() - lastaction) WHERE uid = '$user_id' AND lastaction > UNIX_TIMESTAMP() - 300");
cpg_db_query("UPDATE cpg145_onlinetimer SET lastaction = UNIX_TIMESTAMP() WHERE uid = '$user_id'");
}

La valeur 300 est le temps en secondes avant qu'une "session" se termine si aucunne action n'est effecutée

3 - anycontent.php

starttable("100%", "Utilisateurs présents",2);

$result = cpg_db_query("SELECT user_name, user_id, group_name, cumulative FROM {$CONFIG['TABLE_USERS']}, {$CONFIG['TABLE_USERGROUPS']}, cpg145_onlinetimer WHERE user_id = uid AND user_group = group_id ORDER BY cumulative DESC LIMIT 5");

$i = 1;
while ($row = mysql_fetch_assoc($result)){
$online = ($row['cumulative'] > 86400 ? floor($row['cumulative'] / 86400) . ' j. ': '') .
($row['cumulative'] > 3600 ? floor(($row['cumulative'] % 86400) / 3600). ' h. ' : '') .
($row['cumulative'] > 60 ? floor(($row['cumulative'] % 3600) / 60) . ' m. ' : '' ). 
($row['cumulative'] % 60) . ' s.';

echo "<tr><td class=\"tableb\" >" . $i++ . ") <a href=\"profile.php?uid={$row['user_id']}\">{$row['user_name']}</a> </td><td class=\"tableb\">$online</a></td></tr>";
}

endtable();

Pour afficher les 5 plus présents.

Amusez vous bien  ;D

François Keller

Merci pour cette traduction.
Attention, vous utilisez un préfixe de table propre à votre installation de Coppermine. Chacun devra l'ajuster à la sienne.

Il serait intéressant de transformer ce MOD en plugin  ;) ou d'inclure cette fonction au plugin onlinestats
Avez vous lu la DOC ? la FAQ ? et cherché sur le forum avant de poster ?
Did you read the DOC ? the FAQ ? and search the board before posting ?
Mon Blog

easyjava

Oui malheureusement je ne maîtrise pas assé la création de plugin pour en faire un !
Si quelqu'un veut se lancer... avis aux amateurs.

François Keller

Quote from: easyjava on February 13, 2007, 08:38:36 AM
Oui malheureusement je ne maîtrise pas assé la création de plugin pour en faire un !
Si quelqu'un veut se lancer... avis aux amateurs.
c'est sur ma désormais très longue to do list  ;)
Avez vous lu la DOC ? la FAQ ? et cherché sur le forum avant de poster ?
Did you read the DOC ? the FAQ ? and search the board before posting ?
Mon Blog