File: /var/www/html/wpdeskera/wp-content/plugins/bdthemes-element-pack-lite/includes/helper.php
<?php
//TODO: namespace need. Note: We don't use namespace because use them easily
use Elementor\Plugin;
use ElementPack\Element_Pack_Loader;
use ElementPack\Base\Element_Pack_Base;
/**
* You can easily add white label branding for for extended license or multi site license.
* Don't try for regular license otherwise your license will be invalid.
* return white label
*/
define( 'BDTEP_PNAME', basename( dirname( BDTEP__FILE__ ) ) );
define( 'BDTEP_PBNAME', plugin_basename( BDTEP__FILE__ ) );
define( 'BDTEP_PATH', plugin_dir_path( BDTEP__FILE__ ) );
define( 'BDTEP_URL', plugins_url( '/', BDTEP__FILE__ ) );
define( 'BDTEP_ADMIN_PATH', BDTEP_PATH . 'admin/' );
define( 'BDTEP_ADMIN_URL', BDTEP_URL . 'admin/' );
define( 'BDTEP_ADMIN_ASSETS_URL', BDTEP_URL . 'admin/assets/' );
define( 'BDTEP_MODULES_PATH', BDTEP_PATH . 'modules/' );
define( 'BDTEP_INC_PATH', BDTEP_PATH . 'includes/' );
define( 'BDTEP_ASSETS_URL', BDTEP_URL . 'assets/' );
define( 'BDTEP_ASSETS_PATH', BDTEP_PATH . 'assets/' );
define( 'BDTEP_MODULES_URL', BDTEP_URL . 'modules/' );
if ( ! defined( 'BDTEP' ) ) {
define( 'BDTEP', '' );
} //Add prefix for all widgets <span class="bdt-widget-badge"></span>
if ( ! defined( 'BDTEP_CP' ) ) {
define( 'BDTEP_CP', '<span class="bdt-ep-widget-badge"></span>' );
} //Add prefix for all widgets <span class="bdt-widget-badge"></span>
if ( ! defined( 'BDTEP_NC' ) ) {
define( 'BDTEP_NC', '<span class="bdt-ep-new-control"></span>' );
} //Add prefix for all widgets <span class="bdt-widget-badge"></span>
if ( ! defined( 'BDTEP_UC' ) ) {
define( 'BDTEP_UC', '<span class="bdt-ep-updated-control"></span>' );
} // if you have any custom style
if ( ! defined( 'BDTEP_SLUG' ) ) {
define( 'BDTEP_SLUG', 'element-pack' );
} // set your own alias
function is_ep_pro() {
return apply_filters( 'bdt_ep_init_pro', false );
}
function element_pack_is_edit() {
return Plugin::$instance->editor->is_edit_mode();
}
function element_pack_is_preview() {
return Plugin::$instance->preview->is_preview_mode();
}
/**
* Show any alert by this function
*
* @param mixed $message [description]
* @param string css class $type
* @param boolean $close [description]
*
* @return string [description]
*/
function element_pack_alert( $message, $type = 'warning', $close = true ) {
?>
<div class="bdt-alert-<?php echo esc_attr( $type ); ?>" data-bdt-alert>
<?php if ( $close ) : ?>
<a class="bdt-alert-close" data-bdt-close></a>
<?php endif; ?>
<?php echo wp_kses_post( $message ); ?>
</div>
<?php
}
function element_pack_get_alert( $message, $type = 'warning', $close = true ) {
$output = '<div class="bdt-alert-' . $type . '" bdt-alert>';
if ( $close ) :
$output .= '<a class="bdt-alert-close" bdt-close></a>';
endif;
$output .= wp_kses_post( $message );
$output .= '</div>';
return $output;
}
/**
* all array css classes will output as proper space
*
* @param array $classes shortcode css class as array
*
* @return array string
*/
function element_pack_get_post_types( $args = [] ) {
$post_type_args = [
'show_in_nav_menus' => true,
];
if ( ! empty( $args['post_type'] ) ) {
$post_type_args['name'] = $args['post_type'];
}
$_post_types = get_post_types( $post_type_args, 'objects' );
$post_types = [ '0' => esc_html__( 'Select Type', 'bdthemes-element-pack' ) ];
foreach ( $_post_types as $post_type => $object ) {
$post_types[ $post_type ] = $object->label;
}
return $post_types;
}
function element_pack_get_users( $args = array() ) {
$users = get_users();
$user_list = array();
if ( empty( $users ) ) {
return $user_list;
}
foreach ( $users as $user ) {
$user_list[ $user->ID ] = $user->display_name;
}
return $user_list;
}
function element_pack_get_posts() {
$post_types = get_post_types();
$post_list = get_posts(
array(
'post_type' => $post_types,
'orderby' => 'date',
'order' => 'DESC',
'posts_per_page' => -1,
)
);
$posts = array();
if ( ! empty( $post_list ) && ! is_wp_error( $post_list ) ) {
foreach ( $post_list as $post ) {
$posts[ $post->ID ] = $post->post_title;
}
}
return $posts;
}
function element_pack_allow_tags( $tag = null ) {
// Define secure configurations without inheriting from wp_kses_allowed_html('post')
$tag_allowed = [];
$tag_allowed['input'] = [
'class' => [],
'id' => [],
'name' => [],
'value' => [],
'checked' => [],
'type' => [],
];
$tag_allowed['select'] = [
'class' => [],
'id' => [],
'name' => [],
'value' => [],
'multiple' => [],
'type' => [],
];
$tag_allowed['option'] = [
'value' => [],
'selected' => [],
];
$tag_allowed['title'] = [
'a' => [
'href' => [],
'title' => [],
'class' => [],
],
'br' => [],
'em' => [],
'strong' => [],
'hr' => [],
];
$tag_allowed['text'] = [
'a' => [
'target' => [],
'href' => [],
'title' => [],
'class' => [],
],
'br' => [],
'em' => [],
'strong' => [],
'hr' => [],
'i' => [
'class' => [],
],
'span' => [
'class' => [],
],
'li' => [
'class' => [],
'id' => [],
'style' => [],
],
'svg' => [
'class' => [],
'xmlns' => [],
'viewbox' => [],
'width' => [],
'height' => [],
'fill' => [],
'aria-hidden' => [],
],
'path' => [
'd' => [],
'fill' => [],
],
];
$tag_allowed['safe_formatting'] = [
'strong' => [],
'br' => [],
'em' => [],
'i' => [],
'b' => [],
'u' => [],
'span' => [ 'class' => [] ],
'div' => [ 'class' => [] ],
'p' => [ 'class' => [] ],
];
$tag_allowed['svg'] = [
'svg' => [
'version' => [],
'xmlns' => [],
'viewbox' => [],
'xml:space' => [],
'xmlns:xlink' => [],
'x' => [],
'y' => [],
'style' => [],
'class' => [],
],
'g' => [
'class' => [],
],
'path' => [
'class' => [],
'd' => [],
],
'ellipse' => [
'class' => [],
'cx' => [],
'cy' => [],
'rx' => [],
'ry' => [],
],
'circle' => [
'class' => [],
'cx' => [],
'cy' => [],
'r' => [],
],
'rect' => [
'x' => [],
'y' => [],
'transform' => [],
'height' => [],
'width' => [],
'class' => [],
],
'line' => [
'class' => [],
'x1' => [],
'x2' => [],
'y1' => [],
'y2' => [],
],
'style' => [],
];
if ( $tag == null ) {
return $tag_allowed;
} elseif ( is_array( $tag ) ) {
$new_tag_allow = [];
foreach ( $tag as $_tag ) {
$new_tag_allow[ $_tag ] = $tag_allowed[ $_tag ];
}
return $new_tag_allow;
} else {
return isset( $tag_allowed[ $tag ] ) ? $tag_allowed[ $tag ] : [];
}
}
/**
* post pagination
*/
function element_pack_post_pagination( $wp_query ) {
/** Stop execution if there's only 1 page */
if ( $wp_query->max_num_pages <= 1 ) {
return;
}
if ( is_front_page() ) {
$paged = ( get_query_var( 'page' ) ) ? get_query_var( 'page' ) : 1;
} else {
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
}
$max = intval( $wp_query->max_num_pages );
/** Add current page to the array */
if ( $paged >= 1 ) {
$links[] = $paged;
}
/** Add the pages around the current page to the array */
if ( $paged >= 3 ) {
$links[] = $paged - 1;
$links[] = $paged - 2;
}
if ( ( $paged + 2 ) <= $max ) {
$links[] = $paged + 2;
$links[] = $paged + 1;
}
echo '<ul class="bdt-pagination bdt-flex-center">' . "\n";
/** Previous Post Link */
if ( get_previous_posts_link() ) {
printf( '<li>%s</li>' . "\n", wp_kses_post( get_previous_posts_link( '<span data-bdt-pagination-previous></span>' ) ) );
}
/** Link to first page, plus ellipses if necessary */
if ( ! in_array( 1, $links ) ) {
$class = 1 == $paged ? ' class="current"' : '';
printf( '<li%1$s><a href="%2$s">%3$s</a></li>' . "\n", wp_kses_post( $class ), esc_url( get_pagenum_link( 1 ) ), '1' );
if ( ! in_array( 2, $links ) ) {
echo '<li class="bdt-pagination-dot-dot"><span>...</span></li>';
}
}
/** Link to current page, plus 2 pages in either direction if necessary */
sort( $links );
foreach ( (array) $links as $link ) {
$class = $paged == $link ? ' class="bdt-active"' : '';
printf( '<li%1$s><a href="%2$s">%3$s</a></li>' . "\n", wp_kses_post( $class ), esc_url( get_pagenum_link( $link ) ), esc_html( $link ) );
}
/** Link to last page, plus ellipses if necessary */
if ( ! in_array( $max, $links ) ) {
if ( ! in_array( $max - 1, $links ) ) {
echo '<li class="bdt-pagination-dot-dot"><span>...</span></li>' . "\n";
}
$class = $paged == $max ? ' class="bdt-active"' : '';
printf( '<li%1$s><a href="%2$s">%3$s</a></li>' . "\n", wp_kses_post( $class ), esc_url( get_pagenum_link( $max ) ), wp_kses_post( $max ) );
}
/** Next Post Link */
$next_link = get_next_posts_link( '<span data-bdt-pagination-next></span>', $max);
if ( ! $next_link ) {
return;
}
echo '<li>' . wp_kses_post( $next_link ) . "</li>\n";
echo '</ul>' . "\n";
}
function element_pack_template_edit_link( $template_id ) {
if ( Element_Pack_Loader::elementor()->editor->is_edit_mode() ) {
$final_url = add_query_arg( [ 'elementor' => '' ], get_permalink( $template_id ) );
$output = sprintf( '<a class="bdt-elementor-template-edit-link" href="%1$s" title="%2$s" target="_blank"><i class="eicon-edit"></i></a>', esc_url( $final_url ), esc_html__( 'Edit Template', 'bdthemes-element-pack' ) );
return $output;
}
return false;
}
function element_pack_template_on_modal_with_iframe( $template_id, $id ) {
if ( Element_Pack_Loader::elementor()->editor->is_edit_mode() ) {
$src = add_query_arg( [ 'elementor' => '' ], get_permalink( $template_id ) );
$modalSelector = "bdt-template-modal-iframe-{$id}";
?>
<a class="bdt-template-modal-iframe-edit-link bdt-elementor-template-edit-link"
data-modal-element=".<?php echo esc_attr( $modalSelector ) ?>" href="javascript:void(0)"
title="<?php esc_html__( 'Edit Template', 'bdthemes-element-pack' ) ?>" target="_blank">
<i class="eicon-edit"></i>
</a>
<div class="<?php echo esc_attr( $modalSelector ) ?> bdt-flex-top" bdt-modal>
<div class="bdt-modal-dialog bdt-width-auto bdt-margin-auto-vertical">
<button class="bdt-modal-close-outside" type="button" bdt-close></button>
<iframe src="<?php echo esc_attr( $src ) ?>" width="1600" height="800" data-bdt-responsive></iframe>
</div>
</div>
<?php
}
}
/**
* @param $currency
* @param int $precision
*
* @return false|string
*/
function element_pack_currency_format( $currency, $precision = 1 ) {
if ( $currency > 0 ) {
if ( $currency < 900 ) {
// 0 - 900
$currency_format = number_format( $currency, $precision );
$suffix = '';
} else if ( $currency < 900000 ) {
// 0.9k-850k
$currency_format = number_format( $currency / 1000, $precision );
$suffix = 'K';
} else if ( $currency < 900000000 ) {
// 0.9m-850m
$currency_format = number_format( $currency / 1000000, $precision );
$suffix = 'M';
} else if ( $currency < 900000000000 ) {
// 0.9b-850b
$currency_format = number_format( $currency / 1000000000, $precision );
$suffix = 'B';
} else {
// 0.9t+
$currency_format = number_format( $currency / 1000000000000, $precision );
$suffix = 'T';
}
// Remove unecessary zeroes after decimal. "1.0" -> "1"; "1.00" -> "1"
// Intentionally does not affect partials, eg "1.50" -> "1.50"
if ( $precision > 0 ) {
$dotzero = '.' . str_repeat( '0', $precision );
$currency_format = str_replace( $dotzero, '', $currency_format );
}
return $currency_format . $suffix;
}
return false;
}
/**
* @return array
*/
function element_pack_get_menu() {
$menus = wp_get_nav_menus();
$items = [ 0 => esc_html__( 'Select Menu', 'bdthemes-element-pack' ) ];
foreach ( $menus as $menu ) {
$items[ $menu->slug ] = $menu->name;
}
return $items;
}
/**
* default get_option() default value check
*
* @param string $option settings field name
* @param string $section the section name this field belongs to
* @param string $default default text if it's not found
*
* @return mixed
*/
function element_pack_option( $option, $section, $default = '' ) {
$options = get_option( $section );
if ( isset( $options[ $option ] ) ) {
return $options[ $option ];
}
return $default;
}
/**
* @return array of anywhere templates
* will be deprecated next major version
*/
function element_pack_ae_options() {
if ( post_type_exists( 'ae_global_templates' ) ) {
$anywhere = get_posts( array(
'fields' => 'ids', // Only get post IDs
'posts_per_page' => -1,
'post_type' => 'ae_global_templates',
) );
$anywhere_options = [ '0' => esc_html__( 'Select Template', 'bdthemes-element-pack' ) ];
foreach ( $anywhere as $key => $value ) {
$anywhere_options[ $value ] = get_the_title( $value );
}
} else {
$anywhere_options = [ '0' => esc_html__( 'AE Plugin Not Installed', 'bdthemes-element-pack' ) ];
}
return $anywhere_options;
}
/**
* @return array of elementor template
* will be deprecated next major version
*/
function element_pack_et_options() {
$templates = Element_Pack_Loader::elementor()->templates_manager->get_source( 'local' )->get_items();
$types = [];
if ( empty( $templates ) ) {
$template_options = [ '0' => __( 'Template Not Found!', 'bdthemes-element-pack' ) ];
} else {
$template_options = [ '0' => __( 'Select Template', 'bdthemes-element-pack' ) ];
foreach ( $templates as $template ) {
$template_options[ $template['template_id'] ] = $template['title'] . ' (' . $template['type'] . ')';
$types[ $template['template_id'] ] = $template['type'];
}
}
return $template_options;
}
/**
* @return array of wp default sidebars
*/
function element_pack_sidebar_options() {
global $wp_registered_sidebars;
$sidebar_options = [];
if ( ! $wp_registered_sidebars ) {
$sidebar_options[0] = esc_html__( 'No sidebars were found', 'bdthemes-element-pack' );
} else {
$sidebar_options[0] = esc_html__( 'Select Sidebar', 'bdthemes-element-pack' );
foreach ( $wp_registered_sidebars as $sidebar_id => $sidebar ) {
$sidebar_options[ $sidebar_id ] = $sidebar['name'];
}
}
return $sidebar_options;
}
/**
* @param string category name
* @return array of category
*/
function element_pack_get_terms( $taxonomy = 'category', $hide_empty = false ) {
$post_options = [];
$post_categories = get_terms( [
'taxonomy' => $taxonomy,
'hide_empty' => $hide_empty,
] );
if ( is_wp_error( $post_categories ) ) {
return $post_options;
}
if ( false !== $post_categories and is_array( $post_categories ) ) {
foreach ( $post_categories as $category ) {
$post_options[ $category->term_id ] = $category->name;
}
}
return $post_options;
}
/**
* @param string parent category name
* @return array of parent category
*/
function element_pack_get_only_parent_cats( $taxonomy = 'category' ) {
$parent_categories = [ 'none' => __( 'None', 'bdthemes-element-pack' ) ];
$args = [ 'parent' => 0 ];
$parent_cats = get_terms( $taxonomy, $args );
foreach ( $parent_cats as $parent_cat ) {
$parent_categories[ $parent_cat->term_id ] = ucfirst( $parent_cat->name );
}
return $parent_categories;
}
function element_pack_get_taxonomy_by_post_type($post_type) {
switch ($post_type) {
case 'campaign':
return 'campaign_category';
case 'lightbox_library':
return 'ngg_tag';
case 'give_forms':
return 'give_forms_category';
case 'tribe_events':
return 'tribe_events_cat';
case 'product':
return 'product_cat';
case 'portfolio':
return 'portfolio_filter';
case 'faq':
return 'faq_filter';
case 'bdthemes-testimonial':
return 'testimonial_categories';
case 'knowledge_base':
return 'knowledge-type';
default:
return 'category';
}
}
/**
* @param $post_type string any post type that you want to show category
* @param $separator string separator for multiple category
*
* @return string
*/
function element_pack_get_category_list( $post_type, $separator = ' ' ) {
$taxonomy = element_pack_get_taxonomy_by_post_type($post_type);
$categories = get_the_terms( get_the_ID(), $taxonomy );
$_categories = [];
if ( $categories && !is_wp_error( $categories ) ) {
foreach ( $categories as $category ) {
// Ensure $category is an object, not an array
if ( is_object( $category ) && isset( $category->term_id, $category->name, $category->slug ) ) {
$link = '<a href="' . esc_url( get_category_link( $category->term_id ) ) . '">' . $category->name . '</a>';
$_categories[ $category->slug ] = $link;
}
}
}
return implode( esc_attr( $separator ), $_categories );
}
/**
* @param array all ajax posted array there
*
* @return array return all setting as array
*/
function element_pack_ajax_settings( $settings ) {
$required_settings = [
'show_date' => true,
'show_comment' => true,
'show_link' => true,
'show_meta' => true,
'show_title' => true,
'show_excerpt' => true,
'show_lightbox' => true,
'show_thumbnail' => true,
'show_category' => false,
'show_tags' => false,
];
foreach ( $settings as $key => $value ) {
if ( in_array( $key, $required_settings ) ) {
$required_settings[ $key ] = $value;
}
}
return $required_settings;
}
/**
* @return array of all transition names
*/
function element_pack_transition_options() {
$transition_options = [
'' => esc_html__( 'None', 'bdthemes-element-pack' ),
'fade' => esc_html__( 'Fade', 'bdthemes-element-pack' ),
'scale-up' => esc_html__( 'Scale Up', 'bdthemes-element-pack' ),
'scale-down' => esc_html__( 'Scale Down', 'bdthemes-element-pack' ),
'slide-top' => esc_html__( 'Slide Top', 'bdthemes-element-pack' ),
'slide-bottom' => esc_html__( 'Slide Bottom', 'bdthemes-element-pack' ),
'slide-left' => esc_html__( 'Slide Left', 'bdthemes-element-pack' ),
'slide-right' => esc_html__( 'Slide Right', 'bdthemes-element-pack' ),
'slide-top-small' => esc_html__( 'Slide Top Small', 'bdthemes-element-pack' ),
'slide-bottom-small' => esc_html__( 'Slide Bottom Small', 'bdthemes-element-pack' ),
'slide-left-small' => esc_html__( 'Slide Left Small', 'bdthemes-element-pack' ),
'slide-right-small' => esc_html__( 'Slide Right Small', 'bdthemes-element-pack' ),
'slide-top-medium' => esc_html__( 'Slide Top Medium', 'bdthemes-element-pack' ),
'slide-bottom-medium' => esc_html__( 'Slide Bottom Medium', 'bdthemes-element-pack' ),
'slide-left-medium' => esc_html__( 'Slide Left Medium', 'bdthemes-element-pack' ),
'slide-right-medium' => esc_html__( 'Slide Right Medium', 'bdthemes-element-pack' ),
];
return $transition_options;
}
// BDT Blend Type
function element_pack_blend_options() {
$blend_options = [
'multiply' => esc_html__( 'Multiply', 'bdthemes-element-pack' ),
'screen' => esc_html__( 'Screen', 'bdthemes-element-pack' ),
'overlay' => esc_html__( 'Overlay', 'bdthemes-element-pack' ),
'darken' => esc_html__( 'Darken', 'bdthemes-element-pack' ),
'lighten' => esc_html__( 'Lighten', 'bdthemes-element-pack' ),
'color-dodge' => esc_html__( 'Color-Dodge', 'bdthemes-element-pack' ),
'color-burn' => esc_html__( 'Color-Burn', 'bdthemes-element-pack' ),
'hard-light' => esc_html__( 'Hard-Light', 'bdthemes-element-pack' ),
'soft-light' => esc_html__( 'Soft-Light', 'bdthemes-element-pack' ),
'difference' => esc_html__( 'Difference', 'bdthemes-element-pack' ),
'exclusion' => esc_html__( 'Exclusion', 'bdthemes-element-pack' ),
'hue' => esc_html__( 'Hue', 'bdthemes-element-pack' ),
'saturation' => esc_html__( 'Saturation', 'bdthemes-element-pack' ),
'color' => esc_html__( 'Color', 'bdthemes-element-pack' ),
'luminosity' => esc_html__( 'Luminosity', 'bdthemes-element-pack' ),
];
return $blend_options;
}
// BDT Position
function element_pack_position() {
$position_options = [
'' => esc_html__( 'Default', 'bdthemes-element-pack' ),
'top-left' => esc_html__( 'Top Left', 'bdthemes-element-pack' ),
'top-center' => esc_html__( 'Top Center', 'bdthemes-element-pack' ),
'top-right' => esc_html__( 'Top Right', 'bdthemes-element-pack' ),
'center' => esc_html__( 'Center', 'bdthemes-element-pack' ),
'center-left' => esc_html__( 'Center Left', 'bdthemes-element-pack' ),
'center-right' => esc_html__( 'Center Right', 'bdthemes-element-pack' ),
'bottom-left' => esc_html__( 'Bottom Left', 'bdthemes-element-pack' ),
'bottom-center' => esc_html__( 'Bottom Center', 'bdthemes-element-pack' ),
'bottom-right' => esc_html__( 'Bottom Right', 'bdthemes-element-pack' ),
];
return $position_options;
}
// BDT Thumbnavs Position
function element_pack_thumbnavs_position() {
$position_options = [
'top-left' => esc_html__( 'Top Left', 'bdthemes-element-pack' ),
'top-center' => esc_html__( 'Top Center', 'bdthemes-element-pack' ),
'top-right' => esc_html__( 'Top Right', 'bdthemes-element-pack' ),
'center-left' => esc_html__( 'Center Left', 'bdthemes-element-pack' ),
'center-right' => esc_html__( 'Center Right', 'bdthemes-element-pack' ),
'bottom-left' => esc_html__( 'Bottom Left', 'bdthemes-element-pack' ),
'bottom-center' => esc_html__( 'Bottom Center', 'bdthemes-element-pack' ),
'bottom-right' => esc_html__( 'Bottom Right', 'bdthemes-element-pack' ),
];
return $position_options;
}
function element_pack_navigation_position() {
$position_options = [
'top-left' => esc_html__( 'Top Left', 'bdthemes-element-pack' ),
'top-center' => esc_html__( 'Top Center', 'bdthemes-element-pack' ),
'top-right' => esc_html__( 'Top Right', 'bdthemes-element-pack' ),
'center' => esc_html__( 'Center', 'bdthemes-element-pack' ),
'center-left' => esc_html__( 'Center Left', 'bdthemes-element-pack' ),
'center-right' => esc_html__( 'Center Right', 'bdthemes-element-pack' ),
'bottom-left' => esc_html__( 'Bottom Left', 'bdthemes-element-pack' ),
'bottom-center' => esc_html__( 'Bottom Center', 'bdthemes-element-pack' ),
'bottom-right' => esc_html__( 'Bottom Right', 'bdthemes-element-pack' ),
];
return $position_options;
}
function element_pack_pagination_position() {
$position_options = [
'top-left' => esc_html__( 'Top Left', 'bdthemes-element-pack' ),
'top-center' => esc_html__( 'Top Center', 'bdthemes-element-pack' ),
'top-right' => esc_html__( 'Top Right', 'bdthemes-element-pack' ),
'center-left' => esc_html__( 'Center Left', 'bdthemes-element-pack' ),
'center-right' => esc_html__( 'Center Right', 'bdthemes-element-pack' ),
'bottom-left' => esc_html__( 'Bottom Left', 'bdthemes-element-pack' ),
'bottom-center' => esc_html__( 'Bottom Center', 'bdthemes-element-pack' ),
'bottom-right' => esc_html__( 'Bottom Right', 'bdthemes-element-pack' ),
];
return $position_options;
}
// BDT Drop Position
function element_pack_drop_position() {
$drop_position_options = [
'bottom-left' => esc_html__( 'Bottom Left', 'bdthemes-element-pack' ),
'bottom-center' => esc_html__( 'Bottom Center', 'bdthemes-element-pack' ),
'bottom-right' => esc_html__( 'Bottom Right', 'bdthemes-element-pack' ),
'bottom-justify' => esc_html__( 'Bottom Justify', 'bdthemes-element-pack' ),
'top-left' => esc_html__( 'Top Left', 'bdthemes-element-pack' ),
'top-center' => esc_html__( 'Top Center', 'bdthemes-element-pack' ),
'top-right' => esc_html__( 'Top Right', 'bdthemes-element-pack' ),
'top-justify' => esc_html__( 'Top Justify', 'bdthemes-element-pack' ),
'left-top' => esc_html__( 'Left Top', 'bdthemes-element-pack' ),
'left-center' => esc_html__( 'Left Center', 'bdthemes-element-pack' ),
'left-bottom' => esc_html__( 'Left Bottom', 'bdthemes-element-pack' ),
'right-top' => esc_html__( 'Right Top', 'bdthemes-element-pack' ),
'right-center' => esc_html__( 'Right Center', 'bdthemes-element-pack' ),
'right-bottom' => esc_html__( 'Right Bottom', 'bdthemes-element-pack' ),
];
return $drop_position_options;
}
// Button Size
function element_pack_button_sizes() {
$button_sizes = [
'xs' => esc_html__( 'Extra Small', 'bdthemes-element-pack' ),
'sm' => esc_html__( 'Small', 'bdthemes-element-pack' ),
'md' => esc_html__( 'Medium', 'bdthemes-element-pack' ),
'lg' => esc_html__( 'Large', 'bdthemes-element-pack' ),
'xl' => esc_html__( 'Extra Large', 'bdthemes-element-pack' ),
];
return $button_sizes;
}
// Button Size
function element_pack_heading_size() {
$heading_sizes = [
'h1' => 'H1',
'h2' => 'H2',
'h3' => 'H3',
'h4' => 'H4',
'h5' => 'H5',
'h6' => 'H6',
];
return $heading_sizes;
}
// Title Tags
function element_pack_title_tags() {
$title_tags = [
'h1' => 'H1',
'h2' => 'H2',
'h3' => 'H3',
'h4' => 'H4',
'h5' => 'H5',
'h6' => 'H6',
'div' => 'div',
'span' => 'span',
'p' => 'p',
];
return $title_tags;
}
/**
* Get all WooCommerce product titles as an associative array.
*
* @return array Product titles with IDs as keys, including a default 'Select Title' option.
*/
function element_pack_get_all_woocommerce_product_title() {
// Query arguments
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => -1,
'orderby' => 'title',
'order' => 'ASC',
'fields' => 'ids',
);
// Get all product IDs
$product_ids = get_posts($args);
// Initialize with default option
$product_titles = array('0' => esc_html__('Select Product', 'bdthemes-element-pack'));
// Add each product: [product_id => product_title]
foreach ($product_ids as $id) {
$title = get_the_title($id);
$product_titles[$id] = $title ? $title : esc_html__('Untitled Product', 'bdthemes-element-pack');
}
return $product_titles;
}
// function element_pack_mask_shapes() {
// $path = BDTEP_ASSETS_URL . 'images/mask/';
// $shape_name = 'shape';
// $extension = '.svg';
// $list = [0 => esc_html__('Select Mask', 'bdthemes-element-pack')];
// for ($i = 1; $i <= 20; $i++) {
// $list[$path . $shape_name . '-' . $i . $extension] = ucwords($shape_name . ' ' . $i);
// }
// return $list;
// }
/**
* This is a mask shape list function which return a mask shape list
*
* @return array list
*/
function element_pack_mask_shapes() {
$shape_name = 'shape';
$list = [];
for ( $i = 1; $i <= 31; $i++ ) {
$list[ $shape_name . '-' . $i ] = ucwords( $shape_name . ' ' . $i );
}
return $list;
}
/**
* Get Element Pack mask shapes options for VISUAL_CHOICE control
*
* @return array Options array for VISUAL_CHOICE control
*/
function element_pack_mask_shapes_options() {
$options = [];
$shape_list = element_pack_mask_shapes();
foreach ( $shape_list as $shape_key => $shape_name ) {
// Skip the first item if it's a placeholder
if ( $shape_key === 0 ) {
continue;
}
$options[ $shape_key ] = [
'title' => $shape_name,
'image' => BDTEP_ASSETS_URL . 'images/mask/' . $shape_key . '.svg',
];
}
return $options;
}
/**
* This is a svg file converter function which return a svg content
*
* @param string file
* @return false content
*/
function element_pack_svg_icon( $icon ) {
$icon_path = BDTEP_ASSETS_PATH . "images/svg/{$icon}.svg";
if ( ! file_exists( $icon_path ) ) {
return false;
}
ob_start();
include $icon_path;
$svg = ob_get_clean();
return $svg;
}
/**
* This is a svg file converter function which return a svg content
*
* @return false content
*/
function element_pack_load_svg( $icon ) {
if ( ! file_exists( $icon ) ) {
return false;
}
ob_start();
include $icon;
$svg = ob_get_clean();
return $svg;
}
/**
* weather code to icon and description output
* more info: http://www.apixu.com/doc/Apixu_weather_conditions.json
*/
function element_pack_weather_code( $code = null, $condition = null ) {
$codes = apply_filters( 'element-pack/weather/codes', [
"113" => [
"desc" => esc_html_x( "Clear/Sunny", "Weather String", "bdthemes-element-pack" ),
"icon" => "113",
],
"116" => [
"desc" => esc_html_x( "Partly cloudy", "Weather String", "bdthemes-element-pack" ),
"icon" => "116",
],
"119" => [
"desc" => esc_html_x( "Cloudy", "Weather String", "bdthemes-element-pack" ),
"icon" => "119",
],
"122" => [
"desc" => esc_html_x( "Overcast", "Weather String", "bdthemes-element-pack" ),
"icon" => "122",
],
"143" => [
"desc" => esc_html_x( "Mist", "Weather String", "bdthemes-element-pack" ),
"icon" => "143",
],
"176" => [
"desc" => esc_html_x( "Patchy rain nearby", "Weather String", "bdthemes-element-pack" ),
"icon" => "176",
],
"179" => [
"desc" => esc_html_x( "Patchy snow nearby", "Weather String", "bdthemes-element-pack" ),
"icon" => "179",
],
"182" => [
"desc" => esc_html_x( "Patchy sleet nearby", "Weather String", "bdthemes-element-pack" ),
"icon" => "182",
],
"185" => [
"desc" => esc_html_x( "Patchy freezing drizzle nearby", "Weather String", "bdthemes-element-pack" ),
"icon" => "185",
],
"200" => [
"desc" => esc_html_x( "Thundery outbreaks nearby", "Weather String", "bdthemes-element-pack" ),
"icon" => "200",
],
"227" => [
"desc" => esc_html_x( "Blowing snow", "Weather String", "bdthemes-element-pack" ),
"icon" => "227",
],
"230" => [
"desc" => esc_html_x( "Blizzard", "Weather String", "bdthemes-element-pack" ),
"icon" => "230",
],
"248" => [
"desc" => esc_html_x( "Fog", "Weather String", "bdthemes-element-pack" ),
"icon" => "248",
],
"260" => [
"desc" => esc_html_x( "Freezing fog", "Weather String", "bdthemes-element-pack" ),
"icon" => "260",
],
"263" => [
"desc" => esc_html_x( "Patchy light drizzle", "Weather String", "bdthemes-element-pack" ),
"icon" => "263",
],
"266" => [
"desc" => esc_html_x( "Light drizzle", "Weather String", "bdthemes-element-pack" ),
"icon" => "266",
],
"281" => [
"desc" => esc_html_x( "Freezing drizzle", "Weather String", "bdthemes-element-pack" ),
"icon" => "281",
],
"284" => [
"desc" => esc_html_x( "Heavy freezing drizzle", "Weather String", "bdthemes-element-pack" ),
"icon" => "284",
],
"293" => [
"desc" => esc_html_x( "Patchy light rain", "Weather String", "bdthemes-element-pack" ),
"icon" => "293",
],
"296" => [
"desc" => esc_html_x( "Light rain", "Weather String", "bdthemes-element-pack" ),
"icon" => "296",
],
"299" => [
"desc" => esc_html_x( "Moderate rain at times", "Weather String", "bdthemes-element-pack" ),
"icon" => "299",
],
"302" => [
"desc" => esc_html_x( "Moderate rain", "Weather String", "bdthemes-element-pack" ),
"icon" => "302",
],
"305" => [
"desc" => esc_html_x( "Heavy rain at times", "Weather String", "bdthemes-element-pack" ),
"icon" => "305",
],
"308" => [
"desc" => esc_html_x( "Heavy rain", "Weather String", "bdthemes-element-pack" ),
"icon" => "308",
],
"311" => [
"desc" => esc_html_x( "Light freezing rain", "Weather String", "bdthemes-element-pack" ),
"icon" => "311",
],
"314" => [
"desc" => esc_html_x( "Moderate or heavy freezing rain", "Weather String", "bdthemes-element-pack" ),
"icon" => "314",
],
"317" => [
"desc" => esc_html_x( "Light sleet", "Weather String", "bdthemes-element-pack" ),
"icon" => "317",
],
"320" => [
"desc" => esc_html_x( "Moderate or heavy sleet", "Weather String", "bdthemes-element-pack" ),
"icon" => "320",
],
"323" => [
"desc" => esc_html_x( "Patchy light snow", "Weather String", "bdthemes-element-pack" ),
"icon" => "323",
],
"326" => [
"desc" => esc_html_x( "Light snow", "Weather String", "bdthemes-element-pack" ),
"icon" => "326",
],
"329" => [
"desc" => esc_html_x( "Patchy moderate snow", "Weather String", "bdthemes-element-pack" ),
"icon" => "329",
],
"332" => [
"desc" => esc_html_x( "Moderate snow", "Weather String", "bdthemes-element-pack" ),
"icon" => "332",
],
"335" => [
"desc" => esc_html_x( "Patchy heavy snow", "Weather String", "bdthemes-element-pack" ),
"icon" => "335",
],
"338" => [
"desc" => esc_html_x( "Heavy snow", "Weather String", "bdthemes-element-pack" ),
"icon" => "338",
],
"350" => [
"desc" => esc_html_x( "Ice pellets", "Weather String", "bdthemes-element-pack" ),
"icon" => "350",
],
"353" => [
"desc" => esc_html_x( "Light rain shower", "Weather String", "bdthemes-element-pack" ),
"icon" => "353",
],
"356" => [
"desc" => esc_html_x( "Moderate or heavy rain shower", "Weather String", "bdthemes-element-pack" ),
"icon" => "356",
],
"359" => [
"desc" => esc_html_x( "Torrential rain shower", "Weather String", "bdthemes-element-pack" ),
"icon" => "359",
],
"362" => [
"desc" => esc_html_x( "Light sleet showers", "Weather String", "bdthemes-element-pack" ),
"icon" => "362",
],
"365" => [
"desc" => esc_html_x( "Moderate or heavy sleet showers", "Weather String", "bdthemes-element-pack" ),
"icon" => "365",
],
"368" => [
"desc" => esc_html_x( "Light snow showers", "Weather String", "bdthemes-element-pack" ),
"icon" => "368",
],
"371" => [
"desc" => esc_html_x( "Moderate or heavy snow showers", "Weather String", "bdthemes-element-pack" ),
"icon" => "371",
],
"374" => [
"desc" => esc_html_x( "Light showers of ice pellets", "Weather String", "bdthemes-element-pack" ),
"icon" => "374",
],
"377" => [
"desc" => esc_html_x( "Moderate or heavy showers of ice pellets", "Weather String", "bdthemes-element-pack" ),
"icon" => "377",
],
"386" => [
"desc" => esc_html_x( "Patchy light rain with thunder", "Weather String", "bdthemes-element-pack" ),
"icon" => "386",
],
"389" => [
"desc" => esc_html_x( "Moderate or heavy rain with thunder", "Weather String", "bdthemes-element-pack" ),
"icon" => "389",
],
"392" => [
"desc" => esc_html_x( "Patchy light snow with thunder", "Weather String", "bdthemes-element-pack" ),
"icon" => "392",
],
"395" => [
"desc" => esc_html_x( "Moderate or heavy snow with thunder", "Weather String", "bdthemes-element-pack" ),
"icon" => "395",
],
] );
if ( ! $code ) {
return $codes;
}
$code_key = (string) $code;
if ( ! isset( $codes[ $code_key ] ) ) {
return false;
}
if ( $condition && isset( $codes[ $code_key ][ $condition ] ) ) {
return $codes[ $code_key ][ $condition ];
}
return $codes[ $code_key ];
}
function element_pack_open_weather_code( $code = null, $condition = null ) {
$codes = apply_filters( 'element-pack/weather/codes', [
"01d" => [
"desc" => esc_html_x( "Clear/Sunny", "Weather String", "bdthemes-element-pack" ),
"icon" => "113",
],
"02d" => [
"desc" => esc_html_x( "Partly cloudy", "Weather String", "bdthemes-element-pack" ),
"icon" => "116",
],
"03d" => [
"desc" => esc_html_x( "Partly cloudy", "Weather String", "bdthemes-element-pack" ),
"icon" => "116",
],
"10n" => [
"desc" => esc_html_x( "Partly cloudy", "Weather String", "bdthemes-element-pack" ),
"icon" => "116",
],
"04d" => [
"desc" => esc_html_x( "Overcast", "Weather String", "bdthemes-element-pack" ),
"icon" => "122",
],
"04n" => [
"desc" => esc_html_x( "Mist", "Weather String", "bdthemes-element-pack" ),
"icon" => "143",
],
"50n" => [
"desc" => esc_html_x( "Mist", "Weather String", "bdthemes-element-pack" ),
"icon" => "143",
],
"11d" => [
"desc" => esc_html_x( "Thundery outbreaks nearby", "Weather String", "bdthemes-element-pack" ),
"icon" => "200",
],
"50d" => [
"desc" => esc_html_x( "Freezing fog", "Weather String", "bdthemes-element-pack" ),
"icon" => "260",
],
"09d" => [
"desc" => esc_html_x( "Moderate or heavy rain shower", "Weather String", "bdthemes-element-pack" ),
"icon" => "356",
],
"10d" => [
"desc" => esc_html_x( "Moderate or heavy rain with thunder", "Weather String", "bdthemes-element-pack" ),
"icon" => "389",
],
"13d" => [
"desc" => esc_html_x( "Moderate or heavy snow with thunder", "Weather String", "bdthemes-element-pack" ),
"icon" => "395",
],
] );
if ( ! $code ) {
return $codes;
}
$code_key = (string) $code;
if ( ! isset( $codes[ $code_key ] ) ) {
return false;
}
if ( $condition && isset( $codes[ $code_key ][ $condition ] ) ) {
return $codes[ $code_key ][ $condition ];
}
return $codes[ $code_key ];
}
function element_pack_wind_code( $degree ) {
$direction = '';
if ( ( $degree >= 0 && $degree <= 33.75 ) or ( $degree > 348.75 && $degree <= 360 ) ) {
$direction = esc_html_x( 'north', 'Weather String', 'bdthemes-element-pack' );
} else if ( $degree > 33.75 && $degree <= 78.75 ) {
$direction = esc_html_x( 'north-east', 'Weather String', 'bdthemes-element-pack' );
} else if ( $degree > 78.75 && $degree <= 123.75 ) {
$direction = esc_html_x( 'east', 'Weather String', 'bdthemes-element-pack' );
} else if ( $degree > 123.75 && $degree <= 168.75 ) {
$direction = esc_html_x( 'south-east', 'Weather String', 'bdthemes-element-pack' );
} else if ( $degree > 168.75 && $degree <= 213.75 ) {
$direction = esc_html_x( 'south', 'Weather String', 'bdthemes-element-pack' );
} else if ( $degree > 213.75 && $degree <= 258.75 ) {
$direction = esc_html_x( 'south-west', 'Weather String', 'bdthemes-element-pack' );
} else if ( $degree > 258.75 && $degree <= 303.75 ) {
$direction = esc_html_x( 'west', 'Weather String', 'bdthemes-element-pack' );
} else if ( $degree > 303.75 && $degree <= 348.75 ) {
$direction = esc_html_x( 'north-west', 'Weather String', 'bdthemes-element-pack' );
}
return $direction;
}
/**
* @param array CSV file data
* @param string $delimiter
* @param false $header
*
* @return string
*/
function element_pack_parse_csv( $csv, $delimiter = ';', $header = true ) {
if ( ! is_string( $csv ) ) {
return '';
}
if ( ! function_exists( 'str_getcsv' ) ) {
return $csv;
}
$html = '';
$rows = explode( PHP_EOL, $csv );
$headRow = 1;
foreach ( $rows as $row ) {
if ( $headRow == 1 and $header ) {
$html .= '<thead><tr>';
} else {
$html .= '<tr>';
}
foreach ( str_getcsv( $row, $delimiter ) as $cell ) {
$cell = trim( $cell );
$html .= $header
? '<th>' . $cell . '</th>'
: '<td>' . $cell . '</td>';
}
if ( $headRow == 1 and $header ) {
$html .= '</tr></thead><tbody>';
} else {
$html .= '</tr>';
}
$headRow++;
$header = false;
}
return '<table>' . $html . '</tbody></table>';
}
/**
* String to ID maker for any title to relavent id
*
* @param [type] string any title or string
*
* @return [type] [description]
*/
function element_pack_string_id( $string ) {
//Lower case everything
$string = strtolower( $string );
//Make alphanumeric (removes all other characters)
$string = preg_replace( "/[^a-z0-9_\s-]/", "", $string );
//Clean up multiple dashes or whitespaces
$string = preg_replace( "/[\s-]+/", " ", $string );
//Convert whitespaces and underscore to dash
$string = preg_replace( "/[\s_]/", "-", $string );
//finally return here
return $string;
}
/**
* Ninja form array creator for get all form as
* @return array [description]
*/
function element_pack_ninja_forms_options() {
if ( class_exists( 'Ninja_Forms' ) and function_exists( 'Ninja_Forms' ) ) {
$ninja_forms = Ninja_Forms()->form()->get_forms();
if ( ! empty( $ninja_forms ) && ! is_wp_error( $ninja_forms ) ) {
$form_options = [ '0' => esc_html__( 'Select Form', 'bdthemes-element-pack' ) ];
foreach ( $ninja_forms as $form ) {
$form_options[ $form->get_id()] = $form->get_setting( 'title' );
}
}
} else {
$form_options = [ '0' => esc_html__( 'Form Not Found!', 'bdthemes-element-pack' ) ];
}
return $form_options;
}
function element_pack_fluent_forms_options() { {
$options = array();
if ( defined( 'FLUENTFORM' ) ) {
global $wpdb;
// phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
$result = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}fluentform_forms" );
if ( $result ) {
$options[0] = esc_html__( 'Select Form', 'bdthemes-element-pack' );
foreach ( $result as $form ) {
$options[ $form->id ] = $form->title;
}
} else {
$options[0] = esc_html__( 'Form Not Found!', 'bdthemes-element-pack' );
}
}
return $options;
}
}
/**
* [element_pack_everest_forms_options description]
* @return [type] [description]
*/
function element_pack_everest_forms_options() {
$everest_form = array();
$ev_form = get_posts( 'post_type="everest_form"&numberposts=-1' );
if ( $ev_form ) {
foreach ( $ev_form as $evform ) {
$everest_form[ $evform->ID ] = $evform->post_title;
}
} else {
$everest_form[0] = esc_html__( 'Form Not Found!', 'bdthemes-element-pack' );
}
return $everest_form;
}
/**
* [element_pack_formidable_forms_options description]
* @return [type] [description]
*/
function element_pack_formidable_forms_options() {
if ( class_exists( 'FrmForm' ) ) {
$options = array();
$forms = FrmForm::get_published_forms( array(), 999, 'exclude' );
if ( count( $forms ) ) {
$i = 0;
foreach ( $forms as $form ) {
if ( 0 === $i ) {
$options[0] = esc_html__( 'Select Form', 'bdthemes-element-pack' );
}
$options[ $form->id ] = $form->name;
$i++;
}
}
} else {
$options = [ '0' => esc_html__( 'Form Not Found!', 'bdthemes-element-pack' ) ];
}
return $options;
}
/**
* [element_pack_forminator_forms_options description]
* @return [type] [description]
*/
function element_pack_forminator_forms_options() {
$forminator_form = array();
$fnr_form = get_posts( 'post_type="forminator_forms"&numberposts=-1' );
if ( $fnr_form ) {
foreach ( $fnr_form as $fnrform ) {
$forminator_form[ $fnrform->ID ] = $fnrform->post_title;
}
} else {
$forminator_form[0] = esc_html__( 'Form Not Found!', 'bdthemes-element-pack' );
}
return $forminator_form;
}
/**
* [element_pack_we_forms_options description]
* @return [type] [description]
*/
function element_pack_we_forms_options() {
if ( class_exists( 'WeForms' ) ) {
$we_forms = get_posts( [
'post_type' => 'wpuf_contact_form',
'post_status' => 'publish',
'posts_per_page' => -1,
'orderby' => 'title',
'order' => 'ASC',
] );
if ( ! empty( $we_forms ) && ! is_wp_error( $we_forms ) ) {
$form_options = [ '0' => esc_html__( 'Select Form', 'bdthemes-element-pack' ) ];
foreach ( $we_forms as $form ) {
$form_options[ $form->ID ] = $form->post_title;
}
}
} else {
$form_options = [ '0' => esc_html__( 'Form Not Found!', 'bdthemes-element-pack' ) ];
}
return $form_options;
}
/**
* [element_pack_caldera_forms_options description]
* @return [type] [description]
*/
function element_pack_caldera_forms_options() {
if ( class_exists( 'Caldera_Forms' ) ) {
$caldera_forms = Caldera_Forms_Forms::get_forms( true, true );
$form_options = [ '0' => esc_html__( 'Select Form', 'bdthemes-element-pack' ) ];
$form = [];
if ( ! empty( $caldera_forms ) && ! is_wp_error( $caldera_forms ) ) {
foreach ( $caldera_forms as $form ) {
if ( isset( $form['ID'] ) and isset( $form['name'] ) ) {
$form_options[ $form['ID'] ] = $form['name'];
}
}
}
} else {
$form_options = [ '0' => esc_html__( 'Form Not Found!', 'bdthemes-element-pack' ) ];
}
return $form_options;
}
/**
* [element_pack_quform_options description]
* @return [type] [description]
*/
function element_pack_quform_options() {
if ( class_exists( 'Quform' ) ) {
$quform = Quform::getService( 'repository' );
$quform = $quform->formsToSelectArray();
$form_options = [ '0' => esc_html__( 'Select Form', 'bdthemes-element-pack' ) ];
if ( ! empty( $quform ) && ! is_wp_error( $quform ) ) {
foreach ( $quform as $id => $name ) {
$form_options[ esc_attr( $id ) ] = esc_html( $name );
}
}
} else {
$form_options = [ '0' => esc_html__( 'Form Not Found!', 'bdthemes-element-pack' ) ];
}
return $form_options;
}
/**
* [element_pack_gravity_forms_options description]
* @return [type] [description]
*/
function element_pack_gravity_forms_options() {
if ( class_exists( 'GFCommon' ) ) {
$contact_forms = RGFormsModel::get_forms( null, 'title' );
$form_options = [ '0' => esc_html__( 'Select Form', 'bdthemes-element-pack' ) ];
if ( ! empty( $contact_forms ) && ! is_wp_error( $contact_forms ) ) {
foreach ( $contact_forms as $form ) {
$form_options[ $form->id ] = $form->title;
}
}
} else {
$form_options = [ '0' => esc_html__( 'Form Not Found!', 'bdthemes-element-pack' ) ];
}
return $form_options;
}
/**
* [element_pack_give_forms_options description]
* @return [type] [description]
*/
function element_pack_give_forms_options() {
$give_form = [ '0' => esc_html__( 'Select Form', 'bdthemes-element-pack' ) ];
$gwp_form = get_posts( 'post_type="give_forms"&numberposts=-1' );
if ( $gwp_form ) {
foreach ( $gwp_form as $gwpform ) {
$give_form[ $gwpform->ID ] = $gwpform->post_title;
}
} else {
$give_form[0] = esc_html__( 'Form Not Found!', 'bdthemes-element-pack' );
}
return $give_form;
}
/**
* [element_pack_charitable_forms_options description]
* @return [type] [description]
*/
function element_pack_charitable_forms_options() {
$charitable_form = array( 'all' => esc_html__( 'All', 'bdthemes-element-pack' ) );
$charity_form = get_posts( 'post_type="campaign"&numberposts=-1' );
if ( $charity_form ) {
foreach ( $charity_form as $charityform ) {
$charitable_form[ $charityform->ID ] = $charityform->post_title;
}
} else {
$charitable_form[0] = esc_html__( 'Form Not Found!', 'bdthemes-element-pack' );
}
return $charitable_form;
}
/**
* [element_pack_rev_slider_options description]
* @return [type] [description]
*/
function element_pack_rev_slider_options() {
if ( class_exists( 'RevSlider' ) ) {
$slider = new RevSlider();
$revolution_sliders = $slider->getArrSliders();
$slider_options = [ '0' => esc_html__( 'Select Slider', 'bdthemes-element-pack' ) ];
if ( ! empty( $revolution_sliders ) && ! is_wp_error( $revolution_sliders ) ) {
foreach ( $revolution_sliders as $revolution_slider ) {
$alias = $revolution_slider->getAlias();
$title = $revolution_slider->getTitle();
$slider_options[ $alias ] = $title;
}
}
} else {
$slider_options = [ '0' => esc_html__( 'No Slider Found!', 'bdthemes-element-pack' ) ];
}
return $slider_options;
}
/**
* [element_pack_download_file_list description]
* @return [type] [description]
*/
function element_pack_download_file_list() {
$output = [];
if ( defined( 'DLM_VERSION' ) ) {
$search_query = ( ! empty( $_POST['dlm_search'] ) ? esc_attr( $_POST['dlm_search'] ) : '' );
$limit = 100;
$filters = array( 'post_status' => 'publish' );
if ( ! empty( $search_query ) ) {
$filters['s'] = $search_query;
}
$downloads = download_monitor()->service( 'download_repository' )->retrieve( $filters, $limit );
foreach ( $downloads as $download ) {
$output[ absint( $download->get_id() ) ] = $download->get_title() . ' (' . $download->get_version()->get_filename() . ')';
}
}
return $output;
}
/**
* [element_pack_dashboard_link description]
* @param string $suffix [description]
* @return [type] [description]
*/
function element_pack_dashboard_link( $suffix = '#welcome' ) {
return add_query_arg( [ 'page' => 'element_pack_options' . $suffix ], admin_url( 'admin.php' ) );
}
/**
* [element_pack_currency_symbol description]
* @param string $currency [description]
* @return [type] [description]
*/
function element_pack_currency_symbol( $currency = '' ) {
switch ( strtoupper( $currency ) ) {
case 'AED':
$currency_symbol = 'د.إ';
break;
case 'AUD':
case 'CAD':
case 'CLP':
case 'COP':
case 'HKD':
case 'MXN':
case 'NZD':
case 'SGD':
case 'USD':
$currency_symbol = '$';
break;
case 'BDT':
$currency_symbol = '৳ ';
break;
case 'BGN':
$currency_symbol = 'лв.';
break;
case 'BIF':
$currency_symbol = 'FBu';
break;
case 'BRL':
$currency_symbol = 'R$';
break;
case 'CHF':
$currency_symbol = 'CHF';
break;
case 'CNY':
case 'JPY':
case 'RMB':
$currency_symbol = '¥';
break;
case 'CZK':
$currency_symbol = 'Kč';
break;
case 'DJF':
$currency_symbol = 'Fdj';
break;
case 'DKK':
$currency_symbol = 'DKK';
break;
case 'DOP':
$currency_symbol = 'RD$';
break;
case 'EGP':
$currency_symbol = 'EGP';
break;
case 'ETB':
$currency_symbol = 'ETB';
break;
case 'EUR':
$currency_symbol = '€';
break;
case 'GBP':
$currency_symbol = '£';
break;
case 'GHS':
$currency_symbol = 'GH₵';
break;
case 'HRK':
$currency_symbol = 'Kn';
break;
case 'HUF':
$currency_symbol = 'Ft';
break;
case 'IDR':
$currency_symbol = 'Rp';
break;
case 'ILS':
$currency_symbol = '₪';
break;
case 'INR':
$currency_symbol = 'Rs.';
break;
case 'ISK':
$currency_symbol = 'Kr.';
break;
case 'IRR':
$currency_symbol = '﷼';
break;
case 'KES':
$currency_symbol = 'KSh';
break;
case 'KIP':
$currency_symbol = '₭';
break;
case 'KRW':
$currency_symbol = '₩';
break;
case 'MYR':
$currency_symbol = 'RM';
break;
case 'NGN':
$currency_symbol = '₦';
break;
case 'NOK':
$currency_symbol = 'kr';
break;
case 'NPR':
$currency_symbol = 'Rs.';
break;
case 'PHP':
$currency_symbol = '₱';
break;
case 'PKR':
$currency_symbol = 'Rs.';
break;
case 'PLN':
$currency_symbol = 'zł';
break;
case 'PYG':
$currency_symbol = '₲';
break;
case 'RON':
$currency_symbol = 'lei';
break;
case 'RUB':
$currency_symbol = 'руб.';
break;
case 'RWF':
$currency_symbol = 'FRw';
break;
case 'SEK':
$currency_symbol = 'kr';
break;
case 'THB':
$currency_symbol = '฿';
break;
case 'TND':
$currency_symbol = 'DT';
break;
case 'TRY':
$currency_symbol = '₺';
break;
case 'TWD':
$currency_symbol = 'NT$';
break;
case 'TZS':
$currency_symbol = 'TSh';
break;
case 'UAH':
$currency_symbol = '₴';
break;
case 'UGX':
$currency_symbol = 'USh';
break;
case 'VND':
$currency_symbol = '₫';
break;
case 'XAF':
$currency_symbol = 'CFA';
break;
case 'ZAR':
$currency_symbol = 'R';
break;
default:
$currency_symbol = '';
break;
}
return apply_filters( 'element_pack_currency_symbol', $currency_symbol, $currency );
}
/**
* [element_pack_money_format description]
* @param [type] $value [description]
* @return [type] [description]
*/
function element_pack_money_format( $value ) {
if ( empty( $value ) ) {
return;
}
$value = sprintf( '%01.2f', $value );
return $value;
}
/**
* @param int $limit default limit is 25 word
* @param bool $strip_shortcode if you want to strip shortcode from excert text
* @param string $trail trail string default is ...
*
* @return string return custom limited excerpt text
*/
function element_pack_custom_excerpt( $limit = 25, $strip_shortcode = false, $trail = '' ) {
$output = get_the_content();
if ( $limit ) {
$output = wp_trim_words( $output, $limit, $trail );
}
if ( $strip_shortcode ) {
$output = strip_shortcodes( $output );
}
return wpautop( $output );
}
/**
* [element_pack_total_comment description]
* @param string $comment_type [description]
* @return [type] [description]
*/
function element_pack_total_comment( $comment_type = 'total' ) {
$comments_count = wp_count_comments();
if ( $comment_type == 'moderated' ) {
$output = $comments_count->moderated;
} elseif ( $comment_type == 'approved' ) {
$output = $comments_count->approved;
} elseif ( $comment_type == 'spam' ) {
$output = $comments_count->spam;
} elseif ( $comment_type == 'trash' ) {
$output = $comments_count->trash;
} elseif ( $comment_type = 'total' ) {
$output = $comments_count->total_comments;
}
return $output;
}
/**
* [element_pack_total_post description]
* @param string $custom_post_type [description]
* @param string $post_status [description]
* @return [type] [description]
*/
function element_pack_total_post( $custom_post_type = 'post', $post_status = 'publish' ) {
$post_count = wp_count_posts( $custom_post_type );
if ( $post_status == 'publish' ) {
$output = $post_count->publish;
} elseif ( $post_status == 'draft' ) {
$output = $post_count->draft;
} elseif ( $post_status == 'trash' ) {
$output = $post_count->trash;
}
return $output;
}
/**
* [element_pack_total_user description]
* @param string $user_type [description]
* @return [type] [description]
*/
function element_pack_total_user( $user_type = 'bdt-all-users' ) {
$user_count = count_users();
if ( $user_type == 'bdt-all-users' ) {
$output = $user_count['total_users'];
} else {
if ( ! empty( $user_count['avail_roles'][ $user_type ] ) ) {
$output = $user_count['avail_roles'][ $user_type ];
} else {
$output = 0;
}
}
return $output;
}
/**
* [element_pack_user_roles description]
* @return [type] [description]
*/
function element_pack_user_roles() {
global $wp_roles;
if ( ! isset( $wp_roles ) ) {
$wp_roles = new WP_Roles();
}
$all_roles = $wp_roles->roles;
$editable_roles = apply_filters( 'editable_roles', $all_roles );
$users = [ 'bdt-all-users' => 'All Users' ];
foreach ( $editable_roles as $er => $role ) {
$users[ $er ] = $role['name'];
}
return $users;
}
/**
* [element_pack_strip_emoji description]
* @param [type] $text [description]
* @return [type] [description]
*/
function element_pack_strip_emoji( $text ) {
// four byte utf8: 11110www 10xxxxxx 10yyyyyy 10zzzzzz
return preg_replace( '/[\xF0-\xF7][\x80-\xBF]{3}/', '', $text );
}
/**
* [element_pack_twitter_process_links description]
* @param [type] $tweet [description]
* @return [type] [description]
*/
function element_pack_twitter_process_links( $tweet ) {
// Is the Tweet a ReTweet - then grab the full text of the original Tweet
if ( isset( $tweet->retweeted_status ) ) {
// Split it so indices count correctly for @mentions etc.
$rt_section = current( explode( ':', $tweet->text ) );
$text = $rt_section . ': ';
// Get Text
$text .= $tweet->retweeted_status->text;
} else {
// Not a retweet - get Tweet
$text = $tweet->text;
}
// NEW Link Creation from clickable items in the text
$text = preg_replace( '/((http)+(s)?:\/\/[^<>\s]+)/i', '<a href="$0" target="_blank" rel="nofollow">$0</a>', $text );
// Clickable Twitter names
$text = preg_replace( '/[@]+([A-Za-z0-9-_]+)/', '<a href="http://twitter.com/$1" target="_blank" rel="nofollow">@$1</a>', $text );
// Clickable Twitter hash tags
$text = preg_replace( '/[#]+([A-Za-z0-9-_]+)/', '<a href="http://twitter.com/search?q=%23$1" target="_blank" rel="nofollow">$0</a>', $text );
// END TWEET CONTENT REGEX
return $text;
}
/**
* [element_pack_time_diff description]
* @param [type] $from [description]
* @param string $to [description]
* @return [type] [description]
*/
function element_pack_time_diff( $from, $to = '' ) {
$diff = human_time_diff( $from, $to );
$replace = array(
' hour' => 'h',
' hours' => 'h',
' day' => 'd',
' days' => 'd',
' minute' => 'm',
' minutes' => 'm',
' second' => 's',
' seconds' => 's',
);
return strtr( $diff, $replace );
}
/**
* [element_pack_post_time_diff description]
* @param string $format [description]
* @return [type] [description]
*/
function element_pack_post_time_diff( $format = '' ) {
$displayAgo = esc_html_x( 'ago', 'leading space is required', 'bdthemes-element-pack' );
if ( $format == 'short' ) {
$output = element_pack_time_diff( strtotime( get_the_date() ), current_time( 'timestamp' ) );
} else {
$output = human_time_diff( strtotime( get_the_date() ), current_time( 'timestamp' ) );
}
$output = $output . ' ' . $displayAgo;
return $output;
}
function element_pack_hide_on_class( $selectors ) {
$element_hide_on = '';
if ( ! empty( $selectors ) ) {
foreach ( $selectors as $element ) {
if ( $element == 'desktop' ) {
$element_hide_on .= ' bdt-desktop';
}
if ( $element == 'tablet' ) {
$element_hide_on .= ' bdt-tablet';
}
if ( $element == 'mobile' ) {
$element_hide_on .= ' bdt-mobile';
}
}
}
return $element_hide_on;
}
if ( ! function_exists( 'element_pack_array_except' ) ) {
/**
* Provide access to optional objects.
*
* @param mixed $value
* @param callable|null $callback
* @return mixed
*/
function element_pack_array_except( $array, $keys ) {
$original = &$array;
$keys = (array) $keys;
if ( count( $keys ) === 0 ) {
return;
}
foreach ( $keys as $key ) {
// if the exact key exists in the top-level, remove it
if ( array_key_exists( $key, $array ) ) {
unset( $array[ $key ] );
continue;
}
$parts = explode( '.', $key );
// clean up before each pass
$array = &$original;
while ( count( $parts ) > 1 ) {
$part = array_shift( $parts );
if ( isset( $array[ $part ] ) && is_array( $array[ $part ] ) ) {
$array = &$array[ $part ];
} else {
continue 2;
}
}
unset( $array[ array_shift( $parts ) ] );
}
return $array;
}
}
/**
* License Validation
*/
if ( ! function_exists( 'bdt_license_validation' ) ) {
function bdt_license_validation() {
if ( ! class_exists( 'ElementPack\Base\Element_Pack_Base' ) ) {
return false;
}
$license_key = get_option( ElementPack\Base\Element_Pack_Base::get_lic_key_param( 'element_pack_license_key' ) );
if ( isset( $license_key ) && ! empty( $license_key ) ) {
return true;
}
return false;
}
}
/**
* Crypto Currency API
*/
if ( ! function_exists( 'ep_crypto' ) ) {
function ep_crypto() {
$currency = isset( $_GET['currency'] ) ? $_GET['currency'] : 'usd';
$param = [
'page' => isset( $_GET['page'] ) && is_int( $_GET['page'] ) ? $_GET['page'] : 1,
'per_page' => isset( $_GET['per_page'] ) && $_GET['per_page'] ? $_GET['per_page'] : 100,
'order' => isset( $_GET['order'] ) ? $_GET['order'] : 'market_cap_desc',
];
//$data = $client->coins()->getMarkets($currency, $param); // stoped api sdk here
$ids = ! empty( $_GET['ids'] ) && 'all' !== $_GET['ids'] ? 'ids=' . $_GET['ids'] . '&' : '';
// $market_url = 'https://api.coingecko.com/api/v3/coins/markets?' . $ids . 'vs_currency=' . $currency . '&order=' . $param['order'] . '&per_page=' . $param['per_page'] . '&page=' . $param['page'] . '&sparkline=true&price_change_percentage=1h%2C24h%2C7d';
$market_url = 'https://api.coingecko.com/api/v3/coins/markets?' . $ids . 'vs_currency=' . $currency . '&order=' . $param['order'] . '&page=' . $param['page'] . '&sparkline=true&price_change_percentage=1h%2C24h%2C7d';
/**
* decoding data
*/
$url = wp_remote_request( $market_url );
$body = wp_remote_retrieve_body( $url );
$data = json_decode( $body );
// $data = json_decode($data);
/**
* sending response
*/
// now have to brek the data
if ( isset( $data->status->error_code ) && ! empty( $data->status->error_code ) ) {
$data = get_transient( 'ep-bitcoin' );
// $dataset = array(
// "apiErrors" => true,
// "data" => isset($data->status->error_message) ? $data->status->error_message : 'API Errors.'
// );
// echo json_encode($dataset);
// wp_die();
}
if ( count( $data ) > 0 ) {
set_transient( 'ep-bitcoin', $data, apply_filters( 'element-pack/bitcoin/cached-time', HOUR_IN_SECONDS ) );
}
$resultData = [];
$count = 0;
foreach ( $data as $row ) {
$count++;
// if ($count >= $param['per_page']) {
// return;
// }
$resultData[] = [
'market_cap_rank' => $row->market_cap_rank,
'id' => $row->id,
'current_price' => $row->current_price,
'price_change_percentage_1h' => $row->price_change_percentage_1h_in_currency,
'price_change_percentage_24h' => $row->price_change_percentage_24h_in_currency,
'price_change_percentage_7d' => $row->price_change_percentage_7d_in_currency,
//'total_supply' => $row->total_supply,
'market_cap' => $row->market_cap,
'total_volume' => $row->total_volume,
'circulating_supply' => $row->circulating_supply,
'image' => $row->image,
'symbol' => $row->symbol,
//'last_seven_days_changes' => getChartData($row->id, $currency)
'last_seven_days_changes' => $row->sparkline_in_7d->price,
];
}
$dataset = array(
"totalrecords" => count( $data ),
//"data" => $data
"data" => $resultData,
);
echo json_encode( $dataset );
wp_die();
}
}
if ( ! function_exists( 'ep_crypto_data' ) ) {
function ep_crypto_data() {
try {
/**
* initialization
*/
//$client = new CoinGeckoClient();
/**
* setting param
*/
$currency = isset( $_GET['currency'] ) ? $_GET['currency'] : 'usd';
$param = [
'page' => isset( $_GET['page'] ) && is_int( $_GET['page'] ) ? $_GET['page'] : 1,
'per_page' => isset( $_GET['per_page'] ) && $_GET['per_page'] ? $_GET['per_page'] : 250,
'order' => isset( $_GET['order'] ) ? $_GET['order'] : 'market_cap_desc',
];
// $data = $client->coins()->getMarkets($currency, $param); // this is previous call here
$ids = ! empty( $_GET['ids'] ) && 'all' !== $_GET['ids'] ? 'ids=' . $_GET['ids'] . '&' : '';
// $market_url = 'https://api.coingecko.com/api/v3/coins/markets?' . $ids . 'vs_currency=' . $currency . '&order=' . $param['order'] . '&per_page=' . $param['per_page'] . '&page=' . $param['page'] . '&sparkline=true&price_change_percentage=1h%2C24h%2C7d';
$market_url = 'https://api.coingecko.com/api/v3/coins/markets?' . $ids . 'vs_currency=' . $currency . '&order=' . $param['order'] . '&page=' . $param['page'] . '&sparkline=true&price_change_percentage=1h%2C24h%2C7d';
$url = wp_remote_request( $market_url );
$body = wp_remote_retrieve_body( $url );
$data = json_decode( $body );
if ( isset( $data->status->error_code ) && ! empty( $data->status->error_code ) ) {
// echo $data->status->error_code;
$data = get_transient( 'ep-bitcoin' );
// $dataset = array(
// "apiErrors" => true,
// "data" => isset($data->status->error_message) ? $data->status->error_message : 'API Errors.'
// );
// echo json_encode($dataset);
// wp_die();
// print_r($data->status->error_code);
// echo 'API Errors - ' . $market_url;
}
$resultArray = [];
if ( count( $data ) > 0 ) {
set_transient( 'ep-bitcoin', $data, apply_filters( 'element-pack/bitcoin/cached-time', HOUR_IN_SECONDS ) );
foreach ( $data as $row ) {
$resultArray[] = [
'id' => $row->id,
'current_price' => $row->current_price,
];
}
}
echo count( $resultArray ) > 0 ? json_encode( $resultArray ) : null;
wp_die();
} catch (Exception $e) {
echo wp_kses_post( $e->getMessage() );
wp_die();
}
}
}
if ( ! function_exists( 'element_pack_render_mini_cart_item' ) ) {
function element_pack_render_mini_cart_item( $cart_item_key, $cart_item ) {
$_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );
$is_product_visible = ( $_product && $_product->exists() && $cart_item['quantity'] > 0 && apply_filters( 'woocommerce_widget_cart_item_visible', true, $cart_item, $cart_item_key ) );
if ( ! $is_product_visible ) {
return;
}
$product_id = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key );
$product_price = apply_filters( 'woocommerce_cart_item_price', WC()->cart->get_product_price( $_product ), $cart_item, $cart_item_key );
$item_permalink = apply_filters( 'woocommerce_cart_item_permalink', $_product->is_visible() ? $_product->get_permalink( $cart_item ) : '', $cart_item, $cart_item_key );
?>
<div
class="bdt-mini-cart-product-item bdt-flex bdt-flex-middle <?php echo esc_attr( apply_filters( 'woocommerce_cart_item_class', 'cart_item', $cart_item, $cart_item_key ) ); ?>">
<div class="bdt-mini-cart-product-thumbnail">
<?php
$thumbnail = apply_filters( 'woocommerce_cart_item_thumbnail', $_product->get_image(), $cart_item, $cart_item_key );
if ( ! $item_permalink ) {
echo wp_kses_post( $thumbnail );
} else {
printf( '<a href="%s">%s</a>', esc_url( $item_permalink ), wp_kses_post( $thumbnail ) );
}
?>
</div>
<div class="bdt-margin-small-left">
<div class="bdt-mini-cart-product-name bdt-margin-small-bottom">
<?php
if ( ! $item_permalink ) {
echo wp_kses_post( apply_filters( 'woocommerce_cart_item_name', $_product->get_name(), $cart_item, $cart_item_key ) . ' ' );
} else {
echo wp_kses_post( apply_filters( 'woocommerce_cart_item_name', sprintf( '<a href="%s">%s</a>', esc_url( $item_permalink ), $_product->get_name() ), $cart_item, $cart_item_key ) );
}
do_action( 'woocommerce_after_cart_item_name', $cart_item, $cart_item_key );
// Meta data.
echo wp_kses_post( wc_get_formatted_cart_item_data( $cart_item ) ); // PHPCS: XSS ok.
?>
</div>
<div class="bdt-mini-cart-product-price" data-title="<?php esc_attr_e( 'Price', 'bdthemes-element-pack' ); ?>">
<?php echo wp_kses_post( apply_filters( 'woocommerce_widget_cart_item_quantity', '<span class="quantity">' . sprintf( '%s × %s', $cart_item['quantity'], $product_price ) . '</span>', $cart_item, $cart_item_key ) ); ?>
</div>
</div>
<div class="bdt-mini-cart-product-remove">
<?php
echo apply_filters( 'woocommerce_cart_item_remove_link', sprintf(
'<a href="%s" aria-label="%s" data-product_id="%s" data-cart_item_key="%s" data-product_sku="%s"><svg width="14" height="14" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg" data-svg="close-icon"><line fill="none" stroke="#000" stroke-width="1.1" x1="1" y1="1" x2="13" y2="13"></line><line fill="none" stroke="#000" stroke-width="1.1" x1="13" y1="1" x2="1" y2="13"></line></svg></a>',
esc_url( wc_get_cart_remove_url( $cart_item_key ) ),
esc_html__( 'Remove this item', 'bdthemes-element-pack' ),
esc_attr( $product_id ),
esc_attr( $cart_item_key ),
esc_attr( $_product->get_sku() )
), $cart_item_key );
?>
</div>
</div>
<?php
}
function element_pack_ajax_load_query_args() {
$postSettings = $_POST['settings'];
$loadedPostIds = isset( $postSettings['loadedPostsIds'] ) ? $postSettings['loadedPostsIds'] : [];
// setmeta args
$args = [
'posts_per_page' => isset( $_POST['per_page'] ) ? $_POST['per_page'] : 3,
'post_status' => 'publish',
'suppress_filters' => false,
// 'orderby' => $postSettings['posts_orderby'],
'order' => $postSettings['posts_order'],
'ignore_sticky_posts' => true,
'paged' => isset( $_POST['paged'] ) ? $_POST['paged'] : 1,
// 'offset' => isset($_POST['offset']) ? $_POST['offset'] : 0
];
if ( isset( $postSettings['posts_orderby'] ) && $postSettings['posts_orderby'] === 'rand' ) {
$args['post__not_in'] = $loadedPostIds;
} else {
$args['orderby'] = $postSettings['posts_orderby'];
$args['offset'] = isset( $_POST['offset'] ) ? $_POST['offset'] : 0;
}
/**
* wc product args
*/
if ( class_exists( 'WooCommerce' ) ) {
$product_visibility_term_ids = wc_get_product_visibility_term_ids();
if ( isset( $postSettings['hide_out_stock'] ) && ( 'yes' === $postSettings['hide_out_stock'] ) ) {
$args['tax_query'][] = [
[
'taxonomy' => 'product_visibility',
'field' => 'term_taxonomy_id',
'terms' => $product_visibility_term_ids['outofstock'],
'operator' => 'NOT IN',
],
];
}
}
/**
* set feature image
*
*/
if ( isset( $postSettings['posts_only_with_featured_image'] ) && $postSettings['posts_only_with_featured_image'] === 'yes' ) {
$args['meta_query'] = [
[
'key' => '_thumbnail_id',
'compare' => 'EXISTS'
]
];
}
/**
* set date query
*/
$selected_date = isset( $postSettings['posts_select_date'] ) ? $postSettings['posts_select_date'] : '';
if ( ! empty( $selected_date ) ) {
$date_query = [];
switch ( $selected_date ) {
case 'today':
$date_query['after'] = '-1 day';
break;
case 'week':
$date_query['after'] = '-1 week';
break;
case 'month':
$date_query['after'] = '-1 month';
break;
case 'quarter':
$date_query['after'] = '-3 month';
break;
case 'year':
$date_query['after'] = '-1 year';
break;
case 'exact':
$after_date = $postSettings['posts_date_after'];
if ( ! empty( $after_date ) ) {
$date_query['after'] = $after_date;
}
$before_date = $postSettings['posts_date_before'];
if ( ! empty( $before_date ) ) {
$date_query['before'] = $before_date;
}
$date_query['inclusive'] = true;
break;
}
if ( ! empty( $date_query ) ) {
$args['date_query'] = $date_query;
}
}
$exclude_by = isset( $posts_exclude_by ) ? $posts_exclude_by : [];
$include_by = isset( $posts_include_by ) ? $posts_include_by : [];
$include_users = [];
$exclude_users = [];
/**
* ignore sticky post
*/
if ( ! empty( $exclude_by ) && $postSettings['posts_source'] === 'post' && $postSettings['posts_ignore_sticky_posts'] === 'yes' ) {
$args['ignore_sticky_posts'] = true;
if ( in_array( 'current_post', $exclude_by ) ) {
$args['post__not_in'] = [ get_the_ID() ];
}
}
/**
* set post type
*/
if ( $postSettings['posts_source'] === 'manual_selection' ) {
/**
* Set Including Manually
*/
$selected_ids = $postSettings['posts_selected_ids'];
$selected_ids = wp_parse_id_list( $selected_ids );
$args['post_type'] = 'any';
if ( ! empty( $selected_ids ) ) {
$args['post__in'] = $selected_ids;
}
$args['ignore_sticky_posts'] = 1;
} elseif ( 'current_query' === $postSettings['posts_source'] ) {
/**
* Make Current Query
*/
$args = $GLOBALS['wp_query']->query_vars;
// unset($args['paged']);
$args['paged'] = isset( $_POST['paged'] ) ? $_POST['paged'] : 1;
$args['offset'] = isset( $_POST['offset'] ) ? $_POST['offset'] : 0;
$args = apply_filters( 'element_pack/query/get_query_args/current_query', $args );
} elseif ( '_related_post_type' === $postSettings['posts_source'] ) {
/**
* Set Related Query
*/
$post_id = get_queried_object_id();
$related_post_id = is_singular() && ( 0 !== $post_id ) ? $post_id : null;
$args['post_type'] = get_post_type( $related_post_id );
if ( in_array( 'authors', $include_by ) ) {
$args['author__in'] = wp_parse_id_list( $postSettings['posts_include_author_ids'] );
} else {
$args['author__in'] = get_post_field( 'post_author', $related_post_id );
}
if ( in_array( 'authors', $exclude_by ) ) {
$args['author__not_in'] = wp_parse_id_list( $postSettings['posts_exclude_author_ids'] );
}
if ( in_array( 'current_post', $exclude_by ) ) {
$args['post__not_in'] = [ get_the_ID() ];
}
$args['ignore_sticky_posts'] = 1;
$args = apply_filters( 'element_pack/query/get_query_args/related_query', $args );
} else {
$args['post_type'] = $postSettings['posts_source'];
$current_post = [];
/**
* Set Taxonomy && Set Authors
*/
$include_terms = [];
$exclude_terms = [];
$terms_query = [];
if ( ! empty( $exclude_by ) ) {
if ( in_array( 'authors', $exclude_by ) ) {
$exclude_users = wp_parse_id_list( $postSettings['posts_exclude_author_ids'] );
$include_users = array_diff( $include_users, $exclude_users );
}
if ( ! empty( $exclude_users ) ) {
$args['author__not_in'] = $exclude_users;
;
}
if ( in_array( 'current_post', $exclude_by ) && is_singular() ) {
$current_post[] = get_the_ID();
}
if ( in_array( 'manual_selection', $exclude_by ) ) {
$exclude_ids = $postSettings['posts_exclude_ids'];
$args['post__not_in'] = array_merge( $current_post, wp_parse_id_list( $exclude_ids ) );
}
if ( in_array( 'terms', $exclude_by ) ) {
$exclude_terms = wp_parse_id_list( $postSettings['posts_exclude_term_ids'] );
$include_terms = array_diff( $include_terms, $exclude_terms );
}
if ( ! empty( $exclude_terms ) ) {
$tax_terms_map = element_pack_ajax_load_map_group_control_query( $exclude_terms );
foreach ( $tax_terms_map as $tax => $terms ) {
$terms_query[] = [
'taxonomy' => $tax,
'field' => 'term_id',
'terms' => $terms,
'operator' => 'NOT IN',
];
}
}
}
if ( ! empty( $include_terms ) ) {
if ( in_array( 'authors', $include_by ) ) {
$include_users = wp_parse_id_list( $postSettings['posts_include_author_ids'] );
}
if ( ! empty( $include_users ) ) {
$args['author__in'] = $include_users;
}
if ( in_array( 'terms', $include_by ) ) {
$include_terms = wp_parse_id_list( $postSettings['posts_include_term_ids'] );
}
$tax_terms_map = element_pack_ajax_load_map_group_control_query( $include_terms );
foreach ( $tax_terms_map as $tax => $terms ) {
$terms_query[] = [
'taxonomy' => $tax,
'field' => 'term_id',
'terms' => $terms,
'operator' => 'IN',
];
}
}
if ( ! empty( $terms_query ) ) {
$args['tax_query'] = $terms_query;
$args['tax_query']['relation'] = 'AND';
}
}
$ajaxposts = new \WP_Query( $args );
if ( $postSettings['posts_orderby'] == 'rand' ) {
if ( $ajaxposts->have_posts() ) {
shuffle( $ajaxposts->posts );
}
}
return $ajaxposts;
}
function element_pack_ajax_load_map_group_control_query( $term_ids = [] ) {
$terms = get_terms(
[
'term_taxonomy_id' => $term_ids,
'hide_empty' => false,
]
);
$tax_terms_map = [];
foreach ( $terms as $term ) {
$taxonomy = $term->taxonomy;
$tax_terms_map[ $taxonomy ][] = $term->term_id;
}
return $tax_terms_map;
}
}
// Start: Add to cart quantity buttons conversion
if ( ! function_exists( 'ep_display_quantity_minus' ) ) {
function ep_display_quantity_minus() {
if ( ! is_product() ) return;
echo '<button type="button" class="bdt-add-to-cart-qty-minus" ><i class="ep-icon-minus-3"></i></button>';
}
}
if ( ! function_exists( 'ep_display_quantity_plus' ) ) {
function ep_display_quantity_plus() {
if ( ! is_product() ) return;
echo '<button type="button" class="bdt-add-to-cart-qty-plus" ><i class="ep-icon-plus-3"></i></button>';
}
}
if ( ! function_exists( 'ep_add_cart_quantity_plus_minus' ) ) {
function ep_add_cart_quantity_plus_minus() {
echo '<style>
input[type="number"]::-webkit-outer-spin-button,
input[type="number"]::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
input[type="number"] {
-moz-appearance: textfield; /* Firefox */
}
</style>';
wc_enqueue_js( "
$(document).off('click.bdtQtyHandler'); // Remove previous handler
$(document).on('click.bdtQtyHandler', 'button.bdt-add-to-cart-qty-plus, button.bdt-add-to-cart-qty-minus', function(e) {
e.preventDefault();
var qty = $(this).closest('form.cart').find('.qty');
var val = parseFloat(qty.val()) || 0;
var max = parseFloat(qty.attr('max')) || Infinity;
var min = parseFloat(qty.attr('min')) || 0;
var step = parseFloat(qty.attr( 'step' ));
if ($(this).is('.bdt-add-to-cart-qty-plus')) {
qty.val(Math.min(val + step, max)).trigger('change');
} else {
qty.val(Math.max(val - step, min)).trigger('change');
}
});
");
}
}
if ( ! function_exists( 'ep_setup_quantity_buttons' ) ) {
function ep_setup_quantity_buttons() {
if ( function_exists( 'is_product' ) ) {
// Remove the default version
remove_all_actions( 'woocommerce_before_quantity_input_field' );
remove_all_actions( 'woocommerce_after_quantity_input_field' );
remove_all_actions( 'woocommerce_before_single_product' );
// Add our version
add_action( 'woocommerce_before_quantity_input_field', 'ep_display_quantity_minus' );
add_action( 'woocommerce_after_quantity_input_field', 'ep_display_quantity_plus' );
add_action( 'woocommerce_after_single_product', 'ep_add_cart_quantity_plus_minus' );
}
}
}
//add_action( 'template_redirect', 'ep_setup_quantity_buttons' );
// End: Add to cart quantity buttons conversion
// Start: Custom CSS/JS Frontend Injection Functions
if ( ! function_exists( 'ep_inject_header_custom_code' ) ) {
function ep_inject_header_custom_code() {
if ( ep_is_page_excluded() ) {
return;
}
$custom_css = get_option( 'ep_custom_css', '' );
$custom_js = get_option( 'ep_custom_js', '' );
if ( ! empty( $custom_css ) ) {
echo "\n<!-- Element Pack Custom Header CSS -->\n";
echo '<style type="text/css">' . "\n";
echo $custom_css . "\n";
echo '</style>' . "\n";
}
if ( ! empty( $custom_js ) ) {
echo "\n<!-- Element Pack Custom Header JS -->\n";
echo '<script type="text/javascript">' . "\n";
echo $custom_js . "\n";
echo '</script>' . "\n";
}
}
}
if ( ! function_exists( 'ep_inject_footer_custom_code' ) ) {
function ep_inject_footer_custom_code() {
if ( ep_is_page_excluded() ) {
return;
}
$custom_css_2 = get_option( 'ep_custom_css_2', '' );
$custom_js_2 = get_option( 'ep_custom_js_2', '' );
if ( ! empty( $custom_css_2 ) ) {
echo "\n<!-- Element Pack Custom Footer CSS -->\n";
echo '<style type="text/css">' . "\n";
echo $custom_css_2 . "\n";
echo '</style>' . "\n";
}
if ( ! empty( $custom_js_2 ) ) {
echo "\n<!-- Element Pack Custom Footer JS -->\n";
echo '<script type="text/javascript">' . "\n";
echo $custom_js_2 . "\n";
echo '</script>' . "\n";
}
}
}
if ( ! function_exists( 'ep_is_page_excluded' ) ) {
function ep_is_page_excluded() {
$excluded_pages = get_option( 'ep_excluded_pages', array() );
if ( empty( $excluded_pages ) || ! is_array( $excluded_pages ) ) {
return false;
}
$current_id = 0;
if ( is_home() && ! is_front_page() ) {
$current_id = get_option( 'page_for_posts' );
} elseif ( is_front_page() ) {
$current_id = get_option( 'page_on_front' );
} elseif ( is_singular() ) {
$current_id = get_queried_object_id();
} elseif ( is_category() || is_tag() || is_tax() ) {
return false;
} elseif ( is_author() ) {
return false;
} elseif ( is_archive() ) {
return false;
} else {
$current_id = get_queried_object_id();
}
$current_id = (int) $current_id;
$excluded_pages = array_map( 'intval', $excluded_pages );
return $current_id > 0 && in_array( $current_id, $excluded_pages );
}
}
/**
* Check if current site is the main site in a multisite installation
*
* @return bool
*/
if ( ! function_exists( 'ep_is_main_site' ) ) {
function ep_is_main_site() {
if ( ! is_multisite() ) {
return true;
}
$multisite_info = \ElementPack\Base\Element_Pack_Base::get_multisite_info();
return ( $multisite_info['current_site_url'] === $multisite_info['main_site_url'] );
}
}
/**
* Get all subsites in a multisite installation
*
* @return array
*/
if ( ! function_exists( 'ep_get_subsites' ) ) {
function ep_get_subsites() {
if ( ! is_multisite() ) {
return array();
}
$sites = get_sites( array( 'number' => 1000 ) );
$main_site_url = network_site_url();
$subsites = array();
foreach ( $sites as $site ) {
$site_url = get_site_url( $site->blog_id );
if ( $site_url !== $main_site_url ) {
$subsites[] = array(
'id' => $site->blog_id,
'name' => $site->blogname,
'url' => $site_url,
'domain' => $site->domain,
'path' => $site->path
);
}
}
return $subsites;
}
}
/**
* Get subsite activation source
*
* @param int $site_id
* @return string
*/
if ( ! function_exists( 'ep_get_subsite_activation_source' ) ) {
function ep_get_subsite_activation_source($site_id) {
if ( ! is_multisite() ) {
return '';
}
// Switch to the subsite context
switch_to_blog($site_id);
// Check if there's a flag indicating activation source
$activation_source = get_option('element_pack_activation_source', 'manual');
// Restore to main site
restore_current_blog();
return $activation_source;
}
}
// End: Custom CSS/JS Frontend Injection Functions