Changeset 5540


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

Legend:

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

    r5539 r5540  
    801801        connector.loadScript("search"); 
    802802        if (typeof(EsearchE) == 'undefined' || typeof(ttree) == 'undefined'){ 
    803                 setTimeout('search_emails("'+value+'")',500); 
     803                setTimeout("search_emails('"+value+"')",500); 
    804804                return false; 
    805805        } 
  • trunk/expressoMail1_2/js/draw_api.js

    r5538 r5540  
    10491049         */ 
    10501050        var followupflaggeds = DataLayer.get('followupflagged', { 
    1051                         filter: ['AND', ['IN', 'messageNumber', messageNumbers], ['=', 'folderName', msg_folder]], 
    1052                         criteria: {deepness: 1} 
     1051                        criteria: { 
     1052                                filter: ['AND', ['IN', 'messageNumber', messageNumbers], ['=', 'folderName', msg_folder]], 
     1053                                deepness: 1 
     1054                        } 
    10531055                }); 
    10541056 
     
    16711673                                ['=', 'folderName', msg_folder] 
    16721674                        ]}); 
    1673                         if (flagged == '' || flagged == [] || flagged == 'undefined') { 
     1675                         
     1676                        if (!flagged) { 
    16741677                                /** 
    16751678                                 * Aplica followupflag de Acompanhamento 
    16761679                                 */ 
    1677  
    16781680                                headers_msgs.followupflagged = { 
    16791681                                        uid : User.me.id, 
     
    16901692                        } else if (headers_msgs.followupflagged.followupflag.name == 'Follow up') { 
    16911693                                /** 
    1692                                  * Remover followupflag de Acompanhamento (DFD0078:RI25) 
     1694                                 * Remove followupflag de Acompanhamento 
    16931695                                 */ 
    16941696                                 $(this).find(".flag-edited").css("background", "#cccccc"); 
     
    17031705                                configureFollowupflag(); 
    17041706                        } 
     1707                         
     1708                        DataLayer.commit(); 
    17051709                         
    17061710                });      
  • trunk/prototype/config/followupflag.ini

    r5533 r5540  
    55addVerifyOwnerFilter = modules/mail/interceptors/FollowupflagSecure.php 
    66addDefaultElementsFilter = modules/mail/interceptors/FollowupflagSecure.php 
    7  
    8 ;[after.find] 
    9 ;addDefaultFollowupflags = modules/mail/interceptors/Helpers.php 
    107 
    118;[before.delete] 
  • trunk/prototype/config/followupflagged.ini

    r5533 r5540  
    11service = PostgreSQL 
     2PostgreSQL.concept = expressomail_message_followupflag 
    23 
    3 PostgreSQL.concept = expressomail_message_followupflag 
    4 ;Imap.concept = followupflag 
    5  
    6 [before.find] 
    7 addVerifyOwnerFilter = modules/mail/interceptors/FollowupflagSecure.php 
    84 
    95[after.find] 
     
    117 
    128[PostgreSQL.before.create] 
    13 letFollowupflaggedKeepUnique = modules/mail/interceptors/Helpers.php 
     9;letFollowupflaggedKeepUnique = modules/mail/interceptors/Helpers.php 
    1410 
    1511[PostgreSQL.after.create] 
    1612doImapCreate = modules/mail/interceptors/Helpers.php 
    1713 
     14[PostgreSQL.after.find] 
     15doImapFind = modules/mail/interceptors/Helpers.php 
     16 
    1817[PostgreSQL.before.find] 
    19 doImapFind = modules/mail/interceptors/Helpers.php 
     18clearFilterAtFind = modules/mail/interceptors/Helpers.php 
    2019 
    2120[PostgreSQL.before.read] 
     
    3130[PostgreSQL.mapping] 
    3231id = id 
    33 uid = user_id 
    3432followupflagId = followupflag_id 
    35 ;TODO - retirar folderName e messageNumber do banco 
    36 folderName = folder_name 
    37 messageNumber = message_id 
    3833alarmDeadline = alarm_deadline 
    3934doneDeadline = done_deadline 
  • 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                 
  • trunk/prototype/services/ImapServiceAdapter.php

    r5533 r5540  
    166166                                $result = array ( ); 
    167167                                if (isset($criteria["filter"]) && is_array($criteria['filter'])) { 
    168                                         //melhorar o tratamento do filter com a lista de todos os labelIds dado pelo interceptor 
     168                                        //TODO - melhorar o tratamento do filter com a lista de todos os labelIds dado pelo interceptor 
    169169                                        $map = array( 
    170170                                                'id' => array(), 
     
    215215                                $result = array ( ); 
    216216                                if (isset($criteria["filter"]) && is_array($criteria['filter'])) { 
    217                                         //melhorar o tratamento do filter com a lista de todos os labelIds dado pelo interceptor 
     217                                        //TODO - melhorar o tratamento do filter com a lista de todos os labelIds dado pelo interceptor 
    218218                                        $map = array( 
    219219                                                'id' => array(), 
     
    334334    public function create( $URI, $data) 
    335335    { 
    336  
    337336                switch( $URI['concept'] ) 
    338337                { 
     
    352351                        case 'followupflagged': 
    353352                        { 
    354                                 //tem que gravar no banco primeiro, obter o id e depois mandar gravar no imap passando o id no data 
     353                                //deve ser gravado no banco primeiro, obtido o id e, depois, gravado no imap passando o id no parametro $data 
    355354                                if (isset($data['folderName']) && isset($data['messageNumber']) && isset($data['id'])) { 
    356355                                        list($messageId, $followupflaggedId) = explode('#', $data['id']); 
     
    472471                        } 
    473472                        case 'in': { 
    474                                 $map[$filter[0]] = array_merge($map[$filter[0]], $filter[1]); 
     473                                if(is_array($map[$filter[0]]) && is_array($filter[1])) 
     474                                        $map[$filter[0]] = array_unique(array_merge($map[$filter[0]], $filter[1])); 
    475475                                return; 
    476476                        } 
Note: See TracChangeset for help on using the changeset viewer.