[Messaggi 3.0] Lista partecipanti postato il nel forum programmazione, gdrcd, grafica e open source e modificato il 24/05/2022 12:03:20 da crystaltokyo
Ciao ragazzi,
Intanto un ringrazio sentito a SideReal e a tutti coloro che hanno lavorato al pacchetto Messaggi 3.0.
Proprio su questo pacchetto avrei una domanda di carattere tecnico.
Nella pagina msg_list, alla riga 44, c'č la query di selezionamento:
if($flGESTCUSTOM) $whereFilter = "msggrpuser.tpuser ='CUSTOM'";
else $whereFilter = "msggrpuser.nome ='".gdrcd_filter('in', $_SESSION['login'])."' AND msg.dtsend>msggrpuser.dtdel AND msggrp.tpgroup='".$TPGROUP."' ";
//Query
$query = "SELECT msggrpuser.dtlastread, msggrp.dsgroup, msggrp.flreadonly, msggrp.idgroup as idgroup, max(msg.idmsg) as maxidmsg, max(msg.dtsend) as maxdtsend, msggrp.tpgroup, msggrp.ctgroup, (SELECT GROUP_CONCAT(DISTINCT nome ORDER BY FIELD(tpuser, 'CUSTOM','USER', 'SYSTEM', 'DELETED') SEPARATOR ', ') as memberList FROM msggrpuser WHERE msggrpuser.idgroup=msggrp.idgroup and msggrpuser.dtstart<=NOW() and msggrpuser.dtend >= NOW()) as memberList
FROM msggrp msggrp
LEFT JOIN msggrpuser ON msggrp.idgroup = msggrpuser.idgroup and msggrpuser.dtstart<=NOW() and msggrpuser.dtend > NOW()
LEFT JOIN msg msg on msggrp.idgroup = msg.idgroup
WHERE ".$whereFilter."
group by msggrp.idgroup,msggrp.dsgroup order by maxdtsend desc";
// dati del gruppo
$idgroup = gdrcd_filter('num', $row['idgroup']);
$tpgroup = gdrcd_filter('in', $row['tpgroup']);
$ctgroup = gdrcd_filter('in', $row['ctgroup']);
list($data_spedito, $ora_spedito) = explode(' ', $row['maxdtsend']); // data-ora ultimo messaggio
// partecipanti
if($ctgroup == 'GLOBAL') $partecipanti = 'Tutti';
else if($ctgroup == 'ONLINE') $partecipanti = 'Tutti (online)';
else if($ctgroup == 'SYSTEM') $partecipanti = $_SESSION['login'];
else $partecipanti = gdrcd_filter('in', $row['memberList']);
$partecipanti = strlen($partecipanti)>33 ? substr($partecipanti,0,30).'…' : $partecipanti;
// descrizione gruppo
$dsgroup = gdrcd_filter('out', $row['dsgroup']);
$dsgroup = strlen($dsgroup)>28 ? substr($dsgroup,0,25).'…' : $dsgroup;
<div class="elementi_elenco" title="<?php echo $partecipanti; ?>">
<br><?php echo $partecipanti; ?>
</div>
« Dalla glaciazione di cristallo, noi rinasceremo »
http://crystaltokyo.altervista.org
Pagine → 1
24/05/2022 12:12:18 e modificato il 24/05/2022 12:38:15 da kasa
Č sufficiente inserire nella subquery che definisce memberList un filtro che esclude dai nomi l'Utente di sessione.
Una cosa del genere, per intenderci:
if($flGESTCUSTOM) $whereFilter = "msggrpuser.tpuser ='CUSTOM'";
else $whereFilter = "msggrpuser.nome ='".gdrcd_filter('in', $_SESSION['login'])."' AND msg.dtsend>msggrpuser.dtdel AND msggrp.tpgroup='".$TPGROUP."' ";
//Query
$query = "SELECT msggrpuser.dtlastread, msggrp.dsgroup, msggrp.flreadonly, msggrp.idgroup as idgroup, max(msg.idmsg) as maxidmsg, max(msg.dtsend) as maxdtsend, msggrp.tpgroup, msggrp.ctgroup,
(
SELECT GROUP_CONCAT(DISTINCT nome ORDER BY FIELD(tpuser, 'CUSTOM','USER', 'SYSTEM', 'DELETED') SEPARATOR ', ') as memberList
FROM msggrpuser
WHERE msggrpuser.idgroup=msggrp.idgroup
and msggrpuser.dtstart<=NOW()
and msggrpuser.dtend >= NOW()
and msggrpuser.nome != '".gdrcd_filter('in', $_SESSION['login'])."'
) as memberList
FROM msggrp msggrp
LEFT JOIN msggrpuser ON msggrp.idgroup = msggrpuser.idgroup and msggrpuser.dtstart<=NOW() and msggrpuser.dtend > NOW()
LEFT JOIN msg msg on msggrp.idgroup = msg.idgroup
WHERE ".$whereFilter."
group by msggrp.idgroup,msggrp.dsgroup order by maxdtsend desc";
GitHub: https://github.com/GDRCD/GDRCD
Discord: https://discord.com/invite/K2eWXpvu4M
GdR-O: https://www.gdr-online.com/readforum.asp?id=250579
24/05/2022 12:34:44 e modificato il 24/05/2022 12:35:20 da crystaltokyo
kasa ha scritto:
and msggrpuser.nome != '".gdrcd_filter('in', $_SESSION['login'])."'
« Dalla glaciazione di cristallo, noi rinasceremo »
http://crystaltokyo.altervista.org
24/05/2022 12:36:13 e modificato il 24/05/2022 12:37:13 da kasa
Perfetto!
Aggiorno anche il code sopra per "aiutare" chi copia brutalmente senza leggere l'intera conversazione (stackoverflow docet!)
Grazie per il contributo!
Kasa.
GitHub: https://github.com/GDRCD/GDRCD
Discord: https://discord.com/invite/K2eWXpvu4M
GdR-O: https://www.gdr-online.com/readforum.asp?id=250579
Pagine → 1
Discussione seguita da:
Non puoi scrivere in questo Forum
Aggiungi Discussione ai Preferiti
Inoltra Discussione
Forum Programmazione, GDRCD, Grafica e Open Source
Torna alla lista Forum
✋😟
Abbiamo rilevato che stai usando un software per bloccare la pubblicità!
L'utilizzo di GDR-online.com è gratuito da oltre 17 anni ma è necessario coprire i costi per mantenerlo online... ti chiediamo di aiutarci disabilitando il blocco dei banner pubblicitari.
Togliere il blocco significa fare in modo che GDR-online.com possa continuare a far conoscere piccoli giochi amatoriali gratuitamente e offrire un servizio sempre migliore e adatto alle esigenze dei suoi giocatori!
Se questo avviso continua ad apparire nonostante tu abbia autorizzato il portale:
- Verifica nelle opzioni che venga disattivato AdBlock in tutto il dominio gdr-online.com e non solo in una pagina
- Controlla di non avere fra le estensioni installate altre analoghe ad AdBlock, come AdBlock Plusbr, ublock origin, ecc.
- Probabilmente sul tuo PC è installato un Antivirus che ha anche funzioni di blocco pubblicità
- Se usi Firefox impostare il "Blocco Contenuti" su "Normale" e non su "Restrittivo". Per farlo clicca sull'icona dello scudo vicino all'URL e clicca su "Disattiva Blocco per questo sito"
- Prova a premere CTRL + F5, riloggarti e vedi se il problema persiste