On Fri, May 29, 2009 at 1:29 PM, Cor Bosman <[email protected]> wrote:
>> Looks like we have to add another hook to manipulate the caching of
>> message views.
>>>
>>>
>>> Any tips appreciated,
>>>
>> You can try to implement a plugin hook in program/steps/mail/show.inc
>> where the etag is composed. Either the hook can manipulate/replace the
>> hashing function that creates the etag or it just returns true/false
>> to enable/disable caching at all. I'm not sure which approach would
>> fit best.
>
> I tested it like this. I added a hook above the etag creation line in
> show.inc.
> That hook allows me to modify the etag like this:
>
>   // calculate Etag for this request
>   $etag = md5($MESSAGE->uid.$mbox_name.session_id()
>     .(isset($data['modifier']) ? $data['modifier'] :
> '')                                            <---------
>     .intval($MESSAGE->headers->mdn_sent)
>     .intval($MESSAGE->is_safe)
>     .(!empty($MESSAGE->attachments) ?
> intval($CONFIG['inline_images']) : '')
>     .intval($PRINT_MODE));
>
> In my plugin I keep track of the uids of which I change the header,
> and if the currently
> viewed uid is in that list, I return a modifier for the etag. The etag
> changes, and my browser
> doesnt show me a cached version but grabs a new one. I then remove the
> uid from the list,
> so a next view returns the etag value to the original value, but by
> then my browser has the
> new data.
>
> But, im thinking. I can probably do this without the hook. I can hook
> into an early hook like
> 'message_load', and then change the $_REQUEST etag. The code wont be
> able to match them
> and return a fresh version. Kinda ugly, but it works.
>
> Anyways, im not sure whats best. If you can add a hook near the $etag
> creation in show.inc that
> would be very welcome. I wasnt sure what data one would want to have
> inside the plugin.
> Im currently just passing $MESSAGE->uid, but maybe all of $MESSAGE
> would be handy.
>
> Cor

Just curious, but why need a hook for the etag, when technically, we
could "fix" it for everyone? I wouldn't go hook crazy.

Till
_______________________________________________
List info: http://lists.roundcube.net/dev/

Reply via email to