Changeset 4893
- Timestamp:
- 08/03/11 09:06:59 (13 years ago)
- Location:
- sandbox/expressoMail1_2/MailArchiver/2.2/expressoMail1_2
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
sandbox/expressoMail1_2/MailArchiver/2.2/expressoMail1_2/inc/class.imap_functions.inc.php
r4644 r4893 14 14 'get_folders_list' => True, 15 15 'import_msgs' => True, 16 'msgs_to_archive' => True 16 'msgs_to_archive' => True, 17 'get_offset_gmt' => True 17 18 ); 18 19 … … 116 117 $return['folder'] = $folder; 117 118 118 //Para enviar o offset entre o timezone definido pelo usu ário e GMT119 //Para enviar o offset entre o timezone definido pelo usuï¿œrio e GMT 119 120 $return['offsetToGMT'] = $this->functions->CalculateDateOffset(); 120 121 … … 182 183 //if ($this->prefs['use_important_flag'] ) 183 184 //{ 184 /*Como eu preciso do atributo Importance para saber se o email é185 * importante ou n ão, uso abaixo a função imap_fetchheader e busco186 * o atributo importance nela. Isso faz com que eu acesse o cabe çalho185 /*Como eu preciso do atributo Importance para saber se o email ï¿œ 186 * importante ou nï¿œo, uso abaixo a funᅵᅵo imap_fetchheader e busco 187 * o atributo importance nela. Isso faz com que eu acesse o cabeï¿œalho 187 188 * duas vezes e de duas formas diferentes, mas em contrapartida, eu 188 * n ão preciso reimplementar o método utilizando o fetchheader.189 * Como as mensagens s ão renderizadas em um número pequeno por vez,190 * n ão parece ter perda considerável de performance.189 * nï¿œo preciso reimplementar o mï¿œtodo utilizando o fetchheader. 190 * Como as mensagens sï¿œo renderizadas em um nï¿œmero pequeno por vez, 191 * nï¿œo parece ter perda considerï¿œvel de performance. 191 192 */ 192 193 … … 194 195 $flag = preg_match('/importance *: *(.*)\r/i', $tempHeader, $importance); 195 196 //} 196 // Reimplementado c ódigo para identificação dos e-mails assinados e cifrados197 // no m étodo getMessageType(). Mário César Kolling <mario.kolling@serpro.gov.br>197 // Reimplementado cï¿œdigo para identificaᅵᅵo dos e-mails assinados e cifrados 198 // no mï¿œtodo getMessageType(). Mï¿œrio Cï¿œsar Kolling <mario.kolling@serpro.gov.br> 198 199 $head_array['ContentType'] = $this->getMessageType($msg_number, $tempHeader); 199 200 $head_array['Importance'] = $flag==0?"Normal":$importance[1]; … … 242 243 $to = $header->to; 243 244 $head_array['to'] = array(); 244 if($to[1] && $to[1]->host == ".SYNTAX-ERROR.") { //E-mails que n ão possuem o campo "para", vêm com o recipiente preenchido, porém com um recipiente a mais alegando erro de sintaxe.245 if($to[1] && $to[1]->host == ".SYNTAX-ERROR.") { //E-mails que nï¿œo possuem o campo "para", vï¿œm com o recipiente preenchido, porï¿œm com um recipiente a mais alegando erro de sintaxe. 245 246 $head_array['to']['name'] = $head_array['to']['email'] = NULL; 246 247 } … … 316 317 } 317 318 /** 318 * Fun ção que importa arquivos .eml exportados pelo expresso para a caixa do usuário. Testado apenas319 * com .emls gerados pelo expresso, e o arquivo pode ser um zip contendo v ários emls ou um .eml.319 * Funᅵᅵo que importa arquivos .eml exportados pelo expresso para a caixa do usuï¿œrio. Testado apenas 320 * com .emls gerados pelo expresso, e o arquivo pode ser um zip contendo vï¿œrios emls ou um .eml. 320 321 */ 321 322 function import_msgs($params) { … … 408 409 } 409 410 /* 410 Remove os anexos de uma mensagem. A estrat égia para isso écriar uma mensagem nova sem os anexos, mantendo apenas411 a primeira parte do e-mail, que éo texto, sem anexos.412 O m étodo considera que o email émultpart.411 Remove os anexos de uma mensagem. A estratï¿œgia para isso ï¿œ criar uma mensagem nova sem os anexos, mantendo apenas 412 a primeira parte do e-mail, que ï¿œ o texto, sem anexos. 413 O mï¿œtodo considera que o email ï¿œ multpart. 413 414 */ 414 415 function remove_attachments($params) { … … 420 421 421 422 $headertemp = explode("\n",imap_fetchheader($this->mbox, imap_msgno($this->mbox, $params["msg_num"]))); 422 foreach($headertemp as $head) {//Se eu colocar todo o header do email d á pau no append, então procuro apenas o que interessa.423 foreach($headertemp as $head) {//Se eu colocar todo o header do email dï¿œ pau no append, entï¿œo procuro apenas o que interessa. 423 424 $head1 = explode(":",$head); 424 425 if ( (strtoupper($head1[0]) == "TO") || … … 430 431 431 432 $msg = &new message_components($this->mbox); 432 $msg->fetch_structure($params["msg_num"]);/* O fetchbody tava trazendo o email com problemas na acentua ção.433 Ent ão uso essa classe para verificar a codificação e o charset,434 para que o m étodo decodeBody do expresso possa trazer tudo certinho*/433 $msg->fetch_structure($params["msg_num"]);/* O fetchbody tava trazendo o email com problemas na acentuaᅵᅵo. 434 Entï¿œo uso essa classe para verificar a codificaᅵᅵo e o charset, 435 para que o mï¿œtodo decodeBody do expresso possa trazer tudo certinho*/ 435 436 436 437 $all_body_type = strtolower($msg->file_type[$params["msg_num"]][0]); … … 470 471 ) 471 472 ) 472 , "\\Seen"); //Append do novo email, s ó com header e conteúdo sem anexos.473 , "\\Seen"); //Append do novo email, sï¿œ com header e conteï¿œdo sem anexos. 473 474 }else{ 474 475 $status = imap_append($this->mbox, … … 485 486 ) 486 487 ) 487 , "\\Seen"); //Append do novo email, s ó com header e conteúdo sem anexos.488 , "\\Seen"); //Append do novo email, sï¿œ com header e conteï¿œdo sem anexos. 488 489 } 489 490 … … 555 556 $msg_info = $this->get_info_msg($new_params); 556 557 557 $this->mbox = $this->open_mbox($params['folder']); //N ão sei porque, mas se não abrir de novo a caixa dáerro.558 $this->mbox = $this->open_mbox($params['folder']); //Nï¿œo sei porque, mas se nï¿œo abrir de novo a caixa dï¿œ erro. 558 559 $msg_info['header'] = $this->get_info_head_msg($msg_number); 559 560 … … 1361 1362 $body = $this-> replace_links($body); 1362 1363 1363 //Remo ção de tags <span></span> para correção de erro no firefox1364 //Remoᅵᅵo de tags <span></span> para correᅵᅵo de erro no firefox 1364 1365 $body = mb_eregi_replace("<span><span>","",$body); 1365 1366 $body = mb_eregi_replace("</span></span>","",$body); 1366 //Corre ção para compatibilização com Outlook, ao visualizar a mensagem1367 //Correᅵᅵo para compatibilizaᅵᅵo com Outlook, ao visualizar a mensagem 1367 1368 $body = mb_ereg_replace('<!--\[','<!-- [',$body); 1368 1369 $body = mb_ereg_replace('<!\[endif\]-->', '<![endif]-->', $body); … … 1424 1425 */ 1425 1426 1426 // PHP 5.2.x - Remover assim que poss ível1427 // PHP 5.2.x - Remover assim que possï¿œvel 1427 1428 $body = preg_replace_callback( $pattern, 1428 1429 create_function( … … 1646 1647 foreach($msgs_to_exec as $msg_number) 1647 1648 { 1648 /*A fun ção imap_headerinfo não traz o cabeçalho completo, e sim alguns1649 * atributos do cabe çalho. Como eu preciso do atributo Importance1650 * para saber se o email é importante ou não, uso abaixo a função1649 /*A funᅵᅵo imap_headerinfo nï¿œo traz o cabeï¿œalho completo, e sim alguns 1650 * atributos do cabeï¿œalho. Como eu preciso do atributo Importance 1651 * para saber se o email ï¿œ importante ou nï¿œo, uso abaixo a funᅵᅵo 1651 1652 * imap_fetchheader e busco o atributo importance nela para passar 1652 * para as fun ções ajax. Isso faz com que eu acesse o cabeçalho1653 * para as funᅵᅵes ajax. Isso faz com que eu acesse o cabeï¿œalho 1653 1654 * duas vezes e de duas formas diferentes, mas em contrapartida, eu 1654 * n ão preciso reimplementar o método utilizando o fetchheader.1655 * nï¿œo preciso reimplementar o mï¿œtodo utilizando o fetchheader. 1655 1656 */ 1656 1657 … … 1740 1741 1741 1742 /** 1742 * M étodo que faz a verificação do Content-Type do e-mail e verifica se éum e-mail normal,1743 * Mï¿œtodo que faz a verificaᅵᅵo do Content-Type do e-mail e verifica se ï¿œ um e-mail normal, 1743 1744 * assinado ou cifrado. 1744 * @author M ário César Kolling <mario.kolling@serpro.gov.br>1745 * @param $headers Uma String contendo os Headers do e-mail retornados pela fun ção imap_imap_fetchheader1746 * @param $msg_number O n úmero da mesagem1745 * @author Mï¿œrio Cï¿œsar Kolling <mario.kolling@serpro.gov.br> 1746 * @param $headers Uma String contendo os Headers do e-mail retornados pela funᅵᅵo imap_imap_fetchheader 1747 * @param $msg_number O nï¿œmero da mesagem 1747 1748 * @return Retorna o tipo da mensagem (normal, signature, cipher). 1748 1749 */ … … 1766 1767 * Metodo que retorna todas as pastas do usuario logado. 1767 1768 * @param $params array opcional para repassar os argumentos ao metodo. 1768 * Se usar $params['noSharedFolders'] = true, ira retornar todas as pastas do usu ário logado,1769 * Se usar $params['noSharedFolders'] = true, ira retornar todas as pastas do usuï¿œrio logado, 1769 1770 * excluindo as compartilhadas para ele. 1770 * Se usar $params['folderType'] = "default" ir áretornar somente as pastas defaults1771 * Se usar $params['folderType'] = "personal" ir áretornar somente as pastas pessoais1772 * Se usar $params['folderType'] = null ir áretornar todas as pastas1771 * Se usar $params['folderType'] = "default" irï¿œ retornar somente as pastas defaults 1772 * Se usar $params['folderType'] = "personal" irï¿œ retornar somente as pastas pessoais 1773 * Se usar $params['folderType'] = null irï¿œ retornar todas as pastas 1773 1774 * @return Retorna um array contendo as seguintes informacoes de cada pasta: folder_unseen, 1774 1775 * folder_id, folder_name, folder_parent e folder_hasChildren. … … 2131 2132 { 2132 2133 $body = $params['body']; 2133 //Compatibiliza ção com Outlook, ao encaminhar a mensagem2134 //Compatibilizaᅵᅵo com Outlook, ao encaminhar a mensagem 2134 2135 $body = mb_ereg_replace('<!--\[','<!-- [',$body); 2135 2136 } … … 3464 3465 function remove_accents($string) { 3465 3466 return strtr($string, 3466 "? Ó??ó?Ý?úÁÀÃÂÄÇÉÈÊËÍÌ?ÎÏÑÕÔÓÒÖÚÙ?ÛÜ?áàãâäçéèêëíì?îïñóòõôöúù?ûüýÿ",3467 "?ï¿œ??ï¿œ?ï¿œ?ᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵ?ᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵ?ᅵᅵ?ᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵ?ᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵ?ᅵᅵᅵᅵ", 3467 3468 "SOZsozYYuAAAAACEEEEIIIIINOOOOOUUUUUsaaaaaceeeeiiiiinooooouuuuuyy"); 3468 3469 } … … 3948 3949 3949 3950 //Por Bruno Costa(bruno.vieira-costa@serpro.gov.br - Insere emails no imap a partir do fonte do mesmo. Se o argumento timestamp for passado ele utiliza do script python 3950 ///expressoMail1_2/imap.py para inserir uma msg com o hor ário correto pois isso não é porssível com a função imap_append do php.3951 ///expressoMail1_2/imap.py para inserir uma msg com o horï¿œrio correto pois isso nï¿œo ï¿œ porssï¿œvel com a funᅵᅵo imap_append do php. 3951 3952 3952 3953 function insert_email($source,$folder,$timestamp,$flags){ … … 4004 4005 if (version_compare(PHP_VERSION, '5.2.0', '>=')){ 4005 4006 if(!$source = base64_decode($source,true)) 4006 return "error ".$source."Espa ços ".$i;4007 return "error ".$source."Espaï¿œos ".$i; 4007 4008 4008 4009 } 4009 4010 else { 4010 4011 if(!$source = base64_decode($source)) 4011 return "error ".$source."Espa ços ".$i;4012 return "error ".$source."Espaï¿œos ".$i; 4012 4013 } 4013 4014 … … 4045 4046 4046 4047 //Por Bruno Costa(bruno.vieira-costa@serpro.gov.br - Trata fontes de emails enviados via POST para o servidor por um xmlhttprequest, as partes codificados com 4047 //Base64 os "+" s ão substituidos por " " no envio e essa função arruma esse efeito.4048 //Base64 os "+" sï¿œo substituidos por " " no envio e essa funᅵᅵo arruma esse efeito. 4048 4049 4049 4050 function treat_base64_from_post($source){ … … 4071 4072 } 4072 4073 4073 //Por Bruno Costa(bruno.vieira-costa@serpro.gov.br - Recebe os fontes dos emails a serem desarquivados, separa e envia cada um para fun ção insert_mail.4074 //Por Bruno Costa(bruno.vieira-costa@serpro.gov.br - Recebe os fontes dos emails a serem desarquivados, separa e envia cada um para funᅵᅵo insert_mail. 4074 4075 4075 4076 function unarchive_mail($params) … … 4139 4140 return $data; 4140 4141 } 4142 4143 //MailArchiver -> get offsettogmt as a global javascript variable, invoked at "main.js", init() 4144 function get_offset_gmt(){ 4145 return($this->functions->CalculateDateOffset()); 4146 } 4141 4147 } 4142 4148 ?> -
sandbox/expressoMail1_2/MailArchiver/2.2/expressoMail1_2/js/draw_api.js
r4778 r4893 877 877 if ((headers_msgs[i].Unseen == 'U') || (headers_msgs[i].Recent == 'N')) 878 878 f_unseen++; 879 //alert('adicionando mensagem ' + i + ' de ' + headers_msgs.length + '[' +headers_msgs[i].attachment+ ']') 879 880 tr_element = make_tr_message(headers_msgs[i], msg_folder, headers_msgs.offsetToGMT); 880 881 if (tr_element){ … … 979 980 td_element2 = document.createElement("TD"); 980 981 td_element2.className = "td_msg"; 981 td_element2.setAttribute("width", "2%"); 982 td_element2.setAttribute("width", "2%"); 982 983 if (headers_msgs.attachment && headers_msgs.attachment.number_attachments > 0) 983 984 td_element2.innerHTML = "<img src ='templates/"+template+"/images/clip.gif' title='" + url_decode(headers_msgs.attachment.names) + "'>"; … … 1173 1174 // Using offset between user defined timezone and GMT 1174 1175 // Date object converts time to local timezone, so we have to adjust it 1175 udate_local = headers_msgs.udate*1000 + offsetToGMT*1000 + today.getTimezoneOffset()*60*1000; 1176 // MailArchiver: use global user preference from GMT to calculate time slice instead message serialized based 1177 //udate_local = headers_msgs.udate*1000 + offsetToGMT*1000 + today.getTimezoneOffset()*60*1000; 1178 udate_local = headers_msgs.udate*1000 + gmtoffset*1000 + today.getTimezoneOffset()*60*1000; 1176 1179 date_msg = new Date(udate_local); 1177 1180 } 1178 1179 1181 if (today.getTime() - date_msg.getTime() < 86400000) 1180 1182 td_element5.innerHTML = norm(date_msg.getHours()) + ':' + norm(date_msg.getMinutes()); -
sandbox/expressoMail1_2/MailArchiver/2.2/expressoMail1_2/js/mail_archiver.js
r4878 r4893 880 880 } 881 881 882 MailArchiver.prototype.toExpressoDate = function(data){ 883 var ndate = new Date(data); 884 //ndate.setTime(data); 885 var odate = zeroFill(ndate.getDate()) + '/' + zeroFill(ndate.getMonth()+1) + '/' + zeroFill(ndate.getFullYear() + ' ' + zeroFill(ndate.getHours()) + ':' + zeroFill(ndate.getMinutes()) + ':' + zeroFill(ndate.getSeconds())); 886 return(odate); 887 } 888 882 889 MailArchiver.prototype.toExpressoFlags = function(data){ 883 890 if((data.length > 0) && (typeof(data) != 'undefined')){ … … 916 923 917 924 MailArchiver.prototype.toExpressoHeader = function(data){ 918 var tplHeader = 'a:1 9:{'925 var tplHeader = 'a:16:{' 919 926 + 's:11:"ContentType";' 920 927 + 's:' + data.getContentType().length + ':"' + data.getContentType() + '";' … … 924 931 + 's:5:"udate";' 925 932 + 'i:' + parseInt(data.getDate()/1000) + ';' 926 + 's:11:"offsetToGMT";'927 + 'i:-10800;'928 933 + 's:9:"timestamp";' 929 934 + 'i:' + parseInt(data.getDate()/1000) + ';' 930 + 's:9:"smalldate";'931 + 's:10:"01/04/2011";'932 + 's:8:"aux_date";'933 + 's:1:" ";'934 935 + 's:4:"from";' 935 936 + expresso_mail_archive.toExpressoAddress(data.getFrom()) … … 943 944 + expresso_mail_archive.toExpressoAttachmentsHeader(data.getAttachments()) 944 945 + '}'; 945 //window.alert('Serialized data\n\n' + tplHeader );946 //window.alert('Serialized data\n\n' + tplHeader + '\ngmtoffset: ' + gmtoffset); 946 947 return(tplHeader); 947 948 } -
sandbox/expressoMail1_2/MailArchiver/2.2/expressoMail1_2/js/main.js
r4665 r4893 14 14 15 15 function init(){ 16 16 if (!is_ie) 17 17 Element('tableDivAppbox').width = '100%'; 18 18 … … 24 24 25 25 } 26 //MailArchiver save offset to gmt user preference data to list correctly date/time from messages list 27 var save_gmtoffset = function(data){ 28 gmtoffset = data; 29 } 30 26 31 var save_preferences = function(data){ 27 32 … … 66 71 cExecute ("$this.imap_functions.get_folders_list&onload=true", update_menu); 67 72 cExecute ("$this.db_functions.get_dropdown_contacts", save_contacts); //Save contacts needs preferences. 73 68 74 if(preferences.hide_folders == "1") 69 75 Element('divAppboxHeader').innerHTML = title_app_menu; … … 101 107 102 108 cExecute ("$this.functions.get_preferences", save_preferences); 109 //MailArchiver invoke get_offset_gmt from imap functions 110 cExecute ("$this.imap_functions.get_offset_gmt", save_gmtoffset); 111 103 112 cExecute ("phpgwapi.browser.isMobile", function( data ) 104 113 {
Note: See TracChangeset
for help on using the changeset viewer.