<?php

if ( ! defined( 'ABSPATH' ) ) {  exit;  }    // Exit if accessed directly


function avia_bbpress_enabled()
{
	if (class_exists( 'bbPress' )) { return true; }
	return false;
}

//check if the plugin is enabled, otherwise stop the script
if(!avia_bbpress_enabled()) { return false; }


global $avia_config;


//register my own styles
add_filter('bbp_default_styles', 'avia_bbpress_deregister_default_assets', 10, 1);
function avia_bbpress_deregister_default_assets($styles)
{
	return array();
}

if(!is_admin()){ add_action('bbp_enqueue_scripts', 'avia_bbpress_register_assets',15); }

function avia_bbpress_register_assets()
{
	global $bbp;
	wp_enqueue_style( 'avia-bbpress', AVIA_BASE_URL.'config-bbpress/bbpress-mod.css');
}



//add classnames to topic class for even nicer icon display
add_filter('bbp_get_topic_class', 'avia_bbpress_add_topic_class');
function avia_bbpress_add_topic_class($classes)
{
	$voices = bbp_get_topic_voice_count() > 1 ? "multi" : "single";

	$classes[] = 'topic-voices-'.$voices;
	return $classes;
}



//remove forum and single topic summaries at the top of the page
add_filter('bbp_get_single_forum_description', 'avia_bbpress_filter_form_message',10,2 );
add_filter('bbp_get_single_topic_description', 'avia_bbpress_filter_form_message',10,2 );



add_filter( 'avia_style_filter', 'avia_bbpress_forum_colors', 10, 1 );
/* add some color modifications to the forum table items */
function avia_bbpress_forum_colors( array $config )
{
	
	return $config;
}


function avia_bbpress_filter_form_message( $retstr, $args )
{
	//removes forum summary, voices count etc
	return false;
}



/*modify default breadcrumb to work better with bb forums*/

if(!function_exists('avia_fetch_bb_trail'))
{
	//fetch bb trail and set the bb breadcrum output to false
	function avia_fetch_bb_trail($trail, $breadcrumbs, $r)
	{
		global $avia_config;
		$avia_config['bbpress_trail'] = $breadcrumbs;
		
		return false;
	}
	
	add_filter('bbp_get_breadcrumb','avia_fetch_bb_trail',10,3);
}

if(!function_exists('avia_bbpress_breadcrumb'))
{
	//if we are viewing a forum page set the avia breadcrumb output to match the forum breadcrumb output
	function avia_bbpress_breadcrumb($trail)
	{ 
		global $avia_config;
	
		if((isset($avia_config['currently_viewing']) && $avia_config['currently_viewing'] == 'forum') || get_post_type() === "forum" || get_post_type() === "topic")
		{
			$bc = bbp_get_breadcrumb();
			
			if(isset($avia_config['bbpress_trail'] )) 
			{ 
				$trail_zero = $trail[0];
				$trail = $avia_config['bbpress_trail'] ;
				$trail[0] = $trail_zero;
			}
			
			if((bbp_is_single_user_edit() || bbp_is_single_user()))
			{
				$user_info = get_userdata(bbp_get_displayed_user_id());
				$title = __("Profile for User:","avia_framework")." ".$user_info->display_name;
				array_pop($trail);
				$trail[] = $title;
			}
		}			
		return $trail;
	}
	
	
	add_filter('avia_breadcrumbs_trail','avia_bbpress_breadcrumb');
}




	register_sidebar(array(
		'name' => 'Forum',
		'before_widget' => '<div id="%1$s" class="widget clearfix %2$s">', 
		'after_widget' => '<span class="seperator extralight-border"></span></div>', 
		'before_title' => '<h3 class="widgettitle">', 
		'after_title' => '</h3>',
		'id' => 'av_forum' 
	));
	
/*
	
	add_filter('bbp_view_widget_title', 'avia_widget_title');
	add_filter('bbp_login_widget_title', 'avia_widget_title');
	add_filter('bbp_forum_widget_title', 'avia_widget_title');
	add_filter('bbp_topic_widget_title', 'avia_widget_title');
	add_filter('bbp_replies_widget_title', 'avia_widget_title');
*/


