<?php
/**
 * Common functions used in backend and frontend of the theme.
 *
 * @package     Business Interface
 * @author      WPInterface Team
 * @since       1.0.0
 */

/**
 * Do not allow direct script access.
 */
if (!defined('ABSPATH')) {
	exit;
}

if (!function_exists('business_interface_get_allowed_html_tags')) {
	/**
	 * Array of allowed HTML Tags.
	 *
	 * @since 1.0.0
	 * @param string $type predefined HTML tags group name.
	 * @return array, allowed HTML tags.
	 */
	function business_interface_get_allowed_html_tags($type = 'post')
	{

		$tags = array();

		switch ($type) {

			case 'basic':
				$tags = array(
					'strong' => array(),
					'em' => array(),
					'b' => array(),
					'br' => array(),
					'i' => array(
						'class' => array(),
					),
					'img' => array(
						'src' => array(),
						'alt' => array(),
						'width' => array(),
						'height' => array(),
						'class' => array(),
						'id' => array(),
					),
					'span' => array(
						'class' => array(),
					),
					'a' => array(
						'href' => array(),
						'rel' => array(),
						'target' => array(),
						'class' => array(),
						'role' => array(),
						'id' => array(),
					),
				);
				break;

			case 'button':
				$tags = array(
					'strong' => array(),
					'em' => array(),
					'span' => array(
						'class' => array(),
					),
					'i' => array(
						'class' => array(),
					),
				);
				break;

			case 'span':
				$tags = array(
					'span' => array(
						'class' => array(),
					),
				);
				break;

			case 'icon':
				$tags = array(
					'i' => array(),
					'span' => array(),
					'img' => array(),
				);
				break;

			case 'post':
				$tags = wp_kses_allowed_html('post');

				$tags = array_merge(
					$tags,
					array(
						'svg' => array(
							'class' => true,
							'xmlns' => true,
							'width' => true,
							'height' => true,
							'viewbox' => true,
							'aria-hidden' => true,
							'role' => true,
							'focusable' => true,
						),
						'path' => array(
							'fill' => true,
							'fill-rule' => true,
							'd' => true,
							'transform' => true,
						),
						'polygon' => array(
							'fill' => true,
							'fill-rule' => true,
							'points' => true,
							'transform' => true,
							'focusable' => true,
						),
						'title' => array(),
					)
				);

				break;

			case 'svg':
				$tags = array(
					'svg' => array(
						'class' => true,
						'xmlns' => true,
						'width' => true,
						'height' => true,
						'viewbox' => true,
						'aria-hidden' => true,
						'role' => true,
						'focusable' => true,
					),
					'path' => array(
						'fill' => true,
						'fill-rule' => true,
						'd' => true,
						'transform' => true,
					),
					'polygon' => array(
						'fill' => true,
						'fill-rule' => true,
						'points' => true,
						'transform' => true,
						'focusable' => true,
					),
					'title' => array(),
				);
				break;

			default:
				$tags = array(
					'strong' => array(),
					'em' => array(),
					'b' => array(),
					'i' => array(),
					'img' => array(
						'src' => array(),
						'alt' => array(),
						'width' => array(),
						'height' => array(),
						'class' => array(),
						'id' => array(),
					),
					'span' => array(),
					'a' => array(
						'href' => array(),
						'rel' => array(),
						'target' => array(),
						'class' => array(),
						'role' => array(),
						'id' => array(),
					),
				);
				break;
		}

		return apply_filters('business_interface_allowed_html_tags', $tags, $type);
	}
}

/**
 * Returns the value for option.
 *
 * @since 1.0.0
 *
 * @param  string $id Option ID.
 * @param  string $prefix Theme prefix.
 * @param  string $type Option or Theme Mod.
 * @return mixed Option value.
 */
function business_interface_option($id, $prefix = 'business_interface_', $type = 'theme_mod')
{

	if ('theme_mod' === $type) {
		return business_interface()->options->get($prefix . $id);
	} else {
		return get_option($prefix . $id, business_interface()->options->get($prefix . $id));
	}
}

