Ignore:
Timestamp:
04/20/12 18:14:09 (12 years ago)
Author:
adriano
Message:

Ticket #2633 - correcao nos interceptors de consistencia para a funcionalidade de sinalizadores

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/prototype/modules/mail/interceptors/Helpers.php

    r5983 r5989  
    133133 
    134134                        if($imap_result) { 
    135                                 $params['messageId'] = $imap_result['messageId']; 
     135                                $params['messageId'] = $imap_result[0]['messageId']; 
    136136                        } 
    137137                } 
    138138 
    139139                $filter = array('=', 'messageId', $params['messageId']); 
    140                 Controller::delete(array('concept' => 'followupflagged', 'service' => 'PostgreSQL'), null, $filter); 
     140                Controller::delete(array('concept' => 'followupflagged', 'service' => 'PostgreSQL'), null, array('filter' => $filter)); 
    141141 
    142142        } 
     
    159159                if(isset($uri['id'])) { 
    160160                        Controller::deleteALL(array('concept' => 'followupflagged'), null , array('filter' => array('=' , 'followupflagId' , $uri['id']))); 
    161                  
    162161                } 
    163162        } 
     
    165164        //followupflagged:PostgreSQL.before.delete 
    166165        public function doImapDelete( &$uri , &$params , &$criteria , $original ) { 
    167          
     166 
    168167                $imap_uri = $uri; 
    169168                $imap_uri['service'] = 'Imap'; 
    170                 list($messageId, $uri['id']) = explode('#', $uri['id']); 
    171  
    172                 $result = Controller::delete($imap_uri, $params, $imap_criteria); 
    173  
    174                 if (!$result) 
    175                         return false; 
     169                 
     170                $result = Controller::delete($imap_uri, $params, $criteria); 
     171                                 
     172                return $result; 
     173 
     174        } 
     175         
     176        //followupflagged:Imap.before.delete 
     177        public function getReferenceToImapDelete( &$uri , &$params , &$criteria , $original ) { 
     178         
     179                if ($uri['id'] && !$criteria) { 
     180                        $db_uri = $uri; 
     181                        $db_uri['service'] = 'PostgreSQL'; 
     182                        $flagged = Controller::read($db_uri, false, false); 
     183                         
     184                        if ($flagged) { 
     185                                if (!$criteria)  
     186                                        $criteria = array(); 
     187                                $criteria['filter'] = array('=', 'messageId', $flagged['messageId']); 
     188                        } else { 
     189                                return false; 
     190                        } 
     191                } 
    176192        } 
    177193                 
     
    190206        //followupflagged:PostgreSQL.after.read 
    191207        public function doImapRead( &$uri , &$result , &$criteria , $original ) { 
    192  
     208                /** 
     209                 * Se a busca for apenas no banco de dados, pula-se todas as verificações  
     210                 * deste interceptor. 
     211                 */ 
     212                if ($original['URI']['service'] == 'PostgreSQL') return $result; 
     213                 
    193214                if ($result) { 
    194                         $imap_result = Controller::read( 
    195                                 array('concept' => 'followupflagged', 'service' => 'Imap'),  
     215                        $imap_uri = $uri; 
     216                        $imap_uri['service'] = 'Imap'; 
     217                        $imap_result = Controller::find(  
     218                                $imap_uri,  
    196219                                false,  
    197220                                array('filter' => array('=', 'messageId', $result['messageId'])) 
     
    202225                 * Faz a consistência do banco com o imap 
    203226                 */ 
    204                 if (!$imap_result) { 
    205                         $r = Controller::deleteALL(array('concept' => 'followupflagged'), null , $criteria); 
     227                if (count($imap_result) < 1) { 
     228                        $r = Controller::delete($uri, null, $criteria); 
    206229                        return false; 
     230                } else { 
     231                        $imap_result = $imap_result[0]; 
    207232                } 
    208233                 
     
    210235                 * Faz a consistência do banco com o imap 
    211236                 */ 
    212                 if ($imap_result['messageId'] !== $imap_result['messageId']) { 
     237                if ($imap_result['messageId'] !== $result['messageId']) { 
    213238                        $n = $imap_result; 
    214239                        $n['followupflagId']  = 1; 
     
    236261                 
    237262                if (self::in_arrayr('alarmDeadline', $original['criteria']) || self::in_arrayr('doneDeadline', $original['criteria'])) { 
    238                         if (empty($result)) return $reult; 
     263                        if (empty($result)) return $result; 
    239264                         
    240265                        $idList = array(); 
Note: See TracChangeset for help on using the changeset viewer.