PluginProbe
Booktics – Appointment Booking Calendar for Service Businesses / 1.0.19
Booktics – Appointment Booking Calendar for Service Businesses v1.0.19
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 1.0.4 1.0.5 1.0.6 1.0.7 All 27 releases
booktics / core / settings / settings.php

settings.php in Booktics – Appointment Booking Calendar for Service Businesses 1.0.19, at core/settings/settings.php

148 lines 4.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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 );
144
145 return apply_filters( 'booktics_default_settings', $defaults );
146 }
147 }
148