/**
 * Get default for option.
 *
 * @since 1.1.0
 *
 * @param  string $id Option ID.
 * @param  string $prefix Theme prefix.
 * @return mixed Option value.
 */
function business_interface_get_default($id, $prefix = 'business_interface_')
{
	return business_interface()->options->get_default($prefix . $id);
}

/**
 * Checks to see if Top Bar is enabled.
 *
 * @since 1.0.0
 *
 * @param  int $post_id Optional. The post ID to check.
 * @return boolean if Top Bar is enabled.
 */
function business_interface_is_top_bar_displayed($post_id = 0)
{

	if (!$post_id) {
		$post_id = business_interface_get_the_id();
	}

	$top_bar_displayed = business_interface_option('top_bar_enable');

	if ($post_id && $top_bar_displayed) {
		$top_bar_displayed = !get_post_meta($post_id, 'business_interface_disable_topbar', true);
	}

	// Do not show top bar on 404 page.
	if (is_404()) {
		$top_bar_displayed = false;
	}

	return apply_filters('business_interface_is_top_bar_displayed', $top_bar_displayed, $post_id);
}

/**
 * Checks to see if Page Preloader is displayed.
 *
 * @since 1.0.0
 *
 * @return boolean, true if Preloader is displayed.
 */
function business_interface_is_preloader_displayed()
{

	$displayed = (bool) business_interface_option('preloader');

	return apply_filters('business_interface_is_preloader_displayed', $displayed);
}

/**
 * Checks to see if Header is displayed.
 *
 * @since 1.0.0
 *
 * @param  int $post_id Optional. The post ID to check.
 * @return boolean true if Header is displayed.
 */
function business_interface_is_header_displayed($post_id = 0)
{

	if (!$post_id) {
		$post_id = business_interface_get_the_id();
	}

	$displayed = true;

	if ($post_id) {
		$displayed = !get_post_meta($post_id, 'business_interface_disable_header', true);
	}

	return apply_filters('business_interface_is_header_displayed', $displayed, $post_id);
}

/**
 * Checks to see if Transparent Header is enabled.
 *
 * @since 1.0.0
 * @param  int $post_id Optional. The post ID to check.
 * @return boolean, true if Header is transparent.
 */
function business_interface_is_header_transparent($post_id = 0)
{

	if (!$post_id) {
		$post_id = business_interface_get_the_id();
	}

	$enabled = business_interface_option('tsp_header');

	if ($enabled && business_interface_is_section_disabled(business_interface_option('tsp_header_disable_on'), $post_id)) {
		$enabled = false;
	}

	if ($post_id) {

		$_meta = get_post_meta($post_id, 'business_interface_transparent_header', true);

		if ('enable' === $_meta) {
			$enabled = true;
		} elseif ('disable' === $_meta) {
			$enabled = false;
		}
	}

	return apply_filters('business_interface_transparent_header', $enabled, $post_id);
}

/**
 * Checks to see if Pre Footer is enabled.
 *
 * @since 1.0.0
 *
 * @param  int $post_id Optional. The post ID to check.
 * @return boolean true if Pre Footer is enabled.
 */
function business_interface_is_pre_footer_displayed($post_id = 0)
{

	if (!$post_id) {
		$post_id = business_interface_get_the_id();
	}

	$displayed = false;

	// Customizer option to enable pre-footer.
	if (business_interface_option('enable_pre_footer_cta')) {
		$displayed = true;
	}

	// At least one pre-footer are has to be enabled.
	if (!business_interface_is_pre_footer_cta_displayed($post_id)) {
		$displayed = false;
	}

	return apply_filters('business_interface_is_pre_footer_displayed', $displayed, $post_id);
}

/**
 * Checks to see if Pre Footer is enabled.
 *
 * @since 1.0.0
 *
 * @param  int $post_id Optional. The post ID to check.
 * @return boolean True if Pre Footer is enabled.
 */
