[GDRCD 5.4] - Messaggi stile WA
25/06/2021 15:42:21
Posto l'index nuovo (corretto).
Adesso, se la conversazione viene svuotata, anche se il destinatario non ha letto l'ultimo messaggio ricevuto in una data conversazione, viene segnato come letto in modo che non resti l'avviso di messaggio da leggere.
<?php
//Determinazione pagina
if(isset($_REQUEST['offset']) === false) {
$pagebegin = 0;
} else {
$pagebegin = (int) $_REQUEST['offset'] * $PARAMETERS['settings']['messages_per_page'];
}
$pageend = $PARAMETERS['settings']['messages_per_page'];
//Conteggio messaggi totali
$record = gdrcd_query("SELECT COUNT(*) FROM messaggi WHERE destinatario = '".$_SESSION['login']."'");
$totaleresults = $record['COUNT(*)'];
//Elenco messaggi paginato
if(gdrcd_filter('get', $_POST['op']) == 'eliminatutto') {
gdrcd_query(" UPDATE messaggi
SET mittente_del = IF(mittente = '".gdrcd_filter('in', $_SESSION['login'])."', 1, mittente_del),
destinatario_del = IF(destinatario = '".gdrcd_filter('in', $_SESSION['login'])."', 1, destinatario_del),
letto = IF(destinatario = '".gdrcd_filter('in', $_SESSION['login'])."', 1, letto)
WHERE (mittente = '".gdrcd_filter('in', $_SESSION['login'])."' AND destinatario = '".$_POST['dest']."') OR (destinatario = '".gdrcd_filter('in', $_SESSION['login'])."' AND mittente =
'" .$_POST['dest']. "') ");
}
$result = gdrcd_query("SELECT personaggio_conversazione, testo, letto, oggetto, MAX(spedito) as spedito
FROM (
(
SELECT mittente as personaggio_conversazione, testo, letto, oggetto, spedito
FROM messaggi
WHERE 1
AND destinatario = '".$_SESSION['login']."'
AND destinatario_del = 0
AND spedito = (SELECT MAX(mcheck.spedito) from messaggi as mcheck WHERE mcheck.destinatario = messaggi.destinatario AND mcheck.mittente = messaggi.mittente )
GROUP BY mittente
ORDER BY spedito DESC
)
UNION ALL
(
SELECT destinatario as personaggio_conversazione, testo, letto, oggetto, spedito
FROM messaggi
WHERE 1
AND mittente = '".$_SESSION['login']."'
AND mittente_del = 0
AND spedito = (SELECT MAX(mcheck.spedito) from messaggi as mcheck WHERE mcheck.destinatario = messaggi.destinatario AND mcheck.mittente = messaggi.mittente )
GROUP BY destinatario
ORDER BY spedito DESC
)
) AS conversazioni
GROUP BY personaggio_conversazione
ORDER BY spedito DESC
LIMIT ".$pagebegin.", ".$pageend."", 'result');
$numresults = gdrcd_query($result, 'num_rows');
?>
<div class="elenco_record_gioco">
<form action="main.php?page=messages_center_new&offset=0&op=search" method="post">
<input type="text" name="query" placeholder="Chi ti ha inviato il messaggio?" style="width:200px;"/>
<input type="text" name="query1" placeholder="A chi hai inviato il messaggio?" style="width:200px;"/>
<input type="text" name="query2" placeholder="Restringi ricerca con testo" style="width:200px;"/>
<input type="submit" value="Cerca" />
</form>
<!-- link scrivi messaggio -->
<div class="link_back">
<a href="main.php?page=messages_center_new&op=create">
<?php echo $MESSAGE['interface']['messages']['new']; ?>
</a>
</div>
<br><br>
<!-- link scrivi messaggio -->
<?php
if($numresults > 0) { ?>
<table class="tabellamessaggi">
<tr>
<td class="checkmessaggi" style="width:10%!important; background:none;">
<span class="titoli_elenco" style="font-weight:bold;">
Svuota la <br> conversazione
</span>
</td>
<td class="checkmessaggi" style="background:none;">
<!-- Checkbox -->
</td>
<td class="elementi_elenco_data" style="width: 18%!important;">
<span class="titoli_elenco" style="font-weight:bold;">
Ultimo messaggio del:
</span>
</td>
<td class="elementi_elenco_mittente" style="width: 18%!important;">
<span class="titoli_elenco" style="font-weight:bold;">
Conversazione con:
</span>
</td>
<td class="elementi_elenco_preview">
<span class="titoli_elenco" style="font-weight:bold;">
<?php echo gdrcd_filter('out', $MESSAGE['interface']['messages']['preview']); ?>
</span>
</td>
</tr>
<?php
while($row = gdrcd_query($result, 'fetch')) {
?>
<tr>
<td class="checkmessaggi" style="text-align:center;">
<form action="main.php?page=messages_center_new" method="post">
<div class="form_submit">
<input type="hidden" name="op" value="eliminatutto" />
<input type="hidden" name="dest" value="<?php echo $row['personaggio_conversazione']; ?>" />
<input type="image" src="imgs/icons/erase.png" style="width:20px; height:20px; margin-top: 20px;" />
</div>
</form>
</td>
<td class="checkmessaggi">
<div class="elementi_elenco_checkmessaggi">
<?php
if($row['letto'] == 0) { ?>
<img src="imgs/icons/mail_new.png" class="colonna_elengo_messaggi_icon">
<?php
} else { ?>
<img src="imgs/icons/mail_read.png" class="colonna_elengo_messaggi_icon">
<?php
} ?>
</div>
</td>
<td class="elementi_elenco_data">
<div>
<?php
$quando = explode(" ", $row['spedito']);
echo gdrcd_format_date($quando[0]).'<br/>'.gdrcd_filter('out', $MESSAGE['interface']['messages']['time']).' '.gdrcd_format_time($quando[1]);
?>
</div>
</td>
<td class="elementi_elenco_mittente">
<div>
<?php
echo '<a href="main.php?page=scheda&pg='.$row['personaggio_conversazione'].'">'.$row['personaggio_conversazione'].'</a>';
?>
</div>
</td>
<td class="elementi_elenco_preview">
<div>
<a href="main.php?page=messages_center_new&op=readnew&personaggio_conversazione=<?php echo $row['personaggio_conversazione'] ?>"><i><b style="color:#1a7aba;">Oggetto messaggio: <?php echo gdrcd_filter('out', substr($row['oggetto'], 0, 100)); ?></b></i><br><?php echo gdrcd_filter('out', substr($row['testo'], 0, 100)); ?>
...
</a>
</div>
</td>
<td style="display:none;">
<?php
if($_GET['op'] != 'inviati') { ?>
<div class="controlli_elenco" style="display:none;">
<div class="controllo_elenco">
<!-- reply -->
<form action="main.php?page=messages_center_new" method="post">
<input type="hidden" name="reply_dest" value="<?php echo $row['mittente']; ?>" />
<input type="hidden" name="genitore" value="<?php echo $row['id']; ?>" />
<input type="hidden" name="op" value="reply" />
<input type="submit" value="Rispondi" />
</form>
</div>
</div>
<?php
} else { ?>
<div class="controlli_elenco">
<div class="controllo_elenco">
<!-- reply -->
<form action="main.php?page=messages_center_new" method="post">
<input type="hidden" name="reply_dest" value="<?php echo $row['destinatario']; ?>" />
<input type="hidden" name="genitore" value="<?php echo $row['id']; ?>" />
<input type="hidden" name="op" value="reply" />
<input type="submit" value="<?php echo gdrcd_filter('out', $MESSAGE['interface']['messages']['reply']); ?>" />
</form>
</div>
</div>
<?php
} ?>
</td>
</tr>
<?php
$_SESSION['last_istant_message'] = $row['id'];
}//while
gdrcd_query($result, 'free');
;
?>
</table>
<?php
echo '';
} else {
if($totaleresults > $PARAMETERS['settings']['messages_limit']) {
echo '<div class="warning">'.gdrcd_filter('out', $MESSAGE['interface']['messages']['please_erase']).'</div>';
}
echo '<div class="warning">'.gdrcd_filter('out', $MESSAGE['interface']['messages']['no_message']).'</div>';
}
?>
<div class="pager">
<?php if (false !== strpos($_SERVER['REQUEST_URI'], '/main.php?page=messages_center_new&op=inviati')) {
if($totaleresults > $PARAMETERS['settings']['messages_per_page']) {
echo gdrcd_filter('out', $MESSAGE['interface']['pager']['pages_name']);
for($i = 0; $i <= floor($totaleresults / $PARAMETERS['settings']['messages_per_page']); $i++) {
if($i != $_REQUEST['offset']) { ?>
<a href="main.php?page=messages_center_new&op=inviati&offset=<?php echo $i; ?>"><?php echo $i + 1; ?></a>
<?php } else {
echo ' '.($i + 1).' ';
}
}
} }
else {
if($totaleresults > $PARAMETERS['settings']['messages_per_page']) {
echo gdrcd_filter('out', $MESSAGE['interface']['pager']['pages_name']);
for($i = 0; $i <= floor($totaleresults / $PARAMETERS['settings']['messages_per_page']); $i++) {
if($i != $_REQUEST['offset']) { ?>
<a href="main.php?page=messages_center_new&offset=<?php echo $i; ?>"><?php echo $i + 1; ?></a>
<?php } else {
echo ' '.($i + 1).' ';
}
}
}
}
?>
</div>
</div>
25/06/2021 15:44:30
haruka ha scritto: ...
Prova a cambiare la query di selezione dei messaggi con questa.
Non è elegantissima, ma dovrebbe svolgere il suo lavoro.
$result = gdrcd_query("
SELECT IF(destinatario = '".$_SESSION['login']."', mittente, destinatario) AS personaggio_conversazione,
testo, letto, oggetto, spedito
FROM messaggi
WHERE 1
AND (
(destinatario = '".$_SESSION['login']."' && destinatario_del = 0)
||
(mittente = '".$_SESSION['login']."' && mittente_del = 0)
)
AND spedito = (
SELECT MAX(mcheck.spedito)
FROM messaggi AS mcheck
WHERE 1
AND (
(mcheck.destinatario = messaggi.destinatario AND mcheck.mittente = messaggi.mittente)
||
(mcheck.destinatario = messaggi.mittente AND mcheck.mittente = messaggi.destinatario)
)
)
GROUP BY personaggio_conversazione
ORDER BY letto, spedito DESC
LIMIT ".$pagebegin.", ".$pageend."", 'result');
Ho tolto l'UNION e ora vengono presi sempre e solo gli ultimi messaggi.
Kasa.
25/06/2021 16:09:18 e modificato da haruka il 25/06/2021 16:13:06
kasa ha scritto:
Prova a cambiare la query di selezione dei messaggi con questa.
Non è elegantissima, ma dovrebbe svolgere il suo lavoro.
$result = gdrcd_query("
SELECT IF(destinatario = '".$_SESSION['login']."', mittente, destinatario) AS personaggio_conversazione,
testo, letto, oggetto, spedito
FROM messaggi
WHERE 1
AND (
(destinatario = '".$_SESSION['login']."' && destinatario_del = 0)
||
(mittente = '".$_SESSION['login']."' && mittente_del = 0)
)
AND spedito = (
SELECT MAX(mcheck.spedito)
FROM messaggi AS mcheck
WHERE 1
AND (
(mcheck.destinatario = messaggi.destinatario AND mcheck.mittente = messaggi.mittente)
||
(mcheck.destinatario = messaggi.mittente AND mcheck.mittente = messaggi.destinatario)
)
)
GROUP BY personaggio_conversazione
ORDER BY letto, spedito DESC
LIMIT ".$pagebegin.", ".$pageend."", 'result');
kasa ha scritto:
Ho tolto l'UNION e ora vengono presi sempre e solo gli ultimi messaggi.
Kasa.
Così funziona, ma rallenta di brutto l'apertura della pagina dei messaggi. Almeno, sul pg principale me ne accorgo, sul doppio va un po' meglio, ma neanche tantissimo.
A livello di velocità di apertura della pagina, senza dubbio meglio la soluzione con UNION.
A meno che non si possa fare qualcosa sulla query per limitare, in index, la lettura della conversazione a quelle intercorse nell'ultimo mese.
E poi, magari, aggiungere un link nella scheda, per intenderci dove c'è la possibilità di mandare un messaggio privato, dove invece che aprire la finestra vuota con l'editor, vada a caricare la pagina: "main.php?page=messages_center_new&op=readnew&personaggio_conversazione=xxx"
25/06/2021 18:03:35
haruka ha scritto:
Così funziona, ma rallenta di brutto l'apertura della pagina dei messaggi. Almeno, sul pg principale me ne accorgo, sul doppio va un po' meglio, ma neanche tantissimo.
Una cosa del genere migliora i tempi?
$result = gdrcd_query("
SELECT conversazioni.personaggio AS personaggio_conversazione,
conversazioni.testo, conversazioni.spedito, conversazioni.letto, conversazioni.oggetto
FROM (
SELECT IF(destinatario = '".$_SESSION['login']."', mittente, destinatario) AS personaggio,
messaggi.*
FROM messaggi
) AS conversazioni
INNER JOIN (
SELECT MAX(spedito) AS spedito,
IF(destinatario = '".$_SESSION['login']."', mittente, destinatario) AS personaggio
FROM messaggi
WHERE 1
AND (
(destinatario = '".$_SESSION['login']."' AND destinatario_del = 0)
||
(mittente = '".$_SESSION['login']."' AND mittente_del = 0)
)
GROUP BY personaggio
) AS ultimo_messaggio_conversazione
ON (
conversazioni.spedito = ultimo_messaggio_conversazione.spedito
AND
conversazioni.personaggio = ultimo_messaggio_conversazione.personaggio
)
WHERE 1
AND (
(conversazioni.destinatario = '".$_SESSION['login']."' AND conversazioni.destinatario_del = 0)
||
(conversazioni.mittente = '".$_SESSION['login']."' AND conversazioni.mittente_del = 0)
)
ORDER BY conversazioni.spedito DESC
LIMIT ".$pagebegin.", ".$pageend, 'result');
haruka ha scritto:
E poi, magari, aggiungere un link nella scheda, per intenderci dove c'è la possibilità di mandare un messaggio privato, dove invece che aprire la finestra vuota con l'editor, vada a caricare la pagina: "main.php?page=messages_center_new&op=readnew&personaggio_conversazione=xxx"
Eh si.
Conviene fare una cosa del genere ovunque compaiono funzioni di invio messaggi.
Kasa.
25/06/2021 18:23:43
kasa ha scritto: [quote]haruka ha scritto:
Così funziona, ma rallenta di brutto l'apertura della pagina dei messaggi. Almeno, sul pg principale me ne accorgo, sul doppio va un po' meglio, ma neanche tantissimo.
Una cosa del genere migliora i tempi?
Assolutamente! :D si vola, in confronto a prima.
Ok, allora nel read ho aggiunto i flag letto/non letto
C'è da sistemare il manda messaggi e poi ci siamo.
Io penso a breve di poter riassumere tutto. Se qualche anima pia avrà voglia di testare poi, vista la complessità, insomma di debuggare, a quel punto si può fare il pacchetto vero e proprio.
25/06/2021 18:30:24
haruka ha scritto: ...
Eventualmente debuggo io, per vedere se tutto funziona correttamente.
Quando hai la modifica completa, al massimo, inviala qui in un unico messaggio o in PVT.
Come preferisci.
Kasa.
25/06/2021 18:55:50 e modificato da haruka il 25/06/2021 18:56:49
*** STEP 1 ***
Al fine di permettere agli utenti di selezionare il nuovo o il vecchio sistema di messaggistica, effettuare la seguente modifica in database.
Tabella personaggio, aggiungere il campo
new_mess | tinyint(1) | Come definito: 0
****
Aprire il file pages/scheda_modifica.inc.php
sostituire:
/*Carico le informazioni del PG*/
$record = gdrcd_query("SELECT descrizione, affetti, cognome, online_status, url_img, url_img_chat, url_media, blocca_media, stato, salute FROM personaggio WHERE nome='" . gdrcd_filter('get',
$_REQUEST['pg']) . "'");
con
/*Carico le informazioni del PG*/
$record = gdrcd_query("SELECT descrizione, affetti, cognome, online_status, url_img, url_img_chat, url_media, blocca_media, new_mess, stato, salute FROM personaggio WHERE nome='" . gdrcd_filter('get',
$_REQUEST['pg']) . "'");
sostituire:
gdrcd_query("UPDATE personaggio SET cognome = '" . gdrcd_filter('in',
$_POST['modifica_cognome']) . "', affetti = '" . $modifica_affetti . "', descrizione = '" . $modifica_background . "', url_media = '" . gdrcd_filter('in',
gdrcd_filter('fullurl',
$_POST['modifica_url_media'])) . "', blocca_media = " . (int) $blocca_media . ", url_img = '" . gdrcd_filter('in',
gdrcd_filter('fullurl',
$_POST['modifica_url_img'])) . "', url_img_chat = '" . gdrcd_filter('in',
gdrcd_filter('fullurl',
$_POST['modifica_url_img_chat'])) . "', online_status = '" . $online_state . "' WHERE nome = '" . gdrcd_filter('in',
$_REQUEST['pg']) . "'");
[code]
con
[code]
gdrcd_query("UPDATE personaggio SET cognome = '" . gdrcd_filter('in',
$_POST['modifica_cognome']) . "', affetti = '" . $modifica_affetti . "', descrizione = '" . $modifica_background . "', url_media = '" . gdrcd_filter('in',
gdrcd_filter('fullurl',
$_POST['modifica_url_media'])) . "', blocca_media = " . (int) $blocca_media . ", new_mess= '" . gdrcd_filter('in', $_POST['modifica_messaggistica']) . "', url_img = '" . gdrcd_filter('in',
gdrcd_filter('fullurl',
$_POST['modifica_url_img'])) . "', url_img_chat = '" . gdrcd_filter('in',
gdrcd_filter('fullurl',
$_POST['modifica_url_img_chat'])) . "', online_status = '" . $online_state . "' WHERE nome = '" . gdrcd_filter('in',
$_REQUEST['pg']) . "'");
dove c'è:
<div class='form_field'>
<input type="checkbox"
name="blocca_media" <?php echo ($record['blocca_media']) ? 'checked="checked"' : ''; ?>
class="form_input"/>
</div>
subito sotto aggiungere:
<div class='form_label'>
Sistema di messaggistica
</div>
<div class='form_field'>
<select name="modifica_messaggistica">
<option value="0" <?php if ($record['new_mess'] == '0')
{
echo 'selected';
} ?> />
Vecchio sistema</option>
<option value="1" <?php if ($record['new_mess'] == '1')
{
echo 'selected';
} ?> />
Nuovo sistema</option>
</select>
</div>
*****
Aprire il file pages/scheda.inc.php
sostituire:
<div class="ritratto_invia_messaggio"><!-- Link invia messaggio -->
<a href="main.php?page=messages_center&op=create&reply_dest=<?php echo gdrcd_filter('url', $personaggio['nome']); ?>"
class="link_invia_messaggio">
<?php if(empty($PARAMETERS['names']['private_message']['image_file']) === false) { ?>
<img src="<?php echo $PARAMETERS['names']['private_message']['image_file']; ?>"
alt="<?php echo gdrcd_filter('out', $MESSAGE['interface']['sheet']['send_message_to']['send']).' '.gdrcd_filter('out', $PARAMETERS['names']['private_message']['sing']).' '.gdrcd_filter('out', $MESSAGE['interface']['sheet']['send_message_to']['to']).' '.gdrcd_filter('out', $personaggio['nome']); ?>"
title="<?php echo gdrcd_filter('out', $MESSAGE['interface']['sheet']['send_message_to']['send']).' '.gdrcd_filter('out', $PARAMETERS['names']['private_message']['sing']).' '.gdrcd_filter('out', $MESSAGE['interface']['sheet']['send_message_to']['to']).' '.gdrcd_filter('out', $personaggio['nome']); ?>"
class="link_messaggio_forum">
<?php } else {
echo gdrcd_filter('out', $MESSAGE['interface']['sheet']['send_message_to']['send']).' '.gdrcd_filter('out', strtolower($PARAMETERS['names']['private_message']['sing'])).' '.gdrcd_filter('out', $MESSAGE['interface']['sheet']['send_message_to']['to']).' '.gdrcd_filter('out', $personaggio['nome']);
} ?>
</a>
</div>
con
<div class="scrivialpg">
<?php $nome = $personaggio['nome'];
if ($new_mess['new_mess'] == '0') {
echo '<a style="text-decoration:underline;" href="main.php?page=messages_center&op=create&reply_dest='.$nome.'" class="link_sheet">Manda MP</a> '; }
else {echo '<a style="text-decoration:underline;" href="main.php?page=messages_center_new&op=readnew&personaggio_conversazione='.$nome.'" class="link_sheet">Manda MP</a> '; }
?>
</div>
Attenzione: il link di invio così creato è testuale. Adattare secondo esigenze.
25/06/2021 19:06:35
*** STEP 2 ***
Aprire il file pages/messaggi.inc.php
cercare
$non_letti = gdrcd_query("SELECT id FROM messaggi WHERE destinatario = '".gdrcd_filter('in', $_SESSION['login'])."' AND letto=0 AND id > ".$_SESSION['last_istant_message']."", 'result');
subito dopo aggiungere:
$new_mess = gdrcd_query("SELECT new_mess FROM personaggio WHERE nome = '".$_SESSION['login']."'");
cercare il codice seguente (che dovrebbe trovarsi tra la riga 68 e la 75 del file originale di gdrcd 5.5):
echo '<a onMouseOver="msg_over_button()" onMouseOut="msg_up_button()" href="../main.php?page=messages_center&offset=0" target="_top"><img src="../themes/'.$PARAMETERS['themes']['current_theme'].'/imgs/menu/'.$PARAMETERS['names']['private_message']['image_file'].'" alt="'.gdrcd_filter('out',
$PARAMETERS['names']['private_message']['plur']
).'" title="'.gdrcd_filter('out', $PARAMETERS['names']['private_message']['plur']).'" name="msg_buttonOne" /></a>';
} else {
echo '<a href="../main.php?page=messages_center&offset=0" target="_top">'.gdrcd_filter('out', $PARAMETERS['names']['private_message']['plur']).'</a>';
}
echo '</div>';
sostituire con
if ($new_mess['new_mess'] == '0') {
echo '<a onMouseOver="msg_over_button()" onMouseOut="msg_up_button()" href="../main.php?page=messages_center&offset=0" target="_top"><img src="../themes/'.$PARAMETERS['themes']['current_theme'].'/imgs/menu/'.$PARAMETERS['names']['private_message']['image_file'].'" alt="'.gdrcd_filter('out',
$PARAMETERS['names']['private_message']['plur']
).'" title="'.gdrcd_filter('out', $PARAMETERS['names']['private_message']['plur']).'" name="msg_buttonOne" /></a>';
}
else
{
echo '<a onMouseOver="msg_over_button()" onMouseOut="msg_up_button()" href="../main.php?page=messages_center_new&offset=0" target="_top"><img src="../themes/'.$PARAMETERS['themes']['current_theme'].'/imgs/menu/'.$PARAMETERS['names']['private_message']['image_file'].'" alt="'.gdrcd_filter('out',
$PARAMETERS['names']['private_message']['plur']
).'" title="'.gdrcd_filter('out', $PARAMETERS['names']['private_message']['plur']).'" name="msg_buttonOne" /></a>';
}
}
else {
if ($new_mess['new_mess'] == '0') {
echo '<a href="../main.php?page=messages_center&offset=0" target="_top">'.gdrcd_filter('out', $PARAMETERS['names']['private_message']['plur']).'</a>';
}
else
{
echo '<a href="../main.php?page=messages_center_new&offset=0" target="_top">'.gdrcd_filter('out', $PARAMETERS['names']['private_message']['plur']).'</a>';
}
}
echo '</div>';
if($PARAMETERS['mode']['alert_pm_via_pagetitle'] == 'ON') { ?>
<script type="text/javascript">
parent.stop_blinking_title();
</script>
<?php
}
} else { //$_SESSION['last_istant_message']=$max_id['max']; ?>
<?php if ($new_mess['new_mess'] == '0') { ?>
<div class="messaggio_forum_nuovo">
<a href="../main.php?page=messages_center&offset=0" target="_top">
<?php
if(empty ($PARAMETERS['names']['private_message']['image_file_new']) === false) {
echo '<img src="../themes/'.$PARAMETERS['themes']['current_theme'].'/imgs/menu/'.$PARAMETERS['names']['private_message']['image_file_new'].'" alt="'.gdrcd_filter('out', $PARAMETERS['names']['private_message']['plur']).'" title="'.gdrcd_filter('out', $PARAMETERS['names']['private_message']['plur']).'" />';
} else {
echo gdrcd_filter('out', $PARAMETERS['names']['private_message']['plur']);
} ?>
</a>
</div>
<?php } else { ?>
<div class="messaggio_forum_nuovo">
<a href="../main.php?page=messages_center_new&offset=0" target="_top">
<?php
if(empty ($PARAMETERS['names']['private_message']['image_file_new']) === false) {
echo '<img src="../themes/'.$PARAMETERS['themes']['current_theme'].'/imgs/menu/'.$PARAMETERS['names']['private_message']['image_file_new'].'" alt="'.gdrcd_filter('out', $PARAMETERS['names']['private_message']['plur']).'" title="'.gdrcd_filter('out', $PARAMETERS['names']['private_message']['plur']).'" />';
} else {
echo gdrcd_filter('out', $PARAMETERS['names']['private_message']['plur']);
} ?>
</a>
</div>
<?php } ?>
25/06/2021 19:08:38 e modificato da haruka il 25/06/2021 23:48:45
*** STEP 3 ***
Creare un nuovo file chiamato: messages_center_new.inc.php
da inserire nel gruppo dei file nella cartella "pages".
Contenuto del file:
<?php
session_start();
include_once('../header.inc.php');
/*Header comune*/
?>
<div class="pagina_messages_center">
<div class="page_title">
<h2><?php echo gdrcd_filter('out', $PARAMETERS['names']['private_message']['plur']); ?></h2>
</div>
<div class="page_body">
<?php
/*
* Richieste POST
*/
switch(gdrcd_filter_get($_POST['op'])) {
case 'erase': //Eliminazione di un messaggio
include('messages/erase.inc.php');
break;
case 'erase_checked': //Controllo eliminazione di un messaggio
include('messages/erase_checked.inc.php');
break;
case 'eraseall': //Eliminazione di tutti i messaggi
include ('messages/eraseall.inc.php');
break;
case 'send_message': //Inserimento nuovo messaggio nel db
include('messages/send_message.inc.php');
break;
case 'attach': //Form di composizione di un messaggio
case 'send':
case 'reply':
include('messages/createnew.inc.php');
break;
default:
break;
}
/*
* Richieste GET
*/
switch(gdrcd_filter_get($_GET['op'])) {
case 'readnew': //Visualizzazione completa di un messaggio
include('messages/readnew.inc.php');
break;
case 'createnew': //Form creazione nuovo messaggio
include ('messages/createnew.inc.php');
break;
case 'inviati':
default: //visualizzazione di base
include('messages/indexnew.inc.php');
break;
}
?>
</div><!-- page_body -->
</div><!-- Pagina -->
Salvo imprevisti in serata aggiungo gli altri step
25/06/2021 23:34:40 e modificato da haruka il 25/06/2021 23:46:53
*** STEP 4 ***
Creare un nuovo file dentro la folder /pages/messages
chiamato
readnew.inc.php
Contenuto
<style type="text/css">
div.pagina_messages_center {border:none; box-shadow: none;}
.list {
list-style: none;
padding: 0;
margin: 0;
}
.list li {
position: relative;
margin-bottom: 10px;
}
.mittente {width: 80%; float:left; padding:20px;
padding: 10px;
margin: 10px 20px 5px 20px;
line-height: 22px;
text-align: left;
font-family: 'Metamorphous', cursive;
font-size: 14px;
border: 1px solid rgba(0,0,0,0.0);
border-top-color: rgba(0, 0, 0, 0);
border-right-color: rgba(0, 0, 0, 0);
border-bottom-color: rgba(0, 0, 0, 0);
border-left-color: rgba(0, 0, 0, 0);
padding: 5px 5px 15px 5px;
background-color: #e6c0665c;
border-bottom-color: #C8AE54;
border-left-color: #FCF3CE;
border-right-color: #C8AE54;
border-top-color: #FCF3CE;
}
.destinatario {width: 80%; float:right; padding:20px; margin:10px;
background-color: #ffe9b65c;
border: 1px solid rgba(0,0,0,0.0);
border-top-color: rgba(0, 0, 0, 0);
border-right-color: rgba(0, 0, 0, 0);
border-bottom-color: rgba(0, 0, 0, 0);
border-left-color: rgba(0, 0, 0, 0);
font-family: 'Metamorphous', cursive;
font-size: 14px;
text-align: left;
border-bottom-color: #C8AE54;
border-left-color: #FCF3CE;
border-right-color: #C8AE54;
border-top-color: #FCF3CE;
padding: 7px;
}
.messaggio_forum_nuovo {margin:10px 30px 0px 12px!important;}
h2 {z-index:0;}
</style>
<h3>Conversazione con: <?php echo $_REQUEST['personaggio_conversazione']; ?> </h3>
<form class="form_messaggi" action="main.php?page=messages_center_new&op=readnew&personaggio_conversazione=<?php echo $_REQUEST['personaggio_conversazione'] ?>" method="post">
<input type="hidden" name="replynew" value="singolo" />
<div class='form_field' id="ckeditor">
<textarea type="textbox" name="testo"><?php
/** * Fix per evitare le parentesi quadre vuote quando si compone un nuovo messaggio
* @author Blancks
*/
?></textarea>
<script type="text/javascript"> CKEDITOR.replace( 'testo' );</script>
</div>
<!-- Submit -->
<input type="hidden" name="op" value="send_message" />
<div class='form_submit'>
<input type="submit" value="<?php echo gdrcd_filter('out', $MESSAGE['interface']['forms']['submit']); ?>" />
</div>
</form>
<?php
//Determinazione pagina
if(isset($_REQUEST['offset']) === false) {
$pagebegin = 0;
} else {
$pagebegin = (int) $_REQUEST['offset'] * $PARAMETERS['settings']['messages_per_page_new'];
}
$pageend = $PARAMETERS['settings']['messages_per_page_new'];
//Conteggio messaggi totali
$record = gdrcd_query("SELECT COUNT(*) FROM messaggi WHERE destinatario = '".$_SESSION['login']."'");
$totaleresults = $record['COUNT(*)'];
//Elenco messaggi paginato
/** * Bugfix: correzione di un bug che permetteva la visualizzazione di messaggi non inviati all'utente
* semplicemente modificando l'id. Viene quindi aggiunta nella clausola where il controllo sulla proprietà
* del messaggio. Nel caso in cui non venga trovato alcun messaggio verrà mostrato un errore.
* @author Rhllor
*/
//$result=gdrcd_query("SELECT * FROM messaggi WHERE personaggio_conversazione = ".gdrcd_filter('num',$_REQUEST['personaggio_conversazione'])." LIMIT 1", 'result');
if (gdrcd_filter('get', $_POST['replynew']) == 'singolo') {
$check_dest = explode(',', gdrcd_filter('get', $_POST['destinatario']));
$destinat = $_REQUEST['personaggio_conversazione'];
$result = gdrcd_query("SELECT nome FROM personaggio WHERE nome = '" . $destinat . "'", 'result');
if ((gdrcd_query($result, 'num_rows') > 0) && (empty($destinat) === false)) {
gdrcd_query("INSERT INTO messaggi (mittente, destinatario, spedito, oggetto, testo) VALUES ('" . $_SESSION['login'] . "', '" . gdrcd_capital_letter(gdrcd_filter('in', $destinat)) . "', NOW(),
'".gdrcd_filter('in',$_POST['oggetto'])."', '" . gdrcd_filter('in', $_POST['testo']) . "')");
gdrcd_query("INSERT INTO backmessaggi (mittente, destinatario, spedito, oggetto, testo) VALUES ('" . $_SESSION['login'] . "', '" . gdrcd_capital_letter(gdrcd_filter('in', $destinat)) . "', NOW(), '".gdrcd_filter('in',$_POST['oggetto'])."', '" . gdrcd_filter('in', $_POST['testo']) . "')");
}//if
}
if(gdrcd_filter('get', $_POST['op']) == 'eliminaredest') {
$id_mex = $_POST['id'];
gdrcd_query("UPDATE messaggi SET destinatario_del = 1 WHERE destinatario='".gdrcd_filter('in', $_SESSION['login'])."' AND id IN (".$id_mex.")");
}
if(gdrcd_filter('get', $_POST['op']) == 'eliminaremitt') {
$id_mex = $_POST['id'];
gdrcd_query("UPDATE messaggi SET mittente_del = 1 WHERE mittente='".gdrcd_filter('in', $_SESSION['login'])."' AND id IN (".$id_mex.")");
}
$result = gdrcd_query("SELECT mittente, destinatario, testo, letto, spedito, id, destinatario_del, mittente_del
FROM (
(
SELECT mittente, destinatario, testo, letto, spedito, id, destinatario_del, mittente_del
FROM messaggi
WHERE 1
AND destinatario = '".$_SESSION['login']."'
AND mittente = '".$_REQUEST['personaggio_conversazione']."'
AND destinatario_del = 0
ORDER BY spedito DESC
)
UNION ALL
(
SELECT mittente, destinatario, testo, letto, spedito, id, destinatario_del, mittente_del
FROM messaggi
WHERE 1
AND destinatario = '".$_REQUEST['personaggio_conversazione']."'
AND mittente = '".$_SESSION['login']."'
AND mittente_del = 0
ORDER BY spedito DESC
)
) AS conversazione
ORDER BY spedito DESC
", 'result');
?>
<?php
while($row = gdrcd_query($result, 'fetch')) {
if(($row['destinatario'] == $_SESSION['login']) && ($row['letto'] == 0)) {
gdrcd_query("UPDATE messaggi SET letto = 1 WHERE id = ".gdrcd_filter('num', $row['id'])." LIMIT 1");
}
?>
<div>
<ul class="list">
<li class="<?php echo $row['mittente'] == $_SESSION['login'] ? 'destinatario' : 'mittente'; ?>
<tr>
<td class="elementi_elenco_preview">
<div>
Data: <?php echo $row['spedito']; ?>
</div>
</td>
<td class="elementi_elenco_preview">
<div>
Mittente: <?php echo $row['mittente']; ?>
</div>
</td>
<td class="elementi_elenco_preview">
<div>
<?php echo $row['testo']; ?>
</div>
</td>
</tr>
<div class="read_message_box_form">
<!-- attach -->
<form action="main.php?page=messages_center_new"
method="post">
<input type="hidden" name="reply_dest" value="<?php echo $row['mittente']; ?>" />
<div style="display:none;"><input type="hidden" name="testo" value="<?php echo gdrcd_filter('out', $MESSAGE['interface']['messages']['attachment'].$row['testo']); ?>" /></div>
<input type="hidden" name="op" value="attach" />
<input type="image" title="rispondi quotando" src="imgs/icons/attach.png" value="submit" alt="<?php echo gdrcd_filter('out', $MESSAGE['interface']['messages']['attach']); ?>"
title="<?php echo gdrcd_filter('out', $MESSAGE['interface']['messages']['attach']); ?>" />
</form>
</div>
<?php if ($row['destinatario'] == $_SESSION['login']) { ?>
<form action="main.php?page=messages_center_new&op=readnew&personaggio_conversazione=<?php echo $_REQUEST['personaggio_conversazione'] ?>" method="post">
<div class="form_submit">
<input type="hidden" name="op" value="eliminaredest" />
<input type="hidden" name="id" value="<?php echo $row['id']; ?>" />
<input type="image" title="elimina messaggio" src="imgs/icons/erase.png" style="width:20px; height:20px; float:right;" />
</div>
</form>
<?php }?>
<?php if ($row['mittente'] == $_SESSION['login']) { ?>
<form action="main.php?page=messages_center_new&op=readnew&personaggio_conversazione=<?php echo $_REQUEST['personaggio_conversazione'] ?>" method="post">
<div class="form_submit">
<input type="hidden" name="op" value="eliminaremitt" />
<input type="hidden" name="id" value="<?php echo $row['id']; ?>" />
<input type="image" title="elimina messaggio" src="imgs/icons/erase.png" style="width:20px; height:20px; float:right;" />
</div>
</form>
<?php }?>
<div>
<?php if(($row['destinatario'] != $_SESSION['login']) && ($row['letto'] == 1)) { ?>
<img title="messaggio letto dal destinatario" src="imgs/icons/letto.png" style="width:20px; height:20px; float:right;" />
<?php } ?>
<?php if(($row['destinatario'] != $_SESSION['login']) && ($row['letto'] == 0)) { ?>
<img title="messaggio non ancora letto dal destinatario" src="imgs/icons/nonletto.png" style="width:20px; height:20px; float:right;" />
<?php } ?>
</div>
</li>
</ul>
</div>
<?php
}
?>
<div style="clear:both;"> </div>
<input value="Carica altri" type="submit" id="next"></input>
<script type="text/javascript">
$(document).ready(function(){
var list = $(".list li");
var numToShow = 10;
var button = $("#next");
var numInList = list.length;
list.hide();
if (numInList > numToShow) {
button.show();
}
list.slice(0, numToShow).show();
button.click(function(){
var showing = list.filter(':visible').length;
list.slice(showing - 1, showing + numToShow).fadeIn();
var nowShowing = list.filter(':visible').length;
if (nowShowing >= numInList) {
button.hide();
}
});
});
</script>
Discussione seguita da
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Fallen Gods ↗
Wuthering Waves ↗
World of the Sea Battle ↗
World of Warship ↗
Storie di Agarthi ↗
State of Survival ↗
Sea of Conquest ↗
Enlisted ↗
Seconda Era ↗
Cafuné ↗