<?php
/**
 * Custom Functions
 * @package Beauty Parlour Salon
 * @since 1.0.0
 */

if( !function_exists('beauty_parlour_salon_site_logo') ):

    /**
     * Logo & Description
     */
    /**
     * Displays the site logo, either text or image.
     *
     * @param array $beauty_parlour_salon_args Arguments for displaying the site logo either as an image or text.
     * @param boolean $beauty_parlour_salon_echo Echo or return the HTML.
     *
     * @return string $beauty_parlour_salon_html Compiled HTML based on our arguments.
     */
    function beauty_parlour_salon_site_logo( $beauty_parlour_salon_args = array(), $beauty_parlour_salon_echo = true ){
        $beauty_parlour_salon_logo = get_custom_logo();
        $beauty_parlour_salon_site_title = get_bloginfo('name');
        $beauty_parlour_salon_contents = '';
        $beauty_parlour_salon_classname = '';
        $beauty_parlour_salon_defaults = array(
            'logo' => '%1$s<span class="screen-reader-text">%2$s</span>',
            'logo_class' => 'site-logo site-branding',
            'title' => '<a href="%1$s" class="custom-logo-name">%2$s</a>',
            'title_class' => 'site-title',
            'home_wrap' => '<h1 class="%1$s">%2$s</h1>',
            'single_wrap' => '<div class="%1$s">%2$s</div>',
            'condition' => (is_front_page() || is_home()) && !is_page(),
        );
        $beauty_parlour_salon_args = wp_parse_args($beauty_parlour_salon_args, $beauty_parlour_salon_defaults);
        /**
         * Filters the arguments for `beauty_parlour_salon_site_logo()`.
         *
         * @param array $beauty_parlour_salon_args Parsed arguments.
         * @param array $beauty_parlour_salon_defaults Function's default arguments.
         */
        $beauty_parlour_salon_args = apply_filters('beauty_parlour_salon_site_logo_args', $beauty_parlour_salon_args, $beauty_parlour_salon_defaults);
        
        $beauty_parlour_salon_show_logo  = get_theme_mod('beauty_parlour_salon_display_logo', false);
        $beauty_parlour_salon_show_title = get_theme_mod('beauty_parlour_salon_display_title', true);

        if ( has_custom_logo() && $beauty_parlour_salon_show_logo ) {
            $beauty_parlour_salon_contents .= sprintf($beauty_parlour_salon_args['logo'], $beauty_parlour_salon_logo, esc_html($beauty_parlour_salon_site_title));
            $beauty_parlour_salon_classname = $beauty_parlour_salon_args['logo_class'];
        }

        if ( $beauty_parlour_salon_show_title ) {
            $beauty_parlour_salon_contents .= sprintf($beauty_parlour_salon_args['title'], esc_url(get_home_url(null, '/')), esc_html($beauty_parlour_salon_site_title));
            // If logo isn't shown, fallback to title class for wrapper.
            if ( !$beauty_parlour_salon_show_logo ) {
                $beauty_parlour_salon_classname = $beauty_parlour_salon_args['title_class'];
            }
        }

        // If nothing is shown (logo or title both disabled), exit early
        if ( empty($beauty_parlour_salon_contents) ) {
            return;
        }

        $beauty_parlour_salon_wrap = $beauty_parlour_salon_args['condition'] ? 'home_wrap' : 'single_wrap';
        // $beauty_parlour_salon_wrap = 'home_wrap';
        $beauty_parlour_salon_html = sprintf($beauty_parlour_salon_args[$beauty_parlour_salon_wrap], $beauty_parlour_salon_classname, $beauty_parlour_salon_contents);
        /**
         * Filters the arguments for `beauty_parlour_salon_site_logo()`.
         *
         * @param string $beauty_parlour_salon_html Compiled html based on our arguments.
         * @param array $beauty_parlour_salon_args Parsed arguments.
         * @param string $beauty_parlour_salon_classname Class name based on current view, home or single.
         * @param string $beauty_parlour_salon_contents HTML for site title or logo.
         */
        $beauty_parlour_salon_html = apply_filters('beauty_parlour_salon_site_logo', $beauty_parlour_salon_html, $beauty_parlour_salon_args, $beauty_parlour_salon_classname, $beauty_parlour_salon_contents);
        if (!$beauty_parlour_salon_echo) {
            return $beauty_parlour_salon_html;
        }
        echo $beauty_parlour_salon_html; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped

    }

endif;

