Ignore:
Timestamp:
10/11/12 18:14:36 (12 years ago)
Author:
marcosw
Message:

Ticket #3088 - Realização de merge da melhoria do MailArchiver?

File:
1 edited

Legend:

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

    r7040 r7414  
    5656        // Rommel Cysne (rommel.cysne@serpro.gov.br) 
    5757        // em 17/12/2008. 
     58 
     59    function createFileEml_by_localFolder($sEMLData, $tempDir, $file){  
     60 
     61        $file = "{$file}.eml"; 
     62 
     63        $f = fopen($tempDir.'/'.$file,"w"); 
     64        if(!$f) 
     65            return False; 
     66 
     67        fputs($f,$sEMLData); 
     68        fclose($f); 
     69         
     70        return $file; 
     71    } 
     72 
    5873        function createFileEml($sEMLData, $tempDir, $id, $subject=false, $i=false) 
    5974    { 
     
    101116    }  
    102117 
    103         function createFileZip($files, $tempDir){                
     118        function createFileZip($files, $tempDir){        
     119 
    104120                $tmp_zip_filename = "email_".$_SESSION[ 'phpgw_session' ][ 'session_id' ].".zip"; 
    105                  
    106121                if (!empty($files)) 
    107122                { 
     
    119134                    } 
    120135                } 
    121                  
    122                 $command = "cd " . escapeshellarg($tempDir) . " && nice zip -m9 " . escapeshellarg($tmp_zip_filename) . " " .  $files; 
     136 
     137 
     138$command = "cd " . escapeshellarg($tempDir) . " && nice zip -m9 " . escapeshellarg($tmp_zip_filename) . " " .  $files; 
     139 
     140 
    123141                if(!exec($command)) { 
    124142                        $command = "cd " .  escapeshellarg($tempDir) . " && rm ".$files." ". escapeshellarg($tmp_zip_filename); 
     
    126144                        return null; 
    127145                } 
    128                  
     146 
    129147                return $tmp_zip_filename; 
    130148                                 
    131149        } 
    132150 
    133         function export_all($params){ 
    134                  
     151function export_all_byLocalFolder($params){ 
     152        $error = false; 
     153 
     154        if(empty($params['messages'])){ 
     155            $file["empty_folder"] = true; 
     156        } else { 
     157            foreach($params['messages'] as $eachMsg){ 
     158               $header = ""; 
     159               $body = ""; 
     160               $tempDir = $this->tempDir; 
     161 
     162               $this->get_header_byLocalFolder($eachMsg, $header); 
     163               $this->get_body_byLocalFolder($eachMsg, $body); 
     164               $sEMLData    = $this->parseEml($header, $body); 
     165               $fileName   = $this->createFileEml_by_localFolder($sEMLData, $tempDir,$eachMsg['msg_number']); 
     166 
     167               if(!$fileName){ 
     168                   $error = true; 
     169                   break; 
     170               } else  
     171                   $fileNames .= "\"".$fileName."\" "; 
     172            } 
     173 
     174            $nameFileZip = 'False';          
     175            if($fileNames && !$error) {          
     176                $nameFileZip = $this->createFileZip($fileNames, $tempDir); 
     177                ($nameFileZip) ? ($file = $tempDir.'/'.$nameFileZip) : ($file = false); 
     178            } else  
     179                $file = false; 
     180        } 
     181        
     182       return $file; 
     183 
     184} 
     185 
     186function get_header_byLocalFolder($eachMsg, &$header){ 
     187    $header = <<<header 
     188        MIME-Version: 1.0 
     189        Content-Type: text/html; charset=ISO-8859-1 
     190        Content-Transfer-Encoding: quoted-printable 
     191        From: "{$eachMsg['from']['name']}" <{$eachMsg['from']['email']}> 
     192        To: {$eachMsg['to']['email']} 
     193        Subject: {$eachMsg['subject']} 
     194        Message-Id: {$eachMsg['msg_number']} 
     195        Date: {$eachMsg['date']} 
     196header; 
     197} 
     198 
     199function get_body_byLocalFolder($eachMsg, &$body){ 
     200    $body = $eachMsg['msg_sample']['body']; 
     201} 
     202 
     203function export_all($params){ 
     204 
    135205                $this->folder = $params['folder']; 
    136206                $this->folder = mb_convert_encoding($this->folder, "UTF7-IMAP","UTF-8"); 
     
    140210                 
    141211                $msgs = imap_search($this->mbox_stream,"ALL",SE_UID); 
     212 
    142213                if($msgs){ 
    143214                        foreach($msgs as $nMsgs){ 
    144                                 $header         = $this-> getHeader($nMsgs);                                                                     
    145                                 $body           = $this-> getBody($nMsgs);                       
     215 
     216                                $header         = $this-> getHeader($nMsgs);                                                              
     217                                $body           = $this-> getBody($nMsgs);               
     218 
    146219                                $sEMLData       = $this -> parseEml($header, $body); 
    147220                                $fileName       = $this -> CreateFileEml($sEMLData, $tempDir,$nMsgs); 
     
    478551        } 
    479552 
     553        //MAILARCHIVER  
     554        function js_source_var($params) { 
     555                $this-> folder = $params['folder']; 
     556                if(!$this->folder){ 
     557                   $aux = explode(';',$params['msgs_to_export']); 
     558                   $this->folder = $aux[0]; 
     559                   $id_number = $aux[1]; 
     560                } 
     561                else{ 
     562                        $id_number = $params['msgs_to_export']; 
     563                } 
     564                $this->folder = mb_convert_encoding($this->folder, "UTF7-IMAP","ISO_8859-1"); 
     565                $tempDir = ini_get("session.save_path"); 
     566 
     567                $this->connectImap(); 
     568                $header         = $this-> getHeader($id_number); 
     569                $body           = $this-> getBody($id_number); 
     570                 
     571                if(!strpos($header,"Date: ")){ 
     572                        $header = "Date: " . $this->getHeaderInfo($id_number)->Date . "\r\n" .$header ; 
     573                } 
     574 
     575                imap_close($this->mbox_stream); 
     576 
     577                $input = $header . "\r\n\r\n" . $body; 
     578                $input = preg_replace('/\x1d/', '', $input); //remove special char control detected (hex 1D) 
     579                 
     580                return($input); 
     581        }  
     582         
    480583    function export_msg_data($id_msg,$folder) { 
    481584                $this->folder = $folder; 
     
    752855                return imap_fetchheader($this->mbox_stream, $msg_number, FT_UID); 
    753856        } 
     857 
     858        function getHeaderInfo($msg_number){                     
     859                $header = imap_headerinfo($this->mbox_stream, imap_msgno($this->mbox_stream, $msg_number), 80, 255); 
     860                return $header; 
     861        } 
    754862         
    755863        function getBody($msg_number){ 
Note: See TracChangeset for help on using the changeset viewer.