PluginProbe ʕ •ᴥ•ʔ
PiWeb Delivery & Pickup Date Time for WooCommerce / 3.0.49.3
PiWeb Delivery & Pickup Date Time for WooCommerce v3.0.49.3
3.0.63 3.0.62 3.0.61 3.0.60 3.0.49.49 3.0.49.6 3.0.49.60 3.0.49.61 3.0.49.62 3.0.49.63 3.0.49.64 3.0.49.66 3.0.49.67 3.0.49.69 3.0.49.7 3.0.49.70 3.0.49.72 3.0.49.73 3.0.49.74 3.0.49.76 3.0.49.77 3.0.49.79 3.0.49.9 3.0.49.90 3.0.49.91 3.0.49.92 3.0.49.93 3.0.49.94 3.0.49.96 3.0.49.97 3.0.49.99 trunk 1.0 1.1 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 2.9.17 3.0.47 3.0.49 3.0.49.1 3.0.49.10 3.0.49.11 3.0.49.12 3.0.49.13 3.0.49.16 3.0.49.17 3.0.49.19 3.0.49.2 3.0.49.20 3.0.49.21 3.0.49.22 3.0.49.23 3.0.49.24 3.0.49.26 3.0.49.27 3.0.49.29 3.0.49.3 3.0.49.30 3.0.49.31 3.0.49.32 3.0.49.33 3.0.49.34 3.0.49.36 3.0.49.37 3.0.49.39 3.0.49.4 3.0.49.40 3.0.49.41 3.0.49.42 3.0.49.43 3.0.49.44 3.0.49.46 3.0.49.47
pi-woocommerce-order-date-time-and-type / public / class-time-range.php
pi-woocommerce-order-date-time-and-type / public Last commit date
css 2 years ago js 2 years ago class-css.php 2 years ago class-date.php 2 years ago class-delivery-type.php 2 years ago class-display-field.php 2 years ago class-js.php 2 years ago class-main.php 2 years ago class-order.php 2 years ago class-pickup-location.php 2 years ago class-shipping-method.php 2 years ago class-time-range.php 2 years ago class-time-slot.php 2 years ago class-time.php 2 years ago class-validate.php 2 years ago class-woo-app.php 2 years ago
class-time-range.php
156 lines
1 <?php
2 if ( ! defined( 'WPINC' ) ) {
3 die;
4 }
5 class pisol_dtt_time_range{
6
7 static $time_format = 'H:i';
8 public $selected_date;
9 public $delivery_type;
10 public $day;
11 public $time_slot;
12 public $time_array;
13
14 function __construct($selected_date){
15 $this->selected_date = $selected_date;
16 }
17
18 static function getTimeRangeArray( $date, $type = "" ){
19 $obj = new self($date);
20 $time_range = $obj->init($type);
21 return apply_filters('pisol_dtt_time_range_filter',$time_range, $date, $type);
22 }
23
24 static function getTimeRangeJson($date, $type = "" ){
25 $obj = new self($date);
26 $obj->getTime($type);
27 }
28
29 function getTime($type = ""){
30 $time_range = $this->init($type);
31 echo json_encode($time_range);
32 die;
33 }
34
35 function init($type = ""){
36
37 if(empty($this->selected_date)) return array();
38 if(empty($type)){
39 $this->delivery_type = pi_dtt_delivery_type::getType();
40 }else{
41 $this->delivery_type = $type;
42 }
43
44 $this->day = strtolower(pisol_dtt_time::dayOfTheWeek( $this->selected_date ));
45
46 $this->time_array = $this->getTimeArray($this->day, $this->delivery_type);
47
48 return apply_filters('pisol_dtt_time_range_filter',$this->time_array, $this->selected_date, $this->delivery_type);
49 }
50
51 function getTimeArray($day, $delivery_type){
52 //return array(array('id'=>'9:00 AM','text'=>'9:00 AM' ));
53 $start_time = $this->getStartTime($day, $delivery_type);
54 $end_time = $this->getEndTime($day, $delivery_type);
55 $time_array = $this->generateTimeArray($start_time, $end_time);
56 $formated_array = $this->formatTimeArray($time_array);
57 return $formated_array;
58 }
59
60 function generateTimeArray($start_time, $end_time){
61 $start_time = self::validateTime($start_time, '9:00 AM');
62 $end_time = self::validateTime($end_time, '9:00 PM');
63
64 if(!self::isStartTimeSmallerThenEndTime($start_time, $end_time)) return array();
65
66 $time_array = self::generateArray($this->selected_date, $start_time, $end_time);
67 return $time_array;
68 }
69
70 static function generateArray($selected_date, $start_time, $end_time){
71 $time_interval = pisol_dtt_get_setting('pi_time_interval',15);
72 $time_array = array();
73 $time = $start_time;
74 $compare_time = $selected_date.' '.$start_time;
75 while(strtotime($compare_time) <= strtotime($selected_date.' '.$end_time)){
76 if(self::isTimeAllowed($selected_date, $time)){
77 $time_array[] = $time;
78 }
79 $time = date(self::$time_format, strtotime(' + '.$time_interval.' minutes', strtotime($time)));
80 $compare_time = date('Y/m/d h:i A', strtotime(' + '.$time_interval.' minutes', strtotime($compare_time)));
81 }
82 return $time_array;
83 }
84
85 function formatTimeArray($time_array){
86 if(empty($time_array)) return array();
87 $formated = array();
88 foreach($time_array as $time){
89 $formated[] = array(
90 'id'=>date( self::$time_format , strtotime($time) ),
91 'text'=>date( pisol_dtt_time::getDisplayFormat(), strtotime($time) )
92 );
93 }
94 return $formated;
95 }
96
97 static function isTimeAllowed($date, $time){
98 $current_date = current_time('Y/m/d');
99 if($current_date == $date){
100 $pi_order_preparation_hours = pisol_dtt_get_setting('pi_order_preparation_hours',60);
101 $pi_order_preparation_hours = !empty($pi_order_preparation_hours) ? $pi_order_preparation_hours : 0;
102 $current_time = current_time(self::$time_format);
103 $last_allowed_time = strtotime(' + '.$pi_order_preparation_hours.' minutes',strtotime($current_time));
104 if(strtotime($time) > $last_allowed_time){
105 return true;
106 }
107 return false;
108 }
109 return true;
110 }
111
112 static function isStartTimeSmallerThenEndTime($start_time, $end_time){
113 if( strtotime($start_time) < strtotime($end_time) ){
114 return true;
115 }
116 return false;
117 }
118
119 static function validateTime($time, $default){
120 return strtotime($time) ? $time : $default;
121 }
122
123 function getStartTime($day, $delivery_type){
124 return $this->getGeneralStartTime($delivery_type);
125 }
126
127 function getGeneralStartTime($delivery_type){
128 $name = 'pi_'.$delivery_type.'_start_time';
129 $start_time = pisol_dtt_get_setting($name,"");
130 return $start_time;
131 }
132
133 function getGeneralEndTime($delivery_type){
134 $name = 'pi_'.$delivery_type.'_end_time';
135 $end_time = pisol_dtt_get_setting($name,"");
136 return $end_time;
137 }
138
139 function getEndTime($day, $delivery_type){
140 return $this->getGeneralEndTime($delivery_type);
141 }
142
143 function getDaysStartTime($day, $delivery_type){
144 $name = 'pi_'.$delivery_type.'_'.$day.'_start_time';
145 $start_time = pisol_dtt_get_setting($name,"");
146 return $start_time;
147 }
148
149 function getDaysEndTime($day, $delivery_type){
150 $name = 'pi_'.$delivery_type.'_'.$day.'_end_time';
151 $end_time = pisol_dtt_get_setting($name,"");
152 return $end_time;
153 }
154
155
156 }