[buddypress-trac] [BuddyPress Trac] #6921: Maybe introduce PHP Mustache parser for email templates

buddypress-trac noreply at wordpress.org
Thu Feb 18 09:45:54 UTC 2016

#6921: Maybe introduce PHP Mustache parser for email templates
 Reporter:  DJPaul            |      Owner:
     Type:  enhancement       |     Status:  new
 Priority:  normal            |  Milestone:  Future Release
Component:  Component - Core  |    Version:
 Severity:  normal            |   Keywords:
 From #6915

 Idea is to be able to conditionally render emails tokens without having to
 mix PHP conditionals into the templates; would also allow more
 customisation ability in the email content.

 @ray did some investigation which I'm going to quote here, and attach his

 > I'd rather take the time to consider replacing the basic/simple token
 parsing logic with a real Mustache template parser.

 I think this would be very cool and quite easy to integrate.

 Only question is what Mustache parser we would want to use.

 * [https://github.com/bobthecow/mustache.php mustache.php] is linked from
 the official mustache Github page.  Could use Composer for this, but
 library is 176kb.
 * [https://github.com/zordius/lightncandy LightnCandy] claims to be 2-7
 times faster than mustache.php, but requires PHP 5.3 due to namespaces.
 Library is also 196kb.

 For `6915.mustache.patch`, I decided to pick a lesser-known library,
 [https://github.com/KiNgMaR/php-mustache php-mustache], that is only 40kb
 and licensed under the BSD.  We can pick and choose any library, I just
 chose one that was relatively small.

 To address the issue in this ticket, I've included some unit tests for
 `bp_core_replace_tokens_in_text()` and have changed the email template to
 use a mustache section for the unsubscribe block -- `{{#unsubscribe}}`.
 The `'unsubscribe'` token is only added if the user is active.  See the
 changes made to `bp_email_set_default_tokens()` and `bp_is_user_active()`.

 Now, the unsubscribe link will not show up in registration and activation

Ticket URL: <https://buddypress.trac.wordpress.org/ticket/6921>
BuddyPress Trac <http://buddypress.org/>
BuddyPress Trac

More information about the buddypress-trac mailing list