PluginProbe ʕ •ᴥ•ʔ
PiWeb Delivery & Pickup Date Time for WooCommerce / 3.0.49.23
PiWeb Delivery & Pickup Date Time for WooCommerce v3.0.49.23
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 1 year ago js 1 year ago class-css.php 1 year ago class-date.php 1 year ago class-delivery-type.php 1 year ago class-display-field.php 1 year ago class-js.php 1 year ago class-main.php 1 year ago class-myaccount.php 1 year ago class-order.php 1 year ago class-pickup-location.php 1 year ago class-shipping-method.php 1 year ago class-time-range.php 1 year ago class-time-slot.php 1 year ago class-time.php 1 year ago class-validate.php 1 year ago class-woo-app.php 1 year ago
class-time-range.php
155 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 }
33
34 function init($type = ""){
35
36 if(empty($this->selected_date)) return array();
37 if(empty($type)){
38 $this->delivery_type = pi_dtt_delivery_type::getType();
39 }else{
40 $this->delivery_type = $type;
41 }
42
43 $this->day = strtolower(pisol_dtt_time::dayOfTheWeek( $this->selected_date ));
44
45 $this->time_array = $this->getTimeArray($this->day, $this->delivery_type);
46
47 return apply_filters('pisol_dtt_time_range_filter',$this->time_array, $this->selected_date, $this->delivery_type);
48 }
49
50 function getTimeArray($day, $delivery_type){
51 //return array(array('id'=>'9:00 AM','text'=>'9:00 AM' ));
52 $start_time = $this->getStartTime($day, $delivery_type);
53 $end_time = $this->getEndTime($day, $delivery_type);
54 $time_array = $this->generateTimeArray($start_time, $end_time);
55 $formated_array = $this->formatTimeArray($time_array);
56 return $formated_array;
57 }
58
59 function generateTimeArray($start_time, $end_time){
60 $start_time = self::validateTime($start_time, '9:00 AM');
61 $end_time = self::validateTime($end_time, '9:00 PM');
62
63 if(!self::isStartTimeSmallerThenEndTime($start_time, $end_time)) return array();
64
65 $time_array = self::generateArray($this->selected_date, $start_time, $end_time);
66 return $time_array;
67 }
68
69 static function generateArray($selected_date, $start_time, $end_time){
70 $time_interval = pisol_dtt_get_setting('pi_time_interval',15);
71 $time_array = array();
72 $time = $start_time;
73 $compare_time = $selected_date.' '.$start_time;
74 while(strtotime($compare_time) <= strtotime($selected_date.' '.$end_time)){
75 if(self::isTimeAllowed($selected_date, $time)){
76 $time_array[] = $time;
77 }
78 $time = date(self::$time_format, strtotime(' + '.$time_interval.' minutes', strtotime($time)));
79 $compare_time = date('Y/m/d h:i A', strtotime(' + '.$time_interval.' minutes', strtotime($compare_time)));
80 }
81 return $time_array;
82 }
83
84 function formatTimeArray($time_array){
85 if(empty($time_array)) return array();
86 $formated = array();
87 foreach($time_array as $time){
88 $formated[] = array(
89 'id'=>date( self::$time_format , strtotime($time) ),
90 'text'=>date( pisol_dtt_time::getDisplayFormat(), strtotime($time) )
91 );
92 }
93 return $formated;
94 }
95
96 static function isTimeAllowed($date, $time){
97 $current_date = current_time('Y/m/d');
98 if($current_date == $date){
99 $pi_order_preparation_hours = pisol_dtt_get_setting('pi_order_preparation_hours',60);
100 $pi_order_preparation_hours = !empty($pi_order_preparation_hours) ? $pi_order_preparation_hours : 0;
101 $current_time = current_time(self::$time_format);
102 $last_allowed_time = strtotime(' + '.$pi_order_preparation_hours.' minutes',strtotime($current_time));
103 if(strtotime($time) > $last_allowed_time){
104 return true;
105 }
106 return false;
107 }
108 return true;
109 }
110
111 static function isStartTimeSmallerThenEndTime($start_time, $end_time){
112 if( strtotime($start_time) < strtotime($end_time) ){
113 return true;
114 }
115 return false;
116 }
117
118 static function validateTime($time, $default){
119 return strtotime($time) ? $time : $default;
120 }
121
122 function getStartTime($day, $delivery_type){
123 return $this->getGeneralStartTime($delivery_type);
124 }
125
126 function getGeneralStartTime($delivery_type){
127 $name = 'pi_'.$delivery_type.'_start_time';
128 $start_time = pisol_dtt_get_setting($name,"");
129 return $start_time;
130 }
131
132 function getGeneralEndTime($delivery_type){
133 $name = 'pi_'.$delivery_type.'_end_time';
134 $end_time = pisol_dtt_get_setting($name,"");
135 return $end_time;
136 }
137
138 function getEndTime($day, $delivery_type){
139 return $this->getGeneralEndTime($delivery_type);
140 }
141
142 function getDaysStartTime($day, $delivery_type){
143 $name = 'pi_'.$delivery_type.'_'.$day.'_start_time';
144 $start_time = pisol_dtt_get_setting($name,"");
145 return $start_time;
146 }
147
148 function getDaysEndTime($day, $delivery_type){
149 $name = 'pi_'.$delivery_type.'_'.$day.'_end_time';
150 $end_time = pisol_dtt_get_setting($name,"");
151 return $end_time;
152 }
153
154
155 }