PluginProbe
Booktics – Appointment Booking Calendar for Service Businesses / 1.0.29
Booktics – Appointment Booking Calendar for Service Businesses v1.0.29
1.0.29 1.0.28 1.0.27 1.0.26 1.0.25 1.0.24 1.0.23 1.0.22 1.0.21 1.0.20 1.0.19 trunk 1.0.0 1.0.1 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.2 1.0.3 All 31 releases
← All changes | core/settings/settings.php +152 -142 1.0.1 → 1.0.29 View file →
@@ -1,142 +1,152 @@
1 -<?php
2 -
3 -namespace Booktics\Settings;
4 -
5 -use Booktics\Services\Schedule_Record;
6 -
7 -/**
8 - * Settings class
9 - */
10 -class Settings {
11 - /**
12 - * Settings option name
13 - *
14 - * @var string
15 - */
16 - protected static string $option_name = 'booktics_options';
17 -
18 - /**
19 - * Get settings
20 - *
21 - * @param string $key Setting name from options
22 - * @param mixed $default Default set otherwise return false
23 - *
24 - * @return array|string
25 - */
26 - public static function get( $key = null, $default = false ) {
27 - $default_settings = self::get_default_settings();
28 - $settings = get_option( self::$option_name, array() );
29 - $settings = wp_parse_args( $settings, $default_settings );
30 -
31 - $schedule_record = ( new Schedule_Record() )->get_schedules( 0, 'default' );
32 - $settings['schedule'] = empty( $schedule_record['schedule'] )
33 - ? (object) array() : $schedule_record['schedule'];
34 - $settings['custom'] = $schedule_record['custom'];
35 - $settings['holiday'] = $schedule_record['holiday'];
36 - $settings = apply_filters( 'booktics_settings', $settings );
37 -
38 - if ( ! $key ) {
39 - return $settings;
40 - }
41 -
42 - if ( isset( $settings[ $key ] ) ) {
43 - return $settings[ $key ];
44 - }
45 -
46 - return $default;
47 - }
48 -
49 - /**
50 - * Update settings
51 - *
52 - * @param string $key Settings key
53 - * @param mixed $data Settings data
54 - *
55 - * @return void
56 - */
57 - public static function update( $key, $data = array() ) {
58 - if ( is_array( $key ) ) {
59 - self::update_multiple_data( $key );
60 - } else {
61 - self::update_single_data( $key, $data );
62 - }
63 - }
64 -
65 - /**
66 - * Update multiple settings data
67 - *
68 - * @param array $options List of settings data
69 - */
70 - private static function update_multiple_data( $options ) {
71 - $settings = self::get();
72 -
73 - foreach ( $options as $name => $value ) {
74 - $settings[ $name ] = $options[ $name ];
75 - }
76 -
77 - return update_option( self::$option_name, $settings );
78 - }
79 -
80 - /**
81 - * Update single data
82 - *
83 - * @param string $key Settings key
84 - * @param mixed $data Settings data
85 - */
86 - private static function update_single_data( $key, $data ) {
87 - $settings = self::get();
88 -
89 - $settings[ $key ] = $data;
90 -
91 - return update_option( self::$option_name, $settings );
92 - }
93 -
94 - /**
95 - * Get default settings
96 - *
97 - * @return array List of default settings
98 - */
99 - private static function get_default_settings(): array {
100 - $defaults = array(
101 - 'currency' => '',
102 - 'date_format' => '',
103 - 'time_format' => '',
104 - 'schedule' => array(
105 - 'mon' => array(
106 - array(
107 - 'start_time' => '9:00 AM',
108 - 'end_time' => '6:00 PM',
109 - ),
110 - ),
111 - 'tue' => array(
112 - array(
113 - 'start_time' => '9:00 AM',
114 - 'end_time' => '6:00 PM',
115 - ),
116 - ),
117 - 'wed' => array(
118 - array(
119 - 'start_time' => '9:00 AM',
120 - 'end_time' => '6:00 PM',
121 - ),
122 - ),
123 - 'thurs' => array(
124 - array(
125 - 'start_time' => '9:00 AM',
126 - 'end_time' => '6:00 PM',
127 - ),
128 - ),
129 - 'fri' => array(
130 - array(
131 - 'start_time' => '9:00 AM',
132 - 'end_time' => '6:00 PM',
133 - ),
134 - ),
135 - ),
136 - 'holiday' => array(),
137 - 'custom' => array(),
138 - );
139 -
140 - return apply_filters( 'booktics_default_settings', $defaults );
141 - }
142 -}
1 +<?php
2 +
3 +namespace Booktics\Settings;
4 +
5 +if ( ! defined( 'ABSPATH' ) ) {
6 + exit;
7 +}
8 +
9 +use Booktics\Services\Schedule_Record;
10 +
11 +/**
12 + * Settings class
13 + */
14 +class Settings {
15 + /**
16 + * Settings option name
17 + *
18 + * @var string
19 + */
20 + protected static string $option_name = 'booktics_options';
21 +
22 + /**
23 + * Get settings
24 + *
25 + * @param string $key Setting name from options
26 + * @param mixed $default Default set otherwise return false
27 + *
28 + * @return array|string
29 + */
30 + public static function get( $key = null, $default = false ) {
31 + $default_settings = self::get_default_settings();
32 + $settings = get_option( self::$option_name, array() );
33 + $settings = wp_parse_args( $settings, $default_settings );
34 +
35 + $schedule_record = ( new Schedule_Record() )->get_schedules( 0, 'default' );
36 + $settings['schedule'] = empty( $schedule_record['schedule'] )
37 + ? (object) array() : $schedule_record['schedule'];
38 + $settings['custom'] = $schedule_record['custom'];
39 + $settings['holiday'] = $schedule_record['holiday'];
40 + $settings = apply_filters( 'booktics_settings', $settings );
41 +
42 + if ( ! $key ) {
43 + return $settings;
44 + }
45 +
46 + if ( isset( $settings[ $key ] ) && $settings[ $key ] ) {
47 + return $settings[ $key ];
48 + }
49 +
50 + return $default;
51 + }
52 +
53 + /**
54 + * Update settings
55 + *
56 + * @param string $key Settings key
57 + * @param mixed $data Settings data
58 + *
59 + * @return void
60 + */
61 + public static function update( $key, $data = array() ) {
62 + if ( is_array( $key ) ) {
63 + self::update_multiple_data( $key );
64 + } else {
65 + self::update_single_data( $key, $data );
66 + }
67 + }
68 +
69 + /**
70 + * Update multiple settings data
71 + *
72 + * @param array $options List of settings data
73 + */
74 + private static function update_multiple_data( $options ) {
75 + $settings = self::get();
76 +
77 + foreach ( $options as $name => $value ) {
78 + $settings[ $name ] = $options[ $name ];
79 + }
80 +
81 + return update_option( self::$option_name, $settings );
82 + }
83 +
84 + /**
85 + * Update single data
86 + *
87 + * @param string $key Settings key
88 + * @param mixed $data Settings data
89 + */
90 + private static function update_single_data( $key, $data ) {
91 + $settings = self::get();
92 +
93 + $settings[ $key ] = $data;
94 +
95 + return update_option( self::$option_name, $settings );
96 + }
97 +
98 + /**
99 + * Get default settings
100 + *
101 + * @return array List of default settings
102 + */
103 + private static function get_default_settings(): array {
104 + $defaults = array(
105 + 'currency' => '',
106 + 'date_format' => '',
107 + 'time_format' => '',
108 + 'schedule' => array(
109 + 'mon' => array(
110 + array(
111 + 'start_time' => '9:00 AM',
112 + 'end_time' => '6:00 PM',
113 + ),
114 + ),
115 + 'tue' => array(
116 + array(
117 + 'start_time' => '9:00 AM',
118 + 'end_time' => '6:00 PM',
119 + ),
120 + ),
121 + 'wed' => array(
122 + array(
123 + 'start_time' => '9:00 AM',
124 + 'end_time' => '6:00 PM',
125 + ),
126 + ),
127 + 'thurs' => array(
128 + array(
129 + 'start_time' => '9:00 AM',
130 + 'end_time' => '6:00 PM',
131 + ),
132 + ),
133 + 'fri' => array(
134 + array(
135 + 'start_time' => '9:00 AM',
136 + 'end_time' => '6:00 PM',
137 + ),
138 + ),
139 + ),
140 + 'holiday' => array(),
141 + 'custom' => array(),
142 + 'allow_customer_as_wp_user' => false,
143 + 'pending_reservation_timeout' => 10,
144 + // WooCommerce checkout is stripped down by default: the booking form
145 + // already collected the customer, so billing fields would ask twice.
146 + 'wc_show_billing_fields' => false,
147 + 'wc_thankyou_page' => 'woocommerce',
148 + );
149 +
150 + return apply_filters( 'booktics_default_settings', $defaults );
151 + }
152 +}