[MOD] Utenti Giornalieri

Started by FaSan, August 25, 2004, 12:34:32 PM

Previous topic - Next topic

FaSan

Elisa, non ho ben capito... cos'è che vuoi fare ?  :-\

Elisa

Io nella pagina delle statistiche, dove ora compaiono per ogni giorno il numero dei nuovi iscritti, il numero max utenti online..., vorrei avere anche il numero totale degli utenti connessi!!! Come faccio????

FaSan

ahhh ecco  :D

Ma li vuoi mantenere giornalmente ? Se sì, teoricamente aggiungendo un campo alle statistiche giornaliere. Non dovrebbe essere troppo complicato. Vedo di farti avere il codice in serata  ;)

Se vuoi solo la punta massima, come sopra, in serata ti faccio avere entrambi ;)


F.

Elisa

No io vorrei avere ogni giorno il totale degli utenti connessi.

FaSan

Quote from: Elisa on August 25, 2004, 12:49:22 PM
No io vorrei avere ogni giorno il totale degli utenti connessi.

Ok Capito...  ;D

Cmq mi sà che mi ci vorrà un pò più di tempo... ho creato la struttura, il campo, la visualizzazione e la lettura... ma nell' inserimento diventa complicata  8)

Ci dovrò lavorare un pò sù... se vuoi intanto ti posto il resto.


F.

Elisa

Grazie! Poi mandami il conto.
Aspetto quando è completo, faccio meno casino!

FaSan

Bah... sono bloccato su una ca...beep... di query e non ne vengo fuori.

Coming Soon  ;)

FaSan

Quote from: FaSan on August 30, 2004, 08:20:24 PM
Bah... sono bloccato su una ca...beep... di query e non ne vengo fuori.

Coming Soon  ;)


8) 8) 8) ehhhhhh Bingoooooo  8)

Mi è giunta una dritta di Unknown, e finalmente la Mod è finita (meno male, questa volta davvero non sapevo che pesci pigliare hehehe).

Invece di legare questo thread all'altro, in area English, riposto le modifiche fatte, in modo di avere un quadro completo della situazione.
Inoltre, ho dovuto cambiare un paio di cosine al codice originario, quindi posterò direttamente il nuovo.

FaSan

Questa è la MOD che visualizza TUTTI gli utenti che si sono collegati al Vostro forum nella giornata di oggi. Inoltre aggiunge una nuova casella nelle statistiche giornaliere dove verrà inserito il numero di utenti totali collegati in qual dato giorno:

Innanzitutto bisogna aggiungere una colonna alla tabella MYSQL "log_activity". Potete farlo da PHPMyAdmin, con la seguente linea di comando :


ALTER TABLE {$db_prefix}log_activity ADD allOn smallint(5) unsigned NOT NULL default '0';


