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 );
 | |
| 	}
 | |
| }
 |