- Home
- Categorie
- Coding e Sistemistica
- Gestione di Forum
- [Mod] Segnalare un thread come risolto/irrisolto
-
[Mod] Segnalare un thread come risolto/irrisolto
Ho creato questa mod per vBulletin che permette di segnalare threads come risolti dal menu strumenti discussione dagli amministratori/moderatori di sezione.
I permessi si basano sulla facoltà del gruppo utente di chiudere e di aprire un thread,quindi se il gruppo può compiere queste operazioni può anche segnare il thread come risolto/irrisolto.
La mod aggiunge semplicemente il tag [Risolto] al titolo delle discussioni interessate e lo toglie se questo è già presente.
Aprire il template SHOWTHREAD e cercare la stringa [php]<if condition="$show['closethread']">$vbphrase[close_thread]<else />$vbphrase[open_thread]</if></label></div></if>[/php]Aggiungere dopo:
[php]
<div><label for="t_res"><input type="radio" name="do" id="t_res" value="resolvethread" />$vbphrase[resolve_thread]</label></div>
[/php]Nel gestore delle frasi aggiungere una nuova frase il cui nome sia:
"resolve_thread" (senza virgolette).
Inserire come valore: "Segnala come risolto/irrisolto".
Aggiungere anche una frase chiamata "as_not_resolved" con valore:
"segnalata come irrisolta"
e una frase chiamata "as_resolved" con valore:
"segnalata come risolta"Aprire il file postings.php e cercare:
[php]// ############################### start delete thread ###############################[/php]Aggiungere PRIMA:[php]// ############################### start setting thread as resolved ###############################
if ($_POST['do'] == 'resolvethread')
{
if (($threadinfo['isdeleted'] AND !can_moderate($threadinfo['forumid'], 'candeleteposts')) OR (!$threadinfo['visible'] AND !can_moderate($threadinfo['forumid'], 'canmoderateposts')))
{
if (can_moderate($threadinfo['forumid']))
{
print_no_permission();
}
else
{
eval(standard_error(fetch_error('invalidid', $idname, $vbulletin->options['contactuslink'])));
}
}// permission check
if (!can_moderate($threadinfo['forumid'], 'canopenclose'))
{
$forumperms = fetch_permissions($threadinfo['forumid']);
if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canview']) OR !($forumperms & $vbulletin->bf_ugp_forumpermissions['canviewthreads']) OR !($forumperms & $vbulletin->bf_ugp_forumpermissions['canopenclose']))
{
print_no_permission();
}
else
{
if (!is_first_poster($threadid))
{
print_no_permission();
}
}
}// check if there is a forum password and if so, ensure the user has it set
verify_forum_password($foruminfo['forumid'], $foruminfo['password']);
$el=explode(" ",$threadinfo[title]);if(!in_array("[Risolto]",$el)){
$db->query_write("UPDATE ". TABLE_PREFIX. "thread SET title='[Risolto] $threadinfo[title]' WHERE threadid='$threadinfo[threadid]'");
$action=$vbphrase[as_resolved];}
else{
$action=$vbphrase[as_not_resolved];
$oldtitle=str_replace("[Risolto]","",$threadinfo[title]);
$db->query_write("UPDATE ". TABLE_PREFIX. "thread SET title='$oldtitle' WHERE threadid='$threadinfo[threadid]'");
}$vbulletin->url = 'showthread.php?' . $vbulletin->session->vars['sessionurl'] . "t=$threadid";
eval(print_standard_redirect('redirect_openclose', true, true));}
[/php]Cercare:
[php] case 'deleteposts': $navbits[''] = $vbphrase['delete_posts']; break;
case 'mergethread': $navbits[''] = $vbphrase['merge_threads']; break;[/php]Aggiungere dopo:
[php]case 'resolvethread': $navbits[''] = $vbphrase['resolve_thread']; break;[/php]Cercare:
[php]case 'copythread':
case 'editthread':
case 'mergethread':[/php]Aggiungere dopo:[php]case 'resolvethread':[/php]E dovrebbe funzionare
Spero possa tornarvi utile
Ciao!
-
Ottima MOD/Aggiunta!
Appena ho tempo vorrei metterla su questo Forum!
-
Applicato
-
ME-RA-VI-GLIO-SO!
Su un sito di supporto Photoshop come il mio è davvero illuminante!
Già installato... funziona alla grande!
Posso fare in modo che solo Admin e Super Moderators possano utilizzarlo?Ciao
Stefano
-
Non sarebbe meglio, ai fini seo, inserire il tag in coda al titolo del thread?
-
Buona osservazione Karapoto.
Ai fini di consultazione dell'utente credo che porre il tag prima aiuti a farsi un'idea più velocemente.Ciao
Stefano
-
Aggiungere il tag dopo il titolo è semplice,basta modificare:
[php]$db->query_write("UPDATE ". TABLE_PREFIX. "thread SET title='[Risolto] $threadinfo[title]' WHERE threadid='$threadinfo[threadid]'");
[/php]
in[php]$db->query_write("UPDATE ". TABLE_PREFIX. "thread SET title='$threadinfo[title] [Risolto]' WHERE threadid='$threadinfo[threadid]'");
[/php];)
Ciao!
-
Ho appena verificato piccoli errori di database verificatisi con alcuni thread,anche grazie a Flep che ha postato un primo problema.
Sto lavorando per aggiustare il tutto e posterò presto la soluzione
Ciao!
-
@probid said:
Aggiungere il tag dopo il titolo è semplice,basta modificare:
[php]$db->query_write("UPDATE ". TABLE_PREFIX. "thread SET title='[Risolto] $threadinfo[title]' WHERE threadid='$threadinfo[threadid]'");
[/php]
in[php]$db->query_write("UPDATE ". TABLE_PREFIX. "thread SET title='$threadinfo[title] [Risolto]' WHERE threadid='$threadinfo[threadid]'");
[/php];)
Ciao!Ciao Probid,
parliamo di modifiche a posting.php?Ciao
Stefano
-
-
oh, grazie mille.
L'ho gia' modificato.
Mi pare di capire che sia efficace solo sui prossimi... non e' retroattivo come la finanziariaCiao
Stefano
-
non e' retroattivo come la finanziariaLo script che posto ora l'ho fatto adesso in 1 minuto e serve per modificare i vecchi titoli ...
proprio perchè è stato creato in fretta consiglio un backup del db...e fatemi sapere se funziona
Dovete creare un nuovo file .php,inserire il seguente script e avviarlo
[php]
<?
mysql_connect("host","username","password"); //sostituire con i parametri di mysql
mysql_select_db("database"); //sostituire con il nome del db in uso$q=mysql_query("SELECT title,threadid from vb_thread WHERE title LIKE '[Risolto]%'");
$c=0;
while($r=mysql_fetch_assoc($q)){
$oldtitle=str_replace("[Risolto]","",$r[title]);
mysql_query("UPDATE vb_thread SET title='$oldtitle [Risolto]' WHERE threadid='$r[threadid]'");
$c++;
}
echo "Sono stati modificati i titoli di ".$c." threads";?>[/php]
-
Bene,come promesso ecco la versione funzionante anche con gli apostrofi della mod.
Consiglio a tutti coloro che hanno installato la mia modifica di eseguire questo "aggiornamento",è FONDAMENTALE per evitare il verificarsi di problemi con i thread che contengono apostrofi/apici.
Dopo questa modifica non dovrebbero verificarsi più problemi.In postings.php cercate la riga che avete aggiunto:
if(!in_array("[Risolto]",$el)){Aggiungete dopo:
$newtitle=addslashes("[Risolto] $threadinfo[title]");Sostituite poi:
$db->query_write("UPDATE ". TABLE_PREFIX. "thread SET title='[Risolto] $threadinfo[title]' WHERE threadid='$threadinfo[threadid]'");con:
$db->query_write("UPDATE ". TABLE_PREFIX. "thread SET title='$newtitle' WHERE threadid='$threadinfo[threadid]'");
Infine cercate:
$oldtitle=str_replace("[Risolto]","",$threadinfo[title]);e sostituite con:$oldtitle=str_replace("[Risolto]","",addslashes($threadinfo[title]));;)
Ciao!
-
Aggiornato, thanks!:)
Per i retroattivi non ho ancora provveduto al backup.Ciao
Stefano
-
Huston abbiamo un problema:
nonostante abbia aggiornato gli script alla lettera, sucede che quando indico un post come risolto, questo sparisce dalla consultazione.
Vedi alegato.Ciao
Stefano
-
Ok, ho capito cosa succede... il post resta, ma il titolo scompare.
Per il momento ripristino la versione precedente.Ciao
Stefano
-
Craedo di avere fatto nu po' di confusione con il [tagga prima] e [tagga dopo]...
Ora, ripristinato quest'ultimo funziona taggando come [risolto prima].
Quando invece taggo come [non risolto (sempre prima)] mi cancella il titolo del thread.if(!in_array("[Risolto]",$el)){ $newtitle=addslashes("[Risolto] $threadinfo[title]"); $db->query_write("UPDATE ". TABLE_PREFIX. "thread SET title='$newtitle' WHERE threadid='$threadinfo[threadid]'"); $action=$vbphrase[as_resolved];} else{ $action=$vbphrase[as_not_resolved]; $oldtitle=str_replace("[Risolto]","",addslashes($threadinfo[title])); $db->query_write("UPDATE ". TABLE_PREFIX. "thread SET title='$newtitle' WHERE threadid='$threadinfo[threadid]'"); }
Che sbaglio?
Ciao
Stefano
-
Nella penultima riga (quella prima della parentesi graffa di chiusura),al posto di SET title='$newtitle' metti SET title='$oldtitle' ;);)
Ciao!!
-
Grazie mille!
Ciao
Stefano
-
Per la prima volta mi da questo errore, in alcuni thread
Database error in vBulletin 3.6.8:
Invalid SQL:
UPDATE VB_thread SET title='[Risolto] Come inserire un'icona nel titolo del sito?' WHERE threadid='60862';MySQL Error : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'icona nel titolo del sito?' WHERE threadid='60862'' at line 1
Error Number : 1064
Date : Thursday, November 29th 2007 @ 02:12:15 PM
Script : http://www.giorgiotave.it/forum/postings.php?t=60862&pollid=
Referrer : http://www.giorgiotave.it/forum/consigli-ed-aiuti-per-il-sito/60862-come-inserire-unicona-nel-titolo-del-sito.html
IP Address : 87.16.112.56
Username : Giorgiotave
Classname : vb_databaseC'è il problema con il carattere '