- Home
- Categorie
- Coding e Sistemistica
- CMS & Piattaforme Self-Hosted
- [Mod] Segnalare un thread come risolto/irrisolto
- 
							
							
							
							
							
[Mod] Segnalare un thread come risolto/irrisoltoHo 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 finanziaria Ciao 
 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 ' 