Changeset 5539 for trunk/expressoMail1_2


Ignore:
Timestamp:
02/23/12 17:14:32 (12 years ago)
Author:
airton
Message:

Ticket #2088 - Melhorias no editor de regras de filtro de mensagens do Expresso

Location:
trunk/expressoMail1_2
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/expressoMail1_2/inc/class.imap_functions.inc.php

    r5533 r5539  
    53265326                return $return; 
    53275327        } 
     5328                 
     5329                 
     5330        function searchSieveRule( $params ) 
     5331        { 
     5332                 
     5333                $imap = $this->open_mbox( 'INBOX' ); 
     5334                $msgs = imap_sort( $imap , SORTDATE , 0 , SE_UID); 
     5335                 
     5336                $rr = array(); 
     5337         
     5338         
     5339                foreach ($msgs as $i => $v) 
     5340                { 
     5341                         
     5342                        $msg = imap_headerinfo ( $imap,   imap_msgno($imap, $v)  );      
     5343                         
     5344                        if(isset($params['from'])) 
     5345                        { 
     5346                                $from['from'] = array(); 
     5347                                $from['from']['name'] = $this->decode_string($msg->from[0]->personal); 
     5348                                $from['from']['email'] = $this->decode_string($msg->from[0]->mailbox . "@" . $msg->from[0]->host); 
     5349                                if ($from['from']['name']) 
     5350                                { 
     5351                                        if (substr($from['from']['name'], 0, 1) == '"') 
     5352                                                $from['from']['full'] = $from['from']['name'] . ' ' . '<' . $from['from']['email'] . '>'; 
     5353                                        else 
     5354                                                $from['from']['full'] = '"' . $from['from']['name'] . '" ' . '<' . $from['from']['email'] . '>'; 
     5355                                } 
     5356                                else 
     5357                                        $from['from']['full'] = $from['from']['email']; 
     5358 
     5359                                if($this->filterCheck( $from['from']['full'] , $params['from']['criteria'] , $params['from']['filter'] )) 
     5360                                        $rr['from'][] = $v; 
     5361                        } 
     5362                         
     5363                        if(isset($params['to'])) 
     5364                        {        
     5365                                $tos = $msg->to; 
     5366                                $val = ''; 
     5367                                foreach( $tos as $to) 
     5368                                { 
     5369                                        $tmp = imap_mime_header_decode($to->personal); 
     5370                                        $val .= '"' . $tmp[0]->text . '" ' . '<' .  $to->mailbox . "@" . $to->host . '>'; 
     5371                                         
     5372                                }                                
     5373                                if($this->filterCheck( $val , $params['to']['criteria'] , $params['to']['filter'] )) 
     5374                                        $rr['to'][] = $v; 
     5375                                 
     5376                                $tos = $msg->cc; 
     5377                                $val = ''; 
     5378                                foreach( $tos as $to) 
     5379                                { 
     5380                                        $tmp = imap_mime_header_decode($to->personal); 
     5381                                        $val .= '"' . $tmp[0]->text . '" ' . '<' .  $to->mailbox . "@" . $to->host . '>'; 
     5382                                         
     5383                                } 
     5384                                 
     5385                                if($this->filterCheck( $val , $params['to']['criteria'] , $params['to']['filter'] )) 
     5386                                        $rr['to'][] = $v; 
     5387                        } 
     5388                         
     5389                        if(isset($params['subject'])) 
     5390                        {                
     5391                                $ss = ''; 
     5392                                $subject = imap_mime_header_decode($msg->subject); 
     5393                                foreach ($subject as $tmp) 
     5394                                        $ss .= $tmp->text; 
     5395                                 
     5396                                if($this->filterCheck($ss , $params['subject']['criteria'] , $params['subject']['filter'] )) 
     5397                                $rr['subject'][] = $v; 
     5398                        } 
     5399                         
     5400                        if(isset($params['body'])) 
     5401                        {                        
     5402                                $this->mbox = $this->open_mbox( 'INBOX' ); 
     5403                                $b = $this->get_body_msg( $v , 'INBOX' ); 
     5404                                 
     5405                                if( $this->filterCheck( $b['body'] , $params['body']['criteria'] , $params['body']['filter'] )) 
     5406                                        $rr['body'][] = $v; 
     5407                                 
     5408                                unset($b); 
     5409                        } 
     5410                         
     5411                        if(isset($params['size'])) 
     5412                        { 
     5413                                if( $this->filterCheck( $msg->Size , $params['size']['criteria'] , $params['size']['filter'] )) 
     5414                                        $rr['size'][] = $v; 
     5415                        } 
     5416                } 
     5417                 
     5418                $rrr = array(); 
     5419                $init = true; 
     5420                 
     5421                 
     5422                foreach ($rr as $i => $v) 
     5423                {                        
     5424                        if(count($rrr) == 0 && $init === true) 
     5425                                $rrr = $v; 
     5426                        else if($params['isExact'] === true) 
     5427                                $rrr = array_diff($rrr , $v); 
     5428                        else 
     5429                                $rrr =  array_unique(array_merge($rrr , $v)); 
     5430                         
     5431                } 
     5432                 
     5433 
     5434//              if($params['page'] && $params['rows']) 
     5435//              { 
     5436//               
     5437//                      $end = ( $params['rows'] * $params['page'] );    
     5438//                      $ini = $end -  $params['rows'] ; 
     5439//               
     5440//                      //Pegando os do range da paginação                       
     5441//                      $k = -1; 
     5442//                      $r = array(); 
     5443//                      foreach ($rrr as $v) 
     5444//                      {                
     5445//                              $k++; 
     5446//                              if( $k < $ini || $k >= $end ) continue;                  
     5447//                              $r[] = $v; 
     5448//                      } 
     5449//                      ////////////////////////////////////// 
     5450//              } 
     5451//              else 
     5452                        $r = $rrr;               
     5453                                         
     5454                return $r ; 
     5455        } 
     5456         
     5457        function filterCheck( $val , $crit ,$fil ) 
     5458        {                
     5459                switch ( $fil ) { 
     5460                        case '=' : //Igual 
     5461                                if( $val == $crit ) return true; else return false;     break; 
     5462                        case '*' : //Existe 
     5463                                if( strpos( $val , $crit ) !== false ) return true; else return false; break; 
     5464                        case '!*' : //Não existe 
     5465                                if( strpos( $val , $crit ) === false ) return true; else return false; break; 
     5466                        case '^' : //Começa com 
     5467                                if( substr ($val , 0 , strlen($crit) ) == $crit ) return true; else return false; break;         
     5468                        case '$' : //Termina com 
     5469                                if( substr ($val , 0 , -(strlen($crit)) ) == $crit ) return true; else return false; break;      
     5470                        case '>' : //Maior que 
     5471                                if( $val  > (int)($crit * 1024) ) return true; else return false; break;         
     5472                        case '<' : //Menor que 
     5473                                if( $val  < (int)($crit * 1024) ) return true; else return false; break;         
     5474                } 
     5475        } 
     5476         
     5477        function apliSieveFilter($msgs , $proc ) 
     5478        { 
     5479                $ret = array(); 
     5480                 
     5481                switch($proc['action']){ 
     5482                        case 'fileintro': 
     5483                                $imap = $this->open_mbox( 'INBOX' ); 
     5484                                foreach( $msgs as $msg ) 
     5485                                        if($proc['keep'] === true) 
     5486                                                $ret[$msg][] =  imap_mail_copy($imap,$msg,$proc['value']); 
     5487                                        else 
     5488                                                $ret[$msg][] = imap_mail_move($imap,$msg,$proc['value']); 
     5489                                break; 
     5490                        case 'redirect': 
     5491                                        foreach($msgs as $msg) 
     5492                                        {                                
     5493                                                $info = $this->get_info_msg(array('msg_folder' => 'INBOX','msg_number' => $msg)); 
     5494                                 
     5495                                                require_once $_SESSION['rootPath'] . '/API/class.servicelocator.php'; 
     5496                                                $mailService = ServiceLocator::getService('mail'); 
     5497                                                 
     5498                                                $ret[$msg][] = $mailService->sendMail( $proc['value'] , $info['from']['full'] , $info['subject'] ,$info['body'] ); 
     5499                                                 
     5500                                                if($proc['keep'] !== true) 
     5501                                                    $this->delete_msgs(array('msgs_number' => $msg , 'folder' => 'INBOX')); 
     5502                                        }        
     5503                                break; 
     5504                         
     5505                        case 'setflag': 
     5506                                foreach($msgs as $msg) 
     5507                                        $ret[$msg][] = $this->set_messages_flag( array( 'folder' => 'INBOX' , 'msgs_to_set' => $msg , 'flag' => $proc['value']) ); 
     5508                 
     5509                                break; 
     5510                } 
     5511                 
     5512                return $ret; 
     5513        } 
    53285514} 
    53295515?> 
  • trunk/expressoMail1_2/index.php

    r5533 r5539  
    386386<title>ExpressoMail</title> 
    387387</head> 
    388 <body scroll="no" style="overflow:hidden"> 
     388<body scroll="no" style="overflow:hidden" class="expressomail-module-container"> 
    389389<link rel="stylesheet" href="../prototype/modules/attach_message/attach_message.css" type="text/css" /> 
    390390<link rel="stylesheet" href="../prototype/modules/mail/css/label.css" type="text/css" />         
     
    394394</body> 
    395395</html> 
     396<script type="text/javascript" src="../prototype/modules/filters/filters.js"></script> 
    396397<script type="text/javascript">connector.updateVersion = "<?=$update_version?>";</script> 
    397398<!-----Expresso Mail - Version Updated:<?=$update_version?>--------> 
  • trunk/expressoMail1_2/js/common_functions.js

    r5533 r5539  
    641641        filters.Forms(); 
    642642} 
     643 
     644 
     645function filterbox2(){ 
     646        jQuery('.expresso-window-container').dialog('open'); 
     647} 
     648 
    643649 
    644650function sharebox(){ 
  • trunk/expressoMail1_2/js/doiMenuData.js

    r5533 r5539  
    9797                "i01": {"name": get_lang("Preferences"), "icon": "preferences-mail", callback: preferences_mail }, 
    9898                "i02": {"name": get_lang("Search"), "icon": "search-mail", callback: function(key, opt){ search_emails(""); }}, 
    99                 "103": {"name": get_lang("Edit filters"), "icon": "filter", callback: filterbox }, 
     99                "103": {"name": get_lang("Edit filters"), "icon": "filter", callback: filterbox2 }, 
    100100                "i04": {"name": get_lang("Edit folders"), "icon": "edit-folder", callback: folderbox }, 
    101101                "i05": {"name": get_lang("Share mailbox"), "icon": "share-mailbox", callback: sharebox }, 
Note: See TracChangeset for help on using the changeset viewer.