<?php 
function tfl_get_unique() {
	static $unique = 0;
	$unique++;
	return $unique;
}
function tfl_additonal_element(){
	$file = TFL_PLG_DIR.'template/socials.php';
	if ( file_exists( $file ) ) {
	   include_once $file;
	}
	return false;
}

function tfl_footer_shortcode($footer_id) {


	include_once TFL_PLG_DIR.'includes/class-tfl-footerFrontend.php';
	include_once TFL_PLG_DIR.'includes/class-tfl-footerPostType.php';

	$tflPostFooter = TFLPostType::getPostFooter();
	if($tflPostFooter["footer"]):
		$tflPostFooter['id'] = $footer_id;
		$tflFooters = new WP_Query(array(
			'post_type' => 'tfl_footer',
			'p' => $tflPostFooter['id'],
			'post_status' => 'publish',
			'posts_per_page' => -1,
			'suppress_filters' => false,
		));



		if($tflFooters->have_posts()){
			while($tflFooters->have_posts()) {
				$tflFooters->the_post();
				$currentPost = $tflFooters->post;
				get_post_custom($currentPost->ID);
				setup_postdata($currentPost);
				ob_start();
				the_content();
				$tflFooterContent = ob_get_clean();
				echo TFLFrontend::themeFixes($tflFooterContent, $currentPost);
				wp_reset_postdata();
			}
			wp_reset_query();
		}
	endif; 
}

function tfl_render_socials() {
	if (function_exists('tfl_socials')) {
		$socials_html = tfl_socials();
	}
	return $socials_html;
}
add_shortcode( 'tfl_socials', 'tfl_render_socials' );


