Changeset 7228 for branches/2.4/prototype/modules/calendar/interceptors
- Timestamp:
- 09/17/12 14:30:47 (12 years ago)
- Location:
- branches/2.4
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2.4
- Property svn:mergeinfo changed
-
branches/2.4/prototype/modules/calendar/interceptors/DBMapping.php
r7093 r7228 1 1 <?php 2 /** 3 * 4 * Copyright (C) 2011 Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation; either version 3 of the License, or 9 * any later version. 10 * 11 * This program is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 13 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 14 * details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program; if not, write to the Free Software Foundation, 18 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 * 20 * You can contact Prognus Software Livre headquarters at Av. Tancredo Neves, 21 * 6731, PTI, Edifício do Saber, 3º floor, room 306, Foz do Iguaçu - PR - Brasil 22 * or at e-mail address prognus@prognus.com.br. 23 * 24 * Neste arquivo são ser implementadas regras de negócio para consistir e normalizar os dados correspondentes às operações do usuário para o ExpressoCalendar. 25 * 26 * @license http://www.gnu.org/copyleft/gpl.html GPL 27 * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 28 * @version 1.0 29 * @sponsor Caixa Econômica Federal 30 * @since Arquivo disponibilizado na versão Expresso 2.4.0 31 */ 32 2 /** 3 * 4 * Copyright (C) 2011 Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation; either version 3 of the License, or 9 * any later version. 10 * 11 * This program is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 13 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 14 * details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program; if not, write to the Free Software Foundation, 18 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 * 20 * You can contact Prognus Software Livre headquarters at Av. Tancredo Neves, 21 * 6731, PTI, Edifício do Saber, 3º floor, room 306, Foz do Iguaçu - PR - Brasil 22 * or at e-mail address prognus@prognus.com.br. 23 * 24 * Neste arquivo são ser implementadas regras de negócio para consistir e normalizar os dados correspondentes às operações do usuário para o ExpressoCalendar. 25 * 26 * @license http://www.gnu.org/copyleft/gpl.html GPL 27 * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 28 * @version 1.0 29 * @sponsor Caixa Econômica Federal 30 * @since Arquivo disponibilizado na versão Expresso 2.4.0 31 */ 32 33 33 34 34 35 //Definindo Constantes … … 39 40 use prototype\api\Config as Config; 40 41 41 /** 42 * Classe com implementações das regras de negócio para consistir e normalizar os dados correspondentes às operações do usuário para o ExpressoCalendar. 43 * 44 * @license http://www.gnu.org/copyleft/gpl.html GPL 45 * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 46 * @sponsor Caixa Econômica Federal 47 * @version 1.0 48 * @since Classe disponibilizada na versão Expresso 2.4.0 49 */ 42 /** 43 * Classe com implementações das regras de negócio para consistir e normalizar os dados correspondentes às operações do usuário para o ExpressoCalendar. 44 * 45 * @license http://www.gnu.org/copyleft/gpl.html GPL 46 * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 47 * @sponsor Caixa Econômica Federal 48 * @version 1.0 49 * @since Classe disponibilizada na versão Expresso 2.4.0 50 */ 50 51 51 52 class DBMapping extends Helpers { 52 53 53 static function encodeCreateSchedulable(&$uri, &$params, &$criteria, $original) { 54 $params['type_id'] = EVENT_ID; 55 56 if (!is_numeric($params['startTime'])) 57 $params['startTime'] = self::parseTimeDate($params['startTime'], $params['timezone']); 58 59 if (!is_numeric($params['endTime'])) { 60 $params['endTime'] = self::parseTimeDate($params['endTime'], $params['timezone']); 61 62 if ($params['allDay']) 63 $params['endTime'] = $params['endTime'] + 86400000; 64 } 65 66 $params['rangeEnd'] = $params['endTime']; 67 $params['rangeStart'] = $params['startTime']; 68 69 /////////////////////////////////////////////////////////////////// 70 71 $params['dtstamp'] = (isset($params['dtstamp'])) ? $params['dtstamp'] : time() . '000'; 72 $params['lastUpdate'] = (isset($params['lastUpdate'])) ? $params['lastUpdate'] : time() . '000'; 73 $params['type'] = EVENT_ID; 74 $params['uid'] = isset($params['uid']) ? $params['uid'] : self::_makeUid(); 75 } 54 static function encodeCreateSchedulable(&$uri, &$params, &$criteria, $original) 55 { 56 57 if (isset($params['startTime']) && !is_numeric($params['startTime'])) 58 $params['startTime'] = self::parseTimeDate($params['startTime'], $params['timezone']); 59 60 $params['rangeStart'] = $params['startTime']; 61 62 if (isset($params['endTime']) && !is_numeric($params['endTime'])) { 63 $params['endTime'] = self::parseTimeDate($params['endTime'], $params['timezone']); 64 65 if ($params['allDay']) 66 $params['endTime'] = $params['endTime'] + 86400000; 67 } 68 69 $params['rangeEnd'] = $params['endTime']; 70 71 72 if (isset($params['due']) && $params['due'] != '' && !is_numeric($params['due'])) 73 $params['due'] = self::parseTimeDate($params['due'], $params['timezone']); 74 75 /////////////////////////////////////////////////////////////////// 76 77 $params['dtstamp'] = (isset($params['dtstamp'])) ? $params['dtstamp'] : time() . '000'; 78 $params['lastUpdate'] = (isset($params['lastUpdate'])) ? $params['lastUpdate'] : time() . '000'; 79 $params['uid'] = isset($params['uid']) ? $params['uid'] : self::_makeUid(); 80 } 76 81 77 82 static function parseTimeDate($time, $timezone) { … … 107 112 if (isset($params['type'])) 108 113 $params['type'] = self::codeAlarmType($params['type']); 114 else{ 115 $alarm = Controller::read( array('concept' => 'alarm' , 'id' => $params['id'] )); 116 117 $params['unit'] = $alarm['unit']; 118 } 119 $params['offset'] = $params['time'] * 1000; 120 121 122 switch( strtolower($params['unit']) ) 123 { 124 case 'd': $params['offset'] *= 24; 125 case 'h': $params['offset'] *= 60; 126 case 'm': $params['offset'] *= 60; 127 } 128 109 129 } 110 130 … … 160 180 .'calendar_object.dtstart as "startTime", calendar_object.summary as "summary", ' 161 181 .'calendar_object.description as "description", calendar_object.dtend as "endTime" , ' 182 .'calendar_object.priority as "priority", calendar_object.due as "due", ' 183 .'calendar_object.percentage as "percentage", calendar_object.status as "status", ' 162 184 .'calendar_object.location as "location", calendar_object.allday as "allDay", ' 163 185 .'calendar_object.transp as "transparent", calendar_object.class_id as "class", ' … … 168 190 .'calendar FROM calendar_to_calendar_object , calendar_object ' 169 191 .'WHERE ( calendar_to_calendar_object.calendar_id IN (\'' . implode('\',\'', $criteria['filter'][2][2]) . '\')) ' 170 .'AND calendar_to_calendar_object.calendar_object_id = calendar_object.id '; 192 .'AND calendar_to_calendar_object.calendar_object_id = calendar_object.id ' 193 .'AND calendar_object.id NOT IN(select calendar_object_task_id from calendar_task_to_activity_object where owner = \'' . Config::me('uidNumber') . '\') '; 171 194 172 195 if(isset($criteria['searchEvent']) && $criteria['searchEvent']){ … … 198 221 $params = array_merge($params, $occ); 199 222 } 223 $params = self::deepnessFindEvent($uri, $params, $criteria, $original); 224 return false; 225 } 226 } 227 228 public function findTask(&$uri, &$params, &$criteria, $original) { 229 230 if (isset($criteria['filterTasks']) && $criteria['filterTasks']) { 231 232 $sql = ' SELECT calendar_object.id as id ,calendar_object.cal_uid as "uid", calendar_object.type_id as "type", ' 233 .'calendar_object.dtstart as "startTime", calendar_object.summary as "summary", ' 234 .'calendar_object.description as "description", calendar_object.dtend as "endTime" , ' 235 .'calendar_object.priority as "priority", calendar_object.due as "due", ' 236 .'calendar_object.percentage as "percentage", calendar_object.status as "status", ' 237 .'calendar_object.location as "location", calendar_object.allday as "allDay", ' 238 .'calendar_object.transp as "transparent", calendar_object.class_id as "class", ' 239 .'calendar_object.repeat as "repeat", calendar_object.range_start as "rangeStart", ' 240 .'calendar_object.range_end as "rangeEnd", calendar_object.last_update as "lastUpdate", ' 241 .'calendar_object.dtstamp as "dtstamp", calendar_object.sequence as "sequence", ' 242 .'calendar_object.tzid as "timezone" ,calendar_to_calendar_object.calendar_id as ' 243 .'calendar FROM calendar_to_calendar_object , calendar_object ' 244 .'WHERE ( calendar_to_calendar_object.calendar_id IN (\'' . implode('\',\'', $criteria['filter'][3][2]) . '\')) ' 245 .'AND calendar_to_calendar_object.calendar_object_id = calendar_object.id ' 246 .'AND calendar_to_calendar_object.calendar_object_id NOT IN (select calendar_object_activity_id from calendar_task_to_activity_object where owner = \'' . Config::me("uidNumber") . '\' ) ' 247 .'AND calendar_to_calendar_object.calendar_object_id NOT IN (select calendar_object_task_id from calendar_task_to_activity_object where owner = \'' . Config::me("uidNumber") . '\' ) '; 248 249 if(isset($criteria['filter'][4])) 250 $sql .= 'AND (((upper("summary") like upper(\'%'.$criteria['filter'][4][1][2].'%\') OR upper("description") like upper(\'%'.$criteria['filter'][4][1][2].'%\'))))'; 251 252 $sql .= 'AND (range_start >= \'' . $criteria['filter'][2][2] . '\' AND type_id <= \'' . $criteria['filter'][1][2] . '\')'; 253 254 $params = Controller::service('PostgreSQL')->execResultSql($sql); 200 255 $params = self::deepnessFindEvent($uri, $params, $criteria, $original); 201 256 return false; … … 442 497 } 443 498 444 //Encode Update 445 499 //Encode Update 446 500 public function encodeUpdateSchedulable(&$uri, &$params, &$criteria, $original) { 447 448 $event = Controller::read(array('concept' => 'schedulable', 'id' => $params['id'])); 449 450 if (isset($params['startTime'])) { 451 452 if (!is_numeric($params['startTime'])) 453 $params['startTime'] = self::parseTimeDate($params['startTime'], $event['timezone']); 454 455 $params['rangeStart'] = $params['startTime']; 456 }if (isset($params['endTime'])) { 457 458 if (!is_numeric($params['endTime'])) { 459 $params['endTime'] = self::parseTimeDate($params['endTime'], $event['timezone']); 460 461 if ((isset($params['allDay']) && $params['allDay']) || ( !isset($params['allDay']) && $event['allDay'])) 462 $params['endTime'] = $params['endTime'] + 86400000; 463 } 464 $params['rangeEnd'] = $params['endTime']; 465 } 501 $event = Controller::read(array('concept' => 'schedulable', 'id' => $uri['id'])); 502 if (isset($params['startTime'])) { 503 504 if (!is_numeric($params['startTime'])) 505 $params['startTime'] = self::parseTimeDate($params['startTime'], $event['timezone']); 506 507 $params['rangeStart'] = $params['startTime']; 508 } 509 510 if (isset($params['endTime'])) { 511 512 if (!is_numeric($params['endTime'])) { 513 $params['endTime'] = self::parseTimeDate($params['endTime'], $event['timezone']); 514 515 if ((isset($params['allDay']) && $params['allDay']) || ( !isset($params['allDay']) && $event['allDay'])) 516 $params['endTime'] = $params['endTime'] + 86400000; 517 } 518 $params['rangeEnd'] = $params['endTime']; 519 } 520 521 522 if (isset($params['due']) && $params['due'] != '' && !is_numeric($params['due'])) 523 $params['due'] = self::parseTimeDate($params['due'], $event['timezone']); 524 525 if($event['type'] == '2'){ 526 $criteria['historic'] = $params; 527 $criteria['beforeValue'] = $event; 528 529 if(isset($params['startTime']) && $params['startTime'] == $event['startTime']) 530 unset($criteria['historic']['startTime']); 531 if(isset($params['due']) && $params['due'] == $event['due']) 532 unset($criteria['historic']['due']); 533 534 //necessário para atulizar a atividade de composta pela tarefa aqui sendo atualizada 535 if(isset($criteria['historic']['startTime']) || isset($criteria['historic']['endTime'])){ 536 $taskToActivity = Controller::find(array('concept' => 'taskToActivity'), false, array('filter' => array('AND', array('=', 'task', $uri['id']), array('=', 'owner', Config::me('uidNumber'))), 'deepness' => 2)); 537 if(!empty($taskToActivity)){ 538 $activity = Controller::read(array('concept' => 'schedulable', 'id' => $taskToActivity[0]['activity']), array('startTime', 'endTime', 'rangeStart', 'rangeEnd', 'allDay')); 539 $isAllDay = 1; 540 541 if(!empty($activity)){ 542 $start = $params['startTime']; 543 $end = $params['endTime']; 544 foreach($taskToActivity as $t){ 545 if($t['task']['id'] != $params['id']){ 546 $start = $t['task']['startTime'] < $start ? $t['task']['startTime'] : $start; 547 $end = $t['task']['endTime'] > $end ? $t['task']['endTime'] : $end; 548 $isAllDay = (($isAllDay == 1) && ($t['task']['allDay'] == '1')) ? 1 : 0; 549 } 550 } 551 552 if($event['allDay'] == '0' || (isset($params['allDay']) && $params['allDay'] == '0')) 553 $isAllDay = 0; 554 555 $toUpdate = array(); 556 557 if($start != $activity['startTime']) 558 $toUpdate['startTime'] = $start; 559 560 if($end != $activity['endTime']){ 561 $toUpdate['endTime'] = $end; 562 $toUpdate['due'] = $end; 563 } 564 565 if($isAllDay != $activity['allDay']) 566 $toUpdate['allDay'] = $isAllDay; 567 568 if(!empty($toUpdate)) 569 Controller::update(array('concept' => 'schedulable', 'id' => $taskToActivity[0]['activity']), $toUpdate); 570 } 571 } 572 } 573 574 unset($criteria['historic']['endTime']); 575 unset($criteria['historic']['rangeEnd']); 576 unset($criteria['historic']['rangeStart']); 577 unset($criteria['historic']['class']); 578 unset($criteria['historic']['type']); 579 unset($criteria['historic']['allDay']); 580 unset($criteria['historic']['id']); 581 } 466 582 } 467 583 … … 494 610 } 495 611 612 613 static function prepareParticipantHistoric(&$uri, &$params, &$criteria, $original){ 614 $participant = Controller::read(array('concept' => 'participant', 'id' => $uri['id'])); 615 $schedulable = Controller::read(array('concept' => 'schedulable', 'id' => $participant['schedulable'])); 616 617 618 if($schedulable['type'] == '2') 619 $criteria['historic']['participant'] = $participant; 620 } 621 622 static function removeParticipantHistoric(&$uri, &$params, &$criteria, $original){ 623 if(isset($criteria['historic'])){ 624 625 $participant = $criteria['historic']['participant']; 626 627 Controller::create(array('concept' => 'calendarHistoric'), 628 array('schedulable' => $participant['schedulable'], 629 'user' => Config::me('uidNumber'), 630 'time' => time() . '000', 631 'attribute' => 'participant', 632 'beforeValue' => $participant['user'], 633 'afterValue' => '' 634 ) 635 ); 636 637 } 638 639 } 640 641 static function createParticipantHistoric(&$uri, &$params, &$criteria, $original){ 642 643 if(isset($original['properties']) && $original['properties']['isOrganizer'] != '1'){ 644 if(!isset($criteria['event'])){ 645 $event = Controller::read(array('concept' => 'schedulable', 'id' => $original['properties']['schedulable'])); 646 $criteria['event'] = $event; 647 }else 648 $event = $criteria['event']; 649 650 if($event['type'] == '2'){ 651 Controller::create(array('concept' => 'calendarHistoric'), 652 array('schedulable' => $original['properties']['schedulable'], 653 'user' => Config::me('uidNumber'), 654 'time' => time() . '000', 655 'attribute' => 'participant', 656 'beforeValue' => '', 657 'afterValue' => $original['properties']['user'] 658 ) 659 ); 660 } 661 } 662 } 663 664 static function createHistoric(&$uri, &$result, &$criteria, $original) { 665 666 if(isset($criteria['historic']) && count($criteria['historic'])){ 667 $time = time() . '000'; 668 669 foreach($criteria['historic'] as $k => $v){ 670 Controller::create(array('concept' => 'calendarHistoric'), 671 array('schedulable' => $uri['id'], 672 'user' => Config::me('uidNumber'), 673 'time' => $time, 674 'attribute' => $k, 675 'beforeValue' => $criteria['beforeValue'][$k], 676 'afterValue' => $v 677 ) 678 ); 679 } 680 } 681 } 682 496 683 /////////////////////////////////////////////////////////////////////////////////////////////////////////////// 497 684 … … 507 694 } 508 695 509 public function createCreateSchedulableToAttachment(&$uri, &$params, &$criteria, $original) { 510 if (array_key_exists('attachments', $original['properties'])) 511 foreach ($original['properties']['attachments'] as $key => $value) { 512 if (isset($params['id'])) 513 Controller::create(array('concept' => 'schedulableToAttachment'), array('attachment' => $value['attachment'], 'schedulable' => $params['id'])); 514 } 696 //TODO: Remover apos suporte a ManytoMany na api 697 public function createTasksToActivity(&$uri, &$result, &$criteria, $original) { 698 699 if(isset($original['properties']['taskToActivity']) && $original['properties']['taskToActivity']){ 700 701 foreach($original['properties']['taskToActivity'] as $relational) 702 703 Controller::create(array('concept' => 'taskToActivity'), array('task' => $relational['task'], 'owner' => $relational['owner'], 'activity' => $result['id'])); 704 705 } 706 } 707 708 public function removeAttachmentHistoric(&$uri, &$params, &$criteria, $original) { 709 710 if(isset($criteria['historic'])){ 711 $attachment = $criteria['historic']['attachment']; 712 713 $attachment['attachment'] = Controller::read(array('concept' => 'attachment', 'id' => $attachment['attachment']), array('name')); 714 Controller::create(array('concept' => 'calendarHistoric'), 715 array('schedulable' => $attachment['schedulable'], 716 'user' => Config::me('uidNumber'), 717 'time' => time() . '000', 718 'attribute' => 'attachment', 719 'beforeValue' => $attachment['attachment']['name'], 720 'afterValue' => '' 721 ) 722 ); 723 724 } 725 726 } 727 728 public function createAttachmentHistoric(&$uri, &$params, &$criteria, $original) { 729 $event = Controller::read(array('concept' => 'schedulable', 'id' => $original['properties']['schedulable'])); 730 731 if($event['type'] == '2'){ 732 $attachment = Controller::read(array('concept' => 'attachment', 'id' => $original['properties']['attachment']), array('name')); 733 734 Controller::create(array('concept' => 'calendarHistoric'), 735 array('schedulable' => $original['properties']['schedulable'], 736 'user' => Config::me('uidNumber'), 737 'time' => time() . '000', 738 'attribute' => 'attachment', 739 'beforeValue' => '', 740 'afterValue' => $attachment['name'] 741 ) 742 ); 743 744 } 515 745 } 516 746 517 747 public function deepnessFindCalendarShared(&$uri, &$result, &$criteria, $original) { 518 if (isset($original['criteria']['deepness']) && $original['criteria']['deepness'] != '0' && count($result) > 0) { 519 520 $calendarIds = array(); 521 foreach ($result as $key => $value) 522 array_push($calendarIds, $value['calendar']); 523 524 $calendar = Controller::find(array('concept' => 'calendar'), false, array('filter' => array('AND', array('IN', 'id', $calendarIds), $original['criteria']['filter']))); 525 526 if ($calendar && count($calendar) > 0){ 527 $newResult = array(); 528 foreach ($calendar as $key => $value) { 529 foreach ($result as $k => $r) { 530 531 if ($r['calendar'] == $value['id']) { 532 $r['calendar'] = $value; 533 array_push($newResult, $r); 534 } 535 } 536 } 537 538 foreach ($newResult as $key => &$value) { 539 if ($value['user'] != 0) { 540 $user = $value['user']; 541 $value['user'] = Controller::read(array('concept' => 'user', 'id' => $user)); 542 543 if (!$value['user']) 544 $value['user'] = Controller::read(array('concept' => 'group', 'id' => $user)); 545 } 546 } 547 548 $result = $newResult; 549 }else 550 $result = ''; 551 } 748 if (isset($original['criteria']['deepness']) && $original['criteria']['deepness'] != '0' && count($result) > 0) { 749 750 $calendarIds = array(); 751 foreach ($result as $value) 752 $calendarIds[] = $value['calendar']; 753 754 $calendar = Controller::find(array('concept' => 'calendar'), false, array('filter' => array('AND', array('IN', 'id', $calendarIds)))); 755 756 if ($calendar && count($calendar) > 0){ 757 $newResult = array(); 758 foreach ($calendar as $value) { 759 foreach ($result as $r) { 760 761 if ($r['calendar'] == $value['id']) { 762 $r['calendar'] = $value; 763 $newResult[] = $r; 764 } 765 } 766 } 767 768 foreach ($newResult as &$value) { 769 if ($value['user'] != 0) { 770 $value['user'] = Controller::read(array('concept' => 'user', 'id' => $value['user'])); 771 772 if (!$value['user']) 773 $value['user'] = Controller::read(array('concept' => 'group', 'id' => $value['user'])); 774 } 775 $value['owner'] = Controller::read(array('concept' => 'user', 'id' => $value['owner'])); 776 } 777 $result = $newResult; 778 }else 779 $result = ''; 780 } 781 } 782 783 //TODO: Remover apos suporte a deepness na api 784 public function deepnessFindTask(&$uri, &$result, &$criteria, $original) { 785 if (isset($original['criteria']['deepness']) && $original['criteria']['deepness'] != 0) 786 foreach($result as &$value) 787 $value['task'] = Controller::read(array('concept' => 'schedulable', 'id' => $value['task'])); 788 789 790 return $result; 791 } 792 793 //TODO: Remover apos suporte a deepness na api 794 public function deepnessFindHistoric(&$uri, &$result, &$criteria, $original) { 795 if (isset($original['criteria']['deepness']) && $original['criteria']['deepness'] != 0) { 796 foreach($result as &$v){ 797 $v['user'] = Controller::read(array('concept' => 'user', 'id' => $v['user'])); 798 799 if($v['attribute'] == 'participant'){ 800 if($v['beforeValue'] != '') 801 $v['beforeValue'] = Controller::read(array('concept' => 'user', 'id' => $v['beforeValue'])); 802 803 if($v['afterValue'] != '') 804 $v['afterValue'] = Controller::read(array('concept' => 'user', 'id' => $v['afterValue'])); 805 } 806 } 807 } 552 808 } 553 809 … … 559 815 foreach ($result as $i => $v) { 560 816 561 if ( isset($v['calendar']) && (!isset($currentTimezone) || $currentTimezone != $original['criteria']['timezones'][$v['calendar']])) {817 if ( isset($v['calendar']) && (!isset($currentTimezone) || $currentTimezone != $original['criteria']['timezones'][$v['calendar']])) { 562 818 $currentTimezone = isset($original['criteria']['timezones'][$v['calendar']]) ? $original['criteria']['timezones'][$v['calendar']] : $v['timezone']; 563 819 $Time->setTimezone(new DateTimeZone($currentTimezone)); … … 570 826 $DayLigth['calendar']['endTime'] = $Time->format('I') ? 1 : 0; 571 827 572 if ( $currentTimezone != $v['timezone']) {828 if (!isset($currentTimezone) || ($currentTimezone != $v['timezone'])) { 573 829 $currentTimezone = $v['timezone']; 574 830 $Time->setTimezone(new DateTimeZone($v['timezone'])); … … 584 840 585 841 $result[$i]['DayLigth'] = $DayLigth; 842 843 if(((int)$v['type']) == 2){ 844 845 $taskToActivity = Controller::find(array('concept' => 'taskToActivity'), false, array('filter' => array('AND', array('=', 'activity', $v['id']), array('=','owner', Config::me('uidNumber'))) , 'deepness' => 2)); 846 847 if($taskToActivity) 848 $result[$i]['taskToActivity'] = $taskToActivity; 849 850 $result[$i]['historic'] = Controller::find(array('concept' => 'calendarHistoric'), false, array('filter' => array('=', 'schedulable', $v['id']) , 'deepness' => 2)); 851 852 } 586 853 587 854 if (isset($v['id'])) { … … 649 916 } 650 917 918 } 919 920 if(isset($result['id']) && $result['type'] == '2'){ 921 $result['historic'] = Controller::find( array( 'concept' => 'calendarHistoric' ), false, array( 'filter' => array( '=', 'schedulable', $result['id'] ) ) ); 651 922 } 652 923 } … … 684 955 //Caso não seja o dono da agenda retorna o objeto permission com as acls 685 956 if ($result[$i]['isOwner'] == 0) { 686 $permission = Controller::find(array('concept' => 'calendarToPermission'), false, array('filter' => array('AND', array('=', 'calendar', $v['calendar']), array('=', 'user', Config::me('uidNumber')) )));957 $permission = Controller::find(array('concept' => 'calendarToPermission'), false, array('filter' => array('AND', array('=', 'calendar', $v['calendar']), array('=', 'user', Config::me('uidNumber')), 'deepness' => 2))); 687 958 688 959 if (!is_array($permission) || !$permission) { 689 960 690 $permission = Controller::find(array('concept' => 'calendarToPermission'), false, array('filter' => array('AND', array('=', 'calendar', $v['calendar']), array('=', 'type', '1')) ));961 $permission = Controller::find(array('concept' => 'calendarToPermission'), false, array('filter' => array('AND', array('=', 'calendar', $v['calendar']), array('=', 'type', '1')), 'deepness' => 2 )); 691 962 } 692 963 $result[$i]['permission'] = $permission[0]; … … 711 982 $result = $new; 712 983 } 984 } 985 986 public function addOwner(&$uri, &$params, &$criteria, $original) { 987 $owner = Controller::read( array( 'concept' => 'calendarSignature' ) , array('user') ,array( 'filter' => array('AND', array('=', 'isOwner' , '1'), array('=', 'calendar', $params['calendar'])))); 988 $params['owner'] = $owner[0]['user']; 713 989 } 714 990 … … 832 1108 833 1109 static private function countMyCalendarsEvent($id, $owner) { 834 $sig = Controller::find(array('concept' => 'calendarSignature'), array('user', 'calendar', 'isOwner'), array('filter' => array('AND', array('=', ' user', $owner), array('=', 'isOwner', '1'))));1110 $sig = Controller::find(array('concept' => 'calendarSignature'), array('user', 'calendar', 'isOwner'), array('filter' => array('AND', array('=', 'isOwner', '1'), array('=', 'user', $owner)))); 835 1111 $calendars = array(); 836 1112 foreach ($sig as $val) … … 848 1124 if(isset($criteria['filter']) && $criteria['filter'] && isset($criteria['filter'][1][2])){ 849 1125 $idSchedulable = $criteria['filter'][1][2]; 850 1126 $idCalendar = $criteria['filter'][2][2]; 851 1127 $owner = $criteria['filter'][3][2]; 852 1128 … … 885 1161 886 1162 $uri['id'] = $idSchedulable; 1163 1164 if(isset($criteria['filter']) && isset($criteria['filter'][4]) && isset($criteria['filter'][4][2])){ 1165 Controller::deleteALL(array('concept' => 'taskToActivity'), null, array('filter' => array('=', 'activity', $idSchedulable))); 1166 } 887 1167 } 888 1168 … … 935 1215 $schedulableAttachment = Controller::read(array('concept' => 'schedulableToAttachment'), false, array('filter' => array( '=', 'attachment' , $original['URI']['id'] ))); 936 1216 $uri['id'] = $schedulableAttachment[0]['id']; 1217 1218 $params = $schedulableAttachment[0]; 1219 1220 $event = Controller::read(array('concept' => 'schedulable', 'id' => $params['schedulable'])); 1221 if($event['type'] == '2') 1222 $criteria['historic']['attachment'] = $schedulableAttachment[0]; 1223 937 1224 } 938 1225 } 939 1226 940 1227 public function deleteAttachmentDependences(&$uri, &$params, &$criteria, $original) { 941 Controller::delete(array('concept' => 'attachment', 'id' => $original['URI']['id']));1228 Controller::delete(array('concept' => 'attachment', 'id' => (isset($params['attachment']) ? $params['attachment'] : $original['URI']['id']))); 942 1229 } 943 1230 … … 949 1236 } 950 1237 1238 1239 public function createDefaultGroup(&$uri, &$result, &$criteria, $original) { 1240 if( $original['criteria']['filter'][1][0] == '=' && 1241 $original['criteria']['filter'][1][1] == 'user' && 1242 $original['criteria']['filter'][1][2] == $_SESSION['phpgw_session']['account_id']){ 1243 1244 $existDefaultGroup = false; 1245 1246 foreach($result as $v){ 1247 if($v['type'] == 1 && $v['calendar']['type'] == 1) 1248 $existDefaultGroup = true; 1249 } 1250 1251 if(!$existDefaultGroup){ 1252 1253 $cal = array('name' => 'Sem grupo', 1254 'description' => 'Sem grupo', 1255 'timezone' => (date_default_timezone_get()) ? date_default_timezone_get() : 'America/Sao_Paulo', 1256 'dtstamp' => time() . '000', 1257 'type' => '1' 1258 ); 1259 1260 $calCreated = Controller::create(array('concept' => 'calendar'), $cal); 1261 1262 $sig = array('user' => $_SESSION['wallet']['user']['uidNumber'], 1263 'calendar' => $calCreated['id'], 1264 'isOwner' => '1', 1265 'dtstamp' => time() . '000', 1266 'fontColor' => 'FFFFFF', 1267 'backgroundColor' => '3366CC', 1268 'borderColor' => '3366CC', 1269 'type' => '1' 1270 ); 1271 1272 $sigCreated = Controller::create(array('concept' => 'calendarSignature'), $sig); 1273 $sigCreated = Controller::read(array('concept' => 'calendarSignature', 'id' => $sigCreated['id']), false, array('deepness' => 2 )); 1274 1275 array_push($result, $sigCreated); 1276 } 1277 1278 } 1279 1280 } 1281 951 1282 public function createDefaultSignature(&$uri, &$result, &$criteria, $original) { 1283 1284 if(count($result) == 0 && isset($criteria['filter'][3]) && isset($criteria['filter'][3]['isRecursion'])){ 1285 throw new Exception('It was not possible to find to calendar!'); 1286 return false; 1287 } 952 1288 953 1289 //Caso uma busca não retorne nenhum resultado e foi buscado pelas assinaturas do usuario logado apenas … … 957 1293 if (count($result) > 0) { 958 1294 foreach ($result as $value) { 959 if (isset($value['isOwner']) && $value['isOwner'] != 0)960 $isValidSignature = true;1295 if (isset($value['isOwner']) && $value['isOwner'] != 0 && isset($value['type']) && $value['type'] == 0) 1296 $isValidSignature = true; 961 1297 } 962 1298 } … … 969 1305 970 1306 if (Config::module('useCaldav', 'expressoCalendar')) { 971 require_once ROOTPATH . '/modules/calendar/interceptors/DAViCalAdapter.php'; 972 973 $calendario = DAViCalAdapter::findCalendars(); 1307 require_once ROOTPATH . '/modules/calendar/interceptors/DAViCalAdapter.php'; 1308 $calendario = DAViCalAdapter::findCalendars(); 974 1309 } 975 1310 976 1311 if (Config::module('useCaldav', 'expressoCalendar') && is_array($calendario) && count($calendario) > 0) { 977 foreach ($calendario as $i => $v) { 978 979 $urlA = explode('/', $v->url); 980 $name = isset($v->displayname) ? $v->displayname : $urlA[(count($urlA) - 2)]; 981 $cal = array('name' => $name, 982 'description' => isset($v->description) ? $v->description : $name, 983 'timezone' => isset($v->timezone) ? $v->timezone : (date_default_timezone_get()) ? date_default_timezone_get() : 'America/Sao_Paulo', 984 'dtstamp' => time() . '000', 985 'location' => $urlA[(count($urlA) - 3)] . '/' . $urlA[(count($urlA) - 2)] 986 ); 987 988 $calCreated = Controller::create(array('concept' => 'calendar'), $cal); 989 990 991 992 $sig = array('user' => $_SESSION['wallet']['user']['uidNumber'], 993 'calendar' => $calCreated['id'], 994 'isOwner' => '1', 995 'dtstamp' => time() . '000', 996 'fontColor' => 'FFFFFF', 997 'backgroundColor' => '3366CC', 998 'borderColor' => '3366CC', 999 ); 1000 1001 $sigCreated = Controller::create(array('concept' => 'calendarSignature'), $sig); 1002 1003 1004 DAViCalAdapter::importCollection($v->url, $calCreated['id']); 1005 } 1312 foreach ($calendario as $i => $v) { 1313 1314 $urlA = explode('/', $v->url); 1315 $name = isset($v->displayname) ? $v->displayname : $urlA[(count($urlA) - 2)]; 1316 $cal = array('name' => $name, 1317 'description' => isset($v->description) ? $v->description : $name, 1318 'timezone' => isset($v->timezone) ? $v->timezone : (date_default_timezone_get()) ? date_default_timezone_get() : 'America/Sao_Paulo', 1319 'dtstamp' => time() . '000', 1320 'location' => $urlA[(count($urlA) - 3)] . '/' . $urlA[(count($urlA) - 2)] 1321 ); 1322 1323 $calCreated = Controller::create(array('concept' => 'calendar'), $cal); 1324 1325 if(!$calCreated){ 1326 throw new Exception('Error to create calendar'); 1327 return false; 1328 } 1329 1330 $sig = array('user' => $_SESSION['wallet']['user']['uidNumber'], 1331 'calendar' => $calCreated['id'], 1332 'isOwner' => '1', 1333 'dtstamp' => time() . '000', 1334 'fontColor' => 'FFFFFF', 1335 'backgroundColor' => '3366CC', 1336 'borderColor' => '3366CC', 1337 ); 1338 1339 $sigCreated = Controller::create(array('concept' => 'calendarSignature'), $sig); 1340 1341 if(!$sigCreated){ 1342 throw new Exception('Error to create signature'); 1343 return false; 1344 } 1345 1346 DAViCalAdapter::importCollection($v->url, $calCreated['id']); 1347 } 1006 1348 } else { 1007 //Criaremos uma agenda padrão 1008 $cal = array('name' => 'Calendario', 1009 'description' => 'Calendario Padrão', 1010 'timezone' => (date_default_timezone_get()) ? date_default_timezone_get() : 'America/Sao_Paulo', 1011 'dtstamp' => time() . '000' 1012 ); 1013 1014 $calCreated = Controller::create(array('concept' => 'calendar'), $cal); 1015 1016 $sig = array('user' => $_SESSION['wallet']['user']['uidNumber'], 1017 'calendar' => $calCreated['id'], 1018 'isOwner' => '1', 1019 'dtstamp' => time() . '000', 1020 'fontColor' => 'FFFFFF', 1021 'backgroundColor' => '3366CC', 1022 'borderColor' => '3366CC', 1023 ); 1024 1025 $sigCreated = Controller::create(array('concept' => 'calendarSignature'), $sig); 1026 } 1027 1028 $result = Controller::find($original['URI'], $original['properties'] ? $original['properties'] : null, $original['criteria']); 1349 //Criaremos uma agenda padrão 1350 $cal = array('name' => 'Calendario', 1351 'description' => 'Calendario Padrão', 1352 'timezone' => (date_default_timezone_get()) ? date_default_timezone_get() : 'America/Sao_Paulo', 1353 'dtstamp' => time() . '000' 1354 ); 1355 1356 $calCreated = Controller::create(array('concept' => 'calendar'), $cal); 1357 1358 $sig = array('user' => $_SESSION['wallet']['user']['uidNumber'], 1359 'calendar' => $calCreated['id'], 1360 'isOwner' => '1', 1361 'dtstamp' => time() . '000', 1362 'fontColor' => 'FFFFFF', 1363 'backgroundColor' => '3366CC', 1364 'borderColor' => '3366CC', 1365 ); 1366 1367 $sigCreated = Controller::create(array('concept' => 'calendarSignature'), $sig); 1368 } 1369 1370 $original['criteria']['filter'][] = array('isRecursion' => true); 1371 $result = Controller::find($original['URI'], $original['properties'] ? $original['properties'] : null, $original['criteria']); 1029 1372 return false; 1030 }1373 } 1031 1374 } 1032 1375 … … 1058 1401 1059 1402 public function davcalCreateCollection(&$uri, &$params, &$criteria, $original) { 1060 if (Config::module('useCaldav', 'expressoCalendar')) {1061 require_once ROOTPATH . '/modules/calendar/interceptors/DAViCalAdapter.php';1062 DAViCalAdapter::mkcalendar($params['location'], $params['name'], isset($params['description']) ? $params['description'] : '' );1063 }1403 if (Config::module('useCaldav', 'expressoCalendar')) { 1404 require_once ROOTPATH . '/modules/calendar/interceptors/DAViCalAdapter.php'; 1405 DAViCalAdapter::mkcalendar($params['location'], $params['name'], isset($params['description']) ? $params['description'] : '' ); 1406 } 1064 1407 } 1065 1408 1066 1409 public function davcalDeleteCollection(&$uri, &$params, &$criteria, $original) { 1067 if (Config::module('useCaldav', 'expressoCalendar') && Config::module('onRemoveCascadeCalDav')) {1068 require_once ROOTPATH . '/modules/calendar/interceptors/DAViCalAdapter.php';1069 $calendar = Controller::read($uri);1070 DAViCalAdapter::rmCalendar($calendar['location']);1071 }1410 if (Config::module('useCaldav', 'expressoCalendar') && Config::module('onRemoveCascadeCalDav')) { 1411 require_once ROOTPATH . '/modules/calendar/interceptors/DAViCalAdapter.php'; 1412 $calendar = Controller::read($uri); 1413 DAViCalAdapter::rmCalendar($calendar['location']); 1414 } 1072 1415 } 1073 1416 1074 1417 public function davcalUpdateCollection(&$uri, &$params, &$criteria, $original) { 1075 if (Config::module('useCaldav', 'expressoCalendar')) {1076 require_once ROOTPATH . '/modules/calendar/interceptors/DAViCalAdapter.php';1077 if (isset($params['location'])) {1078 $calendar = Controller::read($uri);1079 if ($calendar['location'] !== $params['location'])1080 DAViCalAdapter::mvcalendar($calendar['location'], $params['location']);1081 }1082 }1418 if (Config::module('useCaldav', 'expressoCalendar')) { 1419 require_once ROOTPATH . '/modules/calendar/interceptors/DAViCalAdapter.php'; 1420 if (isset($params['location'])) { 1421 $calendar = Controller::read($uri); 1422 if ($calendar['location'] !== $params['location']) 1423 DAViCalAdapter::mvcalendar($calendar['location'], $params['location']); 1424 } 1425 } 1083 1426 } 1084 1427 -
branches/2.4/prototype/modules/calendar/interceptors/Notifications.php
r7175 r7228 475 475 476 476 if (count($part) > 0) 477 self::sendMail($data, $ical, implode(',', $part), $subject, 'notify_cancel_body');478 }477 self::sendMail($data, $ical, implode(',', $part), $subject, 'notify_cancel_body'); 478 } 479 479 } 480 480 … … 521 521 foreach ($params as $i => $v) //Verifica se ouve alteração no evento 522 522 if (isset($schedulableOld[$i]) && $schedulableOld[$i] != $v && $i != 'participants') { 523 $schedulable[$i] = $v;524 $alt = true;523 $schedulable[$i] = $v; 524 $alt = true; 525 525 } 526 526 … … 539 539 540 540 static private function parseTimeDate($time, $timezone) { 541 return strtotime($time . ' ' . $timezone) . '000';541 return strtotime($time . ' ' . $timezone) . '000'; 542 542 } 543 543
Note: See TracChangeset
for help on using the changeset viewer.