salve ragazzi sto cercando di scrivere un componente per joomla 1.5 e poi 1.6 che vada ad assecondare i bisogni della nostra realta. noi siamo un Wisp, per gestire i nostri utenti utiliziamo un server radius, basato su linux o meglio su freeradius.
La gestione viene tutta effettuata tramite un mini portale web interno che ci permette di creare profili, utenze, gestire fatturazione e quant'altro.
la mia idea è di creare un componente che abbia le stesse caratteristiche che vada quindi ad interaggire con il DB del server radius.
Circa 2 settimane fa ho iniziato la lavorazione del componente, ma qui i primi problemi con il recuperare giustamente i dati, o meglio cerco di spiegare un po meglio
area utenti:
ho creato un model che mi recupera i dati di tutti gli utenti dalla tabella user
function RecuperoUserLista()
{
$dbxo = new externaldatabase ( 'radius' );
$db = $dbxo->getDB ();
$query = "SELECT * FROM rm_users WHERE rm_users.groupid > 0 ORDER BY rm_users.username ASC ";
$db->setQuery($query);
$rows = $db->loadAssocList();
if ($db->getErrorNum()) {
echo $db->stderr();
return false;
}
return $rows;
}
poi li passo alla view.html.php dove con le seguenti informazioni
$model = &$this->getModel();
//richiama i metodi
$rows = $model->RecuperoUserLista();
//marca le array per mandarle in template
$this->assignRef( 'rows', $rows );
mando al template i dati per poi con un "for" vado a creare il listato degli utenti recuperati
fino qui tutto ok.
ora arriva il problema vorrei far colorare lo sfondo della cella username dell'utente se esso sta navigando on-line.
nel php procedurale questo gia lo avevo risolto al momento della select di recupero degli utenti ma qui mi trovo un po cosi cosi.
in pratica nel database del freeradius ho una tabella chiamata "radacct". questa tabella contiene in linea di massima la registrazione delle sessioni eseguite, ha un numero id ma non è legato alla tabella username.
essendo che questa tabella contiene ad oggi quasi 4000 righe non è semplice fare eseguire una query.
in codice procedurale facevo una select * FROM radacct LIKE = username
perche l'unico modo per provare il risultato è quello di filtrare per username.
ho dato il comando LIKE perche se un utente è registrato come pinco.pallino nella tabella user ma quando va a fare il login per la rete internet mette PINCO.PALLINO, nella tabella viene registrato quest'ultimo, quindi una eventuale query SELECT * FROM radacct WHERE username = "pinco.pallino" non produrrebbe alcun risultato.
ora la mia domanda è come posso fare per risolvere questo mio dilemma? come posso portare in una view contemporaneamente 2 risultati legati tra loro da una username?
Credetimi non è semplice da spiegare XD
spero che possiate aiutarmi
Maurizio