/var/www/html_us/wp-content/plugins/elementor/includes/editor-assets-api.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
<?php
namespace Elementor\Includes;

class 
EditorAssetsAPI {
    protected array 
$config;

    const 
ASSETS_DATA_TRANSIENT_KEY 'ASSETS_DATA_TRANSIENT_KEY';

    const 
ASSETS_DATA_URL 'ASSETS_DATA_URL';

    const 
ASSETS_DATA_KEY 'ASSETS_DATA_KEY';

    public function 
__construct( array $config ) {
        
$this->config $config;
    }

    public function 
config$key ): string {
        return 
$this->config$key ] ?? '';
    }

    public function 
get_assets_data$force_request false ): array {
        
$assets_data $this->get_transient$this->config( static::ASSETS_DATA_TRANSIENT_KEY ) );

        if ( 
$force_request || false === $assets_data ) {
            
$assets_data $this->fetch_data();
            
$this->set_transient$this->config( static::ASSETS_DATA_TRANSIENT_KEY ), $assets_data'+1 hour' );
        }

        return 
$assets_data;
    }

    private function 
fetch_data(): array {
        
$response wp_remote_get$this->config( static::ASSETS_DATA_URL ) );

        if ( 
is_wp_error$response ) ) {
            return [];
        }

        
$data json_decodewp_remote_retrieve_body$response ), true );

        if ( empty( 
$data$this->config( static::ASSETS_DATA_KEY ) ] ) || ! is_array$data$this->config( static::ASSETS_DATA_KEY ) ] ) ) {
            return [];
        }

        return 
$data$this->config( static::ASSETS_DATA_KEY ) ];
    }

    private function 
get_transient$cache_key ) {
        
$cache get_option$cache_key );

        if ( empty( 
$cache['timeout'] ) ) {
            return 
false;
        }

        if ( 
current_time'timestamp' ) > $cache['timeout'] ) {
            return 
false;
        }

        return 
json_decode$cache['value'], true );
    }

    private function 
set_transient$cache_key$value$expiration '+12 hours' ): bool {
        
$data = [
            
'timeout' => strtotime$expirationcurrent_time'timestamp' ) ),
            
'value' => wp_json_encode$value ),
        ];

        return 
update_option$cache_key$datafalse );
    }
}