Changeset 6331
- Timestamp:
- 05/28/12 21:17:51 (12 years ago)
- Location:
- trunk
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/expressoMail1_2/inc/class.db_functions.inc.php
r6295 r6331 427 427 $GLOBALS['phpgw_info']['flags']['currentapp'] = 'calendar'; 428 428 429 if($params['selected'] || $params['readable']){ 430 $user = $params['id_user']; 429 if(isset($params['selected']) || isset($params['readable'])){ 431 430 432 431 $_REQUEST['data'] = $fileContent; 433 432 $_REQUEST['type'] = 'iCal'; 434 $_REQUEST['params']['calendar'] = $params['selected'];435 $_REQUEST['readable'] = $params['readable']? true : false;433 $_REQUEST['params']['calendar'] = isset($params['selected']) ? $params['selected'] : false; 434 $_REQUEST['readable'] = (isset($params['readable']) && $params['readable']) ? true : false; 436 435 $_REQUEST['analize'] = isset($params['analize']) ? true : false; 437 $_REQUEST['params']['status'] = $params['status']; 438 $_REQUEST['params']['fromPermission'] = $params['fromPermission']; 439 $_REQUEST['params']['owner'] = $_SESSION['phpgw_info']['expressomail']['user']['account_id']; 436 $_REQUEST['params']['status'] = isset($params['status']) ? $params['status'] : false; 437 $_REQUEST['params']['owner'] = $params['uidAccount']; 440 438 if(isset($params['acceptedSuggestion'])){ 441 439 $_REQUEST['params']['acceptedSuggestion'] = $params['acceptedSuggestion']; -
trunk/expressoMail1_2/js/main.js
r6330 r6331 3580 3580 var logUser; 3581 3581 var up; 3582 var owner; 3583 3584 //Verifica o contexto de importação 3585 var decodeOwner = function(){ 3586 3587 owner = User.me.id; 3588 var imapBox = openTab.imapBox[currentTab].split('/'); 3589 if(imapBox.length > 1){ 3590 var user = DataLayer.get('user', {filter: ['=','uid',imapBox[1]]}); 3591 owner = $.isArray(user) ? user[0].id : user.id; 3592 } 3593 3594 return owner; 3595 } 3596 3582 3597 function handler_import_calendar(data){ 3583 3598 if(data === true){ … … 3610 3625 closeOnEscape: true 3611 3626 }); 3627 3612 3628 $.ajax({ 3613 url: "controller.php?action="+import_url+'&from_ajax=true&id_user='+User.me.id+'&readable=true&cirus_delimiter='+cyrus_delimiter+'&analize=true ',3629 url: "controller.php?action="+import_url+'&from_ajax=true&id_user='+User.me.id+'&readable=true&cirus_delimiter='+cyrus_delimiter+'&analize=true&uidAccount='+decodeOwner(), 3614 3630 async: false, 3615 3631 success: function(data){ … … 3630 3646 $("#select-agenda").html(''); 3631 3647 3632 var shared = '',options = '';3648 var options = ''; 3633 3649 3634 3650 if(typeImport == 10){ 3635 shared = '&fromPermission='+calendarPermission; 3636 3637 options += '<option value="'+calendarPermission+'">'+Calendar.signatureOf[calendarPermission].calendar.name+'</option>' 3651 for(var i = 0; i < calendarPermission.length; i++) 3652 options += '<option value="'+calendarPermission[i]+'">'+Calendar.signatureOf[calendarPermission[i]].calendar.name+'</option>' 3638 3653 }else{ 3639 for(var id in Calendar.calendars) 3640 options += '<option value="'+Calendar.calendars[id].id+'">'+Calendar.calendars[id].name+'</option>'; 3641 3642 $("#select-agenda").append(options); 3654 for(var id in Calendar.signatures) 3655 options += parseInt(Calendar.signatures[id].isOwner) ? '<option value="'+Calendar.signatures[id].calendar.id+'">'+Calendar.signatures[id].calendar.name+'</option>' : ''; 3643 3656 } 3657 3658 $("#select-agenda").append(options); 3659 $("#select-agenda").css("display", "block"); 3660 3644 3661 $("#import-dialog" ).dialog({ 3645 3662 buttons: { … … 3649 3666 "Importar" : function(){ 3650 3667 $.ajax({ 3651 url: "controller.php?action="+import_url+'&from_ajax=true&selected='+$("#select-agenda option:selected").val()+'&status='+$("#select-status option:selected").val()+ shared,3668 url: "controller.php?action="+import_url+'&from_ajax=true&selected='+$("#select-agenda option:selected").val()+'&status='+$("#select-status option:selected").val()+'&uidAccount='+decodeOwner(), 3652 3669 success: function(msg){ 3653 3670 var alt = ( (msg = connector.unserialize(msg)) == "ok") ? "Importado com sucesso para " : "Ocorreu um erro ao importar o evento para a agenda "; -
trunk/prototype/modules/calendar/interceptors/DBMapping.php
r6299 r6331 373 373 /////////////////////////////////////////////////////////////////////////////////////////////////////////////// 374 374 375 public function updateCalendar(&$uri, &$params, &$criteria, $original) { 376 if (isset($params['calendar'])) { 377 $calendarObjects = self::schedulable2calendarToObject($uri['id']); 378 $params2['calendar'] = $params['calendar']; 379 380 foreach ($calendarObjects as $calendarObject) 375 public function updateCalendar(&$uri, &$params, &$criteria, $original) { 376 if (isset($params['calendar'])) { 377 if(isset($params['lastCalendar'])){ 378 $calendarObjects = self::referenceCalendarToObject($uri['id'], $params['lastCalendar']); 379 $params2['calendar'] = $params['calendar']; 380 }else{ 381 $calendarObjects = self::schedulable2calendarToObject($uri['id']); 382 $params2['calendar'] = $params['calendar']; 383 } 384 385 foreach ($calendarObjects as $calendarObject) 381 386 Controller::update(array('concept' => 'calendarToSchedulable', 'id' => $calendarObject['calendar_to_calendar_object']), $params2); 382 387 … … 717 722 $idCalendar = $criteria['filter'][2][2]; 718 723 719 if(!self::ownerSchedulable($idSchedulable )){724 if(!self::ownerSchedulable($idSchedulable, $criteria['filter'][3][2])){ 720 725 $isPermissionFromOwner = self::permissionFromCalendarSignature($idCalendar, $idSchedulable); 721 726 … … 727 732 728 733 foreach($calendarsToSchedulable as $value) 729 if($value['calendar_id'] == $idCalendar){ 734 if($value['calendar_id'] == $idCalendar){ 735 736 $participant = Controller::read(array('concept' => 'participant'), array('id'), array('filter' => 737 array('AND', 738 array('=', 'user', $criteria['filter'][3][2]), 739 array('=', 'schedulable', $idSchedulable) 740 ))); 741 742 Controller::call(('update'), array('concept' => 'participant', 'id' => $participant[0]['id']), array('status' => STATUS_CANCELLED)); 730 743 Controller::delete(array('concept' => 'calendarToSchedulable', 'id' => $value['calendar_to_calendar_object'])); 731 744 break; … … 740 753 $calendarsToSchedulable = self::schedulable2calendarToObject($uri['id']); 741 754 742 if (!self::ownerSchedulable($uri['id'] ) && !self::isAllowDeleteInCalendar($calendarsToSchedulable[0]['calendar_id'])) {755 if (!self::ownerSchedulable($uri['id'], Config::me('uidNumber')) && !self::isAllowDeleteInCalendar($calendarsToSchedulable[0]['calendar_id'])) { 743 756 744 757 foreach ($calendarsToSchedulable as $i => $v) { … … 750 763 751 764 /* Seta o participante como rejeitado */ 752 Controller::update(array('concept' => 'participant'), array('status' => STATUS_CANCELLED), array('filter' =>765 $participant = Controller::read(array('concept' => 'participant'), array('id'), array('filter' => 753 766 array('AND', 754 767 array('=', 'user', Config::me('uidNumber')), 755 array('=', 'schedulable', $uri['id']) 756 ))); 768 array('=', 'schedulable', $idSchedulable) 769 ))); 770 771 Controller::call(('update'), array('concept' => 'participant', 'id' => $participant[0]['id']), array('status' => STATUS_CANCELLED)); 757 772 758 773 return false; /* Mata o restante da execução */ … … 1017 1032 1018 1033 1019 private static function ownerSchedulable($id ) {1034 private static function ownerSchedulable($id, $me) { 1020 1035 1021 1036 $isOwner = Controller::find(array('concept' => 'participant'), array('id'), array('filter' => 1022 1037 array('AND', 1023 1038 array('=', 'isOrganizer', '1'), 1024 array('=', 'user', $ _SESSION['wallet']['user']['uidNumber']),1039 array('=', 'user', $me), 1025 1040 array('=', 'schedulable', $id) 1026 1041 ))); … … 1028 1043 return ( isset($isOwner[0]['id']) ) ? true : false; 1029 1044 } 1030 1045 1046 1047 private static function referenceCalendarToObject($schedulable, $calendar) { 1048 return Controller::service('PostgreSQL')->execResultSql('SELECT calendar_to_calendar_object.id as calendar_to_calendar_Object FROM calendar_to_calendar_object' 1049 . ' WHERE calendar_to_calendar_object.calendar_id = '. $calendar 1050 . ' AND calendar_to_calendar_object.calendar_object_id = ' . addslashes($schedulable)); 1051 } 1052 1031 1053 private static function schedulable2calendarToObject($Schedulable) { 1032 1054 return Controller::service('PostgreSQL')->execResultSql('SELECT calendar_to_calendar_object.id as calendar_to_calendar_Object , calendar.name as calendar_name ,calendar.location as calendar_location, calendar.id as calendar_id FROM calendar_to_calendar_object , calendar , calendar_signature' -
trunk/prototype/modules/calendar/interceptors/Notifications.php
r6190 r6331 92 92 if (isset($updated)) { 93 93 $psUpdated = Controller::find(array('concept' => 'participant'), false, array('deepness' => '1', 'filter' => array('IN', 'id', $updated))); 94 94 95 foreach ($psUpdated as $i => $pUpdated) { 95 96 if ($pUpdated['isOrganizer'] == '1') … … 237 238 */ 238 239 public static function participantDelegatedStatusChange(&$partID, &$schedulable, $organizer, &$type = false) { 239 240 240 $delegatedParams = array(); 241 241 … … 270 270 } 271 271 272 public static function mountStruture( $partID, &$schedulable, $type = false, &$data, &$subject, &$ical, &$part = false, &$method, &$notificationType, $regSet = false) {272 public static function mountStruture(&$partID, &$schedulable, $type = false, &$data, &$subject, &$ical, &$part = false, &$method, &$notificationType, $regSet = false) { 273 273 274 274 if ((Config::regGet('ical://' . $schedulable['id'] . '/' . $method) === false) || ($method == 'CANCEL')) { //Verifica se o ical ja não esta no reg … … 327 327 $part = self::_getAttendeeById($partID, $schedulable); 328 328 $data['participant'] = isset($part['user']['name']) ? $part['user']['name'] : $part['user']['mail']; 329 $partID = $part; 329 330 break; 330 331 case 'othersAttendees': … … 344 345 $subject['endDate'] = date_format($eTime, 'd/m/Y'); 345 346 $subject['endTime'] = ($schedulable['allDay']) ? '' : date_format($eTime, 'H:i'); 346 $subject['participant'] = Config::me('uid');347 $subject['participant'] = (is_array($partID) && isset($partID['user']) )? $partID['user']['uid'] : Config::me('uid'); 347 348 } 348 349 … … 379 380 * @access public 380 381 */ 381 public static function participantStatusChange(&$partID, &$schedulable, &$organizer, $type, $delegatedParams = false) { 382 public static function participantStatusChange(&$partID, &$schedulable, &$organizer, $type, $delegatedParams = false) { 382 383 $method = 'REPLY'; 383 384 $notificationType = 'Convite Aceito'; … … 412 413 } 413 414 414 self::sendMail($data, $ical, $organizer['user']['mail'], $subject, $tpl, false);415 self::sendMail($data, $ical, $organizer['user']['mail'], $subject, $tpl, $partID); 415 416 } 416 417 -
trunk/prototype/modules/calendar/js/calendar.codecs.js
r6300 r6331 153 153 delete DataLayer.tasks[this.clookRefresh]; 154 154 155 this.clookRefresh = (parseInt(($.now()) / 1000) + this.timeRefresh); 156 157 DataLayer.task( this.clookRefresh , function(){ 158 Calendar.rerenderView(true); 159 }); 160 155 //Realiza agendamentos de atualização de view somente se o módulo aberto for expressoCalendar 156 if(User.moduleName == "expressoCalendar"){ 157 this.clookRefresh = (parseInt(($.now()) / 1000) + this.timeRefresh); 158 159 DataLayer.task( this.clookRefresh , function(){ 160 Calendar.rerenderView(true); 161 }); 162 } 161 163 } 162 164 } … … 516 518 var pref = User.preferences; 517 519 518 var Owner = decodeOwnerCalendar(evtObj .calendar);520 var Owner = decodeOwnerCalendar(evtObj[0].calendar); 519 521 520 522 var res = $.map(evtObj, function( form ){ 521 523 522 return {524 return DataLayer.merge({ 523 525 id: form.idEvent, 524 calendar: form.calendar,525 526 participants : $.map(form.attendee, function( attendee, i ){ 526 527 if(isNaN(attendee)){ … … 536 537 if(DataLayer.get('participant', attendee).user == Owner.id){ 537 538 var me = { 538 user: User.id,539 user: Owner.id, 539 540 status: form.status, 540 541 id: attendee, … … 580 581 }; 581 582 }) 582 } 583 }, (Owner.id == User.me.id) ? (form.calendar != form.lastCalendar ? {calendar: form.calendar, lastCalendar: form.lastCalendar} : {}) : {}) 583 584 }); 584 585 return notArray ? res[0] : res; … … 641 642 attachments: $.map(objEvent.attachments || [], function( attachment, i ){ 642 643 var attach = DataLayer.get('schedulableToAttachment', attachment, false); 643 //TODO - Verificar na API retorno de id sobre os conceitos em que s ão utilizados tabelas de ligação644 //TODO - Verificar na API retorno de id sobre os conceitos em que s?o utilizados tabelas de liga??o 644 645 if(!attach.name) return(null); 645 646 … … 838 839 var Owner = decodeOwnerCalendar(form.calendar); 839 840 840 return {841 return DataLayer.merge({ 841 842 "class": form["class"], 842 843 startTime: Date.parseExact(form.startDate + (!!form.allDay ? " 00:00": " "+$.trim(form.startHour)) , formatString ).toString('yyyy-MM-dd HH:mm:00'), … … 846 847 location: form.location, 847 848 category: form.category, 848 calendar: form.calendar,849 849 summary: form.summary, 850 850 description: form.description, … … 901 901 }; 902 902 }) 903 } ;903 }, form.lastCalendar ? (( form.lastCalendar == form.calendar ) ? {} : {calendar: form.calendar, lastCalendar: form.lastCalendar}) : {calendar: form.calendar}); 904 904 }); 905 905 -
trunk/prototype/modules/calendar/js/helpers.js
r6286 r6331 623 623 $(this).parent().remove().find('li').is(':empty'); 624 624 }); 625 626 /*Seleciona a agenda padrão para criação de um evento*/ 627 628 if(objEvent.calendar != undefined) 629 var selectedCalendar = objEvent.calendar; 630 else 631 var selectedCalendar = User.preferences.defaultCalendar; 632 633 UI.dialogs.addEvent.find('option[value="'+selectedCalendar+'"]').attr('selected','selected').trigger('change'); 625 626 var myCalendar = function(){ 627 for(var i in Calendar.signatures) 628 if(Calendar.signatures[i].isOwner == "1") 629 return Calendar.signatures[i].calendar.id; 630 } 634 631 635 632 /*Adicionar alarms padrões, quando alterado a agenda do usuário*/ … … 691 688 .filter('.mail').html(User.me.mail).attr('title',User.me.mail); 692 689 } 693 694 695 696 697 690 }); 698 691 699 692 /*Checkbox adicionar alarms padrões*/ 700 693 UI.dialogs.addEvent.find('input[name="defaultAlarm"]').click(function(){ … … 781 774 canDiscardEventDialog = true; 782 775 /* Remove por filtro */ 783 DataLayer.removeFilter('schedulable', {filter: ['AND', ['=', 'id', objEvent.id], ['=', 'calendar', objEvent.calendar] ]});776 DataLayer.removeFilter('schedulable', {filter: ['AND', ['=', 'id', objEvent.id], ['=', 'calendar', objEvent.calendar], ['=','user',(objEvent.me.user ? objEvent.me.user.id : objEvent.me.id)]]}); 784 777 Calendar.rerenderView(true); 785 778 /********************/ … … 1510 1503 1511 1504 disponibily(objEvent, path, attendees); 1512 1505 1506 /*Seleciona a agenda padrão para criação de um evento*/ 1507 var selectedCalendar = (objEvent.calendar != undefined) ? objEvent.calendar : (User.preferences.defaultCalendar ? User.preferences.defaultCalendar : myCalendar()); 1508 UI.dialogs.addEvent.find('option[value="'+selectedCalendar+'"]').attr('selected','selected').trigger('change'); 1509 1513 1510 UI.dialogs.addEvent.find(':input').change(function(event){ 1514 1511 if (event.keyCode != '27' && event.keyCode != '13') … … 1915 1912 'onClose': function(clicked) { 1916 1913 if(clicked == 'Sim'){ 1917 DataLayer.removeFilter('schedulable', {filter: ['AND', ['=','id',eventId], ['=','calendar',idCalendar]]}) 1914 1915 var schedulable = DataLayer.get('schedulable', '88'); 1916 1917 schedulable.calendar = idCalendar; 1918 1919 var schudableDecode = DataLayer.encode( "schedulable:preview", schedulable); 1920 var me = schudableDecode.me.user ? schudableDecode.me.user.id : schudableDecode.me.id; 1921 1922 DataLayer.removeFilter('schedulable', {filter: ['AND', ['=','id',eventId], ['=','calendar',idCalendar], ['=','user', me]]}) 1918 1923 Calendar.rerenderView(true); 1919 1924 } … … 2635 2640 2636 2641 var schedulable = DataLayer.get('schedulable', event+''); 2637 2642 2638 2643 calendar = !!calendar ? calendar : schedulable.calendar; 2639 2644 … … 2644 2649 if(parseInt(type) == 0){ 2645 2650 2646 schedulable.calendar = calendar; 2651 schedulable.lastCalendar = schedulable.calendar; 2652 schedulable.calendar = calendar; 2647 2653 DataLayer.put('schedulable', schedulable); 2648 2654 -
trunk/prototype/modules/calendar/templates/event_add.ejs
r6302 r6331 8 8 <% if( data.event.id ){ %> 9 9 <input type="hidden" class="id-event" name="idEvent" value="<%= data.event.id %>"/> 10 <% } %> 11 <% if( data.event.calendar ){ %> 12 <input type="hidden" class="last-calendar" name="lastCalendar" value="<%= data.event.calendar %>"/> 10 13 <% } %> 11 14 </p> -
trunk/prototype/services/iCal.php
r6321 r6331 243 243 244 244 if ($schedulable) { //Caso o evento exista 245 if (!self::_existInMyCalendars($schedulable['id'] )) {245 if (!self::_existInMyCalendars($schedulable['id'], $params['owner'])) { 246 246 $calendarToSchedulable = array(); 247 247 $calendarToSchedulable['calendar'] = $params['calendar']; … … 250 250 251 251 if (isset($params['status'])) { 252 if( isset($params['fromPermission'])){253 $ signaturesOfOwner = Controller::Read(array('concept' => 'calendarSignature'), false, array('filter' => array('AND', array('=', 'calendar', $params['fromPermission']) , array('=','isOwner','1')), 'deepness' => 2 ));254 $pID = self::_getParticipantByMail($ signaturesOfOwner[0]['user']['mail'], $schedulable['participants']);252 if($params['owner'] != Config::me("uidNumber")){ 253 $user = Controller::Read(array('concept' => 'user'), false, array('filter' => array('=', 'id', $params['owner'])) ); 254 $pID = self::_getParticipantByMail($user[0]['mail'], $schedulable['participants']); 255 255 }else 256 256 $pID = self::_getParticipantByMail(Config::me('mail'), $schedulable['participants']); … … 269 269 270 270 if (isset($params['status'])) { 271 if( isset($params['fromPermission'])){272 $signaturesOfOwner = Controller::Read(array('concept' => 'calendarSignature'), false, array('filter' => array('AND', array('=', 'calendar', $params['fromPermission']) , array('=','isOwner','1')), 'deepness' => 2 ));273 $pID = self::_getParticipantByMail($ signaturesOfOwner[0]['user']['mail'], $schedulable['participants']);271 if($params['owner'] != Config::me("uidNumber")){ 272 $user = Controller::Read(array('concept' => 'user'), false, array('filter' => array('=', 'id', $params['owner'])) ); 273 $pID = self::_getParticipantByMail($user[0]['mail'], $schedulable['participants']); 274 274 }else 275 275 $pID = self::_getParticipantByMail(Config::me('mail'), $schedulable['participants']); … … 478 478 479 479 $schedulable = self::_getSchedulable($uid); 480 $params['calendar'] = self::_existInMyCalendars($schedulable['id'] );480 $params['calendar'] = self::_existInMyCalendars($schedulable['id'], $params['owner']); 481 481 482 482 $interation = self::_makeCOUNTER($schedulable, $component, $params); … … 503 503 $interation = self::_makeVEVENT($schedulable, $component, $params); 504 504 505 if (!self::_existInMyCalendars($schedulable['id'] )) {505 if (!self::_existInMyCalendars($schedulable['id'], $params['owner'])) { 506 506 $calendarToSchedulable = array(); 507 507 $calendarToSchedulable['calendar'] = $params['calendar']; … … 527 527 } 528 528 } 529 530 529 return $return; 531 530 } … … 558 557 559 558 foreach ($schedulable['participants'] as $value) 560 if ($value['user']['id'] == Config::me('uidNumber')) {559 if ($value['user']['id'] == $params['owner']) { 561 560 $isParticipant = true; 562 561 if ($value['isOrganizer']) 563 562 $isOrganizer = true; 564 563 565 if (!self::_existInMyCalendars($schedulable['id'] )) {564 if (!self::_existInMyCalendars($schedulable['id'], $params['owner'])) { 566 565 $interation = ICAL_ACTION_UPDATE; 567 566 $interation = ( strrpos($value['acl'], ATTENDEE_ACL_PARTICIPATION_REQUIRED) ) ? ICAL_ACTION_IMPORT_REQUIRED : ICAL_ACTION_IMPORT; … … 579 578 }else 580 579 $interation = ICAL_ACTION_IMPORT; 580 581 if(($interation != ICAL_ACTION_NONE) && ($interation != ICAL_ACTION_ORGANIZER_NONE) && ($interation != ICAL_ACTION_ORGANIZER_UPDATE) && ($interation != ICAL_ACTION_NONE)) { 582 if($params['owner'] != Config::me("uidNumber")){ 583 $sig = Controller::find(array('concept' => 'calendarSignature'), array('calendar'), array('filter' => array('AND', array('=', 'user', $params['owner']), array('=', 'isOwner', '1')))); 584 $calendars = array(); 585 foreach ($sig as $val) 586 $calendars[] = $val['calendar']; 587 588 $calendarsPermission = Controller::find(array('concept' => 'calendarToPermission'), array('calendar'), array('filter' => array('AND', array('=', 'user', Config::me("uidNumber")), array('IN', 'calendar', $calendars)))); 589 590 foreach ($calendarsPermission as $val) 591 $ids[] = $val['calendar']; 592 593 $interation = array('action' => ICAL_ACTION_IMPORT_FROM_PERMISSION ,'calendar' => $ids); 594 } 595 } 581 596 582 597 break; … … 675 690 $eventoFromCalendar = Controller::read( array( 'concept' => 'calendarToSchedulable') , false, array('filter' => array('AND', array('=','schedulable',$schedulable['id']), array('=','calendar', $value['calendar']['id'])))); 676 691 677 return ($eventoFromCalendar && isset($eventoFromCalendar[0])) ? ICAL_ACTION_NONE_FROM_PERMISSION : array('action' => ICAL_ACTION_IMPORT_FROM_PERMISSION, 'calendar' => $value['calendar']['id']);692 return ($eventoFromCalendar && isset($eventoFromCalendar[0])) ? ICAL_ACTION_NONE_FROM_PERMISSION : array('action' => ICAL_ACTION_IMPORT_FROM_PERMISSION, 'calendar' => array($value['calendar']['id']) ); 678 693 } 679 694 } … … 1064 1079 } 1065 1080 1066 static private function _existInMyCalendars($id ) {1067 $sig = Controller::find(array('concept' => 'calendarSignature'), array('user', 'calendar', 'isOwner'), array('filter' => array('AND', array('=', 'user', Config::me('uidNumber')), array('=', 'isOwner', '1'))));1081 static private function _existInMyCalendars($id, $owner) { 1082 $sig = Controller::find(array('concept' => 'calendarSignature'), array('user', 'calendar', 'isOwner'), array('filter' => array('AND', array('=', 'user', $owner), array('=', 'isOwner', '1')))); 1068 1083 $calendars = array(); 1069 1084 foreach ($sig as $val)
Note: See TracChangeset
for help on using the changeset viewer.