PluginProbe
VikBooking Hotel Booking Engine & PMS / 1.8.15
VikBooking Hotel Booking Engine & PMS v1.8.15
1.8.15 1.8.14 1.8.13 1.8.12 1.8.11 1.8.10 1.8.9 1.8.6 1.8.7 1.8.8 trunk 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.7.3 All 36 releases
vikbooking / admin / helpers / src / checkin / paxfields / mrz / map / basic.php

basic.php in VikBooking Hotel Booking Engine & PMS 1.8.15, at admin/helpers/src/checkin/paxfields/mrz/map/basic.php

86 lines 2.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * @package VikBooking
4 * @subpackage core
5 * @author Alessio Gaggii - E4J s.r.l.
6 * @copyright Copyright (C) 2026 E4J s.r.l. All Rights Reserved.
7 * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
8 * @link https://vikwp.com
9 */
10
11 // No direct access
12 defined('ABSPATH') or die('No script kiddies please!');
13
14 /**
15 * Pax fields MRZ mapper for "basic" data collector.
16 *
17 * @since 1.18.6 (J) - 1.8.6 (WP)
18 */
19 final class VBOCheckinPaxfieldsMrzMapBasic extends VBOCheckinPaxfieldsMrzMap
20 {
21 /**
22 * @inheritDoc
23 */
24 public function getKnownFields(array $propertyList)
25 {
26 // build the associative relation with the known and supported fields
27 $knownFields = [
28 'firstName' => [
29 'first_name',
30 ],
31 'lastName' => [
32 'last_name',
33 ],
34 'dateOfBirth' => [
35 'date_birth',
36 ],
37 'nationality' => [
38 'country',
39 'country_c',
40 'country_b',
41 'country_s',
42 ],
43 'sex' => [
44 'gender',
45 ],
46 'documentCode' => [
47 'doctype',
48 ],
49 'documentNumber' => [
50 'docnum',
51 ],
52 'issuer' => [
53 'docplace',
54 ],
55 ];
56
57 /**
58 * The "basic" MRZ map is also used whenever the data collector does not
59 * provide a dedicated MRZ mapper, so we include more fields than what's
60 * actually supported by the "basic" data collector. Therefore, we ensure
61 * the pax fields returned are supported by the current data collector.
62 */
63 $collectorFieldKeys = array_keys($this->getLabels());
64 foreach ($knownFields as $fieldType => $fieldKeys) {
65 foreach ($fieldKeys as $fieldIndex => $fieldKey) {
66 if (!in_array($fieldKey, $collectorFieldKeys)) {
67 // data collector does not implement this field key
68 unset($knownFields[$fieldType][$fieldIndex]);
69 }
70 }
71 if (!$knownFields[$fieldType]) {
72 // no more fields for this type
73 unset($knownFields[$fieldType]);
74 } else {
75 // re-number the possibly modified list
76 $knownFields[$fieldType] = array_values($knownFields[$fieldType]);
77 }
78 }
79
80 // return the filtered list of supported pax fields from MRZ data detection
81 return array_filter($knownFields, function($prop) use ($propertyList) {
82 return in_array($prop, $propertyList);
83 }, ARRAY_FILTER_USE_KEY);
84 }
85 }
86