HEX
Server: Apache/2.4.38 (Debian)
System: Linux host457 5.14.0-4-amd64 #1 SMP Debian 5.14.16-1 (2021-11-03) x86_64
User: www-data (33)
PHP: 7.4.21
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /home/vhosts/harpoeditore.it/httpdocs/wp-content/themes/dt-the7/inc/class-the7-css-vars-file.php
<?php
/**
 * Class The7_CSS_Vars_File.
 *
 * @package The7
 */

defined( 'ABSPATH' ) || exit;

/**
 * Class The7_CSS_Vars_File
 */
class The7_CSS_Vars_File {

	/**
	 * CSS file path.
	 *
	 * @var string
	 */
	protected $file;

	/**
	 * The7_CSS_Vars_File constructor.
	 *
	 * @param string $file CSS file path.
	 */
	public function __construct( $file ) {
		$this->file = $file;
	}

	/**
	 * Determine eather string ends with $needle.
	 *
	 * @param string $haystack String to look in.
	 * @param string $needle String to look for.
	 *
	 * @return bool
	 */
	private function ends_with( $haystack, $needle ) {
		return substr_compare( $haystack, $needle, -strlen( $needle ) ) === 0;
	}

	/**
	 * Create a file with css vars based on provided less vars.
	 *
	 * @param array              $less_vars Less vars list.
	 * @param The7_Less_Compiler $compiler  Less compiler.
	 */
	public function generate_based_on_less_vars( $less_vars, The7_Less_Compiler $compiler ) {
		$resp_devices = The7_Option_Field_Responsive_Option::get_devices();
		$css_vars     = array_fill_keys( $resp_devices, [] );

		foreach ( $less_vars as $less_var => $_ ) {
			$css_var_name = str_replace( [ '_', '-dt-' ], [ '-', '-' ], "--the7-{$less_var}" );
			$handled      = false;
			foreach ( $resp_devices as $device ) {
				if ( $this->ends_with( $css_var_name, '-' . $device ) ) {
					// TODO: remove this when we replace old css names.
					if ( $device === The7_Option_Field_Responsive_Option::RESPONSIVE_DESKTOP ) {
						$css_vars[ $device ][] = "{$css_var_name}: " . '@' . $less_var . ';';
					}
					$css_var_name          = substr( $css_var_name, 0, -strlen( '-' . $device ) );
					$css_vars[ $device ][] = "{$css_var_name}: @{$less_var};";
					$handled               = true;
					break;
				}
			}
			if ( ! $handled ) {
				$css_vars[ The7_Option_Field_Responsive_Option::RESPONSIVE_DESKTOP ][] = "{$css_var_name}: @{$less_var};";
			}
		}

		$this->add_predefined_vars( $css_vars[ The7_Option_Field_Responsive_Option::RESPONSIVE_DESKTOP ] );

		foreach ( $resp_devices as $device ) {
			sort( $css_vars[ $device ] );
		}

		$file_content  = ':root {' . PHP_EOL;
		$file_content .= implode( PHP_EOL, $css_vars[ The7_Option_Field_Responsive_Option::RESPONSIVE_DESKTOP ] ) . PHP_EOL;

		if ( ! empty( $css_vars[ The7_Option_Field_Responsive_Option::RESPONSIVE_TABLET ] ) ) {
			$file_content .= '@media screen and (max-width: @lg-breakpoint - 1) {' . PHP_EOL;
			$file_content .= implode( PHP_EOL, $css_vars[ The7_Option_Field_Responsive_Option::RESPONSIVE_TABLET ] ) . PHP_EOL;
			$file_content .= '}' . PHP_EOL;
		}

		if ( ! empty( $css_vars[ The7_Option_Field_Responsive_Option::RESPONSIVE_MOBILE ] ) ) {
			$file_content .= '@media screen and (max-width: @md-breakpoint - 1) {' . PHP_EOL;
			$file_content .= implode( PHP_EOL, $css_vars[ The7_Option_Field_Responsive_Option::RESPONSIVE_MOBILE ] ) . PHP_EOL;
			$file_content .= '}' . PHP_EOL;
		}

		// :root end;
		$file_content .= '}' . PHP_EOL;

		$compiler->put_contents( $this->file, $compiler->compile( $file_content ) );
	}

	/**
	 * Add predefined css vars for backward compatibility at most.
	 *
	 * @param array $css_vars CSS vars.
	 */
	protected function add_predefined_vars( &$css_vars ) {
		$css_vars = array_merge(
			$css_vars,
			[
				'--the7-base-border-radius: @border-radius-size;',
				'--the7-filter-pointer-border-width: @filter-decoration-line-size;',
				'--the7-filter-pointer-bg-radius: @filter-border-radius;',
				'--the7-general-border-radius: @border-radius-size;',
			]
		);
	}
}