Viewtopic row modifizieren...

In diesem Forum gibt es Starthilfe zum neuen Extension-System von phpBB 3.1/3.2. Fragen zur Entwicklung von Extensions und zur Konvertierung von phpBB 3.0.x MODs sind ebenfalls willkommen.
Antworten
Benutzeravatar
D@ve
Ehemaliges Teammitglied
Beiträge: 3842
Registriert: 28.08.2002 19:33
Wohnort: Bretzfeld
Kontaktdaten:

Viewtopic row modifizieren...

Beitrag von D@ve »

Moin, was ist hier falsch? Egal welches Event in Bezug auf die topic_row ich benutze, ich kriege immer die Meldung:
Indirect modification of overloaded element of phpbb/event/data has no effect

Code: Alles auswählen

    static public function getSubscribedEvents()
    {
        return array(
            'core.viewtopic_cache_user_data'     => 'test',
        );
    }

    public function test($event)
    {
        $event['row']['avatar'] = "test";
    }
Wird das $event-Objekt nicht als Referenz übergeben, so dass ich das editieren kann? Wir kann ich hier Änderungen vornehmen?
There are only 10 types of people in the world: Those who understand binary, and those who don't
HJW
Mitglied
Beiträge: 1291
Registriert: 20.04.2007 20:48
Wohnort: 45481 Mülheim an der Ruhr
Kontaktdaten:

Re: Viewtopic row modifizieren...

Beitrag von HJW »

Code: Alles auswählen

    
       
     $test['avatar']=array(
        'TEST'    => true,
        );
    
        $event['row'] = $test['avatar'];
    
Das müsste so in dieser Form funktionieren.
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5389
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Viewtopic row modifizieren...

Beitrag von oxpus »

Ja, $event wird schon übergeben, dann musst du es aber auch in deiner Funktion als Parameter angeben. Sonst overload...
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
Benutzeravatar
D@ve
Ehemaliges Teammitglied
Beiträge: 3842
Registriert: 28.08.2002 19:33
Wohnort: Bretzfeld
Kontaktdaten:

Re: Viewtopic row modifizieren...

Beitrag von D@ve »

oxpus hat geschrieben:Ja, $event wird schon übergeben, dann musst du es aber auch in deiner Funktion als Parameter angeben. Sonst overload...
Ja hab ich doch gemacht...

Aber funktioniert jetzt soweit:

Code: Alles auswählen

    public function viewtopic_replace_avatar($event_OBJ)
    {
        if (!$event_OBJ['row']['user_avatar'])
        {
            $temp_ARY = $event_OBJ['row'];
            $temp_ARY['user_avatar'] = $this->avatar_path_STR;
            $temp_ARY['user_avatar_type'] = 'avatar.driver.remote';
            $temp_ARY['user_width'] = $this->width_INT;
            $temp_ARY['user_height'] = $this->height_INT;            
            $event_OBJ['row'] = $temp_ARY;    
        }
    } 
Aber ich verstehe ehrlich gesagt nicht, warum...


Was nicht funktioniert ist das hier:

Code: Alles auswählen

public function ucp_message_replace_avatar($event_OBJ)
    {
        if (!$event_OBJ['message_row']['user_avatar'])
        {
            $temp_ARY = $event_OBJ['message_row'];
            $temp_ARY['user_avatar'] = $this->avatar_path_STR;
            $temp_ARY['user_avatar_type'] = 'avatar.driver.remote';
            $temp_ARY['user_width'] = $this->width_INT;
            $temp_ARY['user_height'] = $this->height_INT;            
            $event_OBJ['message_row'] = $temp_ARY;    
        } 
Ich benutze da als event "core.ucp_pm_view_messsage", aber da wird der Avatar nicht erstezt...

Gruß, Dave
There are only 10 types of people in the world: Those who understand binary, and those who don't
Benutzeravatar
nickvergessen
Ehrenadmin
Beiträge: 11559
Registriert: 09.10.2006 21:56
Wohnort: Stuttgart, Germany
Kontaktdaten:

Re: Viewtopic row modifizieren...

Beitrag von nickvergessen »

Das liegt an php an sich, zusammen mit compress() und export() die wir da verwenden.
https://github.com/nickvergessen/phpbb- ... er.php#L50

Ich hatte es mal genau nach geschlagen, finde aber grad den Link nicht mehr.
kein Support per PN
Benutzeravatar
D@ve
Ehemaliges Teammitglied
Beiträge: 3842
Registriert: 28.08.2002 19:33
Wohnort: Bretzfeld
Kontaktdaten:

Re: Viewtopic row modifizieren...

Beitrag von D@ve »

Und warum funktioniert es bei dem core.ucp_pm_view_messsage-Event nicht, die Werte für den Avatar zu überschreiben?
Ist das garnicht vorgesehen? Man sollte in der Doku irgendwie vermerken, auf welche Parameter nur lesen zugegriffen werden kann bzw. das nur sinnvoll ist (z.B. weil die Daten schon ans Template gesendet wurden) und welche man modifizieren kann...

Achja... kann ich von php aus irgendwie auf Image-Sets und einen kompletten theme-path zugreifen?

Gruß, Dave
There are only 10 types of people in the world: Those who understand binary, and those who don't
Benutzeravatar
Elsensee
Ehemaliges Teammitglied
Beiträge: 832
Registriert: 19.05.2010 15:14
Wohnort: Hamburg
Kontaktdaten:

Re: Viewtopic row modifizieren...

Beitrag von Elsensee »

D@ve hat geschrieben:Und warum funktioniert es bei dem core.ucp_pm_view_messsage-Event nicht, die Werte für den Avatar zu überschreiben?
Weil die Werte in $message_row irrelevant sind hierfür. Die Template-Daten werden bereits kurz vor dem Event zusammengefasst im Array $msg_data, was übrigens ebenfalls im Event übergeben wird. :wink: Willst du also den Avatar verändern, musst du dafür das Element AUTHOR_AVATAR im Array $msg_data verändern.
D@ve hat geschrieben:Achja... kann ich von php aus irgendwie auf Image-Sets und einen kompletten theme-path zugreifen?
Inwiefern? Zugreifen auf Dateisystem-Ebene oder Pfad verändern?
Posts mostly powered by GitHub and phpBB.de Cross-Reference

2015-03-20 - Never forget 8)
Benutzeravatar
D@ve
Ehemaliges Teammitglied
Beiträge: 3842
Registriert: 28.08.2002 19:33
Wohnort: Bretzfeld
Kontaktdaten:

Re: Viewtopic row modifizieren...

Beitrag von D@ve »

@Elsensee: Danke...
Bin aber nicht ganz glücklich mit der Lösung. So muss ich händisch in meiner Callbackfunktion noch HTML-Code (sprich "img"-Tags) einbauen. Aber naja... geht wohl nicht anders...

Gruß, Dave
There are only 10 types of people in the world: Those who understand binary, and those who don't
Antworten

Zurück zu „Extension Bastelstube“