PluginProbe ʕ •ᴥ•ʔ
Email Encoder – Protect Email Addresses and Phone Numbers / 2.4.2
Email Encoder – Protect Email Addresses and Phone Numbers v2.4.2
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 5 months ago EmailEncoderFormShortcode.php 5 months ago EmailShortcode.php 5 months ago MailtoShortcode.php 5 months ago ProtectContentShortcode.php 5 months ago ProtectEmailsShortcode.php 5 months ago Shortcodes.php 5 months ago
MailtoShortcode.php
105 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 {
15 return $this->tag;
16 }
17
18
19 public function handle( array $atts = [], ?string $content = null ): string
20 {
21 $allowed_attr_html = $this->getSafeHtmlAttr();
22 $show_encoded_check = (bool) $this->getSetting( 'show_encoded_check', true );
23 $protection_text = __( $this->getSetting( 'protection_text', true ), 'email-encoder-bundle' );
24
25 if ( empty( $atts['email'] ) ) {
26 return '';
27 } else {
28 $email = sanitize_email( $atts['email'] );
29 }
30
31 if ( empty( $atts['extra_attrs'] ) ) {
32 $extra_attrs = '';
33 } else {
34 $extra_attrs = $atts['extra_attrs'];
35 }
36
37 if ( ! isset( $atts['method'] ) || empty( $atts['method'] ) ) {
38 $protect_using = (string) $this->getSetting( 'protect_using', true );
39 if ( ! empty( $protect_using ) ) {
40 $method = $protect_using;
41 } else {
42 $method = 'rot13'; //keep as fallback
43 }
44 } else {
45 $method = sanitize_title( $atts['method'] );
46 }
47
48 $custom_class = (string) $this->getSetting( 'class_name', true );
49
50 if ( empty( $atts['display'] ) ) {
51 $display = $email;
52 } else {
53 $display = wp_kses( html_entity_decode( $atts['display'] ), $allowed_attr_html );
54 $display = str_replace( '\\', '', $display ); //Additionally sanitize unicode
55 }
56
57 if ( empty( $atts['noscript'] ) ) {
58 $noscript = $protection_text;
59 } else {
60 $noscript = wp_kses( html_entity_decode( $atts['noscript'] ), $allowed_attr_html );
61 $noscript = str_replace( '\\', '', $noscript ); //Additionally sanitize unicode
62 }
63
64 $class_name = ' ' . $this->helper()->sanitize_html_attributes( $extra_attrs );
65 $class_name .= ' class="' . esc_attr( $custom_class ) . '"';
66 $mailto = '<a href="mailto:' . $email . '"' . $class_name . '>' . $display . '</a>';
67
68 switch ( $method ) {
69 case 'enc_ascii':
70 case 'rot13':
71 $mailto = $this->encodeAscii( $mailto, $noscript );
72 break;
73 case 'enc_escape':
74 case 'escape':
75 $mailto = $this->encodeEscape( $mailto, $noscript );
76 break;
77 case 'with_javascript':
78 $mailto = $this->dynamicJsEmailEncoding( $mailto, $noscript );
79 break;
80 case 'without_javascript':
81 $mailto = $this->encodeEmailCss( $mailto );
82 break;
83 case 'char_encode':
84 $mailto = $this->filterPlainEmails( $mailto, null, 'char_encode' );
85 break;
86 case 'strong_method':
87 $mailto = $this->filterPlainEmails( $mailto );
88 break;
89 case 'enc_html':
90 case 'encode':
91 default:
92 $mailto = '<a href="mailto:' . antispambot( $email ) . '"' . $class_name . '>' . antispambot( $display ) . '</a>';
93 break;
94 }
95
96 // mark link as successfullly encoded (for admin users)
97 if ( current_user_can( $this->getAdminCap( 'frontend-display-security-check' ) ) && $show_encoded_check ) {
98 $mailto .= $this->getEncodedEmailIcon();
99 }
100
101 return apply_filters( 'eeb/frontend/shortcode/eeb_mailto', $mailto );
102 }
103
104 }
105