+ Antworten
Ergebnis 1 bis 6 von 6

Thema: onAfterContentSave $article-> Frage

  1. #1
    Neu an Board
    Registriert seit
    04.06.2010
    Beiträge
    6
    Bedankte sich
    1
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard Plugin Problem mit onAfterContentSave und $article

    Hallöchen ihrs!

    Ich bastel gerade an einem Plugin für meine Joomla Installation.
    Ist halt ganz speziel auf ne Idee von mir angepasst, aber es tut einfach nicht das, was es soll.

    Kurz was es tun soll:
    Ich habe eine Webseite mit Joomla erstellt, und wenn ich in der Kategorie "Neues" einen neuen(!) Artikel erstelle, soll dieser ebenfalls in die Datenbank meines Forums eingetragen werden.
    Da beides auf dem selben Server liegt, also nur ein Insert in die Forentabelle.

    Tjoa... soweit so gut.
    Aber es passiert gar nichts. Der ganze SQl Code Funktioniert, habe ich einzelnd getestet, aber er wird nicht ausgeführt im Plugin. wie gesagt, nur ausführen, wenn der Artikel neu ist und in der Kategorie "Neues (ID: 36)"

    Hier mal der Code:

    Code:
    <?php
    // kein direkter Zugriff über eine Url sondern nur über's Joomla-Framework
    defined( '_JEXEC' ) or die( 'Unerlaubter Zugriff' );
    
    // lade die JPlugin-Klasse, von der unsere eigene Plugin-Klasse abgeleitet wird
    jimport( 'joomla.plugin.plugin' );
    
    // Rumpf unserer Plugin-Klasse
    class  plgGdENeues extends JPlugin
    {
    	function plgGdENeues( &$subject, $params ) {
    		parent::__construct( $subject, $params );
    	}
    
    
       function onAfterContentSave( &$article, $isNew ){
                    
                    global $mainframe;
                    if($isNew && $article->catid == '36'){
                     
                      // Neues Datenbank-Objekt erzeugen
                      $db = @new mysqli('Server', 'User', 'Passwort', 'Datenbank');
                      // Pruefen ob die Datenbankverbindung hergestellt werden konnte
                      if (mysqli_connect_errno() == 0){
                        
                        $titel    = $db->real_escape_string($article->title);
                        $text     = $db->real_escape_string($article->text);
                        
                        // Multi-Query zusammenstellen
                        $sql  = sprintf("INSERT INTO `wbb1_1_thread` (`boardID`, `languageID`, `topic`, `firstPostPreview`, `time`, `userID`, `username`, `lastPostTime`, `lastPosterID`,  `lastPoster`) VALUES ('bordid', 'id', '%s', '%s', CURRENT_TIMESTAMP, '2', 'Name', CURRENT_TIMESTAMP, '2', 'Name);", $titel, $text);
                        $sql .= sprintf("INSERT INTO `wbb1_1_post` (`threadID`, `message`, `time`, `userID`, `username`) VALUES (LAST_INSERT_ID(), '%s', CURRENT_TIMESTAMP, 'ID', 'Name');", $text);
                        $sql .= sprintf("UPDATE `wbb1_1_thread` SET `firstPostID` = (SELECT `postID` FROM `wbb1_1_post` WHERE `message` = '%s') WHERE `firstPostPreview` = '%s';", $text, $text);
                        $db->multi_query($sql);
                                            
                      }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>';
                      }
                      $db->close();
                    }
                    
                    return true;
      }
    }
    ?>
    In der SQl Syntax habe ich halt bissel was weggenommen. Die funktioniert auch wudnerbar.
    Nur das drumherum nicht. Soweit ich feststellen konnte, passiert ab
    Code:
    if($isNew && $article->catid == '36'){
    Nichts mehr. Auch wenn ich das
    Code:
    $article->catid == '36'
    raus nehme.

    Aber wie prüfe ich die Kategorie. Und warum nimmt er das $isNew nicht an?

    Fragen über Fragen...

    Würde mich sehr über Hilfe freuen

    Gruß
    Rafel
    Geändert von RafelP (08.06.2010 um 10:24 Uhr)

  2. #2
    Neu an Board
    Registriert seit
    04.06.2010
    Beiträge
    6
    Bedankte sich
    1
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Okay, ich habs soweit. Der Fehler war das fehlende "Content" im Pluginklassennamen.

    Nun wäre noch irgendwie das Problem:

    Code:
    <?php
    // kein direkter Zugriff über eine Url sondern nur über's Joomla-Framework
    defined( '_JEXEC' ) or die( 'Unerlaubter Zugriff' );
    
    // lade die JPlugin-Klasse, von der unsere eigene Plugin-Klasse abgeleitet wird
    jimport( 'joomla.plugin.plugin' );
    
    // Rumpf unserer Plugin-Klasse
    class  plgContentGdENeues extends JPlugin
    {
    	function plgContentGdENeues( &$subject, $params ) {
    		parent::__construct( $subject, $params );
    	}
    
    
       function onAfterContentSave( &$article, $isNew ){
                    
                    global $mainframe;
                   if($isNew && $article->catid == 36){
                      // Neues Datenbank-Objekt erzeugen
                      $db = @new mysqli('Server', 'user', 'pw', 'DB');
                      // Pruefen ob die Datenbankverbindung hergestellt werden konnte
                      if (mysqli_connect_errno() == 0){
                        
                        $titel    = $article->title;
                        $text     = $article->text;
    Das in $text nichts drinne ist. Dadurch bricht mir das ganze SQl ab.
    Was mich nun wundert. Ich verwende den Tiny Editor und sonst keine großen Änderungen am Joomla.
    Warum bekomme ich den Text nicht aus dem Array raus?

    Gruß
    RafelP

  3. #3
    Hat hier eine Zweitwohnung
    Registriert seit
    14.01.2006
    Ort
    Nienburg
    Alter
    32
    Beiträge
    1.237
    Bedankte sich
    115
    Erhielt 471 Danksagungen
    in 368 Beiträgen

    Standard

    zeig doch mal bitte nen var_dump($article->text); eines fuer dich typisch neuen artikels

  4. #4
    Neu an Board
    Registriert seit
    04.06.2010
    Beiträge
    6
    Bedankte sich
    1
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    öhm, wo packe ich den var_dump hin, damit der mir ausgegeben wird im backend nach dem Speichern?

  5. #5
    Hat hier eine Zweitwohnung
    Registriert seit
    14.01.2006
    Ort
    Nienburg
    Alter
    32
    Beiträge
    1.237
    Bedankte sich
    115
    Erhielt 471 Danksagungen
    in 368 Beiträgen

    Standard

    wenn neu und richtige kategorie ? var_dump()

  6. Erhielt Danksagungen von:


  7. #6
    Neu an Board
    Registriert seit
    04.06.2010
    Beiträge
    6
    Bedankte sich
    1
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Nanu. Warum packt der mir den Text, denn ich im Editor im Textfeld eingebe, ein $article->introtext? Und $article->text gibs gar nicht.

    Das hätte ich gar nicht erwartet...

    object(JTableContent)#97 (34) { ["id"]=> int(107) ["title"]=> string(18) "Joomla News Test 5" ["alias"]=> string(18) "joomla-news-test-5" ["title_alias"]=> NULL ["introtext"]=> string(1425) "

    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc,
    " ["fulltext"]=> string(0) "" ["state"]=> int(1) ["sectionid"]=> string(1) "5" ["mask"]=> string(1) "0" ["catid"]=> string(2) "36" ["created"]=> string(19) "2010-06-05 18:37:31" ["created_by"]=> string(2) "62" ["created_by_alias"]=> string(0) "" ["modified"]=> NULL ["modified_by"]=> NULL ["checked_out"]=> int(0) ["checked_out_time"]=> string(0) "" ["publish_up"]=> string(19) "2010-06-05 18:37:31" ["publish_down"]=> string(19) "0000-00-00 00:00:00" ["images"]=> NULL ["urls"]=> NULL ["attribs"]=> string(231) "show_title= link_titles= show_intro= show_section= link_section= show_category= link_category= show_vote= show_author= show_create_date= show_modify_date= show_pdf_icon= show_print_icon= show_email_icon= language= keyref= readmore=" ["version"]=> int(1) ["parentid"]=> NULL ["ordering"]=> NULL ["metakey"]=> string(0) "" ["metadesc"]=> string(0) "" ["metadata"]=> string(15) "robots= author=" ["access"]=> string(1) "0" ["hits"]=> NULL ["_tbl"]=> string(10) "#__content" ["_tbl_key"]=> string(2) "id" ["_db"]=> &object(JDatabaseMySQL)#11 (18) { ["name"]=> string(5) "mysql" ["_nullDate"]=> string(19) "0000-00-00 00:00:00" ["_nameQuote"]=> string(1) "`" ["_sql"]=> string(119) "SELECT content_id, ordering FROM joomla_gde_hp_content_frontpage WHERE ordering >= 0 ORDER BY ordering, content_id DESC" ["_errorNum"]=> int(0) ["_errorMsg"]=> string(0) "" ["_table_prefix"]=> string(14) "joomla_gde_hp_" ["_resource"]=> resource(26) of type (mysql link) ["_cursor"]=> resource(82) of type (Unknown) ["_debug"]=> int(0) ["_limit"]=> int(0) ["_offset"]=> int(0) ["_ticker"]=> int(0) ["_log"]=> array(0) { } ["_utf"]=> bool(true) ["_quoted"]=> array(0) { } ["_hasQuoted"]=> bool(false) ["_errors"]=> array(0) { } } ["_errors"]=> array(0) { } }
    na auf jeden Fall danke!
    Geändert von RafelP (08.06.2010 um 10:23 Uhr)

+ Antworten

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein