Home Modulo mod_totalusers
Martedì 03 Marzo 2009 10:55

mod_totalusers

Scritto da  Gianni Feduzi
Valuta questo articolo
(0 voti)
Nel sito AreaTecnicaRAI, nella colonna di sinistra, è presente un modulo chiamato "utenti registrati" che fornisce un resoconto degli utenti registrati divisi per totali, giornalieri, settimanali, mensili ed ultimo utente.

utenti
Ultimamente il modulo forniva valori errati e mi sono ripromesso di analizzare il codice il prima possibile per trovare l'errore.
Tantini 129 utenti nel mese corrente visto che siamo al 3 Marzo.

Ogni pagina di Joomla è composta da moduli e contenuti che interrogano il database MySQL.
Tutti i dati sono memorizzati nel database.

Un database lento (come da un po di tempo è quello di AreaTecnicaRAI su hosting Aruba) genera un sito lento.
Quindi la visualizzazione di dati da parte di un modulo è la semplice risposta di una richiesta al database MySQL.

Queste interrogazioni al database vengono chiamate query.
L'errore del modulo è dovuto ad una query sulla tabella degli utenti chiamata jos_users.
La tabella jos_users è utilizzata per memorizzare i dati degli utenti.
Nella tabella jos_users sono presenti diversi campi. Quelli che interessano a noi sono:

  • id = valore numerico unico per ogni utente
  • registerDate = data di registrazione
  • usertype = tipo utente (se amministratore o semplice utente registrato)
La query interessata è prensente nel file mod_totalusers.php nella directory modules/mod_totalusers alla riga 26:

$query4 = "SELECT count(id) FROM #__users WHERE month(registerDate) = month(curdate()) AND usertype <> 'administrator' AND usertype <> 'superadministrator'";

Una query (stringa in rosso) è la composizione di più comandi.

SELECT count(id) effettua il conteggio degli elementi.

FROM #__users (in questa forma valido solo per Joomla) è equivalente a FROM jos_users che significa dalla tabella jos_users.

Quindi SELECT count(id) FROM jos_users significa conta quanti elementi id ci sono nella tabella jos_users.
Essendo il campo id unico per ogni utente la query fornisce gli utenti totali.

Per aggiungere delle condizioni alla query si utilizza il comando WHERE.
Per aggiungere ulteriori condizioni si utilizza AND.

Prima condizione:
month(registerDate) = moth(curdate())

registerDate è un campo della tabella jos_users dove è inserita la data di registrazione dell'utente.
La condizione dice di prendere gli elementi che hanno il mese di registrazione uguale al mese corrente.

Seconda Condizione
usertype <> 'administrator' escludi dal conteggio gli utenti il cui campo usertype corrisponde al valore administrator (escludi dal conteggio gli amministratori)

Terza Condizione
usertype <> 'superadministrator' escludi dal conteggio gli utenti il cui campo usertype corrisponde al valore superadministrator (escludi dal conteggio i SuperAmministratori)

Unendo i vari pezzi della query si ottiene:

calcola gli utenti che hanno, come data di registrazione, il mese uguale a quello corrente e che non sono amministratori o Super Amministratori.

L'errore è nella condizione il mese uguale a quello corrente.

Prendiamo la data odierna 3 marzo 2009.
La query fornirà tutti gli utenti registrati a Marzo di qualsiasi anno anche l'utente registrato due anni prima.

E' neccessario aggiungere un condizione per verificare che l'anno sia lo stesso della data odierna.

Quarta condizione
year(registerDate) = year(curdate()) l'anno di registrazione e l'anno della data odierna devo coincidere.

Query finale:
SELECT count(id) FROM jos_users WHERE month(registerDate) = month(curdate()) AND year(registerDate) = year(curdate()) AND usertype <> 'administrator' AND usertype <> 'superadministrator';

La riga 26 del file mod_totalusers.php sarà:

$query4 = "SELECT count(id) FROM #__users WHERE month(registerDate) = month(curdate()) AND year(registerDate) = year(curdate()) AND usertype <> 'administrator' AND usertype <> 'superadministrator'";

utenti_dopo



Ed ecco finalmente il risultato (purtroppo) corretto.

 

 

 

Ultima modifica Martedì 03 Marzo 2009 13:23
Gianni Feduzi

Gianni Feduzi

Mi chiamo Gianni Feduzi e sono un tecnico della RAI.

Mi piace la tecnologia e l'informatica.

Ho realizzato questo sito in Joomla partendo da un idea della collega Alessandra Cerrina di condividere esperienze ed informazioni senza fini di lucro.

Chi volesse contattarmi segnalo la mia area contatti.

Sito web: www.areatecnicarai.it

Lascia un commento

I campi con l'asterisco (*) sono obligatori.
E' permesso l'uso di codice HTML.