function business_interface_is_pre_footer_cta_displayed($post_id = 0)
{

	if (!$post_id) {
		$post_id = business_interface_get_the_id();
	}

	$displayed = false;

	if (business_interface_option('enable_pre_footer_cta')) {
		$displayed = true;
	}

	if ($displayed && business_interface_is_section_disabled(business_interface_option('pre_footer_cta_hide_on'), $post_id)) {
		$displayed = false;
	}

	if ($post_id && $displayed) {
		$displayed = !get_post_meta($post_id, 'business_interface_disable_prefooter_cta', true);
	}

	// Do not show pre footer widgets on 404 page.
	if (is_404()) {
		$displayed = false;
	}

	return apply_filters('business_interface_is_pre_footer_cta_displayed', $displayed, $post_id);
}

/**
 * Checks to see if Hero section is enabled.
 *
 * @since 1.0.0
 *
 * @param  int $post_id Optional. The post ID to check.
 * @return boolean True if Hero is enabled.
 */
function business_interface_is_hero_displayed($post_id = 0)
{

	$displayed = true;

	if (!business_interface_option('enable_hero')) {
		$displayed = false;
	}

	if ($displayed && !business_interface_is_section_disabled(business_interface_option('hero_enable_on'), $post_id)) {
		$displayed = false;
	}

	return apply_filters('business_interface_is_hero_displayed', $displayed, $post_id);
}

/**
 * Checks to see if Main Footer is enabled.
 *
 * @since 1.0.0
 *
 * @param  int $post_id Optional. The post ID to check.
 * @return boolean, true if Main Footer is enabled.
 */
function business_interface_is_footer_displayed($post_id = 0)
{

	if (!$post_id) {
		$post_id = business_interface_get_the_id();
	}

	$footer_displayed = business_interface_option('enable_footer');

	if ($post_id && $footer_displayed) {
		$footer_displayed = !get_post_meta($post_id, 'business_interface_disable_footer', true);
	}

	// Do not show footer widgets on 404 page.
	if (is_404()) {
		$footer_displayed = false;
	}

	if ($footer_displayed && !current_user_can('edit_theme_options')) {

		$footer_columns = business_interface_get_footer_column_count();
		$footer_active = false;

		for ($i = 1; $i <= $footer_columns; $i++) {
			$footer_active = $footer_active || is_active_sidebar('business-interface-footer-' . $i);
		}

		$footer_displayed = $footer_displayed && $footer_active;
	}

	return apply_filters('business_interface_is_footer_displayed', $footer_displayed, $post_id);
}

/**
 * Checks to see if Copyright Bar is enabled.
 *
 * @since 1.0.0
 *
 * @param  int $post_id Optional. The post ID to check.
 * @return boolean, true if Copyright bar is enabled.
 */
function business_interface_is_copyright_bar_displayed($post_id = 0)
{

	if (!$post_id) {
		$post_id = business_interface_get_the_id();
	}

	$displayed = business_interface_option('enable_copyright');
	$widgets = business_interface_option('copyright_widgets');

	if ($displayed && !is_array($widgets) || empty($widgets)) {
		$displayed = false;
	}

	if ($post_id && $displayed) {
		$displayed = !get_post_meta($post_id, 'business_interface_disable_copyright', true);
	}

	// Do not show copyright bar on 404 page.
	if (is_404()) {
		$displayed = false;
	}

	return apply_filters('business_interface_is_copyright_displayed', $displayed, $post_id);
}

/**
 * Checks to see if Colophon section is enabled.
 *
 * @since 1.0.0
 *
 * @param  int $post_id Optional. The post ID to check.
 * @return boolean, true if Colophon is enabled.
 */
