MyBB.de Forum

Normale Version: Doppelte Betreffs
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Momentan ist Mybb 1.2 eine wahnsinnige Komödie für mich.
Der Datahandler für die Posts überspielt sogar provozierte Fehlermeldungen mit einem richtigen Ergeniss.
Mein Code, der dafür zuständig sein soll, das es keine doppelten Beff's gibt, wird schön überlesen egal ob als Schalter vor der true Weiche im return, oder anderweitig.

Ich bin seit 15 Uhr daran zu schauen was ich da falsch mache, noch etwas Geduld. Wink

Mfg Garlant
Also meine Erfahrung ist, dass es viel leichter geht, wenn man sowas in die Ecke tritt, jammert und kräftig flucht und dann nach einiger Zeit wieder dran geht. Dann klappt nämlich plötzlich alles.
Also, mach mal Pause. Big Grin
ich habe mich nun hingesetzt un den entsprechendne Code vollkommen aus dem kopf geschrieben. Scheinbar hat mich das abschauen abgelenkt (und da sage wer, Spickzettel würde in Arbeiten helfen*fg*)
Öffne:
inc/datahandlers/post.php
Suche:
PHP-Code:
        // This is a new thread and we require that a subject is present.
        
else
        {
            if(
my_strlen($subject) == 0)
            {
                
$this->set_error("missing_subject");
                return 
false;
            } 
Füge darunter ein:
PHP-Code:
            $no_double_subject_query $db->query("SELECT subject FROM ".TABLE_PREFIX."threads");
            while(
$no_double_subject_result $db->fetch_array($no_double_subject_query))
            {
                
// wir kontrollieren, ob der betreff schon vorhanden ist
                
if(my_strlen($subject) == $no_double_subject_result['subject'])
                {
                    
$no_double_subject false;
                }
            }
            if(
$no_double_subject == false)
            {
                
$this->set_error("double_subject");
                return 
false;
            } 
Öffne: inc/lang/sprachpacket/datahandler_post.lang.php:
Suche:
PHP-Code:
$l['postdata_too_many_images'] = 'The message you entered contained {1} images, while only {2} images per message are allowed. Please lower the image count in your message to meet the limit.'
(Das selbe in Deutsch, ich verwende Momentan lediglich englisch)
Füge darunter ein:
PHP-Code:
$l['postdata_double_subject'] = 'Der Betreff existiert schon, bitte wähle einen anderen.'

Alle Daten speichern und schließen! Viel Spaß damit.

Nachtrag: Ich werde mir dafür mal eine Funktion ausdenken, da mit das nicht wie Graut und rüben aussieht.

Mfg Garlant

Edit: bitte noch nicht nutzen, da hat sich ein fehler eingeschlichen
So nun folgt die funktionierende und zuglich in eine neue Funktion gebrachte Version.

Öffne:
newthread.php
Suche:
PHP-Code:
        $valid_subject $posthandler->verify_subject(); 
Füge darunter:
PHP-Code:
        $proof_for_double_subject $posthandler->verify_proof_for_double_subject(); 
Suche:
PHP-Code:
if(!$valid_thread || !$valid_subject
Ersetze mit:
PHP-Code:
if(!$valid_thread || !$valid_subject || !$proof_for_double_subject

Öffne: inc/datahandlers/post.php
Suche:
PHP-Code:
        // Return the post's pid and whether or not it is visible.
        
return array(
        
"pid" => $this->pid,
        
"visible" => $visible
        
);
    } 
Füge darunter:
PHP-Code:
    function verify_proof_for_double_subject()
    {
        global 
$mybb$db$plugins;

        
$post = &$this->data;
        
$subject = &$post['subject'];

        
$no_double_subject_query $db->query("SELECT subject FROM ".TABLE_PREFIX."threads");
        while(
$no_double_subject_result $db->fetch_array($no_double_subject_query))
        {
            
// wir kontrollieren, ob der betreff schon vorhanden ist
            
if($no_double_subject_result['subject'] == $post['subject'])
            {
                
$no_double_subject false;
            }
        }
        if(
$no_double_subject == false)
        {
            
$this->set_error("double_subject");
            return 
false;
        }
        else 
        {
            return 
true;
        }
    } 
Suhe:
PHP-Code:
        if(!$thread['savedraft'])
        {
            
$this->verify_post_flooding();
        } 
PHP-Code:
Füge Darunter:
        
        if (
array_key_exists('subject'$thread))
        {
            
$this->verify_proof_for_double_subject();
        } 
Öffne:
Öffne: inc/lang/sprachpacket/datahandler_post.lang.php:
Füge ein:
PHP-Code:
$l['postdata_double_subject'] = 'Der Betreff existiert schon, bitte wähle einen anderen.'

Alle Daten Speichern und Schließen. Das ganze ist getestet. Viel Spaß damit.

Mfg Garlant
Spitzenklasse!!! Danke!
Ähm..... Sad
Ich hatte nur getestet, ob jetzt der Betreff, der schon da ist genommen wird. Das war nicht so. Aber gerade meldet sich jemand bei mir und sagt, man kann GAR KEIN neues Thema mehr eröffnen. Immer kommt die Meldung "Existiert schon". Ich habe das gerade selbst getestet und selbst der Betreff "uiudhiwehföerhf" wird als schon vorhanden gemeldet.

Ich bau das jetzt mal wieder aus und warte noch was. Smile
Hallo Susanne,

Bitte ersetze die angelegte Funktion in /inc/datahandlers/post.php durch diese:

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='".$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;
    } 
Du kannst das ganze auch gern testen kommen, bevor du dies einbaust.
Dein Account existiert noch Wink http://logd.w039.white.fastwebserver.de/forum

Mfg Garlant
Jajajajaja, jetzt klappt alles! Prima!
Seiten: 1 2