if(!function_exists('avia_remove_bbpress_post_type_options'))
{
	function avia_remove_bbpress_post_type_options($post_type_option, $args)
	{
	    if(!empty($post_type_option))
	    {
	        foreach($post_type_option as $key => $post_type)
	        {
	            if($post_type == 'forum' || $post_type == 'topic' || $post_type == 'reply')
	            {
	                unset($post_type_option[$key]);
	            }
	        }
	    }
	
	    return $post_type_option;
	}
	
	add_filter('avf_registered_post_type_array', 'avia_remove_bbpress_post_type_options', 10, 2);
}


if(!function_exists('avia_remove_bbpress_post_type_from_query'))
{
	function avia_remove_bbpress_post_type_from_query($query, $params)
	{
	    if(!empty($query['post_type']) && is_array($query['post_type']))
	    {
	        foreach($query['post_type'] as $key => $post_type)
	        {
	            if($post_type == 'forum' || $post_type == 'topic' || $post_type == 'reply')
	            {
	                unset($query['post_type'][$key]);
	            }
	        }
	    }
	
	    return $query;
	}
	
	add_filter('avia_masonry_entries_query', 'avia_remove_bbpress_post_type_from_query', 10, 2);
	add_filter('avia_post_grid_query', 'avia_remove_bbpress_post_type_from_query', 10, 2);
	add_filter('avia_post_slide_query', 'avia_remove_bbpress_post_type_from_query', 10, 2);
	add_filter('avia_blog_post_query', 'avia_remove_bbpress_post_type_from_query', 10, 2);
	add_filter('avf_magazine_entries_query', 'avia_remove_bbpress_post_type_from_query', 10, 2);
	add_filter('avf_accordion_entries_query', 'avia_remove_bbpress_post_type_from_query', 10, 2);
}



if( ! function_exists( 'avia_bbpress_avf_post_nav_settings' ) )
{
	/**
	 * Remove bbPress pottpes from post nav links
	 * 
	 * @since 4.5.6
	 * @param array $settings
	 * @return array
	 */
	function avia_bbpress_avf_post_nav_settings( array $settings )
	{
		if( in_array( $settings['type'], array( 'topic',  'reply' ) ) )
		{
			$settings['skip_output'] = true;
		}
		
		return $settings;
	}
	
	add_filter( 'avf_post_nav_settings', 'avia_bbpress_avf_post_nav_settings', 10, 1 );
}


if( ! function_exists( 'avia_bbpress_before_page_in_footer_compile' ) )
{
	/**
	 * BBPress alters the content filter on its pages. We need to reset this to allow our shortcodes to run
	 * 
	 * @since 4.5.6.1
	 * @param WP_Post $footer_page
	 * @param int $post_id
	 */
	function avia_bbpress_before_page_in_footer_compile( WP_Post $footer_page, $post_id )
	{
		$current = get_post( $post_id );
		$forum_page = false;
		
		if( bbp_is_single_user() || bbp_is_single_user_edit() || bbp_is_user_home() || bbp_is_user_home_edit()  )
		{
			$forum_page = true;
		}
		else if( bbp_is_topics_created() || bbp_is_replies_created() || bbp_is_favorites() || bbp_is_subscriptions() )
		{
			$forum_page = true;
		}
		else if( bbp_is_forum_archive() )
		{
			$forum_page = true;
		}
		else
		{
			if( ! $current instanceof WP_Post )
			{
				return;
			}
		}
		
		/**
		 * https://kriesi.at/support/topic/bbpress-enfold-custom-footer-issue/#post-1195677
		 * 
		 * @since 4.7.4.1
		 */
		$classes = get_body_class();
		if( in_array( 'bbpress', $classes ) )
		{
			$forum_page = true;
		}
		
		
		$bbp_post_types = array(
								bbp_get_forum_post_type(),
								bbp_get_topic_post_type(),
								bbp_get_reply_post_type()
							);
		
		if( $forum_page || in_array( $current->post_type, $bbp_post_types ) )
		{
			bbp_restore_all_filters( 'the_content' );
		}
	}
	
	add_action( 'ava_before_page_in_footer_compile', 'avia_bbpress_before_page_in_footer_compile', 10, 2 );
}