function tfl_map_icons($name='icon',$heading_name = 'Icon') {
    return array(
        array(
            'type' => 'dropdown',
            'heading' => esc_attr( $heading_name.' library'),
            'value' => array(
                esc_html__( 'None', 'tfl' ) => 'none',
                esc_html__( 'Font Awesome', 'tfl' ) => 'fontawesome',
                esc_html__( 'Open Iconic', 'tfl' ) => 'openiconic',
                esc_html__( 'Typicons', 'tfl' ) => 'typicons',
                esc_html__( 'Entypo', 'tfl' ) => 'entypo',
                esc_html__( 'Linecons', 'tfl' ) => 'linecons',
                esc_html__( 'Mono Social', 'tfl' ) => 'monosocial',
                esc_html__( 'Material', 'tfl' ) => 'material',
                esc_html__( 'Simple Line', 'tfl' ) => 'simpleline',
                esc_html__( 'Fo Icons', 'tfl' ) => 'iconsfo',
                esc_html__( 'Ionicons', 'tfl' ) => 'ionicons',
            ),
            'std' => 'none',
            'admin_label' => true,
            'param_name' => $name.'_type',
            'description' => esc_html__( 'Select icon library.', 'tfl' ),
            'integrated_shortcode_field' => $name.'_'
        ),
        array(
            'type' => 'iconpicker',
            'heading' => esc_attr( $heading_name ),
            'param_name' => $name.'_fontawesome',
            'value' => 'fa fa-adjust',
            // default value to backend editor admin_label
            'settings' => array(
                'emptyIcon' => false,
                // default true, display an "EMPTY" icon?
                'type' => 'fontawesome',
                'iconsPerPage' => 4000,
                // default 100, how many icons per/page to display, we use (big number) to display all icons in single page
            ),
            'dependency' => array(
                'element' => $name.'_type',
                'value' => 'fontawesome',
            ),
            'description' => esc_html__( 'Select icon from library.', 'tfl' ),
            'integrated_shortcode_field' => $name.'_'
        ),
        array(
            'type' => 'iconpicker',
            'heading' => esc_attr( $heading_name),
            'param_name' => $name.'_simpleline',
            'value' => 'icon-user',
            // default value to backend editor admin_label
            'settings' => array(
                'emptyIcon' => false,
                // default true, display an "EMPTY" icon?
                'type' => 'simpleline',
                'iconsPerPage' => 4000,
                // default 100, how many icons per/page to display, we use (big number) to display all icons in single page
            ),
            'dependency' => array(
                'element' => $name.'_type',
                'value' => 'simpleline',
            ),
            'description' => esc_html__( 'Select icon from library.', 'tfl' ),
            'integrated_shortcode_field' => $name.'_'
        ),
        
        array(
            'type' => 'iconpicker',
            'heading' => esc_attr( $heading_name ),
            'param_name' => $name.'_iconsfo',
            'value' => 'ifco ifco-bank',
            // default value to backend editor admin_label
            'settings' => array(
                'emptyIcon' => false,
                // default true, display an "EMPTY" icon?
                'type' => 'iconsfo',
                'iconsPerPage' => 4000,
                // default 100, how many icons per/page to display, we use (big number) to display all icons in single page
            ),
            'dependency' => array(
                'element' => $name.'_type',
                'value' => 'iconsfo',
            ),
            'description' => esc_html__( 'Select icon from library.', 'tfl' ),
            'integrated_shortcode_field' => $name.'_'
        ),
        array(
            'type' => 'iconpicker',
            'heading' => esc_attr( $heading_name),
            'param_name' => $name.'_ionicons',
            'value' => 'icon-user',
            // default value to backend editor admin_label
            'settings' => array(
                'emptyIcon' => false,
                // default true, display an "EMPTY" icon?
                'type' => 'ionicons',
                'iconsPerPage' => 4000,
                // default 100, how many icons per/page to display, we use (big number) to display all icons in single page
            ),
            'dependency' => array(
                'element' => $name.'_type',
                'value' => 'ionicons',
            ),
            'description' => esc_html__( 'Select icon from library.', 'tfl' ),
            'integrated_shortcode_field' => $name.'_'
        ),
        
        array(
            'type' => 'iconpicker',
            'heading' => esc_html__( 'Icon', 'tfl' ),
            'param_name' => $name.'_openiconic',
            'value' => 'vc-oi vc-oi-dial',
            // default value to backend editor admin_label
            'settings' => array(
                'emptyIcon' => false,
                // default true, display an "EMPTY" icon?
                'type' => 'openiconic',
                'iconsPerPage' => 4000,
                // default 100, how many icons per/page to display
            ),
            'dependency' => array(
                'element' => $name.'_type',
                'value' => 'openiconic',
            ),
            'description' => esc_html__( 'Select icon from library.', 'tfl' ),
        ),
        array(
            'type' => 'iconpicker',
            'heading' => esc_html__( 'Icon', 'tfl' ),
            'param_name' => $name.'_typicons',
            'value' => 'typcn typcn-adjust-brightness',
            // default value to backend editor admin_label
            'settings' => array(
                'emptyIcon' => false,
                // default true, display an "EMPTY" icon?
                'type' => 'typicons',
                'iconsPerPage' => 4000,
                // default 100, how many icons per/page to display
            ),
            'dependency' => array(
                'element' => $name.'_type',
                'value' => 'typicons',
            ),
            'description' => esc_html__( 'Select icon from library.', 'tfl' ),
            'integrated_shortcode_field' => $name.'_'
        ),
        array(
            'type' => 'iconpicker',
            'heading' => esc_html__( 'Icon', 'tfl' ),
            'param_name' => $name.'_entypo',
            'value' => 'entypo-icon entypo-icon-note',
            // default value to backend editor admin_label
            'settings' => array(
                'emptyIcon' => false,
                // default true, display an "EMPTY" icon?
                'type' => 'entypo',
                'iconsPerPage' => 4000,
                // default 100, how many icons per/page to display
            ),
            'dependency' => array(
                'element' => $name.'_type',
                'value' => 'entypo',
            ),
            'integrated_shortcode_field' => $name.'_'
        ),
        array(
            'type' => 'iconpicker',
            'heading' => esc_html__( 'Icon', 'tfl' ),
            'param_name' => $name.'_linecons',
            'value' => 'vc_li vc_li-heart',
            // default value to backend editor admin_label
            'settings' => array(
                'emptyIcon' => false,
                // default true, display an "EMPTY" icon?
                'type' => 'linecons',
                'iconsPerPage' => 4000,
                // default 100, how many icons per/page to display
            ),
            'dependency' => array(
                'element' => $name.'_type',
                'value' => 'linecons',
            ),
            'description' => esc_html__( 'Select icon from library.', 'tfl' ),
            'integrated_shortcode_field' => $name.'_'
        ),
        array(
            'type' => 'iconpicker',
            'heading' => esc_html__( 'Icon', 'tfl' ),
            'param_name' => $name.'_monosocial',
            'value' => 'vc-mono vc-mono-fivehundredpx',
            // default value to backend editor admin_label
            'settings' => array(
                'emptyIcon' => false,
                // default true, display an "EMPTY" icon?
                'type' => 'monosocial',
                'iconsPerPage' => 4000,
                // default 100, how many icons per/page to display
            ),
            'dependency' => array(
                'element' => $name.'_type',
                'value' => 'monosocial',
            ),
            'description' => esc_html__( 'Select icon from library.', 'tfl' ),
            'integrated_shortcode_field' => $name.'_'
        ),
        array(
            'type' => 'iconpicker',
            'heading' => esc_html__( 'Icon', 'tfl' ),
            'param_name' => $name.'_material',
            'value' => 'vc-material vc-material-cake',
            // default value to backend editor admin_label
            'settings' => array(
                'emptyIcon' => false,
                // default true, display an "EMPTY" icon?
                'type' => 'material',
                'iconsPerPage' => 4000,
                // default 100, how many icons per/page to display
            ),
            'dependency' => array(
                'element' => $name.'_type',
                'value' => 'material',
            ),
            'description' => esc_html__( 'Select icon from library.', 'tfl' ),
            'integrated_shortcode_field' => $name.'_'
        ),
    );
}

