<?php
/**
 * Includes the helper functions and hooks the theme. 
 * 
 * @package News Event
 * @since 1.0.0
 */
 use NewsEvent\CustomizerDefault as NEV;

if( !function_exists( 'news_event_advertisement_block_html' ) ) :
    /**
     * Calls advertisement block
     * 
     * @since 1.0.0
     */
    function news_event_advertisement_block_html($options,$echo) {
        $media = ( is_object( $options->media ) || is_array( $options->media ) ) ? $options->media :json_decode( $options->media );
        if( ! isset( $media->media_id ) ) return;
        ?>
        <div <?php if( isset( $options->blockId ) && !empty($options->blockId) ) echo 'id="' .esc_attr( $options->blockId ). '"'; ?> class="news-event-advertisement-block is-large">
        <?php
            if( $echo ) {
                if( isset( $options->title ) && $options->title ) echo '<h2 class="news-event-block-title">' .esc_html( $options->title ). '</h2>';
                if( $media->media_id != 0 ) {
                ?>
                    <figure class="inner-ad-block">
                        <a href="<?php echo esc_url( $options->url ); ?>" target="<?php echo esc_attr( $options->targetAttr ); ?>" rel="<?php echo esc_attr( $options->relAttr ); ?>"><img src="<?php echo esc_url( wp_get_attachment_url( $media->media_id ) ); ?>"></a>
                    </figure>
                <?php
                }
            }
        ?>
        </div>
    <?php
    }
 endif;

 if( !function_exists( 'news_event_shortcode_block_html' ) ) :
    /**
     * Calls shortcode block
     * 
     * @since 1.0.0
     */
    function news_event_shortcode_block_html($options,$echo) {
        $shortcode = $options->shortcode;
        if( ! $shortcode ) return;
        ?>
        <div <?php if( isset( $options->blockId ) && !empty($options->blockId) ) echo 'id="' .esc_attr( $options->blockId ). '"'; ?> class="news-event-shortcode-block is-large">
            <?php
                if( $echo ) {
                    echo do_shortcode( $shortcode );
                }
            ?>
        </div>
        <?php
    }
 endif;

 if( !function_exists( 'news_event_top_header_html' ) ) :
    /**
     * Calls top header hooks
     * 
     * @since 1.0.0
     */
    function news_event_top_header_html() {
        if( ! NEV\news_event_get_customizer_option( 'top_header_option' ) ) return;
        require get_template_directory() . '/inc/hooks/top-header-hooks.php'; // top header hooks.
        ?>
            <div class="top-header">
                <div class="news-event-container">
                    <div class="row">
                        <?php
                            /**
                            * hook - news_event_top_header_hook
                            * 
                            * @hooked - news_event_top_header_ticker_news_part - 10
                            * @hooked - news_event_top_header_social_part - 20
                            */
                            if( has_action( 'news_event_top_header_hook' ) ) do_action( 'news_event_top_header_hook' );
                        ?>
                    </div>
                </div>
            </div>
        <?php
    }
endif;

if( !function_exists( 'news_event_header_html' ) ) :
    /**
     * Calls header hooks
     * 
     * @since 1.0.0
     */
    function news_event_header_html() {
        require get_template_directory() . '/inc/hooks/header-hooks.php'; // top header hooks.
        ?>
        <div class="main-header">
            <div class="site-branding-section">
                <div class="news-event-container">
                    <div class="row">
                        <?php
                            /**
                             * hook - news_event_header__site_branding_section_hook
                             * 
                             * @hooked - news_event_header_menu_part - 10
                             * @hooked - news_event_header_ads_banner_part - 20
                             */
                            if( has_action( 'news_event_header__site_branding_section_hook' ) ) do_action( 'news_event_header__site_branding_section_hook' );
                        ?>
                    </div>
                </div>
            </div>
            <div class="menu-section">
                <div class="news-event-container">
                    <div class="row">
                        <?php
                            /**
                             * hook - news_event_header__menu_section_hook
                             * 
                             * @hooked - news_event_header_menu_part - 10
                             * @hooked - news_event_header_search_part - 20
                             */
                            if( has_action( 'news_event_header__menu_section_hook' ) ) do_action( 'news_event_header__menu_section_hook' );
                        ?>
                    </div>
                </div>
            </div>
        </div>
        <?php
    }
