2020-04-07 13:03:04 +00:00
|
|
|
<?php
|
2020-08-13 14:53:39 +00:00
|
|
|
/**
|
|
|
|
* This file creates a class to build our CSS.
|
|
|
|
*
|
|
|
|
* @package GP Premium
|
|
|
|
*/
|
|
|
|
|
|
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
|
|
exit; // No direct access, please.
|
|
|
|
}
|
2020-04-07 13:03:04 +00:00
|
|
|
|
|
|
|
if ( ! class_exists( 'GeneratePress_Backgrounds_CSS' ) ) {
|
2020-08-13 14:53:39 +00:00
|
|
|
/**
|
|
|
|
* Generate our background CSS.
|
|
|
|
*/
|
2020-04-07 13:03:04 +00:00
|
|
|
class GeneratePress_Backgrounds_CSS {
|
|
|
|
|
2020-08-13 14:53:39 +00:00
|
|
|
/**
|
|
|
|
* The css selector that you're currently adding rules to
|
|
|
|
*
|
|
|
|
* @access protected
|
|
|
|
* @var string
|
|
|
|
*/
|
|
|
|
protected $_selector = ''; // phpcs:ignore PSR2.Classes.PropertyDeclaration.Underscore
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Stores the final css output with all of its rules for the current selector.
|
|
|
|
*
|
|
|
|
* @access protected
|
|
|
|
* @var string
|
|
|
|
*/
|
|
|
|
protected $_selector_output = ''; // phpcs:ignore PSR2.Classes.PropertyDeclaration.Underscore
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Stores all of the rules that will be added to the selector
|
|
|
|
*
|
|
|
|
* @access protected
|
|
|
|
* @var string
|
|
|
|
*/
|
|
|
|
protected $_css = ''; // phpcs:ignore PSR2.Classes.PropertyDeclaration.Underscore
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The string that holds all of the css to output
|
|
|
|
*
|
|
|
|
* @access protected
|
|
|
|
* @var string
|
|
|
|
*/
|
|
|
|
protected $_output = ''; // phpcs:ignore PSR2.Classes.PropertyDeclaration.Underscore
|
2020-04-07 13:03:04 +00:00
|
|
|
|
2020-08-13 14:53:39 +00:00
|
|
|
/**
|
|
|
|
* Sets a selector to the object and changes the current selector to a new one
|
|
|
|
*
|
|
|
|
* @access public
|
|
|
|
* @since 1.0
|
|
|
|
*
|
|
|
|
* @param string $selector - the css identifier of the html that you wish to target.
|
|
|
|
* @return $this
|
|
|
|
*/
|
2020-04-07 13:03:04 +00:00
|
|
|
public function set_selector( $selector = '' ) {
|
2020-08-13 14:53:39 +00:00
|
|
|
// Render the css in the output string everytime the selector changes.
|
|
|
|
if ( '' !== $this->_selector ) {
|
2020-04-07 13:03:04 +00:00
|
|
|
$this->add_selector_rules_to_output();
|
|
|
|
}
|
|
|
|
|
|
|
|
$this->_selector = $selector;
|
|
|
|
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
2020-08-13 14:53:39 +00:00
|
|
|
/**
|
|
|
|
* Adds a css property with value to the css output
|
|
|
|
*
|
|
|
|
* @access public
|
|
|
|
* @since 1.0
|
|
|
|
*
|
|
|
|
* @param string $property - the css property.
|
|
|
|
* @param string $value - the value to be placed with the property.
|
|
|
|
* @param string $url Whether we need to generate URL in the string.
|
|
|
|
* @return $this
|
|
|
|
*/
|
2020-04-07 13:03:04 +00:00
|
|
|
public function add_property( $property, $value, $url = '' ) {
|
2020-08-13 14:53:39 +00:00
|
|
|
// If we don't have a value or our value is the same as our og default, bail.
|
2020-04-07 13:03:04 +00:00
|
|
|
if ( empty( $value ) ) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2020-08-13 14:53:39 +00:00
|
|
|
// Set up our background image URL param if needed.
|
|
|
|
$url_start = ( '' !== $url ) ? "url('" : ""; // phpcs:ignore -- need double quotes.
|
|
|
|
$url_end = ( '' !== $url ) ? "')" : ""; // phpcs:ignore -- need double quotes.
|
2020-04-07 13:03:04 +00:00
|
|
|
|
|
|
|
$this->_css .= $property . ':' . $url_start . $value . $url_end . ';';
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
2020-08-13 14:53:39 +00:00
|
|
|
/**
|
|
|
|
* Adds the current selector rules to the output variable
|
|
|
|
*
|
|
|
|
* @access private
|
|
|
|
* @since 1.0
|
|
|
|
*
|
|
|
|
* @return $this
|
|
|
|
*/
|
2020-04-07 13:03:04 +00:00
|
|
|
private function add_selector_rules_to_output() {
|
|
|
|
if ( ! empty( $this->_css ) ) {
|
|
|
|
$this->_selector_output = $this->_selector;
|
|
|
|
$selector_output = sprintf( '%1$s{%2$s}', $this->_selector_output, $this->_css );
|
|
|
|
|
|
|
|
$this->_output .= $selector_output;
|
|
|
|
|
2020-08-13 14:53:39 +00:00
|
|
|
// Reset the css.
|
2020-04-07 13:03:04 +00:00
|
|
|
$this->_css = '';
|
|
|
|
}
|
|
|
|
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
2020-08-13 14:53:39 +00:00
|
|
|
/**
|
|
|
|
* Returns the minified css in the $_output variable
|
|
|
|
*
|
|
|
|
* @access public
|
|
|
|
* @since 1.0
|
|
|
|
*
|
|
|
|
* @return string
|
|
|
|
*/
|
2020-04-07 13:03:04 +00:00
|
|
|
public function css_output() {
|
2020-08-13 14:53:39 +00:00
|
|
|
// Add current selector's rules to output.
|
2020-04-07 13:03:04 +00:00
|
|
|
$this->add_selector_rules_to_output();
|
|
|
|
|
2020-08-13 14:53:39 +00:00
|
|
|
// Output minified css.
|
2020-04-07 13:03:04 +00:00
|
|
|
return $this->_output;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|