[4966] | 1 | <!-- |
---|
| 2 | /* |
---|
| 3 | * MailArchiver Expresso Pattern serialized format |
---|
| 4 | * --- |
---|
| 5 | * This resources intended to be used on converting data formats, to make |
---|
| 6 | * it work on ExpressoMail pattern. |
---|
| 7 | * |
---|
| 8 | * Basicly, it gets all the service return data (almost enveloped at SOAP |
---|
| 9 | * webservices spec i.e XML data), and then transform it to the serialized |
---|
| 10 | * pattern used by Expresso (somethink almost close or near JSON Javascript |
---|
| 11 | * objects). |
---|
| 12 | * |
---|
| 13 | * @author Fernando Wendt [fernando-alberto.wendt@serpro.gov.br] |
---|
| 14 | * |
---|
| 15 | * @status under development |
---|
| 16 | * |
---|
| 17 | */ |
---|
| 18 | var MAPattern = function(){ |
---|
| 19 | |
---|
| 20 | } |
---|
| 21 | // -----------------------------------SERIALIZED DATA TEMPLATES ---------------- |
---|
| 22 | MAPattern.prototype.toExpressoAddress = function(data){ |
---|
| 23 | if((typeof(data) != 'undefined') && (data.length > 0)){ |
---|
| 24 | var Fromdata = eval("(" + data + ")"); |
---|
[5002] | 25 | if(Fromdata.mailbox){ |
---|
[4966] | 26 | //just one address to pharse: length is undefined |
---|
| 27 | if(typeof(Fromdata.mailbox.length) == 'undefined'){ |
---|
| 28 | var dataName = Fromdata.mailbox["@name"]; |
---|
| 29 | var dataEmail = Fromdata.mailbox["@localPart"] + '@' + Fromdata.mailbox["@domain"]; |
---|
| 30 | if(dataName == 'null') |
---|
| 31 | dataName = dataEmail; |
---|
| 32 | } |
---|
| 33 | //address list to pharse, but to header(folder list messages action), only first metters |
---|
| 34 | else{ |
---|
| 35 | var dataName = Fromdata.mailbox[0]["@name"]; |
---|
| 36 | var dataEmail = Fromdata.mailbox[0]["@localPart"] + '@' + Fromdata.mailbox[0]["@domain"]; |
---|
| 37 | if(dataName == 'null') |
---|
| 38 | dataName = dataEmail; |
---|
| 39 | } |
---|
| 40 | |
---|
| 41 | var tplFrom = 'a:3:{' |
---|
| 42 | + 's:4:"name";' |
---|
| 43 | + 's:'+dataName.length+':"'+dataName+'";' |
---|
| 44 | + 's:5:"email";' |
---|
| 45 | + 's:'+dataEmail.length+':"'+dataEmail+'";' |
---|
| 46 | + 's:4:"full";' |
---|
| 47 | + 's:'+(dataName.length + dataEmail.length + 3)+':"'+dataName+' <'+dataEmail+'>";' |
---|
| 48 | + '}'; |
---|
| 49 | } |
---|
| 50 | //Data adrress from mailbox is empty, null, or canot be correctly returned by service invocation (will return 'unknow mailbox' string) |
---|
| 51 | else { |
---|
| 52 | tplFrom = 'a:2{s:4:"name";s:14:"Unknow mailbox";s:5:"email";s:15:"Unknow_mailbox";}'; |
---|
| 53 | } |
---|
[5002] | 54 | } |
---|
| 55 | else{ |
---|
| 56 | tplFrom = 'a:2{s:4:"name";s:14:"Unknow mailbox";s:5:"email";s:15:"Unknow_mailbox";}'; |
---|
| 57 | } |
---|
[4966] | 58 | return(tplFrom); |
---|
| 59 | } |
---|
| 60 | |
---|
| 61 | MAPattern.prototype.toExpressoSubject = function(data){ |
---|
| 62 | if((typeof(data) != 'undefined') && (data.length > 0)){ |
---|
| 63 | var tplSbj = 's:'+data.length+':"'+data+'";' |
---|
| 64 | } |
---|
| 65 | //Subject is empty, null, or canot be correctly returned by service invocation (will return 'Message without subject' string) |
---|
| 66 | else { |
---|
| 67 | tplSbj = 's:25:"[Message without subject]";'; |
---|
| 68 | } |
---|
| 69 | return(tplSbj); |
---|
| 70 | } |
---|
| 71 | |
---|
| 72 | MAPattern.prototype.toExpressoAttachmentsHeader = function(data){ |
---|
| 73 | if((typeof(data) != 'undefined') && (data.length > 0)){ |
---|
| 74 | var Attdata = eval("(" + data + ")"); |
---|
| 75 | if(typeof(Attdata.attachment) != 'undefined'){ |
---|
| 76 | var tplAttatch = 'a:2:{' |
---|
| 77 | + 's:5:"names";'; |
---|
| 78 | //More than 1 attachment - because length will be 'undefined' if just one exists |
---|
| 79 | if(Attdata.attachment.length > 0){ |
---|
| 80 | var strnamesatt = ""; |
---|
| 81 | for(var x=0; x<Attdata.attachment.length; x++){ |
---|
| 82 | var attId = Attdata.attachment[x]["@id"]; |
---|
| 83 | var attName = Attdata.attachment[x]["@name"]; |
---|
| 84 | var attSize = Attdata.attachment[x]["@size"]; |
---|
| 85 | var attMediaType = Attdata.attachment[x]["@mediaType"]; |
---|
| 86 | var attSubType = Attdata.attachment[x]["@subType"]; |
---|
| 87 | var attEncoding = Attdata.attachment[x]["@encoding"]; |
---|
| 88 | |
---|
| 89 | strnamesatt += attName + ', '; |
---|
| 90 | } |
---|
| 91 | strnamesatt = strnamesatt.substr(0, strnamesatt.length-2); |
---|
| 92 | var intnumberatt = Attdata.attachment.length; |
---|
| 93 | } |
---|
| 94 | //Just one attachment |
---|
| 95 | else{ |
---|
| 96 | var attId = Attdata.attachment["@id"]; |
---|
| 97 | var attName = Attdata.attachment["@name"]; |
---|
| 98 | var attSize = Attdata.attachment["@size"]; |
---|
| 99 | var attMediaType = Attdata.attachment["@mediaType"]; |
---|
| 100 | var attSubType = Attdata.attachment["@subType"]; |
---|
| 101 | var attEncoding = Attdata.attachment["@encoding"]; |
---|
| 102 | strnamesatt = attName; |
---|
| 103 | var intnumberatt = 1; |
---|
| 104 | } |
---|
| 105 | |
---|
| 106 | tplAttatch += 's:'+strnamesatt.length+':"'+strnamesatt+'";' |
---|
| 107 | + 's:18:"number_attachments";i:' +intnumberatt+';' |
---|
| 108 | + '}'; |
---|
| 109 | } |
---|
| 110 | else { |
---|
| 111 | tplAttatch = 'a:2:{s:5:"names";b:0;s:18:"number_attachments";i:0;}'; |
---|
| 112 | } |
---|
| 113 | } |
---|
| 114 | //No attatch data |
---|
| 115 | else { |
---|
| 116 | tplAttatch = 'a:2:{s:5:"names";b:0;s:18:"number_attachments";i:0;}'; |
---|
| 117 | } |
---|
| 118 | return(tplAttatch); |
---|
| 119 | } |
---|
| 120 | |
---|
| 121 | MAPattern.prototype.toExpressoDate = function(data){ |
---|
| 122 | var ndate = new Date(data); |
---|
| 123 | var odate = zeroFill(ndate.getDate()) + '/' + zeroFill(ndate.getMonth()+1) + '/' + zeroFill(ndate.getFullYear() + ' ' + zeroFill(ndate.getHours()) + ':' + zeroFill(ndate.getMinutes()) + ':' + zeroFill(ndate.getSeconds())); |
---|
| 124 | return(odate); |
---|
| 125 | } |
---|
| 126 | |
---|
| 127 | MAPattern.prototype.toExpressoFlags = function(data){ |
---|
| 128 | if((data.length > 0) && (typeof(data) != 'undefined')){ |
---|
| 129 | var Tagdata = eval("(" + data + ")"); |
---|
[5002] | 130 | if(typeof(Tagdata.tag) != 'undefined'){ |
---|
[4966] | 131 | //More than 1 attachment: length will be 'undefined' if just one exists |
---|
| 132 | if(Tagdata.tag.length >= 0){ |
---|
| 133 | var strnamestag = ""; |
---|
| 134 | for(var x=0; x<Tagdata.tag.length; x++){ |
---|
| 135 | var tagvalue = Tagdata.tag[x]["@value"]; |
---|
| 136 | if(tagvalue.toLowerCase().indexOf('recent')!= -1) |
---|
| 137 | strnamestag += 's:6:"Recent";s:1:"N";'; |
---|
| 138 | if(tagvalue.toLowerCase().indexOf('unseen')!= -1) |
---|
| 139 | strnamestag += 's:6:"Unseen";s:1:"U";'; |
---|
| 140 | if(tagvalue.toLowerCase().indexOf('deleted')!= -1) |
---|
| 141 | strnamestag += 's:7:"Deleted";s:1:"D";'; |
---|
| 142 | if(tagvalue.toLowerCase().indexOf('answered')!= -1) |
---|
| 143 | strnamestag += 's:8:"Answered";s:1:"A";'; |
---|
| 144 | if(tagvalue.toLowerCase().indexOf('forwarded')!= -1) |
---|
| 145 | strnamestag += 's:9:"Forwarded";s:1:"F";'; |
---|
| 146 | if(tagvalue.toLowerCase().indexOf('draft')!= -1) |
---|
| 147 | strnamestag += 's:5:"Draft";s:1:"X";'; |
---|
| 148 | if(tagvalue.toLowerCase().indexOf('importance')!= -1) |
---|
| 149 | strnamestag += 's:10:"Importance";s:4:"High";'; |
---|
| 150 | if(tagvalue.toLowerCase().indexOf('flagged')!= -1) |
---|
| 151 | strnamestag += 's:7:"Flagged";s:1:"F";'; |
---|
| 152 | } |
---|
| 153 | var tplTags = strnamestag; |
---|
[5002] | 154 | } |
---|
| 155 | |
---|
| 156 | else{ |
---|
[4966] | 157 | var strnamestag = ""; |
---|
| 158 | var tagvalue = Tagdata.tag["@value"]; |
---|
| 159 | if(tagvalue.toLowerCase().indexOf('recent')!= -1) |
---|
| 160 | strnamestag += 's:6:"Recent";s:1:"N";'; |
---|
| 161 | if(tagvalue.toLowerCase().indexOf('unseen')!= -1) |
---|
| 162 | strnamestag += 's:6:"Unseen";s:1:"U";'; |
---|
| 163 | if(tagvalue.toLowerCase().indexOf('deleted')!= -1) |
---|
| 164 | strnamestag += 's:7:"Deleted";s:1:"D";'; |
---|
| 165 | if(tagvalue.toLowerCase().indexOf('answered')!= -1) |
---|
| 166 | strnamestag += 's:8:"Answered";s:1:"A";'; |
---|
| 167 | if(tagvalue.toLowerCase().indexOf('forwarded')!= -1) |
---|
| 168 | strnamestag += 's:9:"Forwarded";s:1:"F"'; |
---|
| 169 | if(tagvalue.toLowerCase().indexOf('draft')!= -1) |
---|
| 170 | strnamestag += 's:5:"Draft";s:1:"X";'; |
---|
| 171 | if(tagvalue.toLowerCase().indexOf('importance')!= -1) |
---|
| 172 | strnamestag += 's:10:"Importance";s:4:"High";'; |
---|
| 173 | if(tagvalue.toLowerCase().indexOf('flagged')!= -1) |
---|
| 174 | strnamestag += 's:7:"Flagged";s:1:"F";'; |
---|
| 175 | var tplTags = strnamestag; |
---|
[5002] | 176 | } |
---|
| 177 | } |
---|
| 178 | //Something is wrong with tags: return defaults is no one tag |
---|
| 179 | else{ |
---|
[4966] | 180 | tplTags = 's:6:"Recent";s:1:" ";s:6:"Unseen";s:1:" ";s:7:"Deleted";s:1:" ";s:8:"Answered";s:1:" ";s:9:"Forwarded";s:1:" ";s:5:"Draft";s:1:" ";s:10:"Importance";s:6:"Normal";s:7:"Flagged";b:0;'; |
---|
[5002] | 181 | } |
---|
| 182 | return(tplTags); |
---|
[4966] | 183 | } |
---|
| 184 | } |
---|
| 185 | |
---|
| 186 | MAPattern.prototype.toExpressoHeader = function(data){ |
---|
| 187 | var tplHeader = 'a:16:{' |
---|
| 188 | + 's:11:"ContentType";' |
---|
| 189 | + 's:' + data.getContentType().length + ':"' + data.getContentType() + '";' |
---|
| 190 | + expresso_mail_archive.pattern.toExpressoFlags(data.getTags()) |
---|
| 191 | + 's:10:"msg_number";' |
---|
| 192 | + 's:'+data.getId().length+':"'+data.getId()+'";' |
---|
| 193 | + 's:5:"udate";' |
---|
| 194 | + 'i:' + parseInt(data.getDate()/1000) + ';' |
---|
| 195 | + 's:9:"timestamp";' |
---|
| 196 | + 'i:' + parseInt(data.getDate()/1000) + ';' |
---|
| 197 | + 's:4:"from";' |
---|
| 198 | + expresso_mail_archive.pattern.toExpressoAddress(data.getFrom()) |
---|
| 199 | + 's:2:"to";' |
---|
| 200 | + expresso_mail_archive.pattern.toExpressoAddress(data.getTo()) |
---|
| 201 | + 's:7:"subject";' |
---|
| 202 | + expresso_mail_archive.pattern.toExpressoSubject(data.getSubject()) |
---|
| 203 | + 's:4:"Size";' |
---|
| 204 | + 'i:'+data.getSize()+';' |
---|
| 205 | + 's:10:"attachment";' |
---|
| 206 | + expresso_mail_archive.pattern.toExpressoAttachmentsHeader(data.getAttachments()) |
---|
| 207 | + '}'; |
---|
| 208 | return(tplHeader); |
---|
| 209 | } |
---|
| 210 | |
---|
| 211 | MAPattern.prototype.toExpressoBody = function(mheader){ |
---|
| 212 | var tplBody = 'a:33:{' |
---|
| 213 | + 's:4:"body";N;' |
---|
| 214 | + 's:11:"attachments";N;' |
---|
| 215 | + 's:6:"thumbs";N;' |
---|
| 216 | + 's:9:"signature";N;' |
---|
| 217 | + 's:10:"Importance";s:6:"Normal";' |
---|
| 218 | + 's:6:"Recent";s:1:" ";' |
---|
| 219 | + 's:6:"Unseen";s:1:"N";' |
---|
| 220 | + 's:7:"Deleted";s:1:" ";' |
---|
| 221 | + 's:7:"Flagged";b:0;' |
---|
| 222 | + 's:8:"Answered";s:1:" ";' |
---|
| 223 | + 's:5:"Draft";s:1:" ";' |
---|
| 224 | + 's:10:"msg_number";s:4:"2241";' |
---|
| 225 | + 's:10:"msg_folder";s:5:"INBOX";' |
---|
| 226 | + 's:5:"udate";s:5:"10:01";' |
---|
| 227 | + 's:7:"msg_day";s:10:"10/05/2011";' |
---|
| 228 | + 's:8:"msg_hour";s:5:"10:02";' |
---|
| 229 | + 's:8:"fulldate";s:36:"10/05/2011 10:01 (05:35 horas atras)";' |
---|
| 230 | + 's:9:"smalldate";s:5:"10:04";' |
---|
| 231 | + 's:4:"from";N;' |
---|
| 232 | + 's:6:"sender";a:3:{' |
---|
| 233 | + 's:4:"name";N;' |
---|
| 234 | + 's:5:"email";s:46:"listaregional-pae-bounces@grupos.serpro.gov.br";' |
---|
| 235 | + 's:4:"full";s:46:"listaregional-pae-bounces@grupos.serpro.gov.br";' |
---|
| 236 | + '}' |
---|
| 237 | + 's:10:"toaddress2";s:32:"comunicacao.social@serpro.gov.br";' |
---|
| 238 | + 's:2:"cc";N;' |
---|
| 239 | + 's:3:"bcc";N;' |
---|
| 240 | + 's:8:"reply_to";N;' |
---|
| 241 | + 's:7:"subject";N;' |
---|
| 242 | + 's:4:"Size";s:4:"1234";' |
---|
| 243 | + 's:15:"reply_toaddress";s:45:"com.social <comunicacao.social@serpro.gov.br>";' |
---|
| 244 | + 's:9:"timestamp";i:1305032476;' |
---|
| 245 | + 's:5:"login";i:944889240;' |
---|
| 246 | + 's:6:"header";a:16:{' |
---|
| 247 | + 's:11:"ContentType";s:6:"normal";' |
---|
| 248 | + 's:10:"Importance";s:6:"Normal";' |
---|
| 249 | + 's:6:"Recent";s:1:" ";' |
---|
| 250 | + 's:6:"Unseen";s:1:"N";' |
---|
| 251 | + 's:8:"Answered";s:1:" ";' |
---|
| 252 | + 's:5:"Draft";s:1:" ";' |
---|
| 253 | + 's:7:"Deleted";s:1:" ";' |
---|
| 254 | + 's:7:"Flagged";b:0;' |
---|
| 255 | + 's:10:"msg_number";s:4:"2251";' |
---|
| 256 | + 's:5:"udate";s:10:"10/05/2011";' |
---|
| 257 | + 's:11:"offsetToGMT";i:-10800;' |
---|
| 258 | + 's:8:"aux_date";N;' |
---|
| 259 | + 's:4:"from";a:2:{' |
---|
| 260 | + 's:4:"name";s:10:"com.social";' |
---|
| 261 | + 's:5:"email";s:32:"comunicacao.social@serpro.gov.br";' |
---|
| 262 | + '}' |
---|
| 263 | + 's:2:"to";a:2:{' |
---|
| 264 | + 's:4:"name";s:32:"comunicacao.social@serpro.gov.br";' |
---|
| 265 | + 's:5:"email";s:32:"comunicacao.social@serpro.gov.br";' |
---|
| 266 | + '}' |
---|
| 267 | + 's:7:"subject";s:28:"Primeira leitura - 10/5/2011";' |
---|
| 268 | + 's:4:"Size";N;' |
---|
| 269 | + 's:10:"attachment";a:2:{' |
---|
| 270 | + 's:5:"names";b:0;' |
---|
| 271 | + 's:18:"number_attachments";i:0;' |
---|
| 272 | + '}' |
---|
| 273 | + '}' |
---|
| 274 | + 's:12:"array_attach";N;' |
---|
| 275 | + 's:15:"url_export_file";s:160:"inc/gotodownload.php?idx_file=/var/www/expressov2/expressoMail1_2/inc/../tmpLclAtt/source_38a3e960115351578aa182ae1d6c2b7b.txt&newfilename=fonte_da_mensagem.txt";' |
---|
| 276 | + 's:2:"to";N;' |
---|
| 277 | + '}'; |
---|
| 278 | return(tplBody); |
---|
| 279 | } |
---|
| 280 | |
---|
| 281 | MAPattern.prototype.toExpressoMailDataHeader = function(msgid){ |
---|
| 282 | var tplHMail = ""; |
---|
| 283 | var tmpHead = expresso_mail_archive.getMessageHeaders(msgid); |
---|
| 284 | window.alert(tmpHead); |
---|
| 285 | return tplHMail; |
---|
| 286 | } |
---|
| 287 | |
---|
| 288 | MAPattern.prototype.toExpressoMailData = function(msg){ |
---|
| 289 | var tplBMail = ""; |
---|
| 290 | |
---|
| 291 | return(tplBMail); |
---|
| 292 | } |
---|
| 293 | |
---|
| 294 | MAPattern.prototype.toExpressoMailAttachment = function(att){ |
---|
| 295 | var objMsg = expresso_mail_archive.getMessageServiceObject(att); |
---|
| 296 | var attData = objMsg.getAttachments(); |
---|
| 297 | var objAtt = eval("(" + attData + ")"); |
---|
| 298 | var srlData = ""; |
---|
| 299 | |
---|
| 300 | //There are attachments |
---|
| 301 | if(typeof(objAtt.attachment) != 'undefined'){ |
---|
| 302 | if(typeof(objAtt.attachment.length) != 'undefined'){ |
---|
| 303 | srlData = 's:11:"attachments";a:' + objAtt.attachment.length + ':{'; |
---|
| 304 | for(var m=0; m<objAtt.attachment.length; m++){ |
---|
| 305 | srlData += 's:1:"' + m + '";' |
---|
| 306 | + 'a:4:{' |
---|
| 307 | + 's:3:"pid";s:' + objAtt.attachment[m]["@id"].length + ':"' + objAtt.attachment[m]["@id"] + '";' |
---|
| 308 | + 's:4:"name";s:' + objAtt.attachment[m]["@name"].length + ':"' + objAtt.attachment[m]["@name"] + '";' |
---|
| 309 | + 's:8:"encoding";s:' + objAtt.attachment[m]["@encoding"].length + ':"' + objAtt.attachment[m]["@encoding"] + '";' |
---|
| 310 | + 's:5:"fsize";i:' + objAtt.attachment[m]["@size"] + ';' |
---|
| 311 | + '}'; |
---|
| 312 | } |
---|
| 313 | } |
---|
| 314 | //just one att |
---|
| 315 | else{ |
---|
| 316 | srlData = 's:11:"attachments";a:1:{'; |
---|
| 317 | srlData += 's:1:"0";' |
---|
| 318 | + 'a:4:{' |
---|
| 319 | + 's:3:"pid";s:' + objAtt.attachment["@id"].length + ':"' + objAtt.attachment["@id"] + '";' |
---|
| 320 | + 's:4:"name";s:' + objAtt.attachment["@name"].length + ':"' + objAtt.attachment["@name"] + '";' |
---|
| 321 | + 's:8:"encoding";s:' + objAtt.attachment["@encoding"].length + ':"' + objAtt.attachment["@encoding"] + '";' |
---|
| 322 | + 's:5:"fsize";i:' + objAtt.attachment["@size"] + ';' |
---|
| 323 | + '}'; |
---|
| 324 | } |
---|
| 325 | srlData += '}'; |
---|
| 326 | } |
---|
| 327 | //No attachments data |
---|
| 328 | else{ |
---|
| 329 | srlData = 's:11:"attachments";N;'; |
---|
| 330 | } |
---|
| 331 | return(srlData); |
---|
| 332 | } |
---|
| 333 | |
---|
| 334 | MAPattern.prototype.toExpressoMailThumbs = function(thb){ |
---|
| 335 | var objMsg = expresso_mail_archive.getMessageServiceObject(thb); |
---|
| 336 | var attData = objMsg.getAttachments(); |
---|
| 337 | var objAtt = eval("(" + attData + ")"); |
---|
| 338 | var srlData = ""; |
---|
| 339 | var arrThumbs = new Array(); |
---|
| 340 | if(typeof(objAtt.attachment) != 'undefined'){ |
---|
| 341 | //more than 1 att |
---|
| 342 | if(typeof(objAtt.attachment.length) != 'undefined'){ |
---|
| 343 | for(var m=0; m<objAtt.attachment.length; m++){ |
---|
| 344 | //Only images has thums |
---|
| 345 | if(objAtt.attachment[m]["@mediaType"].toLowerCase() == 'image') |
---|
| 346 | arrThumbs.push(objAtt.attachment[m]); |
---|
| 347 | } |
---|
| 348 | } |
---|
| 349 | //just one att data |
---|
| 350 | else{ |
---|
| 351 | if(objAtt.attachment["@mediaType"].toLowerCase() == 'image') |
---|
| 352 | arrThumbs.push(objAtt.attachment); |
---|
| 353 | } |
---|
| 354 | //There are thumbs |
---|
| 355 | if(arrThumbs.length > 0){ |
---|
| 356 | srlData = 's:6:"thumbs";a:'+arrThumbs.length+':{' |
---|
| 357 | for(var n=0; n<arrThumbs.length; n++){ |
---|
[5002] | 358 | var thumblink = '<a onMouseDown=\'save_image(event,this,"image/'+arrThumbs[n]["@subType"]+'")\' href=\'#INBOX;;2893;;0;;2;;'+arrThumbs[n]["@encoding"]+'\' onClick="window.open(\''+mail_archive_protocol+'://'+mail_archive_host+':'+mail_archive_port+'/part/'+arrThumbs[n]["@id"]+'\',\'mywindow\',\'width=700,height=600,scrollbars=yes\');"><IMG id=\'INBOX;;2893;;0;;2;;'+arrThumbs[n]["@encoding"]+'\' style=\'border:2px solid #fde7bc;padding:5px\' title=\'Clique na imagem para Ampliar.\' src="'+mail_archive_protocol+'://'+mail_archive_host+':'+mail_archive_port+'/part/'+arrThumbs[n]["@id"]+'/thumb/120"></a>'; |
---|
[4966] | 359 | srlData += 's:1:"'+n+'";s:'+thumblink.length+':"'+thumblink+'";' |
---|
| 360 | } |
---|
| 361 | srlData += '}'; |
---|
| 362 | } |
---|
| 363 | //No thumbs |
---|
| 364 | else |
---|
| 365 | srlData = 's:6:"thumbs";N;'; |
---|
| 366 | } |
---|
| 367 | //Something is wrong with attachments thumb behavior: return no thumbs |
---|
| 368 | else{ |
---|
| 369 | srlData = 's:6:"thumbs";N;'; |
---|
| 370 | } |
---|
| 371 | return(srlData); |
---|
| 372 | } |
---|
| 373 | |
---|
| 374 | MAPattern.prototype.toExpressoMailSignature = function(sgn){ |
---|
| 375 | return('s:9:"signature";N;'); |
---|
| 376 | } |
---|
| 377 | |
---|
| 378 | MAPattern.prototype.toExpressoMailBaseHeaders = function(hdr){ |
---|
| 379 | var defMailHeaders = {'recent':' ','unseen': ' ','deleted': ' ','answered': ' ','draft': ' ','flagged': ' '}; |
---|
| 380 | var objMsg = expresso_mail_archive.getMessageServiceObject(hdr); |
---|
| 381 | var tagData = objMsg.getTags(); |
---|
| 382 | var objTag = eval('(' + tagData + ')'); |
---|
| 383 | var tplHMail = ""; |
---|
| 384 | |
---|
| 385 | //More than 1 attachment - because length will be 'undefined' if just one exists |
---|
| 386 | if(objTag.tag.length >= 0){ |
---|
| 387 | |
---|
| 388 | //flaggs the tags |
---|
| 389 | for(var k=0; k<objTag.tag.length; k++){ |
---|
| 390 | for(var j in defMailHeaders){ |
---|
| 391 | var tagvalue = objTag.tag[k]["@value"].toLowerCase(); |
---|
| 392 | if((tagvalue == j) && (defMailHeaders[j] != true)) |
---|
| 393 | defMailHeaders[j] = true; |
---|
| 394 | else |
---|
| 395 | defMailHeaders[j] = false; |
---|
| 396 | } |
---|
| 397 | } |
---|
| 398 | |
---|
| 399 | //serialize all needed headers |
---|
| 400 | if(defMailHeaders["recent"] == true) |
---|
| 401 | tplHMail += 's:6:"Recent";s:1:"N";'; |
---|
| 402 | else |
---|
| 403 | tplHMail += 's:6:"Recent";s:1:" ";'; |
---|
| 404 | if(defMailHeaders["unseen"] == true) |
---|
| 405 | tplHMail += 's:6:"Unseen";s:1:"U";'; |
---|
| 406 | else |
---|
| 407 | tplHMail += 's:6:"Unseen";s:1:" ";'; |
---|
| 408 | if(defMailHeaders["deleted"] == true) |
---|
| 409 | tplHMail += 's:7:"Deleted";s:1:"D";'; |
---|
| 410 | else |
---|
| 411 | tplHMail += 's:7:"Deleted";s:1:" ";'; |
---|
| 412 | if(defMailHeaders["answered"] == true) |
---|
| 413 | tplHMail += 's:8:"Answered";s:1:"A";'; |
---|
| 414 | else |
---|
| 415 | tplHMail += 's:8:"Answered";s:1:" ";'; |
---|
| 416 | if(defMailHeaders["draft"] == true) |
---|
| 417 | tplHMail += 's:5:"Draft";s:1:"X";'; |
---|
| 418 | else |
---|
| 419 | tplHMail += 's:5:"Draft";s:1:" ";'; |
---|
| 420 | if(defMailHeaders["flagged"] == true) |
---|
| 421 | tplHMail += 's:7:"Flagged";s:1:"F";'; |
---|
| 422 | else |
---|
| 423 | tplHMail += 's:7:"Flagged";s:1:" ";'; |
---|
| 424 | } |
---|
| 425 | |
---|
| 426 | //No header to tag |
---|
| 427 | else{ |
---|
| 428 | tplHMail += 's:6:"Recent";s:1:" ";'; |
---|
| 429 | tplHMail += 's:6:"Unseen";s:1:" ";'; |
---|
| 430 | tplHMail += 's:7:"Deleted";s:1:" ";'; |
---|
| 431 | tplHMail += 's:8:"Answered";s:1:" ";'; |
---|
| 432 | tplHMail += 's:5:"Draft";s:1:" ";'; |
---|
| 433 | tplHMail += 's:7:"Flagged";s:1:" ";'; |
---|
| 434 | } |
---|
| 435 | return tplHMail; |
---|
| 436 | } |
---|
| 437 | |
---|
| 438 | MAPattern.prototype.toExpressoMailArrayAttach = function(att){ |
---|
| 439 | var objMsg = expresso_mail_archive.getMessageServiceObject(att); |
---|
| 440 | var attData = objMsg.getAttachments(); |
---|
| 441 | var objAtt = eval("(" + attData + ")"); |
---|
| 442 | var srlData = ""; |
---|
| 443 | |
---|
| 444 | //There are attacments, map them |
---|
| 445 | if(typeof(objAtt.attachment) != 'undefined'){ |
---|
| 446 | srlData = 's:12:"array_attach";a:' + objAtt.attachment.length + ':{'; |
---|
| 447 | for(var m=0; m<objAtt.attachment.length; m++){ |
---|
| 448 | //TODO "download" parametr at webservice => var urllink = 'http://10.200.242.186:4333/part/'+objAtt.attachment[m]["@id"]+'/download'; |
---|
[5002] | 449 | //var urllink = 'http://10.200.242.186:4333/part/'+objAtt.attachment[m]["@id"]; |
---|
| 450 | var urllink = mail_archive_protocol+'://'+mail_archive_host+':'+mail_archive_port+'/part/'+objAtt.attachment[m]["@id"]; |
---|
[4966] | 451 | srlData += 's:1:"' + m + '";' |
---|
| 452 | + 'a:3:{' |
---|
| 453 | + 's:4:"name";s:' + objAtt.attachment[m]["@name"].length + ':"' + objAtt.attachment[m]["@name"] + '";' |
---|
| 454 | + 's:3:"url";s:' + urllink.length + ':"' + urllink + '";' |
---|
| 455 | + 's:3:"pid";s:' + objAtt.attachment[m]["@id"].length + ':"' + objAtt.attachment[m]["@id"] + '";' |
---|
| 456 | + '}'; |
---|
| 457 | } |
---|
| 458 | srlData += '}'; |
---|
| 459 | } |
---|
| 460 | //No one attachment |
---|
| 461 | else{ |
---|
| 462 | srlData = 's:12:"array_attach";N;'; |
---|
| 463 | } |
---|
| 464 | return(srlData); |
---|
| 465 | } |
---|
| 466 | |
---|
| 467 | MAPattern.prototype.toExpressoMailURLExportFile = function(path, file){ |
---|
| 468 | var srlData = 's:15:"url_export_file";'; |
---|
| 469 | //var urllink = 'http://10.200.242.186:4333/mail/'+path+'/'+file+'/download'; |
---|
[5002] | 470 | //var urllink = 'http://10.200.242.186:4333/mail/'+path+'/'+file; |
---|
| 471 | var urllink = mail_archive_protocol+'://'+mail_archive_host+':'+mail_archive_port+'/mail/'+path+'/'+file; |
---|
[4966] | 472 | srlData += 's:' + urllink.length + ':"' + urllink + '";' |
---|
| 473 | return(srlData); |
---|
| 474 | } |
---|
| 475 | |
---|
| 476 | MAPattern.prototype.toExpressoMail = function(mheader, mbody){ |
---|
| 477 | var tplMessage = null; |
---|
| 478 | var tplMessageData = null; |
---|
| 479 | var tplMessageHeaderData = null; |
---|
| 480 | |
---|
| 481 | //Decodes message headers first |
---|
| 482 | var hdata = mheader; |
---|
| 483 | var h_date = expresso_mail_archive.pattern.toExpressoDate(mheader["udate"]*1000); |
---|
| 484 | |
---|
| 485 | //Init message template |
---|
| 486 | tplMessage = 'a:34{s:4:"body";N;' |
---|
| 487 | + expresso_mail_archive.pattern.toExpressoMailAttachment(expresso_mail_archive.currentmessage) |
---|
| 488 | + expresso_mail_archive.pattern.toExpressoMailThumbs(expresso_mail_archive.currentmessage) |
---|
| 489 | + expresso_mail_archive.pattern.toExpressoMailSignature(expresso_mail_archive.currentmessage) |
---|
| 490 | + expresso_mail_archive.pattern.toExpressoMailBaseHeaders(expresso_mail_archive.currentmessage) |
---|
| 491 | + 's:5:"udate";s:8:"' + h_date.split(" ")[1] +'";' //hours |
---|
| 492 | + 's:7:"msg_day";s:10:"'+ h_date.split(" ")[0] +'";' //date |
---|
| 493 | + 's:8:"msg_hour";s:8:"' + h_date.split(" ")[1] +'";' //hours |
---|
| 494 | + 's:8:"fulldate";s:19:"' + h_date +'";' //full date + hours |
---|
| 495 | + 's:9:"smalldate";s:8:"' + h_date.split(" ")[1] +'";' //hours |
---|
| 496 | + 's:10:"msg_number";s:'+expresso_mail_archive.currentmessage.length+':"'+expresso_mail_archive.currentmessage+'";' |
---|
| 497 | + 's:10:"msg_folder";s:'+(expresso_mail_archive.currentfolder.length+6)+':"local_'+expresso_mail_archive.currentfolder+'";' |
---|
| 498 | + 's:4:"from";N;' |
---|
| 499 | + 's:6:"sender";N;' |
---|
| 500 | + 's:9:"timestamp";i:'+ mheader["udate"]*1000 +';' //getback the lost miliseconds... |
---|
| 501 | + 's:5:"login";i:944889240' |
---|
| 502 | + 's:6:"header";' + expresso_mail_archive.pattern.toExpressoHeader(expresso_mail_archive.getMessageServiceObject(expresso_mail_archive.currentmessage)) |
---|
| 503 | + expresso_mail_archive.pattern.toExpressoMailArrayAttach(expresso_mail_archive.currentmessage) |
---|
| 504 | + expresso_mail_archive.pattern.toExpressoMailURLExportFile(expresso_mail_archive.currentfolder, expresso_mail_archive.currentmessage) |
---|
| 505 | + 's:2:"to";N;' |
---|
| 506 | + '}'; |
---|
| 507 | |
---|
| 508 | var strMailMessage = connector.unserialize(tplMessage); |
---|
| 509 | // strMessage['from'] = mheader["from"]; |
---|
| 510 | //strMessage['from'] = expresso_mail_archive.toExpressoBody(mheader, mbody); |
---|
| 511 | // strMessage['subject'] = mheader["subject"]; |
---|
| 512 | strMailMessage['body'] = mbody; |
---|
| 513 | // strMessage['to'] = mheader["to"]; |
---|
| 514 | // strMessage['cc'] = mheader["cc"]; |
---|
| 515 | strMailMessage['local_message'] = true; |
---|
| 516 | strMailMessage['folder'] = 'local_' + expresso_mail_archive.currentfolder; |
---|
| 517 | // strMessage['msg_number'] = mheader["msg_number"]; |
---|
| 518 | |
---|
| 519 | |
---|
| 520 | //window.alert('tplMessage = ' + tplMessage); |
---|
| 521 | return(strMailMessage); |
---|
| 522 | } |
---|
| 523 | |
---|
| 524 | MAPattern.prototype.toExpressoMessage = function(mheader, mbody){ |
---|
| 525 | var strMessage = null; |
---|
| 526 | var strMessage1 = expresso_mail_archive.pattern.toExpressoBody(mheader); |
---|
| 527 | strMessage = connector.unserialize(strMessage1); |
---|
| 528 | |
---|
| 529 | window.alert('dump strMessage:\n\n' + print_r(strMessage,0)); |
---|
| 530 | |
---|
| 531 | strMessage['from'] = mheader["from"]; |
---|
| 532 | //strMessage['from'] = expresso_mail_archive.toExpressoBody(mheader, mbody); |
---|
| 533 | strMessage['subject'] = mheader["subject"]; |
---|
| 534 | strMessage['body'] = mbody; |
---|
| 535 | strMessage['to'] = mheader["to"]; |
---|
| 536 | strMessage['cc'] = mheader["cc"]; |
---|
| 537 | strMessage['local_message'] = true; |
---|
| 538 | strMessage['folder'] = 'local_' + expresso_mail_archive.currentfolder; |
---|
| 539 | strMessage['msg_number'] = mheader["msg_number"]; |
---|
| 540 | //window.alert('strMessage dump\n\n' + print_r(strMessage)); |
---|
| 541 | return(strMessage); |
---|
| 542 | |
---|
| 543 | |
---|
| 544 | /* |
---|
| 545 | * retorno['from'] = connector.unserialize(rs.field(2)); |
---|
| 546 | retorno['subject'] = rs.field(3); |
---|
| 547 | retorno['body'] = rs.field(4); |
---|
| 548 | //Codigo que as imagens embutidas em emails (com multipart/related ou multipart/mixed) sejam corretamente mostradas em emails arquivados. Os links do |
---|
| 549 | //tipo "./inc/show_embedded_attach.php?msg_folder=[folder]&msg_num=[msg_num]&msg_part=[part]" |
---|
| 550 | //são substituidos pelos links dos anexos capturados pelo gears. |
---|
| 551 | |
---|
| 552 | var thumbs= retorno.thumbs; |
---|
| 553 | var anexos= retorno.array_attach; |
---|
| 554 | for (i in anexos) |
---|
| 555 | { |
---|
| 556 | if(anexos[i]['url'] && anexos[i]['url'].match(/((jpg)|(jpeg)|(png)|(gif)|(bmp))/gi)) |
---|
| 557 | { |
---|
| 558 | var er_imagens = new RegExp("\\.\\/inc\\/show_embedded_attach.php\\?msg_folder=[\\w/]+\\&msg_num=[0-9]+\\&msg_part="+anexos[i]['pid']); |
---|
| 559 | var Result_imagens = er_imagens.exec(retorno['body']); |
---|
| 560 | retorno['body'] = retorno['body'].replace(Result_imagens,anexos[i]['url']); |
---|
| 561 | if(thumbs && thumbs[i]){ |
---|
| 562 | er_imagens = new RegExp("\\.\\/inc\\/show_thumbs.php\\?file_type=image\\/[\\w]+\\&msg_num=[0-9]+\\&msg_folder=[\\w/%]+\\&msg_part="+anexos[i]['pid']); |
---|
| 563 | Result_imagens = er_imagens.exec(thumbs[i]); |
---|
| 564 | thumbs[i] = thumbs[i].replace(Result_imagens,"'"+anexos[i]['url']+"'"); |
---|
| 565 | er_imagens = new RegExp("\\.\\/inc\\/show_img.php\\?msg_num=[0-9]+\\&msg_folder=[\\w/%]+\\&msg_part="+anexos[i]['pid']); |
---|
| 566 | Result_imagens = er_imagens.exec(thumbs[i]); |
---|
| 567 | thumbs[i] = thumbs[i].replace(Result_imagens,anexos[i]['url']); |
---|
| 568 | thumbs[i] = thumbs[i].replace(/<IMG/i,'<img width="120"'); |
---|
| 569 | } |
---|
| 570 | } |
---|
| 571 | } |
---|
| 572 | |
---|
| 573 | retorno['to'] = connector.unserialize(rs.field(5)); |
---|
| 574 | retorno['cc'] = connector.unserialize(rs.field(6)); |
---|
| 575 | |
---|
| 576 | retorno['local_message'] = true; |
---|
| 577 | retorno['msg_folder'] = "local_"+rs.field(7); //Now it's a local folder |
---|
| 578 | retorno['msg_number'] = rs.field(0)+plus_id; //the message number is the rowid |
---|
| 579 | **/ |
---|
| 580 | } |
---|
| 581 | --> |
---|