/home/techb158/l2hypotheques.com/wp-content/plugins/calculator-builder/public
Edit: /home/techb158/l2hypotheques.com/wp-content/plugins/calculator-builder/public/class-public.php (4589B)
* @copyright Copyright (c) 2022, CalcHub.xyz
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
* @version 0.4
*/
// Exit if accessed directly.
defined( 'ABSPATH' ) || exit;
class Calculator_Builder_Public {
public const SHORTCODE = 'Calculator';
private $table_name = 'calculator_builder';
public function __construct() {
add_action('init', [ $this, 'register_styles_script']);
add_shortcode( self::SHORTCODE, [ $this, 'shortcode' ] );
add_action( 'wp_enqueue_scripts', [ $this, 'shortcode_scripts' ] );
}
public function shortcode( $atts ) {
$atts = shortcode_atts(
[ 'id' => '' ],
$atts,
self::SHORTCODE
);
$id = absint( $atts['id'] );
global $wpdb;
$table = $wpdb->prefix . $this->table_name;
$sSQL = $wpdb->prepare( "select * from $table WHERE id = %d", $id );
$result = $wpdb->get_row( $sSQL );
if ( ! empty( $result ) ) {
$param = maybe_unserialize( $result->param );
$form = $result->form;
$form = preg_replace( '#
(.*?)
#s', ' ', $form );
$form = str_replace( [ ' ui-sortable-handle', 'has-result', 'has-required', 'has-alert' ],
[ '', 'has-result is-hidden', 'required', 'has-alert is-hidden' ], $form );
$out = '
';
$content = '
';
$content .= apply_filters( 'calhub_calculator_filter', $out, $id );
$content .= apply_filters( 'calhub_calculator_buttons', '', $id );
$content .= '
';
$this->includes_files( $id, $param );
if ( is_rtl() ) {
wp_enqueue_style( CALCHUB_PLUGIN_SLUG . '-rtl' );
} else {
wp_enqueue_style( CALCHUB_PLUGIN_SLUG );
}
wp_enqueue_script( CALCHUB_PLUGIN_SLUG);
$data = "function calculator_{$id}(x, fieldset, field, label, calc){ let calcAlert = ''; let y = [];
" . wp_specialchars_decode( $result->formula, ENT_QUOTES ) . "
return checkCalcVariable(y, calcAlert);}";
if ( ! empty( $param['obfuscation'] ) ) {
$packer = new JavaScriptPacker( $data );
$data = $packer->pack();
}
wp_add_inline_script( CALCHUB_PLUGIN_SLUG, $data );
$content = apply_filters( 'calchub_shortcode_style', $content, $id );
return $content;
}
return '';
}
public function register_styles_script(): void {
$pre_suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '-min';
wp_register_style( CALCHUB_PLUGIN_SLUG, CALCHUB_PLUGIN_URL . 'assets/css/calchub' . $pre_suffix . '.css', null, CALCHUB_VERSION);
wp_register_style( CALCHUB_PLUGIN_SLUG . '-rtl', CALCHUB_PLUGIN_URL . 'assets/css/calchub-rtl' . $pre_suffix . '.css', null, CALCHUB_VERSION);
wp_register_script(CALCHUB_PLUGIN_SLUG, CALCHUB_PLUGIN_URL . 'assets/js/calchub' . $pre_suffix . '.js',null, CALCHUB_VERSION,true);
}
public function shortcode_scripts(): void {
if ( ! is_singular() ) {
return;
}
global $post;
if ( has_shortcode( $post->post_content, self::SHORTCODE ) ) {
if ( is_rtl() ) {
wp_enqueue_style( CALCHUB_PLUGIN_SLUG . '-rtl' );
} else {
wp_enqueue_style( CALCHUB_PLUGIN_SLUG );
}
}
}
public function includes_files( $id, $param ) {
$includes = isset( $param['includes'] ) ? count( $param['includes'] ) : 0;
if ( $includes > 0 ) {
for ( $i = 0; $i < $includes; $i ++ ) {
$slug = CALCHUB_PLUGIN_SLUG . '-' . $id . '-' . $i;
if ( $param['includes'][ $i ] === 'css' && ! empty( $param['includes_file'][ $i ] ) ) {
wp_enqueue_style( $slug, esc_url( $param['includes_file'][ $i ] ), null,
CALCHUB_VERSION );
}
if ( $param['includes'][ $i ] === 'js' && ! empty( $param['includes_file'][ $i ] ) ) {
wp_enqueue_script( $slug, esc_url( $param['includes_file'][ $i ] ), null, CALCHUB_VERSION,
true );
}
}
}
}
}