if( !function_exists('beauty_parlour_salon_site_description') ):

    /**
     * Displays the site description.
     *
     * @param boolean $beauty_parlour_salon_echo Echo or return the html.
     *
     * @return string $beauty_parlour_salon_html The HTML to display.
     */
    function beauty_parlour_salon_site_description($beauty_parlour_salon_echo = true){

        if ( get_theme_mod('beauty_parlour_salon_display_header_text', false) == true ) :
        $beauty_parlour_salon_description = get_bloginfo('description');
        if (!$beauty_parlour_salon_description) {
            return;
        }
        $beauty_parlour_salon_wrapper = '<div class="site-description"><span>%s</span></div><!-- .site-description -->';
        $beauty_parlour_salon_html = sprintf($beauty_parlour_salon_wrapper, esc_html($beauty_parlour_salon_description));
        /**
         * Filters the html for the site description.
         *
         * @param string $beauty_parlour_salon_html The HTML to display.
         * @param string $beauty_parlour_salon_description Site description via `bloginfo()`.
         * @param string $beauty_parlour_salon_wrapper The format used in case you want to reuse it in a `sprintf()`.
         * @since 1.0.0
         *
         */
        $beauty_parlour_salon_html = apply_filters('beauty_parlour_salon_site_description', $beauty_parlour_salon_html, $beauty_parlour_salon_description, $beauty_parlour_salon_wrapper);
        if (!$beauty_parlour_salon_echo) {
            return $beauty_parlour_salon_html;
        }
        echo $beauty_parlour_salon_html; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
        endif;
    }

endif;

if( !function_exists('beauty_parlour_salon_posted_on') ):

    /**
     * Prints HTML with meta information for the current post-date/time.
     */
    function beauty_parlour_salon_posted_on( $beauty_parlour_salon_icon = true, $animation_class = '' ){

        $beauty_parlour_salon_default = beauty_parlour_salon_get_default_theme_options();
        $beauty_parlour_salon_post_date = absint( get_theme_mod( 'beauty_parlour_salon_post_date',$beauty_parlour_salon_default['beauty_parlour_salon_post_date'] ) );

        if( $beauty_parlour_salon_post_date ){

            $beauty_parlour_salon_time_string = '<time class="entry-date published updated" datetime="%1$s">%2$s</time>';
            if (get_the_time('U') !== get_the_modified_time('U')) {
                $beauty_parlour_salon_time_string = '<time class="entry-date published" datetime="%1$s">%2$s</time><time class="updated" datetime="%3$s">%4$s</time>';
            }

            $beauty_parlour_salon_time_string = sprintf($beauty_parlour_salon_time_string,
                esc_attr(get_the_date(DATE_W3C)),
                esc_html(get_the_date()),
                esc_attr(get_the_modified_date(DATE_W3C)),
                esc_html(get_the_modified_date())
            );

            $beauty_parlour_salon_year = get_the_date('Y');
            $beauty_parlour_salon_month = get_the_date('m');
            $beauty_parlour_salon_day = get_the_date('d');
            $beauty_parlour_salon_link = get_day_link($beauty_parlour_salon_year, $beauty_parlour_salon_month, $beauty_parlour_salon_day);

            $beauty_parlour_salon_posted_on = '<a href="' . esc_url($beauty_parlour_salon_link) . '" rel="bookmark">' . $beauty_parlour_salon_time_string . '</a>';

            echo '<div class="entry-meta-item entry-meta-date">';
            echo '<div class="entry-meta-wrapper '.esc_attr( $animation_class ).'">';

            if( $beauty_parlour_salon_icon ){

                echo '<span class="entry-meta-icon calendar-icon"> ';
                beauty_parlour_salon_the_theme_svg('calendar');
                echo '</span>';

            }

            echo '<span class="posted-on">' . $beauty_parlour_salon_posted_on . '</span>'; // WPCS: XSS OK.
            echo '</div>';
            echo '</div>';

        }

    }

endif;

if( !function_exists('beauty_parlour_salon_posted_by') ) :

    /**
     * Prints HTML with meta information for the current author.
     */
    function beauty_parlour_salon_posted_by( $beauty_parlour_salon_icon = true, $animation_class = '' ){   

        $beauty_parlour_salon_default = beauty_parlour_salon_get_default_theme_options();
        $beauty_parlour_salon_post_author = absint( get_theme_mod( 'beauty_parlour_salon_post_author',$beauty_parlour_salon_default['beauty_parlour_salon_post_author'] ) );

        if( $beauty_parlour_salon_post_author ){

            echo '<div class="entry-meta-item entry-meta-author">';
            echo '<div class="entry-meta-wrapper '.esc_attr( $animation_class ).'">';

            if( $beauty_parlour_salon_icon ){
            
                echo '<span class="entry-meta-icon author-icon"> ';
                beauty_parlour_salon_the_theme_svg('user');
                echo '</span>';
                
            }

            $beauty_parlour_salon_byline = '<span class="author vcard"><a class="url fn n" href="' . esc_url( get_author_posts_url( get_the_author_meta('ID') ) ) . '">' . esc_html(get_the_author()) . '</a></span>';
            echo '<span class="byline"> ' . $beauty_parlour_salon_byline . '</span>'; // WPCS: XSS OK.
            echo '</div>';
            echo '</div>';

        }

    }