endif;

if( !function_exists( 'news_event_after_header_html' ) ) :
    /**
     * Calls after header hooks
     * 
     * @since 1.0.0
     */
    function news_event_after_header_html() {
        $ticker_news_width_layout = news_event_get_section_width_layout_val('ticker_news_width_layout');
        ?>
        <div class="after-header header-layout-banner-two ticker-news-section--<?php echo esc_attr($ticker_news_width_layout); ?>">
            <div class="news-event-container">
                <div class="row">
                    <?php
                        /**
                         * hook - news_event_after_header_hook
                         * 
                         * @hooked - news_event_header_ads_banner_part - 10
                         * @hooked - news_event_ticker_news_part - 10
                         */
                        if( has_action( 'news_event_after_header_hook' ) ) do_action( 'news_event_after_header_hook' );
                    ?>
                </div>
            </div>
        </div>
        <?php
    }
endif;

require get_template_directory() . '/inc/hooks/footer-hooks.php'; // footer hooks.
if( !function_exists( 'news_event_footer_sections_html' ) ) :
    /**
     * Calls footer hooks
     * 
     * @since 1.0.0
     */
    function news_event_footer_sections_html() {
        if( ! NEV\news_event_get_customizer_option( 'footer_option' ) ) return;
        $footer_section_width = NEV\news_event_get_customizer_option( 'footer_section_width' );
        ?>
        <div class="main-footer <?php echo esc_attr( $footer_section_width ); ?>">
            <div class="footer-inner <?php if( $footer_section_width == 'boxed-width' ) { echo esc_attr( 'news-event-container' ); } else { echo esc_attr( 'news-event-container-fluid' ); } ?>">
                <div class="row">
                    <?php
                        /**
                         * hook - news_event_footer_hook
                         * 
                         * @hooked - news_event_footer_widgets_area_part - 10
                         */
                        if( has_action( 'news_event_footer_hook' ) ) do_action( 'news_event_footer_hook' );
                    ?>
                </div>
            </div>
        </div>
        <?php
    }
endif;

if( !function_exists( 'news_event_bottom_footer_sections_html' ) ) :
    /**
     * Calls bottom footer hooks
     * 
     * @since 1.0.0
     */
    function news_event_bottom_footer_sections_html() {
        if( ! NEV\news_event_get_customizer_option( 'bottom_footer_option' ) ) return;
        require get_template_directory() . '/inc/hooks/bottom-footer-hooks.php'; // footer hooks.
        $bottom_footer_width_layout = news_event_get_section_width_layout_val('bottom_footer_width_layout');
        ?>
        <div class="bottom-footer <?php echo esc_attr( 'width-' . $bottom_footer_width_layout ); ?>">
            <div class="news-event-container">
                <div class="row">
                    <?php
                        /**
                         * hook - news_event_bottom_footer_sections_html
                         * 
                         * @hooked - bottom_footer_social_option - 10
                         * @hooked - news_event_bottom_footer_menu_part - 20
                         * @hooked - news_event_bottom_footer_copyright_part - 3020
                         */
                        if( has_action( 'news_event_botttom_footer_hook' ) ) do_action( 'news_event_botttom_footer_hook' );
                    ?>
                </div>
            </div>
        </div>
        <?php
    }
endif;
require get_template_directory() . '/inc/hooks/inner-hooks.php'; // inner hooks.
require get_template_directory() . '/inc/hooks/frontpage-sections-hooks.php'; // frontpage sections hooks.

if ( ! function_exists( 'news_event_breadcrumb_trail' ) ) :
    /**
     * Theme default breadcrumb function.
     *
     * @since 1.0.0
     */
    function news_event_breadcrumb_trail() {
        if ( ! function_exists( 'breadcrumb_trail' ) ) {
            // load class file
            require_once get_template_directory() . '/inc/breadcrumb-trail/breadcrumb-trail.php';
        }

        // arguments variable
        $breadcrumb_args = array(
            'container' => 'div',
            'show_browse' => false,
        );
        breadcrumb_trail( $breadcrumb_args );
    }
    add_action( 'news_event_breadcrumb_trail_hook', 'news_event_breadcrumb_trail' );
