MyBB.de Forum

Normale Version: Shoutbox & MyBB 1.2 ?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Ich habe interessehalber mal versucht mich in das Plugin reinzudenken und zu versuchen, es auch unter 1.2 zum Laufen zu bringen.
Bei der Datei shoutbox.php aus dem Verzeichnis inc/plugins/ ist es mir (glaube ich) halbwegs gelungen. Zumindest wird eine Tabelle und entsprechende Templates angelegt. Wink
Bei der eigentlichen shoutbox.php habe ich nun ein Problem, mit dem ich nicht mehr weiterkomme.

Ich erhalte folgende Fehlermeldung:

Fatal error: Call to undefined method databaseEngine::result() in /data/wwwdir/res1/web14/html/forum/shoutbox.php on line 173

Der entsprechende Teil aus der shoutbox.php sieht wie folgt aus:

Code:
        // First things first, pagination. Woohoo!
        $query = $db->query("SELECT COUNT(sid) AS shouts FROM ".TABLE_PREFIX."shouts");
        $shoutcount = $db->result($query, 0);

Kann mir da vielleicht einer von denen, die hier (im Gegensatz zu mir) Ahnung vom Coden haben einen Tipp geben, so dass ich mein "learning-by-doing-Projekt" fortsetzen kann. Wink
Leider is mein Englisch nicht gut genug, so dass ich mich an musicalmidget direkt wenden kann. Sad
Wenn nicht, isses auch net weiter tragisch, dann warte ich einfach bis der Autor es an 1.2 angepasst hat.

Viele Grüße, Jens
Hallo zusammen

Ja das würde mich auch sehr interessieren !

bis gli...
greetz DaStaFlexX
Funktioniert es wenn du $db->result durch $db->fetch_array ersetzt?
Hmmmm! Ich will's mal so sagen: Ich bin zumindest ein paar Zeilen weiter (von 173 zu 186) Wink

Fatal error: Unsupported operand types in /data/wwwdir/res1/web14/html/forum/shoutbox.php on line 186

Dabei ist eine weitere grundsätzliche Frage aufgetaucht. Werden da eigentlich die z.b. mit // oder mit /* bla bla bla */ auskommentierten Zeilen sowie leere Zeilen mitgezählt?

Code:
        // First things first, pagination. Woohoo!
        $query = $db->query("SELECT COUNT(sid) AS shouts FROM ".TABLE_PREFIX."shouts");
        $shoutcount = $db->fetch_array($query, 0);
        
        // If there are currently no shouts in the database, prompt the user to make one.
        if($shoutcount < 1)
        {
            eval("\$shouts = \"".$templates->get('shoutbox_error_noshouts')."\";");
        }
        else
        {
            /*    Currently, a maximum of 25 shouts are shown on any one page of the shoutbox.
                This will change in version 2.0 so as administrators may set the maximum
                number of shouts to be shown per page. */
            $perpage = 25;
            $pages = ceil($shoutcount / $perpage);
            
            if(!intval($mybb->input['page']))
            {
                $page = 1;
            }
            else
            {
                $page = intval($mybb->input['page']);
            }

Viele Grüße, Jens

P.S.: Ich hab als Attachment mal meine bisher "überarbeitete" shoutbox.php angehängt. Wie gesagt, da ich nur sehr begrenzt Ahnung habe natürlich ohne Anspruch auf Richtigkeit. So habe ich z.B. ganz oben auch
Code:
define("IN_MYBB", 1);
define("KILL_GLOBALS", 1);
eingefügt, da es ohne nicht lief und ich es so in einem anderen überarbeiteten Plugin gesehen habe, ohne dass ich so ganz genau weiß, was das genau definiert. Rolleyes
Ja, die Kommentare werden bei den Zeilen mitgezählt.

Ersetze
PHP-Code:
$shoutcount $db->fetch_array($query0); 
Bitte mal durch:
PHP-Code:
$shoutcountresult $db->fetch_array($query);
$shoutcount $shoutcountresult['shouts']; 
Jepp. Wieder weiter. Nun konnte ich schon nen Beitrag schreiben, allerdings erschien beim Abschicken folgendes:

Fatal error: Call to undefined function postify() in /data/wwwdir/res1/web14/html/forum/shoutbox.php on line 219

Wieder der Code außenrum:

Code:
            // Start getting shouts!
            $query = $db->query("SELECT s.*, s.username AS shoutusername, u.username, u.usergroup, u.displaygroup FROM ".TABLE_PREFIX."shouts s LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=s.uid) ORDER BY dateline LIMIT $start, $limit");
            while($shout = $db->fetch_array($query))
            {
                $shout['message'] = postify($shout['message']);
                $shout['time'] = mydate($mybb->settings['dateformat'], $shout['dateline']).' '.mydate($mybb->settings['timeformat'], $shout['dateline']);
                
                // Check for /me tag in shout.
                $mecheck = explode(' ', $shout['message']);
                if($mecheck[0] == '/me' || $mecheck[0] == '/slap')
                {
                    $shout['message'] = domecode($shout['message'], $shout['username']);
                    $shout['username'] = '';

Die Funktion postify ist auch nur an der einen Stelle im plugin eingebaut.

Danke für die Hilfe! Gruß, Jens
Die Funktion potify gibt es nicht mehr, eine Klasse übernimmt jetzt die Verarbeitung:
PHP-Code:
require_once "inc/class_parser.php";
$parser = new postParser;
$parser_options = array(
    
"allow_html" => "no",
    
"allow_mycode" => "yes",
    
"allow_smilies" => "yes",
    
"allow_imgcode" => "yes"
);
$message $parser->parse_message($message$parser_options); 
Super! Nach ein paar weiteren kleineren Problemchen (mit geänderten Namen von Funktionen, etc.) habe ich nun tatsächlich eine lauffähige shoutbox.php hinbekommen.

Nur nochmal zur Sicherheit. Ist es richtig dass sich auch die pop-up Funktion geändert hat? Ich habe mal im Quelltext bei der "buddy-list" nachgeschaut, weil's bei mir net ging und habe daraufhin den onClickBefehl von:
Code:
    $shoutboxlink = " | <a href=\"#\" onClick=\"popupWin('shoutbox.php', 'Shoutbox', 350, 350);\">Shoutbox</a>";
nach:
Code:
    $shoutboxlink = " | <a href=\"#\" onClick=\"MyBB.popupWindow('shoutbox.php', 'Shoutbox', 500, 350);\">Shoutbox</a>";
geändert. Bin mir jetzt nicht sicher ob man diesen MyBB-Teil nicht als irgend'ne Variable hätte schreiben müssen, oder ob des so ok is. Funktionieren tut's nun auf jeden Fall.

Gruß, Jens

P.S.: @Michael! Weitere Frage ist nun auch, ob ich meine "Privatänderung" (deutsch_du) nun zum Download freigeben soll oder ob der bessere Weg ist wenn wir warten bis der Author selbst sich seinem Werk angenommen hat? Möchte eigentlich niemanden verärgern.
Ja, das mit dem Popup ist korrekt. Frag einfach bei Musicalmidget nach ob du deine Version veröffentlichen darfst.
Zitat:Super! Nach ein paar weiteren kleineren Problemchen (mit geänderten Namen von Funktionen, etc.) habe ich nun tatsächlich eine lauffähige shoutbox.php hinbekommen.
Super... Gute Arbeit ! Wink

Ja bitte veröffentlichen !!!

bis gli...
greetz DaStaFlexX
Seiten: 1 2