endif;


if( !function_exists('beauty_parlour_salon_posted_by_avatar') ) :

    /**
     * Prints HTML with meta information for the current author.
     */
    function beauty_parlour_salon_posted_by_avatar( $beauty_parlour_salon_date = false ){

        $beauty_parlour_salon_default = beauty_parlour_salon_get_default_theme_options();
        $beauty_parlour_salon_post_author = absint( get_theme_mod( 'beauty_parlour_salon_post_author',$beauty_parlour_salon_default['beauty_parlour_salon_post_author'] ) );

        if( $beauty_parlour_salon_post_author ){



            echo '<div class="entry-meta-left">';
            echo '<div class="entry-meta-item entry-meta-avatar">';
            echo wp_kses_post( get_avatar( get_the_author_meta( 'ID' ) ) );
            echo '</div>';
            echo '</div>';

            echo '<div class="entry-meta-right">';

            $beauty_parlour_salon_byline = '<span class="author vcard"><a class="url fn n" href="' . esc_url( get_author_posts_url( get_the_author_meta('ID') ) ) . '">' . esc_html(get_the_author()) . '</a></span>';

            echo '<div class="entry-meta-item entry-meta-byline"> ' . $beauty_parlour_salon_byline . '</div>';

            if( $beauty_parlour_salon_date ){
                beauty_parlour_salon_posted_on($beauty_parlour_salon_icon = false);
            }
            echo '</div>';

        }

    }

endif;

if( !function_exists('beauty_parlour_salon_entry_footer') ):

    /**
     * Prints HTML with meta information for the categories, tags and comments.
     */
    function beauty_parlour_salon_entry_footer( $beauty_parlour_salon_cats = true, $beauty_parlour_salon_tags = true, $beauty_parlour_salon_edits = true){   

        $beauty_parlour_salon_default = beauty_parlour_salon_get_default_theme_options();
        $beauty_parlour_salon_post_category = absint( get_theme_mod( 'beauty_parlour_salon_post_category',$beauty_parlour_salon_default['beauty_parlour_salon_post_category'] ) );
        $beauty_parlour_salon_post_tags = absint( get_theme_mod( 'beauty_parlour_salon_post_tags',$beauty_parlour_salon_default['beauty_parlour_salon_post_tags'] ) );

        // Hide category and tag text for pages.
        if ('post' === get_post_type()) {

            if( $beauty_parlour_salon_cats && $beauty_parlour_salon_post_category ){

                /* translators: used between list items, there is a space after the comma */
                $beauty_parlour_salon_categories = get_the_category();
                if ($beauty_parlour_salon_categories) {
                    echo '<div class="entry-meta-item entry-meta-categories">';
                    echo '<div class="entry-meta-wrapper">';
                
                    /* translators: 1: list of categories. */
                    echo '<span class="cat-links">';
                    foreach( $beauty_parlour_salon_categories as $beauty_parlour_salon_category ){

                        $beauty_parlour_salon_cat_name = $beauty_parlour_salon_category->name;
                        $beauty_parlour_salon_cat_slug = $beauty_parlour_salon_category->slug;
                        $beauty_parlour_salon_cat_url = get_category_link( $beauty_parlour_salon_category->term_id );
                        ?>

                        <a class="twp_cat_<?php echo esc_attr( $beauty_parlour_salon_cat_slug ); ?>" href="<?php echo esc_url( $beauty_parlour_salon_cat_url ); ?>" rel="category tag"><?php echo esc_html( $beauty_parlour_salon_cat_name ); ?></a>

                    <?php }
                    echo '</span>'; // WPCS: XSS OK.
                    echo '</div>';
                    echo '</div>';
                }

            }

            if( $beauty_parlour_salon_tags && $beauty_parlour_salon_post_tags ){
                /* translators: used between list items, there is a space after the comma */
                $beauty_parlour_salon_tags_list = get_the_tag_list('', esc_html_x(', ', 'list item separator', 'beauty-parlour-salon'));
                if( $beauty_parlour_salon_tags_list ){

                    echo '<div class="entry-meta-item entry-meta-tags">';
                    echo '<div class="entry-meta-wrapper">';

                    /* translators: 1: list of tags. */
                    echo '<span class="tags-links">';
                    echo wp_kses_post($beauty_parlour_salon_tags_list) . '</span>'; // WPCS: XSS OK.
                    echo '</div>';
                    echo '</div>';

                }

            }

            if( $beauty_parlour_salon_edits ){

                edit_post_link(
                    sprintf(
                        wp_kses(
                        /* translators: %s: Name of current post. Only visible to screen readers */
                            __('Edit <span class="screen-reader-text">%s</span>', 'beauty-parlour-salon'),
                            array(
                                'span' => array(
                                    'class' => array(),
                                ),
                            )
                        ),
                        get_the_title()
                    ),
                    '<span class="edit-link">',
                    '</span>'
                );
            }

        }
    }

