From 7d621ae61b733ca65acfda626004be03936e7596 Mon Sep 17 00:00:00 2001 From: rvelices Date: Fri, 4 May 2012 04:29:44 +0000 Subject: [PATCH] multi size - don't fail if image metadata was not previously synced git-svn-id: http://piwigo.org/svn/trunk@14735 68402e56-0260-453c-a942-63ccdbb3a9ee --- include/derivative.inc.php | 50 ++++++++++++++++------ themes/default/icon/mimetypes/unknown.png | Bin 0 -> 9114 bytes 2 files changed, 36 insertions(+), 14 deletions(-) create mode 100644 themes/default/icon/mimetypes/unknown.png diff --git a/include/derivative.inc.php b/include/derivative.inc.php index f565364f3..3d5be32d5 100644 --- a/include/derivative.inc.php +++ b/include/derivative.inc.php @@ -23,6 +23,7 @@ final class SrcImage { const IS_ORIGINAL = 0x01; const IS_MIMETYPE = 0x02; + const DIM_NOT_GIVEN = 0x04; public $id; public $rel_path; @@ -51,24 +52,36 @@ final class SrcImage $ext = strtolower($ext); $this->rel_path = trigger_event('get_mimetype_location', get_themeconf('mime_icon_dir').$ext.'.png', $ext ); $this->flags |= self::IS_MIMETYPE; - $this->size = @getimagesize(PHPWG_ROOT_PATH.$this->rel_path); + if ( ($size=@getimagesize(PHPWG_ROOT_PATH.$this->rel_path)) === false) + { + $this->rel_path = get_themeconf('mime_icon_dir').'unknown.png'; + $size = getimagesize(PHPWG_ROOT_PATH.$this->rel_path); + } + $this->size = array($size[0],$size[1]); } - if (!$this->size && isset($infos['width']) && isset($infos['height'])) + if (!$this->size) { - $width = $infos['width']; - $height = $infos['height']; - - $this->rotation = intval($infos['rotation']) % 4; - // 1 or 5 => 90 clockwise - // 3 or 7 => 270 clockwise - if ($this->rotation % 2) + if (isset($infos['width']) && isset($infos['height'])) { - $width = $infos['height']; - $height = $infos['width']; + $width = $infos['width']; + $height = $infos['height']; + + $this->rotation = intval($infos['rotation']) % 4; + // 1 or 5 => 90 clockwise + // 3 or 7 => 270 clockwise + if ($this->rotation % 2) + { + $width = $infos['height']; + $height = $infos['width']; + } + + $this->size = array($width, $height); + } + elseif (!array_key_exists('width', $infos)) + { + $this->flags |= self::DIM_NOT_GIVEN; } - - $this->size = array($width, $height); } } @@ -105,7 +118,16 @@ final class SrcImage function get_size() { if ($this->size == null) - not_implemented(); // get size from file + { + if ($this->flags & self::DIM_NOT_GIVEN) + fatal_error('SrcImage dimensions required but not provided'); + // probably not metadata synced + if ( ($size = getimagesize( $this->get_path() )) !== false) + { + $this->size = array($size[0],$size[1]); + pwg_query('UPDATE '.IMAGES_TABLE.' SET width='.$size[0].', height='.$size[1].' WHERE id='.$this->id); + } + } return $this->size; } } diff --git a/themes/default/icon/mimetypes/unknown.png b/themes/default/icon/mimetypes/unknown.png new file mode 100644 index 0000000000000000000000000000000000000000..a5687db3e75d3c9b38e4c2571b687e5821bdda5f GIT binary patch literal 9114 zcmW;SbyO8i8vt;+TSDrBq;yL+(jncUba#7&3ko7BAl=g4TsoyL(%mU>sh4iP<(uD` zea@M)^VgndX7<^Q_@J(Ui$#HjfPjFjq$sBaMDCYPfCgOA;~D#afc8m6LGJng4b$Ly z85qHIQ#AAhqT>I%{E(x>%b<^&v@H<-KObTAI7%M@f$myKPFlxraV5hxkz{7JGTSiF zmr1}dgntq#k0_DW5Rs8ZQwSrE;pbb7w{O2AqDp&+z12iPSz-#Uk4IsM3=a7!n-nGW zswFTy?HawI^lHYl-*?rZ-K*`(V06J2&w9c%{{MfQXPV zH~4&Q_kQO%xz+rb%G#%5sljEgrFfN@E3?h(EIv!L>3F%t6JG3O+f=u-fVnSv7t?`k zU|r6B z{RjLf(JS**EW9OO+!RZJN1JNlkTh9wi&B3l32Cgmm(xLk67E= zi`xO-77Qs!oN1<|j#x1%zOtuN3-;TLKqsvZMx~7|sNoNDs{(LUR~pWhJFa&g1Mm(l z&_#n4{1X-4i1PplD^1!xE{AoYj~hq$u0a@0dMifWjwB3JYC>sl#I@JMt89T>P}d=_ z%CRw$yY1F!eY(}W@%xEF*G5PLCB-gJ%jfI4-qQM!Y3X#-+whUq9LdTzoC zT6|dV8TTHYX?~>CqLQdR`tksH8T~H$%kQ;dF|IM#xztB2?bq9aw`yOIS?I0vap=}y z*Jt8`K*qo^QNyuh5;#qZ@eQ zqMfXe!76K$O;WCK=XP9P-NIp=Q_20H$!CVoO&hJaYtF%F-2mz0>YAQ@EXt3AS8tZW zoxhG`)8Va-7LfoS)soXN*Cg?yGM9M+upWBaDkn_INVO?b3 zX*@D3I+t)XK>SB6L3_lRdD>FI@>qg=kw@0P?oxXt_OIX_SA%~E?noJ5)o7bY7YY+M zqMd^1qO{lk-sD6<_o(e|-MRF4f;YjVUWJ}=y70G)&_>ug2GyIE7zr)18n6G#=Mz zj%L(aS)aie445SI?l#pRp)j2Soy6ErVP5nq#X*JyRW}cM;+){f(x)Ft&|%%m5Qz#6 z_*9Op*LS?`vQMgKyi)9f%|o~WW@B*wIH!2ET4|FAD3Lp3+Y%ZGQ;f(Dg{YFzLFHSUIsnMd_(=shpkuHRJrQ+p=zF1#62H=SX9v?Q>F{_I59u3yhuRCr45U)@I zL&OpLNR6Gw=$A{6h>L_!A9}bRkUV762Qk-GI<{5DxEF@?8j+HreT;1mM_g>Qk?gf} zD68*V?Z|Q{SN8saAsu;Ddu%z>^`Slp9`OkoIRf=zv%%$G3?FOn{H2=1S9*^>_GWnm z4j-|gd(MrSO8ScPmo1lj)D3@d``G;rl`N#H9KindM;IW4D;Yq>P^n^)48^1Pys{2Q zGw;17>8!c|zqj)$nD`~HF9mlnt$-U=gGVK7v(L>OR~!82{+WhaBmiEW&Rqe}vNl<= z&QP2@AP;XPhhqtqgk*UckgZDCe--%gNUElAe~1eqepovV{>EXsdOJ|-w%;88cWSW%8?Dx zX~#JMcp;{tfbN(E%Oit0?^^X)$d?lHgJc2;N&q%Q^94aVDF7`YP0it53HkQ$$gfnk zR~Lw2DH;TM-uR!Zj*rWGyYiBPA@uKKh=sLKK2LPmne*Fe9F>TR_r_Ct$hrhSuuHou|B}D2GxCPL)GW@MX3E!!u?-E|8TfKKr_Ds zh@si{%``4a#{=3G!=J3(CV_PsPI?2{qRllf!kUC_7nd4PeR#W`|1%{-1k@{Ea|XX-Tt zuYCXD>o}@-S&!hAxnsxcZ);|^N59t0BA~}g{#scm%^XcT?*=&+7+a;(hn0lM2?MCG z-v1jCOGVH4$6o}IrP?Gg$`h;_O5V*Bb`d32qwp44sSjl!jaZ=Z1y|jsRkc&)C|rC8A?|ao6o@KH z3^CuHo{nog^l8xI56PYp3~CCqD$r-0;OmaJvvoz--{C)oKOt91@Po!>jP0=38JLA5 zu&e8vu4Y%Iu#Lu%fYaWrpY?CONo6BU29;U{?D~er*;!hS{BQLLhKyxaBzuP9Wwz2r zDvtKJpa1B8MqQK*w8L+kH~ua|ds9_9a$!|9F5EX(q$PVtEFqS9}p-N?ZmtzMKV0 zjjTGjHZ;lT#1?}z#n%lsEWgE)gmJ_=`#Zrb2~Ymx*Er{|&bllQ&lgehjz5q(>(~Yl z-P55M>HJXEjQfw*tY1M#HpUtzvB3OuE{HCBkU6LGpz4mTIwA8gDsBna#cj*=t<=kI zfjXUw=iNr>P+I8V@O3BEW5(n}%2&Ud&AXto4@RPHXv?19k@!2q*1kpIdJmK%w!;#u zzbXuSngx*Zn@$O=ECq30wa;IF+W0q|&gNQ)!Z!P(;ghskeDXHqNlTKmaijABsfW{0 z4dVbQM#T$+A+B3SNw_L!4qizy8@x}o%8he;x+bPPdC4}GWd4HAQuv?PDq)zsz+h2X$m`dsAKM7oB zko;Am`Ul%z-M?6%p>P%@Fire#7TQE$-nHBbWFs5z+3Ti=`}yW!>pV8Jjhzbyb4yMN zJB0#-6w|W#CG90}47e@2gHZ{S9-_qP$K=*2!ck}70j5=<{E1I?kNu(MZEhikr#{boBXexm_yH-HLHxM1b087+#h-qtc3SW!s(BM zyfX5B^>tZOo&k7*dgpj2r+8*s0z&z$x+MqSGUg#Q$d>3mdu+d}qB@X5&8Z&_*7fP% zqRPgKN?JFRC(Ur%FXy`_^h7;)o1xZbT@bYiw>3LeN;QGBAOT-fvf z+AUa#lmzoIj4>u@4(5QM5S>zJ1nDBW9G?6J*K2&Wpn^@$T?l|VdIWG;Y_Fyi>2U|8 z@jT=hx?OLRT^9OschDR#EW7T_TCl_)@z4q(*pj$oyM2+vcnXOK7D-2oXl0X}<{`4J2n{ zAx6`AdVL*3BuvD@*L)d2DO*O}!uWEGy~|uKg+PIE;)5U*cmK_^z8#2WtHKeeVd+)d z%-VtL<-pEKG@P4%2|@iq8e%*hSjl!Y54?0C|&1qNSeNwORiDPndskdtk(uVr%N zbwTd0_>o~&;eYBD0l@seMBK#U@=8@BD@#nA98HhHz}|wfI=;e+O<3k<@9Tcpk)I>xg1! zyZ%|b5PAN*pUhmIYn>;E=BKFU>-|E#E)LEW6%CN5iy}$Iwmy|M^x{1g^Sd)!T3bc2 z^UYqb6g=d>dhtaN?$gQ(H_P5=T)}r;Ihmn8c#D`Duotwt1*JNuX4~)0E>I-fhEAD! z)1{hdS|8_+6b6M7-QR8z82l}_(c@b#!O&JuBal^6)*|BS;~YnALGX(j@WZLfS{wCg z4AqLdi{iv(9 zq~jS4^;t;+@h5=+AVs5Da6QylXcK9{TTJ5{Lni=RDA~29<`M0}3e&jU_c5lA= zeD=i;KG6gM!!-x(eooN+Mm0Du_n&RUfCLqo@9WdX4$_}tR09>6Yq6z@=Uv|9X1|+) z9Mb6!sC9iLI+awh`5xKb`>)|CAGY1>f|iiIT3zOjq(t`fL)B+WL`bU41hIJU`}0&W zL~_tCq`tn-Tt{JU19KD<)a#&3dh0FzSHERH&_3p&tUkn2Ex1T|6ir~v(P-o(@S5AX zs~&NRE^8`PHXeAdJ%HHE9i~wmbYtnsy=72J;KwxRqa)pzIB2L(nnlViPw?hdOq5e1 zK4l*}W9LpCQjH-P_v`1&k{tMwknzl&<8uO9_v*QD2b<8K8?vxjGwz|b=a5MeF-Q}M z!FUk*!ESuttCBVU~NW?Ut+pM&>oUXxwtQ*tQ`e6Nt?#B z%{m?>+gfomB4yrsj&Vp@QdoXJya&{bfTI#>xg|B6PHg6@YN(xB%&lqA+?qSg@K*Xu z91UHiAgu56?w7DMcVPxT>a%1Li-78|1owZAR`pRy6NLB&&@5Q=!^gFqEj1z^6gq## zs%_M==9y&&JVU`c7n_x@@DsD3>$_Gd@PRhXP3GF|N?`f2Qgea_GvwL*dFyH54U`{1 zoZobjvnP?5_<3QndXOpCv>D%K_!DwB3cWp%&`cjwmS+l(yMFlCu37?=lb$lj=e@-DdR_mP$G<~#a8}6TMoIhe4a}T}i zS8MSlVGP2NzRp6c;CZr=-8N=(9?OI+@=?Yjut3h5;nd{mAimX6*P zm46(kskUAZ(21DheX^3g2aY=W*9T@*B_}>z5>sOre9Kl@;w*t$R}6y-Z*6~PMAHT) z9IDj{LNZ=?s1FJw))v^Rj3veRj`!qNGyp3L@A?uPfIV<%dBsEd*|3A%oOGK!!`3aU zJI>LmvZlFTW;9e7|DPDf!mt%vLIqCW(tkc}xHVIjMFZ;SYgjKB#9kUzo}>I+R3-W9 zg?7INxumth+-^pir^9GT3FKeNZ;QNb z>?kOc`iBw^3sYQY;M4JKtL%DummtKo3uGHxHvkdu&H6YNe2Tw8(<3Qm=LBHi=t76! zBhjp%?_L6MJAI(f8&Bc)_e{qD;5m4!*>l^<*$hmd%Y5a0kk_;jme}%biOj_uD$d7t zR8ikFX?DeE7s9l+_8}Ni>R2=T4bDdlknv5TM1jV8oPsoZ`LLrydT@R$nMi$_-jstM z&x)$Ks2@Ey7XW{fw2(v97-K(uQn0`ksjO;d?g0C0=|$W!d$XYj-#C$xj7l(j;v$Y=^K#N~xWQ`6GY(VGkPz07e@f@2zh1}(QRAk}Vd zs-p<35l%+a>VNpJCcPs9yO2Gl)?#=L`T6!yvh#WOIx|+3Il@P5`FO(zziCTmUr@PI z^9~nFRBAM+=qdBg_h2oP@5%AaU^Tcf#@B2d*noQN@=`;6{|n9aS96^{J;kH*)~FOx z1NRCWnpRZm^@&Bhmb#XXi7J279V@k+LGI^GsxjMhHx5=Y9M&55y)*@r`NcE)PqO{) z9s8DzElKuYojOzL+`Z<<_{g;9}c)YgCk9_yYA9tK+f1H3a|B zx&IImsrYP0KBKw_mrHP z=Xo==fG>y%fQ)YfKAq&N+o=L@$RXV?`jkOK^!_~xTsqJX8#1Wo*@=Q$tBU@Xj*ETf zOi#T3CC}m!X4cdxLs(HuiR0$ZFNfxs&1uA`^xsuFnHc6F%f7&@EU78%PooGT-33Yu zA27o&;y^u)KBAX3S(DlUtTKd!WPwH+@cr*#1J|EQlKK@X~2Rc3$?c7BYF8a9D zcr&b(R15tJzOM$)OHgef9`yj+_ALUN+n3E^&@VI5qM!05_caL7HW{|YU*$5(XmqVi z#aUVX9Zky=NQbs==dOr=jqd6%?2{fZ%d2d`;_z|Lx~j1biTk^{iX$u01@(@z4@ZU# zwli7Q;>1A=Pl^wOt?`}705bR7a2fn>AUaFa4exJrBv09Y{7foaMiGRgF2}h*ur20g5*3D_yM+--y;o zl|#lR*VPXH`@#mlp)wUS)3bw!7;F))y|x_Bt?pz#E?cwFhl&Hf)G;fG1p9VSHVMEw zwl1p{K*w3;rngbvV^zN2S@@jx^xQ6VB91~%I$2K|T}GKUKi*i#rxV7T_}>=|ZT|P# zr-Pib&g|3QTE@@0J^5LDf9gmEeSOr)={oXG-Fv&*6@?uc>H>OL^V1s=QLYhZfIBs^>m(Z z_&67~(z<@4iwN>E=pjnlqg5M6QA3~rNx2|3>L`JSk%!F(1tm)bvUZQ_PEHqI?N9yOTNtqS8&*6J^m z9qNjC`K~HKLMzxZj!5*4lImi1?2)RZq@#+?k{<=(R*j!m7JFNE>g zS~ID*2cmwZ%;s*)sbOn|!Q9AW!gW+Wgb>l5TX&2Mh`VjD0^g=(I=Zk~5h|&B~(8pqYOW#3#Vd0O%{-J>8IO)gG}4-Uoxt*9OE-*Wa0C*rWW=jQRvU zKS!H5<2*UzRKzWLBhUt_6OI1JbaoaOE(UFr&@GlB$;()ni00w5wCNw&UVf^)Z#_P7 z05|5s!zw9TeAKE%=cy0z*w7V<9oq9AAw6Zf215u}wIn>UEb&ooATbZZ~%# zlev1(p3$De0=Z0|6tI1hZ!M{35=xnMHF^a9d+0lVHKslKqiM6k?+d$Ou~lyTH!M@N zAc@D@i`_b~_kM#)m1)3ViL3kRwW249U&mL{_c`D=c6zD6MDbw|s*h!B&B|-9u+edH zi@7HF(xtd`I`33e!@Th!#}#RH)uR4U86hquI!ii(^GVJ1e4rTWQo^Cq6+?AU4dBi2 ztu_+NM#qcU{uC3Q=1(5hPc8m?|8mpAvkG^>94C(c*;FnBOSFyB<^5;}FE-%Nb#}!W7?(0S!n=7i0|M<~6X0$HrT6M`l`<9~{{sp8`Dg$D literal 0 HcmV?d00001