PluginProbe ʕ •ᴥ•ʔ
WPML Multilingual & Multicurrency for WooCommerce / 5.5.7
WPML Multilingual & Multicurrency for WooCommerce v5.5.7
5.5.7 5.3.8 5.3.9 5.4.3 5.4.4 5.4.5 5.5.1 5.5.1.1 5.5.2.2 5.5.2.3 5.5.3 5.5.3.1 5.5.4 5.5.5 5.5.6 trunk 0.9 1.0 1.1 1.2 1.3 1.4 1.5 2.0 2.2 2.3 2.3.1 2.3.2 3.0 3.0.1 3.1 3.2 3.2.1 3.2.2 3.3 3.3.1 3.3.2 3.3.3 3.3.4 3.4 3.4.1 3.4.2 3.4.3 3.5 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 3.6 3.6.1 3.6.10 3.6.11 3.6.2 3.6.3 3.6.4 3.6.5 3.6.5.1 3.6.6 3.6.7 3.6.8 3.6.9 3.7 3.7.1 3.7.10 3.7.11 3.7.12 3.7.13 3.7.14 3.7.15 3.7.16 3.7.2 3.7.3 3.7.4 3.7.5 3.7.6 3.7.7 3.7.8 3.7.9 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.9.0 3.9.1 3.9.1.1 3.9.2 3.9.3 3.9.4 3.9.5 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.10.4 4.11.2 4.11.3.2 4.11.5 4.11.6 4.12.1 4.12.4 4.12.5 4.12.6 4.2.0 4.2.0.1 4.2.1 4.2.1.1 4.2.10 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.7.1 4.2.8 4.2.8.1 4.2.9 4.3.0 4.3.1 4.3.2 4.3.2.1 4.3.3 4.3.4 4.3.5 4.3.6 4.3.7 4.4.0 4.4.1 4.4.2 4.4.2.1 4.5.0 4.6.0 4.6.1 4.6.2 4.6.2.1 4.6.3 4.6.5 4.6.6 4.6.7 4.7.0 4.7.1 4.7.2 4.7.3 4.7.4 4.7.5 4.7.6 4.7.7 4.7.8 4.7.9 4.8.0 4.9.0 4.9.1 5.0.1 5.0.2 5.1.1 5.1.2 5.1.3 5.2.0 5.2.1 5.3.2 5.3.3.1 5.3.4 5.3.5 5.3.6 5.3.7
woocommerce-multilingual / compatibility / WcBookings / TranslationEditor / GroupsAndLabels.php
woocommerce-multilingual / compatibility / WcBookings / TranslationEditor Last commit date
GroupsAndLabels.php 4 weeks ago
GroupsAndLabels.php
82 lines
1 <?php
2
3 namespace WCML\Compatibility\WcBookings\TranslationEditor;
4
5 use WCML_Bookings;
6 use WCML\Compatibility\WcBookings\SharedHooks;
7 use WCML\TranslationJob\Hooks as TranslationJobHooks;
8 use WPML\FP\Obj;
9 use WPML\FP\Fns;
10 use WPML\FP\Str;
11
12 class GroupsAndLabels implements \IWPML_Action {
13
14 const PERSON_GROUP_SUFFIX = '/person';
15 const PERSON_GROUP_LABEL = 'Person';
16 const RESOURCE_GROUP_SUFFIX = '/resource';
17 const RESOURCE_GROUP_LABEL = 'Resource';
18
19 public function add_hooks() {
20 add_filter( 'wpml_tm_adjust_translation_fields', [ $this, 'adjustFields' ], 10, 2 );
21 }
22
23 public function adjustFields( $fields, $job ) {
24 if ( ! SharedHooks::isBooking( $job->original_doc_id ) ) {
25 return $fields;
26 }
27
28 foreach ( $fields as &$field ) {
29 $field = $this->adjustField( $field );
30 }
31
32 return $fields;
33 }
34
35 private function adjustField( $field ) {
36 $typeStartsWith = Str::startsWith( Fns::__, Obj::prop( 'field_type', $field ) );
37
38 $getGroup = function( $item, $prefix ) {
39 switch ( $prefix ) {
40 case WCML_Bookings::PERSON_FIELD_PREFIX:
41 return $item . self::PERSON_GROUP_SUFFIX;
42 case WCML_Bookings::RESOURCE_FIELD_PREFIX:
43 return $item . self::RESOURCE_GROUP_SUFFIX;
44 }
45 return $item;
46 };
47
48 $getGroupLabel = function( $prefix, $default ) {
49 switch ( $prefix ) {
50 case WCML_Bookings::PERSON_FIELD_PREFIX:
51 return self::PERSON_GROUP_LABEL;
52 case WCML_Bookings::RESOURCE_FIELD_PREFIX:
53 return self::RESOURCE_GROUP_LABEL;
54 }
55 return $default;
56 };
57
58 $addTitlesAndGroups = function( $item, $prefix ) use ( $getGroup, $getGroupLabel ) {
59 $fieldData = Str::replace( $prefix, '', $item['field_type'] );
60 $fieldParts = explode( ':', $fieldData );
61 $title = end( $fieldParts );
62 $group = reset( $fieldParts );
63 $group = $getGroup( $group, $prefix );
64
65 $item['title'] = apply_filters( 'wpml_labelize_string', $title, 'TranslationJob' );
66 $item['group'] = TranslationJobHooks::getTopLevelGroup();
67 $item['group'][ $group ] = $getGroupLabel( $prefix, $group );
68
69 return $item;
70 };
71
72 if ( $typeStartsWith( WCML_Bookings::PERSON_FIELD_PREFIX ) ) {
73 $field = $addTitlesAndGroups( $field, WCML_Bookings::PERSON_FIELD_PREFIX );
74 } elseif ( $typeStartsWith( WCML_Bookings::RESOURCE_FIELD_PREFIX ) ) {
75 $field = $addTitlesAndGroups( $field, WCML_Bookings::RESOURCE_FIELD_PREFIX );
76 }
77
78 return $field;
79 }
80
81 }
82