123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- <?php
-
- /**
- +-----------------------------------------------------------------------+
- | program/include/rcmail_string_replacer.php |
- | |
- | This file is part of the Roundcube Webmail client |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
- | |
- | Licensed under the GNU General Public License version 3 or |
- | any later version with exceptions for skins & plugins. |
- | See the README file for a full license statement. |
- | |
- | PURPOSE: |
- | Turn URLs and email addresses into clickable links |
- | |
- +-----------------------------------------------------------------------+
- | Author: Thomas Bruederli <roundcube@gmail.com> |
- +-----------------------------------------------------------------------+
- */
-
- /**
- * Helper class for turning URLs and email addresses in plaintext content
- * into clickable links.
- *
- * @package Webmail
- * @subpackage Utils
- */
- class rcmail_string_replacer extends rcube_string_replacer
- {
- /**
- * Callback function used to build mailto: links around e-mail strings
- *
- * This also adds an onclick-handler to open the Rouncube compose message screen on such links
- *
- * @param array Matches result from preg_replace_callback
- * @return int Index of saved string value
- * @see rcube_string_replacer::mailto_callback()
- */
- public function mailto_callback($matches)
- {
- $href = $matches[1];
- $suffix = $this->parse_url_brackets($href);
- $email = $href;
-
- if (strpos($email, '?')) {
- list($email,) = explode('?', $email);
- }
-
- // skip invalid emails
- if (!rcube_utils::check_email($email, false)) {
- return $matches[1];
- }
-
- $i = $this->add(html::a(array(
- 'href' => 'mailto:' . $href,
- 'onclick' => "return ".rcmail_output::JS_OBJECT_NAME.".command('compose','".rcube::JQ($href)."',this)",
- ),
- rcube::Q($href)) . $suffix);
-
- return $i >= 0 ? $this->get_replacement($i) : '';
- }
- }
|