Ich melde mich, da ich gerade an einem total simplen Plugin verzweifel, weil, wie im Titel beschreiben, eine doofe Variable leer ist.
Folgendes soll das Plugin tun:
Sobald ich einen Artikel unter einer bestimmten (von mir fest definierten) Kategorie, neu anlege (also Anwenden oder Speichern gedrückt habe), soll das Plugin diesen Artikel ebenfalls in meinem Forum veröffentlichen (geht dabei halt um News).
Soweit so gut. Der Thread wird auch in die nötige Tabelle in der Datenbank geschrieben, aber er hat keinen Text, wodurch mir der erste Beitrag in dem Thread ebenfalls nicht erstellt wird.
Der Titel wird gespeichert.
Also $article->title funktioniert.
Aber $article->text nicht.
Warum?
Zur Verdeutlichung etwas Code:
Code: Select all
<?php
// kein direkter Zugriff über eine Url sondern nur über's Joomla-Framework
defined( '_JEXEC' ) or die( 'Unerlaubter Zugriff' );
// lade Elternklasse (dieses Plugin erbt von JPlugin)
jimport( 'joomla.plugin.plugin' );
// Rumpf der Plugin-Klasse
class plgContentGdENeues extends JPlugin
{
//Konstruktor
function plgContentGdENeues( &$subject, $params ) {
parent::__construct( $subject, $params );
}
//Funktion wird ausgeführt, nachdem man einen Artikel gespeichert hat
function onAfterContentSave(&$article, $isNew){
global $mainframe;
//Nur ausführen, wenn der Artikel neu angelegt wurde und die Kategorie 36 (Neues) ist
if($isNew && $article->catid == 36){
// Neues Datenbank-Objekt erzeugen
$db = @new mysqli('Server', 'User', 'PW', 'Datenbankr');
// Pruefen ob die Datenbankverbindung hergestellt werden konnte
if (mysqli_connect_errno() == 0){
//Daten die an die DB gesendet werden sollen
$titel = $article->title;
$text = $article->text;
$boardID = 333;
$userID = 777;
$user = 'name';
$time = TIME();
//Thread wird erstellt
$sql = "INSERT INTO `wbbx_thread` (`boardID`, `languageID`, `topic`, `firstPostPreview`, `time`, `userID`, `username`, `lastPostTime`, `lastPosterID`, `lastPoster`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?);";
$eintrag = $db->prepare($sql);
$eintrag->bind_param('iissiisiis', $boardID, $userID, $titel, $text, $time, $userID, $user, $time, $userID, $user);
$eintrag->execute();
//ID vom Thread ermitteln
$sql = "SELECT LAST_INSERT_ID() AS id;";
$ergebnis = $db->query( $sql );
$zeile = $ergebnis->fetch_object();
$lastid = $zeile->id;
$ergebnis->close();
//Erster Beitrag vom Thread wird erstellt
$sql = "INSERT INTO `wbbx_post` (`threadID`, `message`, `time`, `userID`, `username`) VALUES (?, ?, ?, ?, ?);";
$eintrag = $db->prepare($sql);
$eintrag->bind_param('isiis', $lastid, $text, $time, $userID, $user);
$eintrag->execute();
//ID vom beitrag ermitteln
$sql = "SELECT `postID` FROM `wbb1_1_post` WHERE `threadID` = ".$lastid.";";
$ergebnis = $db->query( $sql );
$zeile = $ergebnis->fetch_object();
$lastid2 = $zeile->id;
$ergebnis->close();
//dem Thread die ID vom ersten Beitrag übermitteln
$sql = "UPDATE `wbbx_thread` SET `firstPostID` = ? WHERE `threadID` = ?;";
$eintrag = $db->prepare($sql);
$eintrag->bind_param('si', $lastid2, $lastid);
$eintrag->execute();
}else{
// Es konnte keine Datenbankverbindung aufgebaut werden
echo 'Die Datenbank konnte nicht erreicht werden. Folgender Fehler trat auf: <span class="hinweis">' .mysqli_connect_errno(). ' : ' .mysqli_connect_error(). '</span>';
}
//Verbindung schließen
$db->close();
}
return true;
}
}
?>
Der erste Beitrag wird erst gar nicht erstellt, da die DB nicht zulässt, dass der Inhalt leer ist.
Von euchw er ne Idee, woran es liegen könnte dass ich keinen Inhalt bekomme?
Gruß
Rafel