File "helper.php"
Full path: /home/kosmetik/public_html/wp-content/plugins/anywhere-elementor-pro.2.15.5/includes/helper.php
File
size: 50.3 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?php
namespace Aepro;
use WP_Query;
use Elementor\Group_Control_Border;
use Elementor\Controls_Manager;
use Elementor\Group_Control_Box_Shadow;
use ElementorPro\Modules\ThemeBuilder\Module as EProModule;
use function is_array;
class Helper{
function get_rule_post_types( $output = 'object'){
$final_post_types = array();
$all_post_types = get_post_types(array('public' => true), $output);
$skip_post_types = array(
'attachment',
'ae_global_templates',
'elementor_library'
);
if($output === 'names'){
return array_diff($all_post_types,$skip_post_types);
}
foreach($all_post_types as $name => $post_type){
if(!in_array($name,$skip_post_types)){
$final_post_types[$name] = $post_type->label;
}
}
return $final_post_types;
}
function get_post_types_with_archive(){
$ret_post_types = array();
$post_types = get_post_types(array('has_archive' => true), 'object');
$ret_post_types['post'] = 'Post Archive';
foreach($post_types as $name => $post_type){
$ret_post_types[$name] = $post_type->label.' Archive';
}
return $ret_post_types;
}
public function get_ae_acf_repeater_fields(){
$acf_fields = [];
if ( isset( $_REQUEST['post'] ) ) {
if(get_post_type($_REQUEST['post']) == 'ae_global_templates') {
$preview_post_ID = get_post_meta( $_REQUEST['post'], 'ae_preview_post_ID', true );
}elseif(get_post_type($_REQUEST['post']) == 'elementor_library' && class_exists('ElementorPro\Modules\ThemeBuilder\Module')){
$document = \ElementorPro\Modules\ThemeBuilder\Module::instance()->get_document( $_REQUEST['post'] );
if(isset($document)){
$preview_post_ID = $document->get_settings( 'preview_id' );
}else{
return $acf_fields;
}
}else{
$preview_post_ID = $_REQUEST['post'];
}
$fields = $this->ae_acf_get_field_objects( $preview_post_ID );
if ( $fields ) {
foreach ( $fields as $field_name => $field ) {
if ( $field['type'] == 'repeater' ) {
$acf_fields[ $field['name'] ] = $field['label'];
}
}
}
}
return $acf_fields ;
}
public function get_acf_option_repeater_field(){
$acf_groups = acf_get_field_groups();
$fields= [];
foreach ( $acf_groups as $acf_group ) {
foreach ( $acf_group['location'] as $locations ) {
foreach ( $locations as $location ) {
if ( $location['param'] === 'options_page' ) {
$option_fields = acf_get_fields($acf_group);
foreach ($option_fields as $opt_field) {
if ($opt_field['type'] == 'repeater') {
$fields[$opt_field['name']] = $opt_field;
}
}
}
}
}
}
return $fields;
}
public function get_acf_repeater_field(){
$groups = [];
$acf_groups = acf_get_field_groups();
foreach ( $acf_groups as $acf_group ) {
$is_on_option_page = false;
foreach ($acf_group['location'] as $locations) {
foreach ($locations as $location) {
if ($location['param'] === 'options_page') {
$is_on_option_page = true;
}
}
}
$only_on_option_page = '';
if ($is_on_option_page == true && (is_array($acf_group['location']) && 1 === count($acf_group['location']))) {
$only_on_option_page = true;
}
$fields = acf_get_fields($acf_group);
$options = [];
foreach ($fields as $field) {
if ($field['type'] == 'repeater') {
if($only_on_option_page){
$options['option' . ':' . $field['name']] = 'Option:' . $field['label'];
}else{
if ($is_on_option_page == true) {
$options['option' . ':' . $field['name']] = 'Option:' . $field['label'];
}
$options[$field['name']] = $field['label'];
}
}
}
if(!empty($options)){
$groups[] = [
'label' => $acf_group['title'],
'options' => $options,
];
}
}
return $groups;
}
function get_demo_post_data()
{
$post_data = array();
if(!isset($GLOBALS['post'])){
return $post_data;
}
$preview_post_ID = '';
if($GLOBALS['post']->post_type == 'ae_global_templates'){
$ae_post_ID = $GLOBALS['post']->ID;
$preview_post_ID = get_post_meta($ae_post_ID,'ae_preview_post_ID',true);
if ($preview_post_ID != '' && $preview_post_ID != 0):
$post_data = get_post($preview_post_ID);
else:
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => 1
);
$demo_data = get_posts( $args );
$post_data = $demo_data[0];
endif;
}elseif($GLOBALS['post']->post_type == 'elementor_library' && class_exists('ElementorPro\Modules\ThemeBuilder\Module')){
$document = \ElementorPro\Modules\ThemeBuilder\Module::instance()->get_document( $GLOBALS['post']->ID );
if ( $document ) {
$preview_id = $document->get_settings( 'preview_id' );
if ( empty( $preview_id ) ) {
$post_data = get_post(0);
return $post_data;
}
$post_data = get_post( $preview_id );
}
}else{
$post_data = $GLOBALS['post'];
}
if(empty($post_data)){
$post_data = get_post(0);
}
return $post_data;
}
function get_ae_post_templates(){
$args = array(
'post_type' => 'ae_global_templates',
'meta_key' => 'ae_render_mode',
'meta_value' => 'post_template',
'posts_per_page' => -1
);
$ret_array['global'] = esc_html__('Global','ae-pro');
$ret_array['none'] = esc_html__('None','ae-pro');
$post_templates = get_posts($args);
foreach($post_templates as $pt){
$ret_array[$pt->ID] = $pt->post_title;
}
return $ret_array;
}
function get_ae_product_templates(){
$args = array(
'post_type' => 'ae_global_templates',
'meta_key' => 'ae_render_mode',
'meta_value' => 'wc_product_single'
);
$ret_array[''] = esc_html__('Default','ae-pro');
$post_templates = get_posts($args);
foreach($post_templates as $pt){
$ret_array[$pt->ID] = $pt->post_title;
}
return $ret_array;
}
function get_ae_active_archive_template(){
if(is_date()){
$args = array(
'post_type' => 'ae_global_templates',
'meta_query' => array(
array(
'key' => 'ae_render_mode',
'value' => 'date_template',
'compare' => '='
)
)
);
$date_template = new WP_Query($args);
if($date_template->found_posts){
$date_template->the_post();
$date_template = get_the_ID();
}else{
wp_reset_postdata();
return false;
}
wp_reset_postdata();
$date_template = apply_filters('ae_template_filter', $date_template);
return $date_template;
}
$helper = new Helper();
$is_blog = $helper->is_blog();
// Check if post type archive
if(is_post_type_archive() || $is_blog){
if($is_blog){
$post_type = 'post';
}else{
$query = get_queried_object();
$post_type = $query->name;
}
if($post_type == 'product'){
//return false;
}
// apply template for post type archive
$args = array(
'post_type' => 'ae_global_templates',
'meta_query' => array(
array(
'key' => 'ae_render_mode',
'value' => 'post_type_archive_template',
'compare' => '='
),
array(
'key' => 'ae_rule_post_type_archive',
'value' => $post_type,
'compare' => '='
)
)
);
$templates = new WP_Query($args);
if($templates->found_posts){
$templates->the_post();
$ae_tid = get_the_ID();
}else{
return false;
}
wp_reset_postdata();
$ae_tid = apply_filters('ae_template_filter', $ae_tid);
return $ae_tid;
}
// Check if it is author archive
if(is_author()){
$query = get_queried_object();
$author_id = $query->ID;
// check template for author template through author meta
$author_template = get_the_author_meta('ae_author_template',$author_id);
if(!$author_template || $author_template == 'global'){
// check global AE Template for Author Archive
$args = array(
'post_type' => 'ae_global_templates',
'meta_query' => array(
array(
'key' => 'ae_render_mode',
'value' => 'author_template',
'compare' => '='
),
array(
'key' => 'ae_apply_global',
'value' => 'true',
'compare' => '='
)
)
);
$author_template = new WP_Query($args);
if($author_template->found_posts){
$author_template->the_post();
$author_template = get_the_ID();
}else{
wp_reset_postdata();
return false;
}
wp_reset_postdata();
}
$author_template = apply_filters('ae_template_filter', $author_template);
return $author_template;
}
// Not post type archive -- It can be taxonomy archive
$query = get_queried_object();
if(is_category()){
$taxonomy = 'category';
}elseif(is_tag()){
$taxonomy = 'post_tag';
}elseif(is_tax()){
$query = get_queried_object();
$taxonomy = $query->taxonomy;
}
// Todo:: add term level template implementation
// get term template
$term_id = $query->term_id;
$ae_tid = get_term_meta($term_id,'ae_term_template',true);
if((empty($ae_tid) || $ae_tid == 'global') && !empty($taxonomy)){
// apply global template for taxonomy archive
$args = array(
'post_type' => 'ae_global_templates',
'meta_query' => array(
array(
'key' => 'ae_render_mode',
'value' => 'archive_template',
'compare' => '='
),
array(
'key' => 'ae_apply_global',
'value' => 'true',
'compare' => '='
),
array(
'key' => 'ae_rule_taxonomy',
'value' => $taxonomy,
'compare' => '='
)
)
);
$templates = new WP_Query($args);
if($templates->found_posts){
$templates->the_post();
$ae_tid = get_the_ID();
}else{
return false;
}
wp_reset_postdata();
}
$ae_tid = apply_filters('ae_template_filter', $ae_tid);
if($ae_tid == 'none'){
return false;
}
return $ae_tid;
}
function get_ae_active_post_template($post_id,$post_type){
$ae_post_template = get_post_meta($post_id, 'ae_post_template', true);
if(isset($ae_post_template) && $ae_post_template == 'none'){
return false;
}
if(!isset($ae_post_template) || empty($ae_post_template) || $ae_post_template == 'global'){
// apply global template
$args = array(
'post_type' => 'ae_global_templates',
'meta_query' => array(
array(
'key' => 'ae_render_mode',
'value' => 'post_template',
'compare' => '='
),
array(
'key' => 'ae_apply_global',
'value' => 'true',
'compare' => '='
),
array(
'key' => 'ae_rule_post_type',
'value' => $post_type,
'compare' => '='
)
)
);
$templates = new WP_Query($args);
if($templates->found_posts){
$templates->the_post();
$ae_tid = get_the_ID();
}else{
return false;
}
wp_reset_postdata();
}else{
// set individual post template
$ae_tid = $ae_post_template;
}
$ae_tid = apply_filters('ae_template_filter', $ae_tid);
return $ae_tid;
}
function get_ae_woo_product_data(){
if($GLOBALS['post']->post_type == 'ae_global_templates'){
$ae_woo_ID = $GLOBALS['post']->ID;
$preview_woo_ID = get_post_meta($ae_woo_ID,'ae_preview_post_ID',true);
if ($preview_woo_ID != ''):
$product_data = wc_get_product($preview_woo_ID);
else:
// Todo:: Get product from template meta field if available
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => 1
);
$preview_data = get_posts( $args );
$product_data = wc_get_product($preview_data[0]->ID);
endif;
}else{
global $product;
$product_data = $product;
}
return $product_data;
}
function ae_get_intermediate_image_sizes(){
global $_wp_additional_image_sizes;
$default_image_sizes = [ 'thumbnail', 'medium', 'medium_large', 'large', 'full' ];
$image_options = array();
foreach ( $default_image_sizes as $size ) {
$image_sizes[ $size ] = [
'width' => (int) get_option( $size . '_size_w' ),
'height' => (int) get_option( $size . '_size_h' ),
'crop' => (bool) get_option( $size . '_crop' ),
];
}
if ( $_wp_additional_image_sizes ) {
$image_sizes = array_merge( $image_sizes, $_wp_additional_image_sizes );
}
foreach($image_sizes as $size => $image_size){
$image_options[$size] = ($size).' '.$image_size['width'].' x '.$image_size['height'];
}
return $image_options;
}
function ae_get_intermediate_image_sizes_for_acf_photo_gallery(){
global $_wp_additional_image_sizes;
$default_image_sizes = [ 'thumbnail', 'medium', 'medium_large', 'large', 'full' ];
$image_options = array();
foreach ( $default_image_sizes as $size ) {
$image_sizes[ $size ] = [
'width' => (int) get_option( $size . '_size_w' ),
'height' => (int) get_option( $size . '_size_h' ),
'crop' => (bool) get_option( $size . '_crop' ),
];
}
if ( $_wp_additional_image_sizes ) {
$image_sizes = array_merge( $image_sizes, $_wp_additional_image_sizes );
}
foreach($image_sizes as $size => $image_size){
$image_options[$size] = ($size);
}
return $image_options;
}
function get_ae_render_mode_hook(){
$render_modes = apply_filters('ae_pro_filter_hook_render_mode', array(
'normal' => 'Normal',
'post_template' => 'Post Template',
'archive_template' => 'Taxonomy Archive Template',
'post_type_archive_template' => 'Post Type Archive Template',
'block_layout' => __('Block Layout','ae-pro'),
'404' => __('404 Template','ae-pro'),
'search' => __('Search Template', 'ae-pro'),
'author_template' => __('Author Archive', 'ae-pro'),
'date_template' => __('Date Archive', 'ae-pro')
));
if(class_exists('acf')){
$render_modes['acf_repeater_layout'] = __('ACF Repeater Block', 'ae-pro');
}
return $render_modes;
}
function ae_get_post_css(){
if(!is_single() && !is_page()){
return '';
}
$post = $this->get_demo_post_data();
$css = '';
$image_sizes = $this->ae_get_intermediate_image_sizes();
foreach($image_sizes as $image_size => $size_data){
$img_src = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID),$image_size);
if(is_array($img_src)) {
$css .= '.ae-featured-bg-source-post.ae-featured-img-size-' . $image_size . '{ background-image:url(' . $img_src[0] . '); }';
}
}
return $css;
}
function ae_get_cf_image_css(){
if(!is_single() && !is_page()){
return '';
}
$post = $this->get_demo_post_data();
$css = '';
//if(isset($post->ID) && !$post->ID){
// return '';
//}
$fields = $this->ae_acf_get_field_objects($post->ID);
$acf_field = [];
if( $fields )
{
foreach( $fields as $field_name => $field )
{
if($field['type'] == 'image'){
$acf_field[] = $field;
}
}
}
$image_sizes = $this->ae_get_intermediate_image_sizes();
if(is_array($acf_field) && count($acf_field)) {
foreach ($acf_field as $acff) {
foreach ($image_sizes as $image_size => $size_data) {
$img_src = wp_get_attachment_image_src($acff['value'], $image_size);
if(is_array($img_src)) {
$css .= '.ae-featured-bg-source-custom_field.ae-feature-bg-custom-field-' . $acff['name'] . '.ae-featured-img-size-' . $image_size . '{ background-image:url(' . $img_src[0] . '); }';
}
}
}
}
return $css;
}
function ae_get_term_cf_image_css(){
if(!is_single() && !is_page()){
return '';
}
$term = $this->get_preview_term_data();
$css = '';
if(empty($term) || !$term['prev_term_id']){
return '';
}
$fields = get_field_objects('term_'.$term['prev_term_id']);
$acf_field = [];
if( $fields )
{
foreach( $fields as $field_name => $field )
{
if($field['type'] == 'image'){
$acf_field[] = $field;
}
}
}
$image_sizes = $this->ae_get_intermediate_image_sizes();
if(is_array($acf_field) && count($acf_field)) {
foreach ($acf_field as $acff) {
foreach ($image_sizes as $image_size => $size_data) {
$img_src = wp_get_attachment_image_src($acff['value'], $image_size);
if(is_array($img_src)) {
$css .= '.ae-featured-bg-source-term_custom_field.ae-feature-bg-custom-field-' . $acff['name'] . '.ae-featured-img-size-' . $image_size . '{ background-image:url(' . $img_src[0] . '); }';
}
}
}
}
return $css;
}
function ae_get_custom_taxonomies(){
$args = array(
'public' => true,
'_builtin' => false
);
$tax_array = array();
$taxonomies = get_taxonomies($args,'objects');
if(is_array($taxonomies) && count($taxonomies)){
foreach($taxonomies as $slug => $taxonomy){
$tax_array[$slug] = $taxonomy->labels->name;
}
}
return $tax_array;
}
function get_rules_taxonomies(){
$args = array(
'public' => true
);
$tax_array = array();
$taxonomies = get_taxonomies($args,'objects');
if(is_array($taxonomies) && count($taxonomies)){
foreach($taxonomies as $slug => $taxonomy){
$tax_array[$slug] = $taxonomy->labels->name;
}
}
return $tax_array;
}
function ae_get_date_format(){
$date_format = array(
'F j, Y g:i a' => date('F j, Y g:i a'),
'F j, Y' => date( 'F j, Y' ),
'F, Y' => date( 'F, Y' ),
'g:i a' => date( 'g:i a' ),
'g:i:s a' => date( 'g:i:s a' ),
'l, F jS, Y' => date( 'l, F jS, Y' ),
'M j, Y @ G:i' => date( 'M j, Y @ G:i' ),
'Y/m/d \a\t g:i A' => date( 'Y/m/d \a\t g:i A' ),
'Y/m/d \a\t g:ia' => date( 'Y/m/d \a\t g:ia' ),
'Y/m/d g:i:s A' => date( 'Y/m/d g:i:s A' ),
'Y/m/d' => date( 'Y/m/d' ),
'Y-m-d \a\t g:i A' => date( 'Y-m-d \a\t g:i A' ),
'Y-m-d \a\t g:ia' => date( 'Y-m-d \a\t g:ia' ),
'Y-m-d g:i:s A' => date( 'Y-m-d g:i:s A' ),
'Y-m-d' => date( 'Y-m-d' ),
'custom' => __( 'Custom', 'ae-pro' )
);
return $date_format;
}
function get_previous_post_id( $post_id ) {
// Get a global post reference since get_adjacent_post() references it
global $post;
// Store the existing post object for later so we don't lose it
$oldGlobal = $post;
// Get the post object for the specified post and place it in the global variable
$post = get_post( $post_id );
// Get the post object for the previous post
$previous_post = get_previous_post();
// Reset our global object
$post = $oldGlobal;
if ( '' == $previous_post )
return false;
return $previous_post->ID;
}
function get_next_post_id( $post_id ) {
// Get a global post reference since get_adjacent_post() references it
global $post;
// Store the existing post object for later so we don't lose it
$oldGlobal = $post;
// Get the post object for the specified post and place it in the global variable
$post = get_post( $post_id );
// Get the post object for the next post
$next_post = get_next_post();
// Reset our global object
$post = $oldGlobal;
if ( '' == $next_post )
return false;
return $next_post->ID;
}
function get_woo_registered_tabs($output = ''){
global $product;
if(!is_object($product)) {
$product = wc_get_product(get_the_ID());
}
$registered_tabs = [];
$tabs = apply_filters( 'woocommerce_product_tabs', array() );
if($output == 'full'){
return $tabs;
}
foreach($tabs as $tab_key => $tab){
$registered_tabs[$tab_key] = $tab['title'];
}
return $registered_tabs;
}
function get_woo_archive_template(){
if(function_exists('is_shop')){
if(is_shop() || is_tax('product_cat')){
$args = array(
'post_type' => 'ae_global_templates',
'meta_query' => array(
array(
'key' => 'ae_render_mode',
'value' => 'post_type_archive_template',
'compare' => '='
),
array(
'key' => 'ae_rule_post_type_archive',
'value' => 'product',
'compare' => '='
)
)
);
$templates = new WP_Query($args);
if($templates->found_posts){
$templates->the_post();
$ae_tid = get_the_ID();
}else{
return false;
}
wp_reset_postdata();
return $ae_tid;
}
}
return false;
}
function ae_block_layouts()
{
$block_layouts = [];
$ae_id = [];
if(isset($_GET['post'])) {
$ae_id = array($_GET['post']);
}
$templates = get_posts([
'numberposts' => -1,
'post_type' => 'ae_global_templates',
'meta_key' => 'ae_render_mode',
'meta_value' => 'block_layout',
'post__not_in' => $ae_id
]);
if(is_array($templates) && count($templates)){
foreach($templates as $template){
$block_layouts[$template->ID] = $template->post_title;
}
}
return $block_layouts;
}
function has_404_template(){
$args = array(
'post_type' => 'ae_global_templates',
'meta_query' => array(
array(
'key' => 'ae_render_mode',
'value' => '404',
'compare' => '='
)
)
);
$templates = new WP_Query($args);
if($templates->found_posts){
$templates->the_post();
$ae_tid = get_the_ID();
wp_reset_postdata();
return $ae_tid;
}else{
return false;
}
}
function has_search_template(){
$args = array(
'post_type' => 'ae_global_templates',
'meta_query' => array(
array(
'key' => 'ae_render_mode',
'value' => 'search',
'compare' => '='
)
)
);
$templates = new WP_Query($args);
if($templates->found_posts){
$templates->the_post();
$ae_tid = get_the_ID();
wp_reset_postdata();
return $ae_tid;
}else{
return false;
}
}
function ae_acf_repeater_layouts()
{
$block_layouts = [];
$ae_id = [];
if(isset($_GET['post'])) {
$ae_id = array($_GET['post']);
}
$templates = get_posts([
'numberposts' => -1,
'post_type' => 'ae_global_templates',
'meta_key' => 'ae_render_mode',
'meta_value' => 'acf_repeater_layout',
'post__not_in' => $ae_id
]);
if(is_array($templates) && count($templates)){
foreach($templates as $template){
$block_layouts[$template->ID] = $template->post_title;
}
}
return $block_layouts;
}
function is_blog(){
if ( is_front_page() && is_home() ) {
//echo "Default homepage";
return true;
} elseif ( is_front_page() ) {
return false;
} elseif ( is_home() ) {
return true;
} else {
return false;
}
}
function is_canvas_enabled($tid){
$template = get_post_meta($tid,'ae_elementor_template', true);
if($template == 'ec'){
return true;
}
return false;
}
function is_heder_footer_enabled($tid){
$template = get_post_meta($tid,'ae_elementor_template', true);
if($template == 'ehf'){
return true;
}
return false;
}
function is_full_override($tid){
$full_override = get_post_meta($tid,'ae_full_override',true);
if($full_override){
return true;
}
return false;
}
function get_saved_preview_post(){
$options[] = __(' -- Select Post -- ');
if(isset($_GET['post'])){
$prev_post_id = get_post_meta($_GET['post'],'ae_preview_post_ID',true);
if($prev_post_id){
$prev_post = get_post($prev_post_id);
$options[ $prev_post->ID ] = $prev_post->post_title;
}
}
return $options;
}
function get_saved_preview_term(){
$options[] = __(' -- Select Term --');
if(isset($_GET['post'])){
$prev_term_id = get_post_meta($_GET['post'],'ae_preview_term',true);
$taxonomy = get_post_meta($_GET['post'],'ae_rule_taxonomy',true);
if($prev_term_id){
$prev_term = get_term_by('id',$prev_term_id,$taxonomy);
$options[$prev_term->term_id] = $prev_term->name;
}
}
return $options;
}
function get_preview_term_data(){
$term_data = [
'prev_term_id' => '',
'taxonomy' => ''
];
if($GLOBALS['post']->post_type == 'ae_global_templates'){
$ae_template_id = $GLOBALS['post']->ID;
$term_data['prev_term_id'] = get_post_meta($ae_template_id,'ae_preview_term',true);
$term_data['taxonomy'] = get_post_meta($ae_template_id,'ae_rule_taxonomy',true);
}elseif(is_category() || is_tag() || is_tax()){
$queried_object = get_queried_object();
$term_data['prev_term_id'] = $queried_object->term_id;
$term_data['taxonomy'] = $queried_object->taxonomy;
}
return $term_data;
}
function get_preview_author_data(){
$author_data = [
'prev_author_id' => ''
];
if($GLOBALS['post']->post_type == 'ae_global_templates'){
$ae_template_id = $GLOBALS['post']->ID;
$author_data['prev_author_id'] = get_post_meta($ae_template_id,'ae_preview_author',true);
}else{
if (is_author()){
$author = get_queried_object();
$author_data['prev_author_id'] = $author->ID;
}
}
return $author_data;
}
function get_taxonomy_templates(){
$ae_tax_templates = [];
$args = array(
'post_type' => 'ae_global_templates',
'meta_key' => 'ae_render_mode',
'meta_value' => 'archive_template',
'posts_per_page' => -1
);
$templates = get_posts($args);
if(is_array($templates) && count($templates)){
foreach($templates as $template){
// get assigned taxonomy
$taxonomy = get_post_meta($template->ID,'ae_rule_taxonomy',true);
$ae_tax_templates[$taxonomy][$template->ID] = $template->post_title;
}
}
return $ae_tax_templates;
}
function box_model_controls($widget, $args){
$defaults = [
'border' => true,
'border-radius' => true,
'margin' => true,
'padding' => true,
'box-shadow' => true
];
$args = wp_parse_args( $args, $defaults );
if($args['border']){
$widget->add_group_control(
Group_Control_Border::get_type(),
[
'name' => $args['name'].'_border',
'label' => __( $args['label'].' Border', 'ae-pro' ),
'selector' => $args['selector'],
]
);
}
if($args['border-radius']) {
$widget->add_control(
$args['name'] . '_border_radius',
[
'label' => __('Border Radius', 'ae-pro'),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => ['px', '%'],
'selectors' => [
$args['selector'] => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
],
]
);
}
if($args['box-shadow']){
$widget->add_group_control(
Group_Control_Box_Shadow::get_type(),
[
'name' => $args['name'].'_box_shadow',
'label' => __( 'Box Shadow', 'ae-pro' ),
'selector' => $args['selector'],
]
);
}
if($args['padding']) {
$widget->add_control(
$args['name'] . '_padding',
[
'label' => __('Padding', 'ae-pro'),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => ['px', '%'],
'selectors' => [
$args['selector'] => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
],
]
);
}
if($args['margin']){
$widget->add_control(
$args['name'].'_margin',
[
'label' => __( 'Margin', 'ae-pro' ),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => [ 'px', '%' ],
'selectors' => [
$args['selector'] => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
],
]
);
}
}
public function get_current_url(){
global $wp;
// get current url with query string.
$current_url = home_url( $wp->request );
// get the position where '/page.. ' text start.
$pos = strpos($current_url , '/page');
if($pos === false){
$finalurl = substr($current_url,0,$pos);
}else{
$finalurl = $current_url;
}
echo $finalurl;
}
public function get_author_list(){
$users = get_users();
foreach ($users as $user){
$author_list[$user->ID] = $user->data->display_name.' ('.$user->data->user_login.')';
}
return $author_list;
}
public function get_acf_repeater_name(){
if($GLOBALS['post']->post_type == 'ae_global_templates') {
$ae_acf_repeater_layout_id = $GLOBALS['post']->ID;
$ae_acf_repeater_name = get_post_meta($ae_acf_repeater_layout_id, 'ae_acf_repeater_name', true);
return $ae_acf_repeater_name;
}
}
public function is_repeater_block_layout(){
$repeater_data = [];
$doc = \Elementor\Plugin::$instance->documents->get_current();
if(!isset($doc) || is_null($doc)){
$repeater_data['is_repeater'] = false;
return $repeater_data;
}
$doc_post = $doc->get_post();
if($doc_post->post_type == 'revision'){
$doc_post = get_post($doc_post->post_parent);
}
$render_mode = get_post_meta($doc_post->ID, 'ae_render_mode', true);
if($GLOBALS['post']->ID == $doc_post->ID && $render_mode == 'acf_repeater_layout'){
$repeater_data['is_repeater'] = true;
$repeater_data['field'] = get_post_meta($doc_post->ID, 'ae_acf_repeater_name', true);
}elseif($doc_post->post_type == 'ae_global_templates' && $render_mode == 'acf_repeater_layout'){
$repeater_data['is_repeater'] = true;
}else{
$repeater_data['is_repeater'] = false;
}
return $repeater_data;
}
public function paginate_links( $args = '' ) {
global $wp_query, $wp_rewrite;
// Setting up default values based on the current URL.
$pagenum_link = html_entity_decode( get_pagenum_link() );
$url_parts = explode( '?', $pagenum_link );
// Get max pages and current page out of the current query, if available.
$total = isset( $wp_query->max_num_pages ) ? $wp_query->max_num_pages : 1;
$current = get_query_var( 'paged' ) ? intval( get_query_var( 'paged' ) ) : 1;
// Append the format placeholder to the base URL.
$pagenum_link = trailingslashit( $url_parts[0] ) . '%_%';
// URL base depends on permalink settings.
$format = $wp_rewrite->using_index_permalinks() && ! strpos( $pagenum_link, 'index.php' ) ? 'index.php/' : '';
$format .= $wp_rewrite->using_permalinks() ? user_trailingslashit( $wp_rewrite->pagination_base . '/%#%', 'paged' ) : '?paged=%#%';
$defaults = array(
'base' => $pagenum_link, // http://example.com/all_posts.php%_% : %_% is replaced by format (below)
'format' => $format, // ?page=%#% : %#% is replaced by the page number
'total' => $total,
'current' => $current,
'aria_current' => 'page',
'show_all' => false,
'prev_next' => true,
'prev_text' => __( '« Previous' ),
'next_text' => __( 'Next »' ),
'end_size' => 1,
'mid_size' => 1,
'type' => 'plain',
'add_args' => array(), // array of query args to add
'add_fragment' => '',
'before_page_number' => '',
'after_page_number' => '',
);
$args = wp_parse_args( $args, $defaults );
if ( ! is_array( $args['add_args'] ) ) {
$args['add_args'] = array();
}
// Merge additional query vars found in the original URL into 'add_args' array.
if ( isset( $url_parts[1] ) ) {
// Find the format argument.
$format = explode( '?', str_replace( '%_%', $args['format'], $args['base'] ) );
$format_query = isset( $format[1] ) ? $format[1] : '';
wp_parse_str( $format_query, $format_args );
// Find the query args of the requested URL.
wp_parse_str( $url_parts[1], $url_query_args );
// Remove the format argument from the array of query arguments, to avoid overwriting custom format.
foreach ( $format_args as $format_arg => $format_arg_value ) {
unset( $url_query_args[ $format_arg ] );
}
$args['add_args'] = array_merge( $args['add_args'], urlencode_deep( $url_query_args ) );
}
// Who knows what else people pass in $args
$total = (int) $args['total'];
if ( $total < 2 ) {
return;
}
$current = (int) $args['current'];
$end_size = (int) $args['end_size']; // Out of bounds? Make it the default.
if ( $end_size < 1 ) {
$end_size = 1;
}
$mid_size = (int) $args['mid_size'];
if ( $mid_size < 0 ) {
$mid_size = 2;
}
$add_args = $args['add_args'];
$r = '';
$page_links = array();
$dots = false;
if ( $args['prev_next'] && $current && 1 < $current ) :
$link = str_replace( '%_%', 2 == $current ? '' : $args['format'], $args['base'] );
$link = str_replace( '%#%', $current - 1, $link );
if ( $add_args )
$link = add_query_arg( $add_args, $link );
$link .= $args['add_fragment'];
/**
* Filters the paginated links for the given archive pages.
*
* @since 3.0.0
*
* @param string $link The paginated link URL.
*/
$page_links[] = '<a data-ae-page-id="' . ($current - 1) .'" class="prev page-numbers" href="' . esc_url( apply_filters( 'paginate_links', $link ) ) . '">' . $args['prev_text'] . '</a>';
endif;
for ( $n = 1; $n <= $total; $n++ ) :
if ( $n == $current ) :
$page_links[] = "<span data-ae-page-id='" . $args['before_page_number'] . number_format_i18n( $n ) . $args['after_page_number'] . "' aria-current='" . esc_attr( $args['aria_current'] ) . "' class='page-numbers current'>" . $args['before_page_number'] . number_format_i18n( $n ) . $args['after_page_number'] . "</span>";
$dots = true;
else :
if ( $args['show_all'] || ( $n <= $end_size || ( $current && $n >= $current - $mid_size && $n <= $current + $mid_size ) || $n > $total - $end_size ) ) :
$link = str_replace( '%_%', 1 == $n ? '' : $args['format'], $args['base'] );
$link = str_replace( '%#%', $n, $link );
if ( $add_args )
$link = add_query_arg( $add_args, $link );
$link .= $args['add_fragment'];
/** This filter is documented in wp-includes/general-template.php */
$page_links[] = "<a data-ae-page-id='" . $args['before_page_number'] . number_format_i18n( $n ) . $args['after_page_number'] . "' class='page-numbers' href='" . esc_url( apply_filters( 'paginate_links', $link ) ) . "'>" . $args['before_page_number'] . number_format_i18n( $n ) . $args['after_page_number'] . "</a>";
$dots = true;
elseif ( $dots && ! $args['show_all'] ) :
$page_links[] = '<span class="page-numbers dots">' . __( '…' ) . '</span>';
$dots = false;
endif;
endif;
endfor;
if ( $args['prev_next'] && $current && $current < $total ) :
$link = str_replace( '%_%', $args['format'], $args['base'] );
$link = str_replace( '%#%', $current + 1, $link );
if ( $add_args )
$link = add_query_arg( $add_args, $link );
$link .= $args['add_fragment'];
/** This filter is documented in wp-includes/general-template.php */
$page_links[] = '<a data-ae-page-id="' . ($current + 1) .'" class="next page-numbers" href="' . esc_url( apply_filters( 'paginate_links', $link ) ) . '">' . $args['next_text'] . '</a>';
endif;
switch ( $args['type'] ) {
case 'array' :
return $page_links;
case 'list' :
$r .= "<ul class='page-numbers'>\n\t<li>";
$r .= join("</li>\n\t<li>", $page_links);
$r .= "</li>\n</ul>\n";
break;
default :
$r = join("\n", $page_links);
break;
}
return $r;
}
public function ae_get_wp_nav_menu(){
$menus = wp_get_nav_menus();
$menu_arr = array();
foreach ( $menus as $menu ) {
$menu_arr[ $menu->slug ] = $menu->name;
}
return $menu_arr;
}
public function ae_acf_get_field_objects($id){
if(isset($id) && !$id){
return '';
}
return get_field_objects($id);
}
public function ae_is_product_on_sale($id){
$flag = false;
if (get_post_type($id) === 'product') {
$p = wc_get_product($id);
if ( $p->is_type( 'variable' ) ) {
$available_variations = $p->get_available_variations();
if(is_array($available_variations)) {
for ($i = 0; $i < count($available_variations); $i++) {
$variation_id = $available_variations[$i]['variation_id'];
$variable_product = new \WC_Product_Variation($variation_id);
if ($variable_product->is_on_sale()) {
$flag = true;
break;
}
}
}
}else{
if ($p->is_on_sale()) {
$flag = true;
}
}
}
return $flag;
}
/*public function ae_taxonomy_terms(){
$term_data = $this->get_preview_term_data();
$terms = get_terms( array(
'taxonomy' => $term_data['taxonomy'],
'hide_empty' => false,
'parent' => 0,
) );
// echo '<pre>'; print_r($terms); die();
$ae_terms = array();
if(count($terms)){
foreach($terms as $term){
$ae_terms[$term->term_id] = $term->name;
}
}
return $ae_terms;
}*/
public function ae_taxonomy_terms($taxonomy, $settings){
$parent = 0;
if($settings['ae_taxonomy'] == 'child_of_current'){
if ( \Elementor\Plugin::instance()->editor->is_edit_mode() ) {
$preview_term = Aepro::$_helper->get_preview_term_data();
if ( isset($preview_term['prev_term_id']) ) {
$taxonomy = $preview_term['taxonomy'];
$parent = $preview_term['prev_term_id'];
} else {
// do nothing
}
} else {
// get child of current term
$current_term = get_queried_object();
$taxonomy = $current_term->taxonomy;
$parent = $current_term->term_id;
}
}
$hide_empty = false;
if($settings['show_hide_empty'] == 'yes'){
$hide_empty = true;
}
$terms = get_terms( array(
'taxonomy' => $taxonomy,
'hide_empty' => $hide_empty,
'parent' => $parent,
) );
return $terms;
}
public function get_ae_placeholder_image_src() {
$placeholder_image = AE_PRO_URL . 'includes/assets/images/aep-placeholder.jpg';
return $placeholder_image;
}
public function get_facetwp_data($type){
$facet_arr = [
'' => __('Select' , 'ae-pro'),
];
$facet_helper = FWP()->helper;
$facet_setting = $facet_helper->load_settings();
$factes = $facet_setting['facets'];
foreach ($factes as $facet){
if($type == $facet['type']) {
$facet_arr[$facet['name']] = $facet['label'];
}
}
return $facet_arr;
}
public function column_rule_controls($widget, $args) {
$widget->add_responsive_control(
$args['name'] . '_content_rule_border',
[
'label' => $args['label'] . ' Border',
'type' => Controls_Manager::SELECT,
'options' => [
'' => __( 'None', 'ae-pro' ),
'solid' => _x( 'Solid', 'Border Control', 'ae-pro' ),
'double' => _x( 'Double', 'Border Control', 'ae-pro' ),
'dotted' => _x( 'Dotted', 'Border Control', 'ae-pro' ),
'dashed' => _x( 'Dashed', 'Border Control', 'ae-pro' ),
'groove' => _x( 'Groove', 'Border Control', 'ae-pro' ),
],
'selectors' => [
$args['selector'] => 'column-rule-style: {{VALUE}};',
],
'condition' => [
'text_columns!' => '',
]
]);
$widget->add_responsive_control(
$args['name'] . '_content_rule_width',
[
'label' => $args['label'] . ' Width',
'type' => Controls_Manager::SLIDER,
'size_units' => [ 'px' ],
'range' => [
'px' => [
'max' => 100,
],
],
'selectors' => [
$args['selector'] => 'column-rule-width: {{SIZE}}{{UNIT}};',
],
'condition' => [
$args['name'] . '_content_rule_border!' => '',
'text_columns!' => '',
],
]);
$widget->add_control(
$args['name'] . '_content_rule_color',
[
'label' => $args['label'] . ' Color',
'type' => Controls_Manager::COLOR,
'default' => '',
'selectors' => [
$args['selector'] => 'column-rule-color: {{VALUE}};',
],
'condition' => [
$args['name'] . '_content_rule_border!' => '',
'text_columns!' => '',
],
]);
}
function get_help_url_prefix(){
return 'https://wpvibes.link/go/widget-';
return '';
}
function get_widget_admin_note_html($note, $link = '', $link_text = 'Click Here')
{
$note = '<p class="ae-editor-note"><i>' . $note;
if (trim($link) != '') {
$note .= ' <a href="' . $link . '" target="_blank">' . $link_text . '</a>';
}
$note .= '</i></p>';
return $note;
}
public function get_current_url_non_paged(){
global $wp;
$url = get_pagenum_link(1);
return trailingslashit($url);
}
function ae_get_parent_term_list( $id, $taxonomy, $sep = '', $before = '', $after = '' ) {
$terms = get_the_terms( $id, $taxonomy );
if ( is_wp_error( $terms ) ) {
return $terms;
}
if ( empty( $terms ) ) {
return false;
}
$links = array();
foreach ( $terms as $term ) {
if($term->parent == 0) {
$link = get_term_link($term, $taxonomy);
if (is_wp_error($link)) {
return $link;
}
$links[] = '<a href="' . esc_url($link) . '" rel="tag">' . $term->name . '</a>';
}
}
/**
* Filters the term links for a given taxonomy.
*
* The dynamic portion of the filter name, `$taxonomy`, refers
* to the taxonomy slug.
*
* @since 2.5.0
*
* @param string[] $links An array of term links.
*/
$term_links = apply_filters( "term_links-{$taxonomy}", $links ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
return $before . join( $sep, $term_links ) . $after;
}
public function get_repeater_data($settings, $post_id){
$is_option_repeater = false;
$repeater = $settings['acf_repeater_field_name'];
if (strpos($repeater, 'option:') === 0) {
$repeater_data['repeater_name'] = str_replace("option:", '', $settings['acf_repeater_field_name']);
$repeater_data['repeater_type'] = 'option';
} else {
$repeater_data['repeater_name'] = $settings['acf_repeater_field_name'];
$repeater_data['repeater_type'] = $post_id;
}
return $repeater_data;
}
static function is_widget_active( $widget ){
return true;
}
}