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.
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.
Leider is mein Englisch nicht gut genug, so dass ich mich an musicalmidget direkt wenden kann.
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)
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.
Ja, die Kommentare werden bei den Zeilen mitgezählt.
Ersetze
PHP-Code:
$shoutcount = $db->fetch_array($query, 0);
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 !
Ja bitte veröffentlichen !!!
bis gli...
greetz DaStaFlexX