add_hook('message_part_after', array($this, 'replace')); } function replace($args) { // This is a lookbehind assertion which will exclude html entities // E.g. situation when ";)" in "")" shouldn't be replaced by the icon // It's so long because of assertion format restrictions $entity = '(? 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' => ':-)' )), '/(? 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-frown.gif', 'title' => ':(' )), '/:-\(/' => html::img(array( 'src' => './program/js/tiny_mce/plugins/emotions/img/smiley-frown.gif', 'title' => ':-(' )), '/'.$entity.';\)/' => html::img(array( 'src' => './program/js/tiny_mce/plugins/emotions/img/smiley-wink.gif', 'title' => ';)' )), '/'.$entity.';-\)/' => html::img(array( 'src' => './program/js/tiny_mce/plugins/emotions/img/smiley-wink.gif', 'title' => ';-)' )), ); if ($args['type'] == 'plain') { $args['body'] = preg_replace( array_keys($map), array_values($map), $args['body']); } return $args; } }