Changeset 7695 for trunk/prototype/services/iCal.php
- Timestamp:
- 12/28/12 15:42:26 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/prototype/services/iCal.php
r7680 r7695 563 563 case 'REQUEST': 564 564 $schedulable = self::_getSchedulable($uid); 565 $calendar = false; 565 566 566 567 if ($schedulable) { //Caso o evento exista 567 if (!self::_existInMyCalendars($schedulable['id'], $params['owner'])) { 568 $calendarToSchedulable = array(); 569 $calendarToSchedulable['calendar'] = $params['calendar']; 570 $calendarToSchedulable['schedulable'] = $schedulable['id']; 571 $interation['calendarToSchedulable://' . mt_rand() . '(Formatter)'] = $calendarToSchedulable; 572 573 if (isset($params['status'])) { 574 if($params['owner'] != Config::me("uidNumber")){ 575 $user = Controller::Read(array('concept' => 'user'), false, array('filter' => array('=', 'id', $params['owner'])) ); 576 $pID = self::_getParticipantByMail($user[0]['mail'], $schedulable['participants']); 577 }else{ 578 $pID = self::_getParticipantByMail(Config::me('mail'), $schedulable['participants']); 579 //caso nõa seja participante adiciona a lista de participantes 580 if(!$pID){ 581 $pID = mt_rand() . '2(Formatter)'; 568 if (!($calendar = self::_existInMyCalendars($schedulable['id'], $params['owner']) )) { 569 $calendarToSchedulable = array(); 570 $calendarToSchedulable['calendar'] = $params['calendar']; 571 $calendarToSchedulable['schedulable'] = $schedulable['id']; 572 $interation['calendarToSchedulable://' . mt_rand() . '(Formatter)'] = $calendarToSchedulable; 573 574 if (isset($params['status'])) { 575 if($params['owner'] != Config::me("uidNumber")){ 576 $user = Controller::Read(array('concept' => 'user'), false, array('filter' => array('=', 'id', $params['owner'])) ); 577 $pID = self::_getParticipantByMail($user[0]['mail'], $schedulable['participants']); 578 }else{ 579 $pID = self::_getParticipantByMail(Config::me('mail'), $schedulable['participants']); 580 //caso nõa seja participante adiciona a lista de participantes 581 if(!$pID){ 582 $pID = mt_rand() . '2(Formatter)'; 583 $interation['participant://' . $pID]['status'] = $params['status']; 584 $interation['participant://' . $pID]['user'] = $params['owner']; 585 $interation['participant://' . $pID]['isOrganizer'] = '0'; 586 $interation['participant://' . $pID]['schedulable'] = $schedulable['id']; 587 }else 588 $interation['participant://' . $pID]['status'] = $params['status']; 589 } 590 } 591 592 Config::regSet('noAlarm', FALSE); //reativa notificação 593 } else { 594 595 if (self::_getTime($component, 'dtstamp') > $schedulable['dtstamp'] || $component->getProperty('sequence', false, false) > $schedulable['sequence']){ //Organizador esta requisitando que você atualize o evento 596 597 $params['calendar'] = $params['calendar'] == 'true' ? $calendar : $params['calendar']; 598 $interation = self::_makeVEVENT($schedulable, $component, $params); 599 }else if ($component->getProperty('sequence', false, false) === $schedulable['sequence']) { 600 //Ler melhor rfc sobre isto 3.2.2.2 601 //Aparentemente é para retornar um ical com o evento atualizado para o attende 602 } 603 604 if (isset($params['status'])) { 605 if($params['owner'] != Config::me("uidNumber")){ 606 $user = Controller::Read(array('concept' => 'user'), false, array('filter' => array('=', 'id', $params['owner'])) ); 607 $pID = self::_getParticipantByMail($user[0]['mail'], $schedulable['participants']); 608 }else 609 $pID = self::_getParticipantByMail(Config::me('mail'), $schedulable['participants']); 610 //Verifica a importação de eventos em que não participo 611 if ($pID) { 582 612 $interation['participant://' . $pID]['status'] = $params['status']; 583 $interation['participant://' . $pID]['user'] = $params['owner']; 584 $interation['participant://' . $pID]['isOrganizer'] = '0'; 585 $interation['participant://' . $pID]['schedulable'] = $schedulable['id']; 586 }else 587 $interation['participant://' . $pID]['status'] = $params['status']; 613 } 588 614 } 589 } 590 591 Config::regSet('noAlarm', FALSE); //reativa notificação 592 } else { 593 594 if (self::_getTime($component, 'dtstamp') > $schedulable['dtstamp'] || $component->getProperty('sequence', false, false) > $schedulable['sequence']) //Organizador esta requisitando que você atualize o evento 595 $interation = self::_makeVEVENT($schedulable, $component, $params); 596 else if ($component->getProperty('sequence', false, false) === $schedulable['sequence']) { 597 //Ler melhor rfc sobre isto 3.2.2.2 598 //Aparentemente é para retornar um ical com o evento atualizado para o attende 599 } 600 601 if (isset($params['status'])) { 602 if($params['owner'] != Config::me("uidNumber")){ 603 $user = Controller::Read(array('concept' => 'user'), false, array('filter' => array('=', 'id', $params['owner'])) ); 604 $pID = self::_getParticipantByMail($user[0]['mail'], $schedulable['participants']); 605 }else 606 $pID = self::_getParticipantByMail(Config::me('mail'), $schedulable['participants']); 607 //Verifica a importação de eventos em que não participo 608 if ($pID) { 609 $interation['participant://' . $pID]['status'] = $params['status']; 610 } 611 } 612 } 613 } else { // Importar evento 614 $interation = self::_makeVEVENT(array(), $component, $params); 615 616 if (strpos($params['prodid'], 'kigkonsult.se') !== false) { //envia notificação para fora 617 618 /* Data de Inicio */ 619 $startTime = $component->getProperty('dtstart', false, true); 620 621 $tzid = isset($startTime['params']['TZID']) ? $startTime['params']['TZID'] : $params['X-WR-TIMEZONE']; 622 623 /* Tiem zone do evento */ 624 if ($tzid) 625 $sc['timezone'] = self::nomalizeTZID($tzid); 626 else 627 $sc['timezone'] = isset($params['calendar_timezone']) ? $params['calendar_timezone'] : 'America/Sao_Paulo'; 628 629 $objTimezone = new DateTimeZone($sc['timezone']); 630 631 if (isset($startTime['params']['VALUE']) && $startTime['params']['VALUE'] === 'DATE' && isset($params['calendar_timezone'])) { 632 $sc['allDay'] = 1; 633 $sc['startTime'] = self::date2timestamp($startTime['value']) - self::_getTzOffset('UTC', $sc['timezone']) . '000'; 634 } elseif (isset($startTime['params']['TZID']) && !isset($startTime['value']['tz']))/* Caso não tenha um tz na data mais exista um parametro TZID deve ser aplicado o timezone do TZID a data */ 635 $sc['startTime'] = self::date2timestamp($startTime['value']) - self::_getTzOffset('UTC', $startTime['params']['TZID']) . '000'; 636 else { 637 $sc['startTime'] = self::date2timestamp($startTime['value']) . '000'; 638 if (strpos($params['prodid'], 'Outlook') !== false) { 639 //Se o ics veio em utc não aplicar horario de verão 640 $sTime = new DateTime('@' . (int) ($sc['startTime'] / 1000), new DateTimeZone('UTC')); 641 $sTime->setTimezone($objTimezone); 642 if ($sTime->format('I')) //Se o ics veio em utc não aplicar horario de verão 643 $sc['startTime'] = $sc['startTime'] - 3600000; 644 } 645 } 646 647 648 /* Data de Termino */ 649 $endTime = $component->getProperty('dtend', false, true); 650 651 if (isset($endTime['params']['VALUE']) && $endTime['params']['VALUE'] === 'DATE') 652 $sc['endTime'] = self::date2timestamp($endTime['value']) - self::_getTzOffset('UTC', $sc['timezone']) . '000'; 653 else if (isset($endTime['params']['TZID']) && !isset($endTime['value']['tz'])) /* Caso não tenha um tz na data mais exista um parametro TZID deve ser aplicado o timezone do TZID a data */ 654 $sc['endTime'] = self::date2timestamp($endTime['value']) - self::_getTzOffset('UTC', $endTime['params']['TZID']) . '000'; 655 else { 656 $sc['endTime'] = self::date2timestamp($endTime['value']) . '000'; 657 if (strpos($params['prodid'], 'Outlook') !== false) { 658 //Se o ics veio em utc não aplicar horario de verão 659 $eTime = new DateTime('@' . (int) ($sc['endTime'] / 1000), new DateTimeZone('UTC')); 660 $eTime->setTimezone($objTimezone); 661 if ($eTime->format('I')) 662 $sc['endTime'] = $sc['endTime'] - 3600000; 663 } 664 } 665 666 667 if ($uid = $component->getProperty('uid', false, false)) 668 ; 669 $sc['uid'] = $uid; 670 671 672 $sc['summary'] = mb_convert_encoding($component->getProperty('summary', false, false), 'UTF-8', 'UTF-8,ISO-8859-1'); 673 674 /* Definindo Description */ 675 if ($desc = $component->getProperty('description', false, false)) 676 $sc['description'] = mb_convert_encoding(str_ireplace(array('\n', '\t'), array("\n", "\t"), $desc), 'UTF-8', 'UTF-8,ISO-8859-1'); 677 678 /* Definindo location */ 679 if ($location = $component->getProperty('location', false, false)) 680 $sc['location'] = mb_convert_encoding($location, 'UTF-8', 'UTF-8,ISO-8859-1'); 681 682 683 684 if ($property = $component->getProperty('organizer', FALSE, TRUE)) { 685 $participant = array(); 686 $mailUser = trim(str_replace('MAILTO:', '', $property['value'])); 687 688 $participantID = mt_rand() . '2(Formatter)'; 689 690 $participant['isOrganizer'] = '1'; 691 692 $user = null; 693 694 $participant['isExternal'] = 1; 695 /* Gera um randon id para o contexto formater */ 696 $userID = mt_rand() . '4(Formatter)'; 697 698 $user['mail'] = $mailUser; 699 $organizerMail = $mailUser; 700 701 $user['name'] = ( isset($property['params']['CN']) ) ? $property['params']['CN'] : ''; 702 $user['isExternal'] = '1'; 703 $participant['user'] = $user; 704 705 $sc['participants'][] = $participant; 706 } 707 708 709 $participant['status'] = isset($params['status']) ? $params['status'] : STATUS_ACCEPTED; 710 $participant['isOrganizer'] = '0'; 711 $participant['isExternal'] = 0; 712 $participant['user'] = array('mail' => Config::me('mail'), 'name' => Config::me('cn')); 713 $sc['participants'][] = $participant; 714 $sc['type'] = EVENT_ID; 715 716 717 $ical['source'] = Controller::format(array('service' => 'iCal'), array($sc), array('method' => 'REPLY')); 718 $ical['type'] = 'application/ics'; 719 $ical['name'] = 'outlook.ics'; 720 721 $ical2['source'] = $ical['source']; 722 $ical2['type'] = 'text/calendar; method=REPLY'; 723 $ical2['name'] = 'thunderbird.ics'; 724 725 $timezone = new DateTimeZone('UTC'); 726 $sTime = new DateTime('@' . (int) ($sc['startTime'] / 1000), $timezone); 727 $eTime = new DateTime('@' . (int) ($sc['endTime'] / 1000), $timezone); 728 729 if (isset($sc['timezone'])) { 730 $sTime->setTimezone(new DateTimeZone($sc['timezone'])); 731 $eTime->setTimezone(new DateTimeZone($sc['timezone'])); 732 } 733 734 $data = array('startDate' => date_format($sTime, 'd/m/Y'), 735 'startTime' => (isset($sc['allDay']) && $sc['allDay'] ) ? '' : date_format($sTime, 'H:i'), 736 'endDate' => date_format($eTime, 'd/m/Y'), 737 'endTime' => isset($sc['allDay']) ? '' : date_format($eTime, 'H:i'), 738 'eventTitle' => $sc['summary'], 739 'eventLocation' => isset($sc['location']) ? $sc['location'] : '', 740 'timezone' => ($sc['timezone']) ? $sc['timezone'] : 'UTC', 741 'participant' => (isset($part['user']['name']) ? $part['user']['name'] : $part['user']['mail'])); 742 743 $subject['notificationType'] = 'Convite Aceito'; 744 $subject['eventTitle'] = mb_convert_encoding($sc['summary'], 'ISO-8859-1', 'ISO-8859-1,UTF-8'); 745 $subject['startDate'] = date_format($sTime, 'd/m/Y'); 746 $subject['startTime'] = ($sc['allDay']) ? '' : date_format($sTime, 'H:i'); 747 $subject['endDate'] = date_format($eTime, 'd/m/Y'); 748 $subject['endTime'] = ($sc['allDay']) ? '' : date_format($eTime, 'H:i'); 749 $subject['participant'] = Config::me('uid'); 750 751 $params['status'] = isset($params['status']) ? $params['status'] : STATUS_ACCEPTED; 752 753 switch ($params['status']) { 754 case STATUS_ACCEPTED: 755 $tpl = 'notify_accept_body'; 756 $subject['notificationType'] = 'Convite Aceito'; 757 break; 758 case STATUS_TENTATIVE: 759 $tpl = 'notify_attempt_body'; 760 $subject['notificationType'] = 'Convite aceito provisoriamente'; 761 break; 762 case STATUS_CANCELLED: 763 $tpl = 'notify_reject_body'; 764 $subject['notificationType'] = 'Convite rejeitado'; 765 break; 766 } 767 require_once ROOTPATH . '/api/parseTPL.php'; 768 769 $mail = array(); 770 $mail['attachments'][] = $ical; 771 $mail['attachments'][] = $ical2; 772 773 $mail['isHtml'] = true; 774 $mail['body'] = parseTPL::load_tpl($data, ROOTPATH . '/modules/calendar/templates/' . $tpl . '.tpl'); 775 $mail['subject'] = parseTPL::load_tpl($subject, ROOTPATH . '/modules/calendar/templates/notify_subject.tpl'); 776 ; 777 $mail['from'] = '"' . Config::me('cn') . '" <' . Config::me('mail') . '>'; 778 $mail['to'] = $organizerMail; 779 780 781 Controller::create(array('service' => 'SMTP'), $mail); 782 } 615 } 616 } else { // Importar evento 617 $interation = self::_makeVEVENT(array(), $component, $params); 618 619 if (strpos($params['prodid'], 'kigkonsult.se') !== false) { //envia notificação para fora 620 621 /* Data de Inicio */ 622 $startTime = $component->getProperty('dtstart', false, true); 623 624 $tzid = isset($startTime['params']['TZID']) ? $startTime['params']['TZID'] : $params['X-WR-TIMEZONE']; 625 626 /* Tiem zone do evento */ 627 if ($tzid) 628 $sc['timezone'] = self::nomalizeTZID($tzid); 629 else 630 $sc['timezone'] = isset($params['calendar_timezone']) ? $params['calendar_timezone'] : 'America/Sao_Paulo'; 631 632 $objTimezone = new DateTimeZone($sc['timezone']); 633 634 if (isset($startTime['params']['VALUE']) && $startTime['params']['VALUE'] === 'DATE' && isset($params['calendar_timezone'])) { 635 $sc['allDay'] = 1; 636 $sc['startTime'] = self::date2timestamp($startTime['value']) - self::_getTzOffset('UTC', $sc['timezone']) . '000'; 637 } elseif (isset($startTime['params']['TZID']) && !isset($startTime['value']['tz']))/* Caso não tenha um tz na data mais exista um parametro TZID deve ser aplicado o timezone do TZID a data */ 638 $sc['startTime'] = self::date2timestamp($startTime['value']) - self::_getTzOffset('UTC', $startTime['params']['TZID']) . '000'; 639 else { 640 $sc['startTime'] = self::date2timestamp($startTime['value']) . '000'; 641 if (strpos($params['prodid'], 'Outlook') !== false) { 642 //Se o ics veio em utc não aplicar horario de verão 643 $sTime = new DateTime('@' . (int) ($sc['startTime'] / 1000), new DateTimeZone('UTC')); 644 $sTime->setTimezone($objTimezone); 645 if ($sTime->format('I')) //Se o ics veio em utc não aplicar horario de verão 646 $sc['startTime'] = $sc['startTime'] - 3600000; 647 } 648 } 649 650 651 /* Data de Termino */ 652 $endTime = $component->getProperty('dtend', false, true); 653 654 if (isset($endTime['params']['VALUE']) && $endTime['params']['VALUE'] === 'DATE') 655 $sc['endTime'] = self::date2timestamp($endTime['value']) - self::_getTzOffset('UTC', $sc['timezone']) . '000'; 656 else if (isset($endTime['params']['TZID']) && !isset($endTime['value']['tz'])) /* Caso não tenha um tz na data mais exista um parametro TZID deve ser aplicado o timezone do TZID a data */ 657 $sc['endTime'] = self::date2timestamp($endTime['value']) - self::_getTzOffset('UTC', $endTime['params']['TZID']) . '000'; 658 else { 659 $sc['endTime'] = self::date2timestamp($endTime['value']) . '000'; 660 if (strpos($params['prodid'], 'Outlook') !== false) { 661 //Se o ics veio em utc não aplicar horario de verão 662 $eTime = new DateTime('@' . (int) ($sc['endTime'] / 1000), new DateTimeZone('UTC')); 663 $eTime->setTimezone($objTimezone); 664 if ($eTime->format('I')) 665 $sc['endTime'] = $sc['endTime'] - 3600000; 666 } 667 } 668 669 670 if ($uid = $component->getProperty('uid', false, false)) 671 ; 672 $sc['uid'] = $uid; 673 674 675 $sc['summary'] = mb_convert_encoding($component->getProperty('summary', false, false), 'UTF-8', 'UTF-8,ISO-8859-1'); 676 677 /* Definindo Description */ 678 if ($desc = $component->getProperty('description', false, false)) 679 $sc['description'] = mb_convert_encoding(str_ireplace(array('\n', '\t'), array("\n", "\t"), $desc), 'UTF-8', 'UTF-8,ISO-8859-1'); 680 681 /* Definindo location */ 682 if ($location = $component->getProperty('location', false, false)) 683 $sc['location'] = mb_convert_encoding($location, 'UTF-8', 'UTF-8,ISO-8859-1'); 684 685 686 687 if ($property = $component->getProperty('organizer', FALSE, TRUE)) { 688 $participant = array(); 689 $mailUser = trim(str_replace('MAILTO:', '', $property['value'])); 690 691 $participantID = mt_rand() . '2(Formatter)'; 692 693 $participant['isOrganizer'] = '1'; 694 695 $user = null; 696 697 $participant['isExternal'] = 1; 698 /* Gera um randon id para o contexto formater */ 699 $userID = mt_rand() . '4(Formatter)'; 700 701 $user['mail'] = $mailUser; 702 $organizerMail = $mailUser; 703 704 $user['name'] = ( isset($property['params']['CN']) ) ? $property['params']['CN'] : ''; 705 $user['isExternal'] = '1'; 706 $participant['user'] = $user; 707 708 $sc['participants'][] = $participant; 709 } 710 711 712 $participant['status'] = isset($params['status']) ? $params['status'] : STATUS_ACCEPTED; 713 $participant['isOrganizer'] = '0'; 714 $participant['isExternal'] = 0; 715 $participant['user'] = array('mail' => Config::me('mail'), 'name' => Config::me('cn')); 716 $sc['participants'][] = $participant; 717 $sc['type'] = EVENT_ID; 718 719 720 $ical['source'] = Controller::format(array('service' => 'iCal'), array($sc), array('method' => 'REPLY')); 721 $ical['type'] = 'application/ics'; 722 $ical['name'] = 'outlook.ics'; 723 724 $ical2['source'] = $ical['source']; 725 $ical2['type'] = 'text/calendar; method=REPLY'; 726 $ical2['name'] = 'thunderbird.ics'; 727 728 $timezone = new DateTimeZone('UTC'); 729 $sTime = new DateTime('@' . (int) ($sc['startTime'] / 1000), $timezone); 730 $eTime = new DateTime('@' . (int) ($sc['endTime'] / 1000), $timezone); 731 732 if (isset($sc['timezone'])) { 733 $sTime->setTimezone(new DateTimeZone($sc['timezone'])); 734 $eTime->setTimezone(new DateTimeZone($sc['timezone'])); 735 } 736 737 $data = array('startDate' => date_format($sTime, 'd/m/Y'), 738 'startTime' => (isset($sc['allDay']) && $sc['allDay'] ) ? '' : date_format($sTime, 'H:i'), 739 'endDate' => date_format($eTime, 'd/m/Y'), 740 'endTime' => isset($sc['allDay']) ? '' : date_format($eTime, 'H:i'), 741 'eventTitle' => $sc['summary'], 742 'eventLocation' => isset($sc['location']) ? $sc['location'] : '', 743 'timezone' => ($sc['timezone']) ? $sc['timezone'] : 'UTC', 744 'participant' => (isset($part['user']['name']) ? $part['user']['name'] : $part['user']['mail'])); 745 746 $subject['notificationType'] = 'Convite Aceito'; 747 $subject['eventTitle'] = mb_convert_encoding($sc['summary'], 'ISO-8859-1', 'ISO-8859-1,UTF-8'); 748 $subject['startDate'] = date_format($sTime, 'd/m/Y'); 749 $subject['startTime'] = ($sc['allDay']) ? '' : date_format($sTime, 'H:i'); 750 $subject['endDate'] = date_format($eTime, 'd/m/Y'); 751 $subject['endTime'] = ($sc['allDay']) ? '' : date_format($eTime, 'H:i'); 752 $subject['participant'] = Config::me('uid'); 753 754 $params['status'] = isset($params['status']) ? $params['status'] : STATUS_ACCEPTED; 755 756 switch ($params['status']) { 757 case STATUS_ACCEPTED: 758 $tpl = 'notify_accept_body'; 759 $subject['notificationType'] = 'Convite Aceito'; 760 break; 761 case STATUS_TENTATIVE: 762 $tpl = 'notify_attempt_body'; 763 $subject['notificationType'] = 'Convite aceito provisoriamente'; 764 break; 765 case STATUS_CANCELLED: 766 $tpl = 'notify_reject_body'; 767 $subject['notificationType'] = 'Convite rejeitado'; 768 break; 769 } 770 require_once ROOTPATH . '/api/parseTPL.php'; 771 772 $mail = array(); 773 $mail['attachments'][] = $ical; 774 $mail['attachments'][] = $ical2; 775 776 $mail['isHtml'] = true; 777 $mail['body'] = parseTPL::load_tpl($data, ROOTPATH . '/modules/calendar/templates/' . $tpl . '.tpl'); 778 $mail['subject'] = parseTPL::load_tpl($subject, ROOTPATH . '/modules/calendar/templates/notify_subject.tpl'); 779 ; 780 $mail['from'] = '"' . Config::me('cn') . '" <' . Config::me('mail') . '>'; 781 $mail['to'] = $organizerMail; 782 783 784 Controller::create(array('service' => 'SMTP'), $mail); 785 } 783 786 } 784 787 break; … … 1189 1192 $schedulable = self::_getSchedulable($uid); 1190 1193 if ($schedulable) { //Caso o evento exista 1191 $isOrganizer = false; 1192 $isParticipant = false; 1193 1194 foreach ($schedulable['participants'] as $value) 1195 if ($value['user']['id'] == $params['owner']) { 1196 $isParticipant = true; 1197 if ($value['isOrganizer']) 1198 $isOrganizer = true; 1199 1200 if (!self::_existInMyCalendars($schedulable['id'], $params['owner'])) { 1201 $interation = ICAL_ACTION_UPDATE; 1202 $interation = ( strrpos($value['acl'], ATTENDEE_ACL_PARTICIPATION_REQUIRED) ) ? ICAL_ACTION_IMPORT_REQUIRED : array('action' => ICAL_ACTION_IMPORT, 'type' => 'calendarIds'); 1203 break; 1204 } 1205 } else { 1206 if (self::_getTime($component, 'dtstamp') > $schedulable['dtstamp'] || $component->getProperty('sequence', false, false) > $schedulable['sequence']) //Organizador esta requisitando que você atualize o evento 1207 $interation = ($isOrganizer) ? ICAL_ACTION_ORGANIZER_UPDATE : ICAL_ACTION_UPDATE; 1208 else 1209 $interation = ($isOrganizer) ? ICAL_ACTION_ORGANIZER_NONE : ICAL_ACTION_NONE; 1210 } 1211 if (!$isParticipant){ 1212 $interation = self::_checkParticipantByPermissions($schedulable); 1213 } 1214 }else 1215 $interation = array('action' => ICAL_ACTION_IMPORT, 'type' => 'calendarIds'); 1216 1217 if(($interation != ICAL_ACTION_NONE) && ($interation != ICAL_ACTION_ORGANIZER_NONE) && ($interation != ICAL_ACTION_ORGANIZER_UPDATE) && ($interation != ICAL_ACTION_NONE)) { 1218 if($params['owner'] != Config::me("uidNumber")){ 1219 $sig = Controller::find(array('concept' => 'calendarSignature'), array('calendar'), array('filter' => array('AND', array('=', 'user', $params['owner']), array('=', 'isOwner', '1')))); 1220 $calendars = array(); 1221 foreach ($sig as $val) 1222 $calendars[] = $val['calendar']; 1223 1224 $calendarsPermission = Controller::find(array('concept' => 'calendarToPermission'), array('calendar'), array('filter' => array('AND', array('=', 'user', Config::me("uidNumber")), array('IN', 'calendar', $calendars)))); 1225 1226 foreach ($calendarsPermission as $val) 1227 $ids[] = $val['calendar']; 1228 1229 $interation = array('action' => ICAL_ACTION_IMPORT_FROM_PERMISSION ,'calendar' => $ids); 1230 } 1231 } 1194 $isOrganizer = false; 1195 $isParticipant = false; 1196 1197 foreach ($schedulable['participants'] as $value){ 1198 1199 if ($value['user']['id'] == $params['owner']) { 1200 $isParticipant = true; 1201 if ($value['isOrganizer']) 1202 $isOrganizer = true; 1203 1204 if (!self::_existInMyCalendars($schedulable['id'], $params['owner'])) { 1205 $interation = ICAL_ACTION_UPDATE; 1206 $interation = ( strrpos($value['acl'], ATTENDEE_ACL_PARTICIPATION_REQUIRED) ) ? ICAL_ACTION_IMPORT_REQUIRED : array('action' => ICAL_ACTION_IMPORT, 'type' => 'calendarIds'); 1207 break; 1208 } 1209 } else { 1210 if (self::_getTime($component, 'dtstamp') > $schedulable['dtstamp'] || $component->getProperty('sequence', false, false) > $schedulable['sequence']) //Organizador esta requisitando que você atualize o evento 1211 $interation = ($isOrganizer) ? ICAL_ACTION_ORGANIZER_UPDATE : ICAL_ACTION_UPDATE; 1212 else 1213 $interation = ($isOrganizer) ? ICAL_ACTION_ORGANIZER_NONE : ICAL_ACTION_NONE; 1214 } 1215 1216 } 1217 1218 if (!$isParticipant){ 1219 if( self::_existInMyCalendars($schedulable['id'], $params['owner']) ){ 1220 1221 $interation = (self::_getTime($component, 'dtstamp') > $schedulable['dtstamp'] ? ICAL_ACTION_UPDATE : ICAL_ACTION_NONE); 1222 1223 }else{ 1224 1225 $interation = self::_checkParticipantByPermissions($schedulable); 1226 1227 } 1228 1229 1230 } 1231 }else 1232 $interation = array('action' => ICAL_ACTION_IMPORT_REQUIRED, 'type' => 'calendarIds'); 1233 1234 if(($interation != ICAL_ACTION_NONE) && ($interation != ICAL_ACTION_ORGANIZER_NONE) && ($interation != ICAL_ACTION_ORGANIZER_UPDATE) && ($interation != ICAL_ACTION_NONE) && ($interation != ICAL_ACTION_UPDATE) && (!is_array($interation ) )) { 1235 if($params['owner'] != Config::me("uidNumber")){ 1236 $sig = Controller::find(array('concept' => 'calendarSignature'), array('calendar'), array('filter' => array('AND', array('=', 'user', $params['owner']), array('=', 'isOwner', '1')))); 1237 $calendars = array(); 1238 foreach ($sig as $val) 1239 $calendars[] = $val['calendar']; 1240 1241 $calendarsPermission = Controller::find(array('concept' => 'calendarToPermission'), array('calendar'), array('filter' => array('AND', array('=', 'user', Config::me("uidNumber")), array('IN', 'calendar', $calendars)))); 1242 1243 foreach ($calendarsPermission as $val) 1244 $ids[] = $val['calendar']; 1245 1246 $interation = array('action' => ICAL_ACTION_IMPORT_FROM_PERMISSION ,'calendar' => $ids); 1247 } 1248 } 1232 1249 1233 1250 break;
Note: See TracChangeset
for help on using the changeset viewer.