Das ist viel komplizierter als gedacht. Ich habe mir das nochmal genau angeschaut und es kommen viel öfters Variablen des MyBBs vor. Versuche mal die einzelnen Funktionen, die du brauchst auszubauen und in eine eigene Datei zu verlagern.
Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
01.11.2007, 12:56 (Dieser Beitrag wurde zuletzt bearbeitet: 01.11.2007, 12:57 von Phenom.)
Ok, ich kann allerdings nur die raussuchen, die ich meiner Meinung nach für notwendig halte, die dann in einer Datei zu einem ganzen PHP Code zusammenzufügen kann ich leider nich.
Funktion 1:
PHP-Code:
function parse_message($message, $options=array())
{
//global $plugins, $mybb;
// Set base URL for parsing smilies
$this->base_url = "/myBB";
//if($this->base_url != "")
//{
// if(my_substr($this->base_url, my_strlen($this->base_url) -1) != "/")
// {
// $this->base_url = $this->base_url."/";
// }
//}
// Set the options
$this->options = $options;
// Get rid of cartridge returns for they are the workings of the devil
$message = str_replace("\r", "", $message);
// Filter bad words if requested.
if($options['filter_badwords'] != "no")
{
$message = $this->parse_badwords($message);
}
if($options['allow_html'] != "yes")
{
$message = $this->parse_html($message);
}
else
{
// Strip out any script tags if HTML is enabled
if($options['allow_html'] == "yes")
{
while(preg_match("#<script(.*)>(.*)</script(.*)>#is", $message))
{
$message = preg_replace("#<script(.*)>(.*)</script(.*)>#is", "<script$1>$2</script$3>", $message);
}
// Remove these completely
$message = preg_replace("#\s*<base[^>]*>\s*#is", "", $message);
$message = preg_replace("#\s*<meta[^>]*>\s*#is", "", $message);
$message = str_replace(array('<?php', '<!--', '-->', '?>', "<br />\n", "<br>\n"), array('<?php', '<!--', '-->', '?>', "\n", "\n"), $message);
}
}
// If MyCode needs to be replaced, first filter out [code] and [php] tags.
if($options['allow_mycode'] != "no")
{
// First we split up the contents of code and php tags to ensure they're not parsed.
preg_match_all("#\[(code|php)\](.*?)\[/\\1\](\r\n?|\n?)#si", $message, $code_matches, PREG_SET_ORDER);
$message = preg_replace("#\[(code|php)\](.*?)\[/\\1\](\r\n?|\n?)#si", "{{mybb-code}}\n", $message);
}
// Always fix bad Javascript in the message.
$message = $this->fix_javascript($message);
// Replace "me" code and slaps if we have a username
if($options['me_username'])
{
$message = preg_replace('#(>|^|\r|\n)/me ([^\r\n<]*)#i', "\\1<span style=\"color: red;\">* {$options['me_username']} \\2</span>", $message);
$message = preg_replace('#(>|^|\r|\n)/slap ([^\r\n<]*)#i', "\\1<span style=\"color: red;\">* {$options['me_username']}{$lang->slaps} \\2 {$lang->with_trout}</span>", $message);
}
// If we can, parse smilies
if($options['allow_smilies'] != "no")
{
$message = $this->parse_smilies($message, $options['allow_html']);
}
// Replace MyCode if requested.
if($options['allow_mycode'] != "no")
{
$message = $this->parse_mycode($message, $options);
}
// Run plugin hooks
//$message = $plugins->run_hooks("parse_message", $message);
if($options['allow_mycode'] != "no")
{
// Now that we're done, if we split up any code tags, parse them and glue it all back together
if(count($code_matches) > 0)
{
foreach($code_matches as $text)
{
// Fix up HTML inside the code tags so it is clean
if($options['allow_html'] != "no")
{
$text[2] = $this->parse_html($text[2]);
}
if(strtolower($text[1]) == "code")
{
$code = $this->mycode_parse_code($text[2]);
}
elseif(strtolower($text[1]) == "php")
{
$code = $this->mycode_parse_php($text[2]);
}
$message = preg_replace("#\{\{mybb-code\}\}\n?#", $code, $message, 1);
}
}
}
if($options['nl2br'] != "no")
{
$message = nl2br($message);
// Fix up new lines and block level elements
$message = preg_replace("#(</?(?:html|head|body|form|div|p|table|thead|tbody|tfoot|tr|td|th|ul|ol|li|div|p)[^>]*>)\s*<br />#i", "$1", $message);
$message = preg_replace("#( )+(</?(?:html|head|body|form|div|p|table|thead|tbody|tfoot|tr|td|th|ul|ol|li|div|p)[^>]*>)#i", "$2", $message);
}
$message = my_wordwrap($message);
//$message = $plugins->run_hooks("parse_message_end", $message);
return $message;
}
Bei dem bin ich mir nicht nicht sicher, ob ich es brauche
Eigentlich brauche ich alles bis auf die Smileys ... ^^
Tut mir Leid das es jetzt so viel ist, aber ich bin nun mal nicht sehr gut in PHP, aber hoffe trotzdem dass ihr mir weiterhelfen könnt.
Nun, du hast gesagt, ich soll die in eine neu Datei packen. Soll die am Anfang noch was besitzen oder reicht es einfach nur noch am Anfang ein <?php und am Schluss ein ?> zu setzen?
01.11.2007, 15:50 (Dieser Beitrag wurde zuletzt bearbeitet: 01.11.2007, 15:56 von Phenom.)
Also, erst einmal viele vielen Dank, dass ihr mir geholfen habt. Ich hab es nun gelassen, ich werde den MyBB-internen Parser nicht verwenden. Es ist 1. zu viel Arbeit und 2. für mich, da ich ja nicht so geübt in PHP bin, ein wirklich blödes Hindernis.
Nun, allerdings habe ich es endlich geschafft, einen anderen BBCode Parser zum laufen zu bringen. Er funktioniert sehr gut. Deckt zwar nicht alle BBCodes von meinem MyBB ab, aber die Notwendigsten sind vorhanden.
Den BBCode Parser hab ich angehängt.
So sieht der endgültige Quellcode der Datei aus, die die Datenbank ausliest.
PHP-Code:
<?php
error_reporting(E_ALL);
// Daten für Verbindung zur Datenbank
$dbhost = "Localhost";
$dbuser = "*****";
$dbpassword = "*****";
$dbdatabase = "*****";
// Präfix
$prefix = "mybb_";
// URL zum Forum
$url = "http://www.monk.ja-nee.de/myBB";
// Verbindung zur Datenbank aufnehmen
$db = mysql_connect($dbhost,$dbuser,$dbpassword) or die ("Verbindung fehlgeschlagen");
mysql_select_db($dbdatabase,$db);
//Abfrage der Datenbank
$abfrage = "SELECT message FROM {$prefix}posts WHERE pid=28";
$ergebnis = mysql_query($abfrage);
//Ausgabe des Feldes
while($row = mysql_fetch_object($ergebnis))
{
$posts[] = $row;
}
if(is_array($posts))
{
foreach($posts as $message)
{
require_once 'bb.php';
echo(bb_decode($message->message)."<br />");
}
}
?>
Also: Nochmal vielen Dank, für die Hilfe.
Das Ergebnis sieht so aus: http://monk.ja-nee.de/read.php
Ist zwar noch nicht die Seite für unserer Pfarrei, sondern mein anderes Forum, aber man kann schön sehen, dass es funktioniert, obwohl die Bilder etwas zu breit sind, was aber egal ist.
// Daten für Verbindung zur Datenbank
$dbhost = "localhost";
$dbuser = "xxx";
$dbpassword = "xxx";
$dbdatabase = "xxx";
// Präfix
$prefix = "mybb_";
// URL zum Forum
$url = "http://forum.vfr-club.com";
// Verbindung zur Datenbank aufnehmen
$mybb = mysql_connect($localhost,$dblogin,$dbpass) or die ("Verbindung fehlgeschlagen");
mysql_select_db($dbdatabase,$db);
//Abfrage der Datenbank
$abfrage = "SELECT message FROM {$prefix}posts WHERE pid=28";
$ergebnis = mysql_query($abfrage);
Ist das die komplette Fehlermeldung? Damit lässt sich leider nicht viel anfangen.
Gruß,
Michael
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.