@@ -165,7 +165,8 @@ discard block |
||
| 165 | 165 | $cat_ids[$category['id']] = $GLOBALS['egw']->strip_html($category['name']); |
| 166 | 166 | } |
| 167 | 167 | $this->arguments['category']['options'] = $cat_ids; |
| 168 | - if (count($cat_ids) > 5) { |
|
| 168 | + if (count($cat_ids) > 5) |
|
| 169 | + { |
|
| 169 | 170 | $this->arguments['category']['multiple'] = 5; |
| 170 | 171 | } |
| 171 | 172 | |
@@ -310,8 +311,16 @@ discard block |
||
| 310 | 311 | foreach((array) $this->bo->search($search_params) as $event) |
| 311 | 312 | { |
| 312 | 313 | $event['date'] = $this->bo->date2string($event['start']); |
| 313 | - if (empty($event['description'])) $event['description'] = ' '; // no description screws the titles horz. alignment |
|
| 314 | - if (empty($event['location'])) $event['location'] = ' '; // no location screws the owner horz. alignment |
|
| 314 | + if (empty($event['description'])) |
|
| 315 | + { |
|
| 316 | + $event['description'] = ' '; |
|
| 317 | + } |
|
| 318 | + // no description screws the titles horz. alignment |
|
| 319 | + if (empty($event['location'])) |
|
| 320 | + { |
|
| 321 | + $event['location'] = ' '; |
|
| 322 | + } |
|
| 323 | + // no location screws the owner horz. alignment |
|
| 315 | 324 | $rows[] = $event; |
| 316 | 325 | } |
| 317 | 326 | if (($arguments['showWeeks']) && ((int)$arguments['offset'] == 0)) |
@@ -337,7 +346,8 @@ discard block |
||
| 337 | 346 | } |
| 338 | 347 | $last_week = adodb_date('W-Y',$event['start']); |
| 339 | 348 | $html .= " <!-- Event -->\n"; |
| 340 | - if ($event_count % 2 == 0) { |
|
| 349 | + if ($event_count % 2 == 0) |
|
| 350 | + { |
|
| 341 | 351 | $html .= ' <div class="cal_list_event cal_event_even">'."\n"; |
| 342 | 352 | } |
| 343 | 353 | else |
@@ -353,7 +363,8 @@ discard block |
||
| 353 | 363 | $html .= '<span class="cal_list_weekday">'.lang(adodb_date('D',$event['end'])).".".($this->bo->common_prefs['dateformat'][0] != 'd' ? ' ' : ', ')."</span>"; |
| 354 | 364 | $html .= $this->bo->format_date($event['end'])."</span></div>\n"; |
| 355 | 365 | $descr = trim($event['description']); |
| 356 | - if (! empty($descr)) { |
|
| 366 | + if (! empty($descr)) |
|
| 367 | + { |
|
| 357 | 368 | $html .= " <div class=\"cal_list_descr\">\n".preg_replace('/\\n/',"<br>\n",$event['description'])."</div>\n"; |
| 358 | 369 | } |
| 359 | 370 | $html .= " </div><!-- cal_list_event -->\n"; |
@@ -1429,13 +1429,18 @@ discard block |
||
| 1429 | 1429 | function calendar_upgrade1_0_1_008() |
| 1430 | 1430 | { |
| 1431 | 1431 | $config_data = Api\Config::read('calendar'); |
| 1432 | - if (isset($config_data['fields'])) // old custom fields |
|
| 1432 | + if (isset($config_data['fields'])) |
|
| 1433 | + { |
|
| 1434 | + // old custom fields |
|
| 1433 | 1435 | { |
| 1434 | 1436 | $customfields = array(); |
| 1437 | + } |
|
| 1435 | 1438 | $order = 0; |
| 1436 | 1439 | foreach($config_data['fields'] as $name => $data) |
| 1437 | 1440 | { |
| 1438 | - if ($name{0} == '#' && !$data['disabled']) // real not-disabled custom field |
|
| 1441 | + if ($name{0} == '#' && !$data['disabled']) |
|
| 1442 | + { |
|
| 1443 | + // real not-disabled custom field |
|
| 1439 | 1444 | { |
| 1440 | 1445 | $customfields[substr($name,1)] = array( |
| 1441 | 1446 | 'type' => 'text', |
@@ -1444,6 +1449,7 @@ discard block |
||
| 1444 | 1449 | 'order' => ($order += 10), |
| 1445 | 1450 | ); |
| 1446 | 1451 | } |
| 1452 | + } |
|
| 1447 | 1453 | } |
| 1448 | 1454 | if (count($customfields)) |
| 1449 | 1455 | { |
@@ -2589,9 +2595,12 @@ discard block |
||
| 2589 | 2595 | 'cal_recur_date' => $row['cal_recur_date'], |
| 2590 | 2596 | 'cal_user_type' => 'e', |
| 2591 | 2597 | $email.'='.$GLOBALS['egw_setup']->db->quote($row['email']), |
| 2592 | - ), __LINE__, __FILE__, false, 'ORDER BY cal_status', 'calendar') as $user) // order A, T, U, X |
|
| 2598 | + ), __LINE__, __FILE__, false, 'ORDER BY cal_status', 'calendar') as $user) |
|
| 2599 | + { |
|
| 2600 | + // order A, T, U, X |
|
| 2593 | 2601 | { |
| 2594 | 2602 | if (strpos($user['email'], '@') !== false && !$n++) continue; |
| 2603 | + } |
|
| 2595 | 2604 | $GLOBALS['egw_setup']->db->delete('egw_cal_user', array_intersect_key($user, array_flip(array('cal_id','cal_recur_date','cal_user_type','cal_user_id','cal_status')))); |
| 2596 | 2605 | } |
| 2597 | 2606 | } |
@@ -44,15 +44,23 @@ |
||
| 44 | 44 | if (strpos($_SERVER['QUERY_STRING'],'=3D') !== false && substr($_GET['user'],0,2) == '3D') |
| 45 | 45 | { |
| 46 | 46 | $_GET['user'] = substr($_GET['user'],2); |
| 47 | - if (isset($_GET['password'])) $_GET['password'] = substr($_GET['password'],2); |
|
| 48 | - if (isset($_GET['cred'])) $_GET['cred'] = substr($_GET['cred'],2); |
|
| 49 | -} |
|
| 47 | + if (isset($_GET['password'])) |
|
| 48 | + { |
|
| 49 | + $_GET['password'] = substr($_GET['password'],2); |
|
| 50 | + } |
|
| 51 | + if (isset($_GET['cred'])) |
|
| 52 | + { |
|
| 53 | + $_GET['cred'] = substr($_GET['cred'],2); |
|
| 54 | + } |
|
| 55 | + } |
|
| 50 | 56 | if (!is_numeric($user = $_GET['user'])) |
| 51 | 57 | { |
| 52 | 58 | // check if user contains the current domain --> remove it |
| 53 | 59 | list(,$domain) = explode('@',$user); |
| 54 | 60 | if ($domain === $GLOBALS['egw_info']['user']['domain']) |
| 55 | - list($user) = explode('@',$user); |
|
| 61 | + { |
|
| 62 | + list($user) = explode('@',$user); |
|
| 63 | + } |
|
| 56 | 64 | $user = $GLOBALS['egw']->accounts->name2id($user,'account_lid','u'); |
| 57 | 65 | } |
| 58 | 66 | if ($user === false || !($username = $GLOBALS['egw']->accounts->id2name($user))) |
@@ -177,7 +177,10 @@ discard block |
||
| 177 | 177 | function __construct(&$_clientProperties = array()) |
| 178 | 178 | { |
| 179 | 179 | parent::__construct(); |
| 180 | - if ($this->log) $this->logfile = $GLOBALS['egw_info']['server']['temp_dir']."/log-vcal"; |
|
| 180 | + if ($this->log) |
|
| 181 | + { |
|
| 182 | + $this->logfile = $GLOBALS['egw_info']['server']['temp_dir']."/log-vcal"; |
|
| 183 | + } |
|
| 181 | 184 | $this->clientProperties = $_clientProperties; |
| 182 | 185 | $this->vCalendar = new Horde_Icalendar; |
| 183 | 186 | $this->addressbook = new Api\Contacts; |
@@ -226,10 +229,14 @@ discard block |
||
| 226 | 229 | 'ATTACH' => 'attachments', |
| 227 | 230 | ); |
| 228 | 231 | |
| 229 | - if (!is_array($this->supportedFields)) $this->setSupportedFields(); |
|
| 232 | + if (!is_array($this->supportedFields)) |
|
| 233 | + { |
|
| 234 | + $this->setSupportedFields(); |
|
| 235 | + } |
|
| 230 | 236 | |
| 231 | 237 | if ($this->productManufacturer == '' ) |
| 232 | - { // syncevolution is broken |
|
| 238 | + { |
|
| 239 | +// syncevolution is broken |
|
| 233 | 240 | $version = '2.0'; |
| 234 | 241 | } |
| 235 | 242 | |
@@ -237,10 +244,16 @@ discard block |
||
| 237 | 244 | $vcal->setAttribute('PRODID','-//EGroupware//NONSGML EGroupware Calendar '.$GLOBALS['egw_info']['apps']['calendar']['version'].'//'. |
| 238 | 245 | strtoupper($GLOBALS['egw_info']['user']['preferences']['common']['lang'])); |
| 239 | 246 | $vcal->setAttribute('VERSION', $version); |
| 240 | - if ($method) $vcal->setAttribute('METHOD', $method); |
|
| 247 | + if ($method) |
|
| 248 | + { |
|
| 249 | + $vcal->setAttribute('METHOD', $method); |
|
| 250 | + } |
|
| 241 | 251 | $events_exported = false; |
| 242 | 252 | |
| 243 | - if (!is_array($events)) $events = array($events); |
|
| 253 | + if (!is_array($events)) |
|
| 254 | + { |
|
| 255 | + $events = array($events); |
|
| 256 | + } |
|
| 244 | 257 | |
| 245 | 258 | $vtimezones_added = array(); |
| 246 | 259 | foreach ($events as $event) |
@@ -306,7 +319,10 @@ discard block |
||
| 306 | 319 | self::$tz_cache[$event['tzid']] = calendar_timezones::DateTimeZone($event['tzid']); |
| 307 | 320 | } |
| 308 | 321 | |
| 309 | - if ($this->so->isWholeDay($event)) $event['whole_day'] = true; |
|
| 322 | + if ($this->so->isWholeDay($event)) |
|
| 323 | + { |
|
| 324 | + $event['whole_day'] = true; |
|
| 325 | + } |
|
| 310 | 326 | |
| 311 | 327 | if ($this->log) |
| 312 | 328 | { |
@@ -317,7 +333,10 @@ discard block |
||
| 317 | 333 | |
| 318 | 334 | if ($recurrence) |
| 319 | 335 | { |
| 320 | - if (!($master = $this->read($event['id'], 0, true, 'server'))) continue; |
|
| 336 | + if (!($master = $this->read($event['id'], 0, true, 'server'))) |
|
| 337 | + { |
|
| 338 | + continue; |
|
| 339 | + } |
|
| 321 | 340 | |
| 322 | 341 | if (!isset($this->supportedFields['participants'])) |
| 323 | 342 | { |
@@ -374,7 +393,8 @@ discard block |
||
| 374 | 393 | if ($this->productManufacturer != 'file' && $this->uidExtension) |
| 375 | 394 | { |
| 376 | 395 | // Append UID to DESCRIPTION |
| 377 | - if (!preg_match('/\[UID:.+\]/m', $event['description'])) { |
|
| 396 | + if (!preg_match('/\[UID:.+\]/m', $event['description'])) |
|
| 397 | + { |
|
| 378 | 398 | $event['description'] .= "\n[UID:" . $event['uid'] . "]"; |
| 379 | 399 | } |
| 380 | 400 | } |
@@ -434,11 +454,21 @@ discard block |
||
| 434 | 454 | $quantity = $role = null; |
| 435 | 455 | calendar_so::split_status($status, $quantity, $role); |
| 436 | 456 | // do not include event owner/ORGANIZER as participant in his own calendar, if he is only participant |
| 437 | - if (count($event['participants']) == 1 && $event['owner'] == $uid) continue; |
|
| 457 | + if (count($event['participants']) == 1 && $event['owner'] == $uid) |
|
| 458 | + { |
|
| 459 | + continue; |
|
| 460 | + } |
|
| 438 | 461 | |
| 439 | - if (!($info = $this->resource_info($uid))) continue; |
|
| 462 | + if (!($info = $this->resource_info($uid))) |
|
| 463 | + { |
|
| 464 | + continue; |
|
| 465 | + } |
|
| 440 | 466 | |
| 441 | - if (in_array($status, array('X','E'))) continue; // dont include deleted participants |
|
| 467 | + if (in_array($status, array('X','E'))) |
|
| 468 | + { |
|
| 469 | + continue; |
|
| 470 | + } |
|
| 471 | + // dont include deleted participants |
|
| 442 | 472 | |
| 443 | 473 | if ($this->log) |
| 444 | 474 | { |
@@ -517,24 +547,49 @@ discard block |
||
| 517 | 547 | } |
| 518 | 548 | // ROLE={CHAIR|REQ-PARTICIPANT|OPT-PARTICIPANT|NON-PARTICIPANT|X-*} |
| 519 | 549 | $options = array(); |
| 520 | - if (!empty($participantCN)) $options['CN'] = $participantCN; |
|
| 521 | - if (!empty($role)) $options['ROLE'] = $role; |
|
| 522 | - if (!empty($status)) $options['PARTSTAT'] = $status; |
|
| 523 | - if (!empty($cutype)) $options['CUTYPE'] = $cutype; |
|
| 524 | - if (!empty($rsvp)) $options['RSVP'] = $rsvp; |
|
| 550 | + if (!empty($participantCN)) |
|
| 551 | + { |
|
| 552 | + $options['CN'] = $participantCN; |
|
| 553 | + } |
|
| 554 | + if (!empty($role)) |
|
| 555 | + { |
|
| 556 | + $options['ROLE'] = $role; |
|
| 557 | + } |
|
| 558 | + if (!empty($status)) |
|
| 559 | + { |
|
| 560 | + $options['PARTSTAT'] = $status; |
|
| 561 | + } |
|
| 562 | + if (!empty($cutype)) |
|
| 563 | + { |
|
| 564 | + $options['CUTYPE'] = $cutype; |
|
| 565 | + } |
|
| 566 | + if (!empty($rsvp)) |
|
| 567 | + { |
|
| 568 | + $options['RSVP'] = $rsvp; |
|
| 569 | + } |
|
| 525 | 570 | if (!empty($info['email']) && $participantURL != 'mailto:'.$info['email']) |
| 526 | 571 | { |
| 527 | 572 | $options['EMAIL'] = $info['email']; // only add EMAIL attribute, if not already URL, as eg. Akonadi is reported to have problems with it |
| 528 | 573 | } |
| 529 | - if ($info['type'] != 'e') $options['X-EGROUPWARE-UID'] = (string)$uid; |
|
| 530 | - if ($quantity > 1) $options['X-EGROUPWARE-QUANTITY'] = (string)$quantity; |
|
| 574 | + if ($info['type'] != 'e') |
|
| 575 | + { |
|
| 576 | + $options['X-EGROUPWARE-UID'] = (string)$uid; |
|
| 577 | + } |
|
| 578 | + if ($quantity > 1) |
|
| 579 | + { |
|
| 580 | + $options['X-EGROUPWARE-QUANTITY'] = (string)$quantity; |
|
| 581 | + } |
|
| 531 | 582 | $attributes['ATTENDEE'][] = $participantURL; |
| 532 | 583 | $parameters['ATTENDEE'][] = $options; |
| 533 | 584 | } |
| 534 | 585 | break; |
| 535 | 586 | |
| 536 | 587 | case 'CLASS': |
| 537 | - if ($event['public']) continue; // public is default, no need to export, fails CalDAVTester if added as default |
|
| 588 | + if ($event['public']) |
|
| 589 | + { |
|
| 590 | + continue; |
|
| 591 | + } |
|
| 592 | + // public is default, no need to export, fails CalDAVTester if added as default |
|
| 538 | 593 | $attributes['CLASS'] = $event['public'] ? 'PUBLIC' : 'PRIVATE'; |
| 539 | 594 | // Apple iCal on OS X uses X-CALENDARSERVER-ACCESS: CONFIDENTIAL on VCALANDAR (not VEVENT!) |
| 540 | 595 | if (!$event['public'] && $this->productManufacturer == 'groupdav') |
@@ -566,9 +621,18 @@ discard block |
||
| 566 | 621 | 'CUTYPE' => 'INDIVIDUAL', |
| 567 | 622 | //'RSVP' => 'FALSE', |
| 568 | 623 | ); |
| 569 | - if (!empty($organizerCN)) $options['CN'] = $organizerCN; |
|
| 570 | - if (!empty($organizerEMail)) $options['EMAIL'] = $organizerEMail; |
|
| 571 | - if (!empty($event['owner'])) $options['X-EGROUPWARE-UID'] = $event['owner']; |
|
| 624 | + if (!empty($organizerCN)) |
|
| 625 | + { |
|
| 626 | + $options['CN'] = $organizerCN; |
|
| 627 | + } |
|
| 628 | + if (!empty($organizerEMail)) |
|
| 629 | + { |
|
| 630 | + $options['EMAIL'] = $organizerEMail; |
|
| 631 | + } |
|
| 632 | + if (!empty($event['owner'])) |
|
| 633 | + { |
|
| 634 | + $options['X-EGROUPWARE-UID'] = $event['owner']; |
|
| 635 | + } |
|
| 572 | 636 | $attributes['ATTENDEE'][] = $organizerURL; |
| 573 | 637 | $parameters['ATTENDEE'][] = $options; |
| 574 | 638 | } |
@@ -597,9 +661,12 @@ discard block |
||
| 597 | 661 | { |
| 598 | 662 | // Hack for CalDAVTester to export duration instead of endtime |
| 599 | 663 | if ($tzid == 'UTC' && $event['end'] - $event['start'] <= 86400) |
| 600 | - $attributes['duration'] = $event['end'] - $event['start']; |
|
| 601 | - else |
|
| 602 | - $attributes['DTEND'] = self::getDateTime($event['end'],$tzid,$parameters['DTEND']); |
|
| 664 | + { |
|
| 665 | + $attributes['duration'] = $event['end'] - $event['start']; |
|
| 666 | + } |
|
| 667 | + else { |
|
| 668 | + $attributes['DTEND'] = self::getDateTime($event['end'],$tzid,$parameters['DTEND']); |
|
| 669 | + } |
|
| 603 | 670 | } |
| 604 | 671 | else |
| 605 | 672 | { |
@@ -619,7 +686,11 @@ discard block |
||
| 619 | 686 | break; |
| 620 | 687 | |
| 621 | 688 | case 'RRULE': |
| 622 | - if ($event['recur_type'] == MCAL_RECUR_NONE) break; // no recuring event |
|
| 689 | + if ($event['recur_type'] == MCAL_RECUR_NONE) |
|
| 690 | + { |
|
| 691 | + break; |
|
| 692 | + } |
|
| 693 | + // no recuring event |
|
| 623 | 694 | $rriter = calendar_rrule::event2rrule($event, false, $tzid); |
| 624 | 695 | $rrule = $rriter->generate_rrule($version); |
| 625 | 696 | if ($event['recur_enddate']) |
@@ -653,7 +724,10 @@ discard block |
||
| 653 | 724 | break; |
| 654 | 725 | |
| 655 | 726 | case 'EXDATE': |
| 656 | - if ($event['recur_type'] == MCAL_RECUR_NONE) break; |
|
| 727 | + if ($event['recur_type'] == MCAL_RECUR_NONE) |
|
| 728 | + { |
|
| 729 | + break; |
|
| 730 | + } |
|
| 657 | 731 | if (!empty($event['recur_exception'])) |
| 658 | 732 | { |
| 659 | 733 | if (empty($event['whole_day'])) |
@@ -680,14 +754,21 @@ discard block |
||
| 680 | 754 | ); |
| 681 | 755 | } |
| 682 | 756 | $event['recur_exception'] = $days; |
| 683 | - if ($version != '1.0') $parameters['EXDATE']['VALUE'] = 'DATE'; |
|
| 757 | + if ($version != '1.0') |
|
| 758 | + { |
|
| 759 | + $parameters['EXDATE']['VALUE'] = 'DATE'; |
|
| 760 | + } |
|
| 684 | 761 | } |
| 685 | 762 | $vevent->setAttribute('EXDATE', $event['recur_exception'], $parameters['EXDATE']); |
| 686 | 763 | } |
| 687 | 764 | break; |
| 688 | 765 | |
| 689 | 766 | case 'PRIORITY': |
| 690 | - if (!$event['priority']) continue; // 0=undefined is default, no need to export, fails CalDAVTester if our default is added |
|
| 767 | + if (!$event['priority']) |
|
| 768 | + { |
|
| 769 | + continue; |
|
| 770 | + } |
|
| 771 | + // 0=undefined is default, no need to export, fails CalDAVTester if our default is added |
|
| 691 | 772 | if ($this->productManufacturer == 'funambol' && |
| 692 | 773 | (strpos($this->productName, 'outlook') !== false |
| 693 | 774 | || strpos($this->productName, 'pocket pc') !== false)) |
@@ -701,7 +782,11 @@ discard block |
||
| 701 | 782 | break; |
| 702 | 783 | |
| 703 | 784 | case 'TRANSP': |
| 704 | - if (!$event['non_blocking']) continue; // OPAQUE is default, no need to export, fails CalDAVTester if added as default |
|
| 785 | + if (!$event['non_blocking']) |
|
| 786 | + { |
|
| 787 | + continue; |
|
| 788 | + } |
|
| 789 | + // OPAQUE is default, no need to export, fails CalDAVTester if added as default |
|
| 705 | 790 | if ($version == '1.0') |
| 706 | 791 | { |
| 707 | 792 | $attributes['TRANSP'] = ($event['non_blocking'] ? 1 : 0); |
@@ -758,7 +843,11 @@ discard block |
||
| 758 | 843 | elseif ($event['recurrence'] && $event['reference']) |
| 759 | 844 | { |
| 760 | 845 | // $event['reference'] is a calendar_id, not a timestamp |
| 761 | - if (!($revent = $this->read($event['reference']))) break; // referenced event does not exist |
|
| 846 | + if (!($revent = $this->read($event['reference']))) |
|
| 847 | + { |
|
| 848 | + break; |
|
| 849 | + } |
|
| 850 | + // referenced event does not exist |
|
| 762 | 851 | |
| 763 | 852 | if (empty($revent['whole_day'])) |
| 764 | 853 | { |
@@ -884,7 +973,10 @@ discard block |
||
| 884 | 973 | foreach ((array)$event['alarm'] as $alarmData) |
| 885 | 974 | { |
| 886 | 975 | // skip over alarms that don't have the minimum required info |
| 887 | - if (!isset($alarmData['offset']) && !isset($alarmData['time'])) continue; |
|
| 976 | + if (!isset($alarmData['offset']) && !isset($alarmData['time'])) |
|
| 977 | + { |
|
| 978 | + continue; |
|
| 979 | + } |
|
| 888 | 980 | |
| 889 | 981 | // skip alarms not being set for all users and alarms owned by other users |
| 890 | 982 | if ($alarmData['all'] != true && $alarmData['owner'] != $this->user) |
@@ -901,7 +993,10 @@ discard block |
||
| 901 | 993 | |
| 902 | 994 | if ($version == '1.0') |
| 903 | 995 | { |
| 904 | - if ($event['title']) $description = $event['title']; |
|
| 996 | + if ($event['title']) |
|
| 997 | + { |
|
| 998 | + $description = $event['title']; |
|
| 999 | + } |
|
| 905 | 1000 | if ($description) |
| 906 | 1001 | { |
| 907 | 1002 | $values['DALARM']['snooze_time'] = ''; |
@@ -921,7 +1016,10 @@ discard block |
||
| 921 | 1016 | // VCalendar 2.0 / RFC 2445 |
| 922 | 1017 | |
| 923 | 1018 | // RFC requires DESCRIPTION for DISPLAY |
| 924 | - if (!$event['title'] && !$description) $description = 'Alarm'; |
|
| 1019 | + if (!$event['title'] && !$description) |
|
| 1020 | + { |
|
| 1021 | + $description = 'Alarm'; |
|
| 1022 | + } |
|
| 925 | 1023 | |
| 926 | 1024 | /* Disabling for now |
| 927 | 1025 | // Lightning infinitly pops up alarms for recuring events, if the only use an offset |
@@ -1112,13 +1210,20 @@ discard block |
||
| 1112 | 1210 | $this->events_imported = 0; |
| 1113 | 1211 | $replace = $delete_exceptions= false; |
| 1114 | 1212 | |
| 1115 | - if (!is_array($this->supportedFields)) $this->setSupportedFields(); |
|
| 1213 | + if (!is_array($this->supportedFields)) |
|
| 1214 | + { |
|
| 1215 | + $this->setSupportedFields(); |
|
| 1216 | + } |
|
| 1116 | 1217 | |
| 1117 | 1218 | if (!($events = $this->icaltoegw($_vcalData, $principalURL, $charset))) |
| 1118 | 1219 | { |
| 1119 | 1220 | return false; |
| 1120 | 1221 | } |
| 1121 | - if (!is_array($events)) $cal_id = -1; // just to be sure, as iterator does NOT allow array access (eg. $events[0]) |
|
| 1222 | + if (!is_array($events)) |
|
| 1223 | + { |
|
| 1224 | + $cal_id = -1; |
|
| 1225 | + } |
|
| 1226 | + // just to be sure, as iterator does NOT allow array access (eg. $events[0]) |
|
| 1122 | 1227 | |
| 1123 | 1228 | if ($cal_id > 0) |
| 1124 | 1229 | { |
@@ -1126,8 +1231,14 @@ discard block |
||
| 1126 | 1231 | { |
| 1127 | 1232 | $replace = $recur_date == 0; |
| 1128 | 1233 | $events[0]['id'] = $cal_id; |
| 1129 | - if (!is_null($etag)) $events[0]['etag'] = (int) $etag; |
|
| 1130 | - if ($recur_date) $events[0]['recurrence'] = $recur_date; |
|
| 1234 | + if (!is_null($etag)) |
|
| 1235 | + { |
|
| 1236 | + $events[0]['etag'] = (int) $etag; |
|
| 1237 | + } |
|
| 1238 | + if ($recur_date) |
|
| 1239 | + { |
|
| 1240 | + $events[0]['recurrence'] = $recur_date; |
|
| 1241 | + } |
|
| 1131 | 1242 | } |
| 1132 | 1243 | elseif (($foundEvent = $this->find_event(array('id' => $cal_id), 'exact')) && |
| 1133 | 1244 | ($eventId = array_shift($foundEvent)) && |
@@ -1135,7 +1246,10 @@ discard block |
||
| 1135 | 1246 | { |
| 1136 | 1247 | foreach ($events as $k => $event) |
| 1137 | 1248 | { |
| 1138 | - if (!isset($event['uid'])) $events[$k]['uid'] = $egwEvent['uid']; |
|
| 1249 | + if (!isset($event['uid'])) |
|
| 1250 | + { |
|
| 1251 | + $events[$k]['uid'] = $egwEvent['uid']; |
|
| 1252 | + } |
|
| 1139 | 1253 | } |
| 1140 | 1254 | } |
| 1141 | 1255 | } |
@@ -1165,10 +1279,17 @@ discard block |
||
| 1165 | 1279 | $msg = null; |
| 1166 | 1280 | foreach ($events as $event) |
| 1167 | 1281 | { |
| 1168 | - if (!is_array($event)) continue; // the iterator may return false |
|
| 1282 | + if (!is_array($event)) |
|
| 1283 | + { |
|
| 1284 | + continue; |
|
| 1285 | + } |
|
| 1286 | + // the iterator may return false |
|
| 1169 | 1287 | ++$this->events_imported; |
| 1170 | 1288 | |
| 1171 | - if ($this->so->isWholeDay($event)) $event['whole_day'] = true; |
|
| 1289 | + if ($this->so->isWholeDay($event)) |
|
| 1290 | + { |
|
| 1291 | + $event['whole_day'] = true; |
|
| 1292 | + } |
|
| 1172 | 1293 | if (is_array($event['category'])) |
| 1173 | 1294 | { |
| 1174 | 1295 | $event['category'] = $this->find_or_add_categories($event['category'], |
@@ -1205,7 +1326,10 @@ discard block |
||
| 1205 | 1326 | } |
| 1206 | 1327 | else |
| 1207 | 1328 | { |
| 1208 | - if (!($exception = $this->read($id))) continue; |
|
| 1329 | + if (!($exception = $this->read($id))) |
|
| 1330 | + { |
|
| 1331 | + continue; |
|
| 1332 | + } |
|
| 1209 | 1333 | $exception['uid'] = Api\CalDAV::generate_uid('calendar', $id); |
| 1210 | 1334 | $exception['reference'] = $exception['recurrence'] = 0; |
| 1211 | 1335 | $this->update($exception, true,true,false,true,$msg,$skip_notification); |
@@ -1294,7 +1418,10 @@ discard block |
||
| 1294 | 1418 | break; |
| 1295 | 1419 | |
| 1296 | 1420 | default: |
| 1297 | - if (!empty($value)) $event[$key] = $value; |
|
| 1421 | + if (!empty($value)) |
|
| 1422 | + { |
|
| 1423 | + $event[$key] = $value; |
|
| 1424 | + } |
|
| 1298 | 1425 | } |
| 1299 | 1426 | } |
| 1300 | 1427 | } |
@@ -1392,7 +1519,10 @@ discard block |
||
| 1392 | 1519 | else // common adjustments for new events |
| 1393 | 1520 | { |
| 1394 | 1521 | unset($event['id']); |
| 1395 | - if ($caldav_name) $event['caldav_name'] = $caldav_name; |
|
| 1522 | + if ($caldav_name) |
|
| 1523 | + { |
|
| 1524 | + $event['caldav_name'] = $caldav_name; |
|
| 1525 | + } |
|
| 1396 | 1526 | // set non blocking all day depending on the user setting |
| 1397 | 1527 | if (!empty($event['whole_day']) && $this->nonBlockingAllday) |
| 1398 | 1528 | { |
@@ -1440,7 +1570,10 @@ discard block |
||
| 1440 | 1570 | || !isset($event['participants'][$event['owner']])) |
| 1441 | 1571 | { |
| 1442 | 1572 | $status = calendar_so::combine_status($event['owner'] == $this->user ? 'A' : 'U', 1, 'CHAIR'); |
| 1443 | - if (!is_array($event['participants'])) $event['participants'] = array(); |
|
| 1573 | + if (!is_array($event['participants'])) |
|
| 1574 | + { |
|
| 1575 | + $event['participants'] = array(); |
|
| 1576 | + } |
|
| 1444 | 1577 | $event['participants'][$event['owner']] = $status; |
| 1445 | 1578 | } |
| 1446 | 1579 | else |
@@ -1593,7 +1726,10 @@ discard block |
||
| 1593 | 1726 | $occurence = $exception = false; |
| 1594 | 1727 | foreach ($event_info['master_event']['recur_exception'] as $exception) |
| 1595 | 1728 | { |
| 1596 | - if ($exception > $event['start']) break; |
|
| 1729 | + if ($exception > $event['start']) |
|
| 1730 | + { |
|
| 1731 | + break; |
|
| 1732 | + } |
|
| 1597 | 1733 | $occurence = $exception; |
| 1598 | 1734 | } |
| 1599 | 1735 | if (!$occurence) |
@@ -1683,12 +1819,15 @@ discard block |
||
| 1683 | 1819 | case 'SERIES-MASTER': |
| 1684 | 1820 | case 'SERIES-EXCEPTION': |
| 1685 | 1821 | case 'SERIES-EXCEPTION-PROPAGATE': |
| 1686 | - if (is_array($event_info['stored_event'])) // status update requires a stored event |
|
| 1822 | + if (is_array($event_info['stored_event'])) |
|
| 1823 | + { |
|
| 1824 | + // status update requires a stored event |
|
| 1687 | 1825 | { |
| 1688 | 1826 | if ($event_info['acl_edit']) |
| 1689 | 1827 | { |
| 1690 | 1828 | // update all participants if we have the right to do that |
| 1691 | 1829 | $this->update_status($event, $event_info['stored_event'],0,$skip_notification); |
| 1830 | + } |
|
| 1692 | 1831 | } |
| 1693 | 1832 | elseif (isset($event['participants'][$this->user]) || isset($event_info['stored_event']['participants'][$this->user])) |
| 1694 | 1833 | { |
@@ -1700,9 +1839,12 @@ discard block |
||
| 1700 | 1839 | break; |
| 1701 | 1840 | |
| 1702 | 1841 | case 'SERIES-PSEUDO-EXCEPTION': |
| 1703 | - if (is_array($event_info['master_event'])) // status update requires a stored master event |
|
| 1842 | + if (is_array($event_info['master_event'])) |
|
| 1843 | + { |
|
| 1844 | + // status update requires a stored master event |
|
| 1704 | 1845 | { |
| 1705 | 1846 | $recurrence = $this->date2usertime($event['recurrence']); |
| 1847 | + } |
|
| 1706 | 1848 | if ($event_info['acl_edit']) |
| 1707 | 1849 | { |
| 1708 | 1850 | // update all participants if we have the right to do that |
@@ -1775,7 +1917,10 @@ discard block |
||
| 1775 | 1917 | */ |
| 1776 | 1918 | public function sync_alarms(array &$event, array $old_alarms, $user) |
| 1777 | 1919 | { |
| 1778 | - if ($this->debug) error_log(__METHOD__."(".array2string($event).', old_alarms='.array2string($old_alarms).", $user,)"); |
|
| 1920 | + if ($this->debug) |
|
| 1921 | + { |
|
| 1922 | + error_log(__METHOD__."(".array2string($event).', old_alarms='.array2string($old_alarms).", $user,)"); |
|
| 1923 | + } |
|
| 1779 | 1924 | $modified = 0; |
| 1780 | 1925 | foreach($event['alarm'] as &$alarm) |
| 1781 | 1926 | { |
@@ -1799,19 +1944,40 @@ discard block |
||
| 1799 | 1944 | if ($alarm['offset'] != $old_alarm['offset'] || $old_alarm['owner'] != $user && !$alarm['all']) |
| 1800 | 1945 | { |
| 1801 | 1946 | $alarm['owner'] = $user; |
| 1802 | - if (!isset($alarm['time'])) $alarm['time'] = $event['start'] - $alarm['offset']; |
|
| 1803 | - if ($alarm['time'] < time()) calendar_so::shift_alarm($event, $alarm); |
|
| 1804 | - if ($this->debug) error_log(__METHOD__."() adding new alarm from client ".array2string($alarm)); |
|
| 1805 | - if ($event['id']) $alarm['id'] = $this->save_alarm($event['id'], $alarm); |
|
| 1947 | + if (!isset($alarm['time'])) |
|
| 1948 | + { |
|
| 1949 | + $alarm['time'] = $event['start'] - $alarm['offset']; |
|
| 1950 | + } |
|
| 1951 | + if ($alarm['time'] < time()) |
|
| 1952 | + { |
|
| 1953 | + calendar_so::shift_alarm($event, $alarm); |
|
| 1954 | + } |
|
| 1955 | + if ($this->debug) |
|
| 1956 | + { |
|
| 1957 | + error_log(__METHOD__."() adding new alarm from client ".array2string($alarm)); |
|
| 1958 | + } |
|
| 1959 | + if ($event['id']) |
|
| 1960 | + { |
|
| 1961 | + $alarm['id'] = $this->save_alarm($event['id'], $alarm); |
|
| 1962 | + } |
|
| 1806 | 1963 | ++$modified; |
| 1807 | 1964 | } |
| 1808 | 1965 | // existing alarm --> update it |
| 1809 | 1966 | elseif ($alarm['offset'] == $old_alarm['offset'] && ($old_alarm['owner'] == $user || $old_alarm['all'])) |
| 1810 | 1967 | { |
| 1811 | - if (!isset($alarm['time'])) $alarm['time'] = $event['start'] - $alarm['offset']; |
|
| 1812 | - if ($alarm['time'] < time()) calendar_so::shift_alarm($event, $alarm); |
|
| 1968 | + if (!isset($alarm['time'])) |
|
| 1969 | + { |
|
| 1970 | + $alarm['time'] = $event['start'] - $alarm['offset']; |
|
| 1971 | + } |
|
| 1972 | + if ($alarm['time'] < time()) |
|
| 1973 | + { |
|
| 1974 | + calendar_so::shift_alarm($event, $alarm); |
|
| 1975 | + } |
|
| 1813 | 1976 | $alarm = array_merge($old_alarm, $alarm); |
| 1814 | - if ($this->debug) error_log(__METHOD__."() updating existing alarm from client ".array2string($alarm)); |
|
| 1977 | + if ($this->debug) |
|
| 1978 | + { |
|
| 1979 | + error_log(__METHOD__."() updating existing alarm from client ".array2string($alarm)); |
|
| 1980 | + } |
|
| 1815 | 1981 | $alarm['id'] = $this->save_alarm($event['id'], $alarm); |
| 1816 | 1982 | ++$modified; |
| 1817 | 1983 | } |
@@ -1825,7 +1991,10 @@ discard block |
||
| 1825 | 1991 | unset($old_alarm[$id]); |
| 1826 | 1992 | continue; |
| 1827 | 1993 | } |
| 1828 | - if ($this->debug) error_log(__METHOD__."() deleting alarm '$id' deleted on client ".array2string($old_alarm)); |
|
| 1994 | + if ($this->debug) |
|
| 1995 | + { |
|
| 1996 | + error_log(__METHOD__."() deleting alarm '$id' deleted on client ".array2string($old_alarm)); |
|
| 1997 | + } |
|
| 1829 | 1998 | $this->delete_alarm($id); |
| 1830 | 1999 | ++$modified; |
| 1831 | 2000 | } |
@@ -2244,7 +2413,10 @@ discard block |
||
| 2244 | 2413 | array2string($_vcalData)."\n",3,$this->logfile); |
| 2245 | 2414 | } |
| 2246 | 2415 | |
| 2247 | - if (!is_array($this->supportedFields)) $this->setSupportedFields(); |
|
| 2416 | + if (!is_array($this->supportedFields)) |
|
| 2417 | + { |
|
| 2418 | + $this->setSupportedFields(); |
|
| 2419 | + } |
|
| 2248 | 2420 | |
| 2249 | 2421 | // we use Api\CalDAV\IcalIterator only on resources, as calling importVCal() accesses single events like an array (eg. $events[0]) |
| 2250 | 2422 | if (is_resource($_vcalData)) |
@@ -2589,19 +2761,27 @@ discard block |
||
| 2589 | 2761 | $vcardData['recur_interval'] = $recurenceMatches[1]; |
| 2590 | 2762 | $vcardData['recur_enddate'] = $this->vCalendar->_parseDateTime(trim($recurenceMatches[2])); |
| 2591 | 2763 | } |
| 2592 | - else break; |
|
| 2764 | + else { |
|
| 2765 | + break; |
|
| 2766 | + } |
|
| 2593 | 2767 | // fall-through |
| 2594 | 2768 | case 'DAILY': // 2.0 |
| 2595 | 2769 | $vcardData['recur_type'] = MCAL_RECUR_DAILY; |
| 2596 | - if (stripos($recurence, 'BYDAY') === false) break; |
|
| 2770 | + if (stripos($recurence, 'BYDAY') === false) |
|
| 2771 | + { |
|
| 2772 | + break; |
|
| 2773 | + } |
|
| 2597 | 2774 | // hack to handle TYPE=DAILY;BYDAY= as WEEKLY, which is true as long as there's no interval |
| 2598 | 2775 | // fall-through |
| 2599 | 2776 | case 'W': |
| 2600 | 2777 | case 'WEEKLY': |
| 2601 | 2778 | $days = array(); |
| 2602 | - if (preg_match('/W(\d+) *((?i: [AEFHMORSTUW]{2})+)?( +([^ ]*))$/',$recurence, $recurenceMatches)) // 1.0 |
|
| 2779 | + if (preg_match('/W(\d+) *((?i: [AEFHMORSTUW]{2})+)?( +([^ ]*))$/',$recurence, $recurenceMatches)) |
|
| 2780 | + { |
|
| 2781 | + // 1.0 |
|
| 2603 | 2782 | { |
| 2604 | 2783 | $vcardData['recur_interval'] = $recurenceMatches[1]; |
| 2784 | + } |
|
| 2605 | 2785 | if (empty($recurenceMatches[2])) |
| 2606 | 2786 | { |
| 2607 | 2787 | $days[0] = strtoupper(substr(date('D', $vcardData['start']),0,2)); |
@@ -2614,7 +2794,10 @@ discard block |
||
| 2614 | 2794 | $repeatMatches = null; |
| 2615 | 2795 | if (preg_match('/#(\d+)/',$recurenceMatches[4],$repeatMatches)) |
| 2616 | 2796 | { |
| 2617 | - if ($repeatMatches[1]) $vcardData['recur_count'] = $repeatMatches[1]; |
|
| 2797 | + if ($repeatMatches[1]) |
|
| 2798 | + { |
|
| 2799 | + $vcardData['recur_count'] = $repeatMatches[1]; |
|
| 2800 | + } |
|
| 2618 | 2801 | } |
| 2619 | 2802 | else |
| 2620 | 2803 | { |
@@ -2623,9 +2806,12 @@ discard block |
||
| 2623 | 2806 | |
| 2624 | 2807 | $recur_days = $this->recur_days_1_0; |
| 2625 | 2808 | } |
| 2626 | - elseif (preg_match('/BYDAY=([^;: ]+)/',$recurence,$recurenceMatches)) // 2.0 |
|
| 2809 | + elseif (preg_match('/BYDAY=([^;: ]+)/',$recurence,$recurenceMatches)) |
|
| 2810 | + { |
|
| 2811 | + // 2.0 |
|
| 2627 | 2812 | { |
| 2628 | 2813 | $days = explode(',',$recurenceMatches[1]); |
| 2814 | + } |
|
| 2629 | 2815 | $recur_days = $this->recur_days; |
| 2630 | 2816 | } |
| 2631 | 2817 | else // no day given, use the day of dtstart |
@@ -2684,7 +2870,10 @@ discard block |
||
| 2684 | 2870 | { |
| 2685 | 2871 | $vcardData['recur_interval'] = $recurenceMatches[1]; |
| 2686 | 2872 | $vcardData['recur_enddate'] = $this->vCalendar->_parseDateTime($recurenceMatches[2]); |
| 2687 | - } else break; |
|
| 2873 | + } |
|
| 2874 | + else { |
|
| 2875 | + break; |
|
| 2876 | + } |
|
| 2688 | 2877 | // fall-through |
| 2689 | 2878 | case 'YEARLY': // 2.0 |
| 2690 | 2879 | if (strpos($recurence, 'BYDAY') === false) |
@@ -2704,7 +2893,10 @@ discard block |
||
| 2704 | 2893 | } |
| 2705 | 2894 | break; |
| 2706 | 2895 | case 'EXDATE': |
| 2707 | - if (!$attributes['value']) break; |
|
| 2896 | + if (!$attributes['value']) |
|
| 2897 | + { |
|
| 2898 | + break; |
|
| 2899 | + } |
|
| 2708 | 2900 | if ((isset($attributes['params']['VALUE']) |
| 2709 | 2901 | && $attributes['params']['VALUE'] == 'DATE') || |
| 2710 | 2902 | (!isset($attributes['params']['VALUE']) && $isDate)) |
@@ -2784,13 +2976,16 @@ discard block |
||
| 2784 | 2976 | // fall throught |
| 2785 | 2977 | case 'ATTENDEE': |
| 2786 | 2978 | if (isset($attributes['params']['PARTSTAT'])) |
| 2787 | - { |
|
| 2979 | + { |
|
| 2788 | 2980 | $attributes['params']['STATUS'] = $attributes['params']['PARTSTAT']; |
| 2789 | 2981 | } |
| 2790 | 2982 | if (isset($attributes['params']['STATUS'])) |
| 2791 | - { |
|
| 2983 | + { |
|
| 2792 | 2984 | $status = $this->status_ical2egw[strtoupper($attributes['params']['STATUS'])]; |
| 2793 | - if (empty($status)) $status = 'X'; |
|
| 2985 | + if (empty($status)) |
|
| 2986 | + { |
|
| 2987 | + $status = 'X'; |
|
| 2988 | + } |
|
| 2794 | 2989 | } |
| 2795 | 2990 | else |
| 2796 | 2991 | { |
@@ -2850,7 +3045,10 @@ discard block |
||
| 2850 | 3045 | $uid = $this->user; |
| 2851 | 3046 | } |
| 2852 | 3047 | // check principal url from CalDAV here after X-EGROUPWARE-UID and to get optional X-EGROUPWARE-QUANTITY |
| 2853 | - if (!$uid) $uid = Api\CalDAV\Principals::url2uid($attributes['value'], null, $cn); |
|
| 3048 | + if (!$uid) |
|
| 3049 | + { |
|
| 3050 | + $uid = Api\CalDAV\Principals::url2uid($attributes['value'], null, $cn); |
|
| 3051 | + } |
|
| 2854 | 3052 | |
| 2855 | 3053 | // try to find an email address |
| 2856 | 3054 | if (!$uid && $email && ($uid = $GLOBALS['egw']->accounts->name2id($email, 'account_email'))) |
@@ -2918,7 +3116,10 @@ discard block |
||
| 2918 | 3116 | } |
| 2919 | 3117 | $status = 'U'; // keep the group |
| 2920 | 3118 | } |
| 2921 | - else continue; // can't find this group |
|
| 3119 | + else { |
|
| 3120 | + continue; |
|
| 3121 | + } |
|
| 3122 | + // can't find this group |
|
| 2922 | 3123 | } |
| 2923 | 3124 | elseif (empty($searcharray)) |
| 2924 | 3125 | { |
@@ -2977,7 +3178,9 @@ discard block |
||
| 2977 | 3178 | |
| 2978 | 3179 | try { |
| 2979 | 3180 | if (!$this->calendarOwner && is_numeric($uid) && $role == 'CHAIR') |
| 2980 | - $component->getAttribute('ORGANIZER'); |
|
| 3181 | + { |
|
| 3182 | + $component->getAttribute('ORGANIZER'); |
|
| 3183 | + } |
|
| 2981 | 3184 | } |
| 2982 | 3185 | catch(Horde_Icalendar_Exception $e) |
| 2983 | 3186 | { |
@@ -3014,7 +3217,10 @@ discard block |
||
| 3014 | 3217 | } |
| 3015 | 3218 | break; |
| 3016 | 3219 | case 'CREATED': // will be written direct to the event |
| 3017 | - if ($event['modified']) break; |
|
| 3220 | + if ($event['modified']) |
|
| 3221 | + { |
|
| 3222 | + break; |
|
| 3223 | + } |
|
| 3018 | 3224 | // fall through |
| 3019 | 3225 | case 'LAST-MODIFIED': // will be written direct to the event |
| 3020 | 3226 | $event['modified'] = $attributes['value']; |
@@ -3035,7 +3241,11 @@ discard block |
||
| 3035 | 3241 | break; |
| 3036 | 3242 | |
| 3037 | 3243 | case 'ATTACH': |
| 3038 | - if ($attributes['params'] && !empty($attributes['params']['FMTTYPE'])) break; // handeled by managed attachment code |
|
| 3244 | + if ($attributes['params'] && !empty($attributes['params']['FMTTYPE'])) |
|
| 3245 | + { |
|
| 3246 | + break; |
|
| 3247 | + } |
|
| 3248 | + // handeled by managed attachment code |
|
| 3039 | 3249 | // fall throught to store external attachment url |
| 3040 | 3250 | default: // X- attribute or other by EGroupware unsupported property |
| 3041 | 3251 | //error_log(__METHOD__."() $attributes[name] = ".array2string($attributes)); |
@@ -3166,7 +3376,10 @@ discard block |
||
| 3166 | 3376 | $event['end'] = $event['start'] + 60 * $this->cal_prefs['defaultlength']; |
| 3167 | 3377 | } |
| 3168 | 3378 | |
| 3169 | - if ($this->calendarOwner) $event['owner'] = $this->calendarOwner; |
|
| 3379 | + if ($this->calendarOwner) |
|
| 3380 | + { |
|
| 3381 | + $event['owner'] = $this->calendarOwner; |
|
| 3382 | + } |
|
| 3170 | 3383 | |
| 3171 | 3384 | // parsing ATTACH attributes for managed attachments |
| 3172 | 3385 | $event['attach-delete-by-put'] = $component->getAttributeDefault('X-EGROUPWARE-ATTACH-INCLUDED', null) === 'TRUE'; |
@@ -3192,7 +3405,10 @@ discard block |
||
| 3192 | 3405 | $filter = $relax ? 'relax' : 'check'; |
| 3193 | 3406 | $event = array_shift($events); |
| 3194 | 3407 | $eventId = -1; |
| 3195 | - if ($this->so->isWholeDay($event)) $event['whole_day'] = true; |
|
| 3408 | + if ($this->so->isWholeDay($event)) |
|
| 3409 | + { |
|
| 3410 | + $event['whole_day'] = true; |
|
| 3411 | + } |
|
| 3196 | 3412 | if ($contentID) |
| 3197 | 3413 | { |
| 3198 | 3414 | $parts = preg_split('/:/', $contentID); |
@@ -3224,8 +3440,16 @@ discard block |
||
| 3224 | 3440 | */ |
| 3225 | 3441 | function freebusy($user,$end=null,$utc=true, $charset='UTF-8', $start=null, $method='PUBLISH', array $extra=null) |
| 3226 | 3442 | { |
| 3227 | - if (!$start) $start = time(); // default now |
|
| 3228 | - if (!$end) $end = time() + 100*DAY_s; // default next 100 days |
|
| 3443 | + if (!$start) |
|
| 3444 | + { |
|
| 3445 | + $start = time(); |
|
| 3446 | + } |
|
| 3447 | + // default now |
|
| 3448 | + if (!$end) |
|
| 3449 | + { |
|
| 3450 | + $end = time() + 100*DAY_s; |
|
| 3451 | + } |
|
| 3452 | + // default next 100 days |
|
| 3229 | 3453 | |
| 3230 | 3454 | $vcal = new Horde_Icalendar; |
| 3231 | 3455 | $vcal->setAttribute('PRODID','-//EGroupware//NONSGML EGroupware Calendar '.$GLOBALS['egw_info']['apps']['calendar']['version'].'//'. |
@@ -3247,10 +3471,13 @@ discard block |
||
| 3247 | 3471 | $attributes[$attr] = date('Ymd\THis', $value); |
| 3248 | 3472 | } |
| 3249 | 3473 | } |
| 3250 | - if (is_null($extra)) $extra = array( |
|
| 3474 | + if (is_null($extra)) |
|
| 3475 | + { |
|
| 3476 | + $extra = array( |
|
| 3251 | 3477 | 'URL' => $this->freebusy_url($user), |
| 3252 | 3478 | 'ORGANIZER' => 'mailto:'.$GLOBALS['egw']->accounts->id2name($user,'account_email'), |
| 3253 | 3479 | ); |
| 3480 | + } |
|
| 3254 | 3481 | foreach($attributes+$extra as $attr => $value) |
| 3255 | 3482 | { |
| 3256 | 3483 | $vfreebusy->setAttribute($attr, $value); |
@@ -3266,9 +3493,18 @@ discard block |
||
| 3266 | 3493 | { |
| 3267 | 3494 | foreach ($fbdata as $event) |
| 3268 | 3495 | { |
| 3269 | - if ($event['non_blocking']) continue; |
|
| 3270 | - if ($event['uid'] === $extra['X-CALENDARSERVER-MASK-UID']) continue; |
|
| 3271 | - if ($event['participants'][$user] == 'R') continue; |
|
| 3496 | + if ($event['non_blocking']) |
|
| 3497 | + { |
|
| 3498 | + continue; |
|
| 3499 | + } |
|
| 3500 | + if ($event['uid'] === $extra['X-CALENDARSERVER-MASK-UID']) |
|
| 3501 | + { |
|
| 3502 | + continue; |
|
| 3503 | + } |
|
| 3504 | + if ($event['participants'][$user] == 'R') |
|
| 3505 | + { |
|
| 3506 | + continue; |
|
| 3507 | + } |
|
| 3272 | 3508 | |
| 3273 | 3509 | $fbtype = $event['participants'][$user] == 'T' ? 'BUSY-TENTATIVE' : 'BUSY'; |
| 3274 | 3510 | |
@@ -37,12 +37,15 @@ discard block |
||
| 37 | 37 | * |
| 38 | 38 | * @param string $_identifier |
| 39 | 39 | */ |
| 40 | - public function __construct( $_identifier='' ){ |
|
| 40 | + public function __construct( $_identifier='' ) |
|
| 41 | + { |
|
| 41 | 42 | $this->identifier = $_identifier; |
| 42 | - if(!is_object($this->bo)) { |
|
| 43 | + if(!is_object($this->bo)) |
|
| 44 | + { |
|
| 43 | 45 | $this->bo = new calendar_bo(); |
| 44 | 46 | } |
| 45 | - if($this->identifier) { |
|
| 47 | + if($this->identifier) |
|
| 48 | + { |
|
| 46 | 49 | $this->record = $this->bo->read($this->identifier); |
| 47 | 50 | } |
| 48 | 51 | } |
@@ -52,7 +55,8 @@ discard block |
||
| 52 | 55 | * |
| 53 | 56 | * @param string $_attribute_name |
| 54 | 57 | */ |
| 55 | - public function __get($_attribute_name) { |
|
| 58 | + public function __get($_attribute_name) |
|
| 59 | + { |
|
| 56 | 60 | return $this->record[$_attribute_name]; |
| 57 | 61 | } |
| 58 | 62 | |
@@ -62,7 +66,8 @@ discard block |
||
| 62 | 66 | * @param string $_attribute_name |
| 63 | 67 | * @param data $data |
| 64 | 68 | */ |
| 65 | - public function __set($_attribute_name, $data) { |
|
| 69 | + public function __set($_attribute_name, $data) |
|
| 70 | + { |
|
| 66 | 71 | $this->record[$_attribute_name] = $data; |
| 67 | 72 | } |
| 68 | 73 | |
@@ -74,7 +79,8 @@ discard block |
||
| 74 | 79 | * |
| 75 | 80 | * @return array complete record as associative array |
| 76 | 81 | */ |
| 77 | - public function get_record_array() { |
|
| 82 | + public function get_record_array() |
|
| 83 | + { |
|
| 78 | 84 | return $this->record; |
| 79 | 85 | } |
| 80 | 86 | |
@@ -83,8 +89,10 @@ discard block |
||
| 83 | 89 | * |
| 84 | 90 | *@return string tiltle |
| 85 | 91 | */ |
| 86 | - public function get_title() { |
|
| 87 | - if (empty($this->record)) { |
|
| 92 | + public function get_title() |
|
| 93 | + { |
|
| 94 | + if (empty($this->record)) |
|
| 95 | + { |
|
| 88 | 96 | $this->get_record(); |
| 89 | 97 | } |
| 90 | 98 | return $this->record['title']; |
@@ -96,7 +104,8 @@ discard block |
||
| 96 | 104 | * @todo add some checks |
| 97 | 105 | * @return void |
| 98 | 106 | */ |
| 99 | - public function set_record(array $_record){ |
|
| 107 | + public function set_record(array $_record) |
|
| 108 | + { |
|
| 100 | 109 | $this->record = $_record; |
| 101 | 110 | } |
| 102 | 111 | |
@@ -105,7 +114,8 @@ discard block |
||
| 105 | 114 | * |
| 106 | 115 | * @return string identifier of current record |
| 107 | 116 | */ |
| 108 | - public function get_identifier() { |
|
| 117 | + public function get_identifier() |
|
| 118 | + { |
|
| 109 | 119 | return $this->identifier; |
| 110 | 120 | } |
| 111 | 121 | |
@@ -115,7 +125,8 @@ discard block |
||
| 115 | 125 | * |
| 116 | 126 | * @return string Full URL of an icon, or appname/icon_name |
| 117 | 127 | */ |
| 118 | - public function get_icon() { |
|
| 128 | + public function get_icon() |
|
| 129 | + { |
|
| 119 | 130 | return 'calendar/navbar'; |
| 120 | 131 | } |
| 121 | 132 | |
@@ -124,7 +135,8 @@ discard block |
||
| 124 | 135 | * |
| 125 | 136 | * @return string identifier |
| 126 | 137 | */ |
| 127 | - public function save ( $_dst_identifier ) { |
|
| 138 | + public function save ( $_dst_identifier ) |
|
| 139 | + { |
|
| 128 | 140 | // Not yet implemeted |
| 129 | 141 | $this->identifier = $_dst_identifier; |
| 130 | 142 | } |
@@ -135,7 +147,8 @@ discard block |
||
| 135 | 147 | * @param string $_dst_identifier |
| 136 | 148 | * @return string dst_identifier |
| 137 | 149 | */ |
| 138 | - public function copy ( $_dst_identifier ) { |
|
| 150 | + public function copy ( $_dst_identifier ) |
|
| 151 | + { |
|
| 139 | 152 | unset($_dst_identifier); // not used |
| 140 | 153 | } |
| 141 | 154 | |
@@ -146,7 +159,8 @@ discard block |
||
| 146 | 159 | * @param string $_dst_identifier |
| 147 | 160 | * @return string dst_identifier |
| 148 | 161 | */ |
| 149 | - public function move ( $_dst_identifier ) { |
|
| 162 | + public function move ( $_dst_identifier ) |
|
| 163 | + { |
|
| 150 | 164 | unset($_dst_identifier); // not used |
| 151 | 165 | } |
| 152 | 166 | |
@@ -154,7 +168,8 @@ discard block |
||
| 154 | 168 | * delets current record from backend |
| 155 | 169 | * |
| 156 | 170 | */ |
| 157 | - public function delete () { |
|
| 171 | + public function delete () |
|
| 172 | + { |
|
| 158 | 173 | |
| 159 | 174 | } |
| 160 | 175 | |
@@ -162,7 +177,8 @@ discard block |
||
| 162 | 177 | * destructor |
| 163 | 178 | * |
| 164 | 179 | */ |
| 165 | - public function __destruct() { |
|
| 180 | + public function __destruct() |
|
| 181 | + { |
|
| 166 | 182 | } |
| 167 | 183 | |
| 168 | 184 | } |
| 169 | 185 | \ No newline at end of file |
@@ -77,8 +77,14 @@ discard block |
||
| 77 | 77 | */ |
| 78 | 78 | function listview($_content=null,$msg='',$home=false) |
| 79 | 79 | { |
| 80 | - if ($_GET['msg']) $msg .= $_GET['msg']; |
|
| 81 | - if ($this->group_warning) $msg .= $this->group_warning; |
|
| 80 | + if ($_GET['msg']) |
|
| 81 | + { |
|
| 82 | + $msg .= $_GET['msg']; |
|
| 83 | + } |
|
| 84 | + if ($this->group_warning) |
|
| 85 | + { |
|
| 86 | + $msg .= $this->group_warning; |
|
| 87 | + } |
|
| 82 | 88 | |
| 83 | 89 | $etpl = new Etemplate('calendar.list'); |
| 84 | 90 | |
@@ -106,7 +112,8 @@ discard block |
||
| 106 | 112 | { |
| 107 | 113 | // Allow merge using the date range filter |
| 108 | 114 | if(strpos($_content['nm']['action'],'document') !== false && |
| 109 | - !count($_content['nm']['selected']) && !$_content['nm']['select_all']) { |
|
| 115 | + !count($_content['nm']['selected']) && !$_content['nm']['select_all']) |
|
| 116 | + { |
|
| 110 | 117 | $_content['nm']['selected'][] = $this->get_merge_range($_content['nm']); |
| 111 | 118 | } |
| 112 | 119 | if (!count($_content['nm']['selected']) && !$_content['nm']['select_all']) |
@@ -165,15 +172,21 @@ discard block |
||
| 165 | 172 | { |
| 166 | 173 | $params = null; |
| 167 | 174 | parse_str(substr($json_data['request']['parameters'][0], 10), $params); // cut off "/index.php?" |
| 168 | - if (isset($params['keywords'])) // new search => set filters so every match is shown |
|
| 175 | + if (isset($params['keywords'])) |
|
| 176 | + { |
|
| 177 | + // new search => set filters so every match is shown |
|
| 169 | 178 | { |
| 170 | 179 | $this->adjust_for_search($params['keywords'], $content['nm']); |
| 171 | 180 | } |
| 181 | + } |
|
| 172 | 182 | } |
| 173 | - if (isset($_REQUEST['keywords'])) // new search => set filters so every match is shown |
|
| 183 | + if (isset($_REQUEST['keywords'])) |
|
| 184 | + { |
|
| 185 | + // new search => set filters so every match is shown |
|
| 174 | 186 | { |
| 175 | 187 | $this->adjust_for_search($_REQUEST['keywords'],$content['nm']); |
| 176 | 188 | } |
| 189 | + } |
|
| 177 | 190 | $sel_options['filter'] = &$this->date_filters; |
| 178 | 191 | |
| 179 | 192 | // Send categories for row styling - calendar uses no_cat, so they don't go automatically |
@@ -264,9 +277,12 @@ discard block |
||
| 264 | 277 | $old_params = Api\Cache::getSession('calendar', 'calendar_list'); |
| 265 | 278 | if (is_array($old_params)) |
| 266 | 279 | { |
| 267 | - if ($old_params['filter'] && $old_params['filter'] != $params['filter']) // filter changed => order accordingly |
|
| 280 | + if ($old_params['filter'] && $old_params['filter'] != $params['filter']) |
|
| 281 | + { |
|
| 282 | + // filter changed => order accordingly |
|
| 268 | 283 | { |
| 269 | 284 | $params['order'] = 'cal_start'; |
| 285 | + } |
|
| 270 | 286 | $params['sort'] = $params['filter'] == 'before' ? 'DESC' : 'ASC'; |
| 271 | 287 | } |
| 272 | 288 | if ($old_params['search'] != $params['search']) |
@@ -274,7 +290,10 @@ discard block |
||
| 274 | 290 | $this->adjust_for_search($params['search'],$params); |
| 275 | 291 | } |
| 276 | 292 | } |
| 277 | - if (!$params['csv_export']) Api\Cache::setSession('calendar', 'calendar_list', $params); |
|
| 293 | + if (!$params['csv_export']) |
|
| 294 | + { |
|
| 295 | + Api\Cache::setSession('calendar', 'calendar_list', $params); |
|
| 296 | + } |
|
| 278 | 297 | |
| 279 | 298 | // do we need to query custom fields and which |
| 280 | 299 | // Check stored preference if selectcols isn't available (ie: first call) |
@@ -288,7 +307,10 @@ discard block |
||
| 288 | 307 | $cfs = array(); |
| 289 | 308 | foreach($select_cols as $col) |
| 290 | 309 | { |
| 291 | - if ($col[0] == '#') $cfs[] = substr($col,1); |
|
| 310 | + if ($col[0] == '#') |
|
| 311 | + { |
|
| 312 | + $cfs[] = substr($col,1); |
|
| 313 | + } |
|
| 292 | 314 | } |
| 293 | 315 | } |
| 294 | 316 | $search_params = array( |
@@ -521,7 +543,10 @@ discard block |
||
| 521 | 543 | { |
| 522 | 544 | $rows['format'] = '64'; |
| 523 | 545 | } |
| 524 | - if ($this->cat_id) $rows['no_cat_id'] = true; |
|
| 546 | + if ($this->cat_id) |
|
| 547 | + { |
|
| 548 | + $rows['no_cat_id'] = true; |
|
| 549 | + } |
|
| 525 | 550 | if (!$GLOBALS['egw_info']['user']['apps']['projectmanager']) |
| 526 | 551 | { |
| 527 | 552 | $params['options-selectcols']['pm_id'] = false; |
@@ -587,7 +612,10 @@ discard block |
||
| 587 | 612 | $this->get_rows($query,$events,$readonlys); |
| 588 | 613 | foreach($events as $key => $event) |
| 589 | 614 | { |
| 590 | - if (!in_array($event['id'],$checked) && !in_array($event['id'].':'.$event['recur_date'], $checked)) unset($events[$key]); |
|
| 615 | + if (!in_array($event['id'],$checked) && !in_array($event['id'].':'.$event['recur_date'], $checked)) |
|
| 616 | + { |
|
| 617 | + unset($events[$key]); |
|
| 618 | + } |
|
| 591 | 619 | } |
| 592 | 620 | $checked = array_values($events); // Clear keys |
| 593 | 621 | } |
@@ -601,7 +629,10 @@ discard block |
||
| 601 | 629 | $ids = array(); |
| 602 | 630 | foreach($checked as $id) |
| 603 | 631 | { |
| 604 | - if (is_array($id)) $id = $id['id']; |
|
| 632 | + if (is_array($id)) |
|
| 633 | + { |
|
| 634 | + $id = $id['id']; |
|
| 635 | + } |
|
| 605 | 636 | // get rid of recurrences, doublicate series and calendar-integration events |
| 606 | 637 | if (($id = (int)$id)) |
| 607 | 638 | { |
@@ -615,7 +646,10 @@ discard block |
||
| 615 | 646 | exit(); |
| 616 | 647 | |
| 617 | 648 | case 'document': |
| 618 | - if (!$settings) $settings = $GLOBALS['egw_info']['user']['preferences']['calendar']['default_document']; |
|
| 649 | + if (!$settings) |
|
| 650 | + { |
|
| 651 | + $settings = $GLOBALS['egw_info']['user']['preferences']['calendar']['default_document']; |
|
| 652 | + } |
|
| 619 | 653 | $document_merge = new calendar_merge(); |
| 620 | 654 | $msg = $document_merge->download($settings, $checked, '', $GLOBALS['egw_info']['user']['preferences']['calendar']['document_dir']); |
| 621 | 655 | $failed = count($checked); |
@@ -802,7 +836,8 @@ discard block |
||
| 802 | 836 | $success++; |
| 803 | 837 | |
| 804 | 838 | // Can't link to just one of a recurring series of events |
| 805 | - if(!$recur_date || $app) { |
|
| 839 | + if(!$recur_date || $app) |
|
| 840 | + { |
|
| 806 | 841 | // Create link |
| 807 | 842 | $link_id = $app ? $app_id : $id; |
| 808 | 843 | Link::link($app ? $app : 'calendar', $link_id, 'timesheet', $timesheet_bo->data['ts_id']); |
@@ -179,7 +179,10 @@ discard block |
||
| 179 | 179 | */ |
| 180 | 180 | public function week_number($time) |
| 181 | 181 | { |
| 182 | - if (!is_a($time,'DateTime')) $time = new Api\DateTime($time); |
|
| 182 | + if (!is_a($time,'DateTime')) |
|
| 183 | + { |
|
| 184 | + $time = new Api\DateTime($time); |
|
| 185 | + } |
|
| 183 | 186 | |
| 184 | 187 | // if week does not start Monday and $time is Sunday --> add one day |
| 185 | 188 | if ($this->cal_prefs['weekdaystarts'] != 'Monday' && !($wday = $time->format('w'))) |
@@ -237,7 +240,8 @@ discard block |
||
| 237 | 240 | $tmpl = new Etemplate('calendar.toolbar'); |
| 238 | 241 | $tmpl->setElementAttribute('toolbar', 'actions', $this->getToolbarActions($content)); |
| 239 | 242 | // Adjust toolbar for mobile |
| 240 | - if(Api\Header\UserAgent::mobile()){ |
|
| 243 | + if(Api\Header\UserAgent::mobile()) |
|
| 244 | + { |
|
| 241 | 245 | $tmpl->setElementAttribute('toolbar','class', 'et2_head_toolbar'); |
| 242 | 246 | $tmpl->setElementAttribute('toolbar','view_range', '3'); |
| 243 | 247 | } |
@@ -396,10 +400,12 @@ discard block |
||
| 396 | 400 | { |
| 397 | 401 | foreach (array_keys($actions) as $key) |
| 398 | 402 | { |
| 399 | - if (!in_array($key, array('day_view','week_view','next', 'today','previous'))) { |
|
| 403 | + if (!in_array($key, array('day_view','week_view','next', 'today','previous'))) |
|
| 404 | + { |
|
| 400 | 405 | $actions[$key]['toolbarDefault'] = false; |
| 401 | 406 | } |
| 402 | - else { |
|
| 407 | + else |
|
| 408 | + { |
|
| 403 | 409 | $actions[$key]['toolbarDefault'] = true; |
| 404 | 410 | } |
| 405 | 411 | } |
@@ -416,29 +422,38 @@ discard block |
||
| 416 | 422 | */ |
| 417 | 423 | function &planner($content = array(), $home=false) |
| 418 | 424 | { |
| 419 | - if ($this->sortby == 'month') // yearly planner with month rows |
|
| 425 | + if ($this->sortby == 'month') |
|
| 426 | + { |
|
| 427 | + // yearly planner with month rows |
|
| 420 | 428 | { |
| 421 | 429 | $this->first = $this->bo->date2array($this->date); |
| 430 | + } |
|
| 422 | 431 | $this->first['day'] = 1; |
| 423 | 432 | unset($this->first['raw']); |
| 424 | 433 | $this->last = $this->first; |
| 425 | 434 | $this->last['year']++; |
| 426 | 435 | $this->last = $this->bo->date2ts($this->last)-1; |
| 427 | 436 | } |
| 428 | - elseif (!$this->planner_view || $this->planner_view == 'month') // planner monthview |
|
| 437 | + elseif (!$this->planner_view || $this->planner_view == 'month') |
|
| 438 | + { |
|
| 439 | + // planner monthview |
|
| 429 | 440 | { |
| 430 | 441 | if ($this->day < 15) // show one complete month |
| 431 | 442 | { |
| 432 | 443 | $this->_week_align_month($this->first,$this->last); |
| 444 | + } |
|
| 433 | 445 | } |
| 434 | 446 | else // show 2 half month |
| 435 | 447 | { |
| 436 | 448 | $this->_week_align_month($this->first,$this->last,15); |
| 437 | 449 | } |
| 438 | 450 | } |
| 439 | - elseif ($this->planner_view == 'week' || $this->planner_view == 'weekN') // weeekview |
|
| 451 | + elseif ($this->planner_view == 'week' || $this->planner_view == 'weekN') |
|
| 452 | + { |
|
| 453 | + // weeekview |
|
| 440 | 454 | { |
| 441 | 455 | $start = new Api\DateTime($this->date); |
| 456 | + } |
|
| 442 | 457 | $start->setWeekstart(); |
| 443 | 458 | $this->first = $start->format('ts'); |
| 444 | 459 | $this->last = $this->bo->date2array($this->first); |
@@ -477,7 +492,10 @@ discard block |
||
| 477 | 492 | $this->to_client($event); |
| 478 | 493 | } |
| 479 | 494 | |
| 480 | - if ($this->debug > 0) $this->bo->debug_message('uiviews::planner() date=%1: first=%2, last=%3',False,$this->date,$this->bo->date2string($this->first),$this->bo->date2string($this->last)); |
|
| 495 | + if ($this->debug > 0) |
|
| 496 | + { |
|
| 497 | + $this->bo->debug_message('uiviews::planner() date=%1: first=%2, last=%3',False,$this->date,$this->bo->date2string($this->first),$this->bo->date2string($this->last)); |
|
| 498 | + } |
|
| 481 | 499 | |
| 482 | 500 | $tmpl = $home ? $home : new Etemplate('calendar.planner'); |
| 483 | 501 | |
@@ -501,7 +519,10 @@ discard block |
||
| 501 | 519 | */ |
| 502 | 520 | function &month($weeks=0,$home=false) |
| 503 | 521 | { |
| 504 | - if ($this->debug > 0) $this->bo->debug_message('uiviews::month(weeks=%1) date=%2',True,$weeks,$this->date); |
|
| 522 | + if ($this->debug > 0) |
|
| 523 | + { |
|
| 524 | + $this->bo->debug_message('uiviews::month(weeks=%1) date=%2',True,$weeks,$this->date); |
|
| 525 | + } |
|
| 505 | 526 | |
| 506 | 527 | if (!$home) |
| 507 | 528 | { |
@@ -543,7 +564,10 @@ discard block |
||
| 543 | 564 | $weekNavH = "1 month"; |
| 544 | 565 | $navHeader = lang(adodb_date('F',$this->bo->date2ts($this->date))).' '.$this->year; |
| 545 | 566 | } |
| 546 | - if ($this->debug > 0) $this->bo->debug_message('uiviews::month(%1) date=%2: first=%3, last=%4',False,$weeks,$this->date,$this->bo->date2string($this->first),$this->bo->date2string($this->last)); |
|
| 567 | + if ($this->debug > 0) |
|
| 568 | + { |
|
| 569 | + $this->bo->debug_message('uiviews::month(%1) date=%2: first=%3, last=%4',False,$weeks,$this->date,$this->bo->date2string($this->first),$this->bo->date2string($this->last)); |
|
| 570 | + } |
|
| 547 | 571 | |
| 548 | 572 | // Loop through, using Api\DateTime to handle DST |
| 549 | 573 | $week = 0; |
@@ -588,7 +612,10 @@ discard block |
||
| 588 | 612 | $start->setWeekstart(); |
| 589 | 613 | $first = $start->format('ts'); |
| 590 | 614 | $start->setDate($this->year,$this->month+1,$day); |
| 591 | - if ($day == 1) $start->add('-1day'); |
|
| 615 | + if ($day == 1) |
|
| 616 | + { |
|
| 617 | + $start->add('-1day'); |
|
| 618 | + } |
|
| 592 | 619 | $start->setWeekstart(); |
| 593 | 620 | // now we need to calculate the end of the last day of that week |
| 594 | 621 | // as simple $last += WEEK_s - 1; does NOT work, if daylight saving changes in that week!!! |
@@ -611,19 +638,31 @@ discard block |
||
| 611 | 638 | if (!$days) |
| 612 | 639 | { |
| 613 | 640 | $days = isset($_GET['days']) ? $_GET['days'] : $this->cal_prefs['days_in_weekview']; |
| 614 | - if ($days != 5) $days = 7; |
|
| 615 | - if ($days != $this->cal_prefs['days_in_weekview']) // save the preference |
|
| 641 | + if ($days != 5) |
|
| 642 | + { |
|
| 643 | + $days = 7; |
|
| 644 | + } |
|
| 645 | + if ($days != $this->cal_prefs['days_in_weekview']) |
|
| 646 | + { |
|
| 647 | + // save the preference |
|
| 616 | 648 | { |
| 617 | 649 | $GLOBALS['egw']->preferences->add('calendar','days_in_weekview',$days); |
| 650 | + } |
|
| 618 | 651 | $GLOBALS['egw']->preferences->save_repository(); |
| 619 | 652 | $this->cal_prefs['days_in_weekview'] = $days; |
| 620 | 653 | } |
| 621 | 654 | } |
| 622 | - if ($this->debug > 0) $this->bo->debug_message('uiviews::week(days=%1) date=%2',True,$days,$this->date); |
|
| 655 | + if ($this->debug > 0) |
|
| 656 | + { |
|
| 657 | + $this->bo->debug_message('uiviews::week(days=%1) date=%2',True,$days,$this->date); |
|
| 658 | + } |
|
| 623 | 659 | |
| 624 | - if ($days <= 4) // next 4 days view |
|
| 660 | + if ($days <= 4) |
|
| 661 | + { |
|
| 662 | + // next 4 days view |
|
| 625 | 663 | { |
| 626 | 664 | $wd_start = $this->first = $this->bo->date2ts($this->date); |
| 665 | + } |
|
| 627 | 666 | $this->last = strtotime("+$days days",$this->first) - 1; |
| 628 | 667 | $view = $days == 1 ? 'day' : 'day4'; |
| 629 | 668 | } |
@@ -632,12 +671,15 @@ discard block |
||
| 632 | 671 | $start = new Api\DateTime($this->date); |
| 633 | 672 | $start->setWeekstart(); |
| 634 | 673 | $wd_start = $this->first = $start->format('ts'); |
| 635 | - if ($days <= 5) // no weekend-days |
|
| 674 | + if ($days <= 5) |
|
| 675 | + { |
|
| 676 | + // no weekend-days |
|
| 636 | 677 | { |
| 637 | 678 | switch($this->cal_prefs['weekdaystarts']) |
| 638 | 679 | { |
| 639 | 680 | case 'Saturday': |
| 640 | 681 | $this->first = strtotime("+2 days",$this->first); |
| 682 | + } |
|
| 641 | 683 | break; |
| 642 | 684 | case 'Sunday': |
| 643 | 685 | $this->first = strtotime("+1 day",$this->first); |
@@ -666,7 +708,10 @@ discard block |
||
| 666 | 708 | ) + $this->search_params; |
| 667 | 709 | |
| 668 | 710 | $users = $this->search_params['users']; |
| 669 | - if (!is_array($users)) $users = array($users); |
|
| 711 | + if (!is_array($users)) |
|
| 712 | + { |
|
| 713 | + $users = array($users); |
|
| 714 | + } |
|
| 670 | 715 | |
| 671 | 716 | $content = array('view' => array()); |
| 672 | 717 | |
@@ -689,8 +734,7 @@ discard block |
||
| 689 | 734 | $this->last = ($days == 4 ? $this->last : $search_params['end'] = strtotime("+$days days",$this->first) - 1); |
| 690 | 735 | if (count($users) == 1 || count($users) >= $this->cal_prefs['week_consolidate'] ||// for more then X users, show all in one row |
| 691 | 736 | $days == 1 // Showing just 1 day |
| 692 | - ) |
|
| 693 | - { |
|
| 737 | + ) { |
|
| 694 | 738 | $content['view'][] = (array)$this->tagWholeDayOnTop($this->bo->search($search_params)) + |
| 695 | 739 | array('owner' => $users); |
| 696 | 740 | } |
@@ -793,7 +837,8 @@ discard block |
||
| 793 | 837 | } |
| 794 | 838 | $todo['icons'] = $icons; |
| 795 | 839 | $class = $class == 'row_on' ? 'row_off' : 'row_on'; |
| 796 | - if($todo['edit']) { |
|
| 840 | + if($todo['edit']) |
|
| 841 | + { |
|
| 797 | 842 | $todo['edit_size'] = $todo['edit']['size']; |
| 798 | 843 | unset($todo['edit']['size']); |
| 799 | 844 | $edit_icon_href = Api\Html::a_href( $icons, $todo['edit'],'',' data-todo="app|750x590" '); |
@@ -914,7 +959,10 @@ discard block |
||
| 914 | 959 | // This disables the event actions for the grid rows (calendar weeks/owners) |
| 915 | 960 | foreach($actions as $id => &$action) |
| 916 | 961 | { |
| 917 | - if($id=='add') continue; |
|
| 962 | + if($id=='add') |
|
| 963 | + { |
|
| 964 | + continue; |
|
| 965 | + } |
|
| 918 | 966 | if(!$action['enabled']) |
| 919 | 967 | { |
| 920 | 968 | $action['enabled'] = 'javaScript:app.calendar.is_event'; |
@@ -120,7 +120,10 @@ discard block |
||
| 120 | 120 | } |
| 121 | 121 | else |
| 122 | 122 | { |
| 123 | - if (!is_array($event)) $event = $this->bo->read($event); |
|
| 123 | + if (!is_array($event)) |
|
| 124 | + { |
|
| 125 | + $event = $this->bo->read($event); |
|
| 126 | + } |
|
| 124 | 127 | $name = $event[self::$path_attr]; |
| 125 | 128 | } |
| 126 | 129 | $name .= self::$path_extension; |
@@ -181,10 +184,13 @@ discard block |
||
| 181 | 184 | } |
| 182 | 185 | $filter[$name] = $this->bo->now + 24*3600*($name == 'start' ? -1 : 1)*abs($value); |
| 183 | 186 | } |
| 184 | - if ($this->client_shared_uid_exceptions) // do NOT return (non-virtual) exceptions |
|
| 187 | + if ($this->client_shared_uid_exceptions) |
|
| 188 | + { |
|
| 189 | + // do NOT return (non-virtual) exceptions |
|
| 185 | 190 | { |
| 186 | 191 | $filter['query'] = array('cal_reference' => 0); |
| 187 | 192 | } |
| 193 | + } |
|
| 188 | 194 | |
| 189 | 195 | if ($path == '/calendar/') |
| 190 | 196 | { |
@@ -214,7 +220,11 @@ discard block |
||
| 214 | 220 | // when trying to request not supported components, eg. VTODO on a calendar collection |
| 215 | 221 | return true; |
| 216 | 222 | } |
| 217 | - if ($id) $path = dirname($path).'/'; // caldav_name get's added anyway in the callback |
|
| 223 | + if ($id) |
|
| 224 | + { |
|
| 225 | + $path = dirname($path).'/'; |
|
| 226 | + } |
|
| 227 | + // caldav_name get's added anyway in the callback |
|
| 218 | 228 | |
| 219 | 229 | if ($this->debug > 1) |
| 220 | 230 | { |
@@ -276,7 +286,11 @@ discard block |
||
| 276 | 286 | $n = 0; |
| 277 | 287 | foreach($files as $file) |
| 278 | 288 | { |
| 279 | - if (!$n++) continue; // first entry is collection itself |
|
| 289 | + if (!$n++) |
|
| 290 | + { |
|
| 291 | + continue; |
|
| 292 | + } |
|
| 293 | + // first entry is collection itself |
|
| 280 | 294 | |
| 281 | 295 | $icalendar = $file['props']['calendar-data']['val']; |
| 282 | 296 | if (($start = strpos($icalendar, 'BEGIN:VEVENT')) !== false && |
@@ -320,10 +334,17 @@ discard block |
||
| 320 | 334 | */ |
| 321 | 335 | function propfind_callback($path,array $filter,$start=false) |
| 322 | 336 | { |
| 323 | - if ($this->debug) $starttime = microtime(true); |
|
| 337 | + if ($this->debug) |
|
| 338 | + { |
|
| 339 | + $starttime = microtime(true); |
|
| 340 | + } |
|
| 324 | 341 | |
| 325 | 342 | $calendar_data = $this->caldav->prop_requested('calendar-data', Api\CalDAV::CALDAV, true); |
| 326 | - if (!is_array($calendar_data)) $calendar_data = false; // not in allprop or autoindex |
|
| 343 | + if (!is_array($calendar_data)) |
|
| 344 | + { |
|
| 345 | + $calendar_data = false; |
|
| 346 | + } |
|
| 347 | + // not in allprop or autoindex |
|
| 327 | 348 | |
| 328 | 349 | $files = array(); |
| 329 | 350 | |
@@ -481,7 +502,10 @@ discard block |
||
| 481 | 502 | switch($filter['name']) |
| 482 | 503 | { |
| 483 | 504 | case 'comp-filter': |
| 484 | - if ($this->debug > 1) error_log(__METHOD__."($options[path],...) comp-filter='{$filter['attrs']['name']}'"); |
|
| 505 | + if ($this->debug > 1) |
|
| 506 | + { |
|
| 507 | + error_log(__METHOD__."($options[path],...) comp-filter='{$filter['attrs']['name']}'"); |
|
| 508 | + } |
|
| 485 | 509 | |
| 486 | 510 | switch($filter['attrs']['name']) |
| 487 | 511 | { |
@@ -496,14 +520,23 @@ discard block |
||
| 496 | 520 | } |
| 497 | 521 | break; |
| 498 | 522 | case 'prop-filter': |
| 499 | - if ($this->debug > 1) error_log(__METHOD__."($options[path],...) prop-filter='{$filter['attrs']['name']}'"); |
|
| 523 | + if ($this->debug > 1) |
|
| 524 | + { |
|
| 525 | + error_log(__METHOD__."($options[path],...) prop-filter='{$filter['attrs']['name']}'"); |
|
| 526 | + } |
|
| 500 | 527 | $prop_filter = $filter['attrs']['name']; |
| 501 | 528 | break; |
| 502 | 529 | case 'text-match': |
| 503 | - if ($this->debug > 1) error_log(__METHOD__."($options[path],...) text-match: $prop_filter='{$filter['data']}'"); |
|
| 530 | + if ($this->debug > 1) |
|
| 531 | + { |
|
| 532 | + error_log(__METHOD__."($options[path],...) text-match: $prop_filter='{$filter['data']}'"); |
|
| 533 | + } |
|
| 504 | 534 | if (!isset($this->filter_prop2cal[strtoupper($prop_filter)])) |
| 505 | 535 | { |
| 506 | - if ($this->debug) error_log(__METHOD__."($options[path],".array2string($options).",...) unknown property '$prop_filter' --> ignored"); |
|
| 536 | + if ($this->debug) |
|
| 537 | + { |
|
| 538 | + error_log(__METHOD__."($options[path],".array2string($options).",...) unknown property '$prop_filter' --> ignored"); |
|
| 539 | + } |
|
| 507 | 540 | } |
| 508 | 541 | else |
| 509 | 542 | { |
@@ -512,10 +545,16 @@ discard block |
||
| 512 | 545 | unset($prop_filter); |
| 513 | 546 | break; |
| 514 | 547 | case 'param-filter': |
| 515 | - if ($this->debug) error_log(__METHOD__."($options[path],...) param-filter='{$filter['attrs']['name']}' not (yet) implemented!"); |
|
| 548 | + if ($this->debug) |
|
| 549 | + { |
|
| 550 | + error_log(__METHOD__."($options[path],...) param-filter='{$filter['attrs']['name']}' not (yet) implemented!"); |
|
| 551 | + } |
|
| 516 | 552 | break; |
| 517 | 553 | case 'time-range': |
| 518 | - if ($this->debug > 1) error_log(__FILE__ . __METHOD__."($options[path],...) time-range={$filter['attrs']['start']}-{$filter['attrs']['end']}"); |
|
| 554 | + if ($this->debug > 1) |
|
| 555 | + { |
|
| 556 | + error_log(__FILE__ . __METHOD__."($options[path],...) time-range={$filter['attrs']['start']}-{$filter['attrs']['end']}"); |
|
| 557 | + } |
|
| 519 | 558 | if (!empty($filter['attrs']['start'])) |
| 520 | 559 | { |
| 521 | 560 | $cal_filters['start'] = $this->vCalendar->_parseDateTime($filter['attrs']['start']); |
@@ -526,13 +565,19 @@ discard block |
||
| 526 | 565 | } |
| 527 | 566 | break; |
| 528 | 567 | default: |
| 529 | - if ($this->debug) error_log(__METHOD__."($options[path],".array2string($options).",...) unknown filter --> ignored"); |
|
| 568 | + if ($this->debug) |
|
| 569 | + { |
|
| 570 | + error_log(__METHOD__."($options[path],".array2string($options).",...) unknown filter --> ignored"); |
|
| 571 | + } |
|
| 530 | 572 | break; |
| 531 | 573 | } |
| 532 | 574 | } |
| 533 | - if (count($cal_filters) == $num_filters) // no filters set --> restore default start and end time |
|
| 575 | + if (count($cal_filters) == $num_filters) |
|
| 576 | + { |
|
| 577 | + // no filters set --> restore default start and end time |
|
| 534 | 578 | { |
| 535 | 579 | $cal_filters['start'] = $cal_start; |
| 580 | + } |
|
| 536 | 581 | $cal_filters['end'] = $cal_end; |
| 537 | 582 | } |
| 538 | 583 | } |
@@ -609,7 +654,10 @@ discard block |
||
| 609 | 654 | } |
| 610 | 655 | } |
| 611 | 656 | |
| 612 | - if ($this->debug > 1) error_log(__FILE__ . __METHOD__ ."($options[path],...,$id) calendar-multiget: ids=".implode(',',$ids).', cal_filters='.array2string($cal_filters)); |
|
| 657 | + if ($this->debug > 1) |
|
| 658 | + { |
|
| 659 | + error_log(__FILE__ . __METHOD__ ."($options[path],...,$id) calendar-multiget: ids=".implode(',',$ids).', cal_filters='.array2string($cal_filters)); |
|
| 660 | + } |
|
| 613 | 661 | } |
| 614 | 662 | return true; |
| 615 | 663 | } |
@@ -655,9 +703,15 @@ discard block |
||
| 655 | 703 | private function iCal(array $event,$user=null, $method=null, $expand=false) |
| 656 | 704 | { |
| 657 | 705 | static $handler = null; |
| 658 | - if (is_null($handler)) $handler = $this->_get_handler(); |
|
| 706 | + if (is_null($handler)) |
|
| 707 | + { |
|
| 708 | + $handler = $this->_get_handler(); |
|
| 709 | + } |
|
| 659 | 710 | |
| 660 | - if (!$user) $user = $GLOBALS['egw_info']['user']['account_id']; |
|
| 711 | + if (!$user) |
|
| 712 | + { |
|
| 713 | + $user = $GLOBALS['egw_info']['user']['account_id']; |
|
| 714 | + } |
|
| 661 | 715 | |
| 662 | 716 | // only return alarms in own calendar, not other users calendars |
| 663 | 717 | if ($user != $GLOBALS['egw_info']['user']['account_id']) |
@@ -673,8 +727,14 @@ discard block |
||
| 673 | 727 | { |
| 674 | 728 | if (is_array($expand)) |
| 675 | 729 | { |
| 676 | - if (isset($expand['start'])) $expand['start'] = $this->vCalendar->_parseDateTime($expand['start']); |
|
| 677 | - if (isset($expand['end'])) $expand['end'] = $this->vCalendar->_parseDateTime($expand['end']); |
|
| 730 | + if (isset($expand['start'])) |
|
| 731 | + { |
|
| 732 | + $expand['start'] = $this->vCalendar->_parseDateTime($expand['start']); |
|
| 733 | + } |
|
| 734 | + if (isset($expand['end'])) |
|
| 735 | + { |
|
| 736 | + $expand['end'] = $this->vCalendar->_parseDateTime($expand['end']); |
|
| 737 | + } |
|
| 678 | 738 | } |
| 679 | 739 | $events =& self::get_series($event['uid'], $this->bo, $expand, $user); |
| 680 | 740 | } |
@@ -698,7 +758,10 @@ discard block |
||
| 698 | 758 | */ |
| 699 | 759 | private static function &get_series($uid,calendar_bo $bo=null, $expand=false, $user=null) |
| 700 | 760 | { |
| 701 | - if (is_null($bo)) $bo = new calendar_bopdate(); |
|
| 761 | + if (is_null($bo)) |
|
| 762 | + { |
|
| 763 | + $bo = new calendar_bopdate(); |
|
| 764 | + } |
|
| 702 | 765 | |
| 703 | 766 | $params = array( |
| 704 | 767 | 'query' => array('cal_uid' => $uid), |
@@ -707,7 +770,10 @@ discard block |
||
| 707 | 770 | 'date_format' => 'server', |
| 708 | 771 | 'cfs' => array(), // read cfs as we use them to store X- attributes |
| 709 | 772 | ); |
| 710 | - if (is_array($expand)) $params += $expand; |
|
| 773 | + if (is_array($expand)) |
|
| 774 | + { |
|
| 775 | + $params += $expand; |
|
| 776 | + } |
|
| 711 | 777 | |
| 712 | 778 | if (!($events =& $bo->search($params))) |
| 713 | 779 | { |
@@ -728,12 +794,17 @@ discard block |
||
| 728 | 794 | } |
| 729 | 795 | } |
| 730 | 796 | // if recurring event starts in future behind horizont, nothing will be returned by bo::search() |
| 731 | - if (!isset($master)) $master = $bo->read($uid); |
|
| 797 | + if (!isset($master)) |
|
| 798 | + { |
|
| 799 | + $master = $bo->read($uid); |
|
| 800 | + } |
|
| 732 | 801 | |
| 733 | 802 | foreach($events as $k => &$recurrence) |
| 734 | 803 | { |
| 735 | 804 | //error_log(__FILE__.'['.__LINE__.'] '.__METHOD__."($uid)[$k]:" . array2string($recurrence)); |
| 736 | - if (!$master || $recurrence['id'] != $master['id']) // real exception |
|
| 805 | + if (!$master || $recurrence['id'] != $master['id']) |
|
| 806 | + { |
|
| 807 | + // real exception |
|
| 737 | 808 | { |
| 738 | 809 | // user is NOT participating in this exception |
| 739 | 810 | if ($user && !self::isParticipant($recurrence, $user)) |
@@ -742,6 +813,7 @@ discard block |
||
| 742 | 813 | if (!$master || !self::isParticipant($master, $user)) |
| 743 | 814 | { |
| 744 | 815 | unset($events[$k]); |
| 816 | + } |
|
| 745 | 817 | continue; |
| 746 | 818 | } |
| 747 | 819 | // otherwise mark him in this exception as rejected |
@@ -777,7 +849,10 @@ discard block |
||
| 777 | 849 | // this is a virtual exception now (no extra event/cal_id in DB) |
| 778 | 850 | //error_log('virtual exception: '.array2string($recurrence)); |
| 779 | 851 | $recurrence['recurrence'] = $recurrence['start']; |
| 780 | - if ($master) $recurrence['reference'] = $master['id']; |
|
| 852 | + if ($master) |
|
| 853 | + { |
|
| 854 | + $recurrence['reference'] = $master['id']; |
|
| 855 | + } |
|
| 781 | 856 | $recurrence['recur_type'] = MCAL_RECUR_NONE; // is set, as this is a copy of the master |
| 782 | 857 | // not for included exceptions (Lightning): $master['recur_exception'][] = $recurrence['start']; |
| 783 | 858 | } |
@@ -814,9 +889,16 @@ discard block |
||
| 814 | 889 | */ |
| 815 | 890 | function put(&$options,$id,$user=null,$prefix=null) |
| 816 | 891 | { |
| 817 | - if ($this->debug) error_log(__METHOD__."($id, $user)".print_r($options,true)); |
|
| 892 | + if ($this->debug) |
|
| 893 | + { |
|
| 894 | + error_log(__METHOD__."($id, $user)".print_r($options,true)); |
|
| 895 | + } |
|
| 818 | 896 | |
| 819 | - if (!$prefix) $user = null; // /infolog/ does not imply setting the current user (for new entries it's done anyway) |
|
| 897 | + if (!$prefix) |
|
| 898 | + { |
|
| 899 | + $user = null; |
|
| 900 | + } |
|
| 901 | + // /infolog/ does not imply setting the current user (for new entries it's done anyway) |
|
| 820 | 902 | |
| 821 | 903 | // fix for iCal4OL using WinHTTP only supporting a certain header length |
| 822 | 904 | if (isset($_SERVER['HTTP_IF_SCHEDULE']) && !isset($_SERVER['HTTP_IF_SCHEDULE_TAG_MATCH'])) |
@@ -828,7 +910,10 @@ discard block |
||
| 828 | 910 | isset($_SERVER['HTTP_IF_SCHEDULE_TAG_MATCH'])); // dont fail with 412 Precondition Failed in that case |
| 829 | 911 | if (!is_null($oldEvent) && !is_array($oldEvent)) |
| 830 | 912 | { |
| 831 | - if ($this->debug) error_log(__METHOD__.': '.print_r($oldEvent,true).function_backtrace()); |
|
| 913 | + if ($this->debug) |
|
| 914 | + { |
|
| 915 | + error_log(__METHOD__.': '.print_r($oldEvent,true).function_backtrace()); |
|
| 916 | + } |
|
| 832 | 917 | return $oldEvent; |
| 833 | 918 | } |
| 834 | 919 | |
@@ -839,7 +924,10 @@ discard block |
||
| 839 | 924 | { |
| 840 | 925 | // we have no add permission on this user's calendar |
| 841 | 926 | // ToDo: create event in current users calendar and invite only $user |
| 842 | - if ($this->debug) error_log(__METHOD__."(,,$user) we have not enough rights on this calendar"); |
|
| 927 | + if ($this->debug) |
|
| 928 | + { |
|
| 929 | + error_log(__METHOD__."(,,$user) we have not enough rights on this calendar"); |
|
| 930 | + } |
|
| 843 | 931 | return '403 Forbidden'; |
| 844 | 932 | } |
| 845 | 933 | |
@@ -887,13 +975,19 @@ discard block |
||
| 887 | 975 | if ($this->use_schedule_tag && isset($_SERVER['HTTP_IF_SCHEDULE_TAG_MATCH'])) |
| 888 | 976 | { |
| 889 | 977 | $schedule_tag_match = $_SERVER['HTTP_IF_SCHEDULE_TAG_MATCH']; |
| 890 | - if ($schedule_tag_match[0] == '"') $schedule_tag_match = substr($schedule_tag_match, 1, -1); |
|
| 978 | + if ($schedule_tag_match[0] == '"') |
|
| 979 | + { |
|
| 980 | + $schedule_tag_match = substr($schedule_tag_match, 1, -1); |
|
| 981 | + } |
|
| 891 | 982 | $schedule_tag = null; |
| 892 | 983 | $this->get_etag($oldEvent, $schedule_tag); |
| 893 | 984 | |
| 894 | 985 | if ($schedule_tag_match !== $schedule_tag) |
| 895 | 986 | { |
| 896 | - if ($this->debug) error_log(__METHOD__."(,,$user) schedule_tag missmatch: given '$schedule_tag_match' != '$schedule_tag'"); |
|
| 987 | + if ($this->debug) |
|
| 988 | + { |
|
| 989 | + error_log(__METHOD__."(,,$user) schedule_tag missmatch: given '$schedule_tag_match' != '$schedule_tag'"); |
|
| 990 | + } |
|
| 897 | 991 | // honor Prefer: return=representation for 412 too (no need for client to explicitly reload) |
| 898 | 992 | $this->check_return_representation($options, $id, $user); |
| 899 | 993 | return '412 Precondition Failed'; |
@@ -908,7 +1002,10 @@ discard block |
||
| 908 | 1002 | // above can be true, if current user is not in master but just a recurrence |
| 909 | 1003 | (!$oldEvent['recur_type'] || !($series = self::get_series($oldEvent['uid'], $this->bo)))) |
| 910 | 1004 | { |
| 911 | - if ($this->debug) error_log(__METHOD__."(,,$user) user $user is NOT an attendee!"); |
|
| 1005 | + if ($this->debug) |
|
| 1006 | + { |
|
| 1007 | + error_log(__METHOD__."(,,$user) user $user is NOT an attendee!"); |
|
| 1008 | + } |
|
| 912 | 1009 | return '403 Forbidden'; |
| 913 | 1010 | } |
| 914 | 1011 | // update only participant status and alarms of current user |
@@ -928,7 +1025,10 @@ discard block |
||
| 928 | 1025 | } |
| 929 | 1026 | foreach($series as $oldEvent) |
| 930 | 1027 | { |
| 931 | - if ($oldEvent['recurrence'] == $event['recurrence']) break; |
|
| 1028 | + if ($oldEvent['recurrence'] == $event['recurrence']) |
|
| 1029 | + { |
|
| 1030 | + break; |
|
| 1031 | + } |
|
| 932 | 1032 | } |
| 933 | 1033 | // if no exception found, check if it might be just a recurrence (no exception) |
| 934 | 1034 | if ($event['recurrence'] && $oldEvent['recurrence'] != $event['recurrence']) |
@@ -943,7 +1043,10 @@ discard block |
||
| 943 | 1043 | } |
| 944 | 1044 | } |
| 945 | 1045 | } |
| 946 | - if ($this->debug) error_log(__METHOD__."(, $id, $user, '$prefix') eventId=$eventId ($oldEvent[id]), user=$user, old-status='{$oldEvent['participants'][$user]}', new-status='{$event['participants'][$user]}', recurrence=$event[recurrence]=".Api\DateTime::to($event['recurrence']).", event=".array2string($event)); |
|
| 1046 | + if ($this->debug) |
|
| 1047 | + { |
|
| 1048 | + error_log(__METHOD__."(, $id, $user, '$prefix') eventId=$eventId ($oldEvent[id]), user=$user, old-status='{$oldEvent['participants'][$user]}', new-status='{$event['participants'][$user]}', recurrence=$event[recurrence]=".Api\DateTime::to($event['recurrence']).", event=".array2string($event)); |
|
| 1049 | + } |
|
| 947 | 1050 | if (isset($event['participants']) && isset($event['participants'][$user]) && |
| 948 | 1051 | $event['participants'][$user] !== $oldEvent['participants'][$user]) |
| 949 | 1052 | { |
@@ -951,13 +1054,19 @@ discard block |
||
| 951 | 1054 | // real (not virtual) exceptions use recurrence 0 in egw_cal_user.cal_recurrence! |
| 952 | 1055 | $recurrence = $eventId == $oldEvent['id'] ? $event['recurrence'] : 0)) |
| 953 | 1056 | { |
| 954 | - if ($this->debug) error_log(__METHOD__."(,,$user) failed to set_status($oldEvent[id], $user, '{$event['participants'][$user]}', $recurrence=".Api\DateTime::to($recurrence).')'); |
|
| 1057 | + if ($this->debug) |
|
| 1058 | + { |
|
| 1059 | + error_log(__METHOD__."(,,$user) failed to set_status($oldEvent[id], $user, '{$event['participants'][$user]}', $recurrence=".Api\DateTime::to($recurrence).')'); |
|
| 1060 | + } |
|
| 955 | 1061 | return '403 Forbidden'; |
| 956 | 1062 | } |
| 957 | 1063 | else |
| 958 | 1064 | { |
| 959 | 1065 | ++$modified; |
| 960 | - if ($this->debug) error_log(__METHOD__."() set_status($oldEvent[id], $user, {$event['participants'][$user]} , $recurrence=".Api\DateTime::to($recurrence).')'); |
|
| 1066 | + if ($this->debug) |
|
| 1067 | + { |
|
| 1068 | + error_log(__METHOD__."() set_status($oldEvent[id], $user, {$event['participants'][$user]} , $recurrence=".Api\DateTime::to($recurrence).')'); |
|
| 1069 | + } |
|
| 961 | 1070 | } |
| 962 | 1071 | } |
| 963 | 1072 | // import alarms, if given and changed |
@@ -967,15 +1076,21 @@ discard block |
||
| 967 | 1076 | $modified += $handler->sync_alarms($event, (array)$oldEvent['alarm'], $user); |
| 968 | 1077 | } |
| 969 | 1078 | } |
| 970 | - if (!$modified) // NO modififictions, or none we understood --> log it and return Ok: "204 No Content" |
|
| 1079 | + if (!$modified) |
|
| 1080 | + { |
|
| 1081 | + // NO modififictions, or none we understood --> log it and return Ok: "204 No Content" |
|
| 971 | 1082 | { |
| 972 | 1083 | $this->caldav->log(__METHOD__."(,,$user) NO changes for current user events=".array2string($events).', old-event='.array2string($oldEvent)); |
| 973 | 1084 | } |
| 1085 | + } |
|
| 974 | 1086 | $this->put_response_headers($eventId, $options['path'], '204 No Content', self::$path_attr == 'caldav_name'); |
| 975 | 1087 | |
| 976 | 1088 | return '204 No Content'; |
| 977 | 1089 | } |
| 978 | - if ($this->debug && !isset($events)) error_log(__METHOD__."(,,$user) only schedule-tag given for event without participants (only calendar owner) --> handle as regular PUT"); |
|
| 1090 | + if ($this->debug && !isset($events)) |
|
| 1091 | + { |
|
| 1092 | + error_log(__METHOD__."(,,$user) only schedule-tag given for event without participants (only calendar owner) --> handle as regular PUT"); |
|
| 1093 | + } |
|
| 979 | 1094 | } |
| 980 | 1095 | if ($return_no_access) |
| 981 | 1096 | { |
@@ -1007,17 +1122,23 @@ discard block |
||
| 1007 | 1122 | if (!($cal_id = $handler->importVCal($vCalendar, $eventId, |
| 1008 | 1123 | self::etag2value($this->http_if_match), false, 0, $this->caldav->current_user_principal, $user, $charset, $id))) |
| 1009 | 1124 | { |
| 1010 | - if ($this->debug) error_log(__METHOD__."(,$id) eventId=$eventId: importVCal('$options[content]') returned ".array2string($cal_id)); |
|
| 1125 | + if ($this->debug) |
|
| 1126 | + { |
|
| 1127 | + error_log(__METHOD__."(,$id) eventId=$eventId: importVCal('$options[content]') returned ".array2string($cal_id)); |
|
| 1128 | + } |
|
| 1011 | 1129 | if ($eventId && $cal_id === false) |
| 1012 | 1130 | { |
| 1013 | 1131 | // ignore import failures |
| 1014 | 1132 | $cal_id = $eventId; |
| 1015 | 1133 | $retval = true; |
| 1016 | 1134 | } |
| 1017 | - elseif ($cal_id === 0) // etag failure |
|
| 1135 | + elseif ($cal_id === 0) |
|
| 1136 | + { |
|
| 1137 | + // etag failure |
|
| 1018 | 1138 | { |
| 1019 | 1139 | // honor Prefer: return=representation for 412 too (no need for client to explicitly reload) |
| 1020 | 1140 | $this->check_return_representation($options, $id, $user); |
| 1141 | + } |
|
| 1021 | 1142 | return '412 Precondition Failed'; |
| 1022 | 1143 | } |
| 1023 | 1144 | else |
@@ -1042,7 +1163,10 @@ discard block |
||
| 1042 | 1163 | */ |
| 1043 | 1164 | function post(&$options,$id,$user=null) |
| 1044 | 1165 | { |
| 1045 | - if ($this->debug) error_log(__METHOD__."($id, $user)".print_r($options,true)); |
|
| 1166 | + if ($this->debug) |
|
| 1167 | + { |
|
| 1168 | + error_log(__METHOD__."($id, $user)".print_r($options,true)); |
|
| 1169 | + } |
|
| 1046 | 1170 | |
| 1047 | 1171 | $vCalendar = htmlspecialchars_decode($options['content']); |
| 1048 | 1172 | $charset = null; |
@@ -1097,7 +1221,10 @@ discard block |
||
| 1097 | 1221 | if (!($cal_id = $handler->importVCal($vCalendar, $eventId, null, |
| 1098 | 1222 | false, 0, $this->caldav->current_user_principal, $user, $charset))) |
| 1099 | 1223 | { |
| 1100 | - if ($this->debug) error_log(__METHOD__."() importVCal($eventId) returned false"); |
|
| 1224 | + if ($this->debug) |
|
| 1225 | + { |
|
| 1226 | + error_log(__METHOD__."() importVCal($eventId) returned false"); |
|
| 1227 | + } |
|
| 1101 | 1228 | } |
| 1102 | 1229 | header('ETag: "'.$this->get_etag($eventId).'"'); |
| 1103 | 1230 | } |
@@ -1265,7 +1392,10 @@ discard block |
||
| 1265 | 1392 | $org_recurrences = $exceptions = array(); |
| 1266 | 1393 | foreach(self::get_series($events[0]['uid'],$bo) as $k => $event) |
| 1267 | 1394 | { |
| 1268 | - if (!$k) $master = $event; |
|
| 1395 | + if (!$k) |
|
| 1396 | + { |
|
| 1397 | + $master = $event; |
|
| 1398 | + } |
|
| 1269 | 1399 | if ($event['recurrence']) |
| 1270 | 1400 | { |
| 1271 | 1401 | $org_recurrences[$event['recurrence']] = $event; |
@@ -1285,10 +1415,13 @@ discard block |
||
| 1285 | 1415 | |
| 1286 | 1416 | // from now on we deal with exceptions |
| 1287 | 1417 | $org_recurrence = $org_recurrences[$recurrence['recurrence']]; |
| 1288 | - if (isset($org_recurrence)) // already existing recurrence |
|
| 1418 | + if (isset($org_recurrence)) |
|
| 1419 | + { |
|
| 1420 | + // already existing recurrence |
|
| 1289 | 1421 | { |
| 1290 | 1422 | //error_log(__METHOD__.'() setting id #'.$org_recurrence['id']).' for '.$recurrence['recurrence'].' = '.date('Y-m-d H:i:s',$recurrence['recurrence']); |
| 1291 | 1423 | $recurrence['id'] = $org_recurrence['id']; |
| 1424 | + } |
|
| 1292 | 1425 | |
| 1293 | 1426 | // re-add (non-virtual) exceptions to master's recur_exception |
| 1294 | 1427 | if ($recurrence['id'] != $master['id']) |
@@ -1305,10 +1438,14 @@ discard block |
||
| 1305 | 1438 | // delete not longer existing recurrences |
| 1306 | 1439 | foreach($org_recurrences as $org_recurrence) |
| 1307 | 1440 | { |
| 1308 | - if ($org_recurrence['id'] != $master['id']) // non-virtual recurrence |
|
| 1441 | + if ($org_recurrence['id'] != $master['id']) |
|
| 1442 | + { |
|
| 1443 | + // non-virtual recurrence |
|
| 1309 | 1444 | { |
| 1310 | 1445 | //error_log(__METHOD__.'() deleting #'.$org_recurrence['id']); |
| 1311 | - $bo->delete($org_recurrence['id']); // might fail because of permissions |
|
| 1446 | + $bo->delete($org_recurrence['id']); |
|
| 1447 | + } |
|
| 1448 | + // might fail because of permissions |
|
| 1312 | 1449 | } |
| 1313 | 1450 | else // virtual recurrence |
| 1314 | 1451 | { |
@@ -1339,7 +1476,7 @@ discard block |
||
| 1339 | 1476 | if (!is_array($event = $this->_common_get_put_delete('DELETE',$options,$id,$return_no_access)) || !$return_no_access) |
| 1340 | 1477 | { |
| 1341 | 1478 | if (!$return_no_access) |
| 1342 | - { |
|
| 1479 | + { |
|
| 1343 | 1480 | // check if user is a participant or one of the groups he is a member of --> reject the meeting request |
| 1344 | 1481 | $ret = '403 Forbidden'; |
| 1345 | 1482 | $memberships = $GLOBALS['egw']->accounts->memberships($this->bo->user, true); |
@@ -1362,7 +1499,10 @@ discard block |
||
| 1362 | 1499 | { |
| 1363 | 1500 | $ret = $this->bo->delete($event['id']); |
| 1364 | 1501 | } |
| 1365 | - if ($this->debug) error_log(__METHOD__."(,$id) return_no_access=$return_no_access, event[participants]=".array2string(is_array($event)?$event['participants']:null).", user={$this->bo->user} --> return ".array2string($ret)); |
|
| 1502 | + if ($this->debug) |
|
| 1503 | + { |
|
| 1504 | + error_log(__METHOD__."(,$id) return_no_access=$return_no_access, event[participants]=".array2string(is_array($event)?$event['participants']:null).", user={$this->bo->user} --> return ".array2string($ret)); |
|
| 1505 | + } |
|
| 1366 | 1506 | return $ret; |
| 1367 | 1507 | } |
| 1368 | 1508 | |
@@ -1377,16 +1517,26 @@ discard block |
||
| 1377 | 1517 | */ |
| 1378 | 1518 | function read($id) |
| 1379 | 1519 | { |
| 1380 | - if (strpos($column=self::$path_attr,'_') === false) $column = 'cal_'.$column; |
|
| 1520 | + if (strpos($column=self::$path_attr,'_') === false) |
|
| 1521 | + { |
|
| 1522 | + $column = 'cal_'.$column; |
|
| 1523 | + } |
|
| 1381 | 1524 | |
| 1382 | 1525 | $event = $this->bo->read(array($column => $id, 'cal_deleted IS NULL', 'cal_reference=0'), null, true, 'server'); |
| 1383 | - if ($event) $event = array_shift($event); // read with array as 1. param, returns an array of events! |
|
| 1526 | + if ($event) |
|
| 1527 | + { |
|
| 1528 | + $event = array_shift($event); |
|
| 1529 | + } |
|
| 1530 | + // read with array as 1. param, returns an array of events! |
|
| 1384 | 1531 | |
| 1385 | 1532 | if (!($retval = $this->bo->check_perms(calendar_bo::ACL_FREEBUSY,$event, 0, 'server')) && |
| 1386 | 1533 | // above can be true, if current user is not in master but just a recurrence |
| 1387 | 1534 | (!$event['recur_type'] || !($events = self::get_series($event['uid'], $this->bo)))) |
| 1388 | 1535 | { |
| 1389 | - if ($this->debug > 0) error_log(__METHOD__."($id) no READ or FREEBUSY rights returning ".array2string($retval)); |
|
| 1536 | + if ($this->debug > 0) |
|
| 1537 | + { |
|
| 1538 | + error_log(__METHOD__."($id) no READ or FREEBUSY rights returning ".array2string($retval)); |
|
| 1539 | + } |
|
| 1390 | 1540 | return $retval; |
| 1391 | 1541 | } |
| 1392 | 1542 | if (!$this->bo->check_perms(Acl::READ, $event, 0, 'server')) |
@@ -1394,9 +1544,15 @@ discard block |
||
| 1394 | 1544 | $this->bo->clear_private_infos($event, array($this->bo->user, $event['owner'])); |
| 1395 | 1545 | } |
| 1396 | 1546 | // handle deleted events, as not existing |
| 1397 | - if ($event['deleted']) $event = null; |
|
| 1547 | + if ($event['deleted']) |
|
| 1548 | + { |
|
| 1549 | + $event = null; |
|
| 1550 | + } |
|
| 1398 | 1551 | |
| 1399 | - if ($this->debug > 1) error_log(__METHOD__."($id) returning ".array2string($event)); |
|
| 1552 | + if ($this->debug > 1) |
|
| 1553 | + { |
|
| 1554 | + error_log(__METHOD__."($id) returning ".array2string($event)); |
|
| 1555 | + } |
|
| 1400 | 1556 | |
| 1401 | 1557 | return $event; |
| 1402 | 1558 | } |
@@ -1408,7 +1564,10 @@ discard block |
||
| 1408 | 1564 | */ |
| 1409 | 1565 | public function update_tags($entry) |
| 1410 | 1566 | { |
| 1411 | - if (!is_array($entry)) $entry = $this->read($entry); |
|
| 1567 | + if (!is_array($entry)) |
|
| 1568 | + { |
|
| 1569 | + $entry = $this->read($entry); |
|
| 1570 | + } |
|
| 1412 | 1571 | |
| 1413 | 1572 | $this->bo->update($entry, true); |
| 1414 | 1573 | } |
@@ -1422,7 +1581,10 @@ discard block |
||
| 1422 | 1581 | { |
| 1423 | 1582 | $ctag = $this->bo->get_ctag($user,$path == '/calendar/' ? 'owner' : 'default'); // default = not rejected |
| 1424 | 1583 | |
| 1425 | - if ($this->debug > 1) error_log(__FILE__.'['.__LINE__.'] '.__METHOD__. "($path)[$user] = $ctag"); |
|
| 1584 | + if ($this->debug > 1) |
|
| 1585 | + { |
|
| 1586 | + error_log(__FILE__.'['.__LINE__.'] '.__METHOD__. "($path)[$user] = $ctag"); |
|
| 1587 | + } |
|
| 1426 | 1588 | |
| 1427 | 1589 | return $ctag; |
| 1428 | 1590 | } |
@@ -1553,7 +1715,10 @@ discard block |
||
| 1553 | 1715 | $handler = new calendar_ical(); |
| 1554 | 1716 | $handler->setSupportedFields('GroupDAV',$this->agent); |
| 1555 | 1717 | $handler->supportedFields['attachments'] = true; // enabling attachments |
| 1556 | - if ($this->debug > 1) error_log("ical Handler called: " . $this->agent); |
|
| 1718 | + if ($this->debug > 1) |
|
| 1719 | + { |
|
| 1720 | + error_log("ical Handler called: " . $this->agent); |
|
| 1721 | + } |
|
| 1557 | 1722 | return $handler; |
| 1558 | 1723 | } |
| 1559 | 1724 | |
@@ -1624,7 +1789,11 @@ discard block |
||
| 1624 | 1789 | { |
| 1625 | 1790 | $calendars[$entry['grantor']] = $entry['name']; |
| 1626 | 1791 | } |
| 1627 | - if ($user > 0) unset($calendars[$user]); // skip current user |
|
| 1792 | + if ($user > 0) |
|
| 1793 | + { |
|
| 1794 | + unset($calendars[$user]); |
|
| 1795 | + } |
|
| 1796 | + // skip current user |
|
| 1628 | 1797 | } |
| 1629 | 1798 | |
| 1630 | 1799 | $settings = array(); |
@@ -110,11 +110,14 @@ discard block |
||
| 110 | 110 | if (!$owner || !is_numeric($owner) || $GLOBALS['egw']->accounts->get_type($owner) != 'u' || |
| 111 | 111 | !$this->bo->check_perms(Acl::ADD,0,$owner)) |
| 112 | 112 | { |
| 113 | - if ($owner) // make an owner who is no user or we have no add-rights a participant |
|
| 113 | + if ($owner) |
|
| 114 | + { |
|
| 115 | + // make an owner who is no user or we have no add-rights a participant |
|
| 114 | 116 | { |
| 115 | 117 | if(!is_array($owner)) |
| 116 | 118 | { |
| 117 | 119 | $owner = explode(',',$owner); |
| 120 | + } |
|
| 118 | 121 | } |
| 119 | 122 | // if we come from ressources we don't need any users selected in calendar |
| 120 | 123 | if (!isset($_GET['participants']) || $_GET['participants'][0] != 'r') |
@@ -150,9 +153,17 @@ discard block |
||
| 150 | 153 | $participant_types['u'] = $participant_types = $participants = array(); |
| 151 | 154 | foreach($extra_participants as $uid) |
| 152 | 155 | { |
| 153 | - if (isset($participants[$uid])) continue; // already included |
|
| 156 | + if (isset($participants[$uid])) |
|
| 157 | + { |
|
| 158 | + continue; |
|
| 159 | + } |
|
| 160 | + // already included |
|
| 154 | 161 | |
| 155 | - if (!$this->bo->check_acl_invite($uid)) continue; // no right to invite --> ignored |
|
| 162 | + if (!$this->bo->check_acl_invite($uid)) |
|
| 163 | + { |
|
| 164 | + continue; |
|
| 165 | + } |
|
| 166 | + // no right to invite --> ignored |
|
| 156 | 167 | |
| 157 | 168 | if (is_numeric($uid)) |
| 158 | 169 | { |
@@ -180,10 +191,13 @@ discard block |
||
| 180 | 191 | } |
| 181 | 192 | } |
| 182 | 193 | } |
| 183 | - if (!$participants) // if all participants got removed, include current user |
|
| 194 | + if (!$participants) |
|
| 195 | + { |
|
| 196 | + // if all participants got removed, include current user |
|
| 184 | 197 | { |
| 185 | 198 | $participants[$this->user] = $participant_types['u'][$this->user] = calendar_so::combine_status('A',1,'CHAIR'); |
| 186 | 199 | } |
| 200 | + } |
|
| 187 | 201 | if(isset($_GET['cat_id'])) |
| 188 | 202 | { |
| 189 | 203 | $cat_id = explode(',',$_GET['cat_id']); |
@@ -231,10 +245,13 @@ discard block |
||
| 231 | 245 | */ |
| 232 | 246 | function process_edit($content) |
| 233 | 247 | { |
| 234 | - if (!is_array($content)) // redirect from etemplate, if POST empty |
|
| 248 | + if (!is_array($content)) |
|
| 249 | + { |
|
| 250 | + // redirect from etemplate, if POST empty |
|
| 235 | 251 | { |
| 236 | 252 | return $this->edit(null,null,strip_tags($_GET['msg'])); |
| 237 | 253 | } |
| 254 | + } |
|
| 238 | 255 | // clear notification errors |
| 239 | 256 | notifications::errors(true); |
| 240 | 257 | $messages = null; |
@@ -247,7 +264,11 @@ discard block |
||
| 247 | 264 | $update_type = $content['id'] ? ($content['recur_type'] == MCAL_RECUR_NONE ? 'update' : 'edit') : 'add'; |
| 248 | 265 | |
| 249 | 266 | list($button) = @each($content['button']); |
| 250 | - if (!$button && $content['action']) $button = $content['action']; // action selectbox |
|
| 267 | + if (!$button && $content['action']) |
|
| 268 | + { |
|
| 269 | + $button = $content['action']; |
|
| 270 | + } |
|
| 271 | + // action selectbox |
|
| 251 | 272 | unset($content['button']); unset($content['action']); |
| 252 | 273 | |
| 253 | 274 | $view = $content['view']; |
@@ -260,7 +281,10 @@ discard block |
||
| 260 | 281 | { |
| 261 | 282 | list($date) = each($content['recur_exception']['delete_exception']); |
| 262 | 283 | // eT2 converts time to |
| 263 | - if (!is_numeric($date)) $date = Api\DateTime::to (str_replace('Z','', $date), 'ts'); |
|
| 284 | + if (!is_numeric($date)) |
|
| 285 | + { |
|
| 286 | + $date = Api\DateTime::to (str_replace('Z','', $date), 'ts'); |
|
| 287 | + } |
|
| 264 | 288 | unset($content['recur_exception']['delete_exception']); |
| 265 | 289 | if (($key = array_search($date,$content['recur_exception'])) !== false) |
| 266 | 290 | { |
@@ -269,7 +293,10 @@ discard block |
||
| 269 | 293 | foreach ($recur_exceptions as $id) |
| 270 | 294 | { |
| 271 | 295 | if (!($exception = $this->bo->read($id)) || |
| 272 | - $exception['recurrence'] != $content['recur_exception'][$key]) continue; |
|
| 296 | + $exception['recurrence'] != $content['recur_exception'][$key]) |
|
| 297 | + { |
|
| 298 | + continue; |
|
| 299 | + } |
|
| 273 | 300 | $exception['uid'] = Api\CalDAV::generate_uid('calendar', $id); |
| 274 | 301 | $exception['reference'] = $exception['recurrence'] = 0; |
| 275 | 302 | $this->bo->update($exception, true, true,false,true,$messages,$content['no_notifications']); |
@@ -344,7 +371,10 @@ discard block |
||
| 344 | 371 | $event['end'] = $this->bo->date2ts($event['end']); |
| 345 | 372 | } |
| 346 | 373 | // some checks for recurrences, if you give a date, make it a weekly repeating event and visa versa |
| 347 | - if ($event['recur_type'] == MCAL_RECUR_NONE && $event['recur_data']) $event['recur_type'] = MCAL_RECUR_WEEKLY; |
|
| 374 | + if ($event['recur_type'] == MCAL_RECUR_NONE && $event['recur_data']) |
|
| 375 | + { |
|
| 376 | + $event['recur_type'] = MCAL_RECUR_WEEKLY; |
|
| 377 | + } |
|
| 348 | 378 | if ($event['recur_type'] == MCAL_RECUR_WEEKLY && !$event['recur_data']) |
| 349 | 379 | { |
| 350 | 380 | $event['recur_data'] = 1 << (int)date('w',$event['start']); |
@@ -371,7 +401,8 @@ discard block |
||
| 371 | 401 | break; |
| 372 | 402 | case 'participant': |
| 373 | 403 | foreach($data as $participant) |
| 374 | - { // email or rfc822 addresse (eg. "Ralf Becker <[email protected]>") |
|
| 404 | + { |
|
| 405 | +// email or rfc822 addresse (eg. "Ralf Becker <[email protected]>") |
|
| 375 | 406 | $email = array(); |
| 376 | 407 | if(preg_match('/^(.*<)?([a-z0-9_.-]+@[a-z0-9_.-]{5,})>?$/i',$participant,$email)) |
| 377 | 408 | { |
@@ -451,7 +482,11 @@ discard block |
||
| 451 | 482 | break; |
| 452 | 483 | |
| 453 | 484 | default: // existing participant row |
| 454 | - if (!is_array($data)) continue; // widgets in participant tab, above participant list |
|
| 485 | + if (!is_array($data)) |
|
| 486 | + { |
|
| 487 | + continue; |
|
| 488 | + } |
|
| 489 | + // widgets in participant tab, above participant list |
|
| 455 | 490 | foreach(array('uid','status','quantity','role') as $name) |
| 456 | 491 | { |
| 457 | 492 | $$name = $data[$name]; |
@@ -580,7 +615,10 @@ discard block |
||
| 580 | 615 | { |
| 581 | 616 | foreach($participants as $id => &$p_response) |
| 582 | 617 | { |
| 583 | - if($type == 'u' && $id == $event['owner']) continue; |
|
| 618 | + if($type == 'u' && $id == $event['owner']) |
|
| 619 | + { |
|
| 620 | + continue; |
|
| 621 | + } |
|
| 584 | 622 | calendar_so::split_status($p_response, $quantity, $role); |
| 585 | 623 | // if resource defines callback for status of new status (eg. Resources app acknowledges direct booking acl), call it |
| 586 | 624 | $status = isset($this->bo->resources[$type]['new_status']) ? ExecMethod($this->bo->resources[$type]['new_status'],$id) : 'U'; |
@@ -662,17 +700,23 @@ discard block |
||
| 662 | 700 | { |
| 663 | 701 | foreach (array_keys($event['participants']) as $uid) |
| 664 | 702 | { |
| 665 | - if ($uid[0] == 'r') //ressource detection |
|
| 703 | + if ($uid[0] == 'r') |
|
| 704 | + { |
|
| 705 | + //ressource detection |
|
| 666 | 706 | { |
| 667 | 707 | $msg = lang('Error: ressources reservation in private events is not allowed!!!'); |
| 708 | + } |
|
| 668 | 709 | $button = ''; |
| 669 | 710 | break 2; //break foreach and case |
| 670 | 711 | } |
| 671 | 712 | } |
| 672 | 713 | } |
| 673 | - if ($content['edit_single']) // we edited a single event from a series |
|
| 714 | + if ($content['edit_single']) |
|
| 715 | + { |
|
| 716 | + // we edited a single event from a series |
|
| 674 | 717 | { |
| 675 | 718 | $event['reference'] = $event['id']; |
| 719 | + } |
|
| 676 | 720 | $event['recurrence'] = $content['edit_single']; |
| 677 | 721 | unset($event['id']); |
| 678 | 722 | $conflicts = $this->bo->update($event,$ignore_conflicts,true,false,true,$messages,$content['no_notifications']); |
@@ -768,7 +812,10 @@ discard block |
||
| 768 | 812 | case 'no': |
| 769 | 813 | break; |
| 770 | 814 | case 'startday': |
| 771 | - if ($sameday) break; |
|
| 815 | + if ($sameday) |
|
| 816 | + { |
|
| 817 | + break; |
|
| 818 | + } |
|
| 772 | 819 | default: |
| 773 | 820 | $status_reset_to_unknown = true; |
| 774 | 821 | $event['participants'][$uid] = calendar_so::combine_status('U',$q,$r); |
@@ -925,7 +972,10 @@ discard block |
||
| 925 | 972 | if ($event['recur_type'] != MCAL_RECUR_NONE && $content['reference'] == 0 && !$content['edit_single']) |
| 926 | 973 | { |
| 927 | 974 | $msg = lang('Series deleted'); |
| 928 | - if ($exceptions_kept) $msg .= lang(', exceptions preserved'); |
|
| 975 | + if ($exceptions_kept) |
|
| 976 | + { |
|
| 977 | + $msg .= lang(', exceptions preserved'); |
|
| 978 | + } |
|
| 929 | 979 | } |
| 930 | 980 | else |
| 931 | 981 | { |
@@ -961,11 +1011,14 @@ discard block |
||
| 961 | 1011 | { |
| 962 | 1012 | $msg = lang("Can't add alarms in the past !!!"); |
| 963 | 1013 | } |
| 964 | - elseif ($event['id']) // save the alarm immediatly |
|
| 1014 | + elseif ($event['id']) |
|
| 1015 | + { |
|
| 1016 | + // save the alarm immediatly |
|
| 965 | 1017 | { |
| 966 | 1018 | if (($alarm_id = $this->bo->save_alarm($event['id'],$alarm))) |
| 967 | 1019 | { |
| 968 | 1020 | $alarm['id'] = $alarm_id; |
| 1021 | + } |
|
| 969 | 1022 | $event['alarm'][$alarm_id] = $alarm; |
| 970 | 1023 | |
| 971 | 1024 | $msg = lang('Alarm added'); |
@@ -978,7 +1031,9 @@ discard block |
||
| 978 | 1031 | } |
| 979 | 1032 | else |
| 980 | 1033 | { |
| 981 | - for($alarm['id']=1; isset($event['alarm'][$alarm['id']]); $alarm['id']++) {} // get a temporary non-conflicting, numeric id |
|
| 1034 | + for($alarm['id']=1; isset($event['alarm'][$alarm['id']]); $alarm['id']++) |
|
| 1035 | + { |
|
| 1036 | +} // get a temporary non-conflicting, numeric id |
|
| 982 | 1037 | $event['alarm'][$alarm['id']] = $alarm; |
| 983 | 1038 | } |
| 984 | 1039 | } |
@@ -1001,10 +1056,13 @@ discard block |
||
| 1001 | 1056 | } |
| 1002 | 1057 | if (in_array($button,array('cancel','save','delete','delete_exceptions','delete_keep_exceptions')) && $noerror) |
| 1003 | 1058 | { |
| 1004 | - if ($content['lock_token']) // remove an existing lock |
|
| 1059 | + if ($content['lock_token']) |
|
| 1060 | + { |
|
| 1061 | + // remove an existing lock |
|
| 1005 | 1062 | { |
| 1006 | 1063 | Vfs::unlock(Vfs::app_entry_lock_path('calendar',$content['id']),$content['lock_token'],false); |
| 1007 | 1064 | } |
| 1065 | + } |
|
| 1008 | 1066 | if ($content['no_popup']) |
| 1009 | 1067 | { |
| 1010 | 1068 | Egw::redirect_link('/index.php',array( |
@@ -1108,8 +1166,7 @@ discard block |
||
| 1108 | 1166 | if (Api\DateTime::to($old_event['start'],'Ymd') < Api\DateTime::to($as_of_date,'Ymd') || |
| 1109 | 1167 | // Adjust for requested date in the past |
| 1110 | 1168 | Api\DateTime::to($as_of_date,'ts') < time() |
| 1111 | - ) |
|
| 1112 | - { |
|
| 1169 | + ) { |
|
| 1113 | 1170 | |
| 1114 | 1171 | unset($orig_event); |
| 1115 | 1172 | // copy event by unsetting the id(s) |
@@ -1197,32 +1254,50 @@ discard block |
||
| 1197 | 1254 | foreach($event['participants'] as $uid => $status) |
| 1198 | 1255 | { |
| 1199 | 1256 | //error_log(__METHOD__.__LINE__.' '.$uid.':'.array2string($status)); |
| 1200 | - if (empty($status)) continue; |
|
| 1257 | + if (empty($status)) |
|
| 1258 | + { |
|
| 1259 | + continue; |
|
| 1260 | + } |
|
| 1201 | 1261 | $toadd = ''; |
| 1202 | - if ((isset($status['status']) && $status['status'] == 'R') || (isset($status['uid']) && $status['uid'] == $this->user)) continue; |
|
| 1262 | + if ((isset($status['status']) && $status['status'] == 'R') || (isset($status['uid']) && $status['uid'] == $this->user)) |
|
| 1263 | + { |
|
| 1264 | + continue; |
|
| 1265 | + } |
|
| 1203 | 1266 | |
| 1204 | 1267 | if (isset($status['uid']) && is_numeric($status['uid']) && $GLOBALS['egw']->accounts->get_type($status['uid']) == 'u') |
| 1205 | 1268 | { |
| 1206 | - if (!($email = $GLOBALS['egw']->accounts->id2name($status['uid'],'account_email'))) continue; |
|
| 1269 | + if (!($email = $GLOBALS['egw']->accounts->id2name($status['uid'],'account_email'))) |
|
| 1270 | + { |
|
| 1271 | + continue; |
|
| 1272 | + } |
|
| 1207 | 1273 | |
| 1208 | 1274 | $lid = $firstname = $lastname = null; |
| 1209 | 1275 | $GLOBALS['egw']->accounts->get_account_name($status['uid'],$lid,$firstname,$lastname); |
| 1210 | 1276 | |
| 1211 | 1277 | $toadd = $firstname.' '.$lastname.' <'.$email.'>'; |
| 1212 | - if (!in_array($toadd,$to)) $to[] = $toadd; |
|
| 1278 | + if (!in_array($toadd,$to)) |
|
| 1279 | + { |
|
| 1280 | + $to[] = $toadd; |
|
| 1281 | + } |
|
| 1213 | 1282 | //error_log(__METHOD__.__LINE__.array2string($to)); |
| 1214 | 1283 | } |
| 1215 | 1284 | elseif ($uid < 0) |
| 1216 | 1285 | { |
| 1217 | 1286 | foreach($GLOBALS['egw']->accounts->members($uid,true) as $uid) |
| 1218 | 1287 | { |
| 1219 | - if (!($email = $GLOBALS['egw']->accounts->id2name($uid,'account_email'))) continue; |
|
| 1288 | + if (!($email = $GLOBALS['egw']->accounts->id2name($uid,'account_email'))) |
|
| 1289 | + { |
|
| 1290 | + continue; |
|
| 1291 | + } |
|
| 1220 | 1292 | |
| 1221 | 1293 | $GLOBALS['egw']->accounts->get_account_name($uid,$lid,$firstname,$lastname); |
| 1222 | 1294 | |
| 1223 | 1295 | $toadd = $firstname.' '.$lastname.' <'.$email.'>'; |
| 1224 | 1296 | // dont add groupmembers if they already rejected the event, or are the current user |
| 1225 | - if (!in_array($toadd,$to) && ($event['participants'][$uid] !== 'R' && $uid != $this->user)) $to[] = $toadd; |
|
| 1297 | + if (!in_array($toadd,$to) && ($event['participants'][$uid] !== 'R' && $uid != $this->user)) |
|
| 1298 | + { |
|
| 1299 | + $to[] = $toadd; |
|
| 1300 | + } |
|
| 1226 | 1301 | //error_log(__METHOD__.__LINE__.array2string($to)); |
| 1227 | 1302 | } |
| 1228 | 1303 | } |
@@ -1275,7 +1350,10 @@ discard block |
||
| 1275 | 1350 | 'preset[type]' => 'text/calendar'.($asrequest?'; method=REQUEST':''), |
| 1276 | 1351 | 'preset[size]' => filesize($ics_file), |
| 1277 | 1352 | ); |
| 1278 | - if ($asrequest) $vars['preset[msg]'] = lang('You attempt to mail a meetingrequest to the recipients above. Depending on the client this mail is opened with, the recipient may or may not see the mailbody below, but only see the meeting request attached.'); |
|
| 1353 | + if ($asrequest) |
|
| 1354 | + { |
|
| 1355 | + $vars['preset[msg]'] = lang('You attempt to mail a meetingrequest to the recipients above. Depending on the client this mail is opened with, the recipient may or may not see the mailbody below, but only see the meeting request attached.'); |
|
| 1356 | + } |
|
| 1279 | 1357 | $response = Api\Json\Response::get(); |
| 1280 | 1358 | $response->call('app.calendar.custom_mail', $vars); |
| 1281 | 1359 | } |
@@ -1461,9 +1539,15 @@ discard block |
||
| 1461 | 1539 | } |
| 1462 | 1540 | } |
| 1463 | 1541 | // set new start and end if given by $_GET |
| 1464 | - if(isset($_GET['start'])) { $event['start'] = Api\DateTime::to($_GET['start'],'ts'); } |
|
| 1465 | - if(isset($_GET['end'])) { $event['end'] = Api\DateTime::to($_GET['end'],'ts'); } |
|
| 1466 | - if(isset($_GET['non_blocking'])) { $event['non_blocking'] = (bool)$_GET['non_blocking']; } |
|
| 1542 | + if(isset($_GET['start'])) |
|
| 1543 | + { |
|
| 1544 | +$event['start'] = Api\DateTime::to($_GET['start'],'ts'); } |
|
| 1545 | + if(isset($_GET['end'])) |
|
| 1546 | + { |
|
| 1547 | +$event['end'] = Api\DateTime::to($_GET['end'],'ts'); } |
|
| 1548 | + if(isset($_GET['non_blocking'])) |
|
| 1549 | + { |
|
| 1550 | +$event['non_blocking'] = (bool)$_GET['non_blocking']; } |
|
| 1467 | 1551 | // check if the event is the whole day |
| 1468 | 1552 | $start = $this->bo->date2array($event['start']); |
| 1469 | 1553 | $end = $this->bo->date2array($event['end']); |
@@ -1476,10 +1560,13 @@ discard block |
||
| 1476 | 1560 | foreach(is_array($_REQUEST['link_app']) ? $_REQUEST['link_app'] : array($_REQUEST['link_app']) as $n => $link_app) |
| 1477 | 1561 | { |
| 1478 | 1562 | $link_id = $link_ids[$n]; |
| 1479 | - if(!preg_match('/^[a-z_0-9-]+:[:a-z_0-9-]+$/i',$link_app.':'.$link_id)) // guard against XSS |
|
| 1563 | + if(!preg_match('/^[a-z_0-9-]+:[:a-z_0-9-]+$/i',$link_app.':'.$link_id)) |
|
| 1564 | + { |
|
| 1565 | + // guard against XSS |
|
| 1480 | 1566 | { |
| 1481 | 1567 | continue; |
| 1482 | 1568 | } |
| 1569 | + } |
|
| 1483 | 1570 | if(!$n) |
| 1484 | 1571 | { |
| 1485 | 1572 | $event['title'] = Link::title($link_app,$link_id); |
@@ -1488,7 +1575,10 @@ discard block |
||
| 1488 | 1575 | { |
| 1489 | 1576 | foreach((array)$set['link_app'] as $i => $l_app) |
| 1490 | 1577 | { |
| 1491 | - if (($l_id=$set['link_id'][$i])) Link::link('calendar',$event['link_to']['to_id'],$l_app,$l_id); |
|
| 1578 | + if (($l_id=$set['link_id'][$i])) |
|
| 1579 | + { |
|
| 1580 | + Link::link('calendar',$event['link_to']['to_id'],$l_app,$l_id); |
|
| 1581 | + } |
|
| 1492 | 1582 | } |
| 1493 | 1583 | unset($set['link_app']); |
| 1494 | 1584 | unset($set['link_id']); |
@@ -1514,10 +1604,13 @@ discard block |
||
| 1514 | 1604 | $lock_path = Vfs::app_entry_lock_path('calendar',$event['id']); |
| 1515 | 1605 | $lock_owner = 'mailto:'.$GLOBALS['egw_info']['user']['account_email']; |
| 1516 | 1606 | |
| 1517 | - if (($preserv['lock_token'] = $event['lock_token'])) // already locked --> refresh the lock |
|
| 1607 | + if (($preserv['lock_token'] = $event['lock_token'])) |
|
| 1608 | + { |
|
| 1609 | + // already locked --> refresh the lock |
|
| 1518 | 1610 | { |
| 1519 | 1611 | Vfs::lock($lock_path,$preserv['lock_token'],$locktime,$lock_owner,$scope='shared',$type='write',true,false); |
| 1520 | 1612 | } |
| 1613 | + } |
|
| 1521 | 1614 | if (($lock = Vfs::checkLock($lock_path)) && $lock['owner'] != $lock_owner) |
| 1522 | 1615 | { |
| 1523 | 1616 | $msg .= ' '.lang('This entry is currently opened by %1!', |
@@ -1550,14 +1643,20 @@ discard block |
||
| 1550 | 1643 | )); |
| 1551 | 1644 | Framework::message($msg, $msg_type); |
| 1552 | 1645 | $content['duration'] = $content['end'] - $content['start']; |
| 1553 | - if (isset($this->durations[$content['duration']])) $content['end'] = ''; |
|
| 1646 | + if (isset($this->durations[$content['duration']])) |
|
| 1647 | + { |
|
| 1648 | + $content['end'] = ''; |
|
| 1649 | + } |
|
| 1554 | 1650 | |
| 1555 | 1651 | $row = 3; |
| 1556 | 1652 | $readonlys = $content['participants'] = $preserv['participants'] = array(); |
| 1557 | 1653 | // preserve some ui elements, if set eg. under error-conditions |
| 1558 | 1654 | foreach(array('quantity','resource','role') as $n) |
| 1559 | 1655 | { |
| 1560 | - if (isset($event['participants'][$n])) $content['participants'][$n] = $event['participants'][$n]; |
|
| 1656 | + if (isset($event['participants'][$n])) |
|
| 1657 | + { |
|
| 1658 | + $content['participants'][$n] = $event['participants'][$n]; |
|
| 1659 | + } |
|
| 1561 | 1660 | } |
| 1562 | 1661 | foreach($event['participant_types'] as $type => $participants) |
| 1563 | 1662 | { |
@@ -1599,9 +1698,13 @@ discard block |
||
| 1599 | 1698 | //echo "<p>$uid ($quantity): $role --> {$content['participants'][$row]['role']}</p>\n"; |
| 1600 | 1699 | |
| 1601 | 1700 | if (($no_status = !$this->bo->check_status_perms($uid,$event)) || $view) |
| 1602 | - $readonlys['participants'][$row]['status'] = $no_status; |
|
| 1701 | + { |
|
| 1702 | + $readonlys['participants'][$row]['status'] = $no_status; |
|
| 1703 | + } |
|
| 1603 | 1704 | if ($preserv['hide_delete'] || !$this->bo->check_perms(Acl::EDIT,$event)) |
| 1604 | - $readonlys['participants']['delete'][$uid] = true; |
|
| 1705 | + { |
|
| 1706 | + $readonlys['participants']['delete'][$uid] = true; |
|
| 1707 | + } |
|
| 1605 | 1708 | // todo: make the participants available as links with email as title |
| 1606 | 1709 | $content['participants'][$row++]['title'] = $this->get_title($uid); |
| 1607 | 1710 | // enumerate group-invitations, so people can accept/reject them |
@@ -1632,7 +1735,11 @@ discard block |
||
| 1632 | 1735 | $content['participants']['cal_resources'] = ''; |
| 1633 | 1736 | foreach($this->bo->resources as $data) |
| 1634 | 1737 | { |
| 1635 | - if ($data['app'] == 'email') continue; // make no sense, as we cant search for email |
|
| 1738 | + if ($data['app'] == 'email') |
|
| 1739 | + { |
|
| 1740 | + continue; |
|
| 1741 | + } |
|
| 1742 | + // make no sense, as we cant search for email |
|
| 1636 | 1743 | $content['participants']['cal_resources'] .= ','.$data['app']; |
| 1637 | 1744 | } |
| 1638 | 1745 | } |
@@ -1660,9 +1767,18 @@ discard block |
||
| 1660 | 1767 | $hours = (int) (($alarm['offset'] % DAY_s) / HOUR_s); |
| 1661 | 1768 | $minutes = (int) (($alarm['offset'] % HOUR_s) / 60); |
| 1662 | 1769 | $label = array(); |
| 1663 | - if ($days) $label[] = $days.' '.lang('days'); |
|
| 1664 | - if ($hours) $label[] = $hours.' '.lang('hours'); |
|
| 1665 | - if ($minutes) $label[] = $minutes.' '.lang('Minutes'); |
|
| 1770 | + if ($days) |
|
| 1771 | + { |
|
| 1772 | + $label[] = $days.' '.lang('days'); |
|
| 1773 | + } |
|
| 1774 | + if ($hours) |
|
| 1775 | + { |
|
| 1776 | + $label[] = $hours.' '.lang('hours'); |
|
| 1777 | + } |
|
| 1778 | + if ($minutes) |
|
| 1779 | + { |
|
| 1780 | + $label[] = $minutes.' '.lang('Minutes'); |
|
| 1781 | + } |
|
| 1666 | 1782 | $alarm['offset'] = implode(', ',$label) . ' ' . ($after ? lang('after') : lang('before')); |
| 1667 | 1783 | $content['alarm'][] = $alarm; |
| 1668 | 1784 | |
@@ -1725,25 +1841,34 @@ discard block |
||
| 1725 | 1841 | 'participants' => $this->accountsel->account_selection == 'none', |
| 1726 | 1842 | 'history' => !$event['id'], |
| 1727 | 1843 | ); |
| 1728 | - if (!isset($GLOBALS['egw_info']['user']['apps']['mail'])) // no mail without mail-app |
|
| 1844 | + if (!isset($GLOBALS['egw_info']['user']['apps']['mail'])) |
|
| 1845 | + { |
|
| 1846 | + // no mail without mail-app |
|
| 1729 | 1847 | { |
| 1730 | 1848 | unset($sel_options['action']['mail']); |
| 1849 | + } |
|
| 1731 | 1850 | unset($sel_options['action']['sendmeetingrequest']); |
| 1732 | 1851 | } |
| 1733 | - if (!$event['id']) // no ical export for new (not saved) events |
|
| 1852 | + if (!$event['id']) |
|
| 1853 | + { |
|
| 1854 | + // no ical export for new (not saved) events |
|
| 1734 | 1855 | { |
| 1735 | 1856 | $readonlys['action'] = true; |
| 1736 | 1857 | } |
| 1858 | + } |
|
| 1737 | 1859 | if (!($readonlys['button[exception]'] = !$this->bo->check_perms(Acl::EDIT,$event) || $event['recur_type'] == MCAL_RECUR_NONE || ($event['recur_enddate'] &&$event['start'] > $event['recur_enddate']))) |
| 1738 | 1860 | { |
| 1739 | 1861 | $content['exception_label'] = $this->bo->long_date(max($preserved['actual_date'], $event['start'])); |
| 1740 | 1862 | } |
| 1741 | 1863 | $readonlys['button[delete]'] = !$event['id'] || $preserved['hide_delete'] || !$this->bo->check_perms(Acl::DELETE,$event); |
| 1742 | 1864 | |
| 1743 | - if (!$event['id'] || $this->bo->check_perms(Acl::EDIT,$event)) // new event or edit rights to the event ==> allow to add alarm for all users |
|
| 1865 | + if (!$event['id'] || $this->bo->check_perms(Acl::EDIT,$event)) |
|
| 1866 | + { |
|
| 1867 | + // new event or edit rights to the event ==> allow to add alarm for all users |
|
| 1744 | 1868 | { |
| 1745 | 1869 | $sel_options['owner'][0] = lang('All participants'); |
| 1746 | 1870 | } |
| 1871 | + } |
|
| 1747 | 1872 | if (isset($event['participant_types']['u'][$this->user])) |
| 1748 | 1873 | { |
| 1749 | 1874 | $sel_options['owner'][$this->user] = $this->bo->participant_name($this->user); |
@@ -1785,7 +1910,10 @@ discard block |
||
| 1785 | 1910 | |
| 1786 | 1911 | $content['cancel_needs_refresh'] = (bool)$_GET['cancel_needs_refresh']; |
| 1787 | 1912 | |
| 1788 | - if (!empty($preserved['lock_token'])) $content['lock_token'] = $preserved['lock_token']; |
|
| 1913 | + if (!empty($preserved['lock_token'])) |
|
| 1914 | + { |
|
| 1915 | + $content['lock_token'] = $preserved['lock_token']; |
|
| 1916 | + } |
|
| 1789 | 1917 | |
| 1790 | 1918 | // non_interactive==true from $_GET calls immediate save action without displaying the edit form |
| 1791 | 1919 | if(isset($_GET['non_interactive']) && (bool)$_GET['non_interactive'] === true) |
@@ -1987,7 +2115,10 @@ discard block |
||
| 1987 | 2115 | // set status and send notification / meeting response |
| 1988 | 2116 | if ($this->bo->set_status($event['id'], $user, $status)) |
| 1989 | 2117 | { |
| 1990 | - if (!$msg) $msg = lang('Status changed'); |
|
| 2118 | + if (!$msg) |
|
| 2119 | + { |
|
| 2120 | + $msg = lang('Status changed'); |
|
| 2121 | + } |
|
| 1991 | 2122 | } |
| 1992 | 2123 | break; |
| 1993 | 2124 | |
@@ -2066,13 +2197,16 @@ discard block |
||
| 2066 | 2197 | |
| 2067 | 2198 | foreach (array_keys($allConflicts) as $pId) |
| 2068 | 2199 | { |
| 2069 | - if(substr($pId,0,1) == 'r' && $resources_config ) // resources Allow ignore conflicts |
|
| 2200 | + if(substr($pId,0,1) == 'r' && $resources_config ) |
|
| 2201 | + { |
|
| 2202 | + // resources Allow ignore conflicts |
|
| 2070 | 2203 | { |
| 2071 | 2204 | |
| 2072 | 2205 | switch ($resources_config['ignoreconflicts']) |
| 2073 | 2206 | { |
| 2074 | 2207 | case 'no': |
| 2075 | 2208 | $readonlys['button[ignore]'] = true; |
| 2209 | + } |
|
| 2076 | 2210 | break; |
| 2077 | 2211 | case 'allusers': |
| 2078 | 2212 | $readonlys['button[ignore]'] = false; |
@@ -2216,7 +2350,10 @@ discard block |
||
| 2216 | 2350 | } |
| 2217 | 2351 | else |
| 2218 | 2352 | { |
| 2219 | - if (!$content['duration']) $content['duration'] = $content['end'] - $content['start']; |
|
| 2353 | + if (!$content['duration']) |
|
| 2354 | + { |
|
| 2355 | + $content['duration'] = $content['end'] - $content['start']; |
|
| 2356 | + } |
|
| 2220 | 2357 | $weekds = 0; |
| 2221 | 2358 | foreach ($content['weekdays'] as &$wdays) |
| 2222 | 2359 | { |
@@ -2238,7 +2375,10 @@ discard block |
||
| 2238 | 2375 | $GLOBALS['egw_info']['flags']['app_header'] = lang('calendar') . ' - ' . lang('freetime search'); |
| 2239 | 2376 | |
| 2240 | 2377 | $sel_options['duration'] = $this->durations; |
| 2241 | - if ($content['duration'] && isset($sel_options['duration'][$content['duration']])) $content['end'] = ''; |
|
| 2378 | + if ($content['duration'] && isset($sel_options['duration'][$content['duration']])) |
|
| 2379 | + { |
|
| 2380 | + $content['end'] = ''; |
|
| 2381 | + } |
|
| 2242 | 2382 | |
| 2243 | 2383 | $etpl->exec('calendar.calendar_uiforms.freetimesearch',$content,$sel_options,NULL,array( |
| 2244 | 2384 | 'participants' => $content['participants'], |
@@ -2259,7 +2399,10 @@ discard block |
||
| 2259 | 2399 | */ |
| 2260 | 2400 | function freetime($participants,$start,$end,$duration=1,$cal_id=0) |
| 2261 | 2401 | { |
| 2262 | - if ($this->debug > 2) $this->bo->debug_message(__METHOD__.'(participants=%1, start=%2, end=%3, duration=%4, cal_id=%5)',true,$participants,$start,$end,$duration,$cal_id); |
|
| 2402 | + if ($this->debug > 2) |
|
| 2403 | + { |
|
| 2404 | + $this->bo->debug_message(__METHOD__.'(participants=%1, start=%2, end=%3, duration=%4, cal_id=%5)',true,$participants,$start,$end,$duration,$cal_id); |
|
| 2405 | + } |
|
| 2263 | 2406 | |
| 2264 | 2407 | $busy = $this->bo->search(array( |
| 2265 | 2408 | 'start' => $start, |
@@ -2276,15 +2419,26 @@ discard block |
||
| 2276 | 2419 | $n = 0; |
| 2277 | 2420 | foreach($busy as $event) |
| 2278 | 2421 | { |
| 2279 | - if ((int)$cal_id && $event['id'] == (int)$cal_id) continue; // ignore our own event |
|
| 2422 | + if ((int)$cal_id && $event['id'] == (int)$cal_id) |
|
| 2423 | + { |
|
| 2424 | + continue; |
|
| 2425 | + } |
|
| 2426 | + // ignore our own event |
|
| 2280 | 2427 | |
| 2281 | - if ($event['non_blocking']) continue; // ignore non_blocking events |
|
| 2428 | + if ($event['non_blocking']) |
|
| 2429 | + { |
|
| 2430 | + continue; |
|
| 2431 | + } |
|
| 2432 | + // ignore non_blocking events |
|
| 2282 | 2433 | |
| 2283 | 2434 | // check if from all wanted participants at least one has a not rejected status in found event |
| 2284 | 2435 | $non_rejected_found = false; |
| 2285 | 2436 | foreach($participants as $uid) |
| 2286 | 2437 | { |
| 2287 | - if ($event['participants'][$uid] == 'R') continue; |
|
| 2438 | + if ($event['participants'][$uid] == 'R') |
|
| 2439 | + { |
|
| 2440 | + continue; |
|
| 2441 | + } |
|
| 2288 | 2442 | |
| 2289 | 2443 | if (isset($event['participants'][$uid]) || |
| 2290 | 2444 | $uid > 0 && array_intersect(array_keys((array)$event['participants']), |
@@ -2294,7 +2448,10 @@ discard block |
||
| 2294 | 2448 | break; |
| 2295 | 2449 | } |
| 2296 | 2450 | } |
| 2297 | - if (!$non_rejected_found) continue; |
|
| 2451 | + if (!$non_rejected_found) |
|
| 2452 | + { |
|
| 2453 | + continue; |
|
| 2454 | + } |
|
| 2298 | 2455 | |
| 2299 | 2456 | if ($this->debug) |
| 2300 | 2457 | { |
@@ -2325,11 +2482,17 @@ discard block |
||
| 2325 | 2482 | 'start' => $ft_start, |
| 2326 | 2483 | 'end' => $ft_end, |
| 2327 | 2484 | ); |
| 2328 | - if ($this->debug > 1) echo "<p>freetime: ".date('D d.m.Y H:i',$ft_start)." - ".date('D d.m.Y H:i',$ft_end)."</p>\n"; |
|
| 2485 | + if ($this->debug > 1) |
|
| 2486 | + { |
|
| 2487 | + echo "<p>freetime: ".date('D d.m.Y H:i',$ft_start)." - ".date('D d.m.Y H:i',$ft_end)."</p>\n"; |
|
| 2488 | + } |
|
| 2329 | 2489 | } |
| 2330 | 2490 | $ft_start = $event['end']; |
| 2331 | 2491 | } |
| 2332 | - if ($this->debug > 0) $this->bo->debug_message('uiforms::freetime(participants=%1, start=%2, end=%3, duration=%4, cal_id=%5) freetime=%6',true,$participants,$start,$end,$duration,$cal_id,$freetime); |
|
| 2492 | + if ($this->debug > 0) |
|
| 2493 | + { |
|
| 2494 | + $this->bo->debug_message('uiforms::freetime(participants=%1, start=%2, end=%3, duration=%4, cal_id=%5) freetime=%6',true,$participants,$start,$end,$duration,$cal_id,$freetime); |
|
| 2495 | + } |
|
| 2333 | 2496 | |
| 2334 | 2497 | return $freetime; |
| 2335 | 2498 | } |
@@ -2349,10 +2512,16 @@ discard block |
||
| 2349 | 2512 | */ |
| 2350 | 2513 | function split_freetime_daywise($freetime, $duration, $weekdays, $_start_time, $_end_time, &$sel_options) |
| 2351 | 2514 | { |
| 2352 | - if ($this->debug > 1) $this->bo->debug_message('uiforms::split_freetime_daywise(freetime=%1, duration=%2, start_time=%3, end_time=%4)',true,$freetime,$duration,$_start_time,$_end_time); |
|
| 2515 | + if ($this->debug > 1) |
|
| 2516 | + { |
|
| 2517 | + $this->bo->debug_message('uiforms::split_freetime_daywise(freetime=%1, duration=%2, start_time=%3, end_time=%4)',true,$freetime,$duration,$_start_time,$_end_time); |
|
| 2518 | + } |
|
| 2353 | 2519 | |
| 2354 | 2520 | $freetime_daywise = array(); |
| 2355 | - if (!is_array($sel_options)) $sel_options = array(); |
|
| 2521 | + if (!is_array($sel_options)) |
|
| 2522 | + { |
|
| 2523 | + $sel_options = array(); |
|
| 2524 | + } |
|
| 2356 | 2525 | $time_format = $this->common_prefs['timeformat'] == 12 ? 'h:i a' : 'H:i'; |
| 2357 | 2526 | |
| 2358 | 2527 | $start_time = (int) $_start_time; // ignore leading zeros |
@@ -2362,7 +2531,10 @@ discard block |
||
| 2362 | 2531 | if (($end_time - $start_time)*HOUR_s < $duration) |
| 2363 | 2532 | { |
| 2364 | 2533 | $end_time = 0; |
| 2365 | - if ($this->debug > 1) $this->bo->debug_message('uiforms::split_freetime_daywise(, duration=%2, start_time=%3,..) end_time set to 0, it never fits durationn otherwise',true,$duration,$start_time); |
|
| 2534 | + if ($this->debug > 1) |
|
| 2535 | + { |
|
| 2536 | + $this->bo->debug_message('uiforms::split_freetime_daywise(, duration=%2, start_time=%3,..) end_time set to 0, it never fits durationn otherwise',true,$duration,$start_time); |
|
| 2537 | + } |
|
| 2366 | 2538 | } |
| 2367 | 2539 | $n = 0; |
| 2368 | 2540 | foreach($freetime as $ft) |
@@ -2383,13 +2555,19 @@ discard block |
||
| 2383 | 2555 | } |
| 2384 | 2556 | $start = $t < $ft['start'] ? $ft['start'] : $t; |
| 2385 | 2557 | |
| 2386 | - if ($start-$daybegin < $start_time*HOUR_s) // start earlier then start_time |
|
| 2558 | + if ($start-$daybegin < $start_time*HOUR_s) |
|
| 2559 | + { |
|
| 2560 | + // start earlier then start_time |
|
| 2387 | 2561 | { |
| 2388 | 2562 | $start = $daybegin + $start_time*HOUR_s; |
| 2389 | 2563 | } |
| 2564 | + } |
|
| 2390 | 2565 | // if end_time given use it, else the original slot's end |
| 2391 | 2566 | $end = $end_time ? $daybegin + $end_time*HOUR_s : $ft['end']; |
| 2392 | - if ($end > $ft['end']) $end = $ft['end']; |
|
| 2567 | + if ($end > $ft['end']) |
|
| 2568 | + { |
|
| 2569 | + $end = $ft['end']; |
|
| 2570 | + } |
|
| 2393 | 2571 | |
| 2394 | 2572 | // slot to small for duration |
| 2395 | 2573 | if ($end - $start < $duration) |
@@ -2431,7 +2609,10 @@ discard block |
||
| 2431 | 2609 | { |
| 2432 | 2610 | $msg = lang('Permission denied'); |
| 2433 | 2611 | |
| 2434 | - if ($return_error) return $msg; |
|
| 2612 | + if ($return_error) |
|
| 2613 | + { |
|
| 2614 | + return $msg; |
|
| 2615 | + } |
|
| 2435 | 2616 | } |
| 2436 | 2617 | else |
| 2437 | 2618 | { |
@@ -2493,27 +2674,42 @@ discard block |
||
| 2493 | 2674 | { |
| 2494 | 2675 | list($button) = each($_content['button']); |
| 2495 | 2676 | unset($_content['button']); |
| 2496 | - if ($button != 'cancel') // store changed Acl |
|
| 2677 | + if ($button != 'cancel') |
|
| 2678 | + { |
|
| 2679 | + // store changed Acl |
|
| 2497 | 2680 | { |
| 2498 | 2681 | foreach($_content as $data) |
| 2499 | 2682 | { |
| 2500 | 2683 | if (!($cat_id = $data['cat_id'])) continue; |
| 2684 | + } |
|
| 2501 | 2685 | foreach(array_merge((array)$data['add'],(array)$data['status'],array_keys((array)$data['old'])) as $account_id) |
| 2502 | 2686 | { |
| 2503 | 2687 | $rights = 0; |
| 2504 | - if (in_array($account_id,(array)$data['add'])) $rights |= calendar_boupdate::CAT_ACL_ADD; |
|
| 2505 | - if (in_array($account_id,(array)$data['status'])) $rights |= calendar_boupdate::CAT_ACL_STATUS; |
|
| 2506 | - if ($account_id) $this->bo->set_cat_rights($cat_id,$account_id,$rights); |
|
| 2688 | + if (in_array($account_id,(array)$data['add'])) |
|
| 2689 | + { |
|
| 2690 | + $rights |= calendar_boupdate::CAT_ACL_ADD; |
|
| 2691 | + } |
|
| 2692 | + if (in_array($account_id,(array)$data['status'])) |
|
| 2693 | + { |
|
| 2694 | + $rights |= calendar_boupdate::CAT_ACL_STATUS; |
|
| 2695 | + } |
|
| 2696 | + if ($account_id) |
|
| 2697 | + { |
|
| 2698 | + $this->bo->set_cat_rights($cat_id,$account_id,$rights); |
|
| 2699 | + } |
|
| 2507 | 2700 | } |
| 2508 | 2701 | } |
| 2509 | 2702 | } |
| 2510 | - if ($button != 'apply') // end dialog |
|
| 2703 | + if ($button != 'apply') |
|
| 2704 | + { |
|
| 2705 | + // end dialog |
|
| 2511 | 2706 | { |
| 2512 | 2707 | Egw::redirect_link('/index.php', array( |
| 2513 | 2708 | 'menuaction' => 'admin.admin_ui.index', |
| 2514 | 2709 | 'ajax' => 'true' |
| 2515 | 2710 | ), 'admin'); |
| 2516 | 2711 | } |
| 2712 | + } |
|
| 2517 | 2713 | } |
| 2518 | 2714 | $content= $preserv = array(); |
| 2519 | 2715 | $n = 1; |
@@ -2527,8 +2723,14 @@ discard block |
||
| 2527 | 2723 | ); |
| 2528 | 2724 | foreach($data as $account_id => $rights) |
| 2529 | 2725 | { |
| 2530 | - if ($rights & calendar_boupdate::CAT_ACL_ADD) $row['add'][] = $account_id; |
|
| 2531 | - if ($rights & calendar_boupdate::CAT_ACL_STATUS) $row['status'][] = $account_id; |
|
| 2726 | + if ($rights & calendar_boupdate::CAT_ACL_ADD) |
|
| 2727 | + { |
|
| 2728 | + $row['add'][] = $account_id; |
|
| 2729 | + } |
|
| 2730 | + if ($rights & calendar_boupdate::CAT_ACL_STATUS) |
|
| 2731 | + { |
|
| 2732 | + $row['status'][] = $account_id; |
|
| 2733 | + } |
|
| 2532 | 2734 | } |
| 2533 | 2735 | $content[$n] = $row; |
| 2534 | 2736 | $preserv[$n] = array( |
@@ -2656,7 +2858,10 @@ discard block |
||
| 2656 | 2858 | break; |
| 2657 | 2859 | } |
| 2658 | 2860 | } |
| 2659 | - if($return) return; |
|
| 2861 | + if($return) |
|
| 2862 | + { |
|
| 2863 | + return; |
|
| 2864 | + } |
|
| 2660 | 2865 | } |
| 2661 | 2866 | $old_event=$event=$this->bo->read($eventId); |
| 2662 | 2867 | if (!$durationT) |
@@ -2741,7 +2946,10 @@ discard block |
||
| 2741 | 2946 | $this->bo->update($event,true, true, false, true, $message,true); |
| 2742 | 2947 | |
| 2743 | 2948 | // Whole day non blocking with DAY_s would add a day |
| 2744 | - if($duration==DAY_s) $duration=0; |
|
| 2949 | + if($duration==DAY_s) |
|
| 2950 | + { |
|
| 2951 | + $duration=0; |
|
| 2952 | + } |
|
| 2745 | 2953 | } |
| 2746 | 2954 | // Drag a normal event to whole day non-blocking |
| 2747 | 2955 | else if ($durationT == 'whole_day') |
@@ -2765,7 +2973,10 @@ discard block |
||
| 2765 | 2973 | case 'no': |
| 2766 | 2974 | break; |
| 2767 | 2975 | case 'startday': |
| 2768 | - if ($sameday) break; |
|
| 2976 | + if ($sameday) |
|
| 2977 | + { |
|
| 2978 | + break; |
|
| 2979 | + } |
|
| 2769 | 2980 | default: |
| 2770 | 2981 | $status_reset_to_unknown = true; |
| 2771 | 2982 | $event['participants'][$uid] = calendar_so::combine_status('U',$q,$r); |
@@ -2803,7 +3014,10 @@ discard block |
||
| 2803 | 3014 | { |
| 2804 | 3015 | $response->call('egw.message', implode('<br />', $message)); |
| 2805 | 3016 | } |
| 2806 | - if($event['id'] != $eventId ) $this->update_client($_eventId); |
|
| 3017 | + if($event['id'] != $eventId ) |
|
| 3018 | + { |
|
| 3019 | + $this->update_client($_eventId); |
|
| 3020 | + } |
|
| 2807 | 3021 | if ($status_reset_to_unknown) |
| 2808 | 3022 | { |
| 2809 | 3023 | foreach((array)$event['participants'] as $uid => $status) |