function business_interface_is_colophon_displayed($post_id = 0)
{

	if (!$post_id) {
		$post_id = business_interface_get_the_id();
	}

	$displayed = true;

	// Do not show colophon if both footer and copyright bar are not displayed.
	if (!business_interface_is_footer_displayed($post_id) && !business_interface_is_copyright_bar_displayed($post_id)) {
		$displayed = false;
	}

	// Do not show colophon on 404 page.
	if (is_404()) {
		$displayed = false;
	}

	return apply_filters('business_interface_is_colophon_displayed', $displayed, $post_id);
}

/**
 * Checks to see if Page Header is displayed.
 *
 * @since 1.0.0
 *
 * @param  int $post_id Optional. The post ID to check.
 * @return boolean, if Page Header is displayed.
 */
function business_interface_is_page_header_displayed($post_id = 0)
{

	if (!$post_id) {
		$post_id = business_interface_get_the_id();
	}

	$displayed = business_interface_option('page_header_enable');

	if ($post_id && $displayed) {
		$displayed = business_interface_page_header_has_title($post_id) || business_interface_page_header_has_breadcrumbs($post_id);
	} elseif (is_404()) {
		$displayed = false;
	}

	if (is_front_page()) {
		$displayed = false;
	}

	return apply_filters('business_interface_is_page_header_displayed', $displayed, $post_id);
}

/**
 * Checks to see if WooCommerce is installed & activated.
 *
 * @since 1.0.0
 * @return boolean, if Copyright bar is enabled.
 */
function business_interface_is_woocommerce_activated()
{
	return class_exists('woocommerce');
}

/**
 * Get registered sidebar name by sidebar ID.
 *
 * @since  1.0.0
 * @param  string $sidebar_id Sidebar ID.
 * @return string Sidebar name.
 */
function business_interface_get_sidebar_name_by_id($sidebar_id = '')
{

	if (!$sidebar_id) {
		return;
	}

	global $wp_registered_sidebars;
	$sidebar_name = '';

	if (isset($wp_registered_sidebars[$sidebar_id])) {
		$sidebar_name = $wp_registered_sidebars[$sidebar_id]['name'];
	}

	return $sidebar_name;
}

/**
 * Convert hexdec color string to rgb(a) string.
 *
 * @since  1.0.0
 * @param  string           $color Hex color code.
 * @param  string | boolean $opacity opacity value.
 * @return string color in rgba format.
 */
function business_interface_hex2rgba($color, $opacity = false)
{

	$default = 'rgb(0,0,0)';

	// Return default if no color provided.
	if (empty($color)) {
		return $default;
	}

	if (substr($color, 0, 4) === 'rgba') {
		return $color;
	}

	// Sanitize $color if "#" is provided.
	if ('#' === $color[0]) {
		$color = substr($color, 1);
	}

	// Check if color has 6 or 3 characters and get values.
	if (6 === strlen($color)) {
		$hex = array($color[0] . $color[1], $color[2] . $color[3], $color[4] . $color[5]);
	} elseif (3 === strlen($color)) {
		$hex = array($color[0] . $color[0], $color[1] . $color[1], $color[2] . $color[2]);
	} else {
		return $default;
	}

	// Convert hexadec to rgb.
	$rgb = array_map('hexdec', $hex);

	// Check if opacity is set(rgba or rgb).
	if ($opacity) {

		if (abs($opacity) > 1) {
			$opacity = 1;
		}

		$output = 'rgba(' . implode(',', $rgb) . ',' . $opacity . ')';
	} else {
		$output = 'rgb(' . implode(',', $rgb) . ')';
	}

	// Return rgb(a) color string.
	return $output;
}

/**
 * Convert rgb(a) color string to hex string.
 *
 * @since  1.0.0
 * @param  string $color rgb(a) color code.
 * @return string color in HEX format.
 */
function business_interface_rgba2hex($color)
{

	preg_match('/rgba?\(\s?([0-9]{1,3}),\s?([0-9]{1,3}),\s?([0-9]{1,3})/i', $color, $matches);

	if (!is_array($matches) || count($matches) < 3) {
		return false;
	}

	$hex = '';

	for ($i = 1; $i <= 3; $i++) {
		$x = dechex((int) $matches[$i]);

		$hex .= (1 === strlen($x)) ? '0' . $x : $x;
	}

	if ($hex) {
		return '#' . $hex;
	}

	return false;
}