(Sostituendo "{$db_prefix}" con il suffisso del vostro DB (normalmente "smf_")


Dopidichè le seguenti modifiche :

BoardIndex.php


<Search>
// Load the users online right now.
</Search>

<Add Before>
// Load the users online today.

$midnight = ((date("U") - (date("H") * 3600)) - (date("i") * 60));

// Load the users online for the past 24 hours.
$result = db_query("
SELECT
mem.ID_MEMBER, mem.realName, mem.memberName, mem.ID_GROUP, mem.showOnline, mem.avatar, mem.lastLogin, mem.posts,
mg.onlineColor
FROM {$db_prefix}members AS mem
LEFT JOIN {$db_prefix}membergroups AS mg ON (mg.ID_GROUP = mem.ID_GROUP OR (mem.ID_GROUP = 0 AND mg.ID_GROUP = mem.ID_POST_GROUP))
WHERE mem.lastLogin >= '$midnight'
ORDER BY mem.realName", __FILE__, __LINE__);

$today['users'] = array();
$today['num_users'] = 0;
$link = '';

while ($tmp = mysql_fetch_assoc($result))
{
$link .= '<a href="' . $scripturl . '?action=profile;u=' . $tmp['ID_MEMBER'] . '" style="color: ' . $tmp['onlineColor'] . ';">' . $tmp['realName'] . '</a>, ';
$today['num_users']++;
}

mysql_free_result($result);

$context['user_today'] = $link;
$context['num_users_today'] = $today['num_users'];

              trackStats(array('allOn' => $context['num_users_today']));
</Add Before>



BoardIndex.template.php


<Search>
// If they are logged in, but SP1 style information is off... show a personal message bar.
</Search>


<Add Before>
// "Users online Today"
echo '
<tr>
<td class="catbg" colspan="2">', $txt['158bis'], ' ( ', $context['num_users_today'], ' ', $context['num_users_today'] == 1 ? $txt['user'] : $txt['users'], ' )</td>
</tr><tr>
<td class="windowbg" width="20" valign="middle" align="center"><img src="', $settings['images_url'], '/icons/online.gif" alt="', $txt['158bis'], '" border="0" /></td>
<td class="windowbg2" width="100%"><span class="smalltext">', $context['user_today'], '</span></td></tr>';
</Add Before>




Modifications.english.php


<Search>
// Version: 1.0 RC1; Modifications
</Search>

<Add After>
$txt['158bis'] = 'OnLine Users Today';
$txt['smf_stats_14bis'] = 'OnLine Day Users';
</Add After>



Modifications.italian.php


<Search>
// Version: 1.0 RC1; Modifications
</Search>

<Add After>
$txt['158bis'] = 'Utenti OnLine nella Giornata di Oggi';
$txt['smf_stats_14bis'] = 'Presenze OnLine Giornaliere';
</Add After>



Stats.template.php


<Search>
<td>', $txt['smf_stats_14'], '</td>';
</Search>

<Replace>
<td>', $txt['smf_stats_14'], '</td>
<td>', $txt['smf_stats_14bis'], '</td>
</Replace>

<Search>
<th align="center">', $month['most_members_online'], '</th>';
</Search>

<Replace>
<th align="center">', $month['most_members_online'], '</th>
<th align="center">', $month['all_members_online'], '</th>';
</Replace>

<Search>
<td align="center">', $day['most_members_online'], '</td>';
</Search>

<Replace>
<td align="center">', $day['most_members_online'], '</td>
<td align="center">', $day['all_members_online'], '</td>';
</Replace>




Stats.php


<Search>
MAX(mostOn) AS mostOn
</Search>

<Replace>
MAX(mostOn) AS mostOn, MAX(allOn) AS allOn
</Replace>


<Search>
'most_members_online' => $row_months['mostOn'],
'hits' => $row_months['hits'],
</Search>

<Replace>
'most_members_online' => $row_months['mostOn'],
'all_members_online' => $row_months['allOn'],
'hits' => $row_months['hits'],
</Replace>


<Search>
SELECT YEAR(date) AS stats_year, MONTH(date) AS stats_month, DAYOFMONTH(date) AS stats_day, topics, posts, registers, mostOn, hits
</Search>

<Replace>
SELECT YEAR(date) AS stats_year, MONTH(date) AS stats_month, DAYOFMONTH(date) AS stats_day, topics, posts, registers, mostOn, allOn, hits
</Replace>


<Search>
'most_members_online' => $row_days['mostOn'],
'hits' => $row_days['hits
</Search>

<Replace>
'most_members_online' => $row_days['mostOn'],
'all_members_online' => $row_days['allOn'],
'hits' => $row_days['hits']
</Replace>






FaSan

Elisa

Per ora dico mille mille mille grazie!!!
Domani la provo!!!!

Elisa

L'ho montataaaaaaaaaaaaaaaaaaa!!! Sono riuscita anche se non ho ancora installato la RC1!!!!!!!!!!!!!

Però non calcola gli utenti nascosti!!!!!!!!!!!!!!  :-\ :(

FaSan

Quote from: Elisa on September 02, 2004, 02:35:24 PM
L'ho montataaaaaaaaaaaaaaaaaaa!!! Sono riuscita anche se non ho ancora installato la RC1!!!!!!!!!!!!!

Però non calcola gli utenti nascosti!!!!!!!!!!!!!!  :-\ :(


Uhmmm... hai ragione !

No ci ho pensato inquanto nel mio forum la possibilità di nascondersi è disabilitata.

Implementerò una versione 1.1 per ovviare al Bug  8)


PS : Ho creato un mio Package Server, raggiungibile dal pannello di Amministrazione, con la mod già pronta per essere installata in automatico  8) E' sufficente aggiungere il server tra quelli da utilizzare. (L' indirizzo è nella mia firma ;) )

FaSan

Intanto ho apportato una piccola modifica.

Nel caso in cui qualcuno abbia installato la MOD "BuddyList", è possibile visualizzare gli utenti collegati durante il giorno, nel colore utilizzato dalla Buddy.

Basta cambiare queste poche righe nel file BoardIndex.php :



<search>
$link = '';

while ($tmp = mysql_fetch_assoc($result))
{
$link .= '<a href="' . $scripturl . '?action=profile;u=' . $tmp['ID_MEMBER'] . '" style="color: ' . $tmp['onlineColor'] . ';">' . $tmp['realName'] . '</a>, ';
$today['num_users']++;
}

<replace>
$link = '';

$user_info['buddy_list'] = explode(',', $user_info['buddy_list']);

while ($tmp = mysql_fetch_assoc($result))
{
if (in_array($tmp['ID_MEMBER'], $user_info['buddy_list']))
$tmp['onlineColor'] = 'blue';                            //or other color if you want

$link .= '<a href="' . $scripturl . '?action=profile;u=' . $tmp['ID_MEMBER'] . '" style="color: ' . $tmp['onlineColor'] . ';">' . $tmp['realName'] . '</a>, ';
$today['num_users']++;
}
</replace>


<search>
$context['num_buddies'] = 0;
// Little cheat.
$user_info['buddy_list'] = explode(',', $user_info['buddy_list']);
</search>

<replace>
$context['num_buddies'] = 0;
</replace>

Elisa

Il package vale solo per chi ha la RC1?

FaSan

Purtroppo non ho più i file della beta6, quindi potendo testare le mod solo su RC1 ho fatto sì che siano installabili solo per questa versione.

Cmq la RC1 ha un mare di migliorie in più... da parecchi bug fixed sulla sicurezza ad una nuova struttura di gestione php in alcuni file, meglio upgradare quanto prima  ;)

