Visualizzazione del motivo per cui un articolo \xE8 stato nascosto
Oscailt in caso di azioni su articoli o sezioni, fra cui appunto l'"hide" di un post, permette di inserire in un apposito form il motivo dell'azione intrapresa. Tale motivo verr\xE0 spedito a un indirizzo di posta (
toscana-notify definito nella sezione "Email Settings" alla voce "Notification To Address" della pagina "Modifica Configurazione" del pannello di amministrazione di Oscailt) insieme al nome dell'utente che ha intrapreso l'azione, quando, su cosa, ecc.
Utilizzando questa funzionalit\xE0, si pu\xF2, integrando il codice php, scrivere in una tabella del database la motivazione. Quando poi verr\xE0 visualizzato sul sito un articolo nascosto, verr\xE0 succhiata la relativa motivazione dal database e scritta in testa alla pagina di visualizzazione.
Vedi anche
ImcToscanaTecnicaOscailtNascosti.
Operazioni da fare
1. Database
Questa \xE8 la nuova tabella creata:
$prefix.hide_reason.
($prefix \xE8 la variabile usata nei vari script PHP che identifica il prefisso delle tabelle definito in fase di installazione, es. "imc_toscana" o "imc_ireland"; perci\xF2, ovviamente, dentro mysql va creata la tabella col nome "imc_ireland_hide_reason").
2. file objects/itemaction.inc
In
objects/itemaction.inc
\xE8 dove viene spedito il messaggio, contenente fra l'altro il motivo dell'azione.
Alla riga 391 circa, nella funzione
sendNotification
:
// mette il motivo nella nuova tabella (vedi poi indyruntime/articledisplay.inc)
global $prefix, $dbconn;
if ( preg_match("/^hide/",$subject_str)) {
logMessage($subject_str."---".$action."---- ".$this->item_id."mmmmm ".$reason,"userga.txt");
$reason = utf8_encode(strip_tags($reason));
$time = "NULL";
checkForError(sql_query("INSERT into ".$prefix."_hide_reason values ('$this->item_id', '$reason', $time)", $dbconn, 2));
} elseif ( preg_match("/^unhide/",$subject_str)) {
checkForError(sql_query("DELETE from ".$prefix."_hide_reason where story_id = $this->item_id", $dbconn, 2));
}
/////
3. file objects/indyruntime/articledisplay.inc
In
objects/indyruntime/articledisplay.inc
ci sta invece la roba relativa al modulo per visualizzare gli articoli.
Alla riga 557 circa, nella funzione
writeArticleHeader
, dopo
$this->writeDisplayHeader();
c'\xE8 da aggiungerci una roba tipo:
if($story->hidden== true ) {
global $prefix, $dbconn;
$result = sql_query("SELECT story_id, reason FROM ".$prefix."_hide_reason WHERE story_id='$_REQUEST[story_id]'", $dbconn, 1);
$row = mysql_fetch_array($result);
echo '<div align="center">';
echo "Il post con l'ID ".$_REQUEST[story_id]." è stato NASCOSTO con la seguente <strong>motivazione</strong>:<br />";
if (!$row[reason]=="") {
echo utf8_decode($row[reason]);
} else {
echo "Motivazione non disponibile nel database.";
}
echo "<br /><br />";
echo '</div>';
echo '<div align="center" class="confirmbox"><p class="confirmheader">NOTA: ARTICOLO NASCOSTO</p></div>';
echo "<br />";
echo "<br />";
}
Nota:
writeDisplayHeader
stampa il campo
Article Notice del modulo
Article View Module 2200.