PluginProbe
Elementor Website Builder – more than just a page builder / 4.1.2
Elementor Website Builder – more than just a page builder v4.1.2
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-order.php

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

93 lines 1.9 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\Core\Kits\Documents\Kit;
6 use Elementor\Modules\GlobalClasses\Concerns\Has_Kit_Dependency;
7 use Elementor\Modules\GlobalClasses\Concerns\Has_Preview_Context;
8
9 if ( ! defined( 'ABSPATH' ) ) {
10 exit;
11 }
12
13 class Global_Classes_Order {
14 use Has_Kit_Dependency;
15 use Has_Preview_Context;
16
17 const META_KEY = '_elementor_global_classes_order';
18 const META_KEY_PREVIEW = '_elementor_global_classes_order_preview';
19
20 protected array $context_keys = [
21 'order' => [
22 'frontend' => self::META_KEY,
23 'preview' => self::META_KEY_PREVIEW,
24 ],
25 ];
26
27 private ?array $cache = null;
28
29 private function __construct() {
30 }
31
32 public static function make( Kit $kit ): self {
33 return ( new self() )->set_kit( $kit );
34 }
35
36 public function get_order(): array {
37 $payload = $this->read_kit_meta_payload();
38
39 return $payload['order'] ?? [];
40 }
41
42 public function set_order( array $ids ): bool {
43 $kit = $this->get_kit();
44
45 if ( ! $kit ) {
46 return false;
47 }
48
49 $payload = [
50 'order' => array_values( $ids ),
51 ];
52
53 $result = $kit->update_meta( $this->get_context_key( 'order' ), $payload );
54 $this->cache = null;
55
56 return false !== $result;
57 }
58
59 public function remove_class_id( string $id ): bool {
60 $order = $this->get_order();
61
62 if ( ! in_array( $id, $order, true ) ) {
63 return true;
64 }
65
66 $order = array_filter( $order, fn( $item ) => $item !== $id );
67
68 return $this->set_order( $order );
69 }
70
71 private function read_kit_meta_payload(): array {
72 if ( null !== $this->cache ) {
73 return $this->cache;
74 }
75
76 $kit = $this->get_kit();
77
78 if ( ! $kit ) {
79 return [];
80 }
81
82 $payload = $kit->get_meta( $this->get_context_key( 'order' ) );
83
84 if ( $this->is_preview() && empty( $payload ) ) {
85 $payload = self::make( $this->get_kit() )->set_preview( false )->read_kit_meta_payload();
86 }
87
88 $this->cache = is_array( $payload ) ? $payload : [];
89
90 return $this->cache;
91 }
92 }
93