Elisa

Sicuro ma l'idea di dover rifare da capo 8000 modifiche deve ancora cedere il passo all'idea di aver qualche opzione in più!

FaSan

Quote from: Elisa on September 03, 2004, 12:09:02 PM
Sicuro ma l'idea di dover rifare da capo 8000 modifiche deve ancora cedere il passo all'idea di aver qualche opzione in più!


:D :D :D

edi67

carino questo mod

un piccolo problema io sono su un server russo 2 ore piu avanti l'ora in pratica mi inizia a contare gli utenti del giorno a partire dalla 22 ora italian visto che li sono le 24 come posso ovviare a questo cioe mettere +2 ore
CrazyZone - My SMF Forum


From the difficult the hardening of the man you can see

FaSan

Quote from: edi67 on September 12, 2004, 04:17:14 PM
carino questo mod

un piccolo problema io sono su un server russo 2 ore piu avanti l'ora in pratica mi inizia a contare gli utenti del giorno a partire dalla 22 ora italian visto che li sono le 24 come posso ovviare a questo cioe mettere +2 ore


E' sufficente aggiungere un +2 a questa funzione :

   $midnight = ((date("U") - (date("H") * 3600)) - (date("i") * 60));

ovvero :

   $midnight = ((date("U") - (date("H") * 3600)) - (date("i") * 60) + 2);


;)

edi67

ero riuscito comunque grazie un mod molto interessante bravo fasan
CrazyZone - My SMF Forum


From the difficult the hardening of the man you can see

Advertisement: