/var/www/html_de/wp-content/plugins/elementor/modules/variables/classes/css-renderer.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?php

namespace Elementor\Modules\Variables\Classes;

use 
Elementor\Modules\Variables\Storage\Repository as Variables_Repository;

if ( ! 
defined'ABSPATH' ) ) {
    exit; 
// Exit if accessed directly.
}

class 
CSS_Renderer {
    private 
Variables_Repository $repository;

    public function 
__constructVariables_Repository $repository ) {
        
$this->repository $repository;
    }

    private function 
global_variables(): array {
        return 
$this->repository->variables();
    }

    public function 
raw_css(): string {
        
$list_of_variables $this->global_variables();

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

        
$css_entries $this->css_entries_for$list_of_variables );

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

        return 
$this->wrap_with_root$css_entries );
    }

    private function 
css_entries_for( array $list_of_variables ): array {
        
$entries = [];

        foreach ( 
$list_of_variables as $variable_id => $variable ) {
            
$entry $this->build_css_variable_entry$variable_id$variable );

            if ( empty( 
$entry ) ) {
                continue;
            }

            
$entries[] = $entry;
        }

        return 
$entries;
    }

    private function 
build_css_variable_entrystring $id, array $variable ): ?string {
        
$variable_name sanitize_text_field$id );

        if ( ! 
array_key_exists'deleted'$variable ) ) {
            
$variable_name sanitize_text_field$variable['label'] ?? '' );
        }

        
$value sanitize_text_field$variable['value'] ?? '' );

        if ( empty( 
$value ) || empty( $variable_name ) ) {
            return 
null;
        }

        return 
"--{$variable_name}:{$value};";
    }

    private function 
wrap_with_root( array $css_entries ): string {
        return 
':root { ' implode' '$css_entries ) . ' }';
    }
}