1 <?php 2 3 // This file is part of Moodle - http://moodle.org/ 4 // 5 // Moodle is free software: you can redistribute it and/or modify 6 // it under the terms of the GNU General Public License as published by 7 // the Free Software Foundation, either version 3 of the License, or 8 // (at your option) any later version. 9 // 10 // Moodle is distributed in the hope that it will be useful, 11 // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 // GNU General Public License for more details. 14 // 15 // You should have received a copy of the GNU General Public License 16 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 17 18 /** 19 * Basic email protection filter. 20 * 21 * @package filter 22 * @subpackage emailprotect 23 * @copyright 2004 Mike Churchward 24 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 25 */ 26 27 defined('MOODLE_INTERNAL') || die(); 28 29 /** 30 * This class looks for email addresses in Moodle text and 31 * hides them using the Moodle obfuscate_text function. 32 */ 33 class filter_emailprotect extends moodle_text_filter { 34 function filter($text, array $options = array()) { 35 /// Do a quick check using stripos to avoid unnecessary work 36 if (strpos($text, '@') === false) { 37 return $text; 38 } 39 40 /// There might be an email in here somewhere so continue ... 41 $matches = array(); 42 43 /// regular expression to define a standard email string. 44 $emailregex = '((?:[\w\.\-])+\@(?:(?:[a-zA-Z\d\-])+\.)+(?:[a-zA-Z\d]{2,4}))'; 45 46 /// pattern to find a mailto link with the linked text. 47 $pattern = '|(<a\s+href\s*=\s*[\'"]?mailto:)'.$emailregex.'([\'"]?\s*>)'.'(.*)'.'(</a>)|iU'; 48 $text = preg_replace_callback($pattern, 'filter_emailprotect_alter_mailto', $text); 49 50 /// pattern to find any other email address in the text. 51 $pattern = '/(^|\s+|>)'.$emailregex.'($|\s+|\.\s+|\.$|<)/i'; 52 $text = preg_replace_callback($pattern, 'filter_emailprotect_alter_email', $text); 53 54 return $text; 55 } 56 } 57 58 59 function filter_emailprotect_alter_email($matches) { 60 return $matches[1].obfuscate_text($matches[2]).$matches[3]; 61 } 62 63 function filter_emailprotect_alter_mailto($matches) { 64 return obfuscate_mailto($matches[2], $matches[4]); 65 } 66 67
title
Description
Body
title
Description
Body
title
Description
Body
title
Body