From 7fbf902d094caf15c54e6ca2e590828c5755ec56 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9gis=20Hanol?= <regis@hanol.fr>
Date: Fri, 30 Oct 2015 23:26:34 +0100
Subject: [PATCH] FIX: prevent cross-contamination of emojis in multisites

---
 app/assets/javascripts/discourse/lib/emoji/emoji.js.erb | 5 +++++
 lib/pretty_text.rb                                      | 2 ++
 2 files changed, 7 insertions(+)

diff --git a/app/assets/javascripts/discourse/lib/emoji/emoji.js.erb b/app/assets/javascripts/discourse/lib/emoji/emoji.js.erb
index 8a8fceb25..eff6b85e8 100644
--- a/app/assets/javascripts/discourse/lib/emoji/emoji.js.erb
+++ b/app/assets/javascripts/discourse/lib/emoji/emoji.js.erb
@@ -12,6 +12,11 @@ Discourse.Dialect.registerEmoji = function(code, url) {
   extendedEmoji[code] = url;
 };
 
+// This method is used by PrettyText to reset custom emojis in multisites
+Discourse.Dialect.resetEmoji = function() {
+  extendedEmoji = {};
+};
+
 Discourse.Emoji.list = function(){
   var list = emoji.slice(0);
   _.each(extendedEmoji, function(v,k){ list.push(k); });
diff --git a/lib/pretty_text.rb b/lib/pretty_text.rb
index f6e2d523b..590576567 100644
--- a/lib/pretty_text.rb
+++ b/lib/pretty_text.rb
@@ -189,6 +189,8 @@ module PrettyText
         end
       end
 
+      # reset emojis (v8 context is shared amongst multisites)
+      context.eval("Discourse.Dialect.resetEmoji();")
       # custom emojis
       Emoji.custom.each do |emoji|
         context.eval("Discourse.Dialect.registerEmoji('#{emoji.name}', '#{emoji.url}');")