Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.8 veröffentlicht (17.10.16)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Beitragserstellung bei vorhandenem Thema verweigern?
#1
Servus,

ich suche nach einer Möglichkeit, dass wenn jemand ein Thema eröffnen will, und dieses Thema im exakten Wortlaut schon vorhanden ist, dass dann eine Fehlermeldung kommt, und somit doppelte Themen nicht gepostet werden können. Jemand einen Vorschlag, wie das zu lösen wäre? Oder vielleicht gibt es ja schon so ein Plugin oder eins was man dafür umschreiben könnte. Bin über jeden Vorschlag dankbar.
Zitieren
#2
Wer schreibt denn ein Thema zweimal? Wink
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#3
(31.05.2010, 11:12)StefanT schrieb: Wer schreibt denn ein Thema zweimal? Wink

Die Frage habe ich befürchtet Big Grin

Es geht um eines meiner Foren mit einer Börse, und wir haben Stress mit den Releases, weil dort immer wieder mehrfach ein Thema eröffnet wird, weil jeder der schnellste beim posten sein will. Es liegen manchmal nur wenige Minuten dazwischen. Diese Themen sind dann anstatt 5-10 x untereinander, auf zig Threads verteilt. Und das soll verhindert werden, dass eine Fehlermeldung kommt, wenn der Releasename schon 1 x vorhanden ist...
Zitieren
#4
Ahoi Axxis,

ich bin zwar kein PHP-Künstler, aber ich habe vielleicht einen Lösungsansatz bzw Anregung für dich.

Es gibt beim MyBB doch die Funktion "ähnliche Themen anzeigen lassen". Vielleicht lässt sich diese Funktion ja an deine Wünsche anpassen.

Mir selber fehlen da die PHP-Kenntnisse. Aber vielleicht kriegst du das ja hin. Wink
Zitieren
#5
Das ist mit einigen Codeänderungen machbar. Fangen wir an. Wink
newthread.php
Finde:
PHP-Code:
$valid_subject $posthandler->verify_subject(); 
darunter einfügen:
PHP-Code:
$proof_for_double_subject $posthandler->verify_proof_for_double_subject(); 
Finde:
PHP-Code:
if(!$valid_thread || !$valid_subject
ersetzen mit:
PHP-Code:
if(!$valid_thread || !$valid_subject || !$proof_for_double_subject

inc/datahandlers/post.php
Finde ca. Zeile 948:
PHP-Code:
// Return the post's pid and whether or not it is visible.
                
return array(
                    
"pid" => $double_post['pid'],
                    
"visible" => $visible
                
);
            } 
darunter einfügen:
PHP-Code:
function verify_proof_for_double_subject()
            {
            global 
$db;

            
$thread = &$this->data;
            
$subject = &$thread['subject'];
            
$subject trim($subject);

            
$no_double_subject_query $db->query("SELECT subject FROM ".TABLE_PREFIX."threads WHERE subject='".$db->escape_string($subject)."' LIMIT 0,1");
            
$no_double_subject_result $db->num_rows($no_double_subject_query);
            if (
$no_double_subject_result != '0')
            {
            
$this->set_error("double_subject");
            return 
false;
            }
            return 
true;
            } 
Finde ca. Zeile 985:
PHP-Code:
if(!$thread['savedraft'])
        {
            
$this->verify_post_flooding();
        } 
darunter einfügen:
PHP-Code:
if (array_key_exists('subject'$thread))
        {
        
$this->verify_proof_for_double_subject();
        } 

inc/languages/sprachpacket/datahandler_post.lang.php
Einfügen:
Code:
$l['postdata_double_subject'] = 'Ein Thema mit dem selben Betreff existiert schon, bitte wähle einen anderen.';

Viel Spaß!
Gruß NetHunter
Zitieren
#6
...oder man legt in MySQL einfach ein Unique index/restraint für das subject-Feld der mybb_threads Tabelle an...

Dann gehts auch ganz ohne Codeänderung Big Grin Big Grin Big Grin (dafür mit SQL Fehler aber wen interessieren die schon).
Zitieren
#7
Genial *Happy* Wink

Funktioniert einwandfrei. Vielen vielen Dank NetHunter. Tag gerettet, wunderbar!

@Kenny
Das mit den ähnlichen Themen hatte ich auch schon überlegt,
aber da reichten meine Kenntnisse leider auch nicht was umzustricken.

@frostschutz
Zitat: "(dafür mit SQL Fehler aber wen interessieren die schon)" Big Grin
Der war gut ^^

Danke an Alle, so macht´s Spass Smile - erledigt -
Zitieren
#8
Hallo,

die Modifikation in Beitrag#5 funktioniert bei mir nicht in MyBB 1.6.8
folgender Fehler kommt dann:

Fatal error: Call to undefined method PostDataHandler::verify_proof_for_double_subject() in /home/...../public_html/...../newthread.php on line 678

Ich habe NetHunter schon eine PN geschrieben, aber vielleicht sieht ja schon jemand woran das liegen könnte. Würde das auch gerne einbauen, dass doppelte Themen verweigert werden. Wink
Zitieren
#9
Bist du sicher, dass du alles an der richtigen Stelle eingefügt hast?
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#10
Ich hab das zig mal gemacht und immer wieder Fehler. Durch einen blöden Zufall habe ich dann einen Code an anderer Stelle als oben beschrieben platziert. Und durch dieses hektische Einfügen ging es plötzlich. Big Grin Das war jetzt schon fast ein Sechser im Lotto.

Oben steht:
inc/datahandlers/post.php
Finde ca. Zeile 948:
PHP-Code:
// Return the post's pid and whether or not it is visible.
                
return array(
                    
"pid" => $double_post['pid'],
                    
"visible" => $visible
                
);
            } 

Habe aber unter diesen Zeilen den Folgecode geaddet:
PHP-Code:
// Return the post's pid and whether or not it is visible.
        
return array(
            
"pid" => $this->pid,
            
"visible" => $visible
        
);
    } 

Und DAS funktioniert. So wie oben im Beitrag beschrieben geht es nicht. Egal, die Funktion ist eingebaut und klappt jetzt Smile
Zitieren


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Plugin suche. Vordifinierter Text bei Beitragserstellung maxxs 4 316 19.03.2014, 16:21
Letzter Beitrag: MrBrechreiz
  Email an Admin bei neuem Thema - Thema Infos rausholen Riccardo 10 1.716 30.07.2009, 13:10
Letzter Beitrag: Riccardo