function tfl_shortcode_icon_name( $prefix,$icon_type ) {
    $icon_name = '';
    if ($icon_type != 'none') {
        $icon_name  = $prefix.$icon_type;
        wp_enqueue_style('vc_'.$icon_type);
    }
    return $icon_name;
}

function tfl_get_icon( $icon_class ){
    return '<span class="tfl-icon ' . esc_attr( $icon_class ) . '"></span>';
}


function tfl_getImageBySize( $params = array() ) {
    $params = array_merge( array(
        'post_id' => null,
        'attach_id' => null,
        'thumb_size' => 'thumbnail',
        'class' => '',
    ), $params );

    if ( ! $params['thumb_size'] ) {
        $params['thumb_size'] = 'thumbnail';
    }

    if ( ! $params['attach_id'] && ! $params['post_id'] ) {
        return false;
    }

    $post_id = $params['post_id'];

    $attach_id = $post_id ? get_post_thumbnail_id( $post_id ) : $params['attach_id'];
    $attach_id = apply_filters( 'tfl_object_id', $attach_id );
    $thumb_size = $params['thumb_size'];
    $thumb_class = ( isset( $params['class'] ) && '' !== $params['class'] ) ? $params['class'] . ' ' : '';

    global $_wp_additional_image_sizes;
    $thumbnail = '';

    if ( is_string( $thumb_size ) && ( ( ! empty( $_wp_additional_image_sizes[ $thumb_size ] ) && is_array( $_wp_additional_image_sizes[ $thumb_size ] ) ) || in_array( $thumb_size, array(
                'thumbnail',
                'thumb',
                'medium',
                'large',
                'full',
            ) ) )
    ) {
        $attributes = array( 'class' => $thumb_class . 'attachment-' . $thumb_size );
        // $thumbnail = wp_get_attachment_image( $attach_id, $thumb_size, false, $attributes );

        $thumbnail = wp_get_attachment_image_src( $attach_id, $thumb_size, false );
        $thumbnail = '<img width="'.$thumbnail[1].'" height="'.$thumbnail[2].'" src="'.TFL_PLG_PATH.'assets/images/bg-none.jpg" data-src="'.$thumbnail[0].'" alt="image" class="vc_single_image-img wp-post-image lazyload">';







    } elseif ( $attach_id ) {
        if ( is_string( $thumb_size ) ) {
            preg_match_all( '/\d+/', $thumb_size, $thumb_matches );
            if ( isset( $thumb_matches[0] ) ) {
                $thumb_size = array();
                $count = count( $thumb_matches[0] );
                if ( $count > 1 ) {
                    $thumb_size[] = $thumb_matches[0][0]; // width
                    $thumb_size[] = $thumb_matches[0][1]; // height
                } elseif ( 1 === $count ) {
                    $thumb_size[] = $thumb_matches[0][0]; // width
                    $thumb_size[] = $thumb_matches[0][0]; // height
                } else {
                    $thumb_size = false;
                }
            }
        }
        if ( is_array( $thumb_size ) ) {
            // Resize image to custom size
            $p_img = tfl_resize( $attach_id, null, $thumb_size[0], $thumb_size[1], true );
            $alt = trim( strip_tags( get_post_meta( $attach_id, '_wp_attachment_image_alt', true ) ) );
            $attachment = get_post( $attach_id );
            if ( ! empty( $attachment ) ) {
                $title = trim( strip_tags( $attachment->post_title ) );

                if ( empty( $alt ) ) {
                    $alt = trim( strip_tags( $attachment->post_excerpt ) ); // If not, Use the Caption
                }
                if ( empty( $alt ) ) {
                    $alt = $title;
                } // Finally, use the title
                if ( $p_img ) {
                    $attributes = '';

                    $attributes = tfl_stringify_attributes( array(
                        'class' => $thumb_class,
                        'src'   => TFL_PLG_PATH.'assets/images/bg-none.jpg',
                        'data-src' => $p_img['url'],
                        'width' => $p_img['width'],
                        'height' => $p_img['height'],
                        'alt' => $alt,
                        'title' => $title,
                    ) );

                    $thumbnail = '<img ' . $attributes . ' />';
                }
            }
        }
    }

    $p_img_large = wp_get_attachment_image_src( $attach_id, 'large' );

    return apply_filters( 'vc_tfl_getimagesize', array(
        'thumbnail' => $thumbnail,
        'p_img_large' => $p_img_large,
    ), $attach_id, $params );
}

