MyBB.de Forum
Beiträge aus bestimmtem Forum auf externer Seite anzeigen - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Anpassungen (https://www.mybb.de/forum/forum-47.html)
+--- Forum: Plugin-Diskussionen (https://www.mybb.de/forum/forum-38.html)
+--- Thema: Beiträge aus bestimmtem Forum auf externer Seite anzeigen (/thread-1792.html)

Seiten: Seiten: 1 2 3 4 5 6 7 8 9 10


RE: Beiträge aus bestimmtem Forum auf externer Seite anzeigen - StefanT - 01.11.2007

Mache es so:
PHP-Code:
//Ausgabe des Feldes
while($row mysql_fetch_object($ergebnis))
    {
    
$posts[] = $row;
    }

if(
is_array($posts))
{
    require_once 
'parser.php';
    
$parser = new postParser;
    
$options = array('allow_html' => 'no''allow_mycode' => 'yes''allow_smilies' => 'yes''allow_imgcode' => 'yes');
    foreach(
$posts as $message)
    {
        echo(
$parser->parse_message($message->message$options)."<br />");
    }




RE: Beiträge aus bestimmtem Forum auf externer Seite anzeigen - Phenom - 01.11.2007

Hm, erstmal danke. Smile
Also, ich hab es so gemacht, und folgende Fehlernachricht erscheint:
Zitat:Fatal error: Cannot instantiate non-existent class: postparser in /var/www/freehost-script/user_web/monk/auslesen.php on line 34
Zeile 34 ist folgende:
PHP-Code:
$parser = new postParser

Ich hab mir gedacht, dass anstelle von "postParser" einfach nur "parser" dastehen muss. Hab ich prompt ausprobiert, doch dann kam die Meldung:
Zitat:Fatal error: Call to undefined function: my_substr() in /var/www/freehost-script/user_web/monk/parser.php on line 78
Zeile 78 in der parser.php ist folgende:
PHP-Code:
if(my_substr($this->base_urlmy_strlen($this->base_url) -1) != "/"

Schon irgendwie verflixt. ^^
Aber danke dass du/ihr dir/euch die Mühe macht mir zu helfen. Smile

Jetzt wäre nur noch herauszufinden wo da der Fehler drinnen steckt.


RE: Beiträge aus bestimmtem Forum auf externer Seite anzeigen - StefanT - 01.11.2007

Immer diese Funktionen vom MyBB. Wink Lösche:
PHP-Code:
        if($this->base_url != "")
        {
            if(
my_substr($this->base_urlmy_strlen($this->base_url) -1) != "/")
            {
                
$this->base_url $this->base_url."/";
            }
        } 



RE: Beiträge aus bestimmtem Forum auf externer Seite anzeigen - Phenom - 01.11.2007

Ok, hab ich gemacht. Aus der parser.php hab ich das Code-Stück gelöscht. Smile

Nun sieht die auslesen.php Datei wie folgt aus:
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))
{
    require_once 
'parser.php';
    
$parser = new parser;
    
$options = array('allow_html' => 'no''allow_mycode' => 'yes''allow_smilies' => 'yes''allow_imgcode' => 'yes');
    foreach(
$posts as $message)
    {
        echo(
$parser->parse_message($message->message$options)."<br />");
    }

?>
Wenn $parser = new parser ist, dann kommt folgende Fehlermeldungen
Zitat:Notice: Undefined index: filter_badwords in /var/www/freehost-script/user_web/monk/parser.php on line 91

Fatal error: Call to a member function on a non-object in /var/www/freehost-script/user_web/monk/parser.php on line 405
Zeile 91 ist die
PHP-Code:
if($options['filter_badwords'] != "no"
und Zeile 405 ist die
PHP-Code:
$this->badwords_cache $cache->read("badwords"); 

Wenn ich nun aber $parser = new postParser habe, dann spuckt er folgendes aus
Zitat:Fatal error: Cannot instantiate non-existent class: postparser in /var/www/freehost-script/user_web/monk/auslesen.php on line 34
Zeile 34 ist die folgende:
PHP-Code:
$parser = new postParser

Und das alles passiert, nachdem ich das Codestück ausgeschnitten habe. Sad


RE: Beiträge aus bestimmtem Forum auf externer Seite anzeigen - StefanT - 01.11.2007

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.


RE: Beiträge aus bestimmtem Forum auf externer Seite anzeigen - Phenom - 01.11.2007

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. Sad

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_matchesPREG_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$message1);
                }
            }
        }

        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
