-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathReservationRruleParameter.php
More file actions
116 lines (108 loc) · 2.59 KB
/
ReservationRruleParameter.php
File metadata and controls
116 lines (108 loc) · 2.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<?php
/**
* ReservationRruleParameter.php
*
* @author Ryuji AMANO <ryuji@ryus.co.jp>
* @link http://www.netcommons.org NetCommons Project
* @license http://www.netcommons.org/license.txt NetCommons License
*/
/**
* Class ReservationRruleParameter
*/
class ReservationRruleParameter {
/**
* @var string モデル名
*/
protected $_modelName = 'ReservationActionPlan';
/**
* @var array rrule
*/
protected $_rrule = null;
/**
* request dataのセット
*
* @param array $data リクエストデータ。
* @return void
*/
public function setData($data) {
// リピートか?
$data = $data[$this->_modelName];
if ($data['is_repeat']) {
// repeat
// 日、週、月、年のいずれか?
$this->_rrule['FREQ'] = $data['repeat_freq'];
switch ($data['repeat_freq']){
case 'DAILY':
$this->_rrule['INTERVAL'] = $data['rrule_interval']['DAILY'];
break;
case 'WEEKLY':
$this->_makeWeeklyRrule($data);
break;
case 'MONTHLY':
$this->_makeMonthlyRrule($data);
break;
case 'YEARLY':
$this->_makeYearyRrule($data);
break;
}
// count or until
if ($data['rrule_term'] == 'COUNT') {
// count
$this->_rrule['COUNT'] = $data['rrule_count'];
} else {
//until
$this->_rrule['UNTIL'] = $data['rrule_until'];
}
}
}
/**
* rruleをかえす
*
* @return array rrule
*/
public function getRrule() {
return $this->_rrule;
}
/**
* 年繰り返しのrrule生成
*
* @param array $data request data
* @return void
*/
protected function _makeYearyRrule($data) {
$this->_rrule['INTERVAL'] = $data['rrule_interval']['YEARLY'];
if ($data['rrule_bymonth']['YEARLY']) {
$this->_rrule['BYMONTH'] = $data['rrule_bymonth']['YEARLY']; // 配列まま
}
if ($data['rrule_byday']['YEARLY']) {
// ex 2SU 第2日曜
$this->_rrule['BYDAY'] = $data['rrule_byday']['YEARLY'];
}
}
/**
* 月繰り返しのrrule生成
*
* @param array $data request data
* @return void
*/
protected function _makeMonthlyRrule($data) {
$this->_rrule['INTERVAL'] = $data['rrule_interval']['MONTHLY'];
if ($data['rrule_byday']['MONTHLY']) {
// ex 2SU 第2日曜
$this->_rrule['BYDAY'] = $data['rrule_byday']['MONTHLY'];
}
if ($data['rrule_bymonthday']['MONTHLY']) {
$this->_rrule['BYMONTHDAY'] = $data['rrule_byday']['MONTHLY'];
}
}
/**
* 週繰り返しのrrule生成
*
* @param array $data request data
* @return void
*/
protected function _makeWeeklyRrule($data) {
$this->_rrule['INTERVAL'] = $data['rrule_interval']['WEEKLY'];
$this->_rrule['BYDAY'] = $data['rrule_byday']['WEEKLY']; //配列のまま
}
}