PluginProbe
Elementor Website Builder – more than just a page builder / 4.3.0-beta3
Elementor Website Builder – more than just a page builder v4.3.0-beta3
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 4.0.8 4.1.0-beta1 4.1.0-dev1 All 452 releases
← All changes | modules/global-classes/global-classes-rest-api.php +8 -53 4.1.0-dev14.3.0-beta3 View file →
@@ -19,10 +19,8 @@
19 19 const API_BASE_USAGE = self::API_BASE . '/usage';
20 20 const API_BASE_POST = self::API_BASE . '/post';
21 21 const API_BASE_STYLES = self::API_BASE . '/styles';
22 22 const MAX_ITEMS = 1000;
23 - const LABEL_PREFIX = 'DUP_';
24 - const MAX_LABEL_LENGTH = 50;
25 23 private ?Global_Classes_Repository $repository = null;
26 24 private ?Global_Classes_Relations $relations = null;
27 25 private ?Kit $kit = null;
28 26
@@ -364,8 +362,15 @@
364 362 }
365 363
366 364 $final_item_ids = array_keys( $this->merge_touched_with_existing_labels( $all_label_by_id, $touched_items, $deleted_ids ) );
367 365
366 + $final_item_ids_set = array_flip( $final_item_ids );
367 + $order_set = array_flip( $order );
368 +
369 + $order = array_values( array_filter( $order, fn( $id ) => isset( $final_item_ids_set[ $id ] ) ) );
370 + $missing_from_order = array_values( array_filter( $final_item_ids, fn( $id ) => ! isset( $order_set[ $id ] ) ) );
371 + $order = array_merge( $order, $missing_from_order );
372 +
368 373 $order_result = $parser->parse_order( $order, $final_item_ids );
369 374
370 375 if ( ! $order_result->is_valid() ) {
371 376 return Error_Builder::make( 'invalid_order' )
@@ -453,9 +458,9 @@
453 458 foreach ( $duplicate_labels as $duplicate_label ) {
454 459 $item_id = $duplicate_label['item_id'];
455 460 $original_label = $duplicate_label['label'];
456 461
457 - $modified_label = $this->generate_unique_label( $original_label, $existing_labels );
462 + $modified_label = Global_Classes_Labels::generate_unique_label( $original_label, $existing_labels );
458 463
459 464 $modified_labels[ $item_id ] = [
460 465 'original' => $original_label,
461 466 'modified' => $modified_label,
@@ -462,56 +467,6 @@
462 467 ];
463 468 }
464 469
465 470 return $modified_labels;
466 - }
467 -
468 -
469 - private function generate_unique_label( $original_label, $existing_labels ) {
470 - $prefix = self::LABEL_PREFIX;
471 - $max_length = self::MAX_LABEL_LENGTH;
472 -
473 - $has_prefix = strpos( $original_label, $prefix ) === 0;
474 -
475 - if ( $has_prefix ) {
476 - $base_label = substr( $original_label, strlen( $prefix ) );
477 -
478 - $counter = 1;
479 - $new_label = $prefix . $base_label . $counter;
480 -
481 - while ( in_array( $new_label, $existing_labels, true ) ) {
482 - ++$counter;
483 - $new_label = $prefix . $base_label . $counter;
484 - }
485 -
486 - if ( strlen( $new_label ) > $max_length ) {
487 - $available_length = $max_length - strlen( $prefix . $counter );
488 - $base_label = substr( $base_label, 0, $available_length );
489 - $new_label = $prefix . $base_label . $counter;
490 - }
491 - } else {
492 - $new_label = $prefix . $original_label;
493 -
494 - if ( strlen( $new_label ) > $max_length ) {
495 - $available_length = $max_length - strlen( $prefix );
496 - $new_label = $prefix . substr( $original_label, 0, $available_length );
497 - }
498 -
499 - $counter = 1;
500 - $base_label = substr( $original_label, 0, $available_length ?? strlen( $original_label ) );
501 -
502 - while ( in_array( $new_label, $existing_labels, true ) ) {
503 - $new_label = $prefix . $base_label . $counter;
504 -
505 - if ( strlen( $new_label ) > $max_length ) {
506 - $available_length = $max_length - strlen( $prefix . $counter );
507 - $base_label = substr( $original_label, 0, $available_length );
508 - $new_label = $prefix . $base_label . $counter;
509 - }
510 -
511 - ++$counter;
512 - }
513 - }
514 -
515 - return $new_label;
516 471 }
517 472 }