/**
 * Lightens/darkens a given colour (in hex format), returning the altered color in hex format.
 *
 * @since 1.0.0
 * @param string $hexcolor Color as hexadecimal (with or without hash).
 * @param float  $percent Decimal ( 0.2 = lighten by 20%, -0.4 = darken by 40% ).
 * @return string Lightened/Darkend color as hexadecimal (with hash)
 */
function business_interface_luminance($hexcolor, $percent)
{

	if (empty($hexcolor)) {
		return;
	}

	// Check if color is in RGB format and convert to HEX.
	if (false !== strpos($hexcolor, 'rgb')) {
		$hexcolor = business_interface_rgba2hex($hexcolor);
	}

	$hexcolor = trim($hexcolor, '#');

	if (strlen($hexcolor) < 6 && strlen($hexcolor) > 2) {
		$hexcolor = $hexcolor[0] . $hexcolor[0] . $hexcolor[1] . $hexcolor[1] . $hexcolor[2] . $hexcolor[2];
	} else if (strlen($hexcolor) < 3 || strlen($hexcolor) > 6) {
		return;
	}

	$hexcolor = array_map('hexdec', str_split(str_pad(str_replace('#', '', $hexcolor), 6, '0'), 2));

	foreach ($hexcolor as $i => $color) {
		$from = $percent < 0 ? 0 : $color;
		$to = $percent < 0 ? $color : 255;
		$pvalue = ceil(($to - $from) * $percent);
		$hexcolor[$i] = str_pad(dechex($color + $pvalue), 2, '0', STR_PAD_LEFT);
	}

	// Return hex color.
	return '#' . implode($hexcolor);
}

/**
 * Determine whether a hex color is light.
 *
 * @param  mixed $color Color.
 * @return bool  True if a light color.
 */
function business_interface_is_light_color($color)
{

	// Ensure we color is in hex format.
	if (false !== strpos($color, 'rgb')) {
		$color = business_interface_rgba2hex($color);
	}

	$hex = str_replace('#', '', $color);

	$c_r = hexdec(substr($hex, 0, 2));
	$c_g = hexdec(substr($hex, 2, 2));
	$c_b = hexdec(substr($hex, 4, 2));

	$brightness = (($c_r * 299) + ($c_g * 587) + ($c_b * 114)) / 1000;

	return $brightness > 155;
}

/**
 * Detect if we should use a light or dark color on a background color.
 *
 * @param mixed  $color Color.
 * @param string $dark  Darkest reference. Defaults to '#000000'.
 * @param string $light Lightest reference. Defaults to '#FFFFFF'.
 * @return string
 */
function business_interface_light_or_dark($color, $dark = '#000000', $light = '#FFFFFF')
{
	return business_interface_is_light_color($color) ? $dark : $light;
}

if (!function_exists('business_interface_get_prop')):

	/**
	 * Get a specific property of an array without needing to check if that property exists.
	 *
	 * Provide a default value if you want to return a specific value if the property is not set.
	 *
	 * @since 1.0.0
	 *
	 * @param array  $array   Array from which the property's value should be retrieved.
	 * @param string $prop    Name of the property to be retrieved.
	 * @param string $default Optional. Value that should be returned if the property is not set or empty. Defaults to null.
	 *
	 * @return null|string|mixed The value
	 */
	function business_interface_get_prop($array, $prop, $default = null)
	{

		if (!is_array($array) && !(is_object($array) && $array instanceof ArrayAccess)) {
			return $default;
		}

		if (isset($array[$prop])) {
			$value = $array[$prop];
		} else {
			$value = '';
		}

		return empty($value) && null !== $default ? $default : $value;
	}
endif;

/**
 * Returns blog page URL.
 *
 * @since 1.0.0
 * @return String, current page URL.
 */