// function tfl_single_getImageBySize( $params = array() ) {
//     $params = array_merge( array(
//         'post_id' => null,
//         'attach_id' => null,
//         'thumb_size' => 'thumbnail',
//         'class' => '',
//     ), $params );

//     if ( ! $params['thumb_size'] ) {
//         $params['thumb_size'] = 'thumbnail';
//     }

//     if ( ! $params['attach_id'] && ! $params['post_id'] ) {
//         return false;
//     }

//     $post_id = $params['post_id'];

//     $attach_id = $post_id ? get_post_thumbnail_id( $post_id ) : $params['attach_id'];
//     $attach_id = apply_filters( 'tfl_object_id', $attach_id );
//     $thumb_size = $params['thumb_size'];
//     $thumb_class = ( isset( $params['class'] ) && '' !== $params['class'] ) ? $params['class'] . ' ' : '';

//     global $_wp_additional_image_sizes;
//     $thumbnail = '';

//     if ( is_string( $thumb_size ) && ( ( ! empty( $_wp_additional_image_sizes[ $thumb_size ] ) && is_array( $_wp_additional_image_sizes[ $thumb_size ] ) ) || in_array( $thumb_size, array(
//                 'thumbnail',
//                 'thumb',
//                 'medium',
//                 'large',
//                 'full',
//             ) ) )
//     ) {
//         $attributes = array( 'class' => $thumb_class . 'attachment-' . $thumb_size );
//         $thumbnail = wp_get_attachment_image_src( $attach_id, $thumb_size, false );
//         // $thumbnail = wp_get_attachment_image( $attach_id, $thumb_size, false, $attributes );

