Ignore:
Timestamp:
02/23/12 21:25:44 (12 years ago)
Author:
adriano
Message:

Ticket #2486 - correcoes de erros nas funcionalidades de marcadores e de sinalizadores de mensagens

Location:
trunk/prototype/modules/mail/interceptors
Files:
3 edited

Legend:

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

    r5533 r5540  
    22class FollowupflagSecure {       
    33         
     4        //followupflag:before.find 
    45        public function addVerifyOwnerFilter (&$uri , &$params , &$criteria , $original ){ 
    56                 
     
    1314        }   
    1415 
     16        //followupflag:before.find 
    1517        public function addDefaultElementsFilter (&$uri , &$params , &$criteria , $original ){ 
    1618                 
  • trunk/prototype/modules/mail/interceptors/Helpers.php

    r5533 r5540  
    55 
    66/** 
    7  * LABELS 
     7 * LABEL 
    88 */  
     9        //labeled:after.find 
    910        public function deepnessLabeleds( &$uri , &$result , &$criteria , $original ){                 
    1011 
     
    2930         * desvinculação deste label com todas as mensagens a que estava vinculado 
    3031         */ 
     32        //label:before.delete 
    3133        public function clearAllLabeledsOfLabel( &$uri , &$result , &$criteria , $original ){ 
    3234                 
     
    4547        } 
    4648        /** 
    47          * Método a ser chamado ao listar os labeleds, uma vez que as função de IMAP do PHP não são capazes de  
     49         * Método a ser chamado ao listar os labeleds, uma vez que as funções de IMAP do PHP não são capazes de  
    4850         * obter a lista de todos os labels e nem são capazes de obter os labels de uma dada mensagem 
    4951         */ 
     52        //labeled:before.find 
    5053        public function makeLabelListFilter( &$uri , &$result , &$criteria , $original ){ 
    5154 
     
    7679         
    7780/** 
    78  * FOLLOWUPFLAGS 
     81 * FOLLOWUPFLAG 
    7982 */  
    8083 
     84        //followupflagged:after.find 
    8185        public function deepnessFollowupflaggeds( &$uri , &$result , &$criteria , $original ){                 
    82          
     86 
    8387                if(isset($original['criteria']['deepness'])) 
    8488                { 
     
    8791                                if(isset($v['followupflagId'])) 
    8892                                { 
    89                                         $followupflag = Controller::find( array( 'concept' => 'followupflag' ) , false, array( 'filter' => array('=', 'id'  , $v['followupflagId']) ));      
     93                                        $followupflag = Controller::find(array('concept' => 'followupflag'), false, array('filter' => array('=', 'id', $v['followupflagId']) ));      
    9094                                        $result[$i]['followupflag'] = $followupflag[0]; 
    9195                                } 
     
    9397                                if(isset($v['messageNumber']) && isset($v['folderName'])) 
    9498                                { 
    95                                         $details = $criteria['deepness'] == '1' ? 'headers' : 'all'; 
     99                                        $details = $original['criteria']['deepness'] == '1' ? 'headers' : 'all'; 
    96100                                         
    97101                                        $imapService = new imap_functions(); 
     
    104108                return $result; 
    105109        }        
    106  
     110         
     111        //followupflagged:PostgreSQL.before.find 
     112        public function clearFilterAtFind( &$uri , &$params , &$criteria , $original ) { 
     113 
     114                if ($criteria['filter'] && !self::in_arrayr('id', $criteria['filter'])) { 
     115                        unset($criteria['filter']); 
     116                } 
     117        } 
     118         
     119        /** 
     120         * Método a ser chamado ao listar os sinalizadores, uma vez que as funções de IMAP do PHP não são capazes de  
     121         * obter a lista de todos os sinalizadores e nem são capazes de obter os sinalizadores de uma dada mensagem 
     122         */ 
     123        //followupflagged:PostgreSQL.after.find 
     124        public function doImapFind( &$uri , &$result , &$criteria , $original ){ 
     125 
     126                if (!self::in_arrayr('id', $original['criteria']['filter'])) { 
     127                        if ($result) { 
     128                                $list = array(); 
     129                                foreach ($result as $followupflagged) 
     130                                        $list[] = $followupflagged['id']; 
     131                                         
     132                                $filter = array( 'IN' , 'id' , $list ); 
     133                                 
     134                                if (isset($original['criteria']['filter']) && $original['criteria']['filter']!=NULL && count($original['criteria']['filter']) != 0) 
     135                                        $criteria['filter'] = array( 'AND', $original['criteria']['filter'], $filter ); 
     136                                else 
     137                                        $criteria['filter'] =  $filter; 
     138                        } 
     139                }        
     140                 
     141                $imap_uri = $uri; 
     142                $imap_uri['service'] = 'Imap'; 
     143                $imap_result = Controller::find($imap_uri, $params, $criteria); 
     144                 
     145                /** 
     146                 * Mescla os dados vindos do PostgreSQL com os dados vindos do Imap 
     147                 */ 
     148                $merge_result = array (); 
     149                foreach ($imap_result as $ir) { 
     150                        list($messageId, $flagId) = explode('#', $ir['id']); 
     151                         
     152                        foreach($result as $r) { 
     153                                if ($r['id'] == $flagId) { 
     154                                        $r['messageNumber'] = $ir['messageNumber']; 
     155                                        $r['folderName'] = $ir['folderName']; 
     156                                         
     157                                        $merge_result[] = $r; 
     158                                } 
     159                        } 
     160                } 
     161                         
     162                return $merge_result; 
     163        } 
     164 
     165        //followupflagged:PostgreSQL.before.create 
    107166        public function letFollowupflaggedKeepUnique (&$uri , &$params , &$criteria , $original ){ 
     167         
    108168                if (isset($params['folderName']) && isset($params['messageNumber'])) { 
    109169                        $filter = array ( 'AND', array('=', 'folderName', $params['folderName']), array('=', 'messageNumber', $params['messageNumber']) ); 
     
    119179*/       
    120180 
    121         //PostgreSQL.after.create 
     181        //followupflagged:PostgreSQL.after.create 
    122182        public function doImapCreate( &$uri , &$params , &$criteria , $original ) { 
    123183         
     
    134194        } 
    135195         
    136         //PostgreSQL.before.find 
    137         public function doImapFind( &$uri , &$params , &$criteria , $original ) { 
    138                 $imap_uri = $uri; 
    139                 $imap_uri['service'] = 'Imap'; 
    140                 $result = Controller::find($imap_uri, $params, $criteria); 
    141                  
    142                 if($result) { 
    143                         /** TODO: 
    144                          *      - se achar no Imap, passar as referencias para o PostgresSQL para que 
    145                          *  seja conferida a consistência dos dados no postgres (Nota: os dados podem 
    146                          *  ficar inconsistentes no postgres se a mensagem for movida no Imap, assim 
    147                          *  messageNumber e/ou folderName podem estar desatualizados no postgres) 
    148                          */ 
    149                 } 
    150         } 
    151          
    152         //PostgreSQL.before.read 
     196        //followupflagged:PostgreSQL.before.read 
    153197        public function doImapRead( &$uri , &$params , &$criteria , $original ) { 
    154                 $imap_uri = $uri; 
    155                 $imap_uri['service'] = 'Imap'; 
    156                 $result = Controller::read($imap_uri, $params, $criteria); 
    157         } 
    158          
    159         //PostgreSQL.before.delete 
     198                //TODO - read 
     199                //$imap_uri = $uri; 
     200                //$imap_uri['service'] = 'Imap'; 
     201                //$result = Controller::read($imap_uri, $params, $criteria); 
     202        }        
     203         
     204        //followupflagged:PostgreSQL.before.delete 
    160205        public function doImapDelete( &$uri , &$params , &$criteria , $original ) { 
    161206                $toGetURI = $uri; 
     
    179224        } 
    180225         
    181         //PostgreSQL.before.update 
     226        //followupflagged:PostgreSQL.before.update 
    182227        public function doImapUpdate( &$uri , &$params , &$criteria , $original ) { 
    183228                //TODO - update 
     
    186231                //$result = Controller::update($imap_uri, $params, $criteria); 
    187232        } 
    188         /* 
    189     public function createCalendarToSchedulable( &$uri , &$result , &$criteria , $original ){ 
    190                 Controller::create(array('concept' => 'calendarToSchedulable'), array('calendar' => $original['properties']['calendar'], 'schedulable' => $result['id'] )); 
    191         } 
    192         */ 
     233 
    193234} 
    194235 
  • trunk/prototype/modules/mail/interceptors/LabelSecure.php

    r5533 r5540  
    22class LabelSecure {      
    33 
     4        //label:before.find 
    45        public function addVerifyOwnerFilter (&$uri , &$params , &$criteria , $original ){ 
    56                 
Note: See TracChangeset for help on using the changeset viewer.