Changeset 5708


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
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/expressoMail1_2/js/draw_api.js

    r5706 r5708  
    16731673 
    16741674                        DataLayer.remove('followupflagged', false); 
     1675                        DataLayer.get('followupflagged'); 
    16751676                        var flagged = DataLayer.get('followupflagged', {filter: [ 
    16761677                                'AND',  
     
    17051706                                 */ 
    17061707                                 $(this).find(".flag-edited").css("background", "#cccccc"); 
    1707  
    1708                                 DataLayer.remove('followupflagged', flagged[0].id); 
     1708                                DataLayer.remove('followupflagged', flagged[0].id ); 
     1709                                // var data = {}; 
     1710                                // data[ 'followupflagged://' + msg_folder + '/' + messageClickedId + '#' + flagged[0].id ] = false; 
     1711                                // DataLayer.dispatch('Sync', data, false, true); 
    17091712                                DataLayer.commit(false, false, function(){ 
    17101713                                        updateCacheFollowupflag(messageClickedId, msg_folder, false); 
  • trunk/expressoMail1_2/js/search.js

    r5659 r5708  
    543543                                        /**TODO Alterar após melhorias no filtro da camada javascript*/ 
    544544                                        DataLayer.remove('followupflagged', false); 
     545                                        DataLayer.get('followupflagged'); 
    545546                                        var flagged = DataLayer.get('followupflagged', {filter: [ 
    546547                                                'AND',  
     
    583584                                                */ 
    584585                                                $(this).find(".flag-edited").css("background", "#cccccc"); 
    585  
    586  
    587                                                 DataLayer.remove('followupflagged', flagged[0].id); 
     586                                                // var data = {}; 
     587                                                // data[ 'followupflagged://' + mailbox + '/' + messageClickedId + '#' + flagged[0].id ] = false; 
     588                                                // DataLayer.dispatch('Sync', data, false, true); 
     589                                                DataLayer.remove('followupflagged', mailbox + '/' + messageClickedId + '#' + flagged[0].id ); 
    588590                                                if(current_folder == mailbox){ 
    589591                                                        DataLayer.commit(false, false, function(){ 
  • trunk/prototype/config/followupflagged.ini

    r5609 r5708  
    1919 
    2020[PostgreSQL.before.read] 
     21stripURIAttrs = modules/mail/interceptors/Helpers.php 
     22 
     23[PostgreSQL.after.read] 
    2124doImapRead = modules/mail/interceptors/Helpers.php 
    2225 
    2326[PostgreSQL.before.delete] 
    2427doImapDelete = modules/mail/interceptors/Helpers.php 
     28 
     29 
     30[PostgreSQL.before.update] 
     31stripURIAttrs = modules/mail/interceptors/Helpers.php 
    2532 
    2633[PostgreSQL.before.update] 
  • 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){ 
  • trunk/prototype/services/ImapServiceAdapter.php

    r5697 r5708  
    236236                                                $this->mbox = $this->open_mbox($folder); 
    237237                                                 
    238                                                 foreach ($map['id'] as $followupflagged) { 
    239                                                         $messagesFlaggeds = imap_search($this->mbox, 'UNDELETED KEYWORD "$Followupflag'.$followupflagged.'"', SE_UID); 
    240                                                          
     238                                                /** 
     239                                                 * Caso não tenha sido passado id no filtro 
     240                                                 */ 
     241                                                if (!$map['id']) { 
     242                                                        $messagesFlaggeds = imap_search($this->mbox, 'UNDELETED KEYWORD "$Followupflagged"', SE_UID); 
     243 
    241244                                                        foreach ($messagesFlaggeds as $messageFlagged) { 
    242245                                                                if (count($map['messageNumber']) > 0 && !in_array($messageFlagged, $map['messageNumber'])) 
     
    244247                                                                         
    245248                                                                $result[] = array ( 
    246                                                                         'id' => $folder . '/' . $messageFlagged . '#' . $followupflagged,  
    247249                                                                        'folderName' => $folder, 
    248250                                                                        'messageNumber' => $messageFlagged 
    249251                                                                ); 
     252                                                        } 
     253                                                         
     254                                                } else { 
     255                                                        foreach ($map['id'] as $followupflagged) { 
     256                                                                $messagesFlaggeds = imap_search($this->mbox, 'UNDELETED KEYWORD "$Followupflag'.$followupflagged.'"', SE_UID); 
     257                                                                 
     258                                                                foreach ($messagesFlaggeds as $messageFlagged) { 
     259                                                                        if (count($map['messageNumber']) > 0 && !in_array($messageFlagged, $map['messageNumber'])) 
     260                                                                                continue; 
     261                                                                                 
     262                                                                        $result[] = array ( 
     263                                                                                'id' => $folder . '/' . $messageFlagged . '#' . $followupflagged,  
     264                                                                                'folderName' => $folder, 
     265                                                                                'messageNumber' => $messageFlagged 
     266                                                                        ); 
     267                                                                } 
    250268                                                        } 
    251269                                                } 
     
    309327                                 */ 
    310328                                list($messageId, $followupflaggedId) = explode('#', $URI['id']); 
    311                                 $folderName = basename($messageId); 
    312                                 $messageNumber = dirname($messageId); 
     329                                $folderName = dirname($messageId); 
     330                                $messageNumber = basename($messageId); 
    313331                                 
    314332                                $result = array(); 
     
    358376                                         
    359377                                        $this->mbox = $this->open_mbox($data['folderName']); 
    360                                         imap_setflag_full($this->mbox, $data['messageNumber'], '$Followupflagged $Followupflag' . $followupflaggedId, ST_UID); 
    361                                          
    362                                         /** 
    363                                          * implementa a possibilidade de listar todas as mensagens sinalizadas através da busca 
    364                                          */ 
    365                                         //imap_setflag_full($this->mbox, $data['messageNumber'], '$Followupflagged', ST_UID); 
    366  
     378                                        $s = imap_setflag_full($this->mbox, $data['messageNumber'], '$Followupflagged $Followupflag' . $followupflaggedId, ST_UID); 
     379                                                                                 
    367380                                        imap_close($this->mbox); 
    368381                                        $this->mbox = false; 
    369382 
    370                                         return array ('id' => $data['id']); 
     383                                        return ($s) ? $data : array(); 
     384 
    371385                                } 
    372386                                return array (); 
Note: See TracChangeset for help on using the changeset viewer.