PluginProbe
Booktics – Appointment Booking Calendar for Service Businesses / 1.0.0
Booktics – Appointment Booking Calendar for Service Businesses v1.0.0
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.0, at core/settings/settings.php

143 lines 3.9 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 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 }
143