[GDRCD 5.x - Soluzione] Allarme messaggi privati
[GDRCD 5.x - Soluzione] Allarme messaggi privati postato il 03/12/2012 01:21:04 nel forum programmazione, open source e hosting e modificato da new_dojinshi il 03/12/2012 19:21:10
Dato che me l'hanno già chiesto in diversi, apro un nuovo 3d sperando sia di gradimento per tutti, con l'ottica e l'idea che possa servire magari a più persone così è più facilmente reperibile qui piuttosto che altri 3d con titoli magari non esatti ecc.
Se vi servirete di questo 3d.. si richiede un semplice grazie :P
La modifica permette di avere un allarme dei messaggi privati singolo. Invece di avere il controllo messaggi che suona all'impazzata finchè non aprire TUTTI i messaggi nuovi, con questa modifica il frame messaggi suonerà 1 volta soltanto ogni volta ci saranno dei nuovi messaggi che ancora non sono stati notificati con il suono (se attivato ovviamente).
La specifica modifica determina il cambiamento definitivo del sistema di allerta, quindi se volete tornare indietro, o vi ricordate cosa modificare al contrario o fatevi un backup dei file (fatelo sempre ogni volta che mettete mani ai file per nuove funzioni o modifica).
Il sistema è quindi simile a quello che si trova sulla land New Dojinshi, li in realtà ho lasciato la possibilità di 3 scelte per l'utente, 0-nessuno suono, 1-suono singolo per ogni nuovo messaggio, 2-suono in loop fino a lettura; con un iframe dedicato sulla colonna sinistra per l'impostazione com'è il pallino della disponibilità in pratica, ma questo complica un po' il lavoro specifico dato che vanno apportate così modifiche su più file.
Questo quindi è il mio consiglio:
Sul database modificate la tabella "messaggi" create un nuovo campo:
nome campo: avvisato
tipo campo: tinyint da 1 carattere
valore default: 0
in questo modo si c'è da modificare il sistema di invio messaggi, verrà impostato in automatico su ogni messaggio il campo avvisato = 0 che serve per far suonare il controllo.
Nel file "messaggi.inc.php" o cmq in quello che si usa nel frame messaggi dove è riportato il pulsante per aprire il message_center (questo non serve toccarlo), dove è riportato il codice all'inizio:
$non_letti=gdrcd_query("SELECT id FROM messaggi WHERE (destinatario = '".$_SESSION['login']."' OR destinatario='all' OR destinatario='".$_SESSION['gilda_affiliazione']."') AND letto=0 AND id > ".$_SESSION['last_istant_message']."", 'result');
$max_id=gdrcd_query("SELECT max(id) as max FROM messaggi WHERE (destinatario = '".$_SESSION['login']."' OR destinatario='all' OR destinatario='".$_SESSION['gilda_affiliazione']."') AND letto=0");?>
Aggiungere in mezzo a queste due righe questa nuova riga:
$non_avvisati=gdrcd_query("SELECT id FROM messaggi WHERE (destinatario = '".$_SESSION['login']."' OR destinatario='all' OR destinatario='".$_SESSION['gilda_affiliazione']."') AND avvisato=0 AND id > ".$_SESSION['last_istant_message']."", 'result');
Inoltre dove si trova il codice più in basso nello stesso file:
if ($PARAMETERS['mode']['allow_audio'] == 'ON' && $_SESSION['blocca_media'] != 1 && !empty($PARAMETERS['settings']['audio_new_messagges']))
{
Che è il controllo if prima del codice che fa suonare l'allarme messaggi, va modificata con aggiungengo il controllo della query inserita in cima e diventa così:
if ($PARAMETERS['mode']['allow_audio'] == 'ON' && $_SESSION['blocca_media'] != 1 && !empty($PARAMETERS['settings']['audio_new_messagges']) && gdrcd_query($non_avvisati, 'num_rows') > 0)
{
e ancora dopo il codice <object data="../ ecc ecc subito dopo la riga:
<!--[if IE 9]>
<embed src="../sounds/<?php echo $PARAMETERS['settings']['audio_new_messagges']; ?>" autostart="true" hidden="true" />
<![endif]-->
EDIT per aggiunta: piccola accortezza, in cui è cascato achille, quindi lo riporto per sicurezza. La riga di codice qui di seguito va inserita dopo questa riportata ma ovviamente, va all'interno del TAG <? di apertura del php dato che il precedente codice è html ed è quindi al di fuori dei tag per l'interprete. Basta scendere appena di qualche riga e trovare questo codice:
<?php
}
}
}
?>
Mette quindi la riga riportata qua sotto dopo il "<?php" e prima della prima "}" delle tre, basta posizionarsi accanto a "<?php" mandare un paio di volte <invio> così mettete un po' di spazio e poi incollare la riga qui sotto in una delle righe vuote aggiunte con il tasto <invio> ;)
$update_avvisi=gdrcd_query("UPDATE messaggi SET avvisato=1 WHERE destinatario = '".$_SESSION['login']."'", 'result');
EDIT: Pardon errore di battitura in questo pezzo, dopo il "SET" non è "avviso=1" ma ovviamente è "avvisato=1"
Così si ottiene un allarme messaggi per i soli messaggi appena arrivati. Arrivano e se quando scatta il refresh dell'iframe ce ne sono allora suona. Il pulsante se è animato in caso di messaggi NON LETTI resta animato o con la scritta nuovi messaggi quel che è insomma. Evita solo il loop senza fine del suono (ovviamente nel codice dell'oggetto "embed" va impostato loop 1 dato che l'iframe refresha ogni 30 secondi se si mette un suono di 3 secondi ad esempio e si mette il loop infinito suona poi per 30 secondi finchè non refresha e non ricarica quindi il nuovo codice senza il lettore perchè risulterà letto al successivo passaggio di controllo.
Spero vi sia utile.
EDIT: Ps. Se ci sono errori ovviamente segnalateli pure che li ricorreggo, potrebbe magari qualche copia incolla essere andato a caso :P in caso pardon, segnalate e si sistema. ;)
Pagine → 1
03/12/2012 07:04:53 e modificato da achille il 03/12/2012 07:47:25
Loki il tuo codice non da errori, ma anche dopo che ho impostato il LOOP su "1" in entrambi gli Embed, suona comunque all'Infinito :S
03/12/2012 19:37:15
ORA funziona tutto perfettamente!
Grazie Loki!! Grazie davvero :)
Discussione seguita da
Pagine → 1
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Wuthering Waves ↗
World of Tanks ↗
AlterEgo ↗