endif;

if( ! function_exists( 'news_event_breadcrumb_html' ) ) :
    /**
     * Theme breadcrumb
     *
     * @package News Event
     * @since 1.0.0
     */
    function news_event_breadcrumb_html() {
        $site_breadcrumb_option = NEV\news_event_get_customizer_option( 'site_breadcrumb_option' );
        if ( ! $site_breadcrumb_option ) return;
        if ( is_front_page() || is_home() ) return;
        $site_breadcrumb_type = NEV\news_event_get_customizer_option( 'site_breadcrumb_type' );
        ?>
            <div class="news-event-breadcrumb-wrapper">
                <div class="news-event-container">
                    <div class="row">
                        <div class="news-event-breadcrumb-wrap news-event-card">
                            <?php
                                switch( $site_breadcrumb_type ) {
                                    case 'yoast': if( news_event_compare_wand([news_event_function_exists( 'yoast_breadcrumb' )] ) ) yoast_breadcrumb();
                                            break;
                                    case 'rankmath': if( news_event_compare_wand([news_event_function_exists( 'rank_math_the_breadcrumbs' )] ) ) rank_math_the_breadcrumbs();
                                            break;
                                    case 'bcn': if( news_event_compare_wand([news_event_function_exists( 'bcn_display' )] ) ) bcn_display();
                                            break;
                                    default: do_action( 'news_event_breadcrumb_trail_hook' );
                                            break;
                                }
                            ?>
                        </div>
                    </div>
                </div>
            </div>
        <?php
    }
endif;

if( ! function_exists( 'news_event_category_archive_featured_posts_html' ) ) :
    /**
     * Html for category archive page featured post
     * 
     * @package News Event
     * @since 1.0.0
     */
    function news_event_category_archive_featured_posts_html() {
        if( ! is_category() ) return;
        $sticky_posts  =  get_option( 'sticky_posts' );
        if( ! $sticky_posts ) return;
        $current_object = get_queried_object();
        $current_object_id = $current_object->term_id;
        foreach( $sticky_posts as $sticky_post_id ) :
            $cat_ids =  wp_get_post_categories( $sticky_post_id, array( 'fields' => 'ids' ) );
            if( in_array( $current_object_id, $cat_ids ) ) {
                $post_to_get = $sticky_post_id;
                break;
            }
        endforeach;
        if( ! isset($post_to_get) ) return;
        ?>
            <div class="news-event-featured-posts-wrapper">
                <div class="news-event-container">
                    <div class="row">
                        <article class="featured-post is-sticky" data-id="<?php echo esc_attr( $post_to_get ); ?>">
                            <figure class="post-thumb-wrap">
                                <a href="<?php the_permalink($post_to_get); ?>" title="<?php the_title_attribute(array('post'  => $post_to_get)); ?>">
                                    <?php if( has_post_thumbnail($post_to_get) ) {
                                            echo get_the_post_thumbnail($post_to_get, 'full', array(
                                                'title' => the_title_attribute(array(
                                                    'post'  => $post_to_get,
                                                    'echo'  => false
                                                ))
                                            ));
                                        }
                                    ?>
                                </a>
                                
                            </figure>
                            <div class="post-element">
                                <?php news_event_get_post_categories( $post_to_get, 2 ); ?>
                                <h2 class="post-title"><a href="<?php the_permalink($post_to_get); ?>" title="<?php the_title_attribute(array('post'  => $post_to_get)); ?>"><?php echo wp_kses_post( get_the_title($post_to_get) ); ?></a></h2>
                                <div class="post-meta">
                                    <?php
                                        news_event_posted_by($post_to_get);
                                        news_event_posted_on($post_to_get);
                                    ?>
                                </div>
                            </div>
                        </article>
                    </div>
                </div>
            </div>
        <?php
    }
    add_action( 'news_event_before_main_content', 'news_event_category_archive_featured_posts_html', 20 );
endif;