PHP-Code:
function cache_mycode()
    {
        global 
$cache$lang;
        
$this->mycode_cache = array();

        
$standard_mycode['b']['regex'] = "#\[b\](.*?)\[/b\]#si";
        
$standard_mycode['b']['replacement'] = "<strong>$1</strong>";

        
$standard_mycode['u']['regex'] = "#\[u\](.*?)\[/u\]#si";
        
$standard_mycode['u']['replacement'] = "<u>$1</u>";

        
$standard_mycode['i']['regex'] = "#\[i\](.*?)\[/i\]#si";
        
$standard_mycode['i']['replacement'] = "<em>$1</em>";

        
$standard_mycode['s']['regex'] = "#\[s\](.*?)\[/s\]#si";
        
$standard_mycode['s']['replacement'] = "<del>$1</del>";

        
$standard_mycode['copy']['regex'] = "#\(c\)#i";
        
$standard_mycode['copy']['replacement'] = "©";

        
$standard_mycode['tm']['regex'] = "#\(tm\)#i";
        
$standard_mycode['tm']['replacement'] = "™";

        
$standard_mycode['reg']['regex'] = "#\(r\)#i";
        
$standard_mycode['reg']['replacement'] = "®";

        
$standard_mycode['url_simple']['regex'] = "#\[url\]([a-z]+?://)([^\r\n\"\[<]+?)\[/url\]#sei";
        
$standard_mycode['url_simple']['replacement'] = "\$this->mycode_parse_url(\"$1$2\")";

        
$standard_mycode['url_simple2']['regex'] = "#\[url\]([^\r\n\"\[<]+?)\[/url\]#ei";
        
$standard_mycode['url_simple2']['replacement'] = "\$this->mycode_parse_url(\"$1\")";

        
$standard_mycode['url_complex']['regex'] = "#\[url=([a-z]+?://)([^\r\n\"\[<]+?)\](.+?)\[/url\]#esi";
        
$standard_mycode['url_complex']['replacement'] = "\$this->mycode_parse_url(\"$1$2\", \"$3\")";

        
$standard_mycode['url_complex2']['regex'] = "#\[url=([^\r\n\"\[<&\(\)]+?)\](.+?)\[/url\]#esi";
        
$standard_mycode['url_complex2']['replacement'] = "\$this->mycode_parse_url(\"$1\", \"$2\")";

        
$standard_mycode['email_simple']['regex'] = "#\[email\](.*?)\[/email\]#ei";
        
$standard_mycode['email_simple']['replacement'] = "\$this->mycode_parse_email(\"$1\")";

        
$standard_mycode['email_complex']['regex'] = "#\[email=(.*?)\](.*?)\[/email\]#ei";
        
$standard_mycode['email_complex']['replacement'] = "\$this->mycode_parse_email(\"$1\", \"$2\")";

        
$standard_mycode['color']['regex'] = "#\[color=([a-zA-Z]*|\#?[0-9a-fA-F]{6})](.*?)\[/color\]#si";
        
$standard_mycode['color']['replacement'] = "<span style=\"color: $1;\">$2</span>";

        
$standard_mycode['size']['regex'] = "#\[size=(xx-small|x-small|small|medium|large|x-large|xx-large)\](.*?)\[/size\]#si";
        
$standard_mycode['size']['replacement'] = "<span style=\"font-size: $1;\">$2</span>";

        
$standard_mycode['size_int']['regex'] = "#\[size=([0-9\+\-]+?)\](.*?)\[/size\]#si";
        
$standard_mycode['size_int']['replacement'] = "<span style=\"font-size: $1em;\">$2</span>";

        
$standard_mycode['font']['regex'] = "#\[font=([a-z ]+?)\](.+?)\[/font\]#si";
        
$standard_mycode['font']['replacement'] = "<span style=\"font-family: $1;\">$2</span>";

        
$standard_mycode['align']['regex'] = "#\[align=(left|center|right|justify)\](.*?)\[/align\]#si";
        
$standard_mycode['align']['replacement'] = "<p style=\"text-align: $1;\">$2</p>";

        
$standard_mycode['hr']['regex'] = "#\[hr\]#si";
        
$standard_mycode['hr']['replacement'] = "<hr />";

        
$custom_mycode $cache->read("mycode");

        
// If there is custom MyCode, load it.
        
if(is_array($custom_mycode))
        {
            foreach(
$custom_mycode as $key => $mycode)
            {
                
$custom_mycode[$key]['regex'] = "#".$mycode['regex']."#si";
            }
            
$mycode array_merge($standard_mycode$custom_mycode);
        }
        else
        {
            
$mycode $standard_mycode;
        }
        
        
// Assign the MyCode to the cache.
        
foreach($mycode as $code)
        {
            
$this->mycode_cache['find'][] = $code['regex'];
            
$this->mycode_cache['replacement'][] = $code['replacement'];
        }
    } 