function business_interface_get_blog_url()
{

	$blog_url = '';

	// If front page is set to display a static page, get the URL of the posts page.
	if ('page' === get_option('show_on_front')) {

		$page_for_posts = get_option('page_for_posts');

		if ($page_for_posts) {
			$blog_url = get_permalink($page_for_posts);
		}
	} else {

		// The front page IS the posts page. Get its URL.
		$blog_url = home_url('/');
	}

	return apply_filters('business_interface_site_url', $blog_url);
}

/**
 * Returns array of default values for Design Options field.
 *
 * @since  1.0.0
 * @param  array $options Default options.
 * @return array $defaults array of default values.
 */
function business_interface_design_options_defaults($options = array())
{

	$defaults = array();

	// Background options.
	if (isset($options['background'])) {

		// Default background type.
		if (isset($options['background']['background-type']) && in_array($options['background']['background-type'], array('color', 'image', 'gradient'), true)) {
			$defaults['background-type'] = $options['background']['background-type'];
		} else {
			$defaults['background-type'] = 'color';
		}

		// Background color defaults.
		if (isset($options['background']['color'])) {
			$defaults += wp_parse_args(
				(array) $options['background']['color'],
				array(
					'background-color' => '',
				)
			);
		}

		// Background image defaults.
		if (isset($options['background']['image'])) {
			$defaults += wp_parse_args(
				(array) $options['background']['image'],
				array(
					'background-image' => '',
					'background-repeat' => 'no-repeat',
					'background-position-x' => '50',
					'background-position-y' => '50',
					'background-size' => 'cover',
					'background-attachment' => 'inherit',
					'background-image-id' => '',
					'background-color-overlay' => 'rgba(0,0,0,0.5)',
				)
			);
		}

		// Background gradient defaults.
		if (isset($options['background']['gradient'])) {
			$defaults += wp_parse_args(
				(array) $options['background']['gradient'],
				array(
					'gradient-color-1' => '#16222A',
					'gradient-color-1-location' => '0',
					'gradient-color-2' => '#3A6073',
					'gradient-color-2-location' => '100',
					'gradient-type' => 'linear',
					'gradient-linear-angle' => '45',
					'gradient-position' => 'center center',
				)
			);
		}
	}

	// Border default.
	if (isset($options['border'])) {
		$defaults += wp_parse_args(
			(array) $options['border'],
			array(
				'border-left-width' => '',
				'border-top-width' => '',
				'border-right-width' => '',
				'border-bottom-width' => '',
				'border-color' => '',
				'style' => 'solid',
				'separator-color' => '',
			)
		);
	}

	// Color default.
	if (isset($options['color'])) {
		$defaults += wp_parse_args(
			(array) $options['color'],
			array(
				'text-color' => '',
				'link-color' => '',
				'link-hover-color' => '',
			)
		);
	}

	return apply_filters('business_interface_design_options_defaults', $defaults, $options);
}

/**
 * Returns array of default values for Typography field.
 *
 * @since  1.0.0
 * @param  array $options Default options.
 * @return array $defaults array of default values.
 */
function business_interface_typography_defaults($options = array())
{

	$defaults = apply_filters(
		'business_interface_typography_defaults',
		array(
			'font-family' => 'inherit',
			'font-subsets' => array(),
			'font-weight' => '400',
			'font-style' => 'inherit',
			'text-transform' => 'inherit',
			'text-decoration' => 'inherit',
			'font-size-desktop' => '',
			'font-size-tablet' => '',
			'font-size-mobile' => '',
			'font-size-unit' => 'px',
			'letter-spacing' => '0',
			'letter-spacing-unit' => 'px',
			'line-height-desktop' => '',
			'line-height-tablet' => '',
			'line-height-mobile' => '',
			'line-height-unit' => '',
		)
	);

	$options = wp_parse_args($options, $defaults);

	return $options;
}

