Changeset 5609


Ignore:
Timestamp:
03/02/12 12:42:04 (12 years ago)
Author:
adriano
Message:

Ticket #2486 - impedimento de criacao de mais de um sinalizador para cada mensagem

Location:
trunk/prototype
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/prototype/config/followupflagged.ini

    r5540 r5609  
    33 
    44 
    5 [after.find] 
    6 deepnessFollowupflaggeds = modules/mail/interceptors/Helpers.php 
    7  
    8 [PostgreSQL.before.create] 
    9 ;letFollowupflaggedKeepUnique = modules/mail/interceptors/Helpers.php 
    10  
    11 [PostgreSQL.after.create] 
    12 doImapCreate = modules/mail/interceptors/Helpers.php 
     5[PostgreSQL.before.find] 
     6clearFilterAtFind = modules/mail/interceptors/Helpers.php 
    137 
    148[PostgreSQL.after.find] 
    159doImapFind = modules/mail/interceptors/Helpers.php 
    1610 
    17 [PostgreSQL.before.find] 
    18 clearFilterAtFind = modules/mail/interceptors/Helpers.php 
     11[after.find] 
     12deepnessFollowupflaggeds = modules/mail/interceptors/Helpers.php 
     13 
     14[Imap.before.create] 
     15letFollowupflaggedKeepUnique = modules/mail/interceptors/Helpers.php 
     16 
     17[PostgreSQL.after.create] 
     18doImapCreate = modules/mail/interceptors/Helpers.php 
    1919 
    2020[PostgreSQL.before.read] 
  • trunk/prototype/modules/mail/interceptors/Helpers.php

    r5570 r5609  
    7070         
    7171        public static function in_arrayr($needle, $haystack) { 
     72                //if(!is_array($haystack)) return false; 
     73                 
    7274                foreach ($haystack as $v) { 
    7375                                if ($needle == $v) return true; 
     
    8284 */  
    8385 
     86        //followupflag:before.find 
     87        public function addDefaultElementsFilter (&$uri , &$params , &$criteria , $original ){ 
     88                if (!self::in_arrayr('id', $criteria['filter'])) { 
     89                        $defaultsFilter = array( 'IN' , 'id' , array('1','2','3','4','5','6') ); 
     90                         
     91                        if (isset($criteria['filter']) && $criteria['filter']!=NULL && count($criteria['filter']) != 0) 
     92                                $criteria['filter'] = array( 'OR', $criteria['filter'], $defaultsFilter ); 
     93                        else 
     94                                $criteria['filter'] =  $defaultsFilter; 
     95                } 
     96        }   
     97         
    8498        //followupflagged:after.find 
    8599        public function deepnessFollowupflaggeds( &$uri , &$result , &$criteria , $original ){                 
     
    111125        //followupflagged:PostgreSQL.before.find 
    112126        public function clearFilterAtFind( &$uri , &$params , &$criteria , $original ) { 
    113  
     127         
    114128                if ($criteria['filter'] &&  
    115129                                (self::in_arrayr('messageNumber', $criteria['filter']) || self::in_arrayr('folderName', $criteria['filter'])) ) { 
     
    162176        } 
    163177 
    164         //followupflagged:PostgreSQL.before.create 
     178        //followupflagged:before.create 
    165179        public function letFollowupflaggedKeepUnique (&$uri , &$params , &$criteria , $original ){ 
    166180         
    167181                if (isset($params['folderName']) && isset($params['messageNumber'])) { 
    168                         $filter = array ( 'AND', array('=', 'folderName', $params['folderName']), array('=', 'messageNumber', $params['messageNumber']) ); 
    169                         Controller::delete( array( 'concept' => 'followupflagged' ), false, array( 'filter' => $filter)); 
     182                        $filter = array ('AND', array('=', 'folderName', $params['folderName']), array('=', 'messageNumber', $params['messageNumber'])); 
     183                        $toClearURI = array('concept' => 'followupflagged', 'service' => 'Imap'); 
     184 
     185                        //Obtém do banco um possível sinalizador existente 
     186                        $imap_result = Controller::find($toClearURI, false, array('filter' => $filter)); 
     187 
     188                        //Se existe um sinalizador nesta mensagem, deleta-o 
     189                        foreach ($imap_result as $r) { 
     190                                //deleta no Imap 
     191                                $toClearURI['id'] = $r['id']; 
     192                                Controller::delete($toClearURI, false, false); 
     193                                 
     194                                //deleta no PostgreSQL 
     195                                list($messageId, $toClearURI['id']) = explode('#', $r['id']); 
     196                                $toClearURI['service'] = 'PostgreSQL'; 
     197                                Controller::delete($toClearURI, false, false); 
     198                        } 
    170199                } 
    171200        } 
Note: See TracChangeset for help on using the changeset viewer.