PluginProbe
VikBooking Hotel Booking Engine & PMS / trunk
VikBooking Hotel Booking Engine & PMS vtrunk
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 / model / customer.php

customer.php in VikBooking Hotel Booking Engine & PMS trunk, at admin/helpers/src/model/customer.php

79 lines 2.4 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 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 * VikBooking customer model.
16 *
17 * @since 1.18.8 (J) - 1.8.8 (WP)
18 */
19 class VBOModelCustomer extends VBOMvcModel
20 {
21 /**
22 * The database table name.
23 *
24 * @var string
25 */
26 protected $tableName = '#__vikbooking_customers';
27
28 /**
29 * @inheritDoc
30 */
31 protected function preflight(array &$data)
32 {
33 if (empty($data['id'])) {
34 // we are saving a new record
35
36 if (empty($data['first_name']) || empty($data['last_name'])) {
37 // missing mandatory information
38 $this->setError('Missing first name or last name.');
39 return false;
40 }
41
42 // check if a customer with the same information exists
43 if (!empty($data['email'])) {
44 $customer = $this->getItem([
45 'first_name' => $data['first_name'],
46 'last_name' => $data['last_name'],
47 'email' => $data['email'],
48 ]);
49
50 if ($customer) {
51 // convert the saving operation into an update
52 $data['id'] = $customer->id;
53 }
54 }
55
56 /**
57 * Make sure the customer PIN code does not default to an empty value of 0.
58 *
59 * @since 1.18.11 (J) - 1.8.11 (WP)
60 */
61 if (empty($data['pin'])) {
62 do {
63 // always generate a unique PIN code for new records
64 $data['pin'] = VikBooking::getCPinInstance()->generateSerialCode(8);
65 // repeat in case a record with the same PIN already exists
66 } while ($this->getItem(['pin' => $data['pin']]));
67 }
68 }
69
70 // always take care of the customer country
71 if (!empty($data['country']) && strlen($data['country']) !== 3) {
72 // attempt to convert a country iso2 code or name into the corresponding iso3 char code
73 $data['country'] = VikBooking::getCPinInstance()->get3CharCountry($data['country']);
74 }
75
76 return parent::preflight($data);
77 }
78 }
79