PluginProbe
Elementor Website Builder – more than just a page builder / 4.1.0-beta1
Elementor Website Builder – more than just a page builder v4.1.0-beta1
4.3.3 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 All 456 releases
← All changes | modules/global-classes/global-classes-rest-api.php +53 -1 4.1.1 → 4.1.0-beta1 View file →
@@ -19,8 +19,10 @@
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;
23 25 private ?Global_Classes_Repository $repository = null;
24 26 private ?Global_Classes_Relations $relations = null;
25 27 private ?Kit $kit = null;
26 28
@@ -451,9 +453,9 @@
451 453 foreach ( $duplicate_labels as $duplicate_label ) {
452 454 $item_id = $duplicate_label['item_id'];
453 455 $original_label = $duplicate_label['label'];
454 456
455 - $modified_label = Global_Classes_Labels::generate_unique_label( $original_label, $existing_labels );
457 + $modified_label = $this->generate_unique_label( $original_label, $existing_labels );
456 458
457 459 $modified_labels[ $item_id ] = [
458 460 'original' => $original_label,
459 461 'modified' => $modified_label,
@@ -460,6 +462,56 @@
460 462 ];
461 463 }
462 464
463 465 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;
464 516 }
465 517 }