if (!function_exists('business_interface_enable_page_builder_compatibility')):

	/**
	 * Allow filter to enable/disable page builder compatibility.
	 *
	 * @since 1.0.0
	 *
	 * @return  bool True - If the page builder compatibility is enabled. False - IF the page builder compatibility is disabled.
	 */
	function business_interface_enable_page_builder_compatibility()
	{
		return apply_filters('business_interface_enable_page_builder_compatibility', true);
	}

endif;

/**
 * Insert into array before specified key.
 *
 * @since 1.0.0
 * @param array  $array     Array to be modified.
 * @param array  $pairs     Array of key => value pairs to insert.
 * @param mixed  $key       Key of $array to insert before or after.
 * @param string $position  Before or after $key.
 * @return array $result    Array with inserted $new value.
 */
function business_interface_array_insert($array, $pairs, $key, $position = 'after')
{

	$key_pos = array_search($key, array_keys($array), true);

	if ('after' === $position) {
		$key_pos++;
	}

	if (false !== $key_pos) {
		$result = array_slice($array, 0, $key_pos);
		$result = array_merge($result, $pairs);
		$result = array_merge($result, array_slice($array, $key_pos));
	} else {
		$result = array_merge($array, $pairs);
	}

	return $result;
}

/**
 * Get background color based on site layout.
 *
 * @since  1.0.0
 * @return string Background color.
 */
function business_interface_get_background_color()
{

	$site_layout = business_interface_get_site_layout();

	if (in_array($site_layout, array('boxed', 'boxed-separated'), true)) {
		$background_color = business_interface_option('boxed_content_background_color');
	} else {
		$background_color = '#' . get_background_color();
	}

	return $background_color;
}

/**
 * Check if a section is disabled.
 *
 * @since 1.1.0
 *
 * @param  array $disabled_on Array of pages where the section is disabled.
 * @param  int   $post_id     Current page ID.
 * @return bool               Section is displayed.
 */
function business_interface_is_section_disabled($disabled_on = array(), $post_id = 0)
{

	$disabled = false;

	if (is_front_page() && in_array('home', $disabled_on, true)) {
		$disabled = true;
	} elseif (is_home() && in_array('posts_page', $disabled_on, true)) {
		$disabled = true;
	} elseif (is_search() && in_array('search', $disabled_on, true)) {
		$disabled = true;
	} elseif (is_archive() && in_array('archive', $disabled_on, true)) {
		$disabled = true;
	} elseif (is_404() && in_array('404', $disabled_on, true)) {
		$disabled = true;
	} elseif ((is_singular() || !empty($post_id)) && !is_front_page()) {

		if (empty($post_id)) {
			$post_id = business_interface_get_the_id();
		}

		if (in_array(get_post_type($post_id), $disabled_on, true)) {
			$disabled = true;
		}
	}

	return $disabled;
}

/**
 * Get all the registered image sizes along with their dimensions.
 *
 * @since 1.1.0
 * @return array $image_sizes The image sizes
 */
function business_interface_get_image_sizes()
{
	global $_wp_additional_image_sizes;

	$default_image_sizes = get_intermediate_image_sizes();

	foreach ($default_image_sizes as $size) {
		$image_sizes[$size]['width'] = intval(get_option("{$size}_size_w"));
		$image_sizes[$size]['height'] = intval(get_option("{$size}_size_h"));
		$image_sizes[$size]['crop'] = get_option("{$size}_crop") ? get_option("{$size}_crop") : false;
	}

	if (isset($_wp_additional_image_sizes) && count($_wp_additional_image_sizes)) {
		$image_sizes = array_merge($image_sizes, $_wp_additional_image_sizes);
	}

	$image_sizes['full'] = array(
		'width' => '',
		'height' => '',
		'crop' => '',
	);

	return $image_sizes;
}

if (!function_exists('business_interface_display_notices')):
	/**
	 * Display notices.
	 */
	function business_interface_display_notices()
	{
		return defined('WP_DEBUG_LOG') && WP_DEBUG_LOG || defined('WP_DEBUG') && WP_DEBUG;
	}
endif;
