Ignore:
Timestamp:
03/12/12 18:58:19 (12 years ago)
Author:
marcieli
Message:

Ticket #2486 - Correcao de problemas em salvar followupflagged e adequacao de novos ids

Location:
trunk/prototype/modules/mail
Files:
2 edited

Legend:

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

    r5697 r5708  
    141141                        unset($criteria['filter']); 
    142142                } 
     143                 
     144                /** 
     145                 * TODO - fazer parse do $criteria['filter'] para fazer strip no id composto 
     146                 */ 
    143147        } 
    144148         
     
    149153        //followupflagged:PostgreSQL.after.find 
    150154        public function doImapFind( &$uri , &$result , &$criteria , $original ){ 
     155                /** 
     156                 * TODO - ver implicações de busca com id no filtro  
     157                 */ 
    151158 
    152159                if ($result) { 
     
    176183                        foreach($result as $r) { 
    177184                                if ($r['id'] == $flagId) { 
     185                                        $r['id'] = $ir['id']; 
    178186                                        $r['messageNumber'] = $ir['messageNumber']; 
    179187                                        $r['folderName'] = $ir['folderName']; 
     
    199207                        //Se existe um sinalizador nesta mensagem, deleta-o 
    200208                        foreach ($imap_result as $r) { 
     209                                /** 
     210                                 * TODO - deletar sem id 
     211                                 */ 
     212                                 
    201213                                //deleta no Imap 
    202214                                $toClearURI['id'] = $r['id']; 
     
    209221                        } 
    210222                } 
     223 
    211224        } 
    212225 
     
    219232 
    220233        //followupflagged:PostgreSQL.after.create 
    221         public function doImapCreate( &$uri , &$result , &$criteria , $original ) { 
    222          
    223                 $imap_uri = $uri; 
     234        public function doImapCreate( &$uri , &$result , &$criteria , $original ) {      
     235                /** 
     236                 * Se não consegue salvar no banco, ele retorna objeto válido, porém sem id 
     237                 */ 
     238                if (!isset($result['id'])) return false; 
     239                 
     240                $imap_uri = $original['URI'];; 
    224241                $imap_uri['service'] = 'Imap'; 
    225                  
    226                 $imap_params = $result + $original['properties']; 
     242 
     243                $imap_params = array_merge($original['properties'], $result); 
     244                 
     245                $result = array(); 
    227246                if ($imap_params['folderName'] && $imap_params['messageNumber'] && $imap_params['id']) { 
    228                         $imap_uri['id'] = $imap_params['folderName'] . '/' . $imap_params['messageNumber'] . '#' . $imap_params['id'];  
    229247                        $imap_params['id'] = $imap_params['folderName'] . '/' . $imap_params['messageNumber'] . '#' . $imap_params['id'];  
    230248                        $result = Controller::create($imap_uri, $imap_params); 
    231249                } 
    232                  
    233         } 
    234          
    235         //followupflagged:PostgreSQL.before.read 
    236         public function doImapRead( &$uri , &$params , &$criteria , $original ) { 
    237                 $imap_uri = $uri; 
     250 
     251                if (!$result) { 
     252                        //TODO - rollback 
     253                } 
     254        } 
     255         
     256        //followupflagged:PostgreSQL.after.read 
     257        public function doImapRead( &$uri , &$result , &$criteria , $original ) { 
     258                 
     259                $imap_uri = $original['URI']; 
    238260                $imap_uri['service'] = 'Imap'; 
    239                 $result = Controller::read($imap_uri, $params, $criteria); 
    240                  
    241                 return $result; 
    242         }        
    243          
     261 
     262                $imap_result = Controller::read($imap_uri, $params, $imap_criteria); 
     263                 
     264                if (!$imap_result) 
     265                        return false;            
     266                 
     267                $result = array_merge($result, $imap_result); 
     268 
     269        } 
     270         
     271        //followupflagged:PostgreSQL.before.<...> 
     272        public function stripURIAttrs( &$uri , &$params , &$criteria , $original ) { 
     273                list($messageId, $uri['id']) = explode('#', $uri['id']); 
     274        } 
     275 
    244276        //followupflagged:PostgreSQL.before.delete 
    245277        public function doImapDelete( &$uri , &$params , &$criteria , $original ) { 
    246  
     278         
    247279                $imap_uri = $uri; 
    248280                $imap_uri['service'] = 'Imap'; 
  • trunk/prototype/modules/mail/js/followupflag.js

    r5705 r5708  
    271271                /** TODO Mudar quando melhorias forem implementadas na API de atualização do cache */ 
    272272                DataLayer.remove('followupflagged', false); 
    273                 //DataLayer.get('followupflagged'); 
     273                DataLayer.get('followupflagged'); 
    274274                var roles = get_selected_messages_search_role().split(','); 
    275275                for (var i=0; i < selectedMessageIds.length; i++ ){ 
     
    286286                                if(onceOpenedHeadersMessages[folder_name][messageNumber]['followupflagged'].id){ 
    287287                                        var flag_id = onceOpenedHeadersMessages[folder_name][messageNumber]['followupflagged'].id; 
    288                                         //DataLayer.remove('followupflagged', folder_name + '/' + messageNumber + '#' + flag_id ); 
     288                                        DataLayer.remove('followupflagged', folder_name + '/' + messageNumber + '#' + flag_id ); 
    289289                                        /** 
    290290                                         * TODO - corrigir o formato do ID no DataLayer, para que seja utilizado o ID composto 
     
    296296                                         * código abaixo pela chamada trivial de DataLayer.remove('followupflagged', idCompost) 
    297297                                         */ 
    298                                         var data = {}; 
    299                                         data[ 'followupflagged://' + folder_name + '/' + messageNumber + '#' + flag_id ] = false; 
    300                                         DataLayer.dispatch('Sync', data, false, true); 
     298                                        // var data = {}; 
     299                                        // data[ 'followupflagged://' + folder_name + '/' + messageNumber + '#' + flag_id ] = false; 
     300                                        // DataLayer.dispatch('Sync', data, false, true); 
    301301                                         
    302302                                        if(current_folder == folder_name){ 
Note: See TracChangeset for help on using the changeset viewer.