[RISOLTO - GDRCD 5.6.0.5] Messaggi anonimi in bacheca
[RISOLTO - GDRCD 5.6.0.5] Messaggi anonimi in bacheca postato il 16/02/2023 00:04:23 nel forum programmazione, open source e hosting e modificato da emendil il 03/03/2023 11:42:22
Buonasera!
Qualche anima pia ha già pensato alla funzione nel titolo? Vorrei mettere la possibilità di lasciare messaggi anonimi (senza avatar e a nome "Anonimo") nelle bachece ON, naturalmente l'utente "reale" deve restare visibile in log e agli admin!
Grazie a tutti fin da subito <3
Pagine → 1 2
16/02/2023 09:47:06
Ciao!
Questa funzionalità l'hai pensata per tutte le bacheche ON game? o solo per qualcuna specifica?
Perché le strade potrebbero essere diverse in base a come hai pensato la cosa.
16/02/2023 12:52:45 e modificato da haruka il 16/02/2023 14:00:17
Questa cosa da noi c'è, ma non riesco a condividerti il codice perché non è l'unica modifica fatta al forum.
Ti do qualche spunto ammettendo tu stia usando gdrcd.
1) Intanto, in messaggioaraldo, ho aggiunto un nuovo campo che ho chiamato "autoreoscurato" con valori possibili 0 e 1.
2) Poi, in tutti i form per l'inserimento o di un nuovo argomento o di una risposta, ho inserito un menù a tendina sì/no che va a scrivere nel database se 1/0 nella tabella messaggioaraldo, nella voce in questione.
3) In modifica devi fare lo stesso, oppure devi fare in modo che il valore originario sia preservato.
4) Nella pagina di lettura del thread - che dipende dalla versione che hai, nelle ultime dovrebbe essere read.inc.php - devi mettere una condizione. Del tipo "se autoreouscurato = 1 e chi legge ha i permessi inferiori a moderator" stampa "Autore Anonimo". Se "se autoreouscurato = 0" stampa nome di chi posta. Se "se autoreouscurato = 1 e chi legge ha i permessi pari o superiori a moderator" stampa il nome di chi posta. Occhio che ci sono i link attivi ai nomi, quindi devi anche aggirare quel problema oppure l'oscuramento è inefficace.
5) Lo stesso devi fare nella pagina dell'index del forum, quella che stampa l'elenco dei thread in una bacheca.
17/02/2023 09:02:36
Ciao! Per tutte le bacheche! Dovrei aver risolto comunque ^^
cbr89 ha scritto: Ciao!
Questa funzionalità l'hai pensata per tutte le bacheche ON game? o solo per qualcuna specifica?
Perché le strade potrebbero essere diverse in base a come hai pensato la cosa.
17/02/2023 09:04:59 e modificato da gdr-online.com il 17/02/2023 12:42:13
Ciao!
Ho risolto in una maniera (probabilmente arrangiata, ma funziona!):
Ho inserito una checkbox nel form di inserimento/risposta (rapida e non) a valore "anonimo"
In caso sia flaggato, invece che il nome in login viene settato il nome "Anonimo" con un avatar indefinito!
In composer ho aggiunto questo subito dopo il bbcode help:
<div class="form_info"><label><input type="checkbox" name = "anonimo" value="anonimo">Anonimo?</label></div>
In insert.inc.php invece questo:
if (isset($_POST['anonimo']))
{
gdrcd_query("INSERT INTO messaggioaraldo (id_messaggio_padre, id_araldo, titolo, messaggio, autore, data_messaggio, data_ultimo_messaggio ) VALUES (".gdrcd_filter('num', $_POST['padre']).", ".gdrcd_filter('num', $araldoData['id_araldo']).", '".gdrcd_filter('in', $_POST['titolo'])."', '".gdrcd_filter('in', $_POST['messaggio'])."', 'ANONIMO', NOW(), NOW())");
}
else{
gdrcd_query("INSERT INTO messaggioaraldo (id_messaggio_padre, id_araldo, titolo, messaggio, autore, data_messaggio, data_ultimo_messaggio ) VALUES (".gdrcd_filter('num', $_POST['padre']).", ".gdrcd_filter('num', $araldoData['id_araldo']).", '".gdrcd_filter('in', $_POST['titolo'])."', '".gdrcd_filter('in', $_POST['messaggio'])."', '".gdrcd_filter('in', $_SESSION['login'])."', NOW(), NOW())");
}
haruka ha scritto: Questa cosa da noi c'è, ma non riesco a condividerti il codice perché non è l'unica modifica fatta al forum.
Ti do qualche spunto ammettendo tu stia usando gdrcd.
1) Intanto, in messaggioaraldo, ho aggiunto un nuovo campo che ho chiamato "autoreoscurato" con valori possibili 0 e 1.
2) Poi, in tutti i form per l'inserimento o di un nuovo argomento o di una risposta, ho inserito un menù a tendina sì/no che va a scrivere nel database se 1/0 nella tabella messaggioaraldo, nella voce in questione.
3) In modifica devi fare lo stesso, oppure devi fare in modo che il valore originario sia preservato.
4) Nella pagina di lettura del thread - che dipende dalla versione che hai, nelle ultime dovrebbe essere read.inc.php - devi mettere una condizione. Del tipo "se autoreouscurato = 1 e chi legge ha i permessi inferiori a moderator" stampa "Autore Anonimo". Se "se autoreouscurato = 0" stampa nome di chi posta. Se "se autoreouscurato = 1 e chi legge ha i permessi pari o superiori a moderator" stampa il nome di chi posta. Occhio che ci sono i link attivi ai nomi, quindi devi anche aggirare quel problema oppure l'oscuramento è inefficace.
5) Lo stesso devi fare nella pagina dell'index del forum, quella che stampa l'elenco dei thread in una bacheca.
Moderazione: quando copi-incolli codici di programmazione, per favorire la lettura ed evitare problemi di impaginazione, ti preghiamo di utilizzare il tag "code". Grazie
17/02/2023 12:19:35
Ciao anche a me interessa molto questo argomento, ma non ho ben capito i passaggi che hai inserito! 😥
Per caso ci sono delle modifiche da apporre anche a livello del database?
Domando venia ma sono ancora un pochino alle prime armi con questo gdrcd!
17/02/2023 12:41:19 e modificato da anneth il 17/02/2023 12:49:31
Allur.. ho provato a mettere in piedi questa richiesta in un pacchetto gdrcd che ho già inviato a portale. Ma vorrei anticiparvela, se vi serve, condividendovi il README con la spiegazione delle modifiche.Introduco anche una modifica sull'avviso di come viene indicato che un post è stato modificato. Nella versione vanilla del gdrcd, viene aggiunta una stringa in fase di modifica con il nome di chi modifica e la data.
Ho eliminato questa parte per inserire due nuovi campi sul DB dove vengono salvati data-ora e autore della modifica. Questi verranno mostrati al di sotto della sezione data creazione (poco sotto l'avatar per intenderci). Anche in questo caso, l'autore della modifica è visualizzato solo da chi ha almeno i permessi di moderatore.
1) Aggiungere su DB 3 nuovi campi:
ALTER TABLE 'messaggioaraldo' ADD 'modificato_da' VARCHAR(20) NULL;
ALTER TABLE 'messaggioaraldo' ADD 'data_modifica' VARCHAR(50) NULL;
ALTER TABLE 'messaggioaraldo' ADD 'anonimo' INT NOT NULL DEFAULT '0';
2) aggiungere su includes/constant_value.inc.php la costante:
//Attiva o disattiva pacchetto anonimo
CONST ANONIMO = true;
3) modifiche su pages/forum/composer.inc.php
- Prima di if($padre == -1) inserire
<?php
if(ANONIMO){
?>
<div class="form_label">
Messaggio anonimo:
</div>
<div class="form_field">
<select name="anonimo">
<option selected value="0">No</option>
<option value="1">Si</option>
</select>
</div>
<?php
}
4) modifica su pages/forum/insert.inc.php
- cercare //Solo se il thread non è chiuso e sostituire la query successiva con:
gdrcd_query("INSERT INTO messaggioaraldo (id_messaggio_padre, id_araldo, titolo, messaggio, autore, data_messaggio, data_ultimo_messaggio, anonimo ) VALUES (".gdrcd_filter('num', $_POST['padre']).", ".gdrcd_filter('num', $araldoData['id_araldo']).", '".gdrcd_filter('in', $_POST['titolo'])."', '".gdrcd_filter('in', $_POST['messaggio'])."', '".gdrcd_filter('in', $_SESSION['login'])."', NOW(), NOW(), '".gdrcd_filter('int', $_POST['anonimo'])."')");
5) modifica su pages/forum/modifica.inc.php
- Prima di if($padre == -1) inserire
<?php
if(ANONIMO){
?>
<div class="form_label">
Messaggio anonimo:
</div>
<div class="form_field">
<select name="anonimo">
<option selected value="0" <?php echo ($row['anonimo']==0)? "selected" : ""; ?>>No</option>
<option value="1" <?php echo ($row['anonimo']==1)? "selected" : ""; ?>>Si</option>
</select>
</div>
<?php
}
6) modifica su pages/forum/edit.inc.php
- dopo $time = strftime('%d/%m/%Y %H:%M'); sostituire la successiva query con:
gdrcd_query("UPDATE messaggioaraldo SET data_modifica='".$time."', modificato_da='".$_SESSION['login']."', messaggio = '".gdrcd_filter('in', $_POST['messaggio'])."', titolo = '".gdrcd_filter('in', $_POST['titolo'])."', anonimo = '".gdrcd_filter('in', $_POST['anonimo'])."' WHERE id_messaggio = ".gdrcd_filter('num', $_POST['id_messaggio'])." LIMIT 1");
7) modifica su pages/forum/visit.inc.php
- cercare <div class="elementi_elenco"><!-- Autore --> e sostituire questo pezzo
<a href="main.php?page=scheda&pg=<?php echo gdrcd_filter('out', $row['autore']); ?>">
<?php echo gdrcd_filter('out', $row['autore']); ?>
</a>
con
<?php
if(ANONIMO){
echo "Anonimo";
}else{
?>
<a href="main.php?page=scheda&pg=<?php echo gdrcd_filter('out', $row['autore']); ?>">
<?php echo gdrcd_filter('out', $row['autore']); ?>
</a>
<?php
}
?>
8) modifiche su pages/forum/read.inc.php
Cercare (più o meno riga 56)
<a href="main.php?page=scheda&pg=<?php echo gdrcd_filter('out', $row['autore']); ?>">
<?php echo gdrcd_filter('out', $row['autore']); ?>
</a>
<div class="forum_avatar">
<img src="<?php echo gdrcd_filter('out', $row['url_img']); ?>" class="img_forum_avatar">
</div>
e sostituire con:
<?php
if(ANONIMO){
if(gdrcd_filter('int', $row['anonimo'])){
echo "Anonimo";
if($_SESSION['permessi'] >= MODERATOR){?>
<br><a href="main.php?page=scheda&pg=<?php echo gdrcd_filter('out', $row['autore']); ?>">
<?php echo "(".gdrcd_filter('out', $row['autore']).")"; ?>
</a>
<? }
?>
<div class="forum_avatar">
<img src="themes/advanced/imgs/items/standard_oggetto.png" class="img_forum_avatar">
</div>
<?php
}else{
?>
<a href="main.php?page=scheda&pg=<?php echo gdrcd_filter('out', $row['autore']); ?>">
<?php echo gdrcd_filter('out', $row['autore']); ?>
</a>
<div class="forum_avatar">
<img src="<?php echo gdrcd_filter('out', $row['url_img']); ?>" class="img_forum_avatar">
</div>
<?php
}
}else{
?>
<a href="main.php?page=scheda&pg=<?php echo gdrcd_filter('out', $row['autore']); ?>">
<?php echo gdrcd_filter('out', $row['autore']); ?>
</a>
<div class="forum_avatar">
<img src="<?php echo gdrcd_filter('out', $row['url_img']); ?>" class="img_forum_avatar">
</div>
<?php
}
?>
E sostituire <?php echo gdrcd_format_date($row['data_messaggio']).' '.gdrcd_format_time($row['data_messaggio']);?> con:
<?php echo gdrcd_format_date($row['data_messaggio']).' '.gdrcd_format_time($row['data_messaggio']);
if($row['data_modifica']) {
echo "<br>Modificato il: " . gdrcd_filter('out', $row['data_modifica']);
if($_SESSION['permessi'] >= MODERATOR){
echo "<br>Da: ".gdrcd_filter('out', $row['modificato_da']);
}
}
?>
Nella stessa pagina, più in fondo, cercare
<a href="main.php?page=scheda&pg=<?php echo gdrcd_filter('out', $row['autore']); ?>">
<?php echo gdrcd_filter('out', $row['autore']); ?>
</a>
<div class="forum_avatar">
<img src="<?php echo gdrcd_filter('out', $row['url_img']); ?>" class="img_forum_avatar">
</div>
e sostituirlo con:
<?php
if(ANONIMO){
if(gdrcd_filter('int', $row['anonimo'])){
echo "Anonimo";
if($_SESSION['permessi'] >= MODERATOR){?>
<br><a href="main.php?page=scheda&pg=<?php echo gdrcd_filter('out', $row['autore']); ?>">
<?php echo "(".gdrcd_filter('out', $row['autore']).")"; ?>
</a>
<? }?>
<div class="forum_avatar">
<img src="themes/advanced/imgs/items/standard_oggetto.png" class="img_forum_avatar">
</div>
<?php
}else{
?>
<a href="main.php?page=scheda&pg=<?php echo gdrcd_filter('out', $row['autore']); ?>">
<?php echo gdrcd_filter('out', $row['autore']); ?>
</a>
<div class="forum_avatar">
<img src="<?php echo gdrcd_filter('out', $row['url_img']); ?>" class="img_forum_avatar">
</div>
<?
}
?>
E subito dopo sostituire <?php echo gdrcd_format_date($row['data_messaggio']).' '.gdrcd_format_time($row['data_messaggio']);?> con
<?php echo gdrcd_format_date($row['data_messaggio']).' '.gdrcd_format_time($row['data_messaggio']);
if($row['data_modifica']) {
echo "<br>Modificato il: " . gdrcd_filter('out', $row['data_modifica']);
if($_SESSION['permessi'] >= MODERATOR){
echo "<br>Da: ".gdrcd_filter('out', $row['modificato_da']);
}
}
?>
NB. su read la modifica è sostanzialmente uguale, per come è strutturato il file, l'importante è che venga fatta in entrambi i punti: la prima modifica riguarda il post iniziale, mentre la seconda riguarda le risposte del post.
cercare infine
<div class="form_label">
Risposta rapida
</div>
ed aggiungere subito dopo:
<?php
if(ANONIMO){
?>
<div class="form_label">
Messaggio anonimo:
</div>
<div class="form_field">
<select name="anonimo">
<option selected value="0">No</option>
<option value="1">Si</option>
</select>
</div>
<?php
} ?>
17/02/2023 12:54:22
emendil ha scritto: Ciao!
Ho risolto in una maniera (probabilmente arrangiata, ma funziona!):
Però con questa soluzione rapida, ti perdi la possibilità di controllare in tempo reale chi è il vero autore del messaggio e devi andarlo a vedere dai log.
@Anneth, grazie come sempre per tutto il lavoro che fai :)
17/02/2023 13:54:21
@haruka sempre un piacere :)
Aggiungo che con la modifica sopra, chi è Moderatore ha la visibilità di chi è il proprietario del post e di chi effettua una modifica.
21/02/2023 16:38:46
Grazie! <3 Aspetto la pubblicazione del pacchetto allora :3
anneth ha scritto: @haruka sempre un piacere :)
Aggiungo che con la modifica sopra, chi è Moderatore ha la visibilità di chi è il proprietario del post e di chi effettua una modifica.
21/02/2023 16:39:52
Si, come detto è stata una soluzione tampone XD Appena il lavoro mi concede un po' di respiro ci rimetto mano (se santa @Anneth non risolve prima :3)
haruka ha scritto: [quote]emendil ha scritto: Ciao!
Ho risolto in una maniera (probabilmente arrangiata, ma funziona!):
Però con questa soluzione rapida, ti perdi la possibilità di controllare in tempo reale chi è il vero autore del messaggio e devi andarlo a vedere dai log.
@Anneth, grazie come sempre per tutto il lavoro che fai :)[/quote]
Discussione seguita da
Pagine → 1 2
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Fallen Gods ↗
Project Entropy ↗
Cafuné ↗
Crossout ↗
Enlisted ↗
The Coven ↗
Exclusive Villa GdR ↗
Sea of Conquest ↗
Tibia ↗