if( ! function_exists( 'news_event_category_archive_author_html' ) ) :
    /**
     * Html for category archive page featured post
     * 
     * @package News Event
     * @since 1.0.0
     */
    function news_event_category_archive_author_html() {
        if( ! is_author() ) return;
        $author_id =  get_query_var( 'author' );
        $ticker_news_width_layout = news_event_get_section_width_layout_val('ticker_news_width_layout');
        $classes[] = esc_attr('ticker-news-section--' . $ticker_news_width_layout);
        ?>
        <div class="ticker-news-section--<?php echo esc_attr($ticker_news_width_layout); ?>">
          <div class="news-event-container news-event-author-section">
            <div class="row">
            <?php echo wp_kses_post( get_avatar($author_id, 125) ); ?>
            <div class="author-content">
                <h2 class="author-name"><?php echo esc_html( get_the_author_meta( 'display_name', $author_id ) ); ?></h2>
                <p class="author-desc"><?php echo wp_kses_post( get_the_author_meta('description', $author_id) ); ?></p>
                <div class="author-social-networks">
                    <?php
                        $facebook_url = ( get_the_author_meta( 'facebook_url', $author_id ) ) ? esc_url( get_the_author_meta( 'facebook_url', $author_id ) ) : '';
                        $twitter_url = ( get_the_author_meta( 'twitter_url', $author_id ) ) ? esc_url( get_the_author_meta( 'twitter_url', $author_id ) ) : '';
                        $linkedin_url = ( get_the_author_meta( 'linkedin_url', $author_id ) ) ? esc_url( get_the_author_meta( 'linkedin_url', $author_id ) ) : '';
                        $instagram_url = ( get_the_author_meta( 'instagram_url', $author_id ) ) ? esc_url( get_the_author_meta( 'instagram_url', $author_id ) ) : '';
                        if( $facebook_url ) echo '<a class="social-item" href="' .esc_url($facebook_url). '" target="_blank"><i class="fab fa-facebook-f"></i></a>';
                        if( $twitter_url ) echo '<a class="social-item" href="' .esc_url($twitter_url). '" target="_blank"><i class="fa-brands fa-x-twitter"></i></a>';
                        if( $linkedin_url ) echo '<a class="social-item" href="' .esc_url($linkedin_url). '" target="_blank"><i class="fab fa-linkedin-in"></i></a>';
                        if( $instagram_url ) echo '<a class="social-item" href="' .esc_url($instagram_url). '" target="_blank"><i class="fab fa-instagram"></i></a>';
                    ?>
                </div>
            </div>
            </div>
          </div>
        </div>
        <?php
    }
    add_action( 'news_event_before_main_content', 'news_event_category_archive_author_html', 20 );
endif;

if( ! function_exists( 'news_event_button_html' ) ) :
    /**
     * View all html
     * 
     * @package News Event
     * @since 1.0.0
     */
    function news_event_button_html( $args ) {
        if( ! $args['option'] ) return;
        $global_button_label = NEV\news_event_get_customizer_option( 'global_button_label' );
        $classes = isset( $args['classes'] ) ? 'post-link-button' . ' ' .$args['classes'] : 'post-link-button';
        $link = isset( $args['link'] ) ? $args['link'] : get_the_permalink();
        $text = isset( $args['text'] ) ? $args['text'] : $global_button_label;
        $icon = isset( $args['icon'] ) ? $args['icon'] : 'fas fa-angle-right';
        $view_all_label_option = isset( $args['text_option'] ) ? $args['text_option'] : false;
        if( $view_all_label_option ) $text = isset( $args['text'] ) ? $args['text'] : esc_htm__( 'View all', 'news-event' );
        echo apply_filters( 'news_event_button_html', sprintf( '<a class="%1$s" href="%2$s">%3$s<i class="%4$s"></i></a>', esc_attr( $classes ), esc_url( $link ), esc_html( $text ), esc_attr( $icon ) ) );
    }
    add_action( 'news_event_section_block_view_all_hook', 'news_event_button_html', 10, 1 );
endif;

if( ! function_exists( 'news_event_archive_excerpt_length' ) ) :
    /**
     * Custom excerpt length
     * 
     * @package News Event
     * @since 1.0.0
     */
    function news_event_archive_excerpt_length( $length ) {
        return 20;
    }
endif;

if( ! function_exists( 'news_event_banner_excerpt_length' ) ) :
    /**
     * Banner Custom excerpt length
     * 
     * @package News Event
     * @since 1.0.0
     */
    function news_event_banner_excerpt_length( $length ) {
        return 15;
    }
