From 6a406e575a6fbfb7fe1c98e7a324ff9a364e30fa Mon Sep 17 00:00:00 2001
From: Uma <uma.s@vtiger.com>
Date: Thu, 29 Oct 2020 13:52:13 +0530
Subject: [PATCH] Fixes #1511 Portal Download files results on zero length file

---
 packages/vtiger/optional/CustomerPortal.zip   | Bin 75831 -> 77576 bytes
 .../CustomerPortal/apis/DownloadFile.php      |  35 +++++++++++-------
 2 files changed, 22 insertions(+), 13 deletions(-)

diff --git a/packages/vtiger/optional/CustomerPortal.zip b/packages/vtiger/optional/CustomerPortal.zip
index d81610c26a208ca3563d9e7fb607064b57d7700a..ac46c5b1c6d6793ca69c6ae251469ddaa1b45765 100644
GIT binary patch
delta 13242
zcmb`M2|QJ6_s93vF=w8`G3JDj28on8L!p6EBxOh$Lqv5t4Vt{6Q+Btak}jI$s`M63
zD5=os-X!%GZgXyORfhL@_OaPV#~JkBeG(t7?^(}U>v{HieygO8vf~9M*vowsMG?Ut
z->Gw1->|+)AlgWHU}R`~U}$ixnfC%IMAWirRlu{*g8^@pv4HqQNd%?9|B8PZo+FEB
zX9Ox(kJMZZ(Z;BwQ4PKTVu%=mkk(NvgCNG>^LtG-`ak~_C-;jTQ6mw$sMzdjK@J8Y
z2m;N9Uyv9cm~~O{alaB4NfKr4R1jaj7Ko>Yv_SZ?0;0{76;mFuy#|P|tt_f(Gx8jR
z7(>K(J`qFHv``vBocj@2fDEe1JzLY|JSoPaVtzT##<+vxgVwBU4dpIZMv%$<T$*cS
zP;jDYTy*%rGC9{msJO2vpnJ50zxNhJ5Xj(6FH=GgYr^YyGN?Rvue+7xL;&}5u*fwj
zP-D<~_!^tS;#%^R)S=6+*)<SO3+8<d1@3-zX-KJo+F$cm<|A=61cAoG`vq%1A}T08
z{Fjad6%xfEJ~l3jc_cw%gtfC$2tjnf4#-GQ#mp4Y(cBlC>R^U~Bw$xkgpE-IfySJZ
zt1g8ghW%Jjk<z-R(JP~QR8EoQdsvqhMx~6uL0v)wXZQ*58!8T0$7<wJ5$-;>+c*jX
z><-iNakjz;0*!}H5ZKHh6#VYxp_SvTil3K&z~jKIPf&oHWcy2{g)(51Ks(M$)gFx?
zMz~K@rfIzl_mz6rZ-N0d#}cyFg8)KX&eSU)4yLS?G7Hlcxl<d`_Xz>&>c^8r(m}qV
zEobT{Nfs4NHRn!rOErOh&Of@2W(fR*c7w!{2>*fiXu1l5j0b+AsZ{3a({gn15}K5B
zFo5_w<Q>|wsL`{*MV2lt-&a0)*Q)I)TMyUSoLBKOrTBZ8L>qp1v*1`&k;)&m+iMf*
z>z?oI>j}BmEoc4Gr_`T%y|bo1Dr9X)D1F)-pF6!TULr3vO1q-yGSV-ToUW(o+3DWU
zxhhOA%F&1nbGg2Pl6blMP?wNnswCy3aGBm{gD*1C`%N9*mM6bu?ojBOt(q4@Dev{#
z8Q&0cqH%*Lz0&Y>nUrJECdHkxny(Le%A=F*)t|b$lvU9_+g7?2OwyfbZKhUsJVWKC
zzO<NE@5PmM!S=dcs(JTn)k5Ty6yMZV*@!n&4CzWYPwMOC7g`oBH;|PSJtF6sj%2Ez
za`_%4Pg4&H5Raxc$~Rk%4m4e8c~6}7KAV#Cs%1sOgg=`an!Y%s#U9A@t5|(Aw{htu
z%iUTz6FN7?epr?o?sZHp;J$M6Se1L_FMExhE<`@6!p`Xg7I|7GtX|amdbQi7P128K
z{O>fZYNT&#m*4PL`{owwZ!g;C-<ohtSv6cl@9(NjTG`L#%$=3~eXX!@?UjT3<gzO!
zZgG~)*luOrmSP{{LQRs4blqlt{E6%IZxPBaS+^WdJdJ<9>-ZD5vW@pPTg|(&H{)!x
zwv_9BFM4g&`CT&BJ9eMSbP`&3VOtmTs1E%{=9)PtHCxB1(=RKBeJm+g@Tk~Vbl|_`
z&BvRmmbZjvzumMZN^QCP;%z3*j@7zVm%g^m`miuU#+SCdIppj;Z=({-ZjbZJ!^r_z
zsm{Bj=Ug|u?c_bKYZt}ow`mUUrx$e}T|U#h5}98Y5pY+6aZi5R=`lN%9)7&>IkAgb
z`Dj%})Pg^;Sv`GnE<5Pr-V+UrSDwwW?hM{FKh8t*p{BFHp?%%AWA~~nCl|SknCue{
zj+~g<mb@al(z&#xOmFtaWghpZ?A}wE9OZiRaDif8Wal33Csd=P6lcjaa~X$7g=?Zp
z4oAM;@1B*F)3@KD)2~7z<=_UiFrXncamu{pW%7mfe-tR~{jzh;{Buq8yOV<(LT+Cz
zy7jKd^Msq9cUIii|GZ+DO_*JLv+a4@lF9i-woXsY$`6%V1ziv|&#K&bd0YM#rIZLS
z`yb66J#lN!96b4_KBcA&)0!Q%SbN;fz_l^vS>>OwV#yzkq4PA9)Gw8ed(inLU`(pf
zz76Z`nMDO3x_iDg#LW=aL!I*`(63sasumX;<F@%h*bo1ub-BjpwrgbTOJJv7eZBsg
zR=LS~mPftw3Ffg2>vwHr?0x9v67Yqp@%3oLn`dfyHD@M^Pq-U#?Qlhyey(yuXsXDV
z?!eObs%FXdiM?)>LORO+_gw>}re?IKbUqXF$jW&Wze7?&^3vV(_?pLvg}u_sJbF-W
z@ixQuidE|SyPxhZo$@B|MxcIr+Sq8}ogxeWk`rnA__*#Gttd1l`0pvpTNuuJPi!^l
z&4}|*DCl^)!DrD&^I4hIw5e5@W!3kk-kY3Uxh#I^+<@nMTP-GwsZoo{H~)jYTVbng
zTqJ$u-^=YKZXZIGVr0^qck6m&`Sx_?G}h8TPrX0U)woUZP=v*o?@N*nRyTKOg)uk8
z8M}>X>r<1XQsul3ys&M$+g15sV@%{4t)6r-r7ZOg@--{`#s`gE<9jqV>z@c(L5G)z
zQPbMJ&mQ<>nAv!2oUt_BrS*U@7QAKYqJv}d5+oZ9XHL5(d1vK$HT&Xs7ndY_h{<Ix
zti5bb&%Ja|(=pe}*j3BdYx2e4<kml(vY76dU-)*P<?c)A^S>4z@;$mF-)2&9UFr6i
z-;HatHBat~Z<`ifLMfNf99>snx%79-r6*0+s2AIpAZ8Ls%ir$E{vZGBe%r#xT+%-G
z#vfL@uW2+s?x>P@;<KdmTXxS?hvmm6OqJXIp(1sWPb9tMhlBU!Rjw=4sU>@atX~%>
z|5fGW>C^6?Vo@;rR^6>i>n&e3g{_*y7HmC5t2LV8fA<f)`ehUDtleT%{e9P6$@2fp
z9!KjvJ8x+~t5M74?DurPy>lL%(Omk0a`e{BYy<H<&nU5{reAF>KlNh9g-OT!9@ZO<
zT6g2w=24a<DywxxZ0Irh##PsizP3EqF*C5)ziwBUS7~~~l;0PaHl4e;y*=yd!t(9q
z%uVATS(n&2g-#sP$cXwVuRRwN|GZCP()jpQnXj*Zd-FDYy^TrQ0j<0wp$m2E9sIs^
zhFr2S*sMmeUR4%pm0xt+N~cUUT*2>ovC&zh+^)8nUhbk|F5}x`+(q;d1iq05-&N$h
zQl~6}nDoC>y>9bp8k2AP!=5Dg;=YHz;C%{hIaB9>_oF$W+U4jn<Fk0Q$VakzVRsgH
zew6rk(49eB&eSgOn@KDxRz^id4IP8y0>i>%`DoHaj%vehKygWJm<H$uAc^y5JRLRQ
zIs6PBt}7Q`#T(0<f{4q&b!f~PYo&>|1el#FYR0|GXpUrx0Z->o7dxK@uC>sRGm-%^
zFrhyhqAI8ycdYbsIt;)fs{QC>5CCY*8LJB#P0+kxb9H!m`lU7u_Co>f&i@93ctS(Y
z$i<*ng#8ex1}t42mE!K{17;rdv=v?5eH?fSjX7gyf%2P(W5+VbrO0xpdZlE-(v9;|
zEZqy%4sAJ8vq8|o#TGa_j-T$|oo+h{a2Fd?S5F7oht{0A7T}h}3IdM;*pV{>-WVIh
zD#NV6jS<>$CjJH*P;g@ep6X*3S}2cxc;*Fjn63TOQKkvV7BuFJl>-51?J|9gu7V0P
zYd7=ASjXlLn6bk$A&H+s#vp(*`Y^avlh8aiS7#6f-ZqkzL}>^>LSxR@Ng(L(UhpcP
zM+a|I;0lv<u36H@2_y^JaV8dvvra|394e-+&Fd71F3*Qp+9!r^F2F)#&e$4x+)*q>
z8Rg-r?_y85c9Ue=Bko}B(2z4y8GN8VSUb4=G0!zgaNh(Eo5JC7wJGn>{gvRjg0`Hg
zGeF_dSX9G#!7=f{v2lDHvJ1nFU>%6x@vk%hbpRop@jl=;<NBSJy)Vt(=_>CfkXl*x
zAC-lG3T-)4TeOHvrzUn%3*~Vj)cw~+9AMA>cBpt7NEkHcjJ*uv&$`Qk2xp35HM%H|
zFi&~z0P8{RpIJ9&f)GOhXS5|qEAjF@m&xPh+mPuG&xPvNiMM<~44^G%sv0=o;JFA&
z0(+^0s&Wr+#ba|A-n4YjbQ2I>Xw1TL5*@X0tSU3jO?*0E((q8JAsKki3Z^RNsf0>k
z$%?2XcL$AKa0h#hG8~|TkidD}urlDu4K*RaR_2c7yR5Q7MBsZCV8Ob@n4V5N5|!jM
z7e=(uMJs;}a2VQicG!SMYy(K<LA~sDMgmYVGi~7l2?T+*oT)!RHS6|=Axn?f+cxu6
zE_C**>^Z-qz*%U_8S4QmnNZxWEAdj?k`|3cfxKw)-gl1<IBB3U3(Kjh#1U;IHaIRW
zEHd<0v~@W$CU8ZZeOOc^zr3M!+5`41oI$vbMK!qB(YMdVLSUulis<q}5I|@+{7S)8
zWN@WGQ4J0sse@_b5o8QOn*;;bkDG(*w0xY_DlIOOAoC$x?w2`&W&i?*cN|U|Y<u{d
zHVlnr47hwifzq}|5i_Lm+U^xS9k5YjY}2~(8SETrJiJ?){n!~4bfil19R*hN0KEek
z?n8)@SPJ?K&WwtuS=m1Y=MA(T-aQ#2K`=jS!-5k=n(a=IAoT$lv#U#mdr{K9^};uh
zriumgJJ@>AoaN=v+++i>RTTtLwnLpe(V>G$@evi998s5=2HHnx$C>yEY=Y6i)ri2z
zun^ccBu4O>z09&mgolMl`Sh1@C=gZw!OI;LQXDn>h!Q_Wz?VKd_?;jF%VD_iqu}l&
zo<2Jl1OXFFS6&m$VR(Q8&JThH{LI8OMx#`B{%}N^$fHT{Y8%8cJ^=4}O`)_5$Fm$~
zTHK=uXF9~wXO{|&t?)p8r<((7rnAjmAx@GF`;dgi$DRBwANT9$c_-m6h^9Jd-GRSM
zMKO7|ku$-mL}G@EVKZe>>g<7e&#*)9f%X5ie6}Rn-NK0`d=rVZlV_Y@LOSRp!%Q6d
zXo8PRiG}k>J^>|<Ho<t51eKP?q27GXN(bwTK$EANU^YrZw<xjvg@aOJEAj9bw;qyw
zaLpZr+9hK%WKk;u$0JLGkK{=wdrUt<oFyEY{=aRf-4=)d1Ji+W()p>L;LMbG`s^N9
zU~*chn!xo$9(;lxjsPNk41=jS5uc$7SWo1ECzzR%pw}%~P&h&L;@ye-Tu<boCzzO$
z&{{JfS_7Y-^64*bJ*1x4H~w7*2<3m{6D38SgR*UW##l$3h}Eg0a(uc;K*?iJa8n|!
z{fs*fWt!B>3dkf6L4i<0VjlBiF~K-hKqh$%%FaA9pT(r63c`c~RF+=NlB<DMM)Gss
zA{O)1Y5cq=Myc@MA>&k{b0FeL7OTNso5WNJU@?L0E#TV8QZ<mdNz8Xakf{enZvmNP
zX&Pu`BxX=3&cr3}g?vliKkq7xq*AkcjjkH_1VP;<>(uNivkGU0;%cOnfT19Z)Zpe#
z3WY;F%TcIz3kW64)a;H<Ph>e-Q!A*WWR04gslI{bD3rSebd)Sn0~v?3ddp1^I+jUG
z5p?lnd7AyCa!bLP3syv}2^z^!O_r(IL(sPqCwoIOA0wKd>y<23vo!#W;&h0fCSYL6
z`ZW6vTd^N^bwKVG5KLC6*};zw41fjQSY(l!{e1O43ZZ&fy(TInpr>Ssn*A_T&V^7d
zT<sPRN*1ZvJ)M%zf~F~>f*!GCjT-3Nq+QTm2%%J{b_?hzS(pauHi`MP2xt26t#$ug
ztz>-~Xxk)s3?>UA%LGEVfc}!TY4%oNMhWgOE^`YAC9Bfx&`;O<1KTfh3kW6))9khN
zdj$a&v<k?oH2YbYbe9zYC~))XD4vobjUW)T2Qy_ytAS88C~v#-l($)3JJDv4<!Sb?
zZe>9S<!(ORCCKE$Vn4eLAK>odVz+=$vN+BDiv9M8hygBj3&<tQ)9kyT;wixuv<S%B
zG!V82^TlX>#R>qFxdn8TtW2|CiN3sML7~X~3l~BtY7<YN-Ii8lQ26CvV9*7GAr%W%
zZsO^)t8T^G^-(2a@qFHe$znB|O2trXgFFRn$yik47Z%U1q?x@XEuL@H8#TlgKw=w^
zb!sSl6Hgyw!&@vve^6Q*fxH0JZ2||hCBsexYTW`#b!5Ss?Rv>b!g(z1n}CkMNuYI;
zoP693ox~+;i8=fh6cJ0Zdd>dEHtQL{YW_n0q3}&SeRd2AI#~St%HXJwArycKm&sB#
zRKkg;k5NNGneANz$|{e@5<Iey4Fqrk2P6@5aTLnoe6F70k;UuLY&-*LQ~)s?HWtEQ
Uuz<)QPT)^36+t>=Q1J8r0CDIr`~Uy|

delta 11490
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
F{tu4A#*qL3

diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/DownloadFile.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/DownloadFile.php
index c8260dda8..110b61412 100644
--- a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/DownloadFile.php
+++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/DownloadFile.php
@@ -63,18 +63,22 @@ class CustomerPortal_DownloadFile extends CustomerPortal_API_Abstract {
 				$fileres = $adb->pquery($fileidQuery, array($id));
 				$fileid = $adb->query_result($fileres, 0, 'attachmentsid');
 
-				$filepathQuery = 'SELECT path,name FROM vtiger_attachments WHERE attachmentsid = ?';
-				$fileres = $adb->pquery($filepathQuery, array($fileid));
-				$filepath = $adb->query_result($fileres, 0, 'path');
-				$filename = $adb->query_result($fileres, 0, 'name');
-				$filename = decode_html($filename);
+				$filepathQuery = 'SELECT path,name,storedname FROM vtiger_attachments WHERE attachmentsid = ?';
+                                $fileres = $adb->pquery($filepathQuery, array($fileid));
+                                $filepath = $adb->query_result($fileres, 0, 'path');
+                                if($adb->query_result($fileres, 0, 'storedname')) { 
+                                    $filename = $adb->query_result($fileres, 0, 'storedname');
+                                } else {
+                                    $filename = $adb->query_result($fileres, 0, 'name');
+                                }
+                                $realfilename = decode_html($adb->query_result($fileres, 0, 'name'));
 
-				$saved_filename = $fileid."_".$filename;
-				$filenamewithpath = $filepath.$saved_filename;
-				$filesize = filesize($filenamewithpath);
-				$fileDetails = array();
-				$fileDetails['fileid'] = $fileid;
-				$fileDetails['filename'] = $filename;
+                                $saved_filename = $fileid."_".$filename;
+                                $filenamewithpath = $filepath.$saved_filename;
+                                $filesize = filesize($filenamewithpath);
+                                $fileDetails = array();
+                                $fileDetails['fileid'] = $fileid;
+                                $fileDetails['filename'] = $realfilename;
 				$fileDetails['filetype'] = $filetype;
 				$fileDetails['filesize'] = $filesize;
 				$fileDetails['filecontents'] = base64_encode(file_get_contents($filenamewithpath));
@@ -86,8 +90,13 @@ class CustomerPortal_DownloadFile extends CustomerPortal_API_Abstract {
 				//construct path for attachment and get file size and type details
 				$attachmentDetails = $rawAttachmentDetails[0];
 				$fileid = $attachmentDetails['attachmentsid'];
-				$filename = $attachmentDetails['name'];
+                                $filename = $attachmentDetails['storedname'];
+                                if(empty($filename)){
+                                    $filename = $attachmentDetails['name'];
+                                }
 				$filepath = $attachmentDetails['path'];
+                                $realfilename = decode_html($attachmentDetails['name']);
+                                
 				$saved_filename = $fileid."_".$filename;
 				$filenamewithpath = $filepath.$saved_filename;
 				$filesize = filesize($filenamewithpath);
@@ -96,7 +105,7 @@ class CustomerPortal_DownloadFile extends CustomerPortal_API_Abstract {
 				//Construct array with all attachment details
 				$fileDetails = array();
 				$fileDetails['fileid'] = $fileid;
-				$fileDetails['filename'] = $filename;
+				$fileDetails['filename'] = $realfilename;
 				$fileDetails['filetype'] = $filetype;
 				$fileDetails['filesize'] = $filesize;
 				$fileDetails['filecontents'] = base64_encode(file_get_contents($filenamewithpath));
-- 
GitLab