Con questa query estraggo tutti i dati utente:
Codice PHP:
$sql["extract_session"] = <<<SQL
Select s.* , u.* , g.* , Count(mp.pm_read) As TotPm
From sessions As s
Inner Join users As u On ( s.sess_uid = u.user_id )
Left Join groups As g On ( g.group_id = u.user_group )
Left Join pm As mp On ( mp.pm_read = '0' And mp.pm_receiver = u.user_id )
Where s.sess_hash = '%s' And s.sess_ip = '%s' And s.sess_useragent = '%s' Limit 1
SQL;
E poi con un if controllo se la "Left Join groups" ha gli elementi dell'array validi ( magari il gruppo a cui appartiene l'utente è stato cancellato e quindi, giustamente, gli elementi hanno valore "vuote" ).
Codice PHP:
/* Controlla che il gruppo a cui appartiene l'utente non sia stato cancellato */
if ( $this->session["group_id"] == "" )
{
$query = $this->db->execute( "extract_group" );
$query = $this->db->execQuery( $query );
$query = $this->db->fetch_array( $query );
foreach ( $query as $key => $value )
{
$this->session[$key] = $value;
}
}
$this->db->execute( "extract_group" ); sta per : Select * From groups Where group_id = '2'
Quindi se $this->session["group_id"] no ha valore ( = il gruppo è stato cancellato ) esegue una query che estrae i dati dal gruppo normale degli utenti e lo aggiunge all'array $this->session.
Solo che preferirei evitare. Vorrei eliminare questo if e magari fare il controllo direttamente nella prima query. ( utlizzo mysql )