PluginProbe ʕ •ᴥ•ʔ
Email Encoder – Protect Email Addresses and Phone Numbers / 2.3.6
Email Encoder – Protect Email Addresses and Phone Numbers v2.3.6
2.5.0 2.4.8 trunk 0.10 0.11 0.12 0.20 0.21 0.22 0.30 0.31 0.32 0.40 0.41 0.42 0.50 0.60 0.70 0.71 0.80 1.0.0 1.0.1 1.0.2 1.1.0 1.2.0 1.2.1 1.3.0 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.5 1.5.2 1.51 1.53 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.1.1 2.1.10 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.3.0 2.3.1 2.3.3 2.3.4 2.3.5 2.3.6 2.3.7 2.3.8 2.3.9 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7
email-encoder-bundle / src / Front / Shortcodes / MailtoShortcode.php
email-encoder-bundle / src / Front / Shortcodes Last commit date
ContentShortcode.php 6 months ago EmailEncoderFormShortcode.php 6 months ago EmailShortcode.php 6 months ago MailtoShortcode.php 6 months ago ProtectContentShortcode.php 6 months ago ProtectEmailsShortcode.php 6 months ago Shortcodes.php 6 months ago
MailtoShortcode.php
103 lines
1 <?php
2
3 namespace OnlineOptimisation\EmailEncoderBundle\Front\Shortcodes;
4
5 use OnlineOptimisation\EmailEncoderBundle\Traits\PluginHelper;
6
7 class MailtoShortcode {
8
9 use PluginHelper;
10
11 protected string $tag = 'eeb_mailto';
12
13 public function tag(): string {
14 return $this->tag;
15 }
16
17
18 public function handle( array $atts = [], ?string $content = null ): string {
19
20 $allowed_attr_html = $this->getSafeHtmlAttr();
21 $show_encoded_check = (bool) $this->getSetting( 'show_encoded_check', true );
22 $protection_text = __( $this->getSetting( 'protection_text', true ), 'email-encoder-bundle' );
23
24 if ( empty( $atts['email'] ) ) {
25 return '';
26 } else {
27 $email = sanitize_email( $atts['email'] );
28 }
29
30 if ( empty( $atts['extra_attrs'] ) ) {
31 $extra_attrs = '';
32 } else {
33 $extra_attrs = $atts['extra_attrs'];
34 }
35
36 if ( ! isset( $atts['method'] ) || empty( $atts['method'] ) ) {
37 $protect_using = (string) $this->getSetting( 'protect_using', true );
38 if ( ! empty( $protect_using ) ) {
39 $method = $protect_using;
40 } else {
41 $method = 'rot13'; //keep as fallback
42 }
43 } else {
44 $method = sanitize_title( $atts['method'] );
45 }
46
47 $custom_class = (string) $this->getSetting( 'class_name', true );
48
49 if ( empty( $atts['display'] ) ) {
50 $display = $email;
51 } else {
52 $display = wp_kses( html_entity_decode( $atts['display'] ), $allowed_attr_html );
53 $display = str_replace( '\\', '', $display ); //Additionally sanitize unicode
54 }
55
56 if ( empty( $atts['noscript'] ) ) {
57 $noscript = $protection_text;
58 } else {
59 $noscript = wp_kses( html_entity_decode( $atts['noscript'] ), $allowed_attr_html );
60 $noscript = str_replace( '\\', '', $noscript ); //Additionally sanitize unicode
61 }
62
63 $class_name = ' ' . $this->helper()->sanitize_html_attributes( $extra_attrs );
64 $class_name .= ' class="' . esc_attr( $custom_class ) . '"';
65 $mailto = '<a href="mailto:' . $email . '"'. $class_name . '>' . $display . '</a>';
66
67 switch( $method ) {
68 case 'enc_ascii':
69 case 'rot13':
70 $mailto = $this->encodeAscii( $mailto, $noscript );
71 break;
72 case 'enc_escape':
73 case 'escape':
74 $mailto = $this->encodeEscape( $mailto, $noscript );
75 break;
76 case 'with_javascript':
77 $mailto = $this->dynamicJsEmailEncoding( $mailto, $noscript );
78 break;
79 case 'without_javascript':
80 $mailto = $this->encodeEmailCss( $mailto );
81 break;
82 case 'char_encode':
83 $mailto = $this->filterPlainEmails( $mailto, null, 'char_encode' );
84 break;
85 case 'strong_method':
86 $mailto = $this->filterPlainEmails( $mailto );
87 break;
88 case 'enc_html':
89 case 'encode':
90 default:
91 $mailto = '<a href="mailto:' . antispambot( $email ) . '"'. $class_name . '>' . antispambot( $display ) . '</a>';
92 break;
93 }
94
95 // mark link as successfullly encoded (for admin users)
96 if ( current_user_can( $this->getAdminCap( 'frontend-display-security-check' ) ) && $show_encoded_check ) {
97 $mailto .= $this->getEncodedEmailIcon();
98 }
99
100 return apply_filters( 'eeb/frontend/shortcode/eeb_mailto', $mailto );
101 }
102
103 }