source: trunk/expressoMail1_2/inc/class.exporteml.inc.php @ 1036

Revision 1036, 19.1 KB checked in by amuller, 15 years ago (diff)

Ticket #559 - Atualização de segurança

  • Property svn:eol-style set to native
  • Property svn:executable set to *
Line 
1<?php
2        $GLOBALS['phpgw_info']['flags'] = array(
3                'currentapp' => 'expressoMail1_2',
4                'nonavbar'   => true,
5                'noheader'   => true
6        );
7
8        require_once $_SERVER[ 'DOCUMENT_ROOT' ] . '/header.inc.php';
9/***************************************************************************************\
10* Export EML Format Message Mail                                                                                                                *
11* Written by Nilton Neto (Celepar) <niltonneto@celepar.pr.gov.br>                                               *
12* ------------------------------------------------------------------------------------  *
13*  This program is free software; you can redistribute it and/or modify it                              *
14*   under the terms of the GNU General Public License as published by the                               *
15*  Free Software Foundation; either version 2 of the License, or (at your                               *
16*  option) any later version.                                                                                                                   *
17\****************************************************************************************/
18// BEGIN CLASS
19class ExportEml
20{
21        var $msg;
22        var $folder;
23        var $mbox_stream;
24       
25        function connectImap(){
26       
27                $username = $_SESSION['phpgw_info']['expressomail']['user']['userid'];
28                $password = $_SESSION['phpgw_info']['expressomail']['user']['passwd'];
29                $imap_server = $_SESSION['phpgw_info']['expressomail']['email_server']['imapServer'];
30                $imap_port      = $_SESSION['phpgw_info']['expressomail']['email_server']['imapPort'];
31               
32                if ($_SESSION['phpgw_info']['expressomail']['email_server']['imapTLSEncryption'] == 'yes')
33                {
34                        $imap_options = '/tls/novalidate-cert';
35                }
36                else
37                {
38                        $imap_options = '/notls/novalidate-cert';
39                }
40                $this->mbox_stream = imap_open("{".$imap_server.":".$imap_port.$imap_options."}".$this->folder, $username, $password);
41        }
42       
43        //export message to EML Format
44        function parseEml($header, $body)       
45        {               
46                $sEmailHeader = $header;
47                $sEmailBody = $body;
48                $sEMail = $sEmailHeader . "\r\n\r\n" . $sEmailBody;             
49                return $sEMail;
50        }
51       
52        // create EML File.
53        // Funcao alterada para tratar a exportacao
54        // de mensagens arquivadas localmente.
55        // Rommel Cysne (rommel.cysne@serpro.gov.br)
56        // em 17/12/2008.
57        function createFileEml($sEMLData, $tempDir, $id, $subject=false, $i)
58    {
59        if($id)
60        {
61            $header    = imap_headerinfo($this->mbox_stream, imap_msgno($this->mbox_stream, $id), 80, 255);
62            $subject = $this->decode_subject($header->fetchsubject);
63           
64            if (strlen($subject) > 60)
65                $subject = substr($subject, 0, 59);
66 
67                        //$subject = ereg_replace('/', '\'', $subject);
68                        $from = "áàâãäéèêëíìîïóòôõöúùûüç?\"!@#$%š&*()-=+Ž`[]{}~^,<>;:/?\\|¹²³£¢¬§ªº°ÁÀÂÃÄÉÈÊËÍÌÎÏÓÒÔÕÖÚÙÛÜÇ";
69                        $to =   "aaaaaeeeeiiiiooooouuuuc__________________________________________AAAAAEEEEIIIIOOOOOUUUUC";
70                        $subject = strtr($subject,$from,$to);
71            $file =    $subject."_".$id.".eml";
72                } else{
73                        // Se mensagem for arquivada localmente, $subject (assunto da mensagem)
74                        // sera passado para compor o nome do arquivo .eml;
75
76                        if($subject){
77                                $from = "áàâãäéèêëíìîïóòôõöúùûüç?\"!@#$%š&*()-=+Ž`[]{}~^,<>;:/?\\|¹²³£¢¬§ªº°ÁÀÂÃÄÉÈÊËÍÌÎÏÓÒÔÕÖÚÙÛÜÇ";
78                                $to =   "aaaaaeeeeiiiiooooouuuuc__________________________________________AAAAAEEEEIIIIOOOOOUUUUC";
79                                $subject = strtr($subject,$from,$to);
80                                //$subject = ereg_replace(':', '_', $subject);
81                                //$subject = ereg_replace('/', '_', $subject);
82                                $file = $subject."_".$i.".eml";
83                        } else{
84                                $file = "email_".md5(microtime()).".eml";
85        }   
86        }
87       
88        $f = fopen($tempDir.'/'.$file,"w");
89        if(!$f)
90            return False;
91       
92        fputs($f,$sEMLData);
93        fclose($f);
94       
95        return $file;
96    }
97
98        function createFileZip($files, $tempDir){               
99                $tmp_zip_filename =     "email_".md5(microtime()).".zip";
100                $command = "cd " . $tempDir . "; nice zip -m " . $tmp_zip_filename . " " . $files;                     
101                if(!exec($command)) {
102                        $command = 'cd ' . $tempDir . '; rm '.$files;
103                        exec($command);
104                        return null;
105                }
106               
107                return $tmp_zip_filename;
108                               
109        }
110
111        function export_all($params){
112               
113                $this->folder = $params['folder'];
114                $this->folder = mb_convert_encoding($this->folder, "UTF7-IMAP","UTF-8");
115                $fileNames = "";
116                $tempDir = ini_get("session.save_path");
117                $this->connectImap();
118               
119                $msgs = imap_search($this->mbox_stream,"ALL",SE_UID);
120                foreach($msgs as $nMsgs){
121                        $header         = $this-> getHeader($nMsgs);                                                                   
122                        $body           = $this-> getBody($nMsgs);                     
123                        $sEMLData       = $this -> parseEml($header, $body);
124                        $fileName       = $this -> CreateFileEml($sEMLData, $tempDir,$nMsgs);
125                        if(!$fileName)  {
126                                $error = True;                                 
127                                break;
128                        }
129                        else
130                                $fileNames .= "\"".$fileName."\" ";                     
131                       
132                }
133                imap_close($this->mbox_stream);
134               
135                $nameFileZip = 'False';                 
136                if($fileNames && !$error) {                     
137                        $nameFileZip = $this -> createFileZip($fileNames, $tempDir);
138                        if($nameFileZip)                       
139                                $file = $tempDir.'/'.$nameFileZip;
140                        else {
141                                $file = false;
142                        }                                                               
143                }
144                else
145                        $file = false;
146                       
147                return $file;
148               
149        }
150
151        // Funcao alterada para tratar a exportacao
152        // de mensagens arquivadas localmente.
153        // Rommel Cysne (rommel.cysne@serpro.gov.br)
154        // em 17/12/2008.
155        function makeAll($params) {
156                // Exportacao de mensagens arquivadas localmente
157                if($params['l_msg'] == "t"){
158                // Recebe todos os subjects e bodies das mensagens locais selecionadas para exportacao
159                // e gera arrays com os conteudos separados;
160                $array_mesgs = explode('@@',$params['mesgs']);
161                $array_subjects = explode('@@',$params['subjects']);
162            $array_ids = explode(',', $params['msgs_to_export']);
163            $tempDir = ini_get("session.save_path");
164                        // Para cada mensagem selecionada sera gerado um arquivo .eml cujo titulo sera o assunto (subject) da mesma;
165                        include_once("class.imap_functions.inc.php");
166                        $imapf = new imap_functions();
167                foreach($array_ids as $i=>$id) {
168                                $sEMLData=$imapf->treat_base64_from_post($array_mesgs[$i]);
169                                $fileName=$this->CreateFileEml($sEMLData, $tempDir,'',$array_subjects[$i],$i);
170                                if(!$fileName){
171                                        $error = True;
172                                        break;
173                                } else{
174                                        $fileNames .= "\"".$fileName."\" ";
175                                }
176                        }
177                        $nameFileZip = 'False';
178                        if($fileNames && !$error) {
179                                $nameFileZip = $this -> createFileZip($fileNames, $tempDir);
180                                if($nameFileZip){
181                                        $file = $tempDir.'/'.$nameFileZip;
182                                } else{
183                                        $file = false;
184                                }
185
186                        } else{
187                                $file = false;
188                        }
189
190            return $file;
191
192                // Exportacao de mensagens da caixa de entrada (imap) - processo original do Expresso
193                } else{
194            $this-> folder = $params['folder'];
195            $this->folder = mb_convert_encoding($this->folder, "UTF7-IMAP","UTF-8");
196            $array_ids = explode(',', $params['msgs_to_export']);
197            $error = False;
198            $fileNames = "";
199            $tempDir = ini_get("session.save_path");
200            $this->connectImap();
201                        for($i = 0; $i < count($array_ids); $i++) {
202                        $header         = $this-> getHeader($array_ids[$i]);                                                                                   
203                        $body           = $this-> getBody($array_ids[$i]);                     
204                        $sEMLData       = $this -> parseEml($header, $body);                   
205                        $fileName       = $this -> CreateFileEml($sEMLData, $tempDir, $array_ids[$i]);
206                       
207                        if(!$fileName)  {
208                                $error = True;                                 
209                                break;
210                        }
211                        else
212                                $fileNames .= "\"".$fileName."\" ";                     
213                       
214                }
215                imap_close($this->mbox_stream);
216               
217               
218                $nameFileZip = 'False';                 
219                if($fileNames && !$error) {                     
220                        $nameFileZip = $this -> createFileZip($fileNames, $tempDir);
221                        if($nameFileZip)                       
222                                $file = $tempDir.'/'.$nameFileZip;
223                        else {
224                                $file = false;
225                        }                                                               
226                }
227                else
228                        $file = false;
229                       
230                return $file;
231        }
232    }
233
234        function export_msg($params) {
235                $this-> folder = $params['folder'];
236                $this->folder = mb_convert_encoding($this->folder, "UTF7-IMAP","UTF-8");
237                $id_number = $params['msgs_to_export'];
238                $tempDir = ini_get("session.save_path");
239               
240                $this->connectImap();
241                $header         = $this-> getHeader($id_number);
242                $body           = $this-> getBody($id_number);
243               
244                $file = "source_".md5(microtime()).".txt";
245                $f = fopen($tempDir.'/'.$file,"w");
246                fputs($f,$header ."\r\n\r\n". $body);
247                fclose($f);
248               
249                imap_close($this->mbox_stream);
250                return $tempDir.'/'.$file;
251        }
252
253    function export_msg_data($id_msg,$folder) {
254                $this->folder = $folder;
255                $this->folder = mb_convert_encoding($this->folder, "UTF7-IMAP","UTF-8");
256
257                $this->connectImap();
258                $header         = $this-> getHeader($id_msg);
259                $body           = $this-> getBody($id_msg);
260
261                $msg_data = $header ."\r\n\r\n". $body;
262
263                imap_close($this->mbox_stream);
264                return $msg_data;
265        }
266
267        function export_to_archive($id_msg,$folder) {
268                $this->folder = $folder;
269                $this->folder = mb_convert_encoding($this->folder, "UTF7-IMAP","UTF-8");
270                $tempDir = dirname( __FILE__ ) . '/../tmpLclAtt';
271               
272                $phpheader = "<?php header('Content-Type: text/plain');
273                                header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
274                                header('Pragma: public');
275                                header('Expires: 0'); // set expiration time
276                                header('Content-Disposition: attachment; filename=\"fonte_da_mensagem.txt\"');?>";
277               
278                $this->connectImap();
279                $header         = $this-> getHeader($id_msg);
280                $body           = $this-> getBody($id_msg);
281               
282                $file = "source_".md5(microtime()).".php";
283                $f = fopen($tempDir.'/'.$file,"w");
284                fputs($f,$phpheader.$header ."\r\n\r\n". $body);
285                fclose($f);
286                $urlPath = 'tmpLclAtt/'.$file;
287               
288                imap_close($this->mbox_stream);
289                return $urlPath;
290        }
291
292        function remove_accents($string) {
293                /*
294                        $array1 = array("á", "à", "â", "ã", "ä", "é", "è", "ê", "ë", "í", "ì", "î", "ï", "ó", "ò", "ô", "õ", "ö", "ú", "ù", "û", "ü", "ç" , "?", "\"", "!", "@", "#", "$", "%", "š", "&", "*", "(", ")", "-", "=", "+", "Ž", "`", "[", "]", "{", "}", "~", "^", ",", "<", ">", ";", ":", "/", "?", "\\", "|", "¹", "²", "³", "£", "¢", "¬", "§", "ª", "º", "°", "Á", "À", "Â", "Ã", "Ä", "É", "È", "Ê", "Ë", "Í", "Ì", "Î", "Ï", "Ó", "Ò", "Ô", "Õ", "Ö", "Ú", "Ù", "Û", "Ü", "Ç");
295                        $array2 = array("a", "a", "a", "a", "a", "e", "e", "e", "e", "i", "i", "i", "i", "o", "o", "o", "o", "o", "u", "u", "u", "u", "c" , "" , ""  , "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "" ,  "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "A", "A", "A", "A", "A", "E", "E", "E", "E", "I", "I", "I", "I", "O", "O", "O", "O", "O", "U", "U", "U", "U", "C");
296                        return str_replace( $array1, $array2, $string );
297                */
298                return strtr($string,
299                        "áàâãäéèêëíìîïóòôõöúùûüç?\"!@#$%š&*()-=+Ž`[]{}~^,<>;:/?\\|¹²³£¢¬§ªº°ÁÀÂÃÄÉÈÊËÍÌÎÏÓÒÔÕÖÚÙÛÜÇ",
300                        "aaaaaeeeeiiiiooooouuuuc__________________________________________AAAAAEEEEIIIIOOOOOUUUUC");
301        }
302       
303        function get_attachments_in_array($params) {
304                $return_attachments = array();
305
306                $id_number = $params['num_msg'];               
307                $attachments =unserialize(rawurldecode($params['s_attachments']));
308               
309                $tempDir = dirname( __FILE__ ) . '/../tmpLclAtt';
310//              $tempDir = $_SERVER["DOCUMENT_ROOT"]."tmpLclAtt";
311                $tempSubDir = md5(microtime());
312                exec('mkdir ' . $tempDir . '/'.$tempSubDir.'; cd ' . $tempDir . '/'.$tempSubDir);
313               
314                $this-> folder = $params['folder'];
315                $this->folder = mb_convert_encoding($this->folder, "UTF7-IMAP","UTF-8");
316                $this->connectImap();
317
318                include_once("class.imap_attachment.inc.php");
319
320                $imap_attachment = new imap_attachment();
321                $attachments = $imap_attachment->download_attachment($this->mbox_stream, $id_number);
322                foreach($attachments as $i => $attachment){
323                        if($i && $i == 'names')
324                                continue;
325                        $fileNameReal = $this->remove_accents($attachment['name']);
326                        $ContentType = $this->getFileType($fileNameReal);
327                        $fileName = $fileNameReal . ".php";
328                        $f = fopen($tempDir . '/'.$tempSubDir.'/'.$fileName,"wb");
329                        if(!$f)
330                                return $tempDir . '/'.$tempSubDir.'/'.$fileName;                       
331
332                        $fileContent = imap_fetchbody($this->mbox_stream, $id_number,$attachment['pid'], FT_UID);
333                        $urlPath = 'tmpLclAtt/'.$tempSubDir.'/'.$fileName;
334                       
335                        $headers = "<?php header('Content-Type: ".$ContentType."');
336                                header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
337                                header('Pragma: public');
338                                header('Expires: 0'); // set expiration time
339                                header('Content-Disposition: attachment; filename=\"". addslashes($fileNameReal) ."\"');\n echo ";
340                       
341                        if($attachment['encoding'] == 'base64') {
342                                $headers.=" imap_base64('".$fileContent."');?>";
343                        }
344                        else if($attachment['encoding'] == 'quoted_printable_decode') {
345                                $headers.=" quoted_printable_decode('".$fileContent."');?>";
346                        }
347                        else {
348                                $headers.=" '".$fileContent."';?>";
349                        }
350                       
351                        fputs($f,$headers);
352
353                        array_push($return_attachments,array('name' => $fileName,'url' => $urlPath,'pid' =>$attachment['pid']));
354                        fclose($f);
355                }
356                imap_close($this->mbox_stream);
357                return $return_attachments;
358        }
359       
360        private function getFileType($nameFile) {
361                $strFileType = strrev(substr(strrev(strtolower($nameFile)),0,4));
362                $ContentType = "application/octet-stream";
363                if ($strFileType == ".asf")
364                        $ContentType = "video/x-ms-asf";
365                if ($strFileType == ".avi")
366                        $ContentType = "video/avi";
367                if ($strFileType == ".doc")
368                        $ContentType = "application/msword";
369                if ($strFileType == ".zip")
370                        $ContentType = "application/zip";
371                if ($strFileType == ".xls")
372                        $ContentType = "application/vnd.ms-excel";
373                if ($strFileType == ".gif")
374                        $ContentType = "image/gif";
375                if ($strFileType == ".jpg" || $strFileType == "jpeg")
376                        $ContentType = "image/jpeg";
377                if ($strFileType == ".wav")
378                        $ContentType = "audio/wav";
379                if ($strFileType == ".mp3")
380                        $ContentType = "audio/mpeg3";
381                if ($strFileType == ".mpg" || $strFileType == "mpeg")
382                        $ContentType = "video/mpeg";
383                if ($strFileType == ".rtf")
384                        $ContentType = "application/rtf";
385                if ($strFileType == ".htm" || $strFileType == "html")
386                        $ContentType = "text/html";
387                if ($strFileType == ".xml")
388                        $ContentType = "text/xml";
389                if ($strFileType == ".xsl")
390                        $ContentType = "text/xsl";
391                if ($strFileType == ".css")
392                        $ContentType = "text/css";
393                if ($strFileType == ".php")
394                        $ContentType = "text/php";
395                if ($strFileType == ".asp")
396                        $ContentType = "text/asp";
397                if ($strFileType == ".pdf")
398                        $ContentType = "application/pdf";
399                if ($strFileType == ".txt")
400                        $ContentType = "text/plain";
401                if ($strFileType == ".log")
402                        $ContentType = "text/plain";
403                if ($strFileType == ".wmv")
404                        $ContentType = "video/x-ms-wmv";
405                if ($strFileType == ".sxc")
406                        $ContentType = "application/vnd.sun.xml.calc";
407                if ($strFileType == ".odt")
408                        $ContentType = "application/vnd.oasis.opendocument.text";
409                if ($strFileType == ".stc")
410                        $ContentType = "application/vnd.sun.xml.calc.template";
411                if ($strFileType == ".sxd")
412                        $ContentType = "application/vnd.sun.xml.draw";
413                if ($strFileType == ".std")
414                        $ContentType = "application/vnd.sun.xml.draw.template";
415                if ($strFileType == ".sxi")
416                        $ContentType = "application/vnd.sun.xml.impress";
417                if ($strFileType == ".sti")
418                        $ContentType = "application/vnd.sun.xml.impress.template";
419                if ($strFileType == ".sxm")
420                        $ContentType = "application/vnd.sun.xml.math";
421                if ($strFileType == ".sxw")
422                        $ContentType = "application/vnd.sun.xml.writer";
423                if ($strFileType == ".sxq")
424                        $ContentType = "application/vnd.sun.xml.writer.global";
425                if ($strFileType == ".stw")
426                        $ContentType = "application/vnd.sun.xml.writer.template";
427                if ($strFileType == ".ps")
428                        $ContentType = "application/postscript";
429                if ($strFileType == ".pps")
430                        $ContentType = "application/vnd.ms-powerpoint";
431                if ($strFileType == ".odt")
432                        $ContentType = "application/vnd.oasis.opendocument.text";
433                if ($strFileType == ".ott")
434                        $ContentType = "application/vnd.oasis.opendocument.text-template";
435                if ($strFileType == ".oth")
436                        $ContentType = "application/vnd.oasis.opendocument.text-web";
437                if ($strFileType == ".odm")
438                        $ContentType = "application/vnd.oasis.opendocument.text-master";
439                if ($strFileType == ".odg")
440                        $ContentType = "application/vnd.oasis.opendocument.graphics";
441                if ($strFileType == ".otg")
442                        $ContentType = "application/vnd.oasis.opendocument.graphics-template";
443                if ($strFileType == ".odp")
444                        $ContentType = "application/vnd.oasis.opendocument.presentation";
445                if ($strFileType == ".otp")
446                        $ContentType = "application/vnd.oasis.opendocument.presentation-template";
447                if ($strFileType == ".ods")
448                        $ContentType = "application/vnd.oasis.opendocument.spreadsheet";
449                if ($strFileType == ".ots")
450                        $ContentType = "application/vnd.oasis.opendocument.spreadsheet-template";
451                if ($strFileType == ".odc")
452                        $ContentType = "application/vnd.oasis.opendocument.chart";
453                if ($strFileType == ".odf")
454                        $ContentType = "application/vnd.oasis.opendocument.formula";
455                if ($strFileType == ".odi")
456                        $ContentType = "application/vnd.oasis.opendocument.image";
457                if ($strFileType == ".ndl")
458                        $ContentType = "application/vnd.lotus-notes";
459                return $ContentType;
460        }
461       
462        function download_all_attachments($params) {
463               
464                $id_number = $params['num_msg'];               
465                $attachments =unserialize(rawurldecode($params['s_attachments']));
466               
467                $tempDir = ini_get("session.save_path");
468                $tempSubDir = md5(microtime());
469                $fileNames = '';
470                exec('mkdir ' . $tempDir . '/'.$tempSubDir.'; cd ' . $tempDir . '/'.$tempSubDir);
471                $this-> folder = $params['folder'];
472                $this->folder = mb_convert_encoding($this->folder, "UTF7-IMAP","UTF-8");
473                $this->connectImap();
474                include("class.imap_attachment.inc.php");
475                $imap_attachment = new imap_attachment();
476                $attachments = $imap_attachment->download_attachment($this->mbox_stream, $id_number);
477               
478                foreach($attachments as $i => $attachment){
479                        if($i && $i == 'names')
480                                continue;
481                                                                                                                                               
482                       
483                        $fileName = $this->remove_accents($attachment['name']);
484                        $f = fopen($tempDir . '/'.$tempSubDir.'/'.$fileName,"wb");
485                        if(!$f)
486                                return False;                   
487                                               
488                        $fileNames .= "'".$fileName."' ";
489                        $fileContent = imap_fetchbody($this->mbox_stream, $id_number,$attachment['pid'], FT_UID);
490                        if($attachment['encoding'] == 'base64')
491                                fputs($f,imap_base64($fileContent));
492                        else           
493                                fputs($f,$fileContent);
494                               
495                        fclose($f);
496               
497                }
498                imap_close($this->mbox_stream);
499                $nameFileZip = '';
500               
501                if($fileNames) {
502                        $nameFileZip = $this -> createFileZip($fileNames, $tempDir . '/'.$tempSubDir);                                         
503                        if($nameFileZip)
504                                $file =  $tempDir . '/'.$tempSubDir.'/'.$nameFileZip;
505                        else {
506                                $file = false;
507                        }
508                }
509                else
510                        $file = false;
511                               
512                return $file;
513        }
514
515        function getHeader($msg_number){                       
516                return imap_fetchheader($this->mbox_stream, $msg_number, FT_UID);
517        }
518       
519        function getBody($msg_number){
520                $header = imap_headerinfo($this->mbox_stream, imap_msgno($this->mbox_stream, $msg_number), 80, 255);
521                $body = imap_body($this->mbox_stream, $msg_number, FT_UID);
522                if(($header->Unseen == 'U') || ($header->Recent == 'N')){
523                        imap_clearflag_full($this->mbox_stream, $msg_number, "\\Seen", ST_UID);
524                }
525                return $body;
526        }
527
528        function decode_subject($string){
529                if ((strpos(strtolower($string), '=?iso-8859-1') !== false)
530                        || (strpos(strtolower($string), '=?windows-1252') !== false)){
531                        $elements = imap_mime_header_decode($string);
532                        foreach ($elements as $el)
533                                $return .= $el->text;
534                }
535                else if (strpos(strtolower($string), '=?utf-8') !== false) {
536                        $elements = imap_mime_header_decode($string);
537                        foreach ($elements as $el){
538                                $charset = $el->charset;
539                                $text    = $el->text;
540                                if(!strcasecmp($charset, "utf-8") ||
541                                !strcasecmp($charset, "utf-7")) {
542                                $text = iconv($charset, "ISO-8859-1", $text);
543                        }
544                        $return .= $text;
545                        }
546                }
547                else
548                        $return = $string;
549
550                return $this->remove_accents($return);         
551        }
552}
553// END CLASS
554?>
Note: See TracBrowser for help on using the repository browser.