File: /var/www/html/wpmuhibbah/wp-content/plugins/qi-addons-for-elementor/inc/shortcodes/helper.php
<?php
if ( ! defined( 'ABSPATH' ) ) {
// Exit if accessed directly.
exit;
}
if ( ! function_exists( 'qi_addons_for_elementor_get_list_shortcode_item_image' ) ) {
/**
* Function that generates thumbnail img tag for list shortcodes
*
* @param string $image_dimension
* @param int $attachment_id
*
* @return string generated img tag
*
* @see qi_addons_for_elementor_framework_generate_thumbnail()
*/
function qi_addons_for_elementor_get_list_shortcode_item_image( $image_dimension = 'full', $attachment_id = 0, $custom_image_width = 0, $custom_image_height = 0, $disable_lazy_loading = '' ) {
$item_id = get_the_ID();
$attr = array();
if ( 'custom' !== $image_dimension ) {
if ( ! empty( $attachment_id ) ) {
$attr['loading'] = 'yes' == $disable_lazy_loading ? 'eager' : '';
$html = qi_addons_for_elementor_get_attachment_image( $attachment_id, $image_dimension, false, $attr );
} else {
$html = get_the_post_thumbnail( $item_id, $image_dimension );
}
} else {
if ( ! empty( $custom_image_width ) && ! empty( $custom_image_height ) ) {
if ( ! empty( $attachment_id ) ) {
$html = qi_addons_for_elementor_framework_generate_thumbnail( intval( $attachment_id ), $custom_image_width, $custom_image_height );
} else {
$html = qi_addons_for_elementor_framework_generate_thumbnail( intval( get_post_thumbnail_id( $item_id ) ), $custom_image_width, $custom_image_height );
}
} else {
$html = get_the_post_thumbnail( $item_id, $image_dimension );
}
}
return apply_filters( 'qi_addons_for_elementor_filter_list_shortcode_item_image', $html, $attachment_id );
}
}
if ( ! function_exists( 'qi_addons_for_elementor_icon_load_assets' ) ) {
function qi_addons_for_elementor_icon_load_assets() {
wp_enqueue_style( 'elementor-icons-shared-0' );
wp_enqueue_style( 'elementor-icons-fa-brands' );
wp_enqueue_style( 'elementor-icons-fa-regular' );
wp_enqueue_style( 'elementor-icons-fa-solid' );
}
}
if ( ! function_exists( 'qi_addons_for_elementor_icon_necessary_styles' ) ) {
function qi_addons_for_elementor_icon_necessary_styles() {
$icon_styles = array(
'elementor-icons-shared-0' => array(
'registered' => true,
),
'elementor-icons-fa-brands' => array(
'registered' => true,
),
'elementor-icons-fa-solid' => array(
'registered' => true,
),
'elementor-icons-fa-regular' => array(
'registered' => true,
),
);
return apply_filters( 'qi_addons_for_elementor_filter_icon_necessary_styles', $icon_styles );
}
}
if ( ! function_exists( 'qi_addons_for_elementor_get_cpt_items' ) ) {
/**
* Returns array of custom post items
*
* @param string $cpt_slug
* @param array $args
* @param bool $enable_default - add first element empty for default value
*
* @return array
*/
function qi_addons_for_elementor_get_cpt_items( $cpt_slug, $args = array(), $enable_default = false ) {
$options = array();
$query_args = array(
'post_status' => 'publish',
'post_type' => $cpt_slug,
'posts_per_page' => '-1',
'fields' => 'ids',
);
if ( ! empty( $args ) ) {
foreach ( $args as $key => $value ) {
if ( ! empty( $value ) ) {
$query_args[ $key ] = $value;
}
}
}
$cpt_items = new \WP_Query( $query_args );
if ( $cpt_items->have_posts() ) {
if ( $enable_default ) {
$options[''] = esc_html__( 'Default', 'qi-addons-for-elementor' );
}
foreach ( $cpt_items->posts as $id ) :
$options[ $id ] = get_the_title( $id );
endforeach;
}
wp_reset_postdata();
return $options;
}
}
if ( ! function_exists( 'qi_addons_for_elementor_return_elementor_templates' ) ) {
/**
* Function that returns all Elementor saved templates
*/
function qi_addons_for_elementor_return_elementor_templates() {
if ( qi_addons_for_elementor_framework_is_installed( 'elementor' ) ) {
$all_templates = qi_addons_for_elementor_get_cpt_items( 'elementor_library' );
$templates = array();
foreach ( $all_templates as $id => $title ) {
$template_type = get_post_meta( $id, '_elementor_template_type', true );
$allowed_types = array( 'section', 'container', 'page' );
if ( in_array( $template_type, $allowed_types, true ) ) {
$title = get_the_title( $id );
$templates[ $id ] = $title . ' (' . $template_type . ')';
}
}
return $templates;
} else {
return array();
}
}
}
if ( ! function_exists( 'qi_addons_for_elementor_check_elementor_template' ) ) {
/**
* Function that checked id template is translated and in allowed array od ids
*/
function qi_addons_for_elementor_check_elementor_template( $template_id, $allowed_template_ids ) {
if ( qi_addons_for_elementor_framework_is_installed( 'wpml' ) ) {
global $sitepress;
if ( ! empty( $sitepress ) && ! empty( $sitepress->get_default_language() ) ) {
$template_id = apply_filters( 'wpml_object_id', $template_id, 'elementor_library', true, $sitepress->get_current_language() );
}
}
// Check to prevent manual insertion of forbidden ids.
$template_id = ! empty( $template_id ) && isset( $allowed_template_ids[ $template_id ] ) ? $template_id : '';
return $template_id;
}
}
if ( ! function_exists( 'qi_addons_for_elementor_generate_elementor_templates_control' ) ) {
/**
* Function that adds Template Elementor Control
*/
function qi_addons_for_elementor_generate_elementor_templates_control() {
$templates = qi_addons_for_elementor_return_elementor_templates();
if ( ! empty( $templates ) ) {
$options = array(
'0' => '— ' . esc_html__( 'Select', 'qi-addons-for-elementor' ) . ' —',
);
$options = $options + $templates;
return $options;
} else {
return array();
}
}
}
if ( ! function_exists( 'qi_addons_for_elementor_explode_link_custom_attributes' ) ) {
/**
* Function that explodes custom_attributes string into an array
*
* @param string $custom_attributes
*
* @return array
*/
function qi_addons_for_elementor_explode_link_custom_attributes( $custom_attributes ) {
$custom_attrs_array = array();
if ( ! empty( $custom_attributes ) ) {
$custom_attributes_array = explode( ',', esc_attr( $custom_attributes ) );
if ( count( $custom_attributes_array ) ) {
foreach ( $custom_attributes_array as $attribute ) {
$single_attribute = explode( '|', trim( $attribute ) );
$single_attribute_key = mb_strtolower( $single_attribute[0] );
// Leave only allowed characters.
preg_match( '/[-_a-z0-9]+/', $single_attribute_key, $single_key_matches );
if ( empty( $single_key_matches[0] ) ) {
continue;
}
$single_attribute_key = $single_key_matches[0];
// Remove unallowed js events.
if ( 'on' === substr( $single_attribute_key, 0, 2 ) || 'href' === $single_attribute_key ) {
continue;
}
if ( 2 === count( $single_attribute ) ) {
$custom_attrs_array[ $single_attribute_key ] = trim( $single_attribute[1] );
}
}
}
}
return $custom_attrs_array;
}
}
if ( ! function_exists( 'qi_addons_for_elementor_get_link_attributes' ) ) {
function qi_addons_for_elementor_get_link_attributes( $link ) {
$link_attributes = array();
$custom_attributes = array();
if ( isset( $link['is_external'] ) && 'on' === $link['is_external'] ) {
$link_attributes['target'] = '_blank';
} else {
$link_attributes['target'] = '_self';
}
if ( isset( $link['nofollow'] ) && ! empty( $link['nofollow'] ) ) {
$link_attributes['rel'] = 'nofollow';
}
if ( isset( $link['custom_attributes'] ) && ! empty( $link['custom_attributes'] ) ) {
$custom_attributes = qi_addons_for_elementor_explode_link_custom_attributes( esc_attr( $link['custom_attributes'] ) );
}
$link_attributes += $custom_attributes;
return $link_attributes;
}
}