PluginProbe
Elementor Website Builder – more than just a page builder / 4.3.1
Elementor Website Builder – more than just a page builder v4.3.1
4.3.2 4.3.1 4.3.0 4.3.0-beta3 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 All 455 releases
← All changes | modules/global-classes/utils/template-library-global-classes-snapshot-builder.php +41 -12 4.0.8 → 4.3.1 View file →
@@ -62,17 +62,17 @@
62 62 if ( empty( $ids ) ) {
63 63 return null;
64 64 }
65 65
66 - $current = self::make()->load_current_data();
67 - $filtered_items = Template_Library_Import_Export_Utils::filter_items_by_ids( $current['items'], $ids );
66 + $repository = Global_Classes_Repository::make()->set_preview( false );
67 + $order = $repository->get_order();
68 + $filtered_order = array_values( array_filter( $order, fn( $id ) => in_array( $id, $ids, true ) ) );
69 + $filtered_items = $repository->get_by_ids( $ids );
68 70
69 71 if ( empty( $filtered_items ) ) {
70 72 return null;
71 73 }
72 74
73 - $filtered_order = Template_Library_Import_Export_Utils::build_filtered_order( $current['order'], $filtered_items );
74 -
75 75 return self::parse_snapshot_or_null( [
76 76 'items' => $filtered_items,
77 77 'order' => $filtered_order,
78 78 ] );
@@ -133,13 +133,22 @@
133 133 return class_exists( Global_Classes_Repository::class ) && $this->has_active_kit();
134 134 }
135 135
136 136 protected function load_current_data(): array {
137 - $current = Global_Classes_Repository::make()->context( Global_Classes_Repository::CONTEXT_PREVIEW )->all()->get();
137 + $repository = Global_Classes_Repository::make()->set_preview( true );
138 + $labels = $repository->all_labels();
138 139
140 + $items = [];
141 + foreach ( $labels as $id => $label ) {
142 + $items[ $id ] = [
143 + 'id' => $id,
144 + 'label' => $label,
145 + ];
146 + }
147 +
139 148 return [
140 - 'items' => $current['items'] ?? [],
141 - 'order' => $current['order'] ?? [],
149 + 'items' => $items,
150 + 'order' => $repository->get_order(),
142 151 ];
143 152 }
144 153
145 154 protected function parse_incoming_snapshot( array $snapshot ): ?array {
@@ -162,17 +171,37 @@
162 171 protected function count_current_items( array $items ): int {
163 172 return count( $items );
164 173 }
165 174
166 - protected function save_data( array $items, array $metadata ): array {
167 - $order = $metadata['order'] ?? [];
175 + protected function save_data( array $data, array $metadata ): array {
176 + $new_items = $data['new_items'] ?? [];
177 + $order = $data['order'] ?? [];
168 178
169 - Global_Classes_Repository::make()->put( $items, $order );
179 + if ( empty( $new_items ) ) {
180 + return [
181 + 'global_classes' => [
182 + 'added_items' => [],
183 + 'added_items_order' => [],
184 + ],
185 + ];
186 + }
170 187
188 + $repository = Global_Classes_Repository::make()->set_preview( false );
189 + $added_ids = array_keys( $new_items );
190 +
191 + $repository->apply_changes(
192 + $new_items,
193 + [
194 + 'added' => $added_ids,
195 + 'order' => true,
196 + ],
197 + $order
198 + );
199 +
171 200 return [
172 201 'global_classes' => [
173 - 'items' => $items,
174 - 'order' => $order,
202 + 'added_items_order' => $added_ids,
203 + 'added_items' => $new_items,
175 204 ],
176 205 ];
177 206 }
178 207