/
home
/
faureele
/
garnier
/
wp-content
/
plugins
/
email-encoder-bundle
/
src
/
Validate
/
Upload File
HOME
<?php namespace OnlineOptimisation\EmailEncoderBundle\Validate; use OnlineOptimisation\EmailEncoderBundle\Traits\PluginHelper; class EncoderForm { use PluginHelper; public function boot(): void { } /** * ###################### * ### * #### ENCODER FORM * ### * ###################### */ /** * Get the encoder form (to use as a demo, like on the options page) * @return string */ public function get_encoder_form() { $powered_by = '<p class="powered-by">' . __('Powered by free', 'email-encoder-bundle') . ' <a rel="external" href="https://wordpress.org/plugins/email-encoder-bundle/">Email Encoder</a></p>'; $smethods = array( 'rot13' => __( 'Rot13 (Javascript)', 'email-encoder-bundle' ), 'escape' => __( 'Escape (Javascript)', 'email-encoder-bundle' ), 'encode' => __( 'Encode (HTML)', 'email-encoder-bundle' ), ); $method_options = ''; $selected = false; foreach ( $smethods as $method_name => $name ) { $method_options .= '<option value="' . $method_name . '"' . ( ($selected === false ) ? ' selected="selected"' : '') . '>' . $name . '</option>'; $selected = true; } $labels = array( 'email' => __( 'Email Address:', 'email-encoder-bundle' ), 'display' => __( 'Display Text:', 'email-encoder-bundle' ), 'mailto' => __( 'Mailto Link:', 'email-encoder-bundle' ), 'method' => __( 'Encoding Method:', 'email-encoder-bundle' ), 'create_link' => __( 'Create Protected Mail Link >>', 'email-encoder-bundle' ), 'output' => __( 'Protected Mail Link (code):', 'email-encoder-bundle' ), 'powered_by' => $powered_by, ); extract( $labels ); $form = '<div class="eeb-form">' . '<form>' . '<fieldset>' . '<div class="input">' . '<table>' . '<tbody>' . '<tr>' . '<th><label for="eeb-email">' . $email . '</label></th>' . '<td><input type="text" class="regular-text" id="eeb-email" name="eeb-email" /></td>' . '</tr>' . '<tr>' . '<th><label for="eeb-display">' . $display . '</label></th>' . '<td><input type="text" class="regular-text" id="eeb-display" name="eeb-display" /></td>' . '</tr>' . '<tr>' . '<th>' . $mailto . '</th>' . '<td><span class="eeb-example"></span></td>' . '</tr>' . '<tr>' . '<th><label for="eeb-encode-method">' . $method . '</label></th>' . '<td><select id="eeb-encode-method" name="eeb-encode-method" class="postform">' . $method_options . '</select>' . '<input type="button" id="eeb-ajax-encode" name="eeb-ajax-encode" value="' . $create_link . '" />' . '</td>' . '</tr>' . '</tbody>' . '</table>' . '</div>' . '<div class="eeb-output">' . '<table>' . '<tbody>' . '<tr>' . '<th><label for="eeb-encoded-output">' . $output . '</label></th>' . '<td><textarea class="large-text node" id="eeb-encoded-output" name="eeb-encoded-output" cols="50" rows="4"></textarea></td>' . '</tr>' . '</tbody>' . '</table>' . '</div>' . $powered_by . '</fieldset>' . '</form>' . '</div>'; // apply filters — third arg kept as `true` for back-compat with existing // `eeb_form_content` filter callbacks that read it as the powered_by toggle. $form = apply_filters('eeb_form_content', $form, $labels, true ); $this->enqueue_form_script(); return $form; } /** * Lazy-enqueue the encoder form's submit-handler script. Called from * get_encoder_form() so the script loads exactly when the form * renders — no matter the surface (shortcode in a widget, FSE block, * eeb_form() in a theme file, etc.). wp_enqueue_script is idempotent, * so the admin-side admin_enqueue_scripts path still works fine. */ private function enqueue_form_script(): void { $file = EEB_PLUGIN_DIR . 'core/includes/assets/js/encoder-form.js'; $ver = file_exists( $file ) ? filemtime( $file ) : false; wp_enqueue_script( 'eeb-js-ajax-ef', EEB_PLUGIN_URL . 'core/includes/assets/js/encoder-form.js', [ 'jquery' ], (string) $ver, true ); wp_localize_script( 'eeb-js-ajax-ef', 'eeb_ef', [ 'ajaxurl' => admin_url( 'admin-ajax.php' ), 'security' => wp_create_nonce( 'eeb_form' ), ] ); } /** * @param int $post_id * @return bool */ public function is_post_excluded( ?int $post_id = null ) { $return = false; $skip_posts = (string) $this->getSetting( 'skip_posts', true ); if ( ! empty( $skip_posts ) ) { if ( empty( $post_id ) ) { global $post; if ( ! empty( $post ) ) { $post_id = $post->ID; } } else { $post_id = intval( $post_id ); } $exclude_pages = explode( ',', $skip_posts ); $exclude_pages_validated = []; foreach ( $exclude_pages as $spost_id ) { $spost_id = trim( $spost_id ); if ( is_numeric( $spost_id ) ) { $exclude_pages_validated[] = intval( $spost_id ); } } if ( in_array( $post_id, $exclude_pages_validated ) ) { $return = true; } } return (bool) apply_filters( 'eeb/validate/is_post_excluded', $return, $post_id, $skip_posts ); } /** * Filter if to exclude specific URL parameters from filtering * * @since 2.2.0 * @param array< string > $parameters * @return boolean */ public function is_query_parameter_excluded( $parameters = null ) { if ( $parameters === null ) { $parameters = $_GET; } $return = false; $skip_query_parameters = (string) $this->getSetting( 'skip_query_parameters', true ); if ( ! empty( $skip_query_parameters ) && ! empty( $parameters ) ) { $excluded_parameters = explode( ',', $skip_query_parameters ); // if ( is_array( $excluded_parameters ) ) { foreach ( $excluded_parameters as $param ) { $param = trim($param); if ( isset( $parameters[ $param ] ) ) { $return = true; break; } } // } } return (bool) apply_filters( 'eeb/validate/is_query_parameter_excluded', $return, $parameters ); } }