Ich glaube das brauche ich auch noch:
PHP-Code:
function parse_mycode($message$options=array())
    {
        global 
$lang;

        
// Cache the MyCode globally if needed.
        
if($this->mycode_cache == 0)
        {
            
$this->cache_mycode();
        }

        
// Parse quotes first
        
$message $this->mycode_parse_quotes($message);
        
        
$message $this->mycode_auto_url($message);

        
$message str_replace('$''$'$message);

        
// Replace the rest
        
$message preg_replace($this->mycode_cache['find'], $this->mycode_cache['replacement'], $message);

        
// Special code requiring special attention
        
while(preg_match("#\[list\](.*?)\[/list\]#esi"$message))
        {
            
$message preg_replace("#\[list\](.*?)\[/list\](\r\n?|\n?)#esi""\$this->mycode_parse_list('$1')\n"$message);
        }

        
// Replace lists.
        
while(preg_match("#\[list=(a|A|i|I|1)\](.*?)\[/list\](\r\n?|\n?)#esi"$message))
        {
            
$message preg_replace("#\[list=(a|A|i|I|1)\](.*?)\[/list\]#esi""\$this->mycode_parse_list('$2', '$1')\n"$message);
        }

        
// Convert images when allowed.
        
if($options['allow_imgcode'] != "no")
        {
            
$message preg_replace("#\[img\](\r\n?|\n?)(https?://([^<>\"']+?))\[/img\]#ise""\$this->mycode_parse_img('$2')\n"$message);
            
$message preg_replace("#\[img=([0-9]{1,3})x([0-9]{1,3})\](\r\n?|\n?)(https?://([^<>\"']+?))\[/img\]#ise""\$this->mycode_parse_img('$4', array('$1', '$2'));"$message);
            
$message preg_replace("#\[img align=([a-z]+)\](\r\n?|\n?)(https?://([^<>\"']+?))\[/img\]#ise""\$this->mycode_parse_img('$3', array(), '$1');"$message);
            
$message preg_replace("#\[img=([0-9]{1,3})x([0-9]{1,3}) align=([a-z]+)\](\r\n?|\n?)(https?://([^<>\"']+?))\[/img\]#ise""\$this->mycode_parse_img('$5', array('$1', '$2', '$3'));"$message);
        }

        return 
$message;
    } 

