128 $location = $obj->location;
131 if (empty($location) && !empty($obj->address)) {
132 $location = trim(str_replace(array(
"\r",
"\t",
"\n"),
' ', $obj->address));
133 $location = trim($location.
', '.$obj->zip);
134 $location = trim($location.
' '.$obj->town);
135 $location = trim($location.
', '.$obj->country_label);
139 if (empty($location) && !empty($obj->soc_address)) {
140 $location = trim(str_replace(array(
"\r",
"\t",
"\n"),
' ', $obj->soc_address));
141 $location = trim($location.
', '.$obj->soc_zip);
142 $location = trim($location.
' '.$obj->soc_town);
143 $location = trim($location.
', '.$obj->soc_country_label);
155 if ($obj->percent == -1 && trim($obj->datep) !=
'') {
161 $timezone = date_default_timezone_get();
163 $caldata =
"BEGIN:VCALENDAR\n";
164 $caldata .=
"VERSION:2.0\n";
165 $caldata .=
"METHOD:PUBLISH\n";
166 $caldata .=
"PRODID:-//Dolibarr CDav//FR\n";
167 $caldata .=
"BEGIN:".$type.
"\n";
168 $caldata .=
"CREATED:".gmdate(
'Ymd\THis', strtotime($obj->datec)).
"Z\n";
169 $caldata .=
"LAST-MODIFIED:".gmdate(
'Ymd\THis', strtotime($obj->lastupd)).
"Z\n";
170 $caldata .=
"DTSTAMP:".gmdate(
'Ymd\THis', strtotime($obj->lastupd)).
"Z\n";
171 if ($obj->sourceuid ==
'') {
172 $caldata .=
"UID:".$obj->id.
'-ev-'.$calid.
'-cal-'.constant(
'CDAV_URI_KEY').
"\n";
174 $caldata .=
"UID:".$obj->sourceuid.
"\n";
176 $caldata .=
"SUMMARY:".$obj->label.
"\n";
177 $caldata .=
"LOCATION:".$location.
"\n";
178 $caldata .=
"PRIORITY:".$obj->priority.
"\n";
179 if ($obj->fulldayevent) {
180 $caldata .=
"DTSTART;VALUE=DATE:".date(
'Ymd', strtotime($obj->datep)).
"\n";
181 if ($type ==
'VEVENT') {
182 if (trim($obj->datep2) !=
'') {
183 $caldata .=
"DTEND;VALUE=DATE:".date(
'Ymd', strtotime($obj->datep2) + 1).
"\n";
185 $caldata .=
"DTEND;VALUE=DATE:".date(
'Ymd', strtotime($obj->datep) + (25 * 3600)).
"\n";
187 } elseif (trim($obj->datep2) !=
'') {
188 $caldata .=
"DUE;VALUE=DATE:".date(
'Ymd', strtotime($obj->datep2) + 1).
"\n";
191 $caldata .=
"DTSTART;TZID=".$timezone.
":".strtr($obj->datep, array(
" " =>
"T",
":" =>
"",
"-" =>
"")).
"\n";
192 if ($type ==
'VEVENT') {
193 if (trim($obj->datep2) !=
'') {
194 $caldata .=
"DTEND;TZID=".$timezone.
":".strtr($obj->datep2, array(
" " =>
"T",
":" =>
"",
"-" =>
"")).
"\n";
196 $caldata .=
"DTEND;TZID=".$timezone.
":".strtr($obj->datep, array(
" " =>
"T",
":" =>
"",
"-" =>
"")).
"\n";
198 } elseif (trim($obj->datep2) !=
'') {
199 $caldata .=
"DUE;TZID=".$timezone.
":".strtr($obj->datep2, array(
" " =>
"T",
":" =>
"",
"-" =>
"")).
"\n";
202 $caldata .=
"CLASS:PUBLIC\n";
203 if ($obj->transparency == 1) {
204 $caldata .=
"TRANSP:TRANSPARENT\n";
206 $caldata .=
"TRANSP:OPAQUE\n";
209 if ($type ==
'VEVENT') {
210 $caldata .=
"STATUS:CONFIRMED\n";
211 } elseif ($obj->percent == 0) {
212 $caldata .=
"STATUS:NEEDS-ACTION\n";
213 } elseif ($obj->percent == 100) {
214 $caldata .=
"STATUS:COMPLETED\n";
216 $caldata .=
"STATUS:IN-PROCESS\n";
217 $caldata .=
"PERCENT-COMPLETE:".$obj->percent.
"\n";
220 $caldata .=
"DESCRIPTION:";
221 $caldata .= strtr($obj->note, array(
"\n" =>
"\\n",
"\r" =>
""));
222 if (!empty($obj->soc_nom)) {
223 $caldata .=
"\\n*DOLIBARR-SOC: ".$obj->soc_nom;
225 if (!empty($obj->soc_phone)) {
226 $caldata .=
"\\n*DOLIBARR-SOC-TEL: ".$obj->soc_phone;
228 if (!empty($obj->firstname) || !empty($obj->lastname)) {
229 $caldata .=
"\\n*DOLIBARR-CTC: ".trim($obj->firstname.
' '.$obj->lastname);
231 if (!empty($obj->phone) || !empty($obj->phone_perso) || !empty($obj->phone_mobile)) {
232 $caldata .=
"\\n*DOLIBARR-CTC-TEL: ".trim($obj->phone.
' '.$obj->phone_perso.
' '.$obj->phone_mobile);
234 if (strpos($obj->other_users,
',')) {
235 $caldata .=
"\\n*DOLIBARR-USR: ".$obj->other_users;
239 $caldata .=
"END:".$type.
"\n";
240 $caldata .=
"END:VCALENDAR\n";
254 $calid = (int) $calendarId;
255 $calevents = array();
257 if (!$this->
user->rights->agenda->myactions->read) {
261 if ($calid != $this->
user->id && (!isset($this->
user->rights->agenda->allactions->read) || !$this->user->rights->agenda->allactions->read)) {
267 $result = $this->db->query($sql);
270 while ($obj = $this->db->fetch_object($result)) {
273 if ($bCalendarData) {
274 $calevents[] = array(
275 'calendardata' => $calendardata,
276 'uri' => $obj->id.
'-ev-'.constant(
'CDAV_URI_KEY'),
277 'lastmodified' => strtotime($obj->lastupd),
278 'etag' =>
'"'.md5($calendardata).
'"',
279 'calendarid' => $calendarId,
280 'size' => strlen($calendardata),
281 'component' => strpos($calendardata,
'BEGIN:VEVENT') > 0 ?
'vevent' :
'vtodo',
284 $calevents[] = array(
286 'uri' => $obj->id.
'-ev-'.constant(
'CDAV_URI_KEY'),
287 'lastmodified' => strtotime($obj->lastupd),
288 'etag' =>
'"'.md5($calendardata).
'"',
289 'calendarid' => $calendarId,
290 'size' => strlen($calendardata),
291 'component' => strpos($calendardata,
'BEGIN:VEVENT') > 0 ?
'vevent' :
'vtodo',