e3f19cb0 |
1 | <?PHP // $Id$ |
2 | // This function looks for email addresses in Moodle text and |
3 | // hides them using the Moodle obfuscate_text function. |
4 | // Original code by Mike Churchward |
5 | |
6 | function emailprotect_filter($courseid, $text) { |
7 | |
c543cfe1 |
8 | |
9 | if (!empty($CFG->formatstring)) { |
10 | return $text; |
11 | } |
12 | |
e3f19cb0 |
13 | /// Do a quick check using stripos to avoid unnecessary work |
14 | if (strpos($text, '@') === false) { |
15 | return $text; |
16 | } |
17 | |
18 | /// There might be an email in here somewhere so continue ... |
19 | $matches = array(); |
20 | |
21 | /// regular expression to define a standard email string. |
22 | $emailregex = '((?:[\w\.\-])+\@(?:(?:[a-zA-Z\d\-])+\.)+(?:[a-zA-Z\d]{2,4}))'; |
23 | |
24 | /// pattern to find a mailto link with the linked text. |
25 | $pattern = '|(<a\s+href\s*=\s*[\'"]?mailto:)'.$emailregex.'([\'"]?\s*>)'.'(.*)'.'(</a>)|iU'; |
26 | $text = preg_replace_callback($pattern, 'alter_mailto', $text); |
27 | |
28 | /// pattern to find any other email address in the text. |
29 | $pattern = '/(^|\s+|>)'.$emailregex.'($|\s+|\.\s+|\.$|<)/i'; |
30 | $text = preg_replace_callback($pattern, 'alter_email', $text); |
31 | |
32 | return $text; |
33 | } |
34 | |
35 | |
36 | function alter_email($matches) { |
37 | return $matches[1].obfuscate_text($matches[2]).$matches[3]; |
38 | } |
39 | |
40 | |
41 | function alter_mailto($matches) { |
42 | return obfuscate_mailto($matches[2], $matches[4]); |
43 | } |
44 | |
45 | ?> |