//         $thumbnail = '<img width="'.$thumbnail[1].'" height="'.$thumbnail[2].'" data-src="'.$thumbnail[0].'" class="vc_single_image-img wp-post-image lazyload">';


//          // var_dump($thumbnail);
//     } elseif ( $attach_id ) {
//         if ( is_string( $thumb_size ) ) {
//             preg_match_all( '/\d+/', $thumb_size, $thumb_matches );
//             if ( isset( $thumb_matches[0] ) ) {
//                 $thumb_size = array();
//                 $count = count( $thumb_matches[0] );
//                 if ( $count > 1 ) {
//                     $thumb_size[] = $thumb_matches[0][0]; // width
//                     $thumb_size[] = $thumb_matches[0][1]; // height
//                 } elseif ( 1 === $count ) {
//                     $thumb_size[] = $thumb_matches[0][0]; // width
//                     $thumb_size[] = $thumb_matches[0][0]; // height
//                 } else {
//                     $thumb_size = false;
//                 }
//             }
//         }
//         if ( is_array( $thumb_size ) ) {
//             // Resize image to custom size
//             $p_img = tfl_resize( $attach_id, null, $thumb_size[0], $thumb_size[1], true );
//             $alt = trim( strip_tags( get_post_meta( $attach_id, '_wp_attachment_image_alt', true ) ) );
//             $attachment = get_post( $attach_id );
//             if ( ! empty( $attachment ) ) {
//                 $title = trim( strip_tags( $attachment->post_title ) );

//                 if ( empty( $alt ) ) {
//                     $alt = trim( strip_tags( $attachment->post_excerpt ) ); // If not, Use the Caption
//                 }
//                 if ( empty( $alt ) ) {
//                     $alt = $title;
//                 } // Finally, use the title
//                 if ( $p_img ) {
//                     $attributes = '';

//                     $attributes = tfl_stringify_attributes( array(
//                         'class' => $thumb_class,
//                         'data-src' => $p_img['url'],
//                         // 'width' => $p_img['width'],
//                         // 'height' => $p_img['height'],
//                         // 'alt' => $alt,
//                         // 'title' => $title,
//                     ) );

//                     $thumbnail = '<img ' . $attributes . ' />';
//                 }
//             }
//         }
//     }


//     $p_img_large = wp_get_attachment_image_src( $attach_id, 'large' );



//     return apply_filters( 'vc_tfl_getimagesize', array(
//         'thumbnail' => $thumbnail,
//         'p_img_large' => $p_img_large,
//     ), $attach_id, $params );
// }



function tfl_stringify_attributes( $attributes ) {
    $atts = array();
    foreach ( $attributes as $name => $value ) {
        $atts[] = $name . '="' . esc_attr( $value ) . '"';
    }

    return implode( ' ', $atts );
}


