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.
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.
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
Ähm.....
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.
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
http://logd.w039.white.fastwebserver.de/forum
Mfg Garlant
Jajajajaja, jetzt klappt alles! Prima!