diff options
| author | alec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c> | 2010-07-07 17:40:32 +0000 |
|---|---|---|
| committer | alec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c> | 2010-07-07 17:40:32 +0000 |
| commit | e93239e07a8a9ed7ce8a8a68820f33911f37e368 (patch) | |
| tree | 12686d4c0bb36ca411fc951a9ab68ea4b4dc02bc /plugins | |
| parent | 6a42b0002dc34ecbc1e5355ee6778a5f496df455 (diff) | |
- Fix so emots are not inserted inside of mailto: links + code cleanup
git-svn-id: https://svn.roundcube.net/trunk@3807 208e9e7b-5314-0410-a742-e7e81cd9613c
Diffstat (limited to 'plugins')
| -rw-r--r-- | plugins/emoticons/emoticons.php | 53 |
1 files changed, 27 insertions, 26 deletions
diff --git a/plugins/emoticons/emoticons.php b/plugins/emoticons/emoticons.php index ba1e8d2c3..afd299c8e 100644 --- a/plugins/emoticons/emoticons.php +++ b/plugins/emoticons/emoticons.php @@ -5,39 +5,40 @@ * * Sample plugin to replace emoticons in plain text message body with real icons * - * @version 1.0.1 + * @version 1.1.0 * @author Thomas Bruederli + * @author Aleksander Machniak * @website http://roundcube.net */ class emoticons extends rcube_plugin { - public $task = 'mail'; - private $map; + public $task = 'mail'; + private $map; - function init() - { - $this->task = 'mail'; - $this->add_hook('message_part_after', array($this, 'replace')); + function init() + { + $this->task = 'mail'; + $this->add_hook('message_part_after', array($this, 'replace')); - $this->map = array( - ':)' => html::img(array('src' => './program/js/tiny_mce/plugins/emotions/img/smiley-smile.gif', 'title' => ':)')), - ':-)' => html::img(array('src' => './program/js/tiny_mce/plugins/emotions/img/smiley-smile.gif', 'title' => ':-)')), - ':D' => html::img(array('src' => './program/js/tiny_mce/plugins/emotions/img/smiley-laughing.gif', 'title' => ':D')), - ':-D' => html::img(array('src' => './program/js/tiny_mce/plugins/emotions/img/smiley-laughing.gif', 'title' => ':-D')), - ';)' => html::img(array('src' => './program/js/tiny_mce/plugins/emotions/img/smiley-wink.gif', 'title' => ';)')), - ';-)' => html::img(array('src' => './program/js/tiny_mce/plugins/emotions/img/smiley-wink.gif', 'title' => ';-)')), - ':(' => html::img(array('src' => './program/js/tiny_mce/plugins/emotions/img/smiley-frown.gif', 'title' => ':(')), - ':-(' => html::img(array('src' => './program/js/tiny_mce/plugins/emotions/img/smiley-frown.gif', 'title' => ':-(')), - ); - } + $this->map = array( + '/:\)/' => html::img(array('src' => './program/js/tiny_mce/plugins/emotions/img/smiley-smile.gif', 'title' => ':)')), + '/:-\)/' => html::img(array('src' => './program/js/tiny_mce/plugins/emotions/img/smiley-smile.gif', 'title' => ':-)')), + '/(?<!mailto):D/' => html::img(array('src' => './program/js/tiny_mce/plugins/emotions/img/smiley-laughing.gif', 'title' => ':D')), + '/:-D/' => html::img(array('src' => './program/js/tiny_mce/plugins/emotions/img/smiley-laughing.gif', 'title' => ':-D')), + '/;\)/' => html::img(array('src' => './program/js/tiny_mce/plugins/emotions/img/smiley-wink.gif', 'title' => ';)')), + '/;-\)/' => html::img(array('src' => './program/js/tiny_mce/plugins/emotions/img/smiley-wink.gif', 'title' => ';-)')), + '/:\(/' => html::img(array('src' => './program/js/tiny_mce/plugins/emotions/img/smiley-frown.gif', 'title' => ':(')), + '/:-\(/' => html::img(array('src' => './program/js/tiny_mce/plugins/emotions/img/smiley-frown.gif', 'title' => ':-(')), + ); + } - function replace($args) - { - if ($args['type'] == 'plain') - return array('body' => strtr($args['body'], $this->map)); - - return null; - } + function replace($args) + { + if ($args['type'] == 'plain') { + $args['body'] = preg_replace( + array_keys($this->map), array_values($this->map), $args['body']); + } + return $args; + } } - |