endif;

if( ! function_exists( 'news_event_archive_excerpt_more_string' ) ) :
    /**
     * Excerpt more string filter
     * 
     * @package News Event
     * @since 1.0.0
     */
    function news_event_archive_excerpt_more_string( $more ) {
        return '...';
    }
    add_filter('excerpt_more', 'news_event_archive_excerpt_more_string');
endif;

if( ! function_exists( 'news_event_pagination_fnc' ) ) :
    /**
     * Renders pagination html
     * 
     * @package News Event
     * @since 1.0.0
     */
    function news_event_pagination_fnc() {
        if( is_null( paginate_links() ) ) {
            return;
        }
        $pagination_type = NEV\news_event_get_customizer_option( 'archive_pagination_type' );
        switch( $pagination_type ) {
            case 'number' : echo '<div class="pagination">' .wp_kses_post( paginate_links( array( 'prev_text' => '<i class="fas fa-chevron-left"></i>', 'next_text' => '<i class="fas fa-chevron-right"></i>', 'type' => 'list' ) ) ). '</div>';
                    break;
            default : echo '<div class="pagination">' .wp_kses_post( get_the_posts_navigation() ). '</div>';
                    break;
        }
    }
    add_action( 'news_event_pagination_link_hook', 'news_event_pagination_fnc' );
 endif;

 if( ! function_exists( 'news_event_header_theme_mode_icon_part' ) ) :
    /**
     * Header theme mode element
     * 
     * @since 1.0.0
     */
     function news_event_header_theme_mode_icon_part() {
        if( ! NEV\news_event_get_customizer_option( 'header_theme_mode_toggle_option' ) ) return;
        $theme_mode = array_key_exists( 'themeMode', $_COOKIE ) ? $_COOKIE['themeMode'] : 'light';
        $news_event_dark_mode = ( $theme_mode == 'dark' ) ? true : false;
        ?>
            <div class="blaze-switcher-button<?php if( $news_event_dark_mode ) echo " active"; ?>">
                <div class="blaze-switcher-button-inner-left"></div>
                <div class="blaze-switcher-button-inner"></div>
            </div>
        <?php
     }
     add_action( 'news_event_after_footer_hook', 'news_event_header_theme_mode_icon_part', 10 );
 endif;

 if( ! function_exists( 'news_event_scroll_to_top_html' ) ) :
    /**
     * Scroll to top fnc
     * 
     * @package News Event
     * @since 1.0.0
     */
    function news_event_scroll_to_top_html() {
        if( ! NEV\news_event_get_customizer_option('stt_responsive_option') ) return;
    ?>
        <div id="news-event-scroll-to-top" class="align--right">
            <span class="icon-holder"><i class="fa-solid fa-angle-up"></i></span>
        </div><!-- #news-event-scroll-to-top -->
    <?php
    }
    add_action( 'news_event_after_footer_hook', 'news_event_scroll_to_top_html', 20 );
 endif;

 if( ! function_exists( 'news_event_get_background_and_cursor_animation' ) ) :
    /**
     * Renders html for cursor and background animation
     * 
     * @since 1.0.0
     */
    function news_event_get_background_and_cursor_animation() {
        $site_background_animation = NEV\news_event_get_customizer_option( 'site_background_animation' );
        if( $site_background_animation !== 'none' ) news_event_shooting_star_animation_html();
        $cursor_animation = NEV\news_event_get_customizer_option( 'cursor_animation' );
        $cursorclass = 'news-event-cursor';
        if( $cursor_animation != 'none' ) $cursorclass .= ' type--' . $cursor_animation;
        if( in_array( $cursor_animation, [ 'one', 'two' ] ) ) echo '<div class="'. esc_attr( $cursorclass ) .'"></div>';
    }
    add_action( 'news_event_after_footer_hook', 'news_event_get_background_and_cursor_animation', 30 );
 endif;

 if( ! function_exists( 'news_event_shooting_star_animation_html' ) ) :
    /**
     * Background animation one
     * 
     * @package News Event
     * @since 1.0.0
     */
    function news_event_shooting_star_animation_html() {
        $elementClass = 'news-event-background-animation';
        ?>
            <div class="<?php echo esc_attr( $elementClass ); ?>">
                <?php
                    for( $i = 0; $i < 13; $i++ ) :
                        echo '<span class="item"></span>';
                    endfor;
                ?>
            </div>
        <?php
    }
