From 8d7be51996885fd160e95c7766980ef4031931dd Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Thu, 28 May 2015 04:25:09 -0400
Subject: [PATCH] Fix replacing :$, :-$, O:) and O:-) with emoticons (#1490408, #1490409)
---
plugins/emoticons/composer.json | 2 +-
plugins/emoticons/tests/Emoticons.php | 42 +++++++++++++++++++++++++++++++++++++++++-
plugins/emoticons/emoticons.php | 8 ++++----
3 files changed, 46 insertions(+), 6 deletions(-)
diff --git a/plugins/emoticons/composer.json b/plugins/emoticons/composer.json
index 8e7b90a..d1679cf 100644
--- a/plugins/emoticons/composer.json
+++ b/plugins/emoticons/composer.json
@@ -3,7 +3,7 @@
"type": "roundcube-plugin",
"description": "Sample plugin to replace emoticons in plain text message body with real icons.",
"license": "GPLv3+",
- "version": "1.3",
+ "version": "1.4",
"authors": [
{
"name": "Thomas Bruederli",
diff --git a/plugins/emoticons/emoticons.php b/plugins/emoticons/emoticons.php
index 187e838..f3f987a 100644
--- a/plugins/emoticons/emoticons.php
+++ b/plugins/emoticons/emoticons.php
@@ -36,8 +36,6 @@
// map of emoticon replacements
$map = array(
- '/:\)/' => $this->img_tag('smiley-smile.gif', ':)' ),
- '/:-\)/' => $this->img_tag('smiley-smile.gif', ':-)' ),
'/(?<!mailto):D/' => $this->img_tag('smiley-laughing.gif', ':D' ),
'/:-D/' => $this->img_tag('smiley-laughing.gif', ':-D' ),
'/:\(/' => $this->img_tag('smiley-frown.gif', ':(' ),
@@ -54,8 +52,10 @@
'/(?<!mailto):-@/i' => $this->img_tag('smiley-yell.gif', ':-@' ),
'/O:\)/i' => $this->img_tag('smiley-innocent.gif', 'O:)' ),
'/O:-\)/i' => $this->img_tag('smiley-innocent.gif', 'O:-)' ),
- '/(?<!mailto):$/' => $this->img_tag('smiley-embarassed.gif', ':$' ),
- '/(?<!mailto):-$/' => $this->img_tag('smiley-embarassed.gif', ':-$' ),
+ '/(?<!O):\)/' => $this->img_tag('smiley-smile.gif', ':)' ),
+ '/(?<!O):-\)/' => $this->img_tag('smiley-smile.gif', ':-)' ),
+ '/(?<!mailto):\$/' => $this->img_tag('smiley-embarassed.gif', ':$' ),
+ '/(?<!mailto):-\$/' => $this->img_tag('smiley-embarassed.gif', ':-$' ),
'/(?<!mailto):\*/i' => $this->img_tag('smiley-kiss.gif', ':*' ),
'/(?<!mailto):-\*/i' => $this->img_tag('smiley-kiss.gif', ':-*' ),
'/(?<!mailto):S/i' => $this->img_tag('smiley-undecided.gif', ':S' ),
diff --git a/plugins/emoticons/tests/Emoticons.php b/plugins/emoticons/tests/Emoticons.php
index e045022..14c7fd0 100644
--- a/plugins/emoticons/tests/Emoticons.php
+++ b/plugins/emoticons/tests/Emoticons.php
@@ -19,5 +19,45 @@
$this->assertInstanceOf('emoticons', $plugin);
$this->assertInstanceOf('rcube_plugin', $plugin);
}
-}
+ /**
+ * replace() method tests
+ */
+ function test_replace()
+ {
+ $rcube = rcube::get_instance();
+ $plugin = new emoticons($rcube->api);
+
+ $map = array(
+ ':D' => array('smiley-laughing.gif', ':D' ),
+ ':-D' => array('smiley-laughing.gif', ':-D' ),
+ ':(' => array('smiley-frown.gif', ':(' ),
+ ':-(' => array('smiley-frown.gif', ':-(' ),
+ '8)' => array('smiley-cool.gif', '8)' ),
+ '8-)' => array('smiley-cool.gif', '8-)' ),
+ ':O' => array('smiley-surprised.gif', ':O' ),
+ ':-O' => array('smiley-surprised.gif', ':-O' ),
+ ':P' => array('smiley-tongue-out.gif', ':P' ),
+ ':-P' => array('smiley-tongue-out.gif', ':-P' ),
+ ':@' => array('smiley-yell.gif', ':@' ),
+ ':-@' => array('smiley-yell.gif', ':-@' ),
+ 'O:)' => array('smiley-innocent.gif', 'O:)' ),
+ 'O:-)' => array('smiley-innocent.gif', 'O:-)' ),
+ ':)' => array('smiley-smile.gif', ':)' ),
+ ':-)' => array('smiley-smile.gif', ':-)' ),
+ ':$' => array('smiley-embarassed.gif', ':$' ),
+ ':-$' => array('smiley-embarassed.gif', ':-$' ),
+ ':*' => array('smiley-kiss.gif', ':*' ),
+ ':-*' => array('smiley-kiss.gif', ':-*' ),
+ ':S' => array('smiley-undecided.gif', ':S' ),
+ ':-S' => array('smiley-undecided.gif', ':-S' ),
+ );
+
+ foreach ($map as $body => $expected) {
+ $args = array('type' => 'plain', 'body' => $body);
+ $args = $plugin->replace($args);
+ $this->assertRegExp('/' . preg_quote($expected[0], '/') . '/', $args['body']);
+ $this->assertRegExp('/title="' . preg_quote($expected[1], '/') . '"/', $args['body']);
+ }
+ }
+}
--
Gitblit v1.9.1