views_entity_field_label($entity_type, $field_name)
Returns the label of a certain field.
Therefore it looks up in all bundles to find the most used field.
File
- core/modules/views/views.views.inc, line 247
- Provide views data that isn't tied to any other module.
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | function views_entity_field_label( $entity_type , $field_name ) { $label_counter = array (); $all_labels = array (); // Count the amount of fields per label per field storage. foreach ( array_keys (\Drupal::entityManager()->getBundleInfo( $entity_type )) as $bundle ) { $bundle_fields = array_filter (\Drupal::entityManager()->getFieldDefinitions( $entity_type , $bundle ), function ( $field_definition ) { return $field_definition instanceof FieldConfigInterface; }); if (isset( $bundle_fields [ $field_name ])) { $field = $bundle_fields [ $field_name ]; $label = $field ->getLabel(); $label_counter [ $label ] = isset( $label_counter [ $label ]) ? ++ $label_counter [ $label ] : 1; $all_labels [ $label ] = TRUE; } } if ( empty ( $label_counter )) { return array ( $field_name , $all_labels ); } // Sort the field labels by it most used label and return the most used one. // If the counts are equal, sort by the label to ensure the result is // deterministic. uksort( $label_counter , function ( $a , $b ) use ( $label_counter ) { if ( $label_counter [ $a ] === $label_counter [ $b ]) { return strcmp ( $a , $b ); } return $label_counter [ $a ] > $label_counter [ $b ] ? -1 : 1; }); $label_counter = array_keys ( $label_counter ); return array ( $label_counter [0], $all_labels ); } |
Please login to continue.