Ignore:
Timestamp:
08/10/12 19:11:37 (12 years ago)
Author:
acoutinho
Message:

Ticket #2966 - Merge de novas funcionalidades com trunk #2951, #2952

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/prototype/modules/calendar/interceptors/DBMapping.php

    r6849 r6996  
    1010class DBMapping extends Helpers { 
    1111 
    12     static function encodeCreateSchedulable(&$uri, &$params, &$criteria, $original) { 
    13         $params['type_id'] = EVENT_ID; 
    14  
    15         if (!is_numeric($params['startTime'])) 
    16             $params['startTime'] = self::parseTimeDate($params['startTime'], $params['timezone']); 
    17  
    18         if (!is_numeric($params['endTime'])) { 
    19             $params['endTime'] = self::parseTimeDate($params['endTime'], $params['timezone']); 
    20  
    21             if ($params['allDay']) 
    22                 $params['endTime'] = $params['endTime'] + 86400000; 
    23         } 
    24  
    25         $params['rangeEnd'] = $params['endTime']; 
    26         $params['rangeStart'] = $params['startTime']; 
    27  
    28         /////////////////////////////////////////////////////////////////// 
    29  
    30         $params['dtstamp'] = (isset($params['dtstamp'])) ? $params['dtstamp'] : time() . '000'; 
    31         $params['lastUpdate'] = (isset($params['lastUpdate'])) ? $params['lastUpdate'] : time() . '000'; 
    32         $params['type'] = EVENT_ID; 
    33         $params['uid'] = isset($params['uid']) ? $params['uid'] : self::_makeUid(); 
    34     } 
     12    static function encodeCreateSchedulable(&$uri, &$params, &$criteria, $original)  
     13    { 
     14 
     15        if (isset($params['startTime']) && !is_numeric($params['startTime'])){ 
     16            $params['startTime'] = self::parseTimeDate($params['startTime'], $params['timezone']); 
     17            $params['rangeStart'] = $params['startTime']; 
     18        } 
     19        if (isset($params['endTime']) && !is_numeric($params['endTime'])) { 
     20            $params['endTime'] = self::parseTimeDate($params['endTime'], $params['timezone']); 
     21 
     22            if ($params['allDay']) 
     23                $params['endTime'] = $params['endTime'] + 86400000; 
     24             
     25            $params['rangeEnd'] = $params['endTime']; 
     26        } 
     27 
     28        if (isset($params['due']) && $params['due'] != '' && !is_numeric($params['due'])) 
     29            $params['due'] = self::parseTimeDate($params['due'], $params['timezone']); 
     30 
     31        /////////////////////////////////////////////////////////////////// 
     32 
     33        $params['dtstamp'] = (isset($params['dtstamp'])) ? $params['dtstamp'] : time() . '000'; 
     34        $params['lastUpdate'] = (isset($params['lastUpdate'])) ? $params['lastUpdate'] : time() . '000'; 
     35        $params['uid'] = isset($params['uid']) ? $params['uid'] : self::_makeUid(); 
     36        } 
    3537 
    3638    static function parseTimeDate($time, $timezone) { 
     
    6668        if (isset($params['type'])) 
    6769            $params['type'] = self::codeAlarmType($params['type']); 
     70        else{ 
     71            $alarm = Controller::read( array('concept' => 'alarm' , 'id' => $params['id'] )); 
     72 
     73            $params['unit'] = $alarm['unit']; 
     74        } 
     75        $params['offset'] = $params['time'] * 1000; 
     76 
     77 
     78        switch( strtolower($params['unit']) ) 
     79        { 
     80            case 'd': $params['offset'] *= 24; 
     81            case 'h': $params['offset'] *= 60; 
     82            case 'm': $params['offset'] *= 60; 
     83        } 
     84         
    6885    } 
    6986 
     
    119136                .'calendar_object.dtstart as "startTime", calendar_object.summary as "summary", ' 
    120137                .'calendar_object.description as "description", calendar_object.dtend as "endTime" , ' 
     138        .'calendar_object.priority as "priority", calendar_object.due as "due", ' 
     139        .'calendar_object.percentage as "percentage", calendar_object.status as "status", ' 
    121140                .'calendar_object.location as "location", calendar_object.allday as "allDay", ' 
    122141                .'calendar_object.transp as "transparent", calendar_object.class_id as "class", ' 
     
    127146                .'calendar FROM calendar_to_calendar_object , calendar_object ' 
    128147                .'WHERE ( calendar_to_calendar_object.calendar_id IN (\'' . implode('\',\'', $criteria['filter'][2][2]) . '\')) ' 
    129                 .'AND calendar_to_calendar_object.calendar_object_id = calendar_object.id ';     
     148                .'AND calendar_to_calendar_object.calendar_object_id = calendar_object.id ' 
     149        .'AND calendar_object.id NOT IN(select calendar_object_task_id from calendar_task_to_activity_object where owner = \'' . Config::me('uidNumber') . '\') ';       
    130150             
    131151            if(isset($criteria['searchEvent']) && $criteria['searchEvent']){ 
     
    157177                $params = array_merge($params, $occ);            
    158178            } 
     179            $params = self::deepnessFindEvent($uri, $params, $criteria, $original); 
     180            return false; 
     181        } 
     182    } 
     183 
     184    public function findTask(&$uri, &$params, &$criteria, $original) { 
     185 
     186        if (isset($criteria['filterTasks']) && $criteria['filterTasks']) { 
     187 
     188            $sql = ' SELECT calendar_object.id as id ,calendar_object.cal_uid as "uid", calendar_object.type_id as "type", ' 
     189            .'calendar_object.dtstart as "startTime", calendar_object.summary as "summary", ' 
     190            .'calendar_object.description as "description", calendar_object.dtend as "endTime" , ' 
     191            .'calendar_object.priority as "priority", calendar_object.due as "due", ' 
     192            .'calendar_object.percentage as "percentage", calendar_object.status as "status", ' 
     193            .'calendar_object.location as "location", calendar_object.allday as "allDay", ' 
     194            .'calendar_object.transp as "transparent", calendar_object.class_id as "class", ' 
     195            .'calendar_object.repeat as "repeat", calendar_object.range_start as "rangeStart", ' 
     196            .'calendar_object.range_end as "rangeEnd", calendar_object.last_update as "lastUpdate", ' 
     197            .'calendar_object.dtstamp as "dtstamp", calendar_object.sequence as "sequence", ' 
     198            .'calendar_object.tzid as "timezone" ,calendar_to_calendar_object.calendar_id as ' 
     199            .'calendar FROM calendar_to_calendar_object , calendar_object ' 
     200            .'WHERE ( calendar_to_calendar_object.calendar_id IN (\'' . implode('\',\'', $criteria['filter'][3][2]) . '\')) ' 
     201            .'AND calendar_to_calendar_object.calendar_object_id = calendar_object.id ' 
     202        .'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") . '\' ) '     
     203        .'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") . '\' ) ';     
     204 
     205        if(isset($criteria['filter'][4])) 
     206            $sql .= 'AND (((upper("summary") like upper(\'%'.$criteria['filter'][4][1][2].'%\') OR upper("description") like upper(\'%'.$criteria['filter'][4][1][2].'%\'))))'; 
     207 
     208            $sql .= 'AND (range_start >= \'' . $criteria['filter'][2][2] . '\' AND type_id <= \'' .  $criteria['filter'][1][2] . '\')'; 
     209 
     210            $params = Controller::service('PostgreSQL')->execResultSql($sql); 
    159211            $params = self::deepnessFindEvent($uri, $params, $criteria, $original); 
    160212            return false; 
     
    405457    public function encodeUpdateSchedulable(&$uri, &$params, &$criteria, $original) { 
    406458 
    407         $event = Controller::read(array('concept' => 'schedulable', 'id' => $params['id'])); 
    408          
    409         if (isset($params['startTime'])) { 
    410  
    411             if (!is_numeric($params['startTime'])) 
    412                 $params['startTime'] = self::parseTimeDate($params['startTime'], $event['timezone']); 
    413  
    414             $params['rangeStart'] = $params['startTime']; 
    415         }if (isset($params['endTime'])) { 
    416  
    417             if (!is_numeric($params['endTime'])) { 
    418                 $params['endTime'] = self::parseTimeDate($params['endTime'], $event['timezone']); 
    419  
    420             if ((isset($params['allDay']) && $params['allDay']) || ( !isset($params['allDay']) && $event['allDay'])) 
    421                 $params['endTime'] = $params['endTime'] + 86400000; 
    422             } 
    423             $params['rangeEnd'] = $params['endTime']; 
    424         } 
     459        $event = Controller::read(array('concept' => 'schedulable', 'id' => $params['id'])); 
     460                     
     461        if (isset($params['startTime'])) { 
     462 
     463            if (!is_numeric($params['startTime'])) 
     464                $params['startTime'] = self::parseTimeDate($params['startTime'], $event['timezone']); 
     465 
     466            $params['rangeStart'] = $params['startTime']; 
     467        } 
     468 
     469        if (isset($params['endTime'])) { 
     470 
     471            if (!is_numeric($params['endTime'])) { 
     472                        $params['endTime'] = self::parseTimeDate($params['endTime'], $event['timezone']); 
     473 
     474                    if ((isset($params['allDay']) && $params['allDay']) || ( !isset($params['allDay']) && $event['allDay'])) 
     475                        $params['endTime'] = $params['endTime'] + 86400000; 
     476            } 
     477            $params['rangeEnd'] = $params['endTime']; 
     478        } 
     479 
     480 
     481        if (isset($params['due']) && $params['due'] != '' && !is_numeric($params['due'])) 
     482            $params['due'] = self::parseTimeDate($params['due'], $event['timezone']); 
     483 
     484 
     485        if($event['type'] == '2'){ 
     486 
     487            $criteria['historic'] = $params; 
     488            $criteria['beforeValue'] = $event; 
     489 
     490            if(isset($params['startTime']) && $params['startTime'] == $event['startTime']) 
     491                unset($criteria['historic']['startTime']); 
     492 
     493            if(isset($params['endTime']) && $params['endTime'] == $event['endTime']) 
     494                unset($criteria['historic']['endTime']); 
     495 
     496            if(isset($params['due']) && $params['due'] == $event['due']) 
     497                unset($criteria['historic']['due']); 
     498 
     499            //necessário para atulizar a atividade de composta pela tarefa aqui sendo atualizada 
     500            if(isset($criteria['historic']['startTime']) || isset($criteria['historic']['endTime'])){ 
     501                $taskToActivity = Controller::find(array('concept' => 'taskToActivity'), false, array('filter' => array('AND', array('=', 'schedulable', $event['id']), array('=', 'owner', Config::me('uidNumber'))), 'deepness' => 2)); 
     502 
     503                if(!empty($taskToActivity)){ 
     504                    $activity = Controller::read(array('concept' => 'schedulable', 'id' => $taskToActivity[0]['activity']), array('startTime', 'endTime', 'rangeStart', 'rangeEnd')); 
     505                    $start = $params['startTime']; 
     506                    $end = $params['endTime']; 
     507                    foreach($taskToActivity as $t){ 
     508                         if($t['task']['id'] != $params['id']){ 
     509                            $start = $t['task']['startTime'] < $start ? $t['task']['startTime'] : $start; 
     510                            $end = $t['task']['endTime'] < $end ? $t['task']['endTime'] : $end; 
     511                         } 
     512                    } 
     513 
     514                    $toUpdate = array(); 
     515                     
     516                    if($start != $activity['startTime']) 
     517                        $toUpdate['starTime'] = $start; 
     518                     
     519                    if($end != $activity['endTime']) 
     520                        $toUpdate['endTime'] = $end; 
     521                      
     522                    if(!empty($toUpdate)) 
     523                        Controller::update(array('concept' => 'schedulable', 'id' => $activity['id']), $toUpdate);                 
     524                } 
     525            } 
     526 
     527            unset($criteria['historic']['rangeEnd']); 
     528            unset($criteria['historic']['rangeStart']); 
     529            unset($criteria['historic']['class']); 
     530            unset($criteria['historic']['type']); 
     531            unset($criteria['historic']['allDay']); 
     532            unset($criteria['historic']['id']);             
     533        } 
    425534    } 
    426535 
     
    453562    } 
    454563 
     564 
     565    static function prepareParticipantHistoric(&$uri, &$params, &$criteria, $original){ 
     566       $participant = Controller::read(array('concept' => 'participant', 'id' => $uri['id'])); 
     567       $schedulable = Controller::read(array('concept' => 'schedulable', 'id' => $participant['schedulable'])); 
     568 
     569 
     570       if($schedulable['type'] == '2') 
     571            $criteria['historic']['participant']  = $participant; 
     572    }  
     573 
     574    static function removeParticipantHistoric(&$uri, &$params, &$criteria, $original){ 
     575        if(isset($criteria['historic'])){ 
     576 
     577            $participant = $criteria['historic']['participant']; 
     578 
     579             Controller::create(array('concept' => 'calendarHistoric'),  
     580                array('schedulable' => $participant['schedulable'],  
     581                    'user' => Config::me('uidNumber'), 
     582                    'time' => time() . '000', 
     583                    'attribute' => 'participant', 
     584                    'beforeValue' => $participant['user'], 
     585                    'afterValue' => '' 
     586                    ) 
     587                ); 
     588 
     589        } 
     590 
     591    } 
     592 
     593    static function createParticipantHistoric(&$uri, &$params, &$criteria, $original){ 
     594 
     595        if(isset($original['properties']) && $original['properties']['isOrganizer'] != '1'){ 
     596            if(!isset($criteria['event'])){ 
     597                $event = Controller::read(array('concept' => 'schedulable', 'id' => $original['properties']['schedulable'])); 
     598                $criteria['event'] = $event; 
     599            }else 
     600                $event = $criteria['event']; 
     601 
     602            if($event['type'] == '2'){ 
     603                Controller::create(array('concept' => 'calendarHistoric'),  
     604                    array('schedulable' => $original['properties']['schedulable'],  
     605                        'user' => Config::me('uidNumber'), 
     606                        'time' => time() . '000', 
     607                        'attribute' => 'participant', 
     608                        'beforeValue' => '', 
     609                        'afterValue' => $original['properties']['user'] 
     610                        ) 
     611                    ); 
     612            } 
     613        } 
     614    } 
     615 
     616    static function createHistoric(&$uri, &$result, &$criteria, $original) { 
     617 
     618        if(isset($criteria['historic']) && count($criteria['historic'])){ 
     619            $time =  time() . '000'; 
     620 
     621            foreach($criteria['historic'] as $k => $v){ 
     622                Controller::create(array('concept' => 'calendarHistoric'),  
     623                    array('schedulable' => $uri['id'],  
     624                        'user' => Config::me('uidNumber'), 
     625                        'time' => $time, 
     626                        'attribute' => $k, 
     627                        'beforeValue' => $criteria['beforeValue'][$k], 
     628                        'afterValue' => $v 
     629                        ) 
     630                    ); 
     631            } 
     632        }     
     633    } 
     634 
    455635/////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
    456636 
     
    466646    } 
    467647 
    468     public function createCreateSchedulableToAttachment(&$uri, &$params, &$criteria, $original) { 
    469         if (array_key_exists('attachments', $original['properties'])) 
    470             foreach ($original['properties']['attachments'] as $key => $value) { 
    471                 if (isset($params['id'])) 
    472                     Controller::create(array('concept' => 'schedulableToAttachment'), array('attachment' => $value['attachment'], 'schedulable' => $params['id'])); 
    473             } 
     648    //TODO: Remover apos suporte a ManytoMany na api  
     649    public function createTasksToActivity(&$uri, &$result, &$criteria, $original) { 
     650 
     651        if(isset($original['properties']['taskToActivity']) && $original['properties']['taskToActivity']){ 
     652 
     653            foreach($original['properties']['taskToActivity'] as $relational) 
     654 
     655                Controller::create(array('concept' => 'taskToActivity'), array('task' => $relational['task'], 'owner' => $relational['owner'], 'activity' => $result['id'])); 
     656 
     657        } 
     658    } 
     659 
     660    public function removeAttachmentHistoric(&$uri, &$params, &$criteria, $original) { 
     661 
     662        if(isset($criteria['historic'])){ 
     663            $attachment = $criteria['historic']['attachment']; 
     664 
     665            $attachment['attachment'] = Controller::read(array('concept' => 'attachment', 'id' => $attachment['attachment']), array('name')); 
     666            Controller::create(array('concept' => 'calendarHistoric'),  
     667                    array('schedulable' => $attachment['schedulable'],  
     668                        'user' => Config::me('uidNumber'), 
     669                        'time' => time() . '000', 
     670                        'attribute' => 'attachment', 
     671                        'beforeValue' => $attachment['attachment']['name'], 
     672                        'afterValue' => '' 
     673                        ) 
     674                    ); 
     675 
     676        } 
     677     
     678    } 
     679 
     680    public function createAttachmentHistoric(&$uri, &$params, &$criteria, $original) { 
     681        $event = Controller::read(array('concept' => 'schedulable', 'id' => $original['properties']['schedulable'])); 
     682 
     683        if($event['type'] == '2'){ 
     684            $attachment = Controller::read(array('concept' => 'attachment', 'id' => $original['properties']['attachment']), array('name')); 
     685 
     686            Controller::create(array('concept' => 'calendarHistoric'),  
     687                array('schedulable' => $original['properties']['schedulable'],  
     688                    'user' => Config::me('uidNumber'), 
     689                    'time' => time() . '000', 
     690                    'attribute' => 'attachment', 
     691                    'beforeValue' => '', 
     692                    'afterValue' => $attachment['name'] 
     693                    ) 
     694                ); 
     695 
     696        } 
    474697    } 
    475698 
     
    512735 
    513736    //TODO: Remover apos suporte a deepness na api  
     737    public function deepnessFindTask(&$uri, &$result, &$criteria, $original) { 
     738        if (isset($original['criteria']['deepness']) && $original['criteria']['deepness'] != 0)  
     739           foreach($result as &$value) 
     740                $value['task'] = Controller::read(array('concept' => 'schedulable', 'id' => $value['task'])); 
     741            
     742         
     743        return $result; 
     744    } 
     745 
     746    //TODO: Remover apos suporte a deepness na api  
     747    public function deepnessFindHistoric(&$uri, &$result, &$criteria, $original) { 
     748        if (isset($original['criteria']['deepness']) && $original['criteria']['deepness'] != 0) { 
     749            foreach($result as &$v){ 
     750                $v['user'] = Controller::read(array('concept' => 'user', 'id' => $v['user'])); 
     751 
     752                if($v['attribute'] == 'participant'){ 
     753                    if($v['beforeValue'] != '') 
     754                        $v['beforeValue'] = Controller::read(array('concept' => 'user', 'id' => $v['beforeValue'])); 
     755 
     756                    if($v['afterValue'] != '') 
     757                        $v['afterValue'] = Controller::read(array('concept' => 'user', 'id' => $v['afterValue'])); 
     758                } 
     759            } 
     760        } 
     761    } 
     762 
     763    //TODO: Remover apos suporte a deepness na api  
    514764    public function deepnessFindEvent(&$uri, &$result, &$criteria, $original) { 
    515765        if (isset($original['criteria']['deepness']) && $original['criteria']['deepness'] != 0) { 
     
    543793 
    544794                $result[$i]['DayLigth'] = $DayLigth; 
     795 
     796        if(((int)$v['type']) == 2){ 
     797 
     798            $taskToActivity = Controller::find(array('concept' => 'taskToActivity'), false, array('filter' => array('AND', array('=', 'activity', $v['id']), array('=','owner', Config::me('uidNumber'))) , 'deepness' => 2)); 
     799 
     800            if($taskToActivity) 
     801                $result[$i]['taskToActivity'] = $taskToActivity; 
     802 
     803            $result[$i]['historic'] = Controller::find(array('concept' => 'calendarHistoric'), false, array('filter' => array('=', 'schedulable', $v['id']) , 'deepness' => 2)); 
     804 
     805        } 
    545806 
    546807                if (isset($v['id'])) { 
     
    608869            }  
    609870             
     871       } 
     872        
     873       if(isset($result['id']) && $result['type'] == '2'){ 
     874           $result['historic'] =  Controller::find( array( 'concept' => 'calendarHistoric' ), false, array( 'filter' => array( '=', 'schedulable', $result['id'] ) ) ); 
    610875       } 
    611876   }  
     
    7911056     
    7921057    static private function countMyCalendarsEvent($id, $owner) { 
    793                 $sig = Controller::find(array('concept' => 'calendarSignature'), array('user', 'calendar', 'isOwner'), array('filter' => array('AND', array('=', 'user', $owner), array('=', 'isOwner', '1')))); 
     1058                $sig = Controller::find(array('concept' => 'calendarSignature'), array('user', 'calendar', 'isOwner'), array('filter' => array('AND', array('=', 'isOwner', '1'), array('=', 'user', $owner)))); 
    7941059                $calendars = array(); 
    7951060                foreach ($sig as $val) 
     
    8071072        if(isset($criteria['filter']) && $criteria['filter'] && isset($criteria['filter'][1][2])){ 
    8081073            $idSchedulable = $criteria['filter'][1][2]; 
    809                         $idCalendar = $criteria['filter'][2][2]; 
     1074            $idCalendar = $criteria['filter'][2][2]; 
    8101075            $owner = $criteria['filter'][3][2]; 
    8111076 
     
    8441109 
    8451110            $uri['id'] = $idSchedulable; 
     1111             
     1112            if(isset($criteria['filter']) && isset($criteria['filter'][4]) && isset($criteria['filter'][4][2])){ 
     1113                Controller::deleteALL(array('concept' => 'taskToActivity'), null, array('filter' => array('=', 'activity', $idSchedulable))); 
     1114            } 
    8461115        } 
    8471116         
     
    8941163            $schedulableAttachment = Controller::read(array('concept' => 'schedulableToAttachment'), false, array('filter' => array( '=', 'attachment' , $original['URI']['id'] ))); 
    8951164            $uri['id'] = $schedulableAttachment[0]['id']; 
     1165 
     1166            $params = $schedulableAttachment[0]; 
     1167 
     1168            $event = Controller::read(array('concept' => 'schedulable', 'id' => $params['schedulable'])); 
     1169            if($event['type'] == '2') 
     1170                $criteria['historic']['attachment'] = $schedulableAttachment[0]; 
     1171 
    8961172        } 
    8971173    } 
    8981174 
    8991175    public function deleteAttachmentDependences(&$uri, &$params, &$criteria, $original) { 
    900         Controller::delete(array('concept' => 'attachment', 'id' => $original['URI']['id'])); 
     1176        Controller::delete(array('concept' => 'attachment', 'id' => (isset($params['attachment']) ? $params['attachment'] : $original['URI']['id']))); 
    9011177    } 
    9021178     
     
    9081184    } 
    9091185 
     1186 
     1187     public function createDefaultGroup(&$uri, &$result, &$criteria, $original) { 
     1188        if( $original['criteria']['filter'][1][0] == '=' && 
     1189        $original['criteria']['filter'][1][1] == 'user' && 
     1190        $original['criteria']['filter'][1][2] == $_SESSION['phpgw_session']['account_id']){ 
     1191 
     1192            $existDefaultGroup = false; 
     1193 
     1194            foreach($result as $v){ 
     1195                if($v['type'] == 1 && $v['calendar']['type'] == 1) 
     1196                    $existDefaultGroup = true; 
     1197            } 
     1198 
     1199            if(!$existDefaultGroup){ 
     1200 
     1201                $cal = array('name' => 'Sem grupo', 
     1202                    'description' => 'Sem grupo', 
     1203                    'timezone' => (date_default_timezone_get()) ? date_default_timezone_get() : 'America/Sao_Paulo', 
     1204                    'dtstamp' => time() . '000', 
     1205                    'type' => '1' 
     1206                ); 
     1207 
     1208                $calCreated = Controller::create(array('concept' => 'calendar'), $cal); 
     1209 
     1210                $sig = array('user' => $_SESSION['wallet']['user']['uidNumber'], 
     1211                    'calendar' => $calCreated['id'], 
     1212                    'isOwner' => '1', 
     1213                    'dtstamp' => time() . '000', 
     1214                    'fontColor' => 'FFFFFF', 
     1215                    'backgroundColor' => '3366CC', 
     1216                    'borderColor' => '3366CC', 
     1217                    'type' => '1' 
     1218                ); 
     1219 
     1220                $sigCreated = Controller::create(array('concept' => 'calendarSignature'), $sig); 
     1221                $sigCreated = Controller::read(array('concept' => 'calendarSignature', 'id' => $sigCreated['id']), false, array('deepness' => 2 )); 
     1222 
     1223                array_push($result, $sigCreated); 
     1224            } 
     1225 
     1226        } 
     1227 
     1228     } 
     1229 
    9101230    public function createDefaultSignature(&$uri, &$result, &$criteria, $original) { 
     1231 
     1232    if(count($result) == 0 && isset($criteria['filter'][3]) && isset($criteria['filter'][3]['isRecursion'])){ 
     1233        throw new Exception('It was not possible to find to calendar!'); 
     1234        return false; 
     1235    } 
    9111236 
    9121237        //Caso uma busca não retorne nenhum resultado e foi buscado pelas assinaturas do usuario logado apenas 
     
    9161241        if (count($result) > 0) { 
    9171242            foreach ($result as $value) { 
    918                 if (isset($value['isOwner']) && $value['isOwner'] != 0) 
    919                     $isValidSignature = true; 
     1243                if (isset($value['isOwner']) && $value['isOwner'] != 0 && isset($value['type']) && $value['type'] == 0) 
     1244                    $isValidSignature = true; 
    9201245            } 
    9211246        } 
     
    9281253 
    9291254            if (Config::module('useCaldav', 'expressoCalendar')) { 
    930                 require_once ROOTPATH . '/modules/calendar/interceptors/DAViCalAdapter.php'; 
    931  
    932                 $calendario = DAViCalAdapter::findCalendars(); 
     1255                require_once ROOTPATH . '/modules/calendar/interceptors/DAViCalAdapter.php'; 
     1256                $calendario = DAViCalAdapter::findCalendars(); 
    9331257            } 
    9341258 
    9351259            if (Config::module('useCaldav', 'expressoCalendar') && is_array($calendario) && count($calendario) > 0) { 
    936                 foreach ($calendario as $i => $v) { 
    937  
    938                     $urlA = explode('/', $v->url); 
    939                     $name = isset($v->displayname) ? $v->displayname : $urlA[(count($urlA) - 2)]; 
    940                     $cal = array('name' => $name, 
    941                         'description' => isset($v->description) ? $v->description : $name, 
    942                         'timezone' => isset($v->timezone) ? $v->timezone : (date_default_timezone_get()) ? date_default_timezone_get() : 'America/Sao_Paulo', 
    943                         'dtstamp' => time() . '000', 
    944                         'location' => $urlA[(count($urlA) - 3)] . '/' . $urlA[(count($urlA) - 2)] 
    945                     ); 
    946  
    947                     $calCreated = Controller::create(array('concept' => 'calendar'), $cal); 
    948  
    949  
    950  
    951                     $sig = array('user' => $_SESSION['wallet']['user']['uidNumber'], 
    952                         'calendar' => $calCreated['id'], 
    953                         'isOwner' => '1', 
    954                         'dtstamp' => time() . '000', 
    955                         'fontColor' => 'FFFFFF', 
    956                         'backgroundColor' => '3366CC', 
    957                         'borderColor' => '3366CC', 
    958                     ); 
    959  
    960                     $sigCreated = Controller::create(array('concept' => 'calendarSignature'), $sig); 
    961  
    962  
    963                     DAViCalAdapter::importCollection($v->url, $calCreated['id']); 
    964                 } 
     1260                foreach ($calendario as $i => $v) { 
     1261 
     1262                    $urlA = explode('/', $v->url); 
     1263                    $name = isset($v->displayname) ? $v->displayname : $urlA[(count($urlA) - 2)]; 
     1264                    $cal = array('name' => $name, 
     1265                        'description' => isset($v->description) ? $v->description : $name, 
     1266                        'timezone' => isset($v->timezone) ? $v->timezone : (date_default_timezone_get()) ? date_default_timezone_get() : 'America/Sao_Paulo', 
     1267                        'dtstamp' => time() . '000', 
     1268                        'location' => $urlA[(count($urlA) - 3)] . '/' . $urlA[(count($urlA) - 2)] 
     1269                    ); 
     1270 
     1271                    $calCreated = Controller::create(array('concept' => 'calendar'), $cal); 
     1272 
     1273                if(!$calCreated){ 
     1274                    throw new Exception('Error to create calendar'); 
     1275                    return false; 
     1276                } 
     1277 
     1278                    $sig = array('user' => $_SESSION['wallet']['user']['uidNumber'], 
     1279                        'calendar' => $calCreated['id'], 
     1280                        'isOwner' => '1', 
     1281                        'dtstamp' => time() . '000', 
     1282                        'fontColor' => 'FFFFFF', 
     1283                        'backgroundColor' => '3366CC', 
     1284                        'borderColor' => '3366CC', 
     1285                    ); 
     1286 
     1287                    $sigCreated = Controller::create(array('concept' => 'calendarSignature'), $sig); 
     1288 
     1289                if(!$sigCreated){ 
     1290                    throw new Exception('Error to create signature'); 
     1291                    return false; 
     1292                } 
     1293 
     1294                    DAViCalAdapter::importCollection($v->url, $calCreated['id']); 
     1295                } 
    9651296            } else { 
    966                 //Criaremos uma agenda padrão 
    967                 $cal = array('name' => 'Calendario', 
    968                     'description' => 'Calendario Padrão', 
    969                     'timezone' => (date_default_timezone_get()) ? date_default_timezone_get() : 'America/Sao_Paulo', 
    970                     'dtstamp' => time() . '000' 
    971                 ); 
    972  
    973                 $calCreated = Controller::create(array('concept' => 'calendar'), $cal); 
    974  
    975                 $sig = array('user' => $_SESSION['wallet']['user']['uidNumber'], 
    976                     'calendar' => $calCreated['id'], 
    977                     'isOwner' => '1', 
    978                     'dtstamp' => time() . '000', 
    979                     'fontColor' => 'FFFFFF', 
    980                     'backgroundColor' => '3366CC', 
    981                     'borderColor' => '3366CC', 
    982                 ); 
    983  
    984                 $sigCreated = Controller::create(array('concept' => 'calendarSignature'), $sig); 
    985             } 
    986  
    987             $result = Controller::find($original['URI'], $original['properties'] ? $original['properties'] : null, $original['criteria']); 
     1297                //Criaremos uma agenda padrão 
     1298                $cal = array('name' => 'Calendario', 
     1299                    'description' => 'Calendario Padrão', 
     1300                    'timezone' => (date_default_timezone_get()) ? date_default_timezone_get() : 'America/Sao_Paulo', 
     1301                    'dtstamp' => time() . '000' 
     1302                ); 
     1303 
     1304                $calCreated = Controller::create(array('concept' => 'calendar'), $cal); 
     1305 
     1306                $sig = array('user' => $_SESSION['wallet']['user']['uidNumber'], 
     1307                    'calendar' => $calCreated['id'], 
     1308                    'isOwner' => '1', 
     1309                    'dtstamp' => time() . '000', 
     1310                    'fontColor' => 'FFFFFF', 
     1311                    'backgroundColor' => '3366CC', 
     1312                    'borderColor' => '3366CC', 
     1313                ); 
     1314 
     1315                $sigCreated = Controller::create(array('concept' => 'calendarSignature'), $sig); 
     1316        } 
     1317     
     1318        $original['criteria']['filter'][] = array('isRecursion' => true); 
     1319        $result = Controller::find($original['URI'], $original['properties'] ? $original['properties'] : null, $original['criteria']); 
    9881320            return false; 
    989         } 
     1321        } 
    9901322    } 
    9911323 
     
    10171349 
    10181350    public function davcalCreateCollection(&$uri, &$params, &$criteria, $original) { 
    1019         if (Config::module('useCaldav', 'expressoCalendar')) { 
    1020             require_once ROOTPATH . '/modules/calendar/interceptors/DAViCalAdapter.php'; 
    1021             DAViCalAdapter::mkcalendar($params['location'], $params['name'], isset($params['description']) ? $params['description'] : '' ); 
    1022         } 
     1351        if (Config::module('useCaldav', 'expressoCalendar')) { 
     1352            require_once ROOTPATH . '/modules/calendar/interceptors/DAViCalAdapter.php'; 
     1353            DAViCalAdapter::mkcalendar($params['location'], $params['name'], isset($params['description']) ? $params['description'] : '' ); 
     1354           } 
    10231355    } 
    10241356 
    10251357    public function davcalDeleteCollection(&$uri, &$params, &$criteria, $original) { 
    1026         if (Config::module('useCaldav', 'expressoCalendar') && Config::module('onRemoveCascadeCalDav')) { 
    1027             require_once ROOTPATH . '/modules/calendar/interceptors/DAViCalAdapter.php'; 
    1028             $calendar = Controller::read($uri); 
    1029             DAViCalAdapter::rmCalendar($calendar['location']); 
    1030         } 
     1358        if (Config::module('useCaldav', 'expressoCalendar') && Config::module('onRemoveCascadeCalDav')) { 
     1359            require_once ROOTPATH . '/modules/calendar/interceptors/DAViCalAdapter.php'; 
     1360            $calendar = Controller::read($uri); 
     1361            DAViCalAdapter::rmCalendar($calendar['location']); 
     1362        } 
    10311363    } 
    10321364 
    10331365    public function davcalUpdateCollection(&$uri, &$params, &$criteria, $original) { 
    1034         if (Config::module('useCaldav', 'expressoCalendar')) { 
    1035             require_once ROOTPATH . '/modules/calendar/interceptors/DAViCalAdapter.php'; 
    1036             if (isset($params['location'])) { 
    1037                 $calendar = Controller::read($uri); 
    1038                 if ($calendar['location'] !== $params['location']) 
    1039                     DAViCalAdapter::mvcalendar($calendar['location'], $params['location']); 
    1040             } 
    1041         } 
     1366        if (Config::module('useCaldav', 'expressoCalendar')) { 
     1367            require_once ROOTPATH . '/modules/calendar/interceptors/DAViCalAdapter.php'; 
     1368            if (isset($params['location'])) { 
     1369                $calendar = Controller::read($uri); 
     1370                if ($calendar['location'] !== $params['location']) 
     1371                    DAViCalAdapter::mvcalendar($calendar['location'], $params['location']); 
     1372            } 
     1373        } 
    10421374    } 
    10431375 
Note: See TracChangeset for help on using the changeset viewer.