Bilder und Links brauche ich auch
PHP-Code:
function mycode_parse_url($url$name="")
    {
        if(!
preg_match("#^[a-z0-9]+://#i"$url))
        {
            
$url "http://".$url;
        }
        
$fullurl $url;

        
$url str_replace('&''&'$url);
        
$name str_replace('&''&'$name);

        if(!
preg_match("#[a-z0-9]+://#i"$fullurl))
        {
            
$fullurl "http://".$fullurl;
        }
        if(!
$name)
        {
            
$name $url;
        }
        
$name stripslashes($name);
        
$url stripslashes($url);
        
$fullurl stripslashes($fullurl);
        if(
$name == $url && $this->options['shorten_urls'] != "no")
        {
            if(
my_strlen($url) > 55)
            {
                
$name my_substr($url040)."...".my_substr($url, -10);
            }
        }

        
$name preg_replace("#&\#([0-9]+);#si""&#$1;"$name); // Fix & but allow unicode        
        
$link "<a href=\"$fullurl\" target=\"_blank\">$name</a>";
        return 
$link;
    } 
PHP-Code:
function mycode_parse_img($url$dimensions=array(), $align='')
    {
        
$url trim($url);
        
$url str_replace("\n"""$url);
        
$url str_replace("\r"""$url);
        if(
$align == "right")
        {
            
$css_align " style=\"float: right;\"";
        }
        else if(
$align == "left")
        {
            
$css_align " style=\"float: left;\"";
        }
        if(
$dimensions[0] > && $dimensions[1] > 0)
        {
            return 
"<img src=\"{$url}\" width=\"{$dimensions[0]}\" height=\"{$dimensions[1]}\" border=\"0\" alt=\"\"{$css_align} />";
        }
        else
        {
            return 
"<img src=\"{$url}\" border=\"0\" alt=\"\"{$css_align} />";            
        }
    } 

Email natürlich auch:
PHP-Code:
function mycode_parse_email($email$name="")
    {
        if(!
$name)
        {
            
$name $email;
        }
        if(
preg_match("/^([a-zA-Z0-9-_\+\.]+?)@[a-zA-Z0-9-]+\.[a-zA-Z0-9\.-]+$/si"$email))
        {
            return 
"<a href=\"mailto:$email\">".$name."</a>";
        }
        else
        {
            return 
$email;
        }
    } 

Listen sind ganz wichtig:
PHP-Code:
function mycode_parse_list($message$type="")
    {
        
$message str_replace('\"''"'$message);
        
$message preg_replace("#\s*\[\*\]\s*#""</li>\n<li>"$message);
        
$message .= "</li>";

        if(
$type)
        {
            
$list "\n<ol type=\"$type\">$message</ol>\n";
        }
        else
        {
            
$list "<ul>$message</ul>\n";
        }
        
$list preg_replace("#<(ol type=\"$type\"|ul)>\s*</li>#""<$1>"$list);
        return 
$list;
    } 

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. Smile

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? Smile


RE: Beiträge aus bestimmtem Forum auf externer Seite anzeigen - Phenom - 01.11.2007

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. Smile

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. Smile


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. Smile


RE: Beiträge aus bestimmtem Forum auf externer Seite anzeigen - marcel3067 - 09.12.2007

Hallo,ich bekomme leider immer ein Fehler.

Fehler:
Zitat:message)."
"); } } ?>



Der Code:
Zitat:<?php

error_reporting(E_ALL);

// 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);

//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 />");
}
}
?>

die Mysql Daten sind im Code eingegeben.

Es läuft über PHP5.

Gruß,
Marcel


RE: Beiträge aus bestimmtem Forum auf externer Seite anzeigen - marcel3067 - 12.12.2007

Kann mir niemand helfen?

Wär echt super von euchCool

Gruß,
Marcel


RE: Beiträge aus bestimmtem Forum auf externer Seite anzeigen - Michael - 12.12.2007

Ist das die komplette Fehlermeldung? Damit lässt sich leider nicht viel anfangen.