Ignore:
Timestamp:
07/11/12 11:45:10 (12 years ago)
Author:
niltonneto
Message:

Ticket #0000 - Copiadas as alterações do Trunk. Versão final da 2.4.1.

Location:
branches/2.4
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2.4

  • branches/2.4/expressoMail1_2/inc/class.imap_functions.inc.php

    r6735 r6754  
    10951095        function get_info_msg($params) 
    10961096        { 
    1097          
    10981097                if(isset($params['alarm'])){ 
    10991098                        $alarm = $params['alarm']; 
     
    11401139            //$return['signature']      = $return_get_body['signature']; 
    11411140                } 
    1142                  
     1141 
    11431142                $pattern = '/^[ \t]*Disposition-Notification-To:.*/mi'; 
    11441143                if (preg_match($pattern, $header_, $fields)) 
    1145                 $return['DispositionNotificationTo'] = base64_encode(trim(str_ireplace('Disposition-Notification-To:', '', $fields[0]))); 
     1144                        $return['DispositionNotificationTo'] = base64_encode(trim(str_ireplace('Disposition-Notification-To:', '', $fields[0])));  
    11461145 
    11471146                $return['Recent']       = $header->Recent; 
     
    14001399                $return['login'] = $_SESSION['phpgw_info']['expressomail']['user']['account_id'];//$GLOBALS['phpgw_info']['user']['account_id']; 
    14011400                $return['reply_toaddress'] = $header->reply_toaddress; 
    1402                  
     1401                 
    14031402                if(($return['from']['email'] ==  '@unspecified-domain' || $return['sender']['email'] == null) && $return['msg_folder'] == 'INBOX/Drafts'){ 
    14041403                        $return['from']['email'] = "Rascunho"; 
    14051404                } 
    1406                  
     1405 
    14071406                if(strpos($return['toaddress2'], 'undisclosed-recipients') !== false){ 
    14081407                        $return['toaddress2'] = $this->functions->getLang('without destination'); 
     
    16771676                        break; 
    16781677 
    1679                       case 'CANCEL': 
     1678                    case 'CANCEL': 
    16801679 
    16811680                          $ical = $icalService->getComponent('vevent'); 
     
    28112810            $header = $this->get_header($msg_numb); 
    28122811            $header_ = imap_fetchheader($this->mbox, $msg_numb, FT_UID); 
    2813             $pattern = '/^[ \t]*Disposition-Notification-To:.*/mi';  
    2814                         if (preg_match($pattern, $header_, $fields))  
    2815                                 $return['DispositionNotificationTo'] = base64_encode(trim(str_ireplace('Disposition-Notification-To:', '', $fields[0]))); 
     2812            $pattern = '/^[ \t]*Disposition-Notification-To:.*/mi'; 
     2813                        if (preg_match($pattern, $header_, $fields)) 
     2814                                $return['DispositionNotificationTo'] = base64_encode(trim(str_ireplace('Disposition-Notification-To:', '', $fields[0])));  
    28162815 
    28172816            $message_id = $header->message_id; 
     
    29182917                     if($att['disposition'] == 'embedded' && $isHTML) //Caso mensagem em texto simples converter os embedded para attachments 
    29192918                     { 
    2920                          $body = str_replace('"../prototype/getArchive.php?mailAttachment='.$att['id'].'"', $att['name'], $body); 
    2921                          $mailService->addStringImage(base64_decode($att['source']), $att['type'], mb_convert_encoding($att['name'], 'ISO-8859-1' , 'UTF-8,ISO-8859-1'));  
     2919                         $body = str_replace('"../prototype/getArchive.php?mailAttachment='.$att['id'].'"', '"'.mb_convert_encoding($att['name'], 'ISO-8859-1' , 'UTF-8,ISO-8859-1').'"', $body); 
     2920                         $mailService->addStringImage(base64_decode($att['source']), $att['type'], mb_convert_encoding($att['name'], 'ISO-8859-1' , 'UTF-8,ISO-8859-1')); 
    29222921                     } 
    29232922                     else 
    2924                           $mailService->addStringAttachment(base64_decode($att['source']), mb_convert_encoding($att['name'], 'ISO-8859-1' , 'UTF-8,ISO-8859-1'), $att['type'], 'base64', isset($att['disposition']) ? $att['disposition'] :'attachment' ); 
     2923                         $mailService->addStringAttachment(base64_decode($att['source']), mb_convert_encoding($att['name'], 'ISO-8859-1' , 'UTF-8,ISO-8859-1'), $att['type'], 'base64', isset($att['disposition']) ? $att['disposition'] :'attachment' ); 
    29252924                      
    29262925                     $message_size_total += $att['size']; 
     
    29372936                                {     
    29382937                                    $body = str_ireplace('<img src="./inc/get_archive.php?msgFolder='.$value['folder'].'&msgNumber='.$value['uid'].'&indexPart='.$value['part'].'" />' , '<img src="'.$att['name'].'" />', $body); 
    2939                                     $mailService->addStringImage($att['source'], $att['type'],mb_convert_encoding($att['name'], 'ISO-8859-1' , 'UTF-8,ISO-8859-1') );  
     2938                                    $mailService->addStringImage($att['source'], $att['type'],mb_convert_encoding($att['name'], 'ISO-8859-1' , 'UTF-8,ISO-8859-1') ); 
    29402939                                } 
    29412940                                else 
     
    29482947                                $mbox_stream = $this->open_mbox(mb_convert_encoding($value['folder'] , 'ISO-8859-1' , 'UTF7-IMAP')); 
    29492948                                $rawmsg = $this->getRawHeader($value['uid']) . "\r\n\r\n" . $this->getRawBody($value['uid']); 
    2950                                   
    2951                                 $mailService->addStringAttachment($rawmsg, mb_convert_encoding(base64_decode($value['name']), 'ISO-8859-1' , 'UTF-8,ISO-8859-1'), 'message/rfc822', '7bit', 'attachment' );  
     2949                                 
     2950                                $mailService->addStringAttachment($rawmsg, mb_convert_encoding(base64_decode($value['name']), 'ISO-8859-1' , 'UTF-8,ISO-8859-1'), 'message/rfc822', '7bit', 'attachment' ); 
    29522951                                $message_size_total += mb_strlen($rawmsg); //Adiciona o tamanho do anexo a variavel que controlao tamanho da msg. 
    29532952                                unset($rawmsg); 
     
    30293028             */ 
    30303029            //////////////////////////////////////////////////////////////////////////////////////////////////// 
    3031  
    30323030            if ($isHTML) 
    3033             {  
    3034                 $defaultStyle = '';  
    3035                   
    3036                 if(isset($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_family_editor']) && $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_family_editor'])  
    3037                 $defaultStyle .= ' font-family:'.$_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_family_editor'] .';';  
    3038                                   
    3039                 if(isset($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_size_editor']) && $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_size_editor'])  
    3040                 $defaultStyle .= ' font-size:'.$_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_size_editor'].';';  
    3041                         
    3042                 $body = '<span class="'.$defaultStyle.'">'.$body.'</span>';  
     3031            { 
     3032                $this->rfc2397ToEmbeddedAttachment($mailService , $body); 
     3033 
     3034                $defaultStyle = ''; 
     3035                if(isset($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_family_editor']) && $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_family_editor']) 
     3036                    $defaultStyle .= ' font-family:'.$_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_family_editor'] .';'; 
     3037                 
     3038                if(isset($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_size_editor']) && $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_size_editor']) 
     3039                    $defaultStyle .= ' font-size:'.$_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_size_editor'].';'; 
     3040     
     3041                $body = '<span class="'.$defaultStyle.'">'.$body.'</span>'; 
    30433042                $mailService->setBodyHtml($body); 
    3044              } 
     3043            }     
    30453044            else 
    30463045                $mailService->setBodyText($body); 
     
    30743073                    error_log("$now - $userip - $sent [$subject] - $userid => $addrs\r\n", 3, "/home/expressolivre/mail_senders.log"); 
    30753074                } 
    3076                 if ($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['use_dynamic_contacts']) { 
    3077                     $contacts = new dynamic_contacts(); 
    3078                     $new_contacts = $contacts->add_dynamic_contacts($toaddress . "," . $ccaddress . "," . $ccoaddress); 
    3079                     return array("success" => true, "new_contacts" => $new_contacts); 
    3080                 } 
    3081                  
    3082                    if($params['uids_save'] ) 
    3083                         $this->delete_msgs(array('folder'=> $params['save_folder'] , 'msgs_number' => $params['uids_save'])); 
     3075                if($params['uids_save'] ) 
     3076                                        $this->delete_msgs(array('folder'=> $params['save_folder'] , 'msgs_number' => $params['uids_save'])); 
    30843077                        
    3085                  
    30863078                //return array("success" => true, "folder" => $folder_list); 
    30873079                                return array("success" => true, "load" => $has_new_folder); 
     
    38393831        } 
    38403832 
    3841         function send_notification($params)  
    3842         {  
    3843                 $mailService = ServiceLocator::getService('mail'); 
     3833        function send_notification($params) 
     3834        { 
     3835                $mailService = ServiceLocator::getService('mail');  
    38443836                $body = lang("Your message: %1",$params['subject']) . '<br>'; 
    38453837                $body .= lang("Received in: %1",date("d/m/Y H:i",$params['date'])) . '<br>'; 
    38463838                $body .= lang("Has been read by: %1 &lt; %2 &gt; at %3", $_SESSION['phpgw_info']['expressomail']['user']['fullname'], $_SESSION['phpgw_info']['expressomail']['user']['email'], date("d/m/Y H:i")); 
    3847                 return $mailService->sendMail(base64_decode($params['notificationto']),   
    3848                                                            $_SESSION['phpgw_info']['expressomail']['user']['email'],  
    3849                                                            $this->htmlspecialchars_decode(lang("Read receipt: %1",$params['subject'])),  
    3850                                                            $body); 
     3839                return $mailService->sendMail(base64_decode($params['notificationto']),  
     3840                                                           $_SESSION['phpgw_info']['expressomail']['user']['email'],  
     3841                                                           $this->htmlspecialchars_decode(lang("Read receipt: %1",$params['subject'])),  
     3842                                                           $body);  
    38513843 
    38523844        } 
     
    49074899                                $return['msgs'][$i]['flag'] .= $msg->Deleted ? $msg->Deleted : '';       
    49084900                                 
    4909                                 $header = imap_fetchheader( $imap, $v , FT_UID ); // Necessario para recuperar se a mensagem é importante ou não. 
     4901                                $header = imap_fetchheader( $imap, $v , FT_UID ); // Necessario para recuperar se a mensagem é importante ou não. 
    49104902                                $importante = array(); 
    49114903                                 
     
    51885180        * @param      <Array> <$proc> <ações do filtro> 
    51895181        * @return     <Regras do usuário em Array> 
    5190         * @access     <public> 
     5182        * @access public 
    51915183        */ 
    51925184        function apliSieveFilter($msgs , $proc) 
     
    52295221                return $ret; 
    52305222        } 
     5223 
     5224   /** 
     5225    * Método que convert imagens no formato rfc2397 para Embedded Attachment 
     5226    * 
     5227    * @license    http://www.gnu.org/copyleft/gpl.html GPL 
     5228    * @author     Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 
     5229    * @sponsor     Caixa Econômica Federal 
     5230    * @author     Cristiano Corrêa Schmidt 
     5231    * @param      <MailService> <$mailService> <Referencia objeto MailService> 
     5232    * @param      <String> <$body> <Referencia Corpo do email> 
     5233    * @return     <void> 
     5234    * @access     public 
     5235    */ 
     5236   function rfc2397ToEmbeddedAttachment( &$mailService , &$body ) 
     5237   {  
     5238       $matches = array(); 
     5239       preg_match_all("/src=[\'|\"]+data:([^,]*);base64,([a-zA-Z0-9\+\/\=]+)[\'|\"]+/i", $body, $matches,  PREG_SET_ORDER); //Resgata imagens em rfc2397        
     5240        
     5241       foreach ($matches as $i => &$v) 
     5242       { 
     5243            $ext = explode(';', $v[1]); //quebra todos os parametros em um array.  
     5244            $mailService->addStringImage(base64_decode($v[2]), $ext[0] , 'EmbeddedImage'.$i.'.'.$this->mimeToExtension($v[1]));  
     5245            $body = str_replace($v[0], 'src="EmbeddedImage'.$i.'.'.$this->mimeToExtension($ext[0]).'"' , $body);  
     5246       } 
     5247   } 
     5248 
     5249   /** 
     5250    * Método que retorna a extensão do arquivo atraves do mime type 
     5251    * 
     5252    * @license    http://www.gnu.org/copyleft/gpl.html GPL 
     5253    * @author     Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 
     5254    * @sponsor     Caixa Econômica Federal 
     5255    * @author     Cristiano Corrêa Schmidt 
     5256    * @param      <String> <$mimeType> <Mime Type do arquivo> 
     5257    * @return     <String> <extensão> 
     5258    * @access     public 
     5259    */ 
     5260   function mimeToExtension($mimeType) 
     5261   { 
     5262       switch ( $mimeType )  
     5263       {    
     5264           case 'image/bmp' :  
     5265           return 'bmp'; 
     5266           case 'image/cgm' : 
     5267               return 'cgm'; 
     5268           case 'image/vnd.djvu' :  
     5269               return 'djv'; 
     5270           case 'image/gif' : 
     5271               return 'gif'; 
     5272           case 'image/x-icon' : 
     5273               return 'ico'; 
     5274           case 'image/ief' : 
     5275               return 'ief'; 
     5276           case 'image/jpeg' : 
     5277               return 'jpg'; 
     5278           case 'image/x-macpaint' : 
     5279               return 'mac'; 
     5280           case 'image/pict' : 
     5281               return 'pct'; 
     5282           case 'image/png' : 
     5283               return 'png'; 
     5284           case 'image/x-quicktime' : 
     5285               return 'qti'; 
     5286           case 'image/x-rgb' : 
     5287               return 'rgb'; 
     5288           case 'image/tiff' : 
     5289               return 'tif'; 
     5290           default: 
     5291               return ''; 
     5292       } 
     5293        
     5294   } 
     5295         
     5296         
     5297        /** 
     5298        * Método que retorna as mensagens com a flag $FilteredMessage que representa as mensagens filtradas que devem ser alertadas para o usuário 
     5299        * 
     5300        * @license    http://www.gnu.org/copyleft/gpl.html GPL 
     5301        * @author     Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 
     5302        * @sponsor    Caixa Econômica Federal 
     5303        * @author     Airton Bordin Junior <airton@prognus.com.br> 
     5304        * @author         Marcieli <marcieli@prognus.com.br>     
     5305        * @author         Marcos <marcosw@prognus.com.br>        
     5306        * @param      <Array> <$paramFolders> <Pastas onde devem ser buscadas as mensagens> 
     5307        * @return     <Mensagens encontradas com a flag $FilteredMessage> 
     5308        * @access     <public> 
     5309        */ 
     5310        function getFlaggedAlertMessages($paramFolders) { 
     5311                 
     5312                $folders = explode(",", $paramFolders['folders']); 
     5313         
     5314                $messages = array(); 
     5315                $result   = array(); 
     5316                $label    = '$FilteredMessage'; 
     5317                 
     5318                foreach ($folders as $folder) { 
     5319                        $this->mbox = $this->open_mbox($folder); 
     5320                        /* Não deletadas, não lidas e com a flag */ 
     5321                        $messages = imap_search($this->mbox, 'UNDELETED UNSEEN KEYWORD "$FilteredMessage"', SE_UID); 
     5322                        if(is_array($messages)) 
     5323                                foreach ($messages as $k => $m) { 
     5324                                        $headers = imap_fetch_overview($this->mbox, $m, FT_UID); 
     5325                                        $date = explode(" ", $headers[0]->date);  
     5326                                        $result[$m."_".$folder] = array ( 
     5327                                                'udate'      => $headers[0]->udate, 
     5328                                                'smalldate'  => $date[5], 
     5329                                                'from'       => $headers[0]->from, 
     5330                                                'subject'    => self::decodeMimeString($headers[0]->subject), 
     5331                                                'msg_number' => $m, 
     5332                                                'msg_folder' => $folder 
     5333                                        ); 
     5334                                } 
     5335                } 
     5336                $result_final = array(); 
     5337                foreach ($result as $r){ 
     5338                        $result_final[] = $r; 
     5339                } 
     5340 
     5341                return $result_final; 
     5342        } 
     5343         
     5344        /** 
     5345        * Esta função é chamada ao clicar sobre uma mensagem listada nos alertas de Filtro por Remetente 
     5346        * remove a flag e chama a função que recupera os dados da mensagem, para serem utilizados na abertura da aba de leitura da msg 
     5347        */ 
     5348        function open_flagged_msg($params){ 
     5349                $message_number = $params['msg_number']; 
     5350                $message_folder = $params['msg_folder']; 
     5351                $alarm = $params['alarm']; 
     5352                if ($message_folder && $message_number) { 
     5353                        $this->mbox = $this->open_mbox($message_folder); 
     5354                        imap_clearflag_full($this->mbox, $message_number, '$FilteredMessage', ST_UID); 
     5355                } 
     5356                $r = $this->get_info_msg(array('msg_number' => $message_number, 'msg_folder' =>urlencode($message_folder), 'alarm' => ($alarm))); 
     5357                return $r; 
     5358        } 
     5359         
     5360        /** 
     5361        * Remove a flag que caracteriza uma mensagem como alertada por Filtro por Remetente. 
     5362        * se houver o parametro msg_number, então remove a flag de uma msg especifica 
     5363        * se não houver o parametro msg_number, mas sim o from, então remove a flag de todas as msgs da pasta (parametro from),  
     5364        * e que o remetente for o from. 
     5365        */ 
     5366        function removeFlagMessagesFilter($params){ 
     5367                $message_number = $params['msg_number']; 
     5368                $folder = $params['folder']; 
     5369 
     5370                if(isset($message_number)){ 
     5371                        if(isset($folder)){ 
     5372                                $message_number = explode(',', $message_number); 
     5373                                $this->mbox = $this->open_mbox($folder); 
     5374                                foreach ($message_number as $k => $m) {                  
     5375                                                imap_clearflag_full($this->mbox, $m, '$FilteredMessage', ST_UID); 
     5376                                        } 
     5377                        } 
     5378                } 
     5379                else{ 
     5380                        $from = $params['from']; 
     5381                        if(isset($folder) && isset($from)){ 
     5382                                $this->mbox = $this->open_mbox($folder); 
     5383                                $messages = imap_search($this->mbox, 'UNDELETED UNSEEN KEYWORD "$FilteredMessage"', SE_UID); 
     5384                        } 
     5385                        if(is_array($messages)){ 
     5386                                foreach ($messages as $k => $m) { 
     5387                                        $headers = imap_fetch_overview($this->mbox, $m, FT_UID); 
     5388                                        if(strpos($headers[0]->from, $from) > 0){ 
     5389                                                imap_clearflag_full($this->mbox, $m, '$FilteredMessage', ST_UID); 
     5390                                        } 
     5391                                } 
     5392                        } 
     5393                } 
     5394                 
     5395                return array('status' => "success");  
     5396        } 
     5397 
    52315398} 
    52325399?> 
Note: See TracChangeset for help on using the changeset viewer.