← All changes
|
modules/global-classes/utils/template-library-global-classes-snapshot-builder.php
+12
-41
4.3.0-beta2
→
4.0.3
View file →
| @@ -62,17 +62,17 @@ | ||
| 62 | 62 | if ( empty( $ids ) ) { |
| 63 | 63 | return null; |
| 64 | 64 | } |
| 65 | 65 | |
| 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 ); | |
| 66 | + $current = self::make()->load_current_data(); | |
| 67 | + $filtered_items = Template_Library_Import_Export_Utils::filter_items_by_ids( $current['items'], $ids ); | |
| 70 | 68 | |
| 71 | 69 | if ( empty( $filtered_items ) ) { |
| 72 | 70 | return null; |
| 73 | 71 | } |
| 74 | 72 | |
| 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,22 +133,13 @@ | ||
| 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 | - $repository = Global_Classes_Repository::make()->set_preview( true ); | |
| 138 | - $labels = $repository->all_labels(); | |
| 137 | + $current = Global_Classes_Repository::make()->context( Global_Classes_Repository::CONTEXT_PREVIEW )->all()->get(); | |
| 139 | 138 | |
| 140 | - $items = []; | |
| 141 | - foreach ( $labels as $id => $label ) { | |
| 142 | - $items[ $id ] = [ | |
| 143 | - 'id' => $id, | |
| 144 | - 'label' => $label, | |
| 145 | - ]; | |
| 146 | - } | |
| 147 | - | |
| 148 | 139 | return [ |
| 149 | - 'items' => $items, | |
| 150 | - 'order' => $repository->get_order(), | |
| 140 | + 'items' => $current['items'] ?? [], | |
| 141 | + 'order' => $current['order'] ?? [], | |
| 151 | 142 | ]; |
| 152 | 143 | } |
| 153 | 144 | |
| 154 | 145 | protected function parse_incoming_snapshot( array $snapshot ): ?array { |
| @@ -171,37 +162,17 @@ | ||
| 171 | 162 | protected function count_current_items( array $items ): int { |
| 172 | 163 | return count( $items ); |
| 173 | 164 | } |
| 174 | 165 | |
| 175 | - protected function save_data( array $data, array $metadata ): array { | |
| 176 | - $new_items = $data['new_items'] ?? []; | |
| 177 | - $order = $data['order'] ?? []; | |
| 166 | + protected function save_data( array $items, array $metadata ): array { | |
| 167 | + $order = $metadata['order'] ?? []; | |
| 178 | 168 | |
| 179 | - if ( empty( $new_items ) ) { | |
| 180 | - return [ | |
| 181 | - 'global_classes' => [ | |
| 182 | - 'added_items' => [], | |
| 183 | - 'added_items_order' => [], | |
| 184 | - ], | |
| 185 | - ]; | |
| 186 | - } | |
| 169 | + Global_Classes_Repository::make()->put( $items, $order ); | |
| 187 | 170 | |
| 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 | - | |
| 200 | 171 | return [ |
| 201 | 172 | 'global_classes' => [ |
| 202 | - 'added_items_order' => $added_ids, | |
| 203 | - 'added_items' => $new_items, | |
| 173 | + 'items' => $items, | |
| 174 | + 'order' => $order, | |
| 204 | 175 | ], |
| 205 | 176 | ]; |
| 206 | 177 | } |
| 207 | 178 | |