hook_file_download() non funziona più

7 contenuti / 0 new
Ultimo contenuto
hook_file_download() non funziona più

Ciao a tutti.. mi è capitato un problema strano. Fino a qualche tempo fa la funzione personalizzata che gestisce i download sul mio sito funzionava perfettamente, è del tipo

function miomodulo_file_download($file) {
$filepath = file_create_path($file);
$fid = db_result(db_query('SELECT fid FROM {files} WHERE filepath = "%s" ', $filepath));
$nid = db_result(db_query('SELECT nid FROM {content_field_campodownload}  WHERE field_campodownload_fid = %d ', $fid['fid']));
$uid = db_result(db_query('SELECT uid FROM {node} WHERE nid = %d ', $nid['nid']));
if (feedbang_are_friends($uid['uid']) ) //è una funzione che controlla se l'utente autore del file e quello che vuole scaricare sono amici
{
return ;
}
else
{
return -1;
}

Ora ho notato che non funziona più. Cioè sia che siano amici o meno il file viene scaricato comunque. Il controllo è corretto, cioè in caso negativo entra nell'else e restituisce -1 però il file lo fa scaricare comunque mentre prima rimandava alla pagina di accesso negato.
p.s. ho provato a fargli restituire anche drupal_access_denied() ma il risultato è il medesimo

qualcuno può aiutarmi????

provando a inserire in una tabella creata da me, uid e nid, ho notato che uid è corretto mentre nid è = 0 non capisco gli errori. Vi posto la query
db_query("INSERT INTO {files_download} (uid, nid) VALUES (%d, %d)", $user->uid, $nid)

qualcuno almeno sa se sono stati cambiati gli standard hook_file_download() dato che l'accesso viene rilasciato anche se la funzione restituisce -1

facendo un po di modifiche ho notato che mettendo il file system come privato la funzione hook restituendo -1 mi rimanda alla pagina di autorizzazione negata. Però se dal path tolgo system e lo sostituisco con sites/default il download viene eseguito senza seguire nessuna autorizzazione. Questo non deve accadere. Inoltre la query

$nid = db_result(db_query('SELECT nid FROM {content_field_campodownload}  WHERE field_campodownload_fid = %d ', $fid['fid']));

restituisce sempre nid=0 e quindi invalida tutti i controlli. Come posso ovviare?

nessuno ha qualche suggerimento??

risolto.. grazie a tutti per l'aiuto