This project does not seem to handle request data directly as such no vulnerable execution paths were found.
include
, or for example
via PHP's auto-loading mechanism.
These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
1 | <?php |
||
2 | /************************************************************************ |
||
3 | * OVIDENTIA http://www.ovidentia.org * |
||
4 | ************************************************************************ |
||
5 | * Copyright (c) 2003 by CANTICO ( http://www.cantico.fr ) * |
||
6 | * * |
||
7 | * This file is part of Ovidentia. * |
||
8 | * * |
||
9 | * Ovidentia is free software; you can redistribute it and/or modify * |
||
10 | * it under the terms of the GNU General Public License as published by * |
||
11 | * the Free Software Foundation; either version 2, or (at your option) * |
||
12 | * any later version. * |
||
13 | * * |
||
14 | * This program is distributed in the hope that it will be useful, but * |
||
15 | * WITHOUT ANY WARRANTY; without even the implied warranty of * |
||
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * |
||
17 | * See the GNU General Public License for more details. * |
||
18 | * * |
||
19 | * You should have received a copy of the GNU General Public License * |
||
20 | * along with this program; if not, write to the Free Software * |
||
21 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,* |
||
22 | * USA. * |
||
23 | ************************************************************************/ |
||
24 | |||
25 | |||
26 | |||
27 | include_once dirname(__FILE__)."/functions.php"; |
||
28 | include_once $GLOBALS['babInstallPath']."utilit/afincl.php"; |
||
29 | include_once $GLOBALS['babInstallPath']."utilit/mailincl.php"; |
||
30 | include_once dirname(__FILE__)."/utilit/vacincl.php"; |
||
31 | require_once $GLOBALS['babInstallPath'].'utilit/dateTime.php'; |
||
32 | require_once dirname(__FILE__).'/utilit/agent.class.php'; |
||
33 | require_once $GLOBALS['babInstallPath'].'utilit/urlincl.php'; |
||
34 | |||
35 | |||
36 | |||
37 | /** |
||
38 | * |
||
39 | */ |
||
40 | function bab_isEntryEditable($id) |
||
41 | { |
||
42 | if ($id == 0) { |
||
43 | // request creation |
||
44 | return true; |
||
45 | } |
||
46 | |||
47 | $agent = absences_Agent::getCurrentUser(); |
||
48 | |||
49 | require_once dirname(__FILE__).'/utilit/entry.class.php'; |
||
50 | $entry = absences_Entry::getById($id); |
||
51 | |||
52 | |||
53 | if ($agent->isManager()) { |
||
54 | // le gestionnaire peut tout modifier |
||
55 | return (int) $entry->id_user; |
||
56 | } |
||
57 | |||
58 | |||
59 | if ($entry->canModify()) { |
||
60 | return (int) $entry->id_user; |
||
61 | } |
||
62 | |||
63 | return false; |
||
64 | } |
||
65 | |||
66 | |||
67 | |||
68 | /** |
||
69 | * Test if the current logged in user can create a vacation request in the name of $id_user |
||
70 | * @param unknown_type $id_user |
||
71 | * |
||
72 | * @return bool |
||
73 | */ |
||
74 | function bab_vacRequestCreate($id_user) { |
||
75 | global $babBody; |
||
76 | |||
77 | |||
78 | $target_agent = absences_Agent::getFromIdUser($id_user); |
||
79 | |||
80 | |||
81 | if (!$target_agent->isInPersonnel()) { |
||
82 | $babBody->addError(sprintf(absences_translate("The user %s is not registered in the personnel members"), $target_agent->getName())); |
||
83 | return false; |
||
84 | } |
||
85 | |||
86 | if (!$target_agent->haveRights()) { |
||
87 | $babBody->addError(absences_translate("No accessibles vacations rights")); |
||
88 | return false; |
||
89 | } |
||
90 | |||
91 | if ($id_user == bab_getUserId()) { |
||
92 | return true; |
||
93 | } |
||
94 | else |
||
95 | { |
||
96 | $current_agent = absences_Agent::getCurrentUser(); |
||
97 | if($current_agent->isManager()) |
||
98 | { |
||
99 | return true; |
||
100 | } |
||
101 | |||
102 | if (absences_getVacationOption('chart_superiors_create_request') && absences_IsUserUnderSuperior($id_user)) { |
||
103 | return true; |
||
104 | } |
||
105 | } |
||
106 | |||
107 | $babBody->addError(sprintf(absences_translate("Access denied for %s"), $target_agent->getName())); |
||
108 | return false; |
||
109 | } |
||
110 | |||
111 | |||
112 | function absences_recurringVacation($begin, $end, $id) |
||
113 | { |
||
114 | global $babBody; |
||
115 | class temp |
||
0 ignored issues
–
show
|
|||
116 | { |
||
117 | /** |
||
118 | * |
||
119 | * @var Func_CalendarBackend |
||
120 | */ |
||
121 | private $calendarBackend; |
||
122 | |||
123 | /** |
||
124 | * |
||
125 | * @var array |
||
126 | */ |
||
127 | private $rrule; |
||
128 | |||
129 | |||
130 | public $begin; |
||
131 | public $end; |
||
132 | public $id; |
||
133 | public $duration; |
||
134 | public $id_user; |
||
135 | public $rfrom; |
||
136 | |||
137 | public $datebegintxt; |
||
138 | public $dateendtxt; |
||
139 | public $t_loaddates; |
||
140 | public $t_daily; |
||
141 | public $t_weekly; |
||
142 | public $t_monthly; |
||
143 | public $t_all_the; |
||
144 | public $t_years; |
||
145 | public $t_months; |
||
146 | public $t_weeks; |
||
147 | public $t_days; |
||
148 | public $repeat_dateendtxt; |
||
149 | public $t_sun; |
||
150 | public $t_mon; |
||
151 | public $t_tue; |
||
152 | public $t_wen; |
||
153 | public $t_thu; |
||
154 | public $t_fri; |
||
155 | public $t_sat; |
||
156 | public $calendar; |
||
157 | public $addvac; |
||
158 | public $t_vacation_request; |
||
159 | |||
160 | public $calurl; |
||
161 | public $datebegin; |
||
162 | public $dateend; |
||
163 | public $username; |
||
164 | public $nbdays; |
||
165 | public $end_day; |
||
166 | public $end_month; |
||
167 | public $end_year; |
||
168 | public $curyear; |
||
169 | public $ymin; |
||
170 | public $ymax; |
||
171 | public $yearmin; |
||
172 | public $repeat; |
||
173 | public $repeat_n_1; |
||
174 | public $repeat_n_2; |
||
175 | public $repeat_n_3; |
||
176 | public $repeat_wd_checked; |
||
177 | |||
178 | |||
179 | public function __construct($begin, $end, $id) |
||
180 | { |
||
181 | global $babBody; |
||
182 | |||
183 | $this->begin = $begin; |
||
0 ignored issues
–
show
The property
begin does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
184 | $this->end = $end; |
||
0 ignored issues
–
show
The property
end does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
185 | $this->id = $id; |
||
0 ignored issues
–
show
The property
id does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
186 | $this->duration = bab_mktime($this->end) - bab_mktime($this->begin); |
||
0 ignored issues
–
show
The property
duration does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
187 | |||
188 | $this->id_user = bab_pp('id_user'); |
||
0 ignored issues
–
show
The property
id_user does not seem to exist. Did you mean iduser ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
189 | $this->rfrom = bab_pp('rfrom', 0); |
||
0 ignored issues
–
show
The property
rfrom does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
190 | |||
191 | $this->datebegintxt = absences_translate("Begin date"); |
||
0 ignored issues
–
show
The property
datebegintxt does not seem to exist. Did you mean begintxt ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
192 | $this->dateendtxt = absences_translate("End date"); |
||
0 ignored issues
–
show
The property
dateendtxt does not seem to exist. Did you mean endtxt ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
193 | $this->t_loaddates = absences_translate("Load dates"); |
||
0 ignored issues
–
show
The property
t_loaddates does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
194 | $this->t_daily = absences_translate("Daily"); |
||
0 ignored issues
–
show
The property
t_daily does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
195 | $this->t_weekly = absences_translate("Weekly"); |
||
0 ignored issues
–
show
The property
t_weekly does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
196 | $this->t_monthly = absences_translate("Monthly"); |
||
0 ignored issues
–
show
The property
t_monthly does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
197 | $this->t_all_the = absences_translate("Every"); |
||
0 ignored issues
–
show
The property
t_all_the does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
198 | $this->t_years = absences_translate("years"); |
||
0 ignored issues
–
show
The property
t_years does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
199 | $this->t_months = absences_translate("months"); |
||
0 ignored issues
–
show
The property
t_months does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
200 | $this->t_weeks = absences_translate("weeks"); |
||
0 ignored issues
–
show
The property
t_weeks does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
201 | $this->t_days = absences_translate("days"); |
||
202 | $this->repeat_dateendtxt = absences_translate("Periodicity end date"); |
||
0 ignored issues
–
show
The property
repeat_dateendtxt does not seem to exist. Did you mean endtxt ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
203 | $this->t_sun = mb_substr(absences_translate("Sunday"),0,3); |
||
0 ignored issues
–
show
The property
t_sun does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
204 | $this->t_mon = mb_substr(absences_translate("Monday"),0,3); |
||
0 ignored issues
–
show
The property
t_mon does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
205 | $this->t_tue = mb_substr(absences_translate("Tuesday"),0,3); |
||
0 ignored issues
–
show
The property
t_tue does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
206 | $this->t_wen = mb_substr(absences_translate("Wednesday"),0,3); |
||
0 ignored issues
–
show
The property
t_wen does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
207 | $this->t_thu = mb_substr(absences_translate("Thursday"),0,3); |
||
0 ignored issues
–
show
The property
t_thu does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
208 | $this->t_fri = mb_substr(absences_translate("Friday"),0,3); |
||
0 ignored issues
–
show
The property
t_fri does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
209 | $this->t_sat = mb_substr(absences_translate("Saturday"),0,3); |
||
0 ignored issues
–
show
The property
t_sat does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
210 | $this->calendar = absences_translate("Planning"); |
||
0 ignored issues
–
show
The property
calendar does not seem to exist. Did you mean t_calendar ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
211 | $this->addvac = absences_translate('Confirm the period selection'); |
||
212 | $this->t_vacation_request = absences_translate('Create a vacation request on the following periods:'); |
||
0 ignored issues
–
show
The property
t_vacation_request does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
213 | |||
214 | $this->calurl = bab_toHtml(absences_addon()->getUrl()."planning&idx=cal&idu=".$this->id_user."&popup=1"); |
||
0 ignored issues
–
show
The property
calurl does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() The property
id_user does not seem to exist. Did you mean iduser ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
215 | |||
216 | $this->datebegin = absences_longDate(bab_mktime($begin)); |
||
0 ignored issues
–
show
The property
datebegin does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
217 | $end_timestamp = bab_mktime($end); |
||
218 | $this->dateend = absences_longDate($end_timestamp); |
||
0 ignored issues
–
show
The property
dateend does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
219 | |||
220 | |||
221 | $this->username = bab_toHtml(bab_getUserName($this->id_user)); |
||
0 ignored issues
–
show
The property
id_user does not seem to exist. Did you mean iduser ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() The property
username does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
222 | |||
223 | $this->nbdays = 31; |
||
0 ignored issues
–
show
The property
nbdays does not seem to exist. Did you mean nbdaystxt ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
224 | $this->end_day = bab_pp('repeat_dayend', date('d', $end_timestamp)); |
||
0 ignored issues
–
show
The property
end_day does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
225 | $this->end_month = bab_pp('repeat_monthend', date('m', $end_timestamp)); |
||
0 ignored issues
–
show
The property
end_month does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
226 | $this->end_year = bab_pp('repeat_yearend', date('Y', $end_timestamp)); |
||
0 ignored issues
–
show
The property
end_year does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
227 | |||
228 | |||
229 | $this->curyear = date('Y'); |
||
0 ignored issues
–
show
The property
curyear does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
230 | |||
231 | $this->ymin = 2; |
||
0 ignored issues
–
show
The property
ymin does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
232 | $this->ymax = 5; |
||
0 ignored issues
–
show
The property
ymax does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
233 | $this->yearmin = $this->curyear - $this->ymin; |
||
0 ignored issues
–
show
The property
yearmin does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
234 | |||
235 | |||
236 | $this->repeat = (int) bab_pp('repeat', 1); |
||
0 ignored issues
–
show
The property
repeat does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
237 | $this->repeat_n_1 = bab_pp('repeat_n_1'); |
||
0 ignored issues
–
show
The property
repeat_n_1 does not seem to exist. Did you mean repeat ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
238 | $this->repeat_n_2 = bab_pp('repeat_n_2'); |
||
0 ignored issues
–
show
The property
repeat_n_2 does not seem to exist. Did you mean repeat ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
239 | $this->repeat_n_3 = bab_pp('repeat_n_3'); |
||
0 ignored issues
–
show
The property
repeat_n_3 does not seem to exist. Did you mean repeat ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
240 | |||
241 | $weekdays = array('SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA'); |
||
242 | $repeat_wd = (array) bab_pp('repeat_wd', array()); |
||
243 | $repeat_wd = array_flip($repeat_wd); |
||
244 | $this->repeat_wd_checked = array(); |
||
0 ignored issues
–
show
The property
repeat_wd_checked does not seem to exist. Did you mean repeat ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
245 | |||
246 | foreach($weekdays as $wd) |
||
247 | { |
||
248 | $this->repeat_wd_checked[$wd] = isset($repeat_wd[$wd]) ? 'checked="checked"' : ''; |
||
0 ignored issues
–
show
The property
repeat_wd_checked does not seem to exist. Did you mean repeat ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
249 | } |
||
250 | |||
251 | if (isset($_POST['loaddates'])) |
||
252 | { |
||
253 | $backendName = bab_getICalendars($this->id_user)->calendar_backend; |
||
0 ignored issues
–
show
The property
id_user does not seem to exist. Did you mean iduser ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
254 | if (!$backendName) |
||
255 | { |
||
256 | $backendName = 'Ovi'; |
||
257 | } |
||
258 | |||
259 | $this->calendarBackend = bab_functionality::get('CalendarBackend/'.$backendName); |
||
0 ignored issues
–
show
The property
calendarBackend does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
260 | |||
261 | try { |
||
262 | $this->rrule = $this->loaddates(); |
||
0 ignored issues
–
show
The property
rrule does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() The method
loaddates() does not seem to exist on object<temp> .
This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces. This is most likely a typographical error or the method has been renamed. ![]() |
|||
263 | $this->dates_loaded = true; |
||
0 ignored issues
–
show
The property
dates_loaded does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
264 | } catch (ErrorException $e) |
||
0 ignored issues
–
show
The class
ErrorException does not exist. Did you forget a USE statement, or did you not list all dependencies?
Scrutinizer analyzes your It seems like the listed class was neither found in your dependencies, nor was it found in the analyzed files in your repository. If you are using some other form of dependency management, you might want to disable this analysis. ![]() |
|||
265 | { |
||
266 | $babBody->addError($e->getMessage()); |
||
267 | } |
||
268 | |||
269 | } |
||
270 | } |
||
271 | |||
272 | /** |
||
273 | * Get an array with posted rules |
||
274 | * @return array |
||
275 | */ |
||
276 | private function getPostedRecurringParameters() |
||
277 | { |
||
278 | $args = array(); |
||
279 | |||
280 | |||
281 | $args['until'] = array( |
||
282 | 'year' => (int) $_POST['repeat_yearend'], |
||
283 | 'month' => (int) $_POST['repeat_monthend'], |
||
284 | 'day' => (int) $_POST['repeat_dayend'] |
||
285 | ); |
||
286 | |||
287 | $_POST['repeat'] = isset($_POST['repeat']) ? $_POST['repeat'] : ''; |
||
288 | switch ($_POST['repeat']) { |
||
289 | |||
290 | case ABSENCES_RECUR_WEEKLY: |
||
291 | $args['rrule'] = ABSENCES_RECUR_WEEKLY; |
||
292 | if( empty($_POST['repeat_n_2'])) |
||
293 | { |
||
294 | $_POST['repeat_n_2'] = 1; |
||
295 | } |
||
296 | |||
297 | $args['nweeks'] = (int) $_POST['repeat_n_2']; |
||
298 | |||
299 | if( isset($_POST['repeat_wd']) ) |
||
300 | { |
||
301 | $args['rdays'] = $_POST['repeat_wd']; |
||
302 | } |
||
303 | |||
304 | break; |
||
305 | |||
306 | case ABSENCES_RECUR_MONTHLY: |
||
307 | $args['rrule'] = ABSENCES_RECUR_MONTHLY; |
||
308 | if( empty($_POST['repeat_n_3'])) |
||
309 | { |
||
310 | $_POST['repeat_n_3'] = 1; |
||
311 | } |
||
312 | |||
313 | $args['nmonths'] = (int) $_POST['repeat_n_3']; |
||
314 | break; |
||
315 | |||
316 | case ABSENCES_RECUR_YEARLY: |
||
317 | $args['rrule'] = ABSENCES_RECUR_YEARLY; |
||
318 | if( empty($_POST['repeat_n_4'])) |
||
319 | { |
||
320 | $_POST['repeat_n_4'] = 1; |
||
321 | } |
||
322 | $args['nyears'] = (int) $_POST['repeat_n_4']; |
||
323 | break; |
||
324 | |||
325 | case ABSENCES_RECUR_DAILY: |
||
326 | default: |
||
327 | $args['rrule'] = ABSENCES_RECUR_DAILY; |
||
328 | if( empty($_POST['repeat_n_1'])) |
||
329 | { |
||
330 | $_POST['repeat_n_1'] = 1; |
||
331 | } |
||
332 | |||
333 | $args['ndays'] = (int) $_POST['repeat_n_1']; |
||
334 | break; |
||
335 | } |
||
336 | |||
337 | |||
338 | |||
339 | return $args; |
||
340 | } |
||
341 | |||
342 | |||
343 | /** |
||
344 | * Convert posted data to a standard RRULE icaldendar property |
||
345 | * @throws ErrorException |
||
346 | */ |
||
347 | private function getRRule() |
||
348 | { |
||
349 | $args = $this->getPostedRecurringParameters(); |
||
0 ignored issues
–
show
The method
getPostedRecurringParameters() does not seem to exist on object<temp> .
This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces. This is most likely a typographical error or the method has been renamed. ![]() |
|||
350 | |||
351 | if(!isset($args['rrule']) ) { |
||
352 | return null; |
||
353 | } |
||
354 | |||
355 | $duration = $this->duration; |
||
356 | $rrule = array(); |
||
357 | |||
358 | switch( $args['rrule'] ) |
||
359 | { |
||
360 | case ABSENCES_RECUR_WEEKLY: |
||
361 | if( $duration > 24 * 3600 * 7 * $args['nweeks']) { |
||
362 | throw new ErrorException(absences_translate("The duration of the event must be shorter than how frequently it occurs")); |
||
363 | } |
||
364 | |||
365 | $rrule[]= 'INTERVAL='.$args['nweeks']; |
||
366 | |||
367 | if( !isset($args['rdays']) ) { |
||
368 | // no week day specified, reapeat event every week |
||
369 | $rrule[]= 'FREQ=WEEKLY'; |
||
370 | } |
||
371 | else { |
||
372 | $rrule[]= 'FREQ=WEEKLY'; |
||
373 | // BYDAY : add list of weekday = "SU" / "MO" / "TU" / "WE" / "TH" / "FR" / "SA" |
||
374 | $rrule[] = 'BYDAY='.implode(',', $args['rdays']); |
||
375 | } |
||
376 | |||
377 | break; |
||
378 | |||
379 | |||
380 | View Code Duplication | case ABSENCES_RECUR_MONTHLY: |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
381 | if( $duration > 24*3600*28*$args['nmonths']) { |
||
382 | throw new ErrorException(absences_translate("The duration of the event must be shorter than how frequently it occurs")); |
||
383 | } |
||
384 | |||
385 | $rrule[]= 'INTERVAL='.$args['nmonths']; |
||
386 | $rrule[]= 'FREQ=MONTHLY'; |
||
387 | break; |
||
388 | |||
389 | View Code Duplication | case ABSENCES_RECUR_YEARLY: /* yearly */ |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
390 | |||
391 | if( $duration > 24*3600*365*$args['nyears']) { |
||
392 | throw new ErrorException(absences_translate("The duration of the event must be shorter than how frequently it occurs")); |
||
393 | } |
||
394 | $rrule[]= 'INTERVAL='.$args['nyears']; |
||
395 | $rrule[]= 'FREQ=YEARLY'; |
||
396 | break; |
||
397 | |||
398 | View Code Duplication | case ABSENCES_RECUR_DAILY: /* daily */ |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
399 | if( $duration > 24*3600*$args['ndays'] ) { |
||
400 | throw new ErrorException(absences_translate("The duration of the event must be shorter than how frequently it occurs")); |
||
401 | } |
||
402 | $rrule[]= 'INTERVAL='.$args['ndays']; |
||
403 | $rrule[]= 'FREQ=DAILY'; |
||
404 | break; |
||
405 | } |
||
406 | |||
407 | |||
408 | |||
409 | if (isset($args['until'])) { |
||
410 | |||
411 | $until = self::getDateTime($args['until']); |
||
0 ignored issues
–
show
The method
getDateTime() does not seem to exist on object<temp> .
This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces. This is most likely a typographical error or the method has been renamed. ![]() |
|||
412 | $until->add(1, BAB_DATETIME_DAY); |
||
413 | |||
414 | if( $until->getTimeStamp() < bab_mktime($this->end)) { |
||
415 | throw new ErrorException(absences_translate("Repeat date must be older than end date")); |
||
416 | } |
||
417 | |||
418 | |||
419 | $rrule[] = 'UNTIL='.$until->getICal(true); |
||
420 | } |
||
421 | |||
422 | return implode(';',$rrule); |
||
423 | } |
||
424 | |||
425 | |||
426 | /** |
||
427 | * Get dateTime object from date as array with keys |
||
428 | * <ul> |
||
429 | * <li>year</li> |
||
430 | * <li>month<li> |
||
431 | * <li>day</li> |
||
432 | * <li>hours (optional)</li> |
||
433 | * <li>minutes (optional)</li> |
||
434 | * <ul> |
||
435 | * |
||
436 | * |
||
437 | * @param array $arr |
||
438 | * |
||
439 | * @param int $default_ts default timestamp value to use if values of date are not set |
||
440 | * |
||
441 | * @return BAB_DateTime |
||
442 | */ |
||
443 | public static function getDateTime($arr, $default_ts = null) { |
||
444 | |||
445 | |||
446 | if (!isset($default_ts) && (!isset($arr['year']) || !isset($arr['month']) || !isset($arr['day']))) { |
||
447 | return null; |
||
448 | } |
||
449 | |||
450 | if (!isset($arr['year'])) { |
||
451 | $arr['year'] = date('Y', $default_ts); |
||
452 | } |
||
453 | |||
454 | if (!isset($arr['month'])) { |
||
455 | $arr['month'] = date('m', $default_ts); |
||
456 | } |
||
457 | |||
458 | if (!isset($arr['day'])) { |
||
459 | $arr['day'] = date('d', $default_ts); |
||
460 | } |
||
461 | |||
462 | if (!isset($arr['hours'])) { |
||
463 | $arr['hours'] = 0; |
||
464 | } |
||
465 | |||
466 | if (!isset($arr['minutes'])) { |
||
467 | $arr['minutes'] = 0; |
||
468 | } |
||
469 | |||
470 | return new BAB_DateTime($arr['year'], $arr['month'], $arr['day'], $arr['hours'],$arr['minutes']); |
||
471 | } |
||
472 | |||
473 | |||
474 | /** |
||
475 | * @return RRule |
||
476 | */ |
||
477 | private function loaddates() |
||
478 | { |
||
479 | if (null === $rrule = $this->getRRule()) |
||
0 ignored issues
–
show
The method
getRRule() does not seem to exist on object<temp> .
This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces. This is most likely a typographical error or the method has been renamed. ![]() |
|||
480 | { |
||
481 | return null; |
||
482 | } |
||
483 | |||
484 | $arr = array(); |
||
485 | |||
486 | |||
487 | require_once dirname(__FILE__).'/utilit/RRule.php'; |
||
488 | |||
489 | $o = new RRule(new iCalDate(bab_mktime($this->begin)), $rrule); |
||
490 | |||
491 | |||
492 | while($date = $o->GetNext()) |
||
493 | { |
||
494 | $begin = BAB_DateTime::fromIsoDateTime($date->Render()); |
||
495 | $end = clone $begin; |
||
496 | $end->add($this->duration, BAB_DATETIME_SECOND); |
||
497 | |||
498 | // do not add the unavailable periods |
||
499 | |||
500 | $hd_index = absences_getHalfDaysIndex($this->id_user, $begin, $end); |
||
0 ignored issues
–
show
The property
id_user does not seem to exist. Did you mean iduser ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
501 | |||
502 | if (count($hd_index[2]) > 0) // free half day on the requested period |
||
503 | { |
||
504 | $arr[$begin->getTimeStamp()] = array($begin, $end); |
||
505 | } |
||
506 | } |
||
507 | |||
508 | ksort($arr); |
||
509 | |||
510 | return $arr; |
||
511 | } |
||
512 | |||
513 | |||
514 | public function getnextday() |
||
515 | { |
||
516 | static $i = 1; |
||
517 | if( $i <= $this->nbdays) |
||
0 ignored issues
–
show
The property
nbdays does not seem to exist. Did you mean nbdaystxt ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
518 | { |
||
519 | $this->dayid = $i; |
||
520 | if($this->end_day == $i) |
||
521 | { |
||
522 | $this->selected = "selected"; |
||
0 ignored issues
–
show
The property
selected does not seem to exist. Did you mean yselected ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
523 | } |
||
524 | else |
||
525 | $this->selected = ""; |
||
0 ignored issues
–
show
The property
selected does not seem to exist. Did you mean yselected ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
526 | |||
527 | $i++; |
||
528 | return true; |
||
529 | } |
||
530 | else |
||
531 | { |
||
532 | $i = 1; |
||
533 | return false; |
||
534 | } |
||
535 | |||
536 | } |
||
537 | |||
538 | public function getnextmonth() |
||
539 | { |
||
540 | static $i = 1; |
||
541 | |||
542 | if( $i < 13) |
||
543 | { |
||
544 | $this->monthid = $i; |
||
545 | $this->monthname = bab_toHtml(bab_DateStrings::getMonth($i)); |
||
546 | if($this->end_month == $i) |
||
547 | { |
||
548 | $this->selected = "selected"; |
||
0 ignored issues
–
show
The property
selected does not seem to exist. Did you mean yselected ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
549 | } |
||
550 | else |
||
551 | $this->selected = ""; |
||
0 ignored issues
–
show
The property
selected does not seem to exist. Did you mean yselected ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
552 | |||
553 | $i++; |
||
554 | return true; |
||
555 | } |
||
556 | else |
||
557 | { |
||
558 | $i = 1; |
||
559 | return false; |
||
560 | } |
||
561 | |||
562 | } |
||
563 | |||
564 | public function getnextyear() |
||
565 | { |
||
566 | static $i = 0; |
||
567 | if( $i < $this->ymin + $this->ymax + 1) |
||
568 | { |
||
569 | $this->yearidval = ($this->yearmin + $i); |
||
570 | $this->yearid = $this->yearidval; |
||
0 ignored issues
–
show
The property
yearid does not seem to exist. Did you mean yearidval ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
571 | if($this->end_year == $this->yearidval) |
||
572 | { |
||
573 | $this->selected = "selected"; |
||
0 ignored issues
–
show
The property
selected does not seem to exist. Did you mean yselected ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
574 | } |
||
575 | else |
||
576 | $this->selected = ""; |
||
0 ignored issues
–
show
The property
selected does not seem to exist. Did you mean yselected ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
577 | $i++; |
||
578 | return true; |
||
579 | } |
||
580 | else |
||
581 | { |
||
582 | $i = 0; |
||
583 | return false; |
||
584 | } |
||
585 | |||
586 | } |
||
587 | |||
588 | |||
589 | /** |
||
590 | * list periods computed from posted recurring parameters |
||
591 | */ |
||
592 | public function getnextperiod() |
||
593 | { |
||
594 | if (isset($this->rrule) && list(,$arr) = each($this->rrule)) |
||
595 | { |
||
596 | $begin = $arr[0]; |
||
597 | $end = $arr[1]; |
||
598 | |||
599 | $this->p_begin = $begin->getIsoDateTime(); |
||
0 ignored issues
–
show
The property
p_begin does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
600 | $this->p_end = $end->getIsoDateTime(); |
||
0 ignored issues
–
show
The property
p_end does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
601 | |||
602 | $this->period = sprintf(absences_translate('from %s to %s'), $begin->shortFormat(), $end->shortFormat()); |
||
0 ignored issues
–
show
The property
period does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
603 | $this->checked = (isset($_POST['loaddates']) || isset($_POST['period'][$this->p_begin])); |
||
0 ignored issues
–
show
The property
checked does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
604 | return true; |
||
605 | } |
||
606 | return false; |
||
607 | } |
||
608 | |||
609 | } |
||
610 | |||
611 | $temp = new temp($begin,$end, $id); |
||
0 ignored issues
–
show
|
|||
612 | $babBody->babecho( bab_printTemplate($temp, absences_addon()->getRelativePath()."vacuser.html", "recurring")); |
||
0 ignored issues
–
show
The method
bab_addonInfos::getRelativePath() has been deprecated with message: Do not use relative path in addons Addons are subject to move out of the core folder in futures version for bab_printTemplate, replace with $addon->printTemplate() for babBody->addStyleSheet use $addon->getStylePath() instead of relative path the addStyleSheet method support full path starting with vendor/ since the 8.1.98 version
This method has been deprecated. The supplier of the class has supplied an explanatory message. The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead. ![]() |
|||
613 | } |
||
614 | |||
615 | |||
616 | |||
617 | |||
618 | |||
619 | class absences_RequestVacation |
||
620 | { |
||
621 | |||
622 | public $recurring; |
||
623 | |||
624 | |||
625 | /** |
||
626 | * @var array |
||
627 | */ |
||
628 | public $rights; |
||
629 | |||
630 | /** |
||
631 | * @var array |
||
632 | */ |
||
633 | public $right; |
||
634 | |||
635 | public $id; |
||
636 | public $id_user; |
||
637 | public $ide; |
||
638 | public $username; |
||
639 | |||
640 | public $datebegintxt; |
||
641 | public $dateendtxt; |
||
642 | public $vactype; |
||
643 | public $addvac; |
||
644 | public $save_previsional; |
||
645 | public $remark; |
||
646 | public $nbdaystxt; |
||
647 | public $invaliddate; |
||
648 | public $invaliddate2; |
||
649 | public $invalidentry; |
||
650 | public $invalidentry1; |
||
651 | public $invalidentry2; |
||
652 | public $invalidentry3; |
||
653 | public $totaltxt; |
||
654 | public $balancetxt; |
||
655 | public $previsionalbalancetxt; |
||
656 | public $calendar; |
||
657 | public $total_days; |
||
658 | public $total_hours; |
||
659 | public $maxallowed; |
||
660 | public $t_days; |
||
661 | public $t_alert_nomatch; |
||
662 | public $t_confirm_nomatch; |
||
663 | public $t_or; |
||
664 | public $t_recurring; |
||
665 | public $t_recurring_help; |
||
666 | public $t_previsional; |
||
667 | public $t_no_approval; |
||
668 | public $t_force_approval; |
||
669 | public $allow_mismatch; |
||
670 | |||
671 | |||
672 | public function __construct($begin, $end, $id) |
||
673 | { |
||
674 | global $babBody, $babDB; |
||
675 | require_once dirname(__FILE__).'/utilit/entry.class.php'; |
||
676 | |||
677 | $begin = $this->formatInputDate($begin); |
||
678 | $end = $this->formatInputDate($end); |
||
679 | |||
680 | |||
681 | if ($end < date('Y-m-d H:i:s') && !$id) |
||
682 | { |
||
683 | $babBody->addMessage(absences_translate('Warning, the request is in the past, do you really want to create a request at this date?')); |
||
684 | } |
||
685 | |||
686 | $this->recurring = (!empty($_POST['period']) && is_array($_POST['period'])); |
||
687 | $nb_request = $this->recurring ? count($_POST['period']) : 1; |
||
688 | |||
689 | $this->datebegintxt = absences_translate("Begin date"); |
||
690 | $this->dateendtxt = absences_translate("End date"); |
||
691 | $this->vactype = absences_translate("Vacation type"); |
||
692 | View Code Duplication | if ($id) |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
693 | { |
||
694 | $this->addvac = absences_translate("Edit vacation request"); |
||
695 | $this->save_previsional = absences_translate("Edit previsional request"); |
||
696 | } else { |
||
697 | $this->addvac = absences_translate("Send vacation request"); |
||
698 | $this->save_previsional = absences_translate("Save previsional request"); |
||
699 | } |
||
700 | $this->remark = absences_translate("Description:"); |
||
701 | $this->nbdaystxt = absences_translate("Quantity"); |
||
702 | $this->invaliddate = bab_toHtml(absences_translate("ERROR: End date must be older"), BAB_HTML_JS); |
||
703 | $this->invaliddate2 = bab_toHtml(absences_translate("Total number of days does not fit between dates"), BAB_HTML_JS); |
||
704 | $this->invalidentry = bab_toHtml(absences_translate("Invalid entry! Only numbers are accepted or . !"), BAB_HTML_JS); |
||
705 | $this->invalidentry1 = absences_translate("Invalid entry"); |
||
706 | $this->invalidentry2 = absences_translate("Days must be multiple of 0.5"); |
||
707 | $this->invalidentry3 = absences_translate("The number of days exceed the total allowed"); |
||
708 | $this->totaltxt = absences_translate("Total:"); |
||
709 | $this->balancetxt = absences_translate("Balance"); |
||
710 | $this->previsionalbalancetxt = absences_translate("Previsional balance"); |
||
711 | $this->calendar = absences_translate("Planning"); |
||
712 | $this->total_days = 0; |
||
713 | $this->total_hours = 0; |
||
714 | $this->maxallowed = 0; |
||
715 | $this->id = $id; |
||
716 | $this->id_user = $_POST['id_user']; |
||
717 | $this->ide = bab_pp('ide'); |
||
718 | $this->username = bab_toHtml(bab_getUserName($this->id_user)); |
||
719 | $this->t_days = absences_translate("working days"); |
||
720 | $this->t_alert_nomatch = bab_toHtml(absences_translate("Total number of affected days does not match the period."),BAB_HTML_JS); |
||
721 | $this->t_confirm_nomatch = bab_toHtml(absences_translate("Total number of affected days does not match the period, do you really want to submit your request with this mismatch?"),BAB_HTML_JS); |
||
722 | $this->t_or = absences_translate('Or'); |
||
723 | $this->t_recurring = absences_translate('All periods:'); |
||
724 | $this->t_recurring_help = absences_translate('The allocation is made on a single period, the other will be reserved with the same configuration'); |
||
725 | $this->t_previsional = absences_translate('Previsional request (will not be sent to approval)', 'Previsional requests (will not be sent to approval)', $nb_request); |
||
726 | $this->t_no_approval = absences_translate('This right do not require approval'); |
||
727 | $this->t_force_approval = absences_translate('Launch the approval process on this request'); |
||
728 | |||
729 | $this->allow_mismatch = absences_getVacationOption('allow_mismatch'); |
||
730 | |||
731 | |||
732 | |||
733 | if (empty($this->id)) |
||
734 | { |
||
735 | |||
736 | // create a new entry (not saved) |
||
737 | $entry = new absences_Entry(); |
||
738 | $entry->setRow(array( |
||
739 | 'id_user' => $this->id_user, |
||
740 | 'date_begin' => $begin, |
||
741 | 'date_end' => $end |
||
742 | )); |
||
743 | |||
744 | $this->previsional = true; |
||
0 ignored issues
–
show
The property
previsional does not seem to exist. Did you mean save_previsional ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
745 | $this->previsional_checked = isset($_POST['previsional']); |
||
0 ignored issues
–
show
The property
previsional_checked does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
746 | |||
747 | $this->upd_recurring = false; |
||
0 ignored issues
–
show
The property
upd_recurring does not seem to exist. Did you mean recurring ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
748 | |||
749 | } else { |
||
750 | $entry = absences_Entry::getById($this->id); |
||
751 | $dates_modified = ($entry->date_begin !== $begin || $entry->date_end !== $end); |
||
752 | |||
753 | $entry->date_begin = $begin; |
||
754 | $entry->date_end = $end; |
||
755 | if ($this->previsional = $entry->isPrevisonal()) |
||
0 ignored issues
–
show
The property
previsional does not seem to exist. Did you mean save_previsional ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
756 | { |
||
757 | $this->previsional_checked = true; |
||
758 | } |
||
759 | |||
760 | if ($entry->folder && !$dates_modified) |
||
761 | { |
||
762 | $this->t_upd_recurring = absences_translate('Update description and rights for all periods with same total quantity in the recurring request'); |
||
0 ignored issues
–
show
The property
t_upd_recurring does not seem to exist. Did you mean recurring ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
763 | $this->upd_recurring = true; |
||
0 ignored issues
–
show
The property
upd_recurring does not seem to exist. Did you mean recurring ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
764 | } else { |
||
765 | $this->upd_recurring = false; |
||
0 ignored issues
–
show
The property
upd_recurring does not seem to exist. Did you mean recurring ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
766 | } |
||
767 | } |
||
768 | |||
769 | |||
770 | $days = $entry->getDurationDays(); |
||
771 | $hours = $entry->getDurationHours(); |
||
772 | |||
773 | |||
774 | |||
775 | $this->period_nbdays = $days; |
||
0 ignored issues
–
show
The property
period_nbdays does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
776 | $this->period_nbhours = $hours; |
||
0 ignored issues
–
show
The property
period_nbhours does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
777 | |||
778 | /** |
||
779 | * nombre de jours non utilises restant, initialisation |
||
780 | */ |
||
781 | $this->last_days = $days; |
||
0 ignored issues
–
show
The property
last_days does not seem to exist. Did you mean t_days ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
782 | |||
783 | /** |
||
784 | * nombre d'heures non utilises restantes, initialisation |
||
785 | */ |
||
786 | $this->last_hours = $hours; |
||
0 ignored issues
–
show
The property
last_hours does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
787 | |||
788 | |||
789 | $this->t_days = absences_translate("Day(s)"); |
||
790 | |||
791 | |||
792 | |||
793 | $this->begin = $entry->date_begin; |
||
0 ignored issues
–
show
The property
begin does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
794 | $this->end = $entry->date_end; |
||
0 ignored issues
–
show
The property
end does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
795 | |||
796 | $this->rfrom = isset($_POST['rfrom'])? $_POST['rfrom'] : 0; |
||
0 ignored issues
–
show
The property
rfrom does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
797 | $this->rights = array(); |
||
798 | $rights = absences_getRightsOnPeriod($this->begin, $this->end, $this->id_user, $this->rfrom); |
||
799 | |||
800 | $this->contain_hours_rights = false; |
||
0 ignored issues
–
show
The property
contain_hours_rights does not seem to exist. Did you mean rights ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
801 | |||
802 | $this->no_approval_message = false; |
||
0 ignored issues
–
show
The property
no_approval_message does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
803 | $one_approval = false; |
||
804 | |||
805 | |||
806 | foreach($rights as $right) { |
||
807 | $id = empty($right['id_rgroup']) ? 'r'.$right['id'] : 'g'.$right['id_rgroup']; |
||
808 | |||
809 | if ('H' === $right['quantity_unit']) |
||
810 | { |
||
811 | $this->contain_hours_rights = true; |
||
0 ignored issues
–
show
The property
contain_hours_rights does not seem to exist. Did you mean rights ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
812 | } |
||
813 | |||
814 | if (isset($this->rights[$id])) { |
||
815 | $this->rights[$id]['rights'][$right['id']] = array( |
||
816 | 'description' => $right['description'], |
||
817 | 'quantity_available' => $right['quantity_available'] - $right['waiting'], |
||
818 | 'previsional_available' => $right['quantity_available'] - $right['agentRight']->getPrevisionalQuantity() - $right['waiting'], |
||
819 | 'sortkey' => $this->getOptionSortKey($right) |
||
820 | ); |
||
821 | continue; |
||
822 | |||
823 | } elseif(!empty($right['id_rgroup'])) { |
||
824 | |||
825 | // les droits avec regroupement sont ajoutes dans ['rights'] |
||
826 | |||
827 | |||
828 | $right['rights'] = array( |
||
829 | $right['id'] => array( |
||
830 | 'description' => $right['description'], |
||
831 | 'quantity_available' => $right['quantity_available'] - $right['waiting'], |
||
832 | 'previsional_available' => $right['quantity_available'] - $right['agentRight']->getPrevisionalQuantity() - $right['waiting'], |
||
833 | 'sortkey' => $this->getOptionSortKey($right) |
||
834 | ) |
||
835 | ); |
||
836 | } |
||
837 | |||
838 | $this->rights[$id] = $right; |
||
839 | |||
840 | $agentRight = $right['agentRight']; |
||
841 | if (0 === (int) $agentRight->getRight()->require_approval) { |
||
842 | $this->no_approval_message = true; |
||
843 | } else { |
||
844 | $one_approval = true; |
||
845 | } |
||
846 | |||
847 | |||
848 | } |
||
849 | |||
850 | |||
851 | $author = absences_Agent::getCurrentUser(); |
||
852 | $this->manager_propose_approval = ($author->isManager() && $one_approval && $this->rfrom); |
||
0 ignored issues
–
show
The property
manager_propose_approval does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
853 | |||
854 | |||
855 | if (empty($this->rights)) { |
||
856 | $babBody->addError(absences_translate('No rights accessibles on this period')); |
||
857 | } |
||
858 | |||
859 | |||
860 | bab_Sort::asort($this->rights, 'sortkey'); |
||
861 | |||
862 | |||
863 | $s_days = sprintf('<strong>%s</strong>', absences_editQuantity($days, 'D')); |
||
864 | $s_hours = sprintf('<strong>%s</strong>', absences_editQuantity($hours, 'H')); |
||
865 | |||
866 | $r_days = sprintf('<strong>%s</strong>', absences_editQuantity($nb_request*$days, 'D')); |
||
867 | $r_hours = sprintf('<strong>%s</strong>', absences_editQuantity($nb_request*$hours, 'H')); |
||
868 | |||
869 | |||
870 | if ($this->contain_hours_rights) |
||
0 ignored issues
–
show
The property
contain_hours_rights does not seem to exist. Did you mean rights ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
871 | { |
||
872 | $this->period_infos = sprintf(absences_translate('The period contain %s day(s) or %s hour(s)', 'Each period contain %s day(s) or %s hour(s)', $nb_request), $s_days, $s_hours); |
||
0 ignored issues
–
show
The property
period_infos does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
873 | $this->recurring_total = sprintf(absences_translate('Total in all periods: %s day(s) or %s hour(s)'), $r_days, $r_hours); |
||
0 ignored issues
–
show
The property
recurring_total does not seem to exist. Did you mean recurring ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
874 | } else { |
||
875 | $this->period_infos = sprintf(absences_translate('The period contain %s day(s)', 'Each period contain %s day(s)', $nb_request), $s_days); |
||
876 | $this->recurring_total = sprintf(absences_translate('All periods contains %s day(s)'), $r_days); |
||
0 ignored issues
–
show
The property
recurring_total does not seem to exist. Did you mean recurring ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
877 | } |
||
878 | |||
879 | |||
880 | |||
881 | if (!empty($this->id)) |
||
882 | { |
||
883 | $res = $babDB->db_query("SELECT id_right, quantity FROM ".ABSENCES_ENTRIES_ELEM_TBL." WHERE id_entry='".$babDB->db_escape_string($this->id)."'"); |
||
884 | while ($arr = $babDB->db_fetch_array($res)) |
||
885 | { |
||
886 | $this->current['r'.$arr['id_right']] = $arr['quantity']; |
||
0 ignored issues
–
show
The property
current does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
887 | } |
||
888 | } |
||
889 | |||
890 | $this->recorded = array(); |
||
0 ignored issues
–
show
The property
recorded does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
891 | if (!empty($this->id)) |
||
892 | { |
||
893 | $res = $babDB->db_query(" |
||
894 | SELECT |
||
895 | e.id_right, |
||
896 | r.id_rgroup, |
||
897 | e.quantity |
||
898 | FROM |
||
899 | ".ABSENCES_ENTRIES_ELEM_TBL." e, |
||
900 | ".ABSENCES_RIGHTS_TBL." r |
||
901 | |||
902 | WHERE |
||
903 | e.id_entry='".$babDB->db_escape_string($this->id)."' |
||
904 | AND e.id_right = r.id |
||
905 | "); |
||
906 | while($arr = $babDB->db_fetch_array($res)) |
||
907 | { |
||
908 | if (empty($arr['id_rgroup'])) { |
||
909 | $this->recorded['r'.$arr['id_right']] = $arr['quantity']; |
||
910 | } else { |
||
911 | $this->recorded['g'.$arr['id_rgroup']] = $arr['quantity']; |
||
912 | } |
||
913 | } |
||
914 | |||
915 | list($this->remarks) = $babDB->db_fetch_array($babDB->db_query("SELECT comment FROM ".ABSENCES_ENTRIES_TBL." WHERE id=".$babDB->quote($this->id))); |
||
0 ignored issues
–
show
The property
remarks does not seem to exist. Did you mean remark ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
916 | } |
||
917 | else |
||
918 | { |
||
919 | $this->remarks = isset($_POST['remarks']) ? stripslashes($_POST['remarks']) : ''; |
||
0 ignored issues
–
show
The property
remarks does not seem to exist. Did you mean remark ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
920 | } |
||
921 | |||
922 | $this->datebegin = absences_longDate(bab_mktime($begin)); |
||
0 ignored issues
–
show
The property
datebegin does not seem to exist. Did you mean datebegintxt ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
923 | $this->dateend = absences_longDate(bab_mktime($end)); |
||
0 ignored issues
–
show
The property
dateend does not seem to exist. Did you mean dateendtxt ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
924 | |||
925 | |||
926 | $this->calurl = absences_addon()->getUrl()."planning&idx=cal&idu=".$this->id_user."&popup=1"; |
||
0 ignored issues
–
show
The property
calurl does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
927 | |||
928 | } |
||
929 | |||
930 | |||
931 | private function getOptionSortKey(Array $right) |
||
932 | { |
||
933 | // T8618 ordonner en fonction de la date de fin de validite |
||
934 | |||
935 | $sortkey = $right['date_end_valid']; |
||
936 | if ('0000-00-00' === $sortkey) { |
||
937 | $sortkey = $right['date_end']; |
||
938 | } |
||
939 | |||
940 | $sortkey .= ' '.$right['description']; |
||
941 | |||
942 | return $sortkey; |
||
943 | } |
||
944 | |||
945 | |||
946 | |||
947 | /** |
||
948 | * Correct errors in the DATETIME format |
||
949 | * @param string $str |
||
950 | * @return string |
||
951 | */ |
||
952 | private function formatInputDate($str) |
||
953 | { |
||
954 | $m = null; |
||
955 | preg_match('/(\d+)-(\d+)-(\d+) (\d+):(\d+):(\d+)/', $str, $m); |
||
956 | return sprintf('%04d-%02d-%02d %02d:%02d:%02d', $m[1], $m[2], $m[3], $m[4], $m[5], $m[6]); |
||
957 | } |
||
958 | |||
959 | |||
960 | |||
961 | /** |
||
962 | * Convert days to hours |
||
963 | * @param float $days |
||
964 | * @return float |
||
965 | */ |
||
966 | View Code Duplication | private function daysToHours($days) |
|
0 ignored issues
–
show
This method seems to be duplicated in your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
967 | { |
||
968 | if (0 == $this->period_nbdays) |
||
969 | { |
||
970 | return 0; |
||
971 | } |
||
972 | |||
973 | $ratio = $this->period_nbhours / $this->period_nbdays; |
||
974 | return round(($ratio * $days), 2); |
||
975 | } |
||
976 | |||
977 | /** |
||
978 | * Convert hours to days |
||
979 | * @param float $hours |
||
980 | * @return float |
||
981 | */ |
||
982 | View Code Duplication | private function hoursToDays($hours) |
|
0 ignored issues
–
show
This method seems to be duplicated in your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
983 | { |
||
984 | if (0 == $this->period_nbhours) |
||
985 | { |
||
986 | return 0; |
||
987 | } |
||
988 | |||
989 | $ratio = $this->period_nbdays / $this->period_nbhours; |
||
990 | return round(($ratio * $hours), 2); |
||
991 | } |
||
992 | |||
993 | /** |
||
994 | * |
||
995 | * @param string $unit D | H |
||
996 | * @param float $set |
||
997 | * |
||
998 | * @return float | null |
||
999 | */ |
||
1000 | private function last($unit = null, $set = null) |
||
1001 | { |
||
1002 | if (null === $set) |
||
1003 | { |
||
1004 | switch($unit) |
||
1005 | { |
||
1006 | case 'D': |
||
1007 | return $this->last_days; |
||
0 ignored issues
–
show
The property
last_days does not seem to exist. Did you mean t_days ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
1008 | |||
1009 | case 'H': |
||
1010 | return $this->last_hours; |
||
1011 | } |
||
1012 | } |
||
1013 | else |
||
1014 | { |
||
1015 | switch($unit) |
||
1016 | { |
||
1017 | case 'D': |
||
1018 | $this->last_days = $set; |
||
0 ignored issues
–
show
The property
last_days does not seem to exist. Did you mean t_days ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
1019 | $this->last_hours = $this->daysToHours($set); |
||
1020 | break; |
||
1021 | |||
1022 | case 'H': |
||
1023 | $this->last_days = $this->hoursToDays($set); |
||
0 ignored issues
–
show
The property
last_days does not seem to exist. Did you mean t_days ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
1024 | $this->last_hours = $set; |
||
1025 | break; |
||
1026 | } |
||
1027 | } |
||
1028 | |||
1029 | } |
||
1030 | |||
1031 | |||
1032 | public function getnextright() |
||
1033 | { |
||
1034 | |||
1035 | if (list($id,$this->right) = each($this->rights)) |
||
1036 | { |
||
1037 | // ordonner les listes deroulantes |
||
1038 | |||
1039 | if (!empty($this->right['rights'])) { |
||
1040 | bab_Sort::asort($this->rights[$id]['rights'], 'sortkey', bab_Sort::CASE_INSENSITIVE); |
||
1041 | } |
||
1042 | |||
1043 | |||
1044 | $agentRight = $this->right['agentRight']; |
||
1045 | /*@var $agentRight absences_AgentRight */ |
||
1046 | |||
1047 | $this->id_rgroup = $this->right['id_rgroup']; |
||
0 ignored issues
–
show
The property
id_rgroup does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
1048 | $this->rgroup = bab_toHtml($this->right['rgroup']); |
||
0 ignored issues
–
show
The property
rgroup does not seem to exist. Did you mean id_rgroup ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
1049 | |||
1050 | $this->right['description'] = bab_toHtml($this->right['description']); |
||
1051 | $this->right['current_quantity'] = |
||
1052 | $this->right['quantity_available'] = $this->right['quantity_available'] - $this->right['waiting']; |
||
1053 | $this->right['previsional_available'] = $this->right['quantity_available'] - $agentRight->getPrevisionalQuantity(); |
||
1054 | |||
1055 | $this->current_quantity = ''; |
||
0 ignored issues
–
show
The property
current_quantity does not seem to exist. Did you mean current ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
1056 | if (isset($this->current[$id])) { |
||
1057 | $this->current_quantity = bab_toHtml($this->current[$id]); |
||
0 ignored issues
–
show
The property
current_quantity does not seem to exist. Did you mean current ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
1058 | } |
||
1059 | $this->quantity_available = bab_toHtml(absences_quantity($this->right['quantity_available'], $this->right['quantity_unit'])); |
||
0 ignored issues
–
show
The property
quantity_available does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
1060 | $this->previsional_quantity_available = bab_toHtml(absences_quantity($this->right['previsional_available'], $this->right['quantity_unit'])); |
||
0 ignored issues
–
show
The property
previsional_quantity_available does not seem to exist. Did you mean quantity_available ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
1061 | |||
1062 | |||
1063 | $right = $agentRight->getRight(); |
||
1064 | |||
1065 | $this->no_approval = !((bool) $right->require_approval); |
||
0 ignored issues
–
show
The property
no_approval does not seem to exist. Did you mean t_no_approval ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
1066 | |||
1067 | |||
1068 | View Code Duplication | switch($this->right['quantity_unit']) |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
1069 | { |
||
1070 | case 'D': |
||
1071 | $this->unit = absences_translate('day(s)'); |
||
0 ignored issues
–
show
The property
unit does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
1072 | break; |
||
1073 | |||
1074 | case 'H': |
||
1075 | $this->unit = absences_translate('hour(s)'); |
||
1076 | break; |
||
1077 | } |
||
1078 | |||
1079 | |||
1080 | $float_quantity = 0.0; |
||
1081 | |||
1082 | |||
1083 | if (isset($_POST['nbdays'][$id])) |
||
1084 | { |
||
1085 | $float_quantity = (float) str_replace(',', '.', $_POST['quantity'][$id]); |
||
1086 | $this->quantity = $_POST['quantity'][$id]; |
||
0 ignored issues
–
show
The property
quantity does not seem to exist. Did you mean quantity_available ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
1087 | } |
||
1088 | elseif( count($this->recorded) > 0) { |
||
1089 | if (isset($this->recorded[$id])) { |
||
1090 | $float_quantity = (float) $this->recorded[$id]; |
||
1091 | $this->quantity = absences_editQuantity($this->recorded[$id], $this->right['quantity_unit']); |
||
0 ignored issues
–
show
The property
quantity does not seem to exist. Did you mean quantity_available ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
1092 | } |
||
1093 | else { |
||
1094 | $this->quantity = '0'; |
||
0 ignored issues
–
show
The property
quantity does not seem to exist. Did you mean quantity_available ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
1095 | $float_quantity = 0.0; |
||
1096 | } |
||
1097 | } |
||
1098 | elseif (0 == $this->right['no_distribution'] && $this->last($this->right['quantity_unit']) > 0 && $this->right['quantity_available'] > 0) |
||
1099 | { |
||
1100 | |||
1101 | $last = $this->last($this->right['quantity_unit']); |
||
1102 | |||
1103 | |||
1104 | if ($last >= $this->right['quantity_available']) |
||
1105 | { |
||
1106 | $float_quantity = $this->right['quantity_available']; |
||
1107 | $this->quantity = absences_editQuantity($this->right['quantity_available'], $this->right['quantity_unit']); |
||
0 ignored issues
–
show
The property
quantity does not seem to exist. Did you mean quantity_available ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
1108 | |||
1109 | $last -= $this->right['quantity_available']; |
||
1110 | $this->last($this->right['quantity_unit'], $last); |
||
1111 | } |
||
1112 | elseif ($this->right['quantity_available'] > 0) |
||
1113 | { |
||
1114 | $float_quantity = $last; |
||
1115 | $this->quantity = absences_editQuantity($last, $this->right['quantity_unit']); |
||
0 ignored issues
–
show
The property
quantity does not seem to exist. Did you mean quantity_available ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
1116 | $this->last($this->right['quantity_unit'], 0); |
||
1117 | } |
||
1118 | |||
1119 | } |
||
1120 | else |
||
1121 | { |
||
1122 | $float_quantity = 0.0; |
||
1123 | $this->quantity = '0'; |
||
0 ignored issues
–
show
The property
quantity does not seem to exist. Did you mean quantity_available ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
1124 | |||
1125 | } |
||
1126 | |||
1127 | |||
1128 | |||
1129 | |||
1130 | switch($this->right['quantity_unit']) |
||
1131 | { |
||
1132 | case 'D': |
||
1133 | $this->total_days += $float_quantity; |
||
1134 | $this->total_hours += $this->daysToHours($this->quantity); |
||
0 ignored issues
–
show
The property
quantity does not seem to exist. Did you mean quantity_available ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
1135 | break; |
||
1136 | case 'H': |
||
1137 | $this->total_hours += $float_quantity; |
||
1138 | $this->total_days += $this->hoursToDays($this->quantity); |
||
0 ignored issues
–
show
The property
quantity does not seem to exist. Did you mean quantity_available ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
1139 | break; |
||
1140 | } |
||
1141 | |||
1142 | |||
1143 | |||
1144 | return true; |
||
1145 | } |
||
1146 | else |
||
1147 | return false; |
||
1148 | |||
1149 | } |
||
1150 | |||
1151 | |||
1152 | public function getnextrgroupright() { |
||
1153 | if (list($id, $arr) = each($this->right['rights'])) { |
||
1154 | $this->id_right = bab_toHtml($id); |
||
0 ignored issues
–
show
The property
id_right does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
1155 | $this->description = bab_toHtml($arr['description']); |
||
0 ignored issues
–
show
The property
description does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
1156 | |||
1157 | $recorded = isset($this->current['r'.$id]) ? $this->current['r'.$id] : 0; |
||
1158 | $this->current_quantity = bab_toHtml($recorded); |
||
0 ignored issues
–
show
The property
current_quantity does not seem to exist. Did you mean current ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
1159 | $this->quantity_available = bab_toHtml($arr['quantity_available']); |
||
1160 | $this->previsional_available = bab_toHtml($arr['previsional_available']); |
||
0 ignored issues
–
show
The property
previsional_available does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
1161 | $this->selected = isset($this->current['r'.$id]); |
||
0 ignored issues
–
show
The property
selected does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
1162 | return true; |
||
1163 | } |
||
1164 | return false; |
||
1165 | } |
||
1166 | |||
1167 | public function getnextrecurring() { |
||
1168 | if (list($begin, $end) = each($_POST['period'])) { |
||
1169 | $this->period = bab_toHtml(sprintf(absences_translate('from %s to %s'), bab_shortDate(bab_mktime($begin)), bab_shortDate(bab_mktime($end)))); |
||
0 ignored issues
–
show
The property
period does not seem to exist. Did you mean period_nbdays ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
1170 | $this->p_begin = bab_toHtml($begin); |
||
0 ignored issues
–
show
The property
p_begin does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
1171 | $this->p_end = bab_toHtml($end); |
||
0 ignored issues
–
show
The property
p_end does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
1172 | return true; |
||
1173 | } |
||
1174 | return false; |
||
1175 | } |
||
1176 | |||
1177 | } |
||
1178 | |||
1179 | |||
1180 | |||
1181 | |||
1182 | |||
1183 | function requestVacation($begin,$end, $id, $rfrom, $ide) |
||
1184 | { |
||
1185 | global $babBody; |
||
1186 | |||
1187 | if ($id) |
||
1188 | { |
||
1189 | $babBody->setTitle(absences_translate("Edit vacation request")); |
||
1190 | } else |
||
1191 | { |
||
1192 | $babBody->setTitle(absences_translate("Request vacation")); |
||
1193 | } |
||
1194 | |||
1195 | |||
1196 | if( !bab_isEntryEditable($id) ) |
||
1197 | { |
||
1198 | return false; |
||
1199 | } |
||
1200 | |||
1201 | if (absences_lockedForMainteance()) |
||
1202 | { |
||
1203 | $babBody->addError(absences_getMaintenanceMessage()); |
||
1204 | return false; |
||
1205 | } |
||
1206 | |||
1207 | $agent = absences_Agent::getCurrentUser(); |
||
1208 | |||
1209 | if ($id) |
||
1210 | { |
||
1211 | if ($rfrom) |
||
1212 | { |
||
1213 | if ($ide && $agent->isEntityManagerOf($ide)) |
||
1214 | { |
||
1215 | // modification d'une demande par un gestionnaire delegue |
||
1216 | $babBody->addItemMenu("entities", absences_translate("Delegate management"), absences_addon()->getUrl()."vacchart&idx=entities"); |
||
1217 | $babBody->addItemMenu("entity_members", absences_translate("Entity requests"), absences_addon()->getUrl()."vacchart&idx=entity_requests&ide=".$ide); |
||
1218 | $babBody->addItemMenu("vunew", absences_translate("Edit"), absences_addon()->getUrl()."vacuser&idx=vunew&id=".$id."&rfrom=1&ide=".$ide); |
||
1219 | |||
1220 | View Code Duplication | } elseif (!$ide && $agent->isManager()) { |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
1221 | // modification d'une demande par un gestionnaire |
||
1222 | $babBody->addItemMenu("list", absences_translate("Management"), absences_addon()->getUrl()."vacadm"); |
||
1223 | $babBody->addItemMenu("lper", absences_translate("Requests"), absences_addon()->getUrl()."vacadmb&idx=lreq"); |
||
1224 | $babBody->addItemMenu("vunew", absences_translate("Edit"), absences_addon()->getUrl()."vacuser&idx=vunew&id=".$id."&rfrom=1"); |
||
1225 | } |
||
1226 | View Code Duplication | } else { |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
1227 | // modification d'une demande par un agent |
||
1228 | $babBody->addItemMenu("lvreq", absences_translate("Requests"), absences_addon()->getUrl()."vacuser&idx=lvreq"); |
||
1229 | $babBody->addItemMenu("vunew", absences_translate("Edit"), absences_addon()->getUrl()."vacuser&idx=vunew&id=".$id); |
||
1230 | } |
||
1231 | } else { |
||
1232 | |||
1233 | if ($rfrom) |
||
1234 | { |
||
1235 | if ($ide && $agent->isEntityManagerOf($ide)) |
||
1236 | { |
||
1237 | // creation d'une demande par un gestionnaire delegue |
||
1238 | $babBody->addItemMenu("entities", absences_translate("Delegate management"), absences_addon()->getUrl()."vacchart&idx=entities"); |
||
1239 | $babBody->addItemMenu("entity_members", absences_translate("Entity requests"), absences_addon()->getUrl()."vacchart&idx=entity_requests&ide=".$ide); |
||
1240 | $babBody->addItemMenu("vunew", absences_translate("Request"), absences_addon()->getUrl()."vacuser&idx=vunew&rfrom=1&ide=".$ide); |
||
1241 | |||
1242 | View Code Duplication | } elseif (!$ide && $agent->isManager()) { |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
1243 | // creation d'une demande par un gestionnaire |
||
1244 | $babBody->addItemMenu("list", absences_translate("Management"), absences_addon()->getUrl()."vacadm"); |
||
1245 | $babBody->addItemMenu("lper", absences_translate("Requests"), absences_addon()->getUrl()."vacadmb&idx=lreq"); |
||
1246 | $babBody->addItemMenu("vunew", absences_translate("Edit"), absences_addon()->getUrl()."vacuser&idx=vunew&rfrom=1"); |
||
1247 | } |
||
1248 | View Code Duplication | } else { |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
1249 | // creation d'une demande par un agent |
||
1250 | $babBody->addItemMenu("lvreq", absences_translate("Requests"), absences_addon()->getUrl()."vacuser&idx=lvreq"); |
||
1251 | $babBody->addItemMenu("vunew", absences_translate("Request"), absences_addon()->getUrl()."vacuser&idx=vunew"); |
||
1252 | } |
||
1253 | |||
1254 | } |
||
1255 | |||
1256 | |||
1257 | $temp = new absences_RequestVacation($begin,$end, $id); |
||
1258 | $babBody->babecho( bab_printTemplate($temp, absences_addon()->getRelativePath()."vacuser.html", "newvacation")); |
||
0 ignored issues
–
show
The method
bab_addonInfos::getRelativePath() has been deprecated with message: Do not use relative path in addons Addons are subject to move out of the core folder in futures version for bab_printTemplate, replace with $addon->printTemplate() for babBody->addStyleSheet use $addon->getStylePath() instead of relative path the addStyleSheet method support full path starting with vendor/ since the 8.1.98 version
This method has been deprecated. The supplier of the class has supplied an explanatory message. The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead. ![]() |
|||
1259 | } |
||
1260 | |||
1261 | |||
1262 | |||
1263 | function period($id_user, $id = 0) |
||
1264 | { |
||
1265 | require_once dirname(__FILE__).'/utilit/period.ui.php'; |
||
1266 | |||
1267 | $temp = new absences_PeriodFrame($id_user, $id); |
||
1268 | $GLOBALS['babBody']->babecho(bab_printTemplate($temp, absences_addon()->getRelativePath()."vacuser.html", "period")); |
||
0 ignored issues
–
show
The method
bab_addonInfos::getRelativePath() has been deprecated with message: Do not use relative path in addons Addons are subject to move out of the core folder in futures version for bab_printTemplate, replace with $addon->printTemplate() for babBody->addStyleSheet use $addon->getStylePath() instead of relative path the addStyleSheet method support full path starting with vendor/ since the 8.1.98 version
This method has been deprecated. The supplier of the class has supplied an explanatory message. The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead. ![]() |
|||
1269 | } |
||
1270 | |||
1271 | |||
1272 | |||
1273 | |||
1274 | function viewrights($id_user) |
||
1275 | { |
||
1276 | class temp |
||
0 ignored issues
–
show
Comprehensibility
Best Practice
introduced
by
The type
temp has been defined more than once; this definition is ignored, only the first definition in programs/vacadm.php (L38-118) is considered.
This check looks for classes that have been defined more than once. If you can, we would recommend to use standard object-oriented programming techniques. For example, to avoid multiple types, it might make sense to create a common interface, and then multiple, different implementations for that interface. This also has the side-effect of providing you with better IDE auto-completion, static analysis and also better OPCode caching from PHP. ![]() |
|||
1277 | { |
||
1278 | |||
1279 | var $altbg = true; |
||
1280 | |||
1281 | function temp($id_user) { |
||
0 ignored issues
–
show
|
|||
1282 | $this->rights = absences_getRightsByGroupOnPeriod($id_user); |
||
0 ignored issues
–
show
The property
rights does not seem to exist. Did you mean t_rights ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
1283 | $this->total = 0; |
||
0 ignored issues
–
show
The property
total does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
1284 | $this->total_waiting = 0; |
||
0 ignored issues
–
show
The property
total_waiting does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
1285 | $this->t_avariable_days = absences_translate("Avariable days"); |
||
0 ignored issues
–
show
The property
t_avariable_days does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
1286 | $this->t_waiting_days = absences_translate("Waiting days"); |
||
0 ignored issues
–
show
The property
t_waiting_days does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
1287 | $this->t_period_nbdays = absences_translate("Period days"); |
||
0 ignored issues
–
show
The property
t_period_nbdays does not seem to exist. Did you mean period ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
1288 | $this->t_total = absences_translate("Total"); |
||
0 ignored issues
–
show
The property
t_total does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
1289 | |||
1290 | $this->t_available = absences_translate("Available"); |
||
0 ignored issues
–
show
The property
t_available does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
1291 | $this->t_waiting = absences_translate("Waiting"); |
||
0 ignored issues
–
show
The property
t_waiting does not seem to exist. Did you mean t_waiting_days ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
1292 | |||
1293 | $this->total = array('D' => 0, 'H' => 0); |
||
1294 | $this->total_waiting = array('D' => 0, 'H' => 0); |
||
1295 | } |
||
1296 | |||
1297 | function getnextright() |
||
0 ignored issues
–
show
|
|||
1298 | { |
||
1299 | if ($right = & current($this->rights)) |
||
0 ignored issues
–
show
The property
rights does not seem to exist. Did you mean t_rights ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
1300 | { |
||
1301 | $this->altbg = !$this->altbg; |
||
1302 | next($this->rights); |
||
0 ignored issues
–
show
The property
rights does not seem to exist. Did you mean t_rights ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
1303 | $quantity_available = $right['quantity_available'] - $right['waiting']; |
||
1304 | $this->description = bab_toHtml($right['description']); |
||
1305 | |||
1306 | $this->quantity_available = array('D' => 0, 'H' => 0); |
||
0 ignored issues
–
show
The property
quantity_available does not seem to exist. Did you mean quantity ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
1307 | $this->waiting = array('D' => 0, 'H' => 0); |
||
0 ignored issues
–
show
The property
waiting does not seem to exist. Did you mean total_waiting ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
1308 | |||
1309 | $this->quantity_available[$right['quantity_unit']] = $quantity_available; |
||
0 ignored issues
–
show
The property
quantity_available does not seem to exist. Did you mean quantity ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
1310 | $this->waiting[$right['quantity_unit']] = $right['waiting']; |
||
0 ignored issues
–
show
The property
waiting does not seem to exist. Did you mean total_waiting ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
1311 | |||
1312 | $this->total[$right['quantity_unit']] += $this->quantity_available[$right['quantity_unit']]; |
||
0 ignored issues
–
show
The property
quantity_available does not seem to exist. Did you mean quantity ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
1313 | $this->total_waiting[$right['quantity_unit']] += $this->waiting[$right['quantity_unit']]; |
||
0 ignored issues
–
show
The property
waiting does not seem to exist. Did you mean total_waiting ?
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name. If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading. ![]() |
|||
1314 | return true; |
||
1315 | } |
||
1316 | else |
||
1317 | return false; |
||
1318 | |||
1319 | } |
||
1320 | |||
1321 | } |
||
1322 | $temp = new temp($id_user); |
||
0 ignored issues
–
show
|
|||
1323 | |||
1324 | global $babBody; |
||
1325 | |||
1326 | $html = bab_printTemplate($temp, absences_addon()->getRelativePath()."vacuser.html", "viewrights"); |
||
0 ignored issues
–
show
The method
bab_addonInfos::getRelativePath() has been deprecated with message: Do not use relative path in addons Addons are subject to move out of the core folder in futures version for bab_printTemplate, replace with $addon->printTemplate() for babBody->addStyleSheet use $addon->getStylePath() instead of relative path the addStyleSheet method support full path starting with vendor/ since the 8.1.98 version
This method has been deprecated. The supplier of the class has supplied an explanatory message. The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead. ![]() |
|||
1327 | |||
1328 | if (1 === (int) bab_rp('popup')) |
||
1329 | { |
||
1330 | $babBody->babPopup($html); |
||
1331 | } else { |
||
1332 | $babBody->babEcho($html); |
||
1333 | } |
||
1334 | } |
||
1335 | |||
1336 | |||
1337 | |||
1338 | function vedUnload() |
||
1339 | { |
||
1340 | class temp |
||
0 ignored issues
–
show
Comprehensibility
Best Practice
introduced
by
The type
temp has been defined more than once; this definition is ignored, only the first definition in programs/vacadm.php (L38-118) is considered.
This check looks for classes that have been defined more than once. If you can, we would recommend to use standard object-oriented programming techniques. For example, to avoid multiple types, it might make sense to create a common interface, and then multiple, different implementations for that interface. This also has the side-effect of providing you with better IDE auto-completion, static analysis and also better OPCode caching from PHP. ![]() |
|||
1341 | { |
||
1342 | var $message; |
||
1343 | var $close; |
||
1344 | var $redirecturl; |
||
1345 | |||
1346 | function temp() |
||
0 ignored issues
–
show
|
|||
1347 | { |
||
1348 | $this->message = absences_translate("Vacation entry has been updated"); |
||
1349 | $this->close = absences_translate("Close"); |
||
0 ignored issues
–
show
The property
close does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
1350 | $this->redirecturl = absences_addon()->getUrl()."vacuser&idx=lval"; |
||
0 ignored issues
–
show
The property
redirecturl does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
1351 | } |
||
1352 | } |
||
1353 | |||
1354 | $temp = new temp(); |
||
0 ignored issues
–
show
|
|||
1355 | global $babBody; |
||
1356 | $babBody->babPopup(bab_printTemplate($temp, absences_addon()->getRelativePath()."vacuser.html", "vedunload")); |
||
0 ignored issues
–
show
The method
bab_addonInfos::getRelativePath() has been deprecated with message: Do not use relative path in addons Addons are subject to move out of the core folder in futures version for bab_printTemplate, replace with $addon->printTemplate() for babBody->addStyleSheet use $addon->getStylePath() instead of relative path the addStyleSheet method support full path starting with vendor/ since the 8.1.98 version
This method has been deprecated. The supplier of the class has supplied an explanatory message. The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead. ![]() |
|||
1357 | } |
||
1358 | |||
1359 | |||
1360 | |||
1361 | class absences_saveVacation |
||
1362 | { |
||
1363 | |||
1364 | |||
1365 | /** |
||
1366 | * Test la quantite dispo sur un droit |
||
1367 | * |
||
1368 | * |
||
1369 | * @param array &$nbdays list of rights to save in request, rows are added on each valid calls |
||
1370 | * @param Array $arr vacation rights properties |
||
1371 | * @param float $quantity requested quantity in form |
||
1372 | * @param int $id_request if this is a request modification |
||
1373 | * |
||
1374 | * @throws Exception |
||
1375 | * |
||
1376 | * @return bool |
||
1377 | */ |
||
1378 | private static function addVacationRight(&$nbdays, Array $arr, $quantity, $id_request, &$used_in_previous_periods) |
||
1379 | { |
||
1380 | $quantity = str_replace(',','.', $quantity); |
||
1381 | $available = ($arr['quantity_available'] - $arr['waiting']); |
||
1382 | |||
1383 | if (!isset($used_in_previous_periods[$arr['id']])) |
||
1384 | { |
||
1385 | $used_in_previous_periods[$arr['id']] = 0; |
||
1386 | } |
||
1387 | |||
1388 | if (!empty($id_request)) { |
||
1389 | |||
1390 | $entry = absences_Entry::getById($id_request); |
||
1391 | |||
1392 | if (!$entry->isPrevisonal()) { |
||
1393 | $element = $entry->getElement($arr['id']); |
||
1394 | |||
1395 | if (isset($element)) { |
||
1396 | // quantity in current request is unavailable, add it to $available (waiting or confirmed) |
||
1397 | $available += $element->quantity; |
||
1398 | } |
||
1399 | } |
||
1400 | } |
||
1401 | |||
1402 | |||
1403 | if ('' === $quantity) { |
||
1404 | $quantity = 0; |
||
1405 | } |
||
1406 | |||
1407 | |||
1408 | if(!is_numeric($quantity) || $quantity < 0 ) { |
||
1409 | throw new Exception(sprintf(absences_translate("You must specify a correct number days on right %s"), $arr['description'])); |
||
1410 | } |
||
1411 | |||
1412 | if (!empty($quantity) && $arr['cbalance'] != 'Y' && ($available - $quantity - $used_in_previous_periods[$arr['id']]) < 0) { |
||
1413 | throw new Exception(sprintf(absences_translate("You can't take more than %s on the right %s"), absences_quantity($available, $arr['quantity_unit']), $arr['description'])); |
||
1414 | } |
||
1415 | |||
1416 | |||
1417 | // si le droit est un compte epargne temps, verifier les conditions d'utilisations speciales |
||
1418 | if (!empty($quantity)) |
||
1419 | { |
||
1420 | $agentRight = $arr['agentRight']; |
||
1421 | /*@var $agentRight absences_agentRight */ |
||
1422 | $right = $agentRight->getRight(); |
||
1423 | |||
1424 | if (absences_Right::CET === $right->getKind() && ($cet = $right->getRightCet())) |
||
1425 | { |
||
1426 | if (0 !== (int) round(10*$cet->min_use)) // 0 = min_use disabled |
||
1427 | { |
||
1428 | // -1 = force using all available |
||
1429 | |||
1430 | $min_use = (float) $cet->min_use; |
||
1431 | |||
1432 | if ($min_use < 0 && $quantity < $available) |
||
1433 | { |
||
1434 | throw new Exception(sprintf(absences_translate("The quantity available in %s must be used all in one request"), $arr['description'])); |
||
1435 | } |
||
1436 | |||
1437 | |||
1438 | if ($min_use > 0 && ((int) round(10*$quantity)) < ((int) round(10*$min_use))) |
||
1439 | { |
||
1440 | throw new Exception(sprintf(absences_translate("The minimal quantity usable in one request for the right %s is %s"), $arr['description'], absences_quantity($min_use, 'D'))); |
||
1441 | } |
||
1442 | } |
||
1443 | } |
||
1444 | } |
||
1445 | |||
1446 | |||
1447 | if( $quantity > 0 ) { |
||
1448 | $nbdays['id'][] = (int) $arr['id']; |
||
1449 | $nbdays['val'][] = $quantity; |
||
1450 | $nbdays['total'][$arr['quantity_unit']] += $quantity; |
||
1451 | $used_in_previous_periods[$arr['id']] += $quantity; |
||
1452 | } |
||
1453 | |||
1454 | return true; |
||
1455 | } |
||
1456 | |||
1457 | |||
1458 | /** |
||
1459 | * requests in same folder and with same quantity and with same status |
||
1460 | * @param absences_Entry $entry |
||
1461 | * @return array |
||
1462 | */ |
||
1463 | private static function selectFolderSimilarRequests($entry) |
||
1464 | { |
||
1465 | require_once dirname(__FILE__).'/utilit/entry.class.php'; |
||
1466 | global $babDB; |
||
1467 | |||
1468 | $res = $babDB->db_query('SELECT |
||
1469 | e.* |
||
1470 | FROM |
||
1471 | absences_entries e |
||
1472 | WHERE e.folder='.$babDB->quote($entry->folder).' |
||
1473 | AND e.status='.$babDB->quote($entry->status).' |
||
1474 | AND e.id<>'.$babDB->quote($entry->id).' |
||
1475 | '); |
||
1476 | |||
1477 | $return = array(); |
||
1478 | while($arr = $babDB->db_fetch_assoc($res)) |
||
1479 | { |
||
1480 | $e = new absences_Entry(); |
||
1481 | $e->setRow($arr); |
||
1482 | |||
1483 | if ($e->getTotalDays() == $entry->getTotalDays()) |
||
1484 | { |
||
1485 | $return[] = $e; |
||
1486 | } |
||
1487 | } |
||
1488 | |||
1489 | return $return; |
||
1490 | } |
||
1491 | |||
1492 | |||
1493 | /** |
||
1494 | * Save posted data |
||
1495 | */ |
||
1496 | public static function save() |
||
1497 | { |
||
1498 | global $babBody; |
||
1499 | |||
1500 | if (absences_lockedForMainteance()) |
||
1501 | { |
||
1502 | return false; |
||
1503 | } |
||
1504 | |||
1505 | |||
1506 | $id_request = (int) $_POST['id']; |
||
1507 | $id_user = (int) $_POST['id_user']; |
||
1508 | $rfrom = $_POST['rfrom']; |
||
1509 | |||
1510 | if( $rfrom == 1 ) |
||
1511 | { |
||
1512 | $agent = absences_Agent::getCurrentUser(); |
||
1513 | if( !$agent->isManager()) |
||
1514 | { |
||
1515 | $rfrom = 0; |
||
1516 | } |
||
1517 | } |
||
1518 | |||
1519 | |||
1520 | |||
1521 | if (isset($_POST['period']) && is_array($_POST['period'])) |
||
1522 | { |
||
1523 | // recurring request |
||
1524 | |||
1525 | $period_list = $_POST['period']; |
||
1526 | $folder = count($period_list) > 1 ? time() : 0; |
||
1527 | $period_list_id = array(); |
||
1528 | |||
1529 | } else if (isset($_POST['upd_recurring']) && $id_request > 0) |
||
1530 | { |
||
1531 | |||
1532 | // update recurring request |
||
1533 | |||
1534 | require_once dirname(__FILE__).'/utilit/entry.class.php'; |
||
1535 | $entry = absences_Entry::getById($id_request); |
||
1536 | |||
1537 | $folder = (int) $entry->folder; |
||
1538 | |||
1539 | $period_list = array( |
||
1540 | $_POST['begin'] => $_POST['end'] |
||
1541 | ); |
||
1542 | |||
1543 | $period_list_id = array( |
||
1544 | $_POST['begin'] => $id_request |
||
1545 | ); |
||
1546 | |||
1547 | $list = self::selectFolderSimilarRequests($entry); |
||
1548 | |||
1549 | foreach($list as $e) |
||
1550 | { |
||
1551 | $period_list[$e->date_begin] = $e->date_end; |
||
1552 | $period_list_id[$e->date_begin] = $e->id; |
||
1553 | } |
||
1554 | |||
1555 | |||
1556 | |||
1557 | } else { |
||
1558 | |||
1559 | $period_list = array( |
||
1560 | $_POST['begin'] => $_POST['end'] |
||
1561 | ); |
||
1562 | |||
1563 | $period_list_id = array( |
||
1564 | $_POST['begin'] => $id_request |
||
1565 | ); |
||
1566 | |||
1567 | $folder = 0; |
||
1568 | } |
||
1569 | |||
1570 | $allow_mismatch = absences_getVacationOption('allow_mismatch'); |
||
1571 | |||
1572 | if (!$allow_mismatch) { |
||
1573 | // T9957 verification supplementaire pour les incoherence dans le nombre de jours |
||
1574 | $period_nbdays = str_replace(',', '.', $_POST['period_nbdays']); |
||
1575 | $req_nbdays = str_replace(',', '.', $_POST['total']['D']); |
||
1576 | |||
1577 | if (!absences_cq($period_nbdays, $req_nbdays)) { |
||
1578 | $babBody->addError(absences_translate('Total number of affected days does not match the period.')); |
||
1579 | return false; |
||
1580 | } |
||
1581 | } |
||
1582 | |||
1583 | /** |
||
1584 | * Les droits utilises pour les tests sont les droits affiches a l'ecran |
||
1585 | * dans une demande repetitive, c'est la premiere periode qui est utilise pour les tests d'affichage |
||
1586 | */ |
||
1587 | $rights = absences_getRightsOnPeriod(key($period_list), reset($period_list), $id_user, $rfrom); |
||
1588 | |||
1589 | // test phase |
||
1590 | |||
1591 | $used_in_previous_periods = array(); |
||
1592 | |||
1593 | |||
1594 | $nbdays = null; |
||
1595 | |||
1596 | |||
1597 | foreach($period_list as $begin => $end) |
||
1598 | { |
||
1599 | $id_request = isset($period_list_id[$begin]) ? $period_list_id[$begin] : 0; |
||
1600 | |||
1601 | |||
1602 | try { |
||
1603 | // la repartition des jours sur les droits |
||
1604 | $_nbdays = self::testRightsQuantity($id_request, $rights, $used_in_previous_periods); |
||
1605 | if (!isset($nbdays)) { |
||
1606 | $nbdays = $_nbdays; |
||
1607 | } |
||
1608 | |||
1609 | } catch (Exception $e) |
||
1610 | { |
||
1611 | $babBody->addError($e->getMessage()); |
||
1612 | return false; |
||
1613 | } |
||
1614 | |||
1615 | |||
1616 | // verifier que le droit est dispo sur la periode |
||
1617 | // utile pour les demandes repetitives |
||
1618 | if (!test_periodValidity($id_request, $id_user, bab_mktime($begin), bab_mktime($end))) { |
||
1619 | return false; |
||
1620 | } |
||
1621 | |||
1622 | try { |
||
1623 | self::testRightsAvailability($rights, $nbdays, $begin, $end); |
||
1624 | } catch (Exception $e) |
||
1625 | { |
||
1626 | $babBody->addError($e->getMessage()); |
||
1627 | return false; |
||
1628 | } |
||
1629 | } |
||
1630 | |||
1631 | |||
1632 | if (!isset($nbdays)) { |
||
1633 | throw new Exception('missing quantity'); |
||
1634 | } |
||
1635 | |||
1636 | |||
1637 | |||
1638 | // save phase |
||
1639 | $saved = false; |
||
1640 | foreach ($period_list as $begin => $end) { |
||
1641 | $id_request = isset($period_list_id[$begin]) ? $period_list_id[$begin] : 0; |
||
1642 | |||
1643 | if (self::savePeriod($id_request, $begin, $end, $id_user, $rfrom, $nbdays, $folder)) { |
||
1644 | $saved = true; |
||
1645 | } |
||
1646 | } |
||
1647 | |||
1648 | |||
1649 | if ($saved && !isset($_POST['previsional'])) |
||
1650 | { |
||
1651 | $defer = (bool) absences_getVacationOption('approb_email_defer'); |
||
1652 | if (!$defer) { |
||
1653 | require_once dirname(__FILE__).'/utilit/request.notify.php'; |
||
1654 | absences_notifyRequestApprovers(); |
||
1655 | } |
||
1656 | } |
||
1657 | |||
1658 | return true; |
||
1659 | } |
||
1660 | |||
1661 | |||
1662 | |||
1663 | |||
1664 | |||
1665 | |||
1666 | |||
1667 | /** |
||
1668 | * Test des soldes |
||
1669 | * retourne la liste des droit qui devons etre inseres ou false si la demande n'est pas autorise |
||
1670 | * |
||
1671 | * @throws Exception |
||
1672 | * |
||
1673 | * @return array | false |
||
1674 | */ |
||
1675 | private static function testRightsQuantity($id_request, $rights, &$used_in_previous_periods) |
||
1676 | { |
||
1677 | |||
1678 | |||
1679 | $rgroups = array(); |
||
1680 | $nbdays = array( |
||
1681 | 'id' => array(), |
||
1682 | 'val' => array(), |
||
1683 | 'total' => array( |
||
1684 | 'D' => 0, |
||
1685 | 'H' => 0 |
||
1686 | ) |
||
1687 | ); |
||
1688 | |||
1689 | // regular vacation rights |
||
1690 | foreach($rights as &$arr) |
||
1691 | { |
||
1692 | if( isset($_POST['quantity'][$arr['id']])) |
||
1693 | { |
||
1694 | $quantity = $_POST['quantity'][$arr['id']]; |
||
1695 | if (!self::addVacationRight($nbdays, $arr, $quantity, $id_request, $used_in_previous_periods)) |
||
1696 | { |
||
1697 | return false; |
||
0 ignored issues
–
show
The return type of
return false; (false ) is incompatible with the return type documented by absences_saveVacation::testRightsQuantity of type array .
If you return a value from a function or method, it should be a sub-type of the type that is given by the parent type f.e. an interface, or abstract method. This is more formally defined by the Lizkov substitution principle, and guarantees that classes that depend on the parent type can use any instance of a child type interchangably. This principle also belongs to the SOLID principles for object oriented design. Let’s take a look at an example: class Author {
private $name;
public function __construct($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
abstract class Post {
public function getAuthor() {
return 'Johannes';
}
}
class BlogPost extends Post {
public function getAuthor() {
return new Author('Johannes');
}
}
class ForumPost extends Post { /* ... */ }
function my_function(Post $post) {
echo strtoupper($post->getAuthor());
}
Our function ![]() |
|||
1698 | } |
||
1699 | } |
||
1700 | |||
1701 | if ($arr['id_rgroup'] > 0) { |
||
1702 | $rgroups[$arr['id']] = $arr['id_rgroup']; |
||
1703 | } |
||
1704 | } |
||
1705 | |||
1706 | // right groups |
||
1707 | |||
1708 | if (isset($_POST['rgroup_right'])) { |
||
1709 | foreach($_POST['rgroup_right'] as $id_rgroup => $id_right) { |
||
1710 | if (isset($rgroups[$id_right]) && $rgroups[$id_right] == $id_rgroup) { |
||
1711 | $quantity = $_POST['rgroup_value'][$id_rgroup]; |
||
1712 | |||
1713 | if (!self::addVacationRight($nbdays, $rights[$id_right], $quantity, $id_request, $used_in_previous_periods)) |
||
1714 | { |
||
1715 | return false; |
||
0 ignored issues
–
show
The return type of
return false; (false ) is incompatible with the return type documented by absences_saveVacation::testRightsQuantity of type array .
If you return a value from a function or method, it should be a sub-type of the type that is given by the parent type f.e. an interface, or abstract method. This is more formally defined by the Lizkov substitution principle, and guarantees that classes that depend on the parent type can use any instance of a child type interchangably. This principle also belongs to the SOLID principles for object oriented design. Let’s take a look at an example: class Author {
private $name;
public function __construct($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
abstract class Post {
public function getAuthor() {
return 'Johannes';
}
}
class BlogPost extends Post {
public function getAuthor() {
return new Author('Johannes');
}
}
class ForumPost extends Post { /* ... */ }
function my_function(Post $post) {
echo strtoupper($post->getAuthor());
}
Our function ![]() |
|||
1716 | } |
||
1717 | } |
||
1718 | } |
||
1719 | } |
||
1720 | |||
1721 | if (empty($nbdays['val'])) |
||
1722 | { |
||
1723 | throw new Exception(absences_translate("Empty requests are not allowed")); |
||
1724 | } |
||
1725 | |||
1726 | |||
1727 | $days = 0.0; |
||
1728 | $hours = 0.0; |
||
1729 | |||
1730 | View Code Duplication | if (isset($_POST['total']['D'])) { |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
1731 | $days = (float) str_replace(',', '.', $_POST['total']['D']); |
||
1732 | } |
||
1733 | |||
1734 | View Code Duplication | if (isset($_POST['total']['H'])) { |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
1735 | $hours = (float) str_replace(',', '.', $_POST['total']['H']); |
||
1736 | } |
||
1737 | |||
1738 | |||
1739 | |||
1740 | |||
1741 | View Code Duplication | if ($nbdays['total']['D'] > 0 && !absences_cq($nbdays['total']['D'], $days)) { |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
1742 | throw new Exception(absences_translate("Quantities must match total days")); |
||
1743 | } |
||
1744 | |||
1745 | View Code Duplication | if ($nbdays['total']['H'] > 0 && !absences_cq($nbdays['total']['H'], $hours)) { |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
1746 | throw new Exception(absences_translate("Quantities must match total hours")); |
||
1747 | } |
||
1748 | |||
1749 | return $nbdays; |
||
1750 | } |
||
1751 | |||
1752 | |||
1753 | |||
1754 | /** |
||
1755 | * Tester pour une periode si les droits avec une quantite saisie est disponibe |
||
1756 | * |
||
1757 | * @param array $rights Array from absences_getRightsOnPeriod |
||
1758 | * @param array $nbdays |
||
1759 | * @param string $begin ISO datetime |
||
1760 | * @param string $end ISO datetime |
||
1761 | * |
||
1762 | * @throws Exception |
||
1763 | * |
||
1764 | * @return bool |
||
1765 | */ |
||
1766 | private static function testRightsAvailability(Array $rights, Array $nbdays, $begin, $end) |
||
1767 | { |
||
1768 | $begin_ts = bab_mktime($begin); |
||
1769 | $end_ts = bab_mktime($end); |
||
1770 | |||
1771 | |||
1772 | foreach($nbdays['id'] as $k => $id_right) |
||
1773 | { |
||
1774 | if (isset($nbdays['val'][$k]) && !empty($nbdays['val'][$k])) |
||
1775 | { |
||
1776 | $agentRight = $rights[$id_right]['agentRight']; |
||
1777 | |||
1778 | |||
1779 | |||
1780 | if (!$agentRight->isAccessibleOnPeriod($begin_ts, $end_ts)) |
||
1781 | { |
||
1782 | throw new Exception(sprintf( |
||
1783 | absences_translate('The right "%s" is not accessible %s, in a recurring request, all periods must be inside the used right validity period'), |
||
1784 | $rights[$id_right]['description'], |
||
1785 | mb_strtolower(absences_DateTimePeriod($begin, $end)) |
||
1786 | )); |
||
1787 | } |
||
1788 | |||
1789 | if (!$agentRight->isAccessibleOnDelay($begin_ts)) |
||
1790 | { |
||
1791 | $right = $agentRight->getRight(); |
||
1792 | $rightRule = $right->getRightRule(); |
||
1793 | |||
1794 | throw new Exception(sprintf( |
||
1795 | absences_translate('The right "%s" is not accessible in the next %s days'), |
||
1796 | $right[$id_right]['description'], |
||
1797 | $rightRule->delay_before |
||
1798 | )); |
||
1799 | } |
||
1800 | } |
||
1801 | } |
||
1802 | |||
1803 | return true; |
||
1804 | } |
||
1805 | |||
1806 | |||
1807 | |||
1808 | private static function getPeriodSpanOnEdit($old_date_begin, $old_date_end, BAB_DateTime $date_begin, BAB_DateTime $date_end) |
||
1809 | { |
||
1810 | $old_date_begin_obj = BAB_DateTime::fromIsoDateTime($old_date_begin); |
||
1811 | $old_date_end_obj = BAB_DateTime::fromIsoDateTime($old_date_end); |
||
1812 | |||
1813 | $old_date_begin = $old_date_begin_obj->getTimeStamp(); |
||
1814 | $old_date_end = $old_date_end_obj->getTimeStamp(); |
||
1815 | |||
1816 | $new_date_begin = $date_begin->getTimeStamp(); |
||
1817 | $new_date_end = $date_end->getTimeStamp(); |
||
1818 | |||
1819 | $period_begin = $old_date_begin < $new_date_begin ? $old_date_begin : $new_date_begin; |
||
1820 | $period_end = $old_date_end > $new_date_end ? $old_date_end : $new_date_end; |
||
1821 | |||
1822 | return array($period_begin, $period_end); |
||
1823 | } |
||
1824 | |||
1825 | |||
1826 | |||
1827 | /** |
||
1828 | * Save in calendar |
||
1829 | * |
||
1830 | * |
||
1831 | * @param int $id_request |
||
1832 | * @param BAB_DateTime | null $old_date_begin_obj |
||
1833 | * @param BAB_DateTime | null $old_date_end_obj |
||
1834 | */ |
||
1835 | private static function saveInCalendar($id_request, $id, $old_date_begin_obj, $old_date_end_obj) |
||
1836 | { |
||
1837 | if (empty($id_request)) { |
||
1838 | // event creation |
||
1839 | absences_createPeriod($id); |
||
1840 | |||
1841 | } else { |
||
1842 | // event modification |
||
1843 | absences_updatePeriod($id, $old_date_begin_obj, $old_date_end_obj); |
||
1844 | } |
||
1845 | } |
||
1846 | |||
1847 | |||
1848 | /** |
||
1849 | * |
||
1850 | * @param string $begin ISO datetime |
||
1851 | * @param string $end ISO datetime |
||
1852 | * @param int $id_user Request owner |
||
1853 | * @param int $rfrom rfrom=1 if modification from a manager and from the back-office |
||
1854 | * @return boolean |
||
1855 | */ |
||
1856 | private static function savePeriod($id_request, $begin, $end, $id_user, $rfrom, $nbdays, $folder = 0) |
||
1857 | { |
||
1858 | require_once $GLOBALS['babInstallPath'].'utilit/dateTime.php'; |
||
1859 | require_once dirname(__FILE__).'/utilit/entry.class.php'; |
||
1860 | require_once dirname(__FILE__).'/utilit/entry_elem.class.php'; |
||
1861 | global $babBody; |
||
1862 | |||
1863 | |||
1864 | |||
1865 | $remarks = $_POST['remarks']; |
||
1866 | |||
1867 | |||
1868 | $date_begin = BAB_DateTime::fromIsoDateTime($begin); |
||
1869 | $date_end = BAB_DateTime::fromIsoDateTime($end); |
||
1870 | $status = isset($_POST['previsional']) ? 'P' : 'Y'; |
||
1871 | |||
1872 | |||
1873 | |||
1874 | |||
1875 | if (empty($id_request)) { |
||
1876 | // event creation |
||
1877 | |||
1878 | $entry = new absences_Entry; |
||
1879 | $entry->id_user = $id_user; |
||
1880 | $entry->createdBy = bab_getUserId(); |
||
1881 | $entry->date_begin = $begin; |
||
1882 | $entry->date_end = $end; |
||
1883 | $entry->comment = $remarks; |
||
1884 | $entry->createdOn = date('Y-m-d H:i:s'); |
||
1885 | $entry->idfai = 0; |
||
1886 | $entry->status = $status; |
||
1887 | $entry->folder = $folder; |
||
1888 | |||
1889 | $entry->save(); |
||
1890 | |||
1891 | $id = $entry->id; |
||
1892 | |||
1893 | $period_begin = bab_mktime($begin); |
||
1894 | $period_end = bab_mktime($end); |
||
1895 | |||
1896 | $old_date_begin_obj = null; |
||
1897 | $old_date_end_obj = null; |
||
1898 | |||
1899 | |||
1900 | } |
||
1901 | else { |
||
1902 | // event modification |
||
1903 | |||
1904 | $entry = absences_Entry::getById($id_request); |
||
1905 | |||
1906 | $old_date_begin = $entry->date_begin; |
||
1907 | $old_date_end = $entry->date_end; |
||
1908 | |||
1909 | if ($entry->idfai > 0) { |
||
1910 | deleteFlowInstance($entry->idfai); |
||
1911 | } |
||
1912 | |||
1913 | $entry->date_begin = $date_begin->getIsoDateTime(); |
||
1914 | $entry->date_end = $date_end->getIsoDateTime(); |
||
1915 | $entry->comment = $remarks; |
||
1916 | $entry->idfai = 0; |
||
1917 | $entry->status = $status; |
||
1918 | |||
1919 | $entry->save(); |
||
1920 | |||
1921 | $entry->loadElements(); |
||
1922 | |||
1923 | $id = $id_request; |
||
1924 | |||
1925 | |||
1926 | list($period_begin, $period_end) = self::getPeriodSpanOnEdit($old_date_begin, $old_date_end, $date_begin, $date_end); |
||
1927 | |||
1928 | $old_date_begin_obj = BAB_DateTime::fromIsoDateTime($old_date_begin); |
||
1929 | $old_date_end_obj = BAB_DateTime::fromIsoDateTime($old_date_end); |
||
1930 | } |
||
1931 | |||
1932 | |||
1933 | // insert rights |
||
1934 | |||
1935 | $saved_rights = array(); |
||
1936 | |||
1937 | if (isset($nbdays['id'])) { |
||
1938 | $count = count($nbdays['id']); |
||
1939 | for( $i = 0; $i < $count; $i++) { |
||
1940 | |||
1941 | $id_right = $nbdays['id'][$i]; |
||
1942 | $saved_rights[$id_right] = $id_right; |
||
1943 | |||
1944 | $elem = $entry->getElement($id_right); |
||
1945 | if (!isset($elem)) { |
||
1946 | $elem = new absences_EntryElem(); |
||
1947 | $elem->setEntry($entry); |
||
1948 | $entry->addElement($elem); |
||
1949 | } |
||
1950 | |||
1951 | $elem->id_right = $id_right; |
||
1952 | $elem->date_begin = '0000-00-00 00:00:00'; |
||
1953 | $elem->date_end = '0000-00-00 00:00:00'; |
||
1954 | $elem->quantity = $nbdays['val'][$i]; |
||
1955 | } |
||
1956 | } |
||
1957 | |||
1958 | // remove elements set to zero |
||
1959 | foreach($entry->getElements() as $element) { |
||
1960 | if (!isset($saved_rights[$element->id_right])) { |
||
1961 | $element->delete(); |
||
1962 | } |
||
1963 | } |
||
1964 | |||
1965 | $entry->setElementsDates(); |
||
1966 | $entry->saveElements(); |
||
1967 | $entry->createPlannedPeriods(); |
||
1968 | $entry->savePlannedPeriods(); |
||
1969 | |||
1970 | |||
1971 | // set period into calendar backend if necessary |
||
1972 | try { |
||
1973 | self::saveInCalendar($id_request, $id, $old_date_begin_obj, $old_date_end_obj); |
||
1974 | } catch (Exception $e) { |
||
1975 | // ex: caldav is not accessible |
||
1976 | |||
1977 | /*@var $babBody babBody */ |
||
1978 | $babBody->addNextPageError(sprintf(absences_translate('Failed to save event in calendar: %s'), $e->getMessage())); |
||
1979 | } |
||
1980 | |||
1981 | |||
1982 | include_once $GLOBALS['babInstallPath']."utilit/eventperiod.php"; |
||
1983 | $event = new bab_eventPeriodModified($period_begin, $period_end, $id_user); |
||
1984 | $event->types = BAB_PERIOD_VACATION; |
||
1985 | bab_fireEvent($event); |
||
1986 | |||
1987 | |||
1988 | |||
1989 | |||
1990 | if (!isset($_POST['previsional'])) |
||
1991 | { |
||
1992 | $author = absences_Agent::getCurrentUser(); |
||
1993 | $approbCreated = false; |
||
1994 | $startApproval = true; |
||
1995 | |||
1996 | if ($author->isManager()) { |
||
1997 | if (isset($_POST['force_approval'])) { // checkbox does not exists if manager create his own request |
||
1998 | $startApproval = (bool) bab_pp('force_approval'); |
||
1999 | } |
||
2000 | } |
||
2001 | |||
2002 | |||
2003 | if ($startApproval) { |
||
2004 | // create approbation |
||
2005 | if (self::createInstance($entry, !empty($id_request))) { |
||
2006 | $approbCreated = true; |
||
2007 | } |
||
2008 | } else { |
||
2009 | self::addNoApprovalMovement($entry, !empty($id_request)); |
||
2010 | } |
||
2011 | |||
2012 | if (!$approbCreated) |
||
2013 | { |
||
2014 | // ex : retirer des RTT en fonction des arret maladie, l'absences maladie est cree par le gestionnaire sans approbation |
||
2015 | $entry->applyDynamicRight(); |
||
2016 | |||
2017 | // notify owner and other emails about the confirmed vacation request |
||
2018 | $entry->notifyOwner(); |
||
2019 | } |
||
2020 | |||
2021 | if (!empty($id_request)) |
||
2022 | { |
||
2023 | // notification de modification |
||
2024 | $entry = absences_Entry::getById($id); |
||
2025 | absences_notifyOnRequestChange(array($entry), $entry->id_user); |
||
2026 | absences_notifyManagers::send($id); |
||
2027 | } |
||
2028 | |||
2029 | } else { |
||
2030 | self::addPrevisionalMovement($entry, !empty($id_request)); |
||
2031 | } |
||
2032 | |||
2033 | |||
2034 | |||
2035 | return true; |
||
2036 | } |
||
2037 | |||
2038 | |||
2039 | |||
2040 | public static function submitRequest($id) |
||
2041 | { |
||
2042 | require_once dirname(__FILE__).'/utilit/entry.class.php'; |
||
2043 | global $babBody; |
||
2044 | |||
2045 | $entry = absences_Entry::getById($id); |
||
2046 | |||
2047 | try { |
||
2048 | $entry->checkAvailable(); |
||
2049 | } catch(Exception $e) { |
||
2050 | $babBody->addNextPageError($e->getMessage()); |
||
2051 | return false; |
||
2052 | } |
||
2053 | |||
2054 | if (!self::createInstance($entry)) { |
||
2055 | // ex : retirer des RTT en fonction des arret maladie, l'absences maladie est cree par le gestionnaire sans approbation |
||
2056 | $entry->applyDynamicRight(); |
||
2057 | |||
2058 | // notify owner and other emails about the confirmed vacation request |
||
2059 | $entry->notifyOwner(); |
||
2060 | } |
||
2061 | } |
||
2062 | |||
2063 | |||
2064 | |||
2065 | View Code Duplication | protected static function addPrevisionalMovement($entry, $modify) |
|
0 ignored issues
–
show
This method seems to be duplicated in your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
2066 | { |
||
2067 | if ($modify) |
||
2068 | { |
||
2069 | $text = absences_translate('The previsional %s has been modified without approval'); |
||
2070 | } else { |
||
2071 | $text = absences_translate('The previsional %s has been created without approval'); |
||
2072 | } |
||
2073 | |||
2074 | $entry->addMovement(sprintf($text, $entry->getTitle())); |
||
2075 | } |
||
2076 | |||
2077 | |||
2078 | View Code Duplication | protected static function addNoApprovalMovement($entry, $modify) |
|
0 ignored issues
–
show
This method seems to be duplicated in your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
2079 | { |
||
2080 | if ($modify) |
||
2081 | { |
||
2082 | $text = absences_translate('The %s has been modified without approval'); |
||
2083 | } else { |
||
2084 | $text = absences_translate('The %s has been created without approval'); |
||
2085 | } |
||
2086 | |||
2087 | $entry->addMovement(sprintf($text, $entry->getTitle())); |
||
2088 | } |
||
2089 | |||
2090 | |||
2091 | /** |
||
2092 | * Create approbation instance, set status in waiting state |
||
2093 | * @param absences_Entry $entry |
||
2094 | * @param bool $modify |
||
2095 | * |
||
2096 | * @return bool |
||
2097 | */ |
||
2098 | public static function createInstance(absences_Entry $entry, $modify = false) |
||
2099 | { |
||
2100 | require_once dirname(__FILE__).'/utilit/request.notify.php'; |
||
2101 | global $babBody; |
||
2102 | |||
2103 | |||
2104 | |||
2105 | if (!$entry->requireApproval()) |
||
2106 | { |
||
2107 | |||
2108 | self::addNoApprovalMovement($entry, $modify); |
||
2109 | return false; |
||
2110 | } else { |
||
2111 | |||
2112 | |||
2113 | if ($modify) |
||
2114 | { |
||
2115 | $text = absences_translate('The %s has been modified'); |
||
2116 | } else { |
||
2117 | $text = absences_translate('The %s has been created'); |
||
2118 | } |
||
2119 | |||
2120 | $entry->addMovement(sprintf($text, $entry->getTitle())); |
||
2121 | } |
||
2122 | |||
2123 | |||
2124 | if (!$entry->createApprobationInstance()) { |
||
2125 | // impossible de crer une instance, |
||
2126 | // l'utilisateur peut etre en auto-approbation ou le schema ne retourne aucun approbateur |
||
2127 | $entry->status = 'Y'; |
||
2128 | $entry->onConfirm(); |
||
2129 | $entry->save(); |
||
2130 | return false; |
||
2131 | } |
||
2132 | |||
2133 | |||
2134 | |||
2135 | return true; |
||
2136 | } |
||
2137 | |||
2138 | |||
2139 | |||
2140 | View Code Duplication | public static function gotoList() |
|
0 ignored issues
–
show
This method seems to be duplicated in your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
2141 | { |
||
2142 | require_once $GLOBALS['babInstallPath'].'utilit/urlincl.php'; |
||
2143 | |||
2144 | $url = bab_url::get_request('tg'); |
||
2145 | $url->idx = 'lvreq'; |
||
2146 | $url->location(); |
||
2147 | } |
||
2148 | |||
2149 | } |
||
2150 | |||
2151 | |||
2152 | |||
2153 | |||
2154 | |||
2155 | |||
2156 | |||
2157 | |||
2158 | /** |
||
2159 | * Test period validity |
||
2160 | * verifie qu'il n'y a pas de chevauchements de periodes |
||
2161 | * |
||
2162 | * @param int $id_entry |
||
2163 | * @param int $id_user |
||
2164 | * @param int $begin |
||
2165 | * @param int $end |
||
2166 | * @return boolean |
||
2167 | */ |
||
2168 | function test_periodValidity($id_entry,$id_user,$begin,$end) |
||
2169 | { |
||
2170 | global $babBody, $babDB; |
||
2171 | |||
2172 | if( $begin >= $end) |
||
2173 | { |
||
2174 | $babBody->msgerror = absences_translate("ERROR: End date must be older")." !"; |
||
2175 | return false; |
||
2176 | } |
||
2177 | |||
2178 | |||
2179 | $date_begin = date('Y-m-d H:i:s',$begin); |
||
2180 | $date_end = date('Y-m-d H:i:s',$end); |
||
2181 | |||
2182 | $req = "SELECT |
||
2183 | COUNT(*) |
||
2184 | FROM ".ABSENCES_ENTRIES_TBL." |
||
2185 | WHERE |
||
2186 | id_user='".$babDB->db_escape_string($id_user)."' |
||
2187 | AND date_begin < '".$babDB->db_escape_string($date_end)."' |
||
2188 | AND date_end > '".$babDB->db_escape_string($date_begin)."' |
||
2189 | AND id <> '".$babDB->db_escape_string($id_entry)."' |
||
2190 | AND status<>'N'"; |
||
2191 | |||
2192 | $res = $babDB->db_query($req); |
||
2193 | list($n) = $babDB->db_fetch_array($res); |
||
2194 | |||
2195 | if ($n > 0) { |
||
2196 | $babBody->msgerror = absences_translate("ERROR: a request is already defined on this period"); |
||
2197 | return false; |
||
2198 | } |
||
2199 | |||
2200 | return true; |
||
2201 | } |
||
2202 | |||
2203 | /** |
||
2204 | * Test period validaity from posted first step |
||
2205 | * @return boolean |
||
2206 | */ |
||
2207 | function test_period() |
||
2208 | { |
||
2209 | global $babBody; |
||
2210 | include_once $GLOBALS['babInstallPath']."utilit/dateTime.php"; |
||
2211 | |||
2212 | if (!isset($_POST['daybegin']) || |
||
2213 | !isset($_POST['monthbegin']) || |
||
2214 | !isset($_POST['yearbegin']) || |
||
2215 | !isset($_POST['hourbegin']) || |
||
2216 | !isset($_POST['dayend']) || |
||
2217 | !isset($_POST['monthend']) || |
||
2218 | !isset($_POST['yearend']) || |
||
2219 | !isset($_POST['hourend']) || |
||
2220 | !isset($_POST['id_user']) |
||
2221 | ) |
||
2222 | { |
||
2223 | $babBody->msgerror = absences_translate("Error"); |
||
2224 | return false; |
||
2225 | } |
||
2226 | |||
2227 | $yearbegin = $_POST['year'] + $_POST['yearbegin'] - 1; |
||
2228 | $yearend = $_POST['year'] + $_POST['yearend'] - 1; |
||
2229 | |||
2230 | $begin = BAB_DateTime::fromIsoDateTime($yearbegin.'-'.$_POST['monthbegin'].'-'.$_POST['daybegin'].' '.$_POST['hourbegin']); |
||
2231 | $end = BAB_DateTime::fromIsoDateTime($yearend.'-'.$_POST['monthend'].'-'.$_POST['dayend'].' '.$_POST['hourend']); |
||
2232 | |||
2233 | $id_entry = isset($_POST['id']) ? $_POST['id'] : 0; |
||
2234 | |||
2235 | return test_periodValidity($id_entry, $_POST['id_user'], $begin->getTimeStamp(), $end->getTimeStamp()); |
||
2236 | } |
||
2237 | |||
2238 | |||
2239 | |||
2240 | |||
2241 | /** |
||
2242 | * Get posted date from the first step edit form or from the hidden field |
||
2243 | * |
||
2244 | */ |
||
2245 | class absences_PostedDate |
||
2246 | { |
||
2247 | /** |
||
2248 | * @return string ISO datetime |
||
2249 | */ |
||
2250 | public static function begin() |
||
2251 | { |
||
2252 | if (isset($_POST['daybegin'])) |
||
2253 | { |
||
2254 | $yearbegin = $_POST['year'] + $_POST['yearbegin'] -1; |
||
2255 | return $yearbegin.'-'.$_POST['monthbegin'].'-'.$_POST['daybegin'].' '.$_POST['hourbegin']; |
||
2256 | } |
||
2257 | |||
2258 | if (isset($_POST['begin'])) |
||
2259 | { |
||
2260 | return $_POST['begin']; |
||
2261 | } |
||
2262 | |||
2263 | if (isset($_POST['period'])) |
||
2264 | { |
||
2265 | return key($_POST['period']); |
||
2266 | } |
||
2267 | } |
||
2268 | |||
2269 | /** |
||
2270 | * @return string ISO datetime |
||
2271 | */ |
||
2272 | public static function end() |
||
2273 | { |
||
2274 | if (isset($_POST['dayend'])) |
||
2275 | { |
||
2276 | |||
2277 | $yearend = $_POST['year'] + $_POST['yearend'] -1; |
||
2278 | return $yearend.'-'.$_POST['monthend'].'-'.$_POST['dayend'].' '.$_POST['hourend']; |
||
2279 | } |
||
2280 | |||
2281 | if (isset($_POST['end'])) |
||
2282 | { |
||
2283 | return $_POST['end']; |
||
2284 | } |
||
2285 | |||
2286 | if (isset($_POST['period'])) |
||
2287 | { |
||
2288 | return reset($_POST['period']); |
||
2289 | } |
||
2290 | } |
||
2291 | } |
||
2292 | |||
2293 | |||
2294 | |||
2295 | |||
2296 | View Code Duplication | function absences_workperiodGotoList() |
|
0 ignored issues
–
show
This function seems to be duplicated in your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
2297 | { |
||
2298 | $agent = absences_Agent::getCurrentUser(); |
||
2299 | |||
2300 | if (!empty($_POST['workperiod']['id_user'])) { |
||
2301 | |||
2302 | |||
2303 | if ($agent->isManager()) { |
||
2304 | $url = new bab_url(absences_addon()->getUrl().'vacadmwd'); |
||
2305 | $url->location(); |
||
2306 | return; |
||
2307 | } |
||
2308 | |||
2309 | //TODO: liste des demandes de l'entite si gestionnaire delegue |
||
2310 | } |
||
2311 | |||
2312 | $url = bab_url::get_request('tg'); |
||
2313 | $url->idx = 'lvreq'; |
||
2314 | $url->location(); |
||
2315 | } |
||
2316 | |||
2317 | |||
2318 | |||
2319 | |||
2320 | /** |
||
2321 | * Save form |
||
2322 | * @param array $workperiod |
||
2323 | * @param absences_WorkperiodRecoverRequest $workperiodRecover |
||
2324 | * @throws Exception |
||
2325 | */ |
||
2326 | function absences_saveWorkperiodRecoverRequest(Array $workperiod, absences_WorkperiodRecoverRequest $workperiodRecover = null) |
||
2327 | { |
||
2328 | $babBody = bab_getInstance('babBody'); |
||
2329 | /* @var $babBody babBody */ |
||
2330 | |||
2331 | if (absences_lockedForMainteance()) |
||
2332 | { |
||
2333 | return false; |
||
2334 | } |
||
2335 | |||
2336 | |||
2337 | if (!absences_WorkperiodRecoverRequest::checkForm($workperiod, $workperiodRecover)) |
||
2338 | { |
||
2339 | return false; |
||
2340 | } |
||
2341 | |||
2342 | |||
2343 | |||
2344 | |||
2345 | |||
2346 | $type = absences_WorkperiodType::getFromId($workperiod['id_type']); |
||
2347 | |||
2348 | if (!$type->getRow()) |
||
2349 | { |
||
2350 | throw new Exception(absences_translate('This type does not exits')); |
||
2351 | } |
||
2352 | |||
2353 | $agent = absences_Agent::getCurrentUser(); |
||
2354 | |||
2355 | if (!isset($workperiodRecover)) |
||
2356 | { |
||
2357 | $workperiodRecover = new absences_WorkperiodRecoverRequest(); |
||
2358 | |||
2359 | if (!empty($workperiod['id_user'])) { |
||
2360 | $spoofed = absences_Agent::getFromIdUser($workperiod['id_user']); |
||
2361 | if (!$agent->isManager() && !$agent->isSuperiorOf($spoofed)) { |
||
2362 | throw new Exception(absences_translate('This type does not exits')); |
||
2363 | } |
||
2364 | |||
2365 | $workperiodRecover->id_user = $spoofed->getIdUser(); |
||
2366 | |||
2367 | } else { |
||
2368 | $workperiodRecover->id_user = bab_getUserId(); |
||
2369 | } |
||
2370 | } |
||
2371 | |||
2372 | $workperiodRecover->date_begin = absences_dateTimeForm($workperiod['datebegin'], $workperiod['hourbegin']); |
||
2373 | $workperiodRecover->date_end = absences_dateTimeForm($workperiod['dateend'], $workperiod['hourend']); |
||
2374 | $workperiodRecover->id_type = $type->id; |
||
2375 | $workperiodRecover->comment = $workperiod['comment']; |
||
2376 | $workperiodRecover->quantity = $type->quantity; |
||
0 ignored issues
–
show
The property
quantity does not exist on object<absences_WorkperiodType> . Since you implemented __set , maybe consider adding a @property annotation.
Since your code implements the magic setter <?php
/**
* @property int $x
* @property int $y
* @property string $text
*/
class MyLabel
{
private $properties;
private $allowedProperties = array('x', 'y', 'text');
public function __get($name)
{
if (isset($properties[$name]) && in_array($name, $this->allowedProperties)) {
return $properties[$name];
} else {
return null;
}
}
public function __set($name, $value)
{
if (in_array($name, $this->allowedProperties)) {
$properties[$name] = $value;
} else {
throw new \LogicException("Property $name is not defined.");
}
}
}
Since the property has write access only, you can use the @property-write annotation instead. Of course, you may also just have mistyped another name, in which case you should fix the error. See also the PhpDoc documentation for @property. ![]() |
|||
2377 | $workperiodRecover->quantity_unit = $type->quantity_unit; |
||
0 ignored issues
–
show
The property
quantity_unit does not exist on object<absences_WorkperiodType> . Since you implemented __set , maybe consider adding a @property annotation.
Since your code implements the magic setter <?php
/**
* @property int $x
* @property int $y
* @property string $text
*/
class MyLabel
{
private $properties;
private $allowedProperties = array('x', 'y', 'text');
public function __get($name)
{
if (isset($properties[$name]) && in_array($name, $this->allowedProperties)) {
return $properties[$name];
} else {
return null;
}
}
public function __set($name, $value)
{
if (in_array($name, $this->allowedProperties)) {
$properties[$name] = $value;
} else {
throw new \LogicException("Property $name is not defined.");
}
}
}
Since the property has write access only, you can use the @property-write annotation instead. Of course, you may also just have mistyped another name, in which case you should fix the error. See also the PhpDoc documentation for @property. ![]() |
|||
2378 | $workperiodRecover->status = 'Y'; |
||
2379 | $workperiodRecover->id_right = 0; |
||
2380 | $workperiodRecover->save(); |
||
2381 | |||
2382 | |||
2383 | if ($workperiodRecover->createApprobationInstance()) |
||
2384 | { |
||
2385 | $babBody->addNextPageMessage(absences_translate('Your workperiod recovery request has been sent for approval')); |
||
0 ignored issues
–
show
absences_translate('Your...een sent for approval') is of type string , but the function expects a object<unknown_type> .
It seems like the type of the argument is not accepted by the function/method which you are calling. In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug. We suggest to add an explicit type cast like in the following example: function acceptsInteger($int) { }
$x = '123'; // string "123"
// Instead of
acceptsInteger($x);
// we recommend to use
acceptsInteger((integer) $x);
![]() |
|||
2386 | } else { |
||
2387 | $babBody->addNextPageMessage(absences_translate('Your workperiod recovery request has been saved without approval')); |
||
0 ignored issues
–
show
absences_translate('Your...aved without approval') is of type string , but the function expects a object<unknown_type> .
It seems like the type of the argument is not accepted by the function/method which you are calling. In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug. We suggest to add an explicit type cast like in the following example: function acceptsInteger($int) { }
$x = '123'; // string "123"
// Instead of
acceptsInteger($x);
// we recommend to use
acceptsInteger((integer) $x);
![]() |
|||
2388 | } |
||
2389 | |||
2390 | $defer = (bool) absences_getVacationOption('approb_email_defer'); |
||
2391 | |||
2392 | if (!$defer) |
||
2393 | { |
||
2394 | require_once dirname(__FILE__).'/utilit/request.notify.php'; |
||
2395 | absences_notifyRequestApprovers(); |
||
2396 | } |
||
2397 | |||
2398 | |||
2399 | absences_workperiodGotoList(); |
||
2400 | } |
||
2401 | |||
2402 | |||
2403 | |||
2404 | |||
2405 | |||
2406 | |||
2407 | |||
2408 | |||
2409 | |||
2410 | |||
2411 | /** |
||
2412 | * Display form |
||
2413 | */ |
||
2414 | function absences_createWorkperiodRecoverRequest() |
||
2415 | { |
||
2416 | require_once dirname(__FILE__).'/utilit/workperiod_recover_request.class.php'; |
||
2417 | require_once dirname(__FILE__).'/utilit/workperiod_recover_request.ui.php'; |
||
2418 | |||
2419 | |||
2420 | $babBody = bab_getBody(); |
||
2421 | |||
2422 | |||
2423 | |||
2424 | $agent = absences_Agent::getCurrentUser(); |
||
2425 | |||
2426 | if ($id_user = (int) bab_rp('id_user')) { |
||
2427 | $spoofed = absences_Agent::getFromIdUser($id_user); |
||
2428 | if (!$agent->isManager() && !$agent->isSuperiorOf($spoofed)) { |
||
2429 | return $babBody->addError('Spoofing failed workperiod recover request creation, you must be superior of the spoofed agent'); |
||
2430 | } |
||
2431 | |||
2432 | $agent = $spoofed; |
||
2433 | } |
||
2434 | |||
2435 | |||
2436 | |||
2437 | $request = null; |
||
2438 | $id = bab_rp('id', null); |
||
2439 | if (isset($id)) |
||
2440 | { |
||
2441 | $request = absences_WorkperiodRecoverRequest::getById($id); |
||
2442 | if (!$request->canModify()) |
||
2443 | { |
||
2444 | return; |
||
2445 | } |
||
2446 | } else if (!$agent->canCreateWorkperiodRecoverRequest()) { |
||
2447 | return $babBody->addError('Agent not allowed to create workperiod recover requests'); |
||
2448 | } |
||
2449 | |||
2450 | |||
2451 | if (!isset($request) && $id_user) { |
||
2452 | $request = new absences_WorkperiodRecoverRequest(); |
||
2453 | $request->id_user = $id_user; |
||
2454 | } |
||
2455 | |||
2456 | |||
2457 | $W = bab_Widgets(); |
||
2458 | $page = $W->BabPage(); |
||
2459 | |||
2460 | View Code Duplication | if (isset($_POST['workperiod'])) |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
2461 | { |
||
2462 | if ( isset($_POST['workperiod']['cancel']) ) |
||
2463 | { |
||
2464 | absences_workperiodGotoList(); |
||
2465 | } |
||
2466 | |||
2467 | |||
2468 | if( isset($_POST['workperiod']['save'] )) |
||
2469 | { |
||
2470 | try { |
||
2471 | absences_saveWorkperiodRecoverRequest($_POST['workperiod'], $request); |
||
2472 | |||
2473 | } catch (Exception $e) |
||
2474 | { |
||
2475 | $page->addError($e->getMessage()); |
||
2476 | } |
||
2477 | } |
||
2478 | } |
||
2479 | |||
2480 | |||
2481 | $page->setTitle(absences_translate('Create a working days report entitling recovery')); |
||
2482 | |||
2483 | View Code Duplication | if (absences_lockedForMainteance()) |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
2484 | { |
||
2485 | $page->addError(absences_getMaintenanceMessage()); |
||
2486 | |||
2487 | } else { |
||
2488 | |||
2489 | $editor = new absences_WorkperiodRecoverRequestEditor($request, isset($spoofed), false); |
||
2490 | $page->addItem($editor); |
||
2491 | |||
2492 | } |
||
2493 | |||
2494 | $page->displayHtml(); |
||
2495 | } |
||
2496 | |||
2497 | |||
2498 | |||
2499 | |||
2500 | View Code Duplication | function absences_cetGotoList() |
|
0 ignored issues
–
show
The function
absences_cetGotoList() has been defined more than once; this definition is ignored, only the first definition in programs/vacadmcet.php (L152-159) is considered.
This check looks for functions that have already been defined in other files. Some Codebases, like WordPress, make a practice of defining functions multiple times. This
may lead to problems with the detection of function parameters and types. If you really
need to do this, you can mark the duplicate definition with the /**
* @ignore
*/
function getUser() {
}
function getUser($id, $realm) {
}
See also the PhpDoc documentation for @ignore. ![]() This function seems to be duplicated in your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
2501 | { |
||
2502 | $agent = absences_Agent::getCurrentUser(); |
||
2503 | |||
2504 | if (!empty($_POST['cet']['id_user'])) { |
||
2505 | |||
2506 | |||
2507 | if ($agent->isManager()) { |
||
2508 | $url = new bab_url(absences_addon()->getUrl().'vacadmcet'); |
||
2509 | $url->location(); |
||
2510 | return; |
||
2511 | } |
||
2512 | |||
2513 | //TODO: liste des demandes de l'entite si gestionnaire delegue |
||
2514 | } |
||
2515 | |||
2516 | $url = bab_url::get_request('tg'); |
||
2517 | $url->idx = 'lvreq'; |
||
2518 | $url->location(); |
||
2519 | } |
||
2520 | |||
2521 | |||
2522 | /** |
||
2523 | * Save a CET request |
||
2524 | * |
||
2525 | * |
||
2526 | * @param array $cet posted form |
||
2527 | * @param absences_CetDepositRequest $cet_deposit_request Current request to modify or null for new request |
||
2528 | */ |
||
2529 | function absences_saveCetDepositRequest(Array $cet, absences_CetDepositRequest $cet_deposit_request = null) |
||
2530 | { |
||
2531 | require_once $GLOBALS['babInstallPath'].'utilit/wfincl.php'; |
||
2532 | require_once dirname(__FILE__).'/utilit/agent_right.class.php'; |
||
2533 | |||
2534 | $babBody = bab_getInstance('babBody'); |
||
2535 | /* @var $babBody babBody */ |
||
2536 | |||
2537 | |||
2538 | if (absences_lockedForMainteance()) |
||
2539 | { |
||
2540 | return false; |
||
2541 | } |
||
2542 | |||
2543 | |||
2544 | $quantity = (float) str_replace(',', '.', $cet['quantity']); |
||
2545 | $agent_right = absences_AgentRight::getById((int) $cet['id_agent_right_source']); |
||
2546 | |||
2547 | |||
2548 | $agent = $agent_right->getAgent(); |
||
2549 | |||
2550 | if (!isset($cet['id_user']) && bab_getUserId() !== $agent->getIdUser()) |
||
2551 | { |
||
2552 | throw new Exception('Not accessible agentRight'); |
||
2553 | } |
||
2554 | |||
2555 | if (isset($cet['id_user'])) |
||
2556 | { |
||
2557 | $currentUser = absences_Agent::getCurrentUser(); |
||
2558 | if (!$currentUser->isManager() && !$currentUser->isSuperiorOf($agent)) { |
||
2559 | throw new Exception(absences_translate('Access denied to this account')); |
||
2560 | } |
||
2561 | } |
||
2562 | |||
2563 | |||
2564 | $AgentCet = $agent->Cet(); |
||
2565 | if (!$AgentCet->testDepositQuantity($agent_right, $quantity)) |
||
2566 | { |
||
2567 | return false; |
||
2568 | } |
||
2569 | |||
2570 | |||
2571 | |||
2572 | if (!isset($cet_deposit_request)) |
||
2573 | { |
||
2574 | // create the request |
||
2575 | $cet_deposit_request = new absences_CetDepositRequest(); |
||
2576 | } |
||
2577 | |||
2578 | $CetAgentRight = $AgentCet->getDepositAgentRight(true); |
||
2579 | if (!isset($CetAgentRight)) { |
||
2580 | throw new Exception(absences_translate('No active time saving account found for this account')); |
||
2581 | } |
||
2582 | |||
2583 | $cet_deposit_request->id_user = $agent->getIdUser(); |
||
2584 | $cet_deposit_request->id_agent_right_cet = $CetAgentRight->id; |
||
2585 | $cet_deposit_request->id_agent_right_source = $agent_right->id; |
||
2586 | $cet_deposit_request->quantity = $quantity; |
||
2587 | $cet_deposit_request->idfai = 0; |
||
2588 | $cet_deposit_request->comment = $cet['comment']; |
||
2589 | $cet_deposit_request->status = 'Y'; |
||
2590 | |||
2591 | $cet_deposit_request->save(); |
||
2592 | |||
2593 | |||
2594 | if ($cet_deposit_request->createApprobationInstance()) |
||
2595 | { |
||
2596 | $babBody->addNextPageMessage(absences_translate('Your time saving account deposit has been sent for approval')); |
||
0 ignored issues
–
show
absences_translate('Your...een sent for approval') is of type string , but the function expects a object<unknown_type> .
It seems like the type of the argument is not accepted by the function/method which you are calling. In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug. We suggest to add an explicit type cast like in the following example: function acceptsInteger($int) { }
$x = '123'; // string "123"
// Instead of
acceptsInteger($x);
// we recommend to use
acceptsInteger((integer) $x);
![]() |
|||
2597 | } else { |
||
2598 | $babBody->addNextPageMessage(absences_translate('Your time saving account deposit has been saved without approval')); |
||
0 ignored issues
–
show
absences_translate('Your...aved without approval') is of type string , but the function expects a object<unknown_type> .
It seems like the type of the argument is not accepted by the function/method which you are calling. In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug. We suggest to add an explicit type cast like in the following example: function acceptsInteger($int) { }
$x = '123'; // string "123"
// Instead of
acceptsInteger($x);
// we recommend to use
acceptsInteger((integer) $x);
![]() |
|||
2599 | } |
||
2600 | |||
2601 | |||
2602 | $defer = (bool) absences_getVacationOption('approb_email_defer'); |
||
2603 | |||
2604 | if (!$defer) |
||
2605 | { |
||
2606 | require_once dirname(__FILE__).'/utilit/request.notify.php'; |
||
2607 | absences_notifyRequestApprovers(); |
||
2608 | } |
||
2609 | |||
2610 | absences_cetGotoList(); |
||
2611 | } |
||
2612 | |||
2613 | |||
2614 | |||
2615 | function absences_createCetDepositRequest() |
||
2616 | { |
||
2617 | require_once dirname(__FILE__).'/utilit/cet_deposit_request.class.php'; |
||
2618 | require_once dirname(__FILE__).'/utilit/cet_deposit_request.ui.php'; |
||
2619 | |||
2620 | $agent = absences_Agent::getCurrentUser(); |
||
0 ignored issues
–
show
$agent is not used, you could remove the assignment.
This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently. $myVar = 'Value';
$higher = false;
if (rand(1, 6) > 3) {
$higher = true;
} else {
$higher = false;
}
Both the ![]() |
|||
2621 | |||
2622 | $id = bab_rp('id', null); |
||
2623 | $request = null; |
||
2624 | |||
2625 | $W = bab_Widgets(); |
||
2626 | $page = $W->BabPage(); |
||
2627 | |||
2628 | if (isset($id)) |
||
2629 | { |
||
2630 | $request = absences_CetDepositRequest::getById($id); |
||
2631 | if (!$request->canModify()) |
||
2632 | { |
||
2633 | $page->addError(absences_translate('This request is not modifiable')); |
||
2634 | $page->displayHtml(); |
||
2635 | return; |
||
2636 | } |
||
2637 | } elseif (bab_rp('id_user')) { |
||
2638 | |||
2639 | $request = new absences_CetDepositRequest(); |
||
2640 | $request->id_user = bab_rp('id_user'); |
||
2641 | $request->status = ''; |
||
2642 | $request->quantity = 0; |
||
2643 | |||
2644 | $agent = absences_Agent::getFromIdUser($request->id_user); |
||
2645 | |||
2646 | try { |
||
2647 | if (!$agent->Cet()->canAdd()) { |
||
2648 | $page->addError(sprintf(absences_translate('%s is not allowed to use time saving account'), $agent->getName())); |
||
2649 | $page->displayHtml(); |
||
2650 | return; |
||
2651 | } |
||
2652 | } catch (Exception $e) { |
||
2653 | $page->addError($e->getMessage()); |
||
2654 | $page->displayHtml(); |
||
2655 | return; |
||
2656 | } |
||
2657 | } |
||
2658 | |||
2659 | |||
2660 | |||
2661 | |||
2662 | |||
2663 | |||
2664 | |||
2665 | |||
2666 | View Code Duplication | if (isset($_POST['cet'])) |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
2667 | { |
||
2668 | if ( isset($_POST['cet']['cancel']) ) |
||
2669 | { |
||
2670 | absences_cetGotoList(); |
||
2671 | } |
||
2672 | |||
2673 | |||
2674 | if( isset($_POST['cet']['save'] )) |
||
2675 | { |
||
2676 | try { |
||
2677 | absences_saveCetDepositRequest($_POST['cet'], $request); |
||
2678 | } catch (Exception $e) |
||
2679 | { |
||
2680 | $page->addError($e->getMessage()); |
||
2681 | } |
||
2682 | } |
||
2683 | } |
||
2684 | |||
2685 | if (isset($request) && $request->id) |
||
2686 | { |
||
2687 | $page->setTitle(absences_translate('Edit the time saving account deposit')); |
||
2688 | } else { |
||
2689 | $page->setTitle(absences_translate('Request a deposit in my time saving account')); |
||
2690 | } |
||
2691 | |||
2692 | View Code Duplication | if (absences_lockedForMainteance()) |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
2693 | { |
||
2694 | $page->addError(absences_getMaintenanceMessage()); |
||
2695 | |||
2696 | } else { |
||
2697 | |||
2698 | $editor = new absences_CetDepositRequestEditor($request, isset($_REQUEST['id_user'])); |
||
2699 | $page->addItem($editor); |
||
2700 | } |
||
2701 | |||
2702 | $page->displayHtml(); |
||
2703 | } |
||
2704 | |||
2705 | |||
2706 | |||
2707 | |||
2708 | |||
2709 | |||
2710 | |||
2711 | /** |
||
2712 | * Display a menu to create vacation request, CET request, workingdays recovery request |
||
2713 | * @return string |
||
2714 | */ |
||
2715 | function absences_requestMenu() |
||
2716 | { |
||
2717 | $toolbar = absences_getToolbar(); |
||
2718 | $agent = absences_Agent::getCurrentUser(); |
||
2719 | $addon = absences_addon(); |
||
2720 | |||
2721 | $sImgPath = $GLOBALS['babInstallPath'] . 'skins/ovidentia/images/Puces/'; |
||
2722 | |||
2723 | |||
2724 | |||
2725 | $toolbar->addToolbarItem( |
||
2726 | new BAB_ToolbarItem(absences_translate('Request a vacation'), $addon->getUrl().'vacuser&idx=period', |
||
2727 | $sImgPath . 'edit_add.png', '', '', '') |
||
2728 | ); |
||
2729 | |||
2730 | View Code Duplication | if ($agent->canCreateWorkperiodRecoverRequest()) { |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
2731 | $toolbar->addToolbarItem( |
||
2732 | new BAB_ToolbarItem(absences_translate("Recovery request"), $addon->getUrl().'vacuser&idx=workperiod', |
||
2733 | $sImgPath . 'edit_add.png', '', '', '') |
||
2734 | ); |
||
2735 | } |
||
2736 | |||
2737 | try { |
||
2738 | View Code Duplication | if ($agent->Cet()->canAdd()) { |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
2739 | $toolbar->addToolbarItem( |
||
2740 | new BAB_ToolbarItem(absences_translate("Deposit on my time saving account"), $addon->getUrl().'vacuser&idx=cet', |
||
2741 | $sImgPath . 'edit_add.png', '', '', '') |
||
2742 | ); |
||
2743 | } |
||
2744 | } catch (Exception $e) { |
||
2745 | bab_debug($e->getMessage()); |
||
2746 | } |
||
2747 | return $toolbar->printTemplate(); |
||
2748 | } |
||
2749 | |||
2750 | |||
2751 | |||
2752 | function absences_personalMovements() |
||
2753 | { |
||
2754 | require_once dirname(__FILE__).'/utilit/agent.class.php'; |
||
2755 | require_once dirname(__FILE__).'/utilit/agent.ui.php'; |
||
2756 | |||
2757 | $babBody = bab_getBody(); |
||
2758 | $agent = absences_Agent::getCurrentUser(); |
||
2759 | |||
2760 | |||
2761 | $list = new absences_AgentMovementList($agent); |
||
2762 | |||
2763 | $babBody->setTitle(absences_translate('My history')); |
||
2764 | |||
2765 | $babBody->addItemMenu("lvreq", absences_translate("Requests"), absences_addon()->getUrl()."vacuser&idx=lvreq"); |
||
2766 | $babBody->addItemMenu("movement", absences_translate("History"), absences_addon()->getUrl()."vacuser&idx=movement"); |
||
2767 | |||
2768 | if (absences_getVacationOption('user_add_email')) |
||
2769 | { |
||
2770 | $babBody->addItemMenu("options", absences_translate("Options"), absences_addon()->getUrl()."vacuser&idx=options"); |
||
2771 | } |
||
2772 | |||
2773 | $babBody->babEcho($list->getHtml()); |
||
2774 | } |
||
2775 | |||
2776 | |||
2777 | |||
2778 | |||
2779 | /** |
||
2780 | * |
||
2781 | */ |
||
2782 | function absences_personalOptions() |
||
2783 | { |
||
2784 | global $babBody; |
||
2785 | |||
2786 | require_once dirname(__FILE__).'/utilit/agent.class.php'; |
||
2787 | require_once dirname(__FILE__).'/utilit/agent.ui.php'; |
||
2788 | require_once $GLOBALS['babInstallPath'].'utilit/urlincl.php'; |
||
2789 | |||
2790 | $agent = absences_Agent::getCurrentUser(); |
||
2791 | |||
2792 | |||
2793 | |||
2794 | |||
2795 | |||
2796 | $W = bab_Widgets(); |
||
2797 | $page = $W->BabPage(); |
||
2798 | |||
2799 | |||
2800 | if ($options = bab_pp('options')) |
||
2801 | { |
||
2802 | $emails = $options['emails']; |
||
2803 | $agent->setEmails($emails); |
||
2804 | |||
2805 | $babBody->addNextPageMessage(absences_translate('The emails were saved')); |
||
2806 | |||
2807 | $url = bab_url::get_request('tg', 'idx'); |
||
2808 | $url->location(); |
||
2809 | } |
||
2810 | |||
2811 | |||
2812 | |||
2813 | $page->setTitle(absences_translate('My options')); |
||
2814 | |||
2815 | $page->addItemMenu("lvreq", absences_translate("Requests"), absences_addon()->getUrl()."vacuser&idx=lvreq"); |
||
0 ignored issues
–
show
The method
Widget_BabPage::addItemMenu() has been deprecated with message: Replaced by Widget_Tabs
This method has been deprecated. The supplier of the class has supplied an explanatory message. The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead. ![]() |
|||
2816 | |||
2817 | if (absences_getVacationOption('display_personal_history')) |
||
2818 | { |
||
2819 | $page->addItemMenu("movement", absences_translate("History"), absences_addon()->getUrl()."vacuser&idx=movement"); |
||
0 ignored issues
–
show
The method
Widget_BabPage::addItemMenu() has been deprecated with message: Replaced by Widget_Tabs
This method has been deprecated. The supplier of the class has supplied an explanatory message. The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead. ![]() |
|||
2820 | } |
||
2821 | |||
2822 | $page->addItemMenu("options", absences_translate("Options"), absences_addon()->getUrl()."vacuser&idx=options"); |
||
0 ignored issues
–
show
The method
Widget_BabPage::addItemMenu() has been deprecated with message: Replaced by Widget_Tabs
This method has been deprecated. The supplier of the class has supplied an explanatory message. The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead. ![]() |
|||
2823 | |||
2824 | |||
2825 | $editor = new absences_PersonalOptionsEditor; |
||
2826 | $page->addItem($editor); |
||
2827 | |||
2828 | |||
2829 | $page->displayHtml(); |
||
2830 | } |
||
2831 | |||
2832 | |||
2833 | |||
2834 | |||
2835 | |||
2836 | |||
2837 | function absences_personalRights_addRightInTable(Widget_TableView $table, $row, absences_Right $right, absences_AgentRight $agentRight) |
||
2838 | { |
||
2839 | $W = bab_Widgets(); |
||
2840 | $type = $right->getType(); |
||
2841 | |||
2842 | $icon = $W->Frame(); |
||
2843 | $icon->setCanvasOptions($icon->Options()->width(10,'px')->height(10,'px')->backgroundColor('#'.$type->color)); |
||
2844 | $icon->setTitle($type->name); |
||
2845 | |||
2846 | $col = 0; |
||
2847 | |||
2848 | $table->addItem($W->HBoxItems($icon,$W->Label($right->description)) |
||
2849 | ->setHorizontalSpacing(.8,'em')->setVerticalAlign('middle') , $row, $col++); |
||
2850 | $table->addItem($W->Label(absences_quantity($agentRight->getQuantity(), $right->quantity_unit)) , $row, $col++); |
||
2851 | $table->addItem($W->Label(absences_quantity($agentRight->getConfirmedQuantity(), $right->quantity_unit)) , $row, $col++); |
||
2852 | $table->addItem($W->Label(absences_quantity($agentRight->getWaitingQuantity(), $right->quantity_unit)) , $row, $col++); |
||
2853 | $balance = $agentRight->getQuantity() - $agentRight->getConfirmedQuantity() - $agentRight->getWaitingQuantity(); |
||
2854 | $table->addItem($W->Label(absences_quantity($balance, $right->quantity_unit)) , $row, $col++); |
||
2855 | $previsional = $agentRight->getPrevisionalQuantity(); |
||
2856 | $table->addItem($W->Label(absences_quantity($previsional, $right->quantity_unit)) , $row, $col++); |
||
2857 | $table->addItem($W->Label(absences_quantity($balance - $previsional, $right->quantity_unit)) , $row, $col++); |
||
2858 | $table->addItem($W->Label(bab_shortDate(bab_mktime($right->date_begin), false)) , $row, $col++); |
||
2859 | $table->addItem($W->Label(bab_shortDate(bab_mktime($right->date_end), false)) , $row, $col++); |
||
2860 | } |
||
2861 | |||
2862 | |||
2863 | |||
2864 | function absences_personalRights() |
||
2865 | { |
||
2866 | $W = bab_Widgets(); |
||
2867 | $agent = absences_Agent::getCurrentUser(); |
||
2868 | |||
2869 | if (!$agent->exists()) |
||
2870 | { |
||
2871 | return; |
||
2872 | } |
||
2873 | |||
2874 | $page = $W->BabPage()->setEmbedded(false); |
||
2875 | $page->setTitle(absences_translate('My vacations rights')); |
||
2876 | |||
2877 | $table = $W->BabTableView(); |
||
2878 | |||
2879 | $row = 0; |
||
2880 | $col = 0; |
||
2881 | $table->addHeadRow(0); |
||
2882 | |||
2883 | $table->addItem($W->Label(absences_translate('Description')) , $row, $col++); |
||
2884 | $table->addItem($W->Label(absences_translate('Rights')) , $row, $col++); |
||
2885 | $table->addItem($W->Label(absences_translate('Consumed')) , $row, $col++); |
||
2886 | $table->addItem($W->Label(absences_translate('Waiting')) , $row, $col++); |
||
2887 | $table->addItem($W->Label(absences_translate('Balance')) , $row, $col++); |
||
2888 | $table->addItem($W->Label(absences_translate('Previsional')) , $row, $col++); |
||
2889 | $table->addItem($W->Label(absences_translate('Previ. Bal.')) , $row, $col++); |
||
2890 | $table->addItem($W->Label(absences_translate('Begin date')) , $row, $col++); |
||
2891 | $table->addItem($W->Label(absences_translate('End date')) , $row, $col++); |
||
2892 | $row++; |
||
2893 | |||
2894 | $I = $agent->getAgentRightUserIterator(); |
||
2895 | |||
2896 | $rows = array(); |
||
2897 | |||
2898 | foreach($I as $agentRight) |
||
2899 | { |
||
2900 | |||
2901 | $right = $agentRight->getRight(); |
||
2902 | $rgroup = $right->getRgroupLabel(); |
||
2903 | |||
2904 | |||
2905 | if ($rgroup) |
||
2906 | { |
||
2907 | if (!isset($rows['rgroup'.$right->id_rgroup])) { |
||
2908 | $rows['rgroup'.$right->id_rgroup] = array( |
||
2909 | 'sortkey' => $right->getRgroupSortkey(), |
||
2910 | 'rgroup' => array() |
||
2911 | ); |
||
2912 | } |
||
2913 | |||
2914 | $rows['rgroup'.$right->id_rgroup]['rgroup'][] = $agentRight; |
||
2915 | continue; |
||
2916 | } |
||
2917 | |||
2918 | $rows['right'.$right->id] = array( |
||
2919 | 'sortkey' => $right->sortkey, |
||
2920 | 'agentRight' => $agentRight |
||
2921 | ); |
||
2922 | } |
||
2923 | |||
2924 | bab_Sort::asort($rows, 'sortkey'); |
||
2925 | |||
2926 | foreach($rows as $arr_row) { |
||
2927 | |||
2928 | if (isset($arr_row['rgroup'])) { |
||
2929 | $rgroup = reset($arr_row['rgroup'])->getRight()->getRgroupLabel(); |
||
2930 | $table->addItem($W->Label($rgroup)->addClass('widget-strong'), $row, 0, -1, 9); |
||
2931 | $row++; |
||
2932 | |||
2933 | foreach($arr_row['rgroup'] as $agentRight) { |
||
2934 | $right = $agentRight->getRight(); |
||
2935 | $right->description = bab_nbsp().bab_nbsp().bab_nbsp().bab_nbsp().$right->description; |
||
2936 | absences_personalRights_addRightInTable($table, $row, $right, $agentRight); |
||
2937 | $row++; |
||
2938 | } |
||
2939 | |||
2940 | continue; |
||
2941 | } |
||
2942 | |||
2943 | |||
2944 | $agentRight = $arr_row['agentRight']; |
||
2945 | $right = $agentRight->getRight(); |
||
2946 | |||
2947 | absences_personalRights_addRightInTable($table, $row, $right, $agentRight); |
||
2948 | $row++; |
||
2949 | } |
||
2950 | |||
2951 | |||
2952 | |||
2953 | |||
2954 | $page->addItem($table); |
||
2955 | $print = $W->Link($W->Icon(absences_translate('Print'), Func_Icons::ACTIONS_DOCUMENT_PRINT), 'javascript:window.print()'); |
||
2956 | $page->addItem($W->Frame()->addClass(Func_Icons::ICON_LEFT_16)->addClass('widget-align-center')->addItem($print)); |
||
2957 | |||
2958 | $page->displayHtml(); |
||
2959 | } |
||
2960 | |||
2961 | |||
2962 | |||
2963 | |||
2964 | |||
2965 | |||
2966 | |||
2967 | |||
2968 | |||
2969 | /** |
||
2970 | * @param string $date |
||
2971 | * @return array |
||
2972 | */ |
||
2973 | function absences_getDayWorkingHours($date) |
||
2974 | { |
||
2975 | require_once $GLOBALS['babInstallPath'].'utilit/dateTime.php'; |
||
2976 | |||
2977 | $id_user = bab_gp('id_user'); |
||
2978 | $agent = absences_Agent::getFromIdUser(bab_getUserId()); |
||
2979 | |||
2980 | if ($id_user != $agent->getIdUser() && !absences_IsUserUnderSuperior($id_user) && !$agent->isManager()) { |
||
2981 | throw new Exception('Access denied'); |
||
2982 | } |
||
2983 | |||
2984 | $wh = bab_functionality::get('WorkingHours'); |
||
2985 | /* @var $wh Func_WorkingHours */ |
||
2986 | |||
2987 | $begin = BAB_DateTime::fromIsoDateTime(bab_gp('date').' 00:00:00'); |
||
2988 | $end = clone $begin; |
||
2989 | $end->add(1, BAB_DATETIME_DAY); |
||
2990 | |||
2991 | return $wh->selectPeriods($id_user, $begin, $end); |
||
2992 | } |
||
2993 | |||
2994 | |||
2995 | |||
2996 | |||
2997 | |||
2998 | |||
2999 | |||
3000 | |||
3001 | /** |
||
3002 | * Create or edit a request period |
||
3003 | * first step of a vacation request |
||
3004 | */ |
||
3005 | function absences_requestPeriod() |
||
3006 | { |
||
3007 | include_once dirname(__FILE__)."/utilit/planningincl.php"; |
||
3008 | global $babBody; |
||
3009 | $agent = absences_Agent::getCurrentUser(); |
||
3010 | |||
3011 | |||
3012 | |||
3013 | |||
3014 | |||
3015 | |||
3016 | if (!empty($_REQUEST['id'])) |
||
3017 | { |
||
3018 | // request modification |
||
3019 | |||
3020 | |||
3021 | View Code Duplication | if (bab_rp('rfrom')) |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
3022 | { |
||
3023 | if ($agent->isManager() && !bab_rp('ide')) |
||
3024 | { |
||
3025 | // request modification from a manager |
||
3026 | |||
3027 | $babBody->addItemMenu("menu", absences_translate("Management"), absences_addon()->getUrl()."vacadm&idx=menu"); |
||
3028 | $babBody->addItemMenu("lper", absences_translate("Requests"), absences_addon()->getUrl()."vacadmb&idx=lreq"); |
||
3029 | $babBody->addItemMenu("period", absences_translate("Edit"), absences_addon()->getUrl()."vacuser&idx=period"); |
||
3030 | } |
||
3031 | |||
3032 | if ($agent->isEntityManager() && bab_rp('ide')) |
||
3033 | { |
||
3034 | // request modification from a delegated manager |
||
3035 | |||
3036 | $babBody->addItemMenu("entities", absences_translate("Delegated management"), absences_addon()->getUrl()."vacchart&idx=entities"); |
||
3037 | $babBody->addItemMenu("entity_members", absences_translate("Entity requests"), absences_addon()->getUrl()."vacchart&idx=entity_requests&ide=".bab_rp('ide')); |
||
3038 | $babBody->addItemMenu("period", absences_translate("Edit"), absences_addon()->getUrl()."vacuser&idx=period&ide=".bab_rp('ide')); |
||
3039 | } |
||
3040 | |||
3041 | |||
3042 | } else { |
||
3043 | |||
3044 | // request modification from agent |
||
3045 | |||
3046 | $babBody->addItemMenu("lvreq", absences_translate("Requests"), absences_addon()->getUrl()."vacuser&idx=lvreq"); |
||
3047 | $babBody->addItemMenu("period", absences_translate("Edit"), absences_addon()->getUrl()."vacuser&idx=period&id=".bab_rp('id')); |
||
3048 | |||
3049 | if( $agent->isManager()) |
||
3050 | { |
||
3051 | $babBody->addItemMenu("list", absences_translate("Management"), absences_addon()->getUrl()."vacadm"); |
||
3052 | } |
||
3053 | if ($agent->isEntityManager()) |
||
3054 | { |
||
3055 | $babBody->addItemMenu("entities", absences_translate("Delegate management"), absences_addon()->getUrl()."vacchart&idx=entities"); |
||
3056 | } |
||
3057 | |||
3058 | |||
3059 | } |
||
3060 | |||
3061 | |||
3062 | $babBody->setTitle(absences_translate("Edit vacation request")); |
||
3063 | |||
3064 | if (absences_lockedForMainteance()) |
||
3065 | { |
||
3066 | $babBody->addError(absences_getMaintenanceMessage()); |
||
3067 | return false; |
||
3068 | } |
||
3069 | |||
3070 | |||
3071 | $id_user = bab_isEntryEditable($_REQUEST['id']); |
||
3072 | if (!$id_user) |
||
3073 | { |
||
3074 | $babBody->addError(absences_translate("Access denied, this request is not modifiable")); |
||
3075 | return false; |
||
3076 | } |
||
3077 | View Code Duplication | else |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
3078 | { |
||
3079 | absences_viewVacationCalendar(array($id_user), true, true, bab_rp('nbmonth', 12), false); |
||
3080 | period($id_user, $_REQUEST['id']); |
||
3081 | return true; |
||
3082 | } |
||
3083 | } |
||
3084 | else |
||
3085 | { |
||
3086 | |||
3087 | // request creation |
||
3088 | |||
3089 | if (isset($_GET['idu']) && is_numeric($_GET['idu'])) { |
||
3090 | $id_user = $_GET['idu']; // deprecated? |
||
3091 | } |
||
3092 | View Code Duplication | else { |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
3093 | $id_user = bab_rp('id_user', bab_getUserId()); |
||
3094 | |||
3095 | if (bab_rp('rfrom')) |
||
3096 | { |
||
3097 | |||
3098 | if ($agent->isManager() && !bab_rp('ide')) |
||
3099 | { |
||
3100 | // request creation from a manager |
||
3101 | |||
3102 | $babBody->addItemMenu("menu", absences_translate("Management"), absences_addon()->getUrl()."vacadm&idx=menu"); |
||
3103 | $babBody->addItemMenu("lper", absences_translate("Personnel"), absences_addon()->getUrl()."vacadm&idx=lper"); |
||
3104 | $babBody->addItemMenu("period", absences_translate("Request"), absences_addon()->getUrl()."vacuser&idx=period"); |
||
3105 | } |
||
3106 | |||
3107 | if ($agent->isEntityManager() && bab_rp('ide')) |
||
3108 | { |
||
3109 | // request creation from a delegated manager |
||
3110 | |||
3111 | $babBody->addItemMenu("entities", absences_translate("Delegated management"), absences_addon()->getUrl()."vacchart&idx=entities"); |
||
3112 | $babBody->addItemMenu("entity_members", absences_translate("Entity members"), absences_addon()->getUrl()."vacchart&idx=entity_members&ide=".bab_rp('ide')); |
||
3113 | $babBody->addItemMenu("period", absences_translate("Request"), absences_addon()->getUrl()."vacuser&idx=period"); |
||
3114 | } |
||
3115 | |||
3116 | } else { |
||
3117 | |||
3118 | // request creation from agent |
||
3119 | |||
3120 | $babBody->addItemMenu("lvreq", absences_translate("Requests"), absences_addon()->getUrl()."vacuser&idx=lvreq"); |
||
3121 | $babBody->addItemMenu("period", absences_translate("Request"), absences_addon()->getUrl()."vacuser&idx=period"); |
||
3122 | |||
3123 | |||
3124 | if( $agent->isManager()) |
||
3125 | { |
||
3126 | $babBody->addItemMenu("list", absences_translate("Management"), absences_addon()->getUrl()."vacadm"); |
||
3127 | } |
||
3128 | if ($agent->isEntityManager()) |
||
3129 | { |
||
3130 | $babBody->addItemMenu("entities", absences_translate("Delegate management"), absences_addon()->getUrl()."vacchart&idx=entities"); |
||
3131 | } |
||
3132 | |||
3133 | } |
||
3134 | } |
||
3135 | |||
3136 | |||
3137 | if ($id_user == bab_getUserId()) |
||
3138 | { |
||
3139 | $babBody->setTitle(absences_translate("Request vacation")); |
||
3140 | } else { |
||
3141 | $babBody->setTitle(absences_translate("Request vacation for another user")); // rfrom=1 |
||
3142 | } |
||
3143 | |||
3144 | if (absences_lockedForMainteance()) |
||
3145 | { |
||
3146 | $babBody->addError(absences_getMaintenanceMessage()); |
||
3147 | return false; |
||
3148 | } |
||
3149 | |||
3150 | |||
3151 | View Code Duplication | if (bab_vacRequestCreate($id_user)) { |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
3152 | absences_viewVacationCalendar(array($id_user), true, true, bab_rp('nbmonth', 12), false); |
||
3153 | period($id_user); |
||
3154 | return true; |
||
3155 | } |
||
3156 | } |
||
3157 | |||
3158 | $babBody->addError(absences_translate("Access denied, no access to create a request")); |
||
3159 | return false; |
||
3160 | } |
||
3161 | |||
3162 | |||
3163 | |||
3164 | |||
3165 | |||
3166 | /* main */ |
||
3167 | bab_requireCredential(); |
||
3168 | $agent = absences_Agent::getCurrentUser(); |
||
3169 | $idx = bab_rp('idx', "lvreq"); |
||
3170 | |||
3171 | |||
3172 | View Code Duplication | if(!$agent->isInPersonnel() && !$agent->isEntityManager() && !$agent->isManager()) |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
3173 | { |
||
3174 | $babBody->msgerror = absences_translate("Access denied"); |
||
3175 | return; |
||
3176 | } |
||
3177 | |||
3178 | |||
3179 | |||
3180 | if (isset($_POST['action'])) |
||
3181 | { |
||
3182 | switch ($_POST['action']) |
||
3183 | { |
||
3184 | case 'period': |
||
3185 | if (!test_period()) { |
||
3186 | $idx = 'period'; |
||
3187 | } |
||
3188 | break; |
||
3189 | |||
3190 | case 'vacation_request': |
||
3191 | |||
3192 | $id = bab_pp('id'); |
||
3193 | |||
3194 | if (bab_isEntryEditable($id)) |
||
3195 | { |
||
3196 | if(!absences_saveVacation::save()) { |
||
3197 | $idx = "vunew"; |
||
3198 | } |
||
3199 | elseif ($_POST['id_user'] == bab_getUserId()) |
||
3200 | { |
||
3201 | // demande pour moi meme, retour a la liste de mes demandes |
||
3202 | header("Location: ". absences_addon()->getUrl()."vacuser&idx=lvreq"); |
||
3203 | exit; |
||
3204 | } |
||
3205 | View Code Duplication | elseif ($id) |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
3206 | { |
||
3207 | // modification d'une demande, retour liste des demandes |
||
3208 | if (bab_pp('ide')) { |
||
3209 | header("Location: ". absences_addon()->getUrl().'vacchart&idx=entity_requests&ide='.bab_pp('ide')); |
||
3210 | exit; |
||
3211 | } |
||
3212 | |||
3213 | header("Location: ". absences_addon()->getUrl()."vacadmb&idx=lreq"); |
||
3214 | exit; |
||
3215 | } |
||
3216 | View Code Duplication | else |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
3217 | { |
||
3218 | // creation d'une demande, retour a la liste des agents |
||
3219 | if (bab_pp('ide')) { |
||
3220 | header("Location: ". absences_addon()->getUrl().'vacchart&idx=entity_members&ide='.bab_pp('ide')); |
||
3221 | exit; |
||
3222 | } |
||
3223 | |||
3224 | header("Location: ". absences_addon()->getUrl()."vacadm&idx=lper"); |
||
3225 | exit; |
||
3226 | } |
||
3227 | } |
||
3228 | break; |
||
3229 | |||
3230 | case 'delete_request': |
||
3231 | |||
3232 | if ($id_entry = bab_pp('id_entry')) |
||
3233 | { |
||
3234 | $id_user = bab_isEntryEditable($id_entry); |
||
3235 | if ($id_user || $agent->isManager()) |
||
3236 | { |
||
3237 | if (absences_delete_request(bab_pp('id_entry'), bab_pp('folder', 0), (int) bab_pp('rfrom', 0))) |
||
3238 | { |
||
3239 | header("Location: ". bab_pp('url')); |
||
3240 | exit; |
||
3241 | } else { |
||
3242 | $babBody->addError(absences_translate('Failed to delete the vacation request')); |
||
3243 | } |
||
3244 | } |
||
3245 | } |
||
3246 | |||
3247 | |||
3248 | View Code Duplication | if ($id_deposit = bab_pp('id_deposit')) |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
3249 | { |
||
3250 | require_once dirname(__FILE__).'/utilit/cet_deposit_request.class.php'; |
||
3251 | $deposit = absences_CetDepositRequest::getById($id_deposit); |
||
3252 | if ($deposit->canDelete()) |
||
3253 | { |
||
3254 | $deposit->delete(); |
||
3255 | $url = new bab_url(bab_pp('url')); |
||
3256 | $url->location(); |
||
3257 | } |
||
3258 | } |
||
3259 | |||
3260 | |||
3261 | View Code Duplication | if ($id_recovery = bab_pp('id_recovery')) |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
3262 | { |
||
3263 | require_once dirname(__FILE__).'/utilit/workperiod_recover_request.class.php'; |
||
3264 | $recovery = absences_WorkperiodRecoverRequest::getById($id_recovery); |
||
3265 | if ($recovery->canDelete()) |
||
3266 | { |
||
3267 | $recovery->delete(); |
||
3268 | $url = new bab_url(bab_pp('url')); |
||
3269 | $url->location(); |
||
3270 | } |
||
3271 | } |
||
3272 | |||
3273 | break; |
||
3274 | } |
||
3275 | } |
||
3276 | |||
3277 | |||
3278 | |||
3279 | |||
3280 | |||
3281 | switch($idx) |
||
3282 | { |
||
3283 | |||
3284 | case "unload": |
||
3285 | vedUnload(); |
||
3286 | exit; |
||
3287 | break; |
||
3288 | |||
3289 | View Code Duplication | case "morve": |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
3290 | require_once dirname(__FILE__).'/utilit/request.ui.php'; |
||
3291 | $babBody->addItemMenu("lvreq", absences_translate("Requests"), absences_addon()->getUrl()."vacuser&idx=lvreq"); |
||
3292 | $babBody->addItemMenu("morve", absences_translate("View request"), absences_addon()->getUrl()."vacuser&idx=lvreq&id=".bab_rp('id')); |
||
3293 | absences_viewVacationRequestDetail(bab_rp('id')); |
||
3294 | break; |
||
3295 | |||
3296 | View Code Duplication | case 'view_cet_deposit': |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
3297 | require_once dirname(__FILE__).'/utilit/request.ui.php'; |
||
3298 | $babBody->addItemMenu("lvreq", absences_translate("Requests"), absences_addon()->getUrl()."vacuser&idx=lvreq"); |
||
3299 | $babBody->addItemMenu("view_cet_deposit", absences_translate("View request"), absences_addon()->getUrl()."vacuser&idx=view_cet_deposit&id=".bab_rp('id')); |
||
3300 | absences_viewCetDepositDetail(bab_rp('id')); |
||
3301 | break; |
||
3302 | |||
3303 | View Code Duplication | case 'view_wp_recovery': |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
3304 | require_once dirname(__FILE__).'/utilit/request.ui.php'; |
||
3305 | $babBody->addItemMenu("lvreq", absences_translate("Requests"), absences_addon()->getUrl()."vacuser&idx=lvreq"); |
||
3306 | $babBody->addItemMenu("view_wp_recovery", absences_translate("View request"), absences_addon()->getUrl()."vacuser&idx=view_wp_recovery&id=".bab_rp('id')); |
||
3307 | absences_viewWpRecoveryDetail(bab_rp('id')); |
||
3308 | break; |
||
3309 | |||
3310 | case "period": |
||
3311 | // demande, premiere etape |
||
3312 | absences_requestPeriod(); |
||
3313 | break; |
||
3314 | |||
3315 | |||
3316 | case 'recurring': |
||
3317 | if( bab_isEntryEditable($_POST['id']) ) |
||
3318 | { |
||
3319 | absences_recurringVacation(absences_PostedDate::begin(), absences_PostedDate::end(), $_POST['id']); |
||
3320 | |||
3321 | $babBody->addItemMenu("recurring", absences_translate("Request"), absences_addon()->getUrl()."vacuser&idx=vunew"); |
||
3322 | $babBody->addItemMenu("lvreq", absences_translate("Requests"), absences_addon()->getUrl()."vacuser&idx=lvreq"); |
||
3323 | } |
||
3324 | if($agent->isManager()) |
||
3325 | $babBody->addItemMenu("list", absences_translate("Management"), absences_addon()->getUrl()."vacadm"); |
||
3326 | if ($agent->isEntityManager()) |
||
3327 | $babBody->addItemMenu("entities", absences_translate("Delegate management"), absences_addon()->getUrl()."vacchart&idx=entities"); |
||
3328 | break; |
||
3329 | |||
3330 | case "vunew": |
||
3331 | // demande, deuxieme etape |
||
3332 | requestVacation(absences_PostedDate::begin(), absences_PostedDate::end(), $_POST['id'], bab_pp('rfrom'), bab_pp('ide')); |
||
3333 | break; |
||
3334 | |||
3335 | case 'delete': |
||
3336 | |||
3337 | $babBody->addItemMenu("lvreq", absences_translate("Requests"), absences_addon()->getUrl()."vacuser&idx=lvreq"); |
||
3338 | |||
3339 | if ($id_entry = bab_rp('id_entry')) |
||
3340 | { |
||
3341 | $babBody->addItemMenu("delete", absences_translate("Delete request"), absences_addon()->getUrl()."vacuser&idx=delete&id_entry=".$id_entry); |
||
3342 | absences_deleteVacationRequest($id_entry); |
||
3343 | } |
||
3344 | |||
3345 | if ($id_cetdeposit = bab_rp('id_cetdeposit')) |
||
3346 | { |
||
3347 | $babBody->addItemMenu("delete", absences_translate("Delete request"), absences_addon()->getUrl()."vacuser&idx=delete&id_cetdeposit=".$id_cetdeposit); |
||
3348 | absences_deleteCetDepositRequest($id_cetdeposit); |
||
3349 | } |
||
3350 | |||
3351 | if ($id_recovery = bab_rp('id_recovery')) |
||
3352 | { |
||
3353 | $babBody->addItemMenu("delete", absences_translate("Delete request"), absences_addon()->getUrl()."vacuser&idx=delete&id_recovery=".$id_recovery); |
||
3354 | absences_deleteWpRecoveryRequest($id_recovery); |
||
3355 | } |
||
3356 | |||
3357 | break; |
||
3358 | |||
3359 | case 'viewrights': |
||
3360 | if (absences_IsUserUnderSuperior($_GET['id_user']) || $agent->isManager()) { |
||
3361 | $babBody->setTitle(absences_translate("Balance").' : '.bab_getUserName($_GET['id_user'])); |
||
3362 | |||
3363 | if (isset($_GET['ide'])) { |
||
3364 | $babBody->addItemMenu("entity_members", absences_translate("Entity members"), absences_addon()->getUrl()."vacchart&idx=entity_members&ide=".$_GET['ide']); |
||
3365 | } |
||
3366 | |||
3367 | $babBody->addItemMenu("viewrights", absences_translate("Balance"), absences_addon()->getUrl()."vacuser&idx=lvreq"); |
||
3368 | viewrights($_GET['id_user']); |
||
3369 | } else { |
||
3370 | $babBody->msgerror = absences_translate("Access denied"); |
||
3371 | } |
||
3372 | break; |
||
3373 | |||
3374 | |||
3375 | case 'subprev': |
||
3376 | $id_entry = (int) bab_rp('id_entry'); |
||
3377 | if ($id_entry && bab_isEntryEditable($id_entry)) |
||
3378 | { |
||
3379 | absences_saveVacation::submitRequest($id_entry); |
||
3380 | absences_saveVacation::gotoList(); |
||
3381 | } else { |
||
3382 | $babBody->msgerror = absences_translate("Access denied to request modification"); |
||
3383 | } |
||
3384 | |||
3385 | break; |
||
3386 | |||
3387 | View Code Duplication | case 'workperiod': |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
3388 | absences_createWorkperiodRecoverRequest(); |
||
3389 | |||
3390 | |||
3391 | if (!bab_rp('id_user')) { |
||
3392 | $babBody->addItemMenu("lvreq", absences_translate("Requests"), absences_addon()->getUrl()."vacuser&idx=lvreq"); |
||
3393 | } |
||
3394 | |||
3395 | $babBody->addItemMenu("workperiod", absences_translate("Working day"), absences_addon()->getUrl()."vacuser&idx=workperiod"); |
||
3396 | |||
3397 | if( $agent->isManager()) |
||
3398 | $babBody->addItemMenu("list", absences_translate("Management"), absences_addon()->getUrl()."vacadm"); |
||
3399 | |||
3400 | if ($agent->isEntityManager()) |
||
3401 | $babBody->addItemMenu("entities", absences_translate("Delegate management"), absences_addon()->getUrl()."vacchart&idx=entities"); |
||
3402 | break; |
||
3403 | |||
3404 | View Code Duplication | case 'cet': |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
3405 | absences_createCetDepositRequest(); |
||
3406 | |||
3407 | if (!bab_rp('id_user')) { |
||
3408 | $babBody->addItemMenu("lvreq", absences_translate("Requests"), absences_addon()->getUrl()."vacuser&idx=lvreq"); |
||
3409 | } |
||
3410 | |||
3411 | $babBody->addItemMenu("cet", absences_translate("Time saving account"), absences_addon()->getUrl()."vacuser&idx=cet"); |
||
3412 | |||
3413 | if( $agent->isManager()) |
||
3414 | $babBody->addItemMenu("list", absences_translate("Management"), absences_addon()->getUrl()."vacadm"); |
||
3415 | |||
3416 | if ($agent->isEntityManager()) |
||
3417 | $babBody->addItemMenu("entities", absences_translate("Delegate management"), absences_addon()->getUrl()."vacchart&idx=entities"); |
||
3418 | break; |
||
3419 | |||
3420 | case 'movement': |
||
3421 | |||
3422 | absences_personalMovements(); |
||
3423 | break; |
||
3424 | |||
3425 | case 'options': |
||
3426 | absences_personalOptions(); |
||
3427 | break; |
||
3428 | |||
3429 | case 'myrights': |
||
3430 | absences_personalRights(); |
||
3431 | die(); |
||
3432 | break; |
||
3433 | |||
3434 | |||
3435 | case 'workinghours': |
||
3436 | require_once $GLOBALS['babInstallPath'].'utilit/json.php'; |
||
3437 | echo bab_json_encode(absences_getDayWorkingHours(bab_gp('date'))); |
||
3438 | die(); |
||
3439 | |||
3440 | case 'clear': |
||
3441 | $babDB->db_query("TRUNCATE ".ABSENCES_CALENDAR_TBL); |
||
3442 | |||
3443 | case "lvreq": |
||
3444 | default: |
||
3445 | $babBody->title = absences_translate("My already filed requests"); |
||
3446 | if( $agent->isInPersonnel() ) |
||
3447 | { |
||
3448 | $babBody->babEcho(absences_requestMenu()); |
||
3449 | absences_listVacationRequests(bab_getUserId(), false); |
||
3450 | $babBody->addItemMenu("lvreq", absences_translate("Requests"), absences_addon()->getUrl()."vacuser&idx=lvreq"); |
||
3451 | if (absences_getVacationOption('display_personal_history')) |
||
3452 | { |
||
3453 | $babBody->addItemMenu("movement", absences_translate("History"), absences_addon()->getUrl()."vacuser&idx=movement"); |
||
3454 | } |
||
3455 | |||
3456 | if (absences_getVacationOption('user_add_email')) |
||
3457 | { |
||
3458 | $babBody->addItemMenu("options", absences_translate("Options"), absences_addon()->getUrl()."vacuser&idx=options"); |
||
3459 | } |
||
3460 | |||
3461 | } else { |
||
3462 | |||
3463 | View Code Duplication | if ($agent->isManager() && 'lvreq' === $idx) |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
3464 | { |
||
3465 | // manager only |
||
3466 | $url = new bab_url; |
||
3467 | $url->tg = 'addon/absences/vacadm'; |
||
3468 | $url->location(); |
||
3469 | } |
||
3470 | |||
3471 | View Code Duplication | if ($agent->isEntityManager() && 'lvreq' === $idx) |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
3472 | { |
||
3473 | // delegated manager only |
||
3474 | $url = new bab_url; |
||
3475 | $url->tg = 'addon/absences/vacchart'; |
||
3476 | $url->location(); |
||
3477 | } |
||
3478 | } |
||
3479 | |||
3480 | if( $agent->isManager()) |
||
3481 | { |
||
3482 | $babBody->addItemMenu("list", absences_translate("Management"), absences_addon()->getUrl()."vacadm"); |
||
3483 | } |
||
3484 | |||
3485 | if ($agent->isEntityManager()) |
||
3486 | { |
||
3487 | $babBody->addItemMenu("entities", absences_translate("Delegate management"), absences_addon()->getUrl()."vacchart&idx=entities"); |
||
3488 | } |
||
3489 | break; |
||
3490 | } |
||
3491 | |||
3492 | if ( absences_isPlanningAccessValid()) |
||
3493 | { |
||
3494 | $babBody->addItemMenu("planning", absences_translate("Plannings"), absences_addon()->getUrl()."planning&idx=userlist"); |
||
3495 | } |
||
3496 | |||
3497 | |||
3498 | |||
3499 | |||
3500 | $babBody->setCurrentItemMenu($idx); |
||
3501 | bab_siteMap::setPosition('absences','User'); |
||
3502 | |||
3503 |
This check looks for classes that have been defined more than once.
If you can, we would recommend to use standard object-oriented programming techniques. For example, to avoid multiple types, it might make sense to create a common interface, and then multiple, different implementations for that interface.
This also has the side-effect of providing you with better IDE auto-completion, static analysis and also better OPCode caching from PHP.