PluginProbe ʕ •ᴥ•ʔ
VikAppointments Services Booking Calendar / 1.2.21
VikAppointments Services Booking Calendar v1.2.21
1.2.21 1.2.20 trunk 1.2.17 1.2.18 1.2.19
vikappointments / site / helpers / libraries / customfields / rules / phone.php
vikappointments / site / helpers / libraries / customfields / rules Last commit date
address.php 3 days ago city.php 3 days ago company.php 3 days ago country.php 3 days ago email.php 3 days ago index.html 3 days ago nominative.php 3 days ago pec.php 3 days ago phone.php 3 days ago ssn.php 3 days ago state.php 3 days ago vatnum.php 3 days ago zip.php 3 days ago
phone.php
101 lines
1 <?php
2 /**
3 * @package VikAppointments
4 * @subpackage core
5 * @author E4J s.r.l.
6 * @copyright Copyright (C) 2021 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 * VikAppointments custom field phone number rule dispatcher.
16 *
17 * @since 1.7
18 */
19 class VAPCustomFieldRulePhone extends VAPCustomFieldRule
20 {
21 /**
22 * Returns the name of the rule.
23 *
24 * @return string
25 */
26 public function getName()
27 {
28 return JText::translate('VAPCUSTFIELDRULE3');
29 }
30
31 /**
32 * Dispatches the field rule.
33 *
34 * @param mixed $value The value of the field set in request.
35 * @param array &$args The array data to fill-in in case of
36 * specific rules (name, e-mail, etc...).
37 * @param mixed $field The custom field object.
38 *
39 * @return void
40 */
41 public function dispatch($value, &$args, $field)
42 {
43 /**
44 * Validate phone number.
45 *
46 * @since 1.7.10
47 */
48 if ($value && preg_match("/[^0-9\+\-\s\(\)]/", $value))
49 {
50 throw new InvalidArgumentException(JText::translate('VAP_INVALID_PHONE_ERR'), 400);
51 }
52
53 // in case of multiple fields with phone rule, use only
54 // the first specified one
55 if (empty($args['purchaser_phone']))
56 {
57 // fill phone column with field value
58 $args['purchaser_phone'] = $value;
59
60 $input = JFactory::getApplication()->input;
61
62 // get dial code
63 $dial = $input->get($field->getID() . '_dialcode', null, 'string');
64
65 if ($dial)
66 {
67 // register dial code
68 $args['purchaser_prefix'] = $dial;
69 }
70
71 // get country code
72 $country = $input->get($field->getID() . '_country', null, 'string');
73
74 if ($country)
75 {
76 // register country code
77 $args['purchaser_country'] = $country;
78 }
79 }
80 }
81
82 /**
83 * Renders the field rule.
84 *
85 * @param array &$data An array of display data.
86 * @param mixed $field The custom field object.
87 *
88 * @return string The HTML that will be used in place of the layout
89 * defined by the field. Omit this value to keep using
90 * the default HTML of the field.
91 */
92 public function render(&$data, $field)
93 {
94 // use a different layout for fields with phone number rule
95 $field->set('layout', 'tel');
96
97 // inject class name
98 $data['class'] = (empty($data['class']) ? '' : $data['class'] . ' ') . 'phone-field';
99 }
100 }
101