if ( ! function_exists( 'tfl_resize' ) ) {
    
    function tfl_resize( $attach_id = null, $img_url = null, $width = null, $height = null, $crop = false ) {
        // this is an attachment, so we have the ID
        $image_src = array();
        if ( $attach_id ) {
            $image_src = wp_get_attachment_image_src( $attach_id, 'full' );
            $actual_file_path = get_attached_file( $attach_id );
            // this is not an attachment, let's use the image url
        } elseif ( $img_url ) {
            $file_path = parse_url( $img_url );
            $actual_file_path = rtrim( ABSPATH, '/' ) . $file_path['path'];
            $orig_size = getimagesize( $actual_file_path );
            $image_src[0] = $img_url;
            $image_src[1] = $orig_size[0];
            $image_src[2] = $orig_size[1];
        }
        if ( ! empty( $actual_file_path ) ) {
            $file_info = pathinfo( $actual_file_path );
            $extension = '.' . $file_info['extension'];

            // the image path without the extension
            $no_ext_path = $file_info['dirname'] . '/' . $file_info['filename'];

            $cropped_img_path = $no_ext_path . '-' . $width . 'x' . $height . $extension;

            // checking if the file size is larger than the target size
            // if it is smaller or the same size, stop right here and return
            if ( $image_src[1] > $width || $image_src[2] > $height ) {

                // the file is larger, check if the resized version already exists (for $crop = true but will also work for $crop = false if the sizes match)
                if ( file_exists( $cropped_img_path ) ) {
                    $cropped_img_url = str_replace( basename( $image_src[0] ), basename( $cropped_img_path ), $image_src[0] );
                    $vt_image = array(
                        'url' => $cropped_img_url,
                        'width' => $width,
                        'height' => $height,
                    );

                    return $vt_image;
                }

                if ( false == $crop ) {
                    // calculate the size proportionaly
                    $proportional_size = wp_constrain_dimensions( $image_src[1], $image_src[2], $width, $height );
                    $resized_img_path = $no_ext_path . '-' . $proportional_size[0] . 'x' . $proportional_size[1] . $extension;

                    // checking if the file already exists
                    if ( file_exists( $resized_img_path ) ) {
                        $resized_img_url = str_replace( basename( $image_src[0] ), basename( $resized_img_path ), $image_src[0] );

                        $vt_image = array(
                            'url' => $resized_img_url,
                            'width' => $proportional_size[0],
                            'height' => $proportional_size[1],
                        );

                        return $vt_image;
                    }
                }

                // no cache files - let's finally resize it
                $img_editor = wp_get_image_editor( $actual_file_path );

                if ( is_wp_error( $img_editor ) || is_wp_error( $img_editor->resize( $width, $height, $crop ) ) ) {
                    return array(
                        'url' => '',
                        'width' => '',
                        'height' => '',
                    );
                }

                $new_img_path = $img_editor->generate_filename();

                if ( is_wp_error( $img_editor->save( $new_img_path ) ) ) {
                    return array(
                        'url' => '',
                        'width' => '',
                        'height' => '',
                    );
                }
                if ( ! is_string( $new_img_path ) ) {
                    return array(
                        'url' => '',
                        'width' => '',
                        'height' => '',
                    );
                }

                $new_img_size = getimagesize( $new_img_path );
                $new_img = str_replace( basename( $image_src[0] ), basename( $new_img_path ), $image_src[0] );

                // resized output
                $vt_image = array(
                    'url' => $new_img,
                    'width' => $new_img_size[0],
                    'height' => $new_img_size[1],
                );

                return $vt_image;
            }

            // default output - without resizing
            $vt_image = array(
                'url' => $image_src[0],
                'width' => $image_src[1],
                'height' => $image_src[2],
            );

            return $vt_image;
        }

        return false;
    }
}

function remove_empty_p( $content ) {
    $content = force_balance_tags( $content );
    $content = preg_replace( '#<p>\s*+(<br\s*/*>)?\s*</p>#i', '', $content );
    $content = preg_replace( '~\s?<p>(\s| )+</p>\s?~', '', $content );
    return $content;
}
add_filter('the_content', 'remove_empty_p', 20, 1);


function tf_get_template_elementor($type = null) {
    $args = [
        'post_type' => 'elementor_library',
        'posts_per_page' => -1,
    ];
    if ($type) {
        $args['tax_query'] = [
            [
                'taxonomy' => 'elementor_library_type',
                'field' => 'slug',
                'terms' => $type,
            ],
        ];
    }
    $template = get_posts($args);
    $tpl = array();
    if (!empty($template) && !is_wp_error($template)) {
        foreach ($template as $post) {
            $tpl[$post->post_name] = $post->post_title;
        }
    }
    return $tpl;
}


if(!function_exists('flat_get_post_page_content')){
    function flat_get_post_page_content( $slug ) {
        $content_post = get_posts(array(
            'name' => $slug,
            'posts_per_page' => 1,
            'post_type' => 'elementor_library',
            'post_status' => 'publish'
        ));
        if (array_key_exists(0, $content_post) == true) {
            $id = $content_post[0]->ID;
            return $id;
        }
    }
}

