prima della chiamata a user_get_id che genera il warning stampa a video la variabile passata come parametro $user (probabilmente è vuota nel caso non ci sia loggati, ma non so com'è gestita... se uno è loggato dovrebbe essere un array invece)... a questo punto verifica com'è settata per gli utenti non loggati... supponendo (ma è solo una suppozione) che in quel caso non sia un array, dovresti racchiudere la chiamata in un if, tipo:

Codice PHP:
if (!is_array($user)) {
   ...
   ...
user_get_id($user)...
   ...

e così per l'altra casistica

In generale queste funzioni devono essere chiamate solo - appunto - se l'utente è loggato... una soluzione "tampone" è invece anteporre il carattere "@" prima delle chiamate che generano il warning