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 + ")"); |
---|
25 | if(Fromdata.mailbox){ |
---|
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 | } |
---|
54 | } |
---|
55 | else{ |
---|
56 | tplFrom = 'a:2{s:4:"name";s:14:"Unknow mailbox";s:5:"email";s:15:"Unknow_mailbox";}'; |
---|
57 | } |
---|
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 + ")"); |
---|
130 | if(typeof(Tagdata.tag) != 'undefined'){ |
---|
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; |
---|
154 | } |
---|
155 | |
---|
156 | else{ |
---|
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; |
---|
176 | } |
---|
177 | } |
---|
178 | //Something is wrong with tags: return defaults is no one tag |
---|
179 | else{ |
---|
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;'; |
---|
181 | } |
---|
182 | return(tplTags); |
---|
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++){ |
---|
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>'; |
---|
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'; |
---|
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"]; |
---|
451 | var urllink = mail_archive_protocol+'://'+mail_archive_host+':'+mail_archive_port+'/part/download/'+objAtt.attachment[m]["@id"]; |
---|
452 | srlData += 's:1:"' + m + '";' |
---|
453 | + 'a:3:{' |
---|
454 | + 's:4:"name";s:' + objAtt.attachment[m]["@name"].length + ':"' + objAtt.attachment[m]["@name"] + '";' |
---|
455 | + 's:3:"url";s:' + urllink.length + ':"' + urllink + '";' |
---|
456 | + 's:3:"pid";s:' + objAtt.attachment[m]["@id"].length + ':"' + objAtt.attachment[m]["@id"] + '";' |
---|
457 | + '}'; |
---|
458 | } |
---|
459 | srlData += '}'; |
---|
460 | } |
---|
461 | //No one attachment |
---|
462 | else{ |
---|
463 | srlData = 's:12:"array_attach";N;'; |
---|
464 | } |
---|
465 | return(srlData); |
---|
466 | } |
---|
467 | |
---|
468 | MAPattern.prototype.toExpressoMailURLExportFile = function(path, file){ |
---|
469 | var srlData = 's:15:"url_export_file";'; |
---|
470 | //var urllink = 'http://10.200.242.186:4333/mail/'+path+'/'+file+'/download'; |
---|
471 | //var urllink = 'http://10.200.242.186:4333/mail/'+path+'/'+file; |
---|
472 | var urllink = mail_archive_protocol+'://'+mail_archive_host+':'+mail_archive_port+'/mail/'+path+'/'+file; |
---|
473 | srlData += 's:' + urllink.length + ':"' + urllink + '";' |
---|
474 | return(srlData); |
---|
475 | } |
---|
476 | |
---|
477 | MAPattern.prototype.toExpressoMail = function(mheader, mbody){ |
---|
478 | var tplMessage = null; |
---|
479 | var tplMessageData = null; |
---|
480 | var tplMessageHeaderData = null; |
---|
481 | |
---|
482 | //Decodes message headers first |
---|
483 | var hdata = mheader; |
---|
484 | var h_date = expresso_mail_archive.pattern.toExpressoDate(mheader["udate"]*1000); |
---|
485 | |
---|
486 | //Init message template |
---|
487 | tplMessage = 'a:34{s:4:"body";N;' |
---|
488 | + expresso_mail_archive.pattern.toExpressoMailAttachment(expresso_mail_archive.currentmessage) |
---|
489 | + expresso_mail_archive.pattern.toExpressoMailThumbs(expresso_mail_archive.currentmessage) |
---|
490 | + expresso_mail_archive.pattern.toExpressoMailSignature(expresso_mail_archive.currentmessage) |
---|
491 | + expresso_mail_archive.pattern.toExpressoMailBaseHeaders(expresso_mail_archive.currentmessage) |
---|
492 | + 's:5:"udate";s:8:"' + h_date.split(" ")[1] +'";' //hours |
---|
493 | + 's:7:"msg_day";s:10:"'+ h_date.split(" ")[0] +'";' //date |
---|
494 | + 's:8:"msg_hour";s:8:"' + h_date.split(" ")[1] +'";' //hours |
---|
495 | + 's:8:"fulldate";s:19:"' + h_date +'";' //full date + hours |
---|
496 | + 's:9:"smalldate";s:8:"' + h_date.split(" ")[1] +'";' //hours |
---|
497 | + 's:10:"msg_number";s:'+expresso_mail_archive.currentmessage.length+':"'+expresso_mail_archive.currentmessage+'";' |
---|
498 | + 's:10:"msg_folder";s:'+(expresso_mail_archive.currentfolder.length+6)+':"local_'+expresso_mail_archive.currentfolder+'";' |
---|
499 | + 's:4:"from";N;' |
---|
500 | + 's:6:"sender";N;' |
---|
501 | + 's:9:"timestamp";i:'+ mheader["udate"]*1000 +';' //getback the lost miliseconds... |
---|
502 | + 's:5:"login";i:944889240' |
---|
503 | + 's:6:"header";' + expresso_mail_archive.pattern.toExpressoHeader(expresso_mail_archive.getMessageServiceObject(expresso_mail_archive.currentmessage)) |
---|
504 | + expresso_mail_archive.pattern.toExpressoMailArrayAttach(expresso_mail_archive.currentmessage) |
---|
505 | + expresso_mail_archive.pattern.toExpressoMailURLExportFile(expresso_mail_archive.currentfolder, expresso_mail_archive.currentmessage) |
---|
506 | + 's:2:"to";N;' |
---|
507 | + '}'; |
---|
508 | |
---|
509 | var strMailMessage = connector.unserialize(tplMessage); |
---|
510 | // strMessage['from'] = mheader["from"]; |
---|
511 | //strMessage['from'] = expresso_mail_archive.toExpressoBody(mheader, mbody); |
---|
512 | // strMessage['subject'] = mheader["subject"]; |
---|
513 | strMailMessage['body'] = mbody; |
---|
514 | // strMessage['to'] = mheader["to"]; |
---|
515 | // strMessage['cc'] = mheader["cc"]; |
---|
516 | strMailMessage['local_message'] = true; |
---|
517 | strMailMessage['folder'] = 'local_' + expresso_mail_archive.currentfolder; |
---|
518 | // strMessage['msg_number'] = mheader["msg_number"]; |
---|
519 | |
---|
520 | |
---|
521 | //window.alert('tplMessage = ' + tplMessage); |
---|
522 | return(strMailMessage); |
---|
523 | } |
---|
524 | |
---|
525 | MAPattern.prototype.toExpressoMessage = function(mheader, mbody){ |
---|
526 | var strMessage = null; |
---|
527 | var strMessage1 = expresso_mail_archive.pattern.toExpressoBody(mheader); |
---|
528 | strMessage = connector.unserialize(strMessage1); |
---|
529 | |
---|
530 | window.alert('dump strMessage:\n\n' + print_r(strMessage,0)); |
---|
531 | |
---|
532 | strMessage['from'] = mheader["from"]; |
---|
533 | //strMessage['from'] = expresso_mail_archive.toExpressoBody(mheader, mbody); |
---|
534 | strMessage['subject'] = mheader["subject"]; |
---|
535 | strMessage['body'] = mbody; |
---|
536 | strMessage['to'] = mheader["to"]; |
---|
537 | strMessage['cc'] = mheader["cc"]; |
---|
538 | strMessage['local_message'] = true; |
---|
539 | strMessage['folder'] = 'local_' + expresso_mail_archive.currentfolder; |
---|
540 | strMessage['msg_number'] = mheader["msg_number"]; |
---|
541 | //window.alert('strMessage dump\n\n' + print_r(strMessage)); |
---|
542 | return(strMessage); |
---|
543 | |
---|
544 | |
---|
545 | /* |
---|
546 | * retorno['from'] = connector.unserialize(rs.field(2)); |
---|
547 | retorno['subject'] = rs.field(3); |
---|
548 | retorno['body'] = rs.field(4); |
---|
549 | //Codigo que as imagens embutidas em emails (com multipart/related ou multipart/mixed) sejam corretamente mostradas em emails arquivados. Os links do |
---|
550 | //tipo "./inc/show_embedded_attach.php?msg_folder=[folder]&msg_num=[msg_num]&msg_part=[part]" |
---|
551 | //são substituidos pelos links dos anexos capturados pelo gears. |
---|
552 | |
---|
553 | var thumbs= retorno.thumbs; |
---|
554 | var anexos= retorno.array_attach; |
---|
555 | for (i in anexos) |
---|
556 | { |
---|
557 | if(anexos[i]['url'] && anexos[i]['url'].match(/((jpg)|(jpeg)|(png)|(gif)|(bmp))/gi)) |
---|
558 | { |
---|
559 | var er_imagens = new RegExp("\\.\\/inc\\/show_embedded_attach.php\\?msg_folder=[\\w/]+\\&msg_num=[0-9]+\\&msg_part="+anexos[i]['pid']); |
---|
560 | var Result_imagens = er_imagens.exec(retorno['body']); |
---|
561 | retorno['body'] = retorno['body'].replace(Result_imagens,anexos[i]['url']); |
---|
562 | if(thumbs && thumbs[i]){ |
---|
563 | er_imagens = new RegExp("\\.\\/inc\\/show_thumbs.php\\?file_type=image\\/[\\w]+\\&msg_num=[0-9]+\\&msg_folder=[\\w/%]+\\&msg_part="+anexos[i]['pid']); |
---|
564 | Result_imagens = er_imagens.exec(thumbs[i]); |
---|
565 | thumbs[i] = thumbs[i].replace(Result_imagens,"'"+anexos[i]['url']+"'"); |
---|
566 | er_imagens = new RegExp("\\.\\/inc\\/show_img.php\\?msg_num=[0-9]+\\&msg_folder=[\\w/%]+\\&msg_part="+anexos[i]['pid']); |
---|
567 | Result_imagens = er_imagens.exec(thumbs[i]); |
---|
568 | thumbs[i] = thumbs[i].replace(Result_imagens,anexos[i]['url']); |
---|
569 | thumbs[i] = thumbs[i].replace(/<IMG/i,'<img width="120"'); |
---|
570 | } |
---|
571 | } |
---|
572 | } |
---|
573 | |
---|
574 | retorno['to'] = connector.unserialize(rs.field(5)); |
---|
575 | retorno['cc'] = connector.unserialize(rs.field(6)); |
---|
576 | |
---|
577 | retorno['local_message'] = true; |
---|
578 | retorno['msg_folder'] = "local_"+rs.field(7); //Now it's a local folder |
---|
579 | retorno['msg_number'] = rs.field(0)+plus_id; //the message number is the rowid |
---|
580 | **/ |
---|
581 | } |
---|
582 | --> |
---|