endif;

if ( ! function_exists( 'beauty_parlour_salon_post_thumbnail' ) ) :

    /**
     * Displays an optional post thumbnail.
     *
     * Shows background style image with height class on archive/search/front,
     * and a normal inline image on single post/page views.
     */
    function beauty_parlour_salon_post_thumbnail( $beauty_parlour_salon_image_size = 'medium' ) {

        if ( post_password_required() || is_attachment() ) {
            return;
        }

        // Fallback image path
        $beauty_parlour_salon_default_image = get_template_directory_uri() . '/assets/images/default.png';

        // Image size → height class map
        $beauty_parlour_salon_size_class_map = array(
            'full'      => 'data-bg-large',
            'large'     => 'data-bg-big',
            'medium'    => 'data-bg-medium',
            'small'     => 'data-bg-small',
            'xsmall'    => 'data-bg-xsmall',
            'thumbnail' => 'data-bg-thumbnail',
        );

        $beauty_parlour_salon_class = isset( $beauty_parlour_salon_size_class_map[ $beauty_parlour_salon_image_size ] )
            ? $beauty_parlour_salon_size_class_map[ $beauty_parlour_salon_image_size ]
            : 'data-bg-medium';

        if ( is_singular() ) {
            the_post_thumbnail();
        } else {
            // 🔵 On archives → use background image style
            $beauty_parlour_salon_image = has_post_thumbnail()
                ? wp_get_attachment_image_src( get_post_thumbnail_id(), $beauty_parlour_salon_image_size )
                : array( $beauty_parlour_salon_default_image );

            $beauty_parlour_salon_bg_image = isset( $beauty_parlour_salon_image[0] ) ? $beauty_parlour_salon_image[0] : $beauty_parlour_salon_default_image;
            ?>
            <div class="post-thumbnail data-bg <?php echo esc_attr( $beauty_parlour_salon_class ); ?>"
                 data-background="<?php echo esc_url( $beauty_parlour_salon_bg_image ); ?>">
                <a href="<?php the_permalink(); ?>" class="theme-image-responsive" tabindex="0"></a>
            </div>
            <?php
        }
    }

endif;

if( !function_exists('beauty_parlour_salon_is_comment_by_post_author') ):

    /**
     * Comments
     */
    /**
     * Check if the specified comment is written by the author of the post commented on.
     *
     * @param object $beauty_parlour_salon_comment Comment data.
     *
     * @return bool
     */
    function beauty_parlour_salon_is_comment_by_post_author($beauty_parlour_salon_comment = null){

        if (is_object($beauty_parlour_salon_comment) && $beauty_parlour_salon_comment->user_id > 0) {
            $beauty_parlour_salon_user = get_userdata($beauty_parlour_salon_comment->user_id);
            $post = get_post($beauty_parlour_salon_comment->comment_post_ID);
            if (!empty($beauty_parlour_salon_user) && !empty($post)) {
                return $beauty_parlour_salon_comment->user_id === $post->post_author;
            }
        }
        return false;
    }

endif;

if( !function_exists('beauty_parlour_salon_breadcrumb') ) :

    /**
     * Beauty Parlour Salon Breadcrumb
     */
    function beauty_parlour_salon_breadcrumb($beauty_parlour_salon_comment = null){

        echo '<div class="entry-breadcrumb">';
        beauty_parlour_salon_breadcrumb_trail();
        echo '</div>';

    }

endif;

if( ! function_exists( 'beauty_parlour_salon_page_banner_title' ) ) :

function beauty_parlour_salon_page_banner_title() {

    if ( function_exists( 'is_shop' ) && is_shop() ) {
        return woocommerce_page_title( false );

    } elseif ( is_singular() ) {
        return get_the_title();

    } elseif ( is_home() ) {
        $beauty_parlour_salon_posts_page_id = get_option( 'page_for_posts' );
        return $beauty_parlour_salon_posts_page_id ? get_the_title( $beauty_parlour_salon_posts_page_id ) : esc_html__( 'Blog', 'beauty-parlour-salon' );

    } elseif ( is_search() ) {
        return sprintf(
            esc_html__( 'Search Results for: %s', 'beauty-parlour-salon' ),
            get_search_query()
        );

    } elseif ( is_404() ) {
        return esc_html__( 'Page Not Found', 'beauty-parlour-salon' );

    } elseif ( is_tag() ) {
        return single_tag_title( 'Tag: ', false );

    } elseif ( is_category() ) {
        return single_cat_title( 'Category: ', false );

    } elseif ( is_archive() ) {
        return wp_strip_all_tags( get_the_archive_title() );
    }

    return get_the_title();
}

endif;