Seite 1 von 1

Viewtopic row modifizieren...

Verfasst: 19.12.2014 02:07
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?

Re: Viewtopic row modifizieren...

Verfasst: 19.12.2014 09:44
von HJW

Code: Alles auswählen

    
       
     $test['avatar']=array(
        'TEST'    => true,
        );
    
        $event['row'] = $test['avatar'];
    
Das müsste so in dieser Form funktionieren.

Re: Viewtopic row modifizieren...

Verfasst: 19.12.2014 12:02
von oxpus
Ja, $event wird schon übergeben, dann musst du es aber auch in deiner Funktion als Parameter angeben. Sonst overload...

Re: Viewtopic row modifizieren...

Verfasst: 19.12.2014 14:22
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

Re: Viewtopic row modifizieren...

Verfasst: 19.12.2014 19:20
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.

Re: Viewtopic row modifizieren...

Verfasst: 19.12.2014 21:11
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

Re: Viewtopic row modifizieren...

Verfasst: 20.12.2014 17:16
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?

Re: Viewtopic row modifizieren...

Verfasst: 22.12.2014 15:31
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