Changeset 6190


Ignore:
Timestamp:
05/15/12 14:33:22 (12 years ago)
Author:
acoutinho
Message:

Ticket #2736 - Inconsistencia com edicao de eventos e pesquisa de eventos

Location:
trunk/prototype
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/prototype/config/schedulable.ini

    r5715 r6190  
    2323[before.update] 
    2424updateCalendar = modules/calendar/interceptors/DBMapping.php 
     25encodeUpdateSchedulable = modules/calendar/interceptors/DBMapping.php 
    2526updateEvent = modules/calendar/interceptors/Notifications.php 
    26 encodeUpdateSchedulable = modules/calendar/interceptors/DBMapping.php 
     27 
    2728 
    2829[after.update] 
  • trunk/prototype/modules/calendar/interceptors/DBMapping.php

    r6183 r6190  
    88class DBMapping extends Helpers { 
    99 
    10     public function encodeCreateSchedulable(&$uri, &$params, &$criteria, $original) { 
    11         self::encodeSchedulable($params); 
    12     } 
    13  
    14     static function encodeSchedulable(&$params) { 
     10    static function encodeCreateSchedulable(&$uri, &$params, &$criteria, $original) { 
    1511        $params['type_id'] = EVENT_ID; 
    1612 
     
    2420                $params['endTime'] = $params['endTime'] + 86400000; 
    2521        } 
    26         //        if( !isset( $new['repeat'] )) 
    27         //            $new['range_end'] = '7287926400'; // 12/12/2200 
    28         //        else 
     22 
    2923        $params['rangeEnd'] = $params['endTime']; 
    3024        $params['rangeStart'] = $params['startTime']; 
     
    116110    public function findSchedulable(&$uri, &$params, &$criteria, $original) { 
    117111        if (isset($criteria['filter'][2][1]) && $criteria['filter'][2][1] == 'calendar') { 
    118             $start = array( $criteria['filter'][1][1][1][2] , $criteria['filter'][1][2][1][2], $criteria['filter'][1][3][1][2] ); 
    119             $end = array( $criteria['filter'][1][1][2][2] , $criteria['filter'][1][2][2][2], $criteria['filter'][1][3][2][2] ); 
    120  
    121             $ids = array(); 
    122             $occ = array(); 
    123  
    124             if ($occurrences = self::checkOccurrences($start[0], $end[0], $criteria['filter'][2][2])) 
    125                 foreach ($occurrences as $id => $occurrence) { 
    126                     $ids[] = $id; 
    127                     $occ[] = $occurrence; 
    128                 }        
    129          
    130             $queryRange = '((range_end >= \'' . $start[0] . '\' AND range_end <= \'' . $end[0] . '\') OR ' 
    131                     .'(range_start >= \'' . $start[1] . '\' AND range_start <= \'' . $end[1] . '\') OR ' 
    132                     .'(range_start <= \'' . $start[2] . '\' AND range_end >= \'' . $end[2] . '\')) '; 
    133                  
     112 
    134113            $sql = ' SELECT calendar_object.id as id ,calendar_object.cal_uid as "uid", calendar_object.type_id as "type", ' 
    135114                .'calendar_object.dtstart as "startTime", calendar_object.summary as "summary", ' 
     
    142121                .'calendar_object.tzid as "timezone" ,calendar_to_calendar_object.calendar_id as ' 
    143122                .'calendar FROM calendar_to_calendar_object , calendar_object ' 
    144                 .'WHERE ( '. $queryRange .' ' 
    145                 .'AND calendar_to_calendar_object.calendar_id IN (\'' . implode('\',\'', $criteria['filter'][2][2]) . '\')) ' 
     123                .'WHERE ( calendar_to_calendar_object.calendar_id IN (\'' . implode('\',\'', $criteria['filter'][2][2]) . '\')) ' 
    146124                .'AND calendar_to_calendar_object.calendar_object_id = calendar_object.id' . (!empty($ids) ? ' ' 
    147                 .'AND calendar_object.id NOT IN (\'' . implode('\',\'', $ids) . '\')' : ''); 
    148  
    149  
    150             $params = Controller::service('PostgreSQL')->execResultSql($sql); 
    151  
    152             $params = array_merge($params, $occ); 
     125                .'AND calendar_object.id NOT IN (\'' . implode('\',\'', $ids) . '\') ' : ' ');   
     126             
     127            if(isset($criteria['searchEvent']) && $criteria['searchEvent']){ 
     128                $where = 'AND (((upper("summary") like upper(\'%'.$criteria['filter'][1][1][2].'%\') OR upper("description") like upper(\'%'.$criteria['filter'][1][2][2].'%\')))) ORDER BY dtstart LIMIT '.$criteria['limit'].'  OFFSET '.$criteria['offset'].' '; 
     129                $params = Controller::service('PostgreSQL')->execResultSql($sql.$where); 
     130 
     131            }else{ 
     132                $start = array( $criteria['filter'][1][1][1][2] , $criteria['filter'][1][2][1][2], $criteria['filter'][1][3][1][2] ); 
     133                $end = array( $criteria['filter'][1][1][2][2] , $criteria['filter'][1][2][2][2], $criteria['filter'][1][3][2][2] ); 
     134 
     135                $ids = array(); 
     136                $occ = array(); 
     137 
     138                if ($occurrences = self::checkOccurrences($start[0], $end[0], $criteria['filter'][2][2])) 
     139                    foreach ($occurrences as $id => $occurrence) { 
     140                        $ids[] = $id; 
     141                        $occ[] = $occurrence; 
     142                    }    
     143 
     144                $where = 'AND ((range_end >= \'' . $start[0] . '\' AND range_end <= \'' . $end[0] . '\') OR ' 
     145                        .'(range_start >= \'' . $start[1] . '\' AND range_start <= \'' . $end[1] . '\') OR ' 
     146                        .'(range_start <= \'' . $start[2] . '\' AND range_end >= \'' . $end[2] . '\')) '; 
     147 
     148                $params = Controller::service('PostgreSQL')->execResultSql($sql.$where); 
     149                $params = array_merge($params, $occ); 
     150            } 
    153151            $params = self::deepnessFindEvent($uri, $params, $criteria, $original); 
    154  
    155152            return false; 
    156153        } 
     
    391388    public function encodeUpdateSchedulable(&$uri, &$params, &$criteria, $original) { 
    392389 
    393         $event = Controller::find(array('concept' => 'schedulable', array('timezone', 'allDay'), 'id' => $params['id'])); 
    394  
     390        $event = Controller::read(array('concept' => 'schedulable', 'id' => $params['id'])); 
     391         
    395392        if (isset($params['startTime'])) { 
    396393 
    397394            if (!is_numeric($params['startTime'])) 
    398                 $params['startTime'] = strtotime($params['startTime'] . ' ' . $event['timezone']) . '000'; 
     395                $params['startTime'] = self::parseTimeDate($params['startTime'], $event['timezone']); 
    399396 
    400397            $params['rangeStart'] = $params['startTime']; 
     
    402399 
    403400            if (!is_numeric($params['endTime'])) { 
    404                 $params['endTime'] = strtotime($params['endTime'] . ' ' . $event['timezone']) . '000'; 
    405  
    406                 if ($event['allDay']) 
    407                     $params['endTime'] = $params['endTime'] + 86400000; 
     401                $params['endTime'] = self::parseTimeDate($params['endTime'], $event['timezone']); 
     402 
     403            if ((isset($params['allDay']) && $params['allDay']) || ( !isset($params['allDay']) && $event['allDay'])) 
     404                $params['endTime'] = $params['endTime'] + 86400000; 
    408405            } 
    409406            $params['rangeEnd'] = $params['endTime']; 
     
    688685 
    689686            $params = array(); 
    690             $notC = array(); 
    691687 
    692688            $al = Controller::service('PostgreSQL')->execSql("SELECT distinct co.id as \"id\", co.cal_uid as \"uid\", co.type_id as \"type\", co.dtstart as \"startTime\", co.summary as \"summary\", co.description as \"description\", co.dtend as \"endTime\", co.location as \"location\", co.allday as \"allDay\", co.transp as transparent, co.class_id as class, ". 
     
    699695             
    700696            if(is_array($al)) 
    701               foreach( $al as $v ){ 
    702                 if($notC[$v['id']]) 
    703                     continue; 
    704  
    705                 $notC[$v['id']] = true; 
     697              foreach( $al as $v ) 
    706698                $params[] = array('schedulable' =>  $v); 
    707               } 
     699               
    708700            else 
    709701              $params = false; 
  • trunk/prototype/modules/calendar/interceptors/Notifications.php

    r6184 r6190  
    498498     * @access     public 
    499499     */ 
    500     public function updateEvent(&$uri, &$params, &$criteria, $original) { 
     500    public function updateEvent(&$uri, $params, &$criteria, $original) { 
    501501        $schedulableOld = Controller::read(array('concept' => 'schedulable', 'id' => $uri['id']), null, array('deepness' => '2')); 
    502502        $schedulable = $schedulableOld; 
    503503        $alt = false; 
    504  
    505         DBMapping::encodeSchedulable($params); 
    506504 
    507505        foreach ($params as $i => $v) //Verifica se ouve alteração no evento 
     
    510508                $alt = true; 
    511509            } 
    512 self::lg( $schedulable, '$schedulable' ); 
     510 
    513511        if (($alt === true) && (Config::regGet('noAlarm') === false) && (self::futureEvent($schedulable['startTime'], $schedulable['rangeEnd'], $schedulable['id']))) { 
    514512            $method = 'REQUEST'; 
  • trunk/prototype/modules/calendar/js/helpers.js

    r6151 r6190  
    23242324    if(!!$(currentView).find('.fc-calendar').length) 
    23252325        return; 
    2326     $(currentView+' .events-list.events-list-win.active').prepend($('.fc-header').clone()); 
     2326    $(currentView+' .events-list.events-list-win.active').prepend($('.fc-header:first').clone()); 
    23272327    //Remove contudo nao utilizado 
    23282328    $(currentView+' .events-list.events-list-win.active .fc-header .fc-button-today').remove(); 
     
    24392439                filter: ['AND', ['OR', ["i*", "summary", keyword], ["i*", "description", keyword]], ['IN', 'calendar',  selecteds]],  
    24402440                criteria: { 
     2441                    searchEvent: true, 
    24412442                    order: 'startTime',  
    24422443                    offset: (25 * page_index),  
Note: See TracChangeset for help on using the changeset viewer.