/var/www/html_us/wp-content/plugins/elementor/modules/home/classes/transformations-manager.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
74
75
76
77
78
79
80
81
82
<?php
namespace Elementor\Modules\Home\Classes;

use 
Elementor\Core\Isolation\Wordpress_Adapter;
use 
Elementor\Core\Isolation\Plugin_Status_Adapter;
use 
Elementor\Core\Isolation\Wordpress_Adapter_Interface;
use 
Elementor\Plugin;

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

class 
Transformations_Manager {

    private static 
$cached_data = [];

    private const 
TRANSFORMATIONS = [
        
'Create_New_Page_Url',
        
'Filter_Plugins',
        
'Filter_Get_Started_By_License',
        
'Filter_Sidebar_Promotion_By_License',
        
'Filter_Condition_Introduction_Meta',
        
'Create_Site_Settings_Url',
        
'Filter_Top_Section_By_License',
    ];

    protected array 
$home_screen_data;

    protected 
Wordpress_Adapter_Interface $wordpress_adapter;

    protected 
Plugin_Status_Adapter $plugin_status_adapter;

    protected array 
$transformation_classes = [];

    public function 
__construct$home_screen_data ) {
        
$container Plugin::$instance->elementor_container();

        if ( 
$container->hasWordpress_Adapter::class ) ) {
            
$this->wordpress_adapter $container->getWordpress_Adapter::class );
        } else {
            
$this->wordpress_adapter = new Wordpress_Adapter();
        }

        
$this->home_screen_data $home_screen_data;
        
$this->plugin_status_adapter = new Plugin_Status_Adapter$this->wordpress_adapter );
        
$this->transformation_classes $this->get_transformation_classes();
    }

    public function 
run_transformations(): array {
        if ( ! empty( 
self::$cached_data ) ) {
            return 
self::$cached_data;
        }

        
$transformations self::TRANSFORMATIONS;

        foreach ( 
$transformations as $transformation_id ) {
            
$this->home_screen_data $this->transformation_classes$transformation_id ]->transform$this->home_screen_data );
        }

        
self::$cached_data $this->home_screen_data;

        return 
$this->home_screen_data;
    }

    private function 
get_transformation_classes(): array {
        
$classes = [];

        
$transformations self::TRANSFORMATIONS;

        
$arguments = [
            
'wordpress_adapter' => $this->wordpress_adapter,
            
'plugin_status_adapter' => $this->plugin_status_adapter,
        ];

        foreach ( 
$transformations as $transformation_id ) {
            
$class_name '\\Elementor\\Modules\\Home\\Transformations\\' $transformation_id;
            
$classes$transformation_id ] = new $class_name$arguments );
        }

        return 
$classes;
    }
}