PluginProbe
Elementor Website Builder – more than just a page builder / 3.30.0-beta1
Elementor Website Builder – more than just a page builder v3.30.0-beta1
4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 4.0.7 All 451 releases
elementor / modules / global-classes / global-classes-css.php

global-classes-css.php in Elementor Website Builder – more than just a page builder 3.30.0-beta1, at modules/global-classes/global-classes-css.php

88 lines 2.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Elementor\Modules\GlobalClasses;
4
5 use Elementor\Plugin;
6
7 class Global_Classes_CSS {
8 public function register_hooks() {
9 add_action(
10 'elementor/frontend/after_enqueue_styles',
11 fn() => $this->enqueue_styles()
12 );
13
14 add_action(
15 'elementor/global_classes/update',
16 fn( $context ) => $this->clear_css_cache( $context )
17 );
18
19 add_action(
20 'elementor/core/files/clear_cache',
21 fn() => $this->clear_css_cache( Global_Classes_Repository::CONTEXT_FRONTEND )
22 );
23
24 add_action(
25 'deleted_post',
26 fn( $post_id ) => $this->on_post_delete( $post_id )
27 );
28
29 add_action(
30 'elementor/core/files/after_generate_css',
31 fn() => $this->generate_styles()
32 );
33
34 add_filter('elementor/atomic-widgets/settings/transformers/classes',
35 fn( $value ) => $this->transform_classes_names( $value )
36 );
37 }
38
39 private function enqueue_styles() {
40 $css_file = is_preview()
41 ? new Global_Classes_CSS_Preview()
42 : new Global_Classes_CSS_File();
43
44 $css_file->enqueue();
45 }
46
47 private function generate_styles() {
48 ( new Global_Classes_CSS_File() )->update();
49 }
50
51 private function on_post_delete( $post_id ) {
52 if ( ! Plugin::$instance->kits_manager->is_kit( $post_id ) ) {
53 return;
54 }
55
56 $this->clear_css_cache(
57 Global_Classes_Repository::CONTEXT_FRONTEND,
58 $post_id
59 );
60 }
61
62 private function clear_css_cache( string $context, $kit_id = null ): void {
63 ( new Global_Classes_CSS_Preview( $kit_id ) )->delete();
64
65 if ( Global_Classes_Repository::CONTEXT_FRONTEND === $context ) {
66 ( new Global_Classes_CSS_File( $kit_id ) )->delete();
67 }
68 }
69
70 private function transform_classes_names( $ids ) {
71 $context = is_preview() ? Global_Classes_Repository::CONTEXT_PREVIEW : Global_Classes_Repository::CONTEXT_FRONTEND;
72
73 $classes = Global_Classes_Repository::make()
74 ->context( $context )
75 ->all()
76 ->get_items();
77
78 return array_map(
79 function( $id ) use ( $classes ) {
80 $class = $classes->get( $id );
81
82 return $class ? $class['label'] : $id;
83 },
84 $ids
85 );
86 }
87 }
88