/var/www/html_de/wp-content/plugins/elementor/modules/atomic-widgets/utils.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
<?php

namespace Elementor\Modules\AtomicWidgets;

use 
Elementor\Plugin;
use 
Elementor\Modules\AtomicWidgets\Elements\Atomic_Element_Base;
use 
Elementor\Modules\AtomicWidgets\Elements\Atomic_Widget_Base;

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

class 
Utils {
    public static function 
is_atomic$element_instance ): bool {
        return 
$element_instance instanceof Atomic_Element_Base ||
            
$element_instance instanceof Atomic_Widget_Base;
    }

    public static function 
generate_idstring $prefix ''$existing_ids = [] ): string {
        do {
            
$generated substr(
                
bin2hexrandom_bytes) ),
                
0,
                
7
            
);

            
$id "$prefix{$generated}";
        } while ( 
in_array$id$existing_idstrue ) );

        return 
$id;
    }

    public static function 
traverse_post_elementsstring $post_id, callable $callback ): void {
        
$document Plugin::$instance->documents->get_doc_for_frontend$post_id );

        if ( ! 
$document ) {
            return;
        }

        
$elements_data $document->get_elements_data();

        if ( empty( 
$elements_data ) ) {
            return;
        }

        
Plugin::$instance->db->iterate_data$elements_data, function( $element_data ) use ( $callback ) {
            
call_user_func$callback$element_data );
        } );
    }
}