PluginProbe
ShiftController Employee Shift Scheduling / 4.9.24
ShiftController Employee Shift Scheduling v4.9.24
4.9.97 4.9.96 4.9.95 4.9.74 4.9.75 4.9.76 4.9.77 4.9.78 4.9.84 4.9.85 4.9.87 4.9.91 4.9.92 trunk 2.1.0 2.1.1 2.1.2 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 3.2.4 All 38 releases
shiftcontroller / sh4 / shifttypes / query.php

query.php in ShiftController Employee Shift Scheduling 4.9.24, at sh4/shifttypes/query.php

126 lines 3.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php if (! defined('ABSPATH')) exit; // Exit if accessed directly
2 interface SH4_ShiftTypes_IQuery
3 {
4 public function findAll();
5 public function findManyById( array $ids );
6 public function findById( $id );
7 }
8
9 class SH4_ShiftTypes_Query implements SH4_ShiftTypes_IQuery
10 {
11 public function __construct(
12 HC3_Hooks $hooks,
13 HC3_CrudFactory $crudFactory,
14 SH4_Calendars_Query $calendarsQuery,
15 SH4_ShiftTypes_Presenter $shiftTypesPresenter
16 )
17 {
18 $this->crud = $hooks->wrap( $crudFactory->make('shifttype') );
19 $this->calendarsQuery = $hooks->wrap( $calendarsQuery );
20 $this->shiftTypesPresenter = $hooks->wrap( $shiftTypesPresenter );
21 $this->self = $hooks->wrap( $this );
22 }
23
24 public function findById( $id )
25 {
26 $return = NULL;
27 if( strpos($id, '-') ){
28 $parts = explode( '-', $id );
29 $start = array_shift( $parts );
30 $end = array_shift( $parts );
31
32 $array = array();
33 $array['id'] = 0;
34 $array['title'] = '__-Custom Time-__';
35 $array['starts_at'] = $start;
36 $array['ends_at'] = $end;
37
38 if( $parts ){
39 $break_start = array_shift( $parts );
40 $break_end = array_shift( $parts );
41 $array['break_starts_at'] = $break_start;
42 $array['break_ends_at'] = $break_end;
43 }
44
45 $return = $this->_arrayToModel( $array );
46 return $return;
47 }
48 elseif( $id == 0 ){
49 $array = array();
50 $array['id'] = 0;
51 $array['title'] = '__-Custom Time-__';
52 $array['starts_at'] = NULL;
53 $array['ends_at'] = NULL;
54
55 $return = $this->_arrayToModel( $array );
56 return $return;
57 }
58
59 $args = array();
60 $args[] = array('id', '=', $id);
61 $args[] = array('limit', 1);
62
63 if( $array = $this->self->read( $args ) ){
64 $return = array_shift( $array );
65 }
66 return $return;
67 }
68
69 public function findManyById( array $ids )
70 {
71 $return = NULL;
72
73 $args = array();
74 $args[] = array('id', 'IN', $ids);
75
76 $return = $this->self->read( $args );
77
78 if( in_array(0, $ids) ){
79 $return = $return + array( 0 => $this->self->findById(0) );
80 }
81
82 return $return;
83 }
84
85 public function findAll()
86 {
87 $args = array();
88
89 $return = $this->self->read( $args );
90 $return = $return + array( 0 => $this->self->findById(0) );
91
92 return $return;
93 }
94
95 public function read( array $args = array() )
96 {
97 $args[] = array( 'sort', 'range', 'desc' );
98 $args[] = array( 'sort', 'starts_at', 'asc' );
99 $args[] = array( 'sort', 'ends_at', 'asc' );
100
101 $return = $this->crud->read( $args );
102
103 $ids = array_keys($return);
104 foreach( $ids as $id ){
105 $return[$id] = $this->_arrayToModel( $return[$id] );
106 }
107
108 return $return;
109 }
110
111 protected function _arrayToModel( array $array )
112 {
113 $id = array_key_exists('id', $array) ? $array['id'] : NULL;
114
115 $range = array_key_exists('range', $array) ? $array['range'] : SH4_ShiftTypes_Model::RANGE_HOURS;
116 $title = $array['title'];
117 $start = $array['starts_at'];
118 $end = $array['ends_at'];
119
120 $breakStart = array_key_exists('break_starts_at', $array) ? $array['break_starts_at'] : NULL;
121 $breakEnd = array_key_exists('break_ends_at', $array) ? $array['break_ends_at'] : NULL;
122
123 $return = new SH4_ShiftTypes_Model( $id, $title, $range, $start, $end, $breakStart, $breakEnd );
124 return $return;
125 }
126 }