170 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			170 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
/**
 | 
						|
 * This file handles column-related functionality.
 | 
						|
 *
 | 
						|
 * @package GP Premium
 | 
						|
 */
 | 
						|
 | 
						|
if ( ! defined( 'ABSPATH' ) ) {
 | 
						|
	exit; // No direct access, please.
 | 
						|
}
 | 
						|
 | 
						|
if ( ! function_exists( 'generate_blog_get_columns' ) ) {
 | 
						|
	/**
 | 
						|
	 * Initiate columns.
 | 
						|
	 *
 | 
						|
	 * @since 0.1
 | 
						|
	 */
 | 
						|
	function generate_blog_get_columns() {
 | 
						|
		$generate_blog_settings = wp_parse_args(
 | 
						|
			get_option( 'generate_blog_settings', array() ),
 | 
						|
			generate_blog_get_defaults()
 | 
						|
		);
 | 
						|
 | 
						|
		// If columns are enabled, set to true.
 | 
						|
		$columns = ( $generate_blog_settings['column_layout'] ) ? true : false;
 | 
						|
 | 
						|
		// If we're not dealing with posts, set it to false.
 | 
						|
		// Check for is_home() to prevent bug in Yoast that throws off the post type check.
 | 
						|
		$columns = ( 'post' === get_post_type() || is_search() || is_home() ) ? $columns : false;
 | 
						|
 | 
						|
		// If masonry is enabled via filter, enable columns.
 | 
						|
		// phpcs:ignore -- Non-strict comparison allowed.
 | 
						|
		$columns = ( 'true' == apply_filters( 'generate_blog_masonry', 'false' ) ) ? true : $columns;
 | 
						|
 | 
						|
		// If we're on a singular post or page, disable.
 | 
						|
		$columns = ( is_singular() ) ? false : $columns;
 | 
						|
 | 
						|
		// Turn off columns if we're on a WooCommerce search page.
 | 
						|
		if ( function_exists( 'is_woocommerce' ) ) {
 | 
						|
			$columns = ( is_woocommerce() && is_search() ) ? false : $columns;
 | 
						|
		}
 | 
						|
 | 
						|
		// Bail if there's no search results.
 | 
						|
		if ( is_search() ) {
 | 
						|
			global $wp_query;
 | 
						|
 | 
						|
			// phpcs:ignore -- non-strict comparison allowed.
 | 
						|
			if ( 0 == $wp_query->post_count ) {
 | 
						|
				$columns = false;
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		// Return the result.
 | 
						|
		return apply_filters( 'generate_blog_columns', $columns );
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
if ( ! function_exists( 'generate_blog_get_masonry' ) ) {
 | 
						|
	/**
 | 
						|
	 * Check if masonry is enabled.
 | 
						|
	 * This function is a mess with strings as bools etc.. Will re-write in a big upate to get lots of testing.
 | 
						|
	 */
 | 
						|
	function generate_blog_get_masonry() {
 | 
						|
		$generate_blog_settings = wp_parse_args(
 | 
						|
			get_option( 'generate_blog_settings', array() ),
 | 
						|
			generate_blog_get_defaults()
 | 
						|
		);
 | 
						|
 | 
						|
		// If masonry is enabled via option or filter, enable it.
 | 
						|
		// phpcs:ignore -- non-strict comparison allowed.
 | 
						|
		if ( $generate_blog_settings['masonry'] || 'true' == apply_filters( 'generate_blog_masonry', 'false' ) ) {
 | 
						|
			$masonry = 'true';
 | 
						|
		} else {
 | 
						|
			$masonry = 'false';
 | 
						|
		}
 | 
						|
 | 
						|
		// Allow masonry to be turned off using a boolean.
 | 
						|
		if ( false === apply_filters( 'generate_blog_masonry', 'false' ) ) {
 | 
						|
			$masonry = 'false';
 | 
						|
		}
 | 
						|
 | 
						|
		return $masonry;
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
if ( ! function_exists( 'generate_blog_add_columns_container' ) ) {
 | 
						|
	add_action( 'generate_before_main_content', 'generate_blog_add_columns_container' );
 | 
						|
	/**
 | 
						|
	 * Add columns container
 | 
						|
	 *
 | 
						|
	 * @since 1.0
 | 
						|
	 */
 | 
						|
	function generate_blog_add_columns_container() {
 | 
						|
		if ( ! generate_blog_get_columns() ) {
 | 
						|
			return;
 | 
						|
		}
 | 
						|
 | 
						|
		$columns = generate_blog_get_column_count();
 | 
						|
 | 
						|
		printf(
 | 
						|
			'<div class="generate-columns-container %1$s">%2$s',
 | 
						|
			'false' !== generate_blog_get_masonry() ? 'masonry-container are-images-unloaded' : '',
 | 
						|
			'false' !== generate_blog_get_masonry() ? '<div class="grid-sizer grid-' . esc_attr( $columns ) . ' tablet-grid-50 mobile-grid-100"></div>' : '' // phpcs:ignore -- no escaping needed.
 | 
						|
		);
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
if ( ! function_exists( 'generate_blog_add_ending_columns_container' ) ) {
 | 
						|
	add_action( 'generate_after_main_content', 'generate_blog_add_ending_columns_container' );
 | 
						|
	/**
 | 
						|
	 * Add closing columns container
 | 
						|
	 *
 | 
						|
	 * @since 1.0
 | 
						|
	 */
 | 
						|
	function generate_blog_add_ending_columns_container() {
 | 
						|
		if ( ! generate_blog_get_columns() ) {
 | 
						|
			return;
 | 
						|
		}
 | 
						|
 | 
						|
		echo '</div><!-- .generate-columns-contaier -->';
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
if ( ! function_exists( 'generate_blog_columns_css' ) ) {
 | 
						|
	/**
 | 
						|
	 * Add inline CSS
 | 
						|
	 */
 | 
						|
	function generate_blog_columns_css() {
 | 
						|
		$generate_blog_settings = wp_parse_args(
 | 
						|
			get_option( 'generate_blog_settings', array() ),
 | 
						|
			generate_blog_get_defaults()
 | 
						|
		);
 | 
						|
 | 
						|
		if ( function_exists( 'generate_spacing_get_defaults' ) ) {
 | 
						|
			$spacing_settings = wp_parse_args(
 | 
						|
				get_option( 'generate_spacing_settings', array() ),
 | 
						|
				generate_spacing_get_defaults()
 | 
						|
			);
 | 
						|
		}
 | 
						|
 | 
						|
		$separator = ( function_exists( 'generate_spacing_get_defaults' ) ) ? absint( $spacing_settings['separator'] ) : 20;
 | 
						|
 | 
						|
		$return = '';
 | 
						|
		if ( generate_blog_get_columns() ) {
 | 
						|
			$return .= '.generate-columns {margin-bottom: ' . $separator . 'px;padding-left: ' . $separator . 'px;}';
 | 
						|
			$return .= '.generate-columns-container {margin-left: -' . $separator . 'px;}';
 | 
						|
			$return .= '.page-header {margin-bottom: ' . $separator . 'px;margin-left: ' . $separator . 'px}';
 | 
						|
			$return .= '.generate-columns-container > .paging-navigation {margin-left: ' . $separator . 'px;}';
 | 
						|
		}
 | 
						|
 | 
						|
		return $return;
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
if ( ! function_exists( 'generate_blog_get_column_count' ) ) {
 | 
						|
	/**
 | 
						|
	 * Get our column grid class
 | 
						|
	 */
 | 
						|
	function generate_blog_get_column_count() {
 | 
						|
		$generate_blog_settings = wp_parse_args(
 | 
						|
			get_option( 'generate_blog_settings', array() ),
 | 
						|
			generate_blog_get_defaults()
 | 
						|
		);
 | 
						|
 | 
						|
		$count = $generate_blog_settings['columns'];
 | 
						|
 | 
						|
		return apply_filters( 'generate_blog_get_column_count', $count );
 | 
						|
	}
 | 
						|
}
 |