endif;

if( ! function_exists( 'news_event_loader_html' ) ) :
	/**
     * Preloader html
     * 
     * @package News Event
     * @since 1.0.0
     */
	function news_event_loader_html() {
        if( ! NEV\news_event_get_customizer_option( 'preloader_option' ) ) return;
	?>
		<div class="news_event_loading_box">
			<div class="box">
				<div class="loader-item loader-<?php echo esc_attr( NEV\news_event_get_customizer_option( 'preloader_type' ) ); ?>"></div>
			</div>
		</div>
	<?php
	}
    add_action( 'news_event_page_prepend_hook', 'news_event_loader_html', 1 );
endif;

 if( ! function_exists( 'news_event_custom_header_html' ) ) :
    /**
     * Site custom header html
     * 
     * @package News Event
     * @since 1.0.0
     */
    function news_event_custom_header_html() {
        /**
         * Get custom header markup
         * 
         * @since 1.0.0 
         */
        the_custom_header_markup();
    }
    add_action( 'news_event_page_prepend_hook', 'news_event_custom_header_html', 20 );
 endif;

 if( ! function_exists( 'news_event_single_layout_part' ) ) :
    /**
     * Renders part of single layout including meta, title, thumb and category
     * 
     * @since 1.0.0
     */
    function news_event_single_layout_part() {
        if( ! is_single() ) return;
        $elementClass = 'entry-header';

        $single_post_image_caption = NEV\news_event_get_customizer_option( 'single_post_image_caption' );
        $single_post_show_original_image_option = NEV\news_event_get_customizer_option( 'single_post_show_original_image_option' );
        ?>
            <header class="<?php echo esc_attr( $elementClass ); ?>">
                <?php news_event_post_thumbnail( $single_post_show_original_image_option, $single_post_image_caption ); ?>
                <div class="elements-wrapper">
                    <?php
                        news_event_get_post_categories( get_the_ID(), 2 );
                        the_title( '<h1 class="entry-title"' .news_event_schema_article_name_attributes(). '>', '</h1>' );
                        if ( 'post' === get_post_type() ) :
                            ?>
                                <div class="entry-meta">
                                    <?php
                                        news_event_posted_by();
                                        news_event_posted_on();
                                        news_event_comments_number();
                                        echo '<span class="read-time fas fa-clock">' .news_event_post_read_time( get_the_content() ). ' ' .esc_html__( 'mins', 'news-event' ). '</span>';
                                    ?>
                                </div><!-- .entry-meta -->
                            <?php 
                        endif;
                    ?>
                </div>
            </header><!-- .entry-header -->
        <?php
    }
 endif;

 if( ! function_exists( 'news_event_convert_number_to_numeric_string' )) :
    /**
     * Function to convert int parameter to numeric string
     * 
     * @return string
     */
    function news_event_convert_number_to_numeric_string( $int ) {
        switch( $int ){
            case 2:
                return "two";
                break;
            case 3:
                return "three";
                break;
            case 4:
                return "four";
                break;
            case 5:
                return "five";
                break;
            case 6:
                return "six";
                break;
            case 7:
                return "seven";
                break;
            case 8:
                return "eight";
                break;
            case 9:
                return "nine";
                break;
            case 10:
                return "ten";
                break;
            default:
                return "one";
        }
    }
 endif;

 if( ! function_exists( 'news_event_get_icon_control_html' ) ) :
    /**
     * Generates output for icon control
     * 
     * @since 1.0.0
     */
    function news_event_get_icon_control_html( $archive_date_icon ) {
        if( $archive_date_icon['type'] == 'none' ) return;
        switch( $archive_date_icon['type'] ) {
            case 'svg' : $output = '<img src="' .esc_url( wp_get_attachment_url( $archive_date_icon['value'] ) ). '"/>';
                    break;
            default: $output = '<i class="' .esc_attr( $archive_date_icon['value'] ). '"></i>';
        }
        return $output;
    }
endif;