← All changes
|
modules/global-classes/utils/template-library-global-classes-snapshot-builder.php
+41
-12
4.0.9
→
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 | |