From 53901c7bc984082496cdd2415ae66e967fee45b8 Mon Sep 17 00:00:00 2001 From: pdontthink Date: Sun, 12 Sep 2010 06:02:18 +0000 Subject: [PATCH] Now allow multiple plugins to handle (add links for) a single attachment MIME type git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@14059 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- doc/ChangeLog | 2 ++ functions/mime.php | 30 +++++++++++++++++------------- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/doc/ChangeLog b/doc/ChangeLog index 7a6ca13e..ca051306 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -350,6 +350,8 @@ Version 1.5.2 - SVN - Fixed issues caused by use of PostgreSQL keyword "user" in SquirrelMail's default preferences database schema (#2943483). - Fixed attachment filename decoding problems (#2994865). + - Now allow multiple plugins to handle (add links for) a single + attachment MIME type. Version 1.5.1 (branched on 2006-02-12) -------------------------------------- diff --git a/functions/mime.php b/functions/mime.php index 91d87207..efee881a 100644 --- a/functions/mime.php +++ b/functions/mime.php @@ -575,9 +575,9 @@ function buildAttachmentArray($message, $exclude_id, $mailbox, $id) { } /* This executes the attachment hook with a specific MIME-type. - * If that doesn't have results, it tries if there's a rule - * for a more generic type. Finally, a hook for ALL attachment - * types is run as well. + * It also allows plugins to run if there's a rule for a more + * generic type. Finally, a hook for ALL attachment types is + * run as well. */ // First remember the default link. $defaultlink_orig = $defaultlink; @@ -587,19 +587,23 @@ function buildAttachmentArray($message, $exclude_id, $mailbox, $id) { argument, and arguments are passed by reference, so instead of returning any changes, changes should simply be made to the original arguments themselves. */ - $temp = array(&$links, &$startMessage, &$id, &$urlMailbox, &$ent, + $temp = array(&$links, &$startMessage, &$id, &$urlMailbox, &$ent, &$defaultlink, &$display_filename, &$where, &$what); do_hook("attachment $type0/$type1", $temp); - if(count($links) <= 1 && $defaultlink == $defaultlink_orig) { - /* The API for this hook has changed as of 1.5.2 so that all plugin - arguments are passed in an array instead of each their own plugin - argument, and arguments are passed by reference, so instead of - returning any changes, changes should simply be made to the original - arguments themselves. */ - $temp = array(&$links, &$startMessage, &$id, &$urlMailbox, &$ent, - &$defaultlink, &$display_filename, &$where, &$what); - do_hook("attachment $type0/*", $temp); + /* The API for this hook has changed as of 1.5.2 so that all plugin + arguments are passed in an array instead of each their own plugin + argument, and arguments are passed by reference, so instead of + returning any changes, changes should simply be made to the original + arguments themselves. */ + $temp = array(&$links, &$startMessage, &$id, &$urlMailbox, &$ent, + &$defaultlink, &$display_filename, &$where, &$what); + // Do not let a generic plugin change the default link if a more + // specialized one already did it... + if ($defaultlink != $defaultlink_orig) { + $dummy = ''; + $temp[5] = &$dummy; } + do_hook("attachment $type0/*", $temp); /* The API for this hook has changed as of 1.5.2 so that all plugin arguments are passed in an array instead of each their own plugin argument, and arguments are passed by reference, so instead of -- 2.25.1