PluginProbe
ShiftController Employee Shift Scheduling / trunk
ShiftController Employee Shift Scheduling vtrunk
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 trunk, at sh4/shifttypes/query.php

128 lines 3.3 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 $crud, $calendarsQuery, $shiftTypesPresenter, $self;
12
13 public function __construct(
14 HC3_Hooks $hooks,
15 HC3_CrudFactory $crudFactory,
16 SH4_Calendars_Query $calendarsQuery,
17 SH4_ShiftTypes_Presenter $shiftTypesPresenter
18 )
19 {
20 $this->crud = $hooks->wrap( $crudFactory->make('shifttype') );
21 $this->calendarsQuery = $hooks->wrap( $calendarsQuery );
22 $this->shiftTypesPresenter = $hooks->wrap( $shiftTypesPresenter );
23 $this->self = $hooks->wrap( $this );
24 }
25
26 public function findById( $id )
27 {
28 $return = NULL;
29 if( strpos($id, '-') ){
30 $parts = explode( '-', $id );
31 $start = array_shift( $parts );
32 $end = array_shift( $parts );
33
34 $array = array();
35 $array['id'] = 0;
36 $array['title'] = '- ' . '__Custom Time__' . ' -';
37 $array['starts_at'] = $start;
38 $array['ends_at'] = $end;
39
40 if( $parts ){
41 $break_start = array_shift( $parts );
42 $break_end = array_shift( $parts );
43 $array['break_starts_at'] = $break_start;
44 $array['break_ends_at'] = $break_end;
45 }
46
47 $return = $this->_arrayToModel( $array );
48 return $return;
49 }
50 elseif( $id == 0 ){
51 $array = array();
52 $array['id'] = 0;
53 $array['title'] = '- ' . '__Custom Time__' . ' -';
54 $array['starts_at'] = NULL;
55 $array['ends_at'] = NULL;
56
57 $return = $this->_arrayToModel( $array );
58 return $return;
59 }
60
61 $args = array();
62 $args[] = array('id', '=', $id);
63 $args[] = array('limit', 1);
64
65 if( $array = $this->self->read( $args ) ){
66 $return = array_shift( $array );
67 }
68 return $return;
69 }
70
71 public function findManyById( array $ids )
72 {
73 $return = NULL;
74
75 $args = array();
76 $args[] = array('id', 'IN', $ids);
77
78 $return = $this->self->read( $args );
79
80 if( in_array(0, $ids) ){
81 $return = $return + array( 0 => $this->self->findById(0) );
82 }
83
84 return $return;
85 }
86
87 public function findAll()
88 {
89 $args = array();
90
91 $return = $this->self->read( $args );
92 $return = $return + array( 0 => $this->self->findById(0) );
93
94 return $return;
95 }
96
97 public function read( array $args = array() )
98 {
99 $args[] = array( 'sort', 'range', 'desc' );
100 $args[] = array( 'sort', 'starts_at', 'asc' );
101 $args[] = array( 'sort', 'ends_at', 'asc' );
102
103 $return = $this->crud->read( $args );
104
105 $ids = array_keys($return);
106 foreach( $ids as $id ){
107 $return[$id] = $this->_arrayToModel( $return[$id] );
108 }
109
110 return $return;
111 }
112
113 protected function _arrayToModel( array $array )
114 {
115 $id = array_key_exists('id', $array) ? $array['id'] : NULL;
116
117 $range = array_key_exists('range', $array) ? $array['range'] : SH4_ShiftTypes_Model::RANGE_HOURS;
118 $title = $array['title'];
119 $start = $array['starts_at'];
120 $end = $array['ends_at'];
121
122 $breakStart = array_key_exists('break_starts_at', $array) ? $array['break_starts_at'] : NULL;
123 $breakEnd = array_key_exists('break_ends_at', $array) ? $array['break_ends_at'] : NULL;
124
125 $return = new SH4_ShiftTypes_Model( $id, $title, $range, $start, $end, $breakStart, $breakEnd );
126 return $return;
127 }
128 }