From 8dccabedaee3450642c58c75101ff52c38508112 Mon Sep 17 00:00:00 2001
From: Andrew Dolgov <fox@madoka.spb.ru>
Date: Fri, 1 Aug 2008 04:38:17 +0100
Subject: [PATCH] merge two patches: STRIP_IMAGES and ENABLE_FLASH_PLAYER from
 Sten (bump schema)

---
 extras/button/license.txt        |  10 ++++++++++
 extras/button/musicplayer.swf    | Bin 0 -> 6134 bytes
 extras/button/musicplayer_f6.swf | Bin 0 -> 6463 bytes
 functions.php                    |  30 +++++++++++++++++++++++++++---
 sanity_check.php                 |   2 +-
 schema/ttrss_schema_mysql.sql    |   6 +++++-
 schema/ttrss_schema_pgsql.sql    |   6 +++++-
 7 files changed, 48 insertions(+), 6 deletions(-)
 create mode 100644 extras/button/license.txt
 create mode 100644 extras/button/musicplayer.swf
 create mode 100644 extras/button/musicplayer_f6.swf

diff --git a/extras/button/license.txt b/extras/button/license.txt
new file mode 100644
index 000000000..12d609e12
--- /dev/null
+++ b/extras/button/license.txt
@@ -0,0 +1,10 @@
+Copyright (c) 2005, Fabricio Zuardi
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+    * Neither the name of the author nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/extras/button/musicplayer.swf b/extras/button/musicplayer.swf
new file mode 100644
index 0000000000000000000000000000000000000000..39c8d5398aa25ece769fdac328caa62370b4f24a
GIT binary patch
literal 6134
zcmV<S7YXP?S5pVdMgRbKoZLHEa9q`ux4U1ro+N9rEZfL7xRJcci@dNHjJ4WwOGfUN
zwSW!dG_PAvQlsvEJ>9RpFc6%DB@jedEEeMc3CVzm5JHH7FasojVQOY-NHWw^YAQAP
zm;!31n4)T!s>u(UbI)Dg(yt{s6@KC>tKU8MoO91T_uO;Nz3;q1a+Xv*MXG#ckAHS{
z_RZi?LWqwHBG^a9$Hz(i(!TK1zq=tjyfbzB-pDTrht}-(jXoUs&wJNC`%-<SMxGnG
z;S}k4SXp{%?csx;HN|f~^wQ|Pr1RqaPmlZ~x$g=6$`kj!zvy2(|L}+ZnV29)27Gz_
z%=YR0Rg2!A{b=2AQxj=9Ia^r|WBY;souLr@Azje!tX+%}`N^0*t`*Z}ykHtR@+Qdu
zIN%iYPc72dpSkJmzYlE5{$}Tos=El2Phs-;U~Gqcij*&x)=q$Yw*ojwdUt%d;{z^U
z<L@U5|FY|6pErJZ@UdL<!H;g8y7ng@7hXR9-?!bg<fTua{eJI(Yn$Fq&%U@}SL8R1
zhky0_N9P|o^Uv$2bDN+4-!IOd30^Vv@vGgvJI~$o_&q=U;<s;S_P_Pymdy6|z8n4Z
zf4%lk-~Qx-^)DC$*^djKzrO6&sg4&xf}22s(3h(rShOh^r2=O9Evl3tX*fH|)-Oc$
z^PN!8N6xEDm8v(M*zw*oXHRu;*t@^~=4U;>_{#XxXEy#|P~i1`t@*9<v;T3jcK>rD
z0`IQow;y=7|Kc0-2&4LLM15CCeWwj=ER~%gZw7CN9#u}5{;OZQY2U}A`|f!B+~tkI
zO+9!1!}&W-Z(mW>QUB!{aiuU~RTxPF3SB9M*7JEI4{Nj+;8kQ|_KoAD<D`$o#|@DA
zzL5`a+49beMm9W3s&D?c@BQu-(sbwjUub=wKHe}@e2Pp?%zpkr%hPN7-wJ*8r0>ad
zzZS+>EsV3uX`Iz^+(bMv0mvX1Sp*#nsS=SEkpo&P%R6giXFYb-kORd+D%n#sO(P3(
zhXGm(7S?eR<z{~3{-?+#k9_dSH)<c<_Q`F8ys6dzRvldjwU+K@1=uY`c6B6`J(?<{
z5@|i2U_9Bl^{#R2*|>wSr}RAO3~T}D%zA2E{9lI3%p|V}P=IEdT5|G$aWtiq_T|8q
z;x0zq&e|QwbTNs?2esssHlY{Vl18TOmZFv)OSNU_P&pi`%|6}P+IKcl9(O0J-y`vf
zw2{!#1n5XCakHK@2_q*qa)-9!X{`Wm!6>B66m3!mmNbf4lTpO&Bz&UwNf^hn0AX5+
zC(LZA>f*dj##4D1$;`vtNMS0K#k~<XQyJYTnq+V9zV6Y1k@)bn{n7Y9tb1>Kr2jx~
zY;=SajO;`i+*mZ?fm_U{+vO9{(t6&6dC?I$18(4y=U!%d!_Z4IC*sKr*<)l){kVBR
z&lX7*9!5~$C_LG_`b|AUl10!~hCUWZu2`5Pxx9Xq;Sa)7$|x2HDlnZYm;`4Ih|rE3
z`7u2oH#Mr4WHF!DvqCdzBdOs^Oz7t5&;Z#B8m5BoB9o?>+qHG;F+Fj!cB0M5Pi&>E
z%*j+C2e#6Qv(^hqEvJ+2v9T~!K-e_G*CT#diXqq>JJvRt8l&n!D@)`_cLEyWJ_aPT
zv!|F!oBdff!wl63uKJ#IDhG2lOv5|@qZwJ776(99eN1fWFjadv&0q;!MfkxWlwh$k
zVOtDvlwqb*q-$$KD6UP`u=i{Z3v@B9Hb72gQzkc2BWshzMi@4xylE2?%tA6r5}(vl
z6O&*v$5LbFB#9pfox(EVx=EZ93|P?3Jx1Ed7f{kcp<@Z&&`NN6l90|>HqfX=gDWDQ
zq=Z~MvVnt(29k+JVuC%T_3Q*li^Gy_$EgTIksgxQGsaQfTD3%coD&o#jbq#gNV$bZ
z;)T>Ly0g_zidk6HR8}7gyE+P!#qn`ahG`6&c^d4@d{GzBc9Pe!V@9SO)<lfM*ToIk
zKr~GYleCu5(?rkG%>j$2<#0R5eGsN}dA-1P65DNB5tK!ZirJEp?S+k+-<Q`iwpmbT
z(3{Db)?Ntnw)7Rku?!A$A0Fr*9*NT(NJl+1Jh)G4X}CWc8R!iki0$nqyE~6((&3|e
zz5qhDH*as-)*RNeNrM_#d-LeXzAaZZcXsTSBU+fvVW7+w!tLQ^z9o+ra^twKvxTkO
zwl;U{MvpK6WF3S(ckCAK0U%qgXPkhUGGP&RYuT(}N*rg4F%b{QdG}T!TL<yl81y-e
z=v46-2E-QUD-s5yNEIdlBC;K@UCq>O2wDo3QquQk$3S8*r!Y94Tv`WI=_NrOR-?_~
z8l7EkH#&FkjpT?EfjQ$F=cGUqp%Z*S@p-iC(I+)<@p&2)@<w`&!Q0s0+_HTh85h6-
zMWRuOEeUMzoUWM=S~Ft5#VFMX1{Uf;*#4k#iBnLZ?UBuh+Ix6UU+<o4A^Cv76OZ%Y
zFVX@GCaD5i2HoM#tfAeJE3`RjJv+yWd5v{C#uH#joTl_}p_tdh=A<4Ltf&N3XlhGB
zBHGT;-~zMPsrLZ~!FeW5n0g`3gAX`DNW<u^baq1wgM6t!x^G~#H@c_4JKTF{q<1LV
zO`y}%sbfaRa!dmWV8n4FAI=ycmoRP`rrHRX3Ot?M4HCn(Em&$2KBg7IFry@7Qabpd
zp`q9i=^2d>m*O3%vHMWrIMg{#pw3KQ*f4I!RMJ3^(Vj7fvu}GxHwB`-xPi!4LgQ98
z2Q$o@m}c3bDe8@n(zJ9^Pfpn)GX$xA(FbeNLsx`%iRK8dj|Mq?f+Wcpq4^<A`Fi(;
zMbei{>sns&!7yJaCX)~%#*68+$Ua&!%#Z0UVUJWQabhdahPG<yG>wggHtLT__wcZ8
z4(5&AzO*(`AT#vXw2J=qMH?E<_{l{AR0ANH`K$h}*m65A{TpBumpGVEy1;yN^smCG
z*AS0x;Gryx2mKplobFqV-K$Evr)%jsB+x|2bw+B891P4Xvd%P$KQOd>rjjT=HB>PR
z|6(vYG%6%UY-X8-uBvJ!9(@3%3J4YYphn?WtyX-onFdl(LD3eeH6>_^EHqoYHb{88
zj?H5kVG`6?5<G@b6`_bY6C@S%&|S?*>ltYcN2-Vai=(`+!P(aU|Cc~th^US5xHKAp
z*&{P(EdyCY^kF%bs>Y@!pL!AW)zOD0OB*Y?V$(HvW3-X@jKs~Pfw-tvqIT6)6@H3;
zahGkdCS0CN@bBuO<?}EKGe(!r&j@~kJ}0*>!gSG$I4x0oYmK9|HX6m>by3>@>)F^F
za7iy<5>Z0c+<Kt{S1|7C#`Z|55S#ue1=N$7YNBp-@!B%~gj}n@dfNbw#<UedvAcW(
zjM{tm;oohmQf#i<qk!wj4dGXJOw(Hk;%_CtMe#1Pn<1iK9-V=m+utw%23$ut@Cq;B
zm0rM|0!TMNm4Gg18)6TRc~!}nJEM}L7*5CnT2dJH)kDi+Q#K=uU3L~ubzL*GJjUj_
zTh5gcwJ(I|8b+kFl4rO9cc3~uEiDRA7X<|@5ZGNe^D+FX$3i1?trX#Q81f#8yhkE;
zI*^@0?ky3!SBkxtiCxi3Uh~np?kmx8gzL1A|Mu|Te)Mcq$2~A~kYn%Xz1Q;J0secy
zfh{J_wo#0(mK1M-F8EGMhhm2fb^&3C`aJa@l1BE+tq@X&aFH)^dm^UrVcbFz&K3lG
zr(X%c;C*z!*Kxpr;-6chAVqLUq;QESsZAn<OEk<UGE$E3j(PY}Qa4|^%Kkx|1`Kie
zEMLoBww8fba#WFPWO<8G5fqxOpit@rt{aX?SLX<U*GH+i+tE!P!nQja2{J&q9ua6T
zY(j#=o&?Udx&g<(aftr?i+*dcBiJ{`U^gIwHP~0?BmnO5=_QzEv=V<V&hs_m^V9j>
zr1<TG)rh~0tDMU8kdL|3wX(O4MQ9BGB515-hMkCd^HQv)bm2TpK&2;Tp3x%A2D)i1
zL0fGlo*ZnJ<>FF0lpm2)qK>J$P3|?8{9*zQ7K`xjxb%-D`;DPZQ1{~1F<G+27nkM0
ze70@yo@j|OM-eT8UOF|Wo+F;b5+gv=oBc69*C`%~Ks=w1E^XQ~`9j>K7H$WMk+Gwo
zrA)#9Y}DdyabebI;3OVI>YSY#`u>vnDwS^UJeLB%g-FB}RZK1e6{3kS<RZcm`KS%q
zuO72Ej`KzhBq53)t->YNW)$m0$-KSi!5z_rG?0^iN`8x-+>yVFoE*si%4<_5h}?K>
zD9NqmSGj_yw_z{!1g(hu)p@W{2!|B6OVQbQCrdea+3QL=cd(SNp*Bj>boJ}D<k6%1
z8@5c-qx+i<YWTS$GG}(`!QxIgi@O{w=1X@yINrTrVwNkrSX8p3(`~lHTZo$Bg=hZU
zY}o>SOKiKF;r~6+7&pn4a$Vo>Q{nHmbCxa^&uJc0{dO5SN@(YbI&0@9W&1aeS=fDL
zBHdaWvq5gRbGY?|E7EfGQdW1OvYM2RXNy=qH~su`-Qea}8o_)q=HH!rZrT|}D6f|J
zd6neFEXcfo`~3d$d5LQ@7%XKSQGs-=&4TC4Xi5SmQ_y!x24%99oU9*^J~k{3`WD|j
zE7y-U_22?*>fo1bQ*+rw-vXDh#L(Q+T{EAdJ~pp0mob(45>w%e@qk>6<B0N5d23=`
z>S2Hf(M$Pb@>u0e)y2KjLK7}7$~_D>m?EJdbOi}JOMp<PN(>+r^%QPqi0!F&aW0Rz
zeBq-===O7UM19PQlLy}8rFf@H@WhexkJky^DzIjs2B^?a0Jx$=Xp9pT*d@Ga1)4%Y
z*wT*!R0U_8%c(f89Nh@W=Qf93;@<zvM`!=t(%C=hJ^PZw+l9_v65!P(?3+LJB6%6l
z>7g<<RV~i_>QhQ!A)IE0=u%XPrFeos&ZYz^!chRwtD|kio9;<(37#IpRTxC0{+@ks
zi!DV6lG2L=zxsXT@l1)R57->T4{S^USnx?x;NArV_&-u+d4a<Z7oZcjS?$9!?_c9U
z9t-*G0_+WhJ>oW_d34!lzy7x6aAkrPfX9ek9W?Vs@!L^#&v{)tIn`5gS1t8^wq#F-
zq@;f%Gr)`Fmbrt_yMMfz?NFb$-~9ua4x;v}KXQSC6x^e}-~!VNEwxYmu?vh>wGs72
zJJ>1z4jDT}r<Ypi9$w9qNs?ohnZWYavIxPS`s7nYyqB<U|Gb`J?6!;YK&97{65l`(
z@QI6c^>jN3N<yt9n2XD55faG7Wi<*>a&cKyLZ!FrO~?i`{-D>5*E(FZpV$|z8c;>M
zAJ^?AW(R@t41Vfj5D@JiI|HRWgO^<l6w&UpGw_#Z@G}<!zi3D741DUj%jtV5cz8we
zRlHA4<5hS-(|N63==;^_#aId1O0~*L+dd0i&ZclKTFvf0VUUpXh9JmqGx<|cJ_Y2H
zDxWIcR>*YybB9xzz#I6hOPs63^#Z>>RO4`RRrK5*^ogqm^>6958sPn1qzu=&147RQ
z$l2p9XOE|xE2Ny_0=vilrcZrC33|)jvmm+qE<o-+Z@K&Ckvm}JN;bLQq#@Qz?!E=d
z9k~FxBi?dH=8;>qzh01Xzon?&a!1O@O>c)#un@sU(B23%;2S0}WCaZwH_&jYgkV?I
zV<7qjT=XK`)Lpo#f8k7b75aYF=R6K5_<j|4<}22%{V&^b%nHitN@VqRc?IwGX25;H
zvgtbULNFK46edU|_1Ee<iZ8M*MlaC(>S9cccw<S$C4_J%uV&SEV-N+Ar@!o5zU??J
z#;NnN8n^+)6V<>C3#|s`g^#nft1BpvyI1-*Ur04DCvRzKu{B#-JnKEJN~k!ksflAP
z7csD?gBJulE5%%;9gHBJG_od;>v<Y!lX+b;bu7oTh8*UM@pq4?6~h`6thliklwqYP
z;?rp{@vH(TcNt_(D;9K)q?`C~oslkPbXPM>+q}oCs>q|1$XU4JT~1|{TYFYN$p==u
z>=;oS8>7`I06#(O!@3KooCE&(R<UeTu-l`Gg=Ly6$a3PSU-1Rlt$t|TUGu$#uMltH
zRr_1`%IVegOCSYvMW$z3I~t&gBdtLro&3yEg-ohhPC-*kaiOkR7wRjilM4ETlVS(U
z8qBM&ai{RLL*n(Vbw*l-^rVD7Hq&S;!l@J2v-Ki5uTroqM!3DjT`?&$IJrggg(I6o
z1DgY+?L^F>o96Fw1Tp@S5+~bO0%0;PWv{2`D_bF4mAKvK9(Z~A^EE?VB2le#Mb;a&
z5zhoA@=88siI^64xe@9Rp-Bp`;&hPp$*b-L>p*doIS{<>QddD1w$72MvcWEvye^q<
z-nBy=9Ch`4s9}kEsYI<K_O)$}3XGOA7;7ZPT6atgp(Xp)#l-aa4De2N9XomX)%8Qp
z?$y}6p<H(hcDI)6z7)GRTHW&pTGa})n`EF}f;>BGw-P$1B?}0&vI2azwzHBlxciX*
zss%<_Ny|S2iDPx)p#uXXHIX&)`t_43)BP=oGvqpI(A|IyWHV{y@j{dlgD`^z)?SL>
zjGy4_nM|d}NY)tBqqIJrm5tNpby~Wp6ImK=eTtIGfL4fAN{$uC!>L4?7NN3oeg64D
zTbO?c<M@yuoyw%lU11m`pV89x3gx-J9I)XrodE|~CZ6{Ggn$%)OIi<SU^=u^I;Z6e
zI#qIfOs6MiS&6#0ccA;QyK>Z4jf#c4^v}@nutVtwE*o`xF5&o;hf9tP7`;26*G`no
zdP8ftr1X2+kw4=Qy(CmFMAwR_f`z6Lev=iFBlN^rv5a-otEyerB{6u@N_H-wzRJ4)
zVu78%WVS`_MboQj<gRWdl{t*rRk?Vo5HB#>I~Sk~Ym`bn{M6FFN)<lW*$+JR7!=gS
zif^|R1VbdgIj=(AB1pdMr%WoT5>ELU_L8VPcd4uahu#33nf&a&|L6S9rjbQSJg_Zc
z<w<~!0W!*N5o~D75iR4h9~FDpZ3QP}FCbtXg^$xk-$&V(QXXR!hVDmnKS#fdJ6|^5
zMM5l<-VR+vPd{9=m>sRjf!0(GZG{7EMJd`!CJ&@LQ?m?dl@d}fmRGvCNS8#|UDXQu
z#>={j3h@F@burpsSQJnxgt4&o^x;gGVwApALL=+gbt-CRB~v6oUiyNmb|qUvfL!$j
zX9naUB@}b$mvL*xJ1RGn)fcV7H<WAp`JHYl+B#-<>v=Q8vIdZkLN{1Y$J;u(SQMpF
zB$*tq6;sScLOY171FtKqutXenu@SZeW-OIr4=|J81Oipj=4QpGh_^PM1IqLYy3GQZ
zC199?90(3=aMU3i(W`7(=g4{+#4X=uD<f@dr|$&V1>M&6m`HWqGHjDs)ArNVbOW-D
zE%UG)p3rst{ah<K#WS7DxHjdRP__eTnkKc$?BjZtyl=Bz`yjF6=bKD`_-!xi42asJ
z%kTwkKv7W3{)57@ADX4t$(JJry<k8&n`JTK?YtWOGQ}rXUh3+Ku2`AUN^4^Ht{_b8
zLiiOw6GB!o{yhqDCBv}Wk(8*uYz8=g7FKO#VLN3O*2uFk_ThY^Jqu%BeAhl7pjdYw
z@vW7q7WVL5i+=lu(OP~4C_jp_zBhJ!1n5joL=GZ90<?WhXMJ92eK(n4pI#Oq;VR_P
zDbxKyrsGph$48uw?>q4wLt*Z3Vuwwdcj1?&2Oyz=OoDxNs-+=kBm*P-lyAMSuz%QX
z|4Q5I7H7VE;|jkG#3FUYVIHY}<tzOpq$HXsc+^zX!2dULE;$IoP!w&TKoLLqK{VnQ
zm*K#~1(-0`#DQ_*$W^!k*6Z!(*&1VHLUKysriJ@n(>6s=mcPFO4&Vd<ARq_<AwdL)
z2n0Y7#DJKf1!xf@fP|n8XcKe*9c@5gbe)ZQXEjCG(;-FOLSxfPC*_`ew9f<U0+m;|
z7?^bu;vv{`cm(z}E5+=$VrCUXqd4Z_mtt;K9Ec}iS8)n9iZY+76f_fsLvyh>))UmV
zA89F8v^#%Y<?qQ5cQCi136Ro^2;LrdYn9g5Tj}fWiODk>>Mdgp&MzoxWDB=IwT#?d
zpi^Mz8|-?09PSqksw$F5|4NuyO)Fsv8cFP!Jci;~F#jXoeAYBQ7UQZHGj;Iu@P<9`
I1za3t@9`?^Z~y=R

literal 0
HcmV?d00001

diff --git a/extras/button/musicplayer_f6.swf b/extras/button/musicplayer_f6.swf
new file mode 100644
index 0000000000000000000000000000000000000000..2eb5d579681cecbddbcff1fcabbc502345b1d9a5
GIT binary patch
literal 6463
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
Z@F1h1gETpBH%Ma`VUQU#_y!-On7L!Xfs6nE

literal 0
HcmV?d00001

diff --git a/functions.php b/functions.php
index 8e2acb222..e00faf6b6 100644
--- a/functions.php
+++ b/functions.php
@@ -3522,6 +3522,12 @@
 //			$res = strip_tags_long($res, "<p><a><i><em><b><strong><blockquote><br><img><div><span>");			
 		}
 
+		if (get_pref($link, "STRIP_IMAGES")) {
+			
+			$res = preg_replace('/<img[^>]+>/is', '', $res);
+
+		}
+
 		return $res;
 	}
 
@@ -4704,7 +4710,16 @@
 
 					$filename = substr($url, strrpos($url, "/")+1);
 
-					$entry = "<a target=\"_blank\" href=\"" . htmlspecialchars($url) . "\">" .
+					$entry = ""; 
+					
+					if (($ctype = __("audio/mpeg")) && 
+						(get_pref($link, "ENABLE_FLASH_PLAYER")) ) { 
+					
+						$entry .= "<object type=\"application/x-shockwave-flash\" data=\"extras/button/musicplayer.swf?song_url=$url\" width=\"20\" height=\"20\"> <param name=\"movie\" value=\"extras/button/musicplayer.swf?song_url=$url\" /> </object>";
+
+					}
+
+					$entry .= "<a target=\"_blank\" href=\"" . htmlspecialchars($url) . "\">" .
 						$filename . " (" . $ctype . ")" . "</a>";
 
 					array_push($entries, $entry);
@@ -5139,7 +5154,7 @@
 
 //					print "<div class=\"cdmInnerContent\" id=\"CICD-$id\" $cdm_cstyle>";
 
-					print $line["content_preview"];
+					print sanitize_rss($line["content_preview"]);
 
 					$e_result = db_query($link, "SELECT * FROM ttrss_enclosures WHERE
 						post_id = '$id' AND content_url != ''");
@@ -5163,7 +5178,16 @@
 
 					$filename = substr($url, strrpos($url, "/")+1);
 
-					$entry = "<a target=\"_blank\" href=\"" . htmlspecialchars($url) . "\">" .
+					$entry = ""; 
+					
+					if (($ctype = __("audio/mpeg")) && 
+						(get_pref($link, "ENABLE_FLASH_PLAYER")) ) { 
+						
+						$entry .= "<object type=\"application/x-shockwave-flash\" data=\"extras/button/musicplayer.swf?song_url=$url\" width=\"20\" height=\"20\"> <param name=\"movie\" value=\"extras/button/musicplayer.swf?song_url=$url\" /> </object>"; 
+					
+					}
+
+					$entry .= "<a target=\"_blank\" href=\"" . htmlspecialchars($url) . "\">" .
 						$filename . " (" . $ctype . ")" . "</a>";
 
 					array_push($entries, $entry);
diff --git a/sanity_check.php b/sanity_check.php
index ee715a823..1afd28d94 100644
--- a/sanity_check.php
+++ b/sanity_check.php
@@ -2,7 +2,7 @@
 	require_once "functions.php";
 
 	define('EXPECTED_CONFIG_VERSION', 17);
-	define('SCHEMA_VERSION', 38);
+	define('SCHEMA_VERSION', 39);
 
 	if (!file_exists("config.php")) {
 		print __("<b>Fatal Error</b>: You forgot to copy 
diff --git a/schema/ttrss_schema_mysql.sql b/schema/ttrss_schema_mysql.sql
index 59a8c83b5..c2a5ce580 100644
--- a/schema/ttrss_schema_mysql.sql
+++ b/schema/ttrss_schema_mysql.sql
@@ -209,7 +209,7 @@ create table ttrss_tags (id integer primary key auto_increment,
 
 create table ttrss_version (schema_version int not null) TYPE=InnoDB;
 
-insert into ttrss_version values (38);
+insert into ttrss_version values (39);
 
 create table ttrss_enclosures (id serial not null primary key,
 	content_url text not null,
@@ -334,6 +334,10 @@ insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_
 
 insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('SYNC_COUNTERS', 1, 'false', 'Prefer more accurate feedlist counters to UI speed',3);
 
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('STRIP_IMAGES', 1, 'false', 'Do not show images in articles', 2);
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('ENABLE_FLASH_PLAYER', 1, 'false', 'Enable inline MP3 player', 3, 'Enable the Flash-based XSPF Player to play MP3-format podcast enclosures.');
+
 create table ttrss_user_prefs (
    owner_uid integer not null,
    pref_name varchar(250),
diff --git a/schema/ttrss_schema_pgsql.sql b/schema/ttrss_schema_pgsql.sql
index c0cddfbad..ba5ebac28 100644
--- a/schema/ttrss_schema_pgsql.sql
+++ b/schema/ttrss_schema_pgsql.sql
@@ -189,7 +189,7 @@ create index ttrss_tags_owner_uid_index on ttrss_tags(owner_uid);
 
 create table ttrss_version (schema_version int not null);
 
-insert into ttrss_version values (38);
+insert into ttrss_version values (39);
 
 create table ttrss_enclosures (id serial not null primary key,
 	content_url text not null,
@@ -308,6 +308,10 @@ insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_
 
 insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('SYNC_COUNTERS', 1, 'false', 'Prefer more accurate feedlist counters to UI speed',3);
 
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('STRIP_IMAGES', 1, 'false', 'Do not show images in articles', 2);
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('ENABLE_FLASH_PLAYER', 1, 'false', 'Enable inline MP3 player', 3, 'Enable the Flash-based XSPF Player to play MP3-format podcast enclosures.');
+
 create table ttrss_user_prefs (
 	owner_uid integer not null references ttrss_users(id) ON DELETE CASCADE,
 	pref_name varchar(250) not null references ttrss_prefs(pref_name) ON DELETE CASCADE,
-- 
GitLab