From 18934b481cf81b76243e679a0923772707d63e2f Mon Sep 17 00:00:00 2001 From: shish Date: Thu, 6 Dec 2007 03:06:59 +0000 Subject: [PATCH] flash file handler git-svn-id: file:///home/shish/svn/shimmie2/trunk@624 7f39781d-f577-437e-ae19-be835c7a54ca --- contrib/handle_flash/main.php | 66 +++++++++++++++++++++++++++++++++ contrib/handle_flash/theme.php | 19 ++++++++++ contrib/handle_flash/thumb.jpg | Bin 0 -> 7238 bytes 3 files changed, 85 insertions(+) create mode 100644 contrib/handle_flash/main.php create mode 100644 contrib/handle_flash/theme.php create mode 100644 contrib/handle_flash/thumb.jpg diff --git a/contrib/handle_flash/main.php b/contrib/handle_flash/main.php new file mode 100644 index 00000000..97fa0342 --- /dev/null +++ b/contrib/handle_flash/main.php @@ -0,0 +1,66 @@ + + * Description: Handle Flash files + */ + +class FlashFileHandler extends Extension { + var $theme; + + public function receive_event($event) { + if(is_null($this->theme)) $this->theme = get_theme_object("handle_flash", "FlashFileHandlerTheme"); + + if(is_a($event, 'DataUploadEvent') && $event->type == "swf" && $this->check_contents($event->tmpname)) { + $hash = $event->hash; + $ha = substr($hash, 0, 2); + if(!copy($event->tmpname, "images/$ha/$hash")) { + $event->veto("Flash Handler failed to move file from uploads to archive"); + return; + } + send_event(new ThumbnailGenerationEvent($event->hash, $event->type)); + $image = $this->create_image_from_data("images/$ha/$hash", $event->metadata); + if(is_null($image)) { + $event->veto("Flash Handler failed to create image object from data"); + return; + } + send_event(new ImageAdditionEvent($event->user, $image)); + } + + if(is_a($event, 'ThumbnailGenerationEvent') && $event->type == "swf") { + $hash = $event->hash; + $ha = substr($hash, 0, 2); + copy("ext/handle_flash/thumb.jpg", "thumbs/$ha/$hash"); + } + + if(is_a($event, 'DisplayingImageEvent') && $event->image->ext == "swf") { + $this->theme->display_image($event->page, $event->image); + } + } + + private function create_image_from_data($filename, $metadata) { + global $config; + + $image = new Image(); + + // FIXME: need more flash format specs :| + $image->width = 0; + $image->height = 0; + + $image->filesize = $metadata['size']; + $image->hash = $metadata['hash']; + $image->filename = $metadata['filename']; + $image->ext = $metadata['extension']; + $image->tag_array = tag_explode($metadata['tags']); + $image->source = $metadata['source']; + + return $image; + } + + private function check_contents($file) { + // FIXME: flash magic header? + return (file_exists($file)); + } +} +add_event_listener(new FlashFileHandler()); +?> diff --git a/contrib/handle_flash/theme.php b/contrib/handle_flash/theme.php new file mode 100644 index 00000000..62c238cd --- /dev/null +++ b/contrib/handle_flash/theme.php @@ -0,0 +1,19 @@ +get_image_link(); + // FIXME: object and embed have "height" and "width" + $html = " + + + + + "; + $page->add_block(new Block("Image", $html, "main", 0)); + } +} +?> diff --git a/contrib/handle_flash/thumb.jpg b/contrib/handle_flash/thumb.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3debb306b33112f27bde7a41b4f8671f50e25935 GIT binary patch literal 7238 zcmdUTcUTkMx9)@zLJI@}f`UM3ArwhKihu+ORXPbMNN-X^fuI5^=!bMMK;wGz!Cr1eFHi9+zQpt5MkeM~ z2h)H)z|6$-k1~XXp{x*ARu&dk4mLJ0go}fVi<5(slN-v%%MFD=IXQU+d13r;0RaIn zo5RdChVy@ZAA`#UAxfviM%R_v3!&vtK6Y$U+bh zR)g01)W5RX#t;2v(zPGW0$ObBTyHsczwd{c<}Z^&d%V1CzxpfxHgWm*|GW#g(=XlR zA8QfJeOqoLwr&uYQe+_Y3vrrbHHm8-jL2O_hfwdiLubvEeu|+ul9N(5T~_WZ zI#o4Y*fcrvH7{u?Q<^ZdKNNxvek(}=FL%gPmrcukDLU6o8)QDrf7s>X6OFI zr(@e#(LX9|^SP#HUMyI8rKy=OVqTW#*Odm2pvr4f`lL_zNJL?~&^WBAxVSiineSLY zNm=1q9IV&yd77D`r)SM&*_NAR?)<0RkkNhaE zY}b<;VLDS~f=}&h%}yJ)8KcT7+4^X?rga*ZYkON+K?=ayt)R)yxs@VKp1l;^7imeCHYZ$unr)4!thYu8y|ee`MGCz|h%;&Wka%!x zZBvJCdZ+))OzmI2PAQohkH2uHC;aGG}@OB7SCQYn7 zf8d+X>|uScZfh+@*fwj$jNK@@qCWRG(HA7}Ab+A@;On6Io0Meo`y9G#Xj$F$y0k0v z9wiz)HwiNw&e7OPJWZ-7A2*kc&uKHE;&e&nu6NaCJH5)vozf{4ABOAH4MnB(^0C9V zag0@!!^7h5-n^cF_kP|)Y4t;xY$a@_QQo_jdH|q2mtF5=+9Xzls#duJ?50fCTmzMN zi%CC4i>FUqSjedJo5?*tJQJN-W-N(GM{U>}iwan<3!Dz61|o4D92W+c~5f<1YhV=URv zA%S42elpxH=ZVQfHl@7V`hXG1KYm5y%Z2_3n!bjkc7rcIiGJ}jt2<;;=FWz00?I9Y zrs|DAKK4gvw&l@g?$3K{Xg*XdoicF=WiXc#8l(3Nd7s}r?Nwk_551Qri_U09t7dpl zTwd)b2mfg2KoYmUY{)$5fQsCH0-g_^4+p2vat0 z%{vJ&{~RUb*!G#lPKg)L&tYFELS?8qq3SE#iuNrErEZGoP8&>LI8uT2BXhc*xZl!< z2V2cCPo_W8^RS=$ADJ7JQ2%R|ZNtFj-<2UqdPGQDlkS}Z;9f$SS}vMoT0mdC=-6LU zm7|ff0n0%N5vm?qk8`2nS~pta>RGi zR^}blbBl8=s@eLr>qY{a!OVTD_!Ue1SM?le+Owu7a1sJD0NB!AyC7 zF>IB2s>IQyT&t8V=&OL@wKd~q=dYo%3wecM4zbov4fhY7Yvu~(eU?H%LcO5kIuf1N zz`xSO5yD{t?dYo20Z-C5ilQ-%%_gzjGC$Ze@ zxZ)6@KCP*K!|=rMniXH2`eNBo0`{Y@iRT(Td@YEplS(Rb>(O!7^aMn3IN*dw?hlN4 zRu5X*PbNgYdSPUO5Kz)zmOPF!zL#=T%A-6a3(H|cX2Erc0{{Z;zwy-C^jHjQO~=Y*Q1NSNV{zOw;&Z|5Bj_kDNL1G8f-oVr3EsmJq4gb3Q=3%P)=5+8?YxIx zPr)o&*hus_vkOvVvI9DXBDE66nvjL^S@hC|m;QSlF8Q&o=_f&QnM940ltuCscdo!! z@2gQ#PR6xzA*ha&Skp;Q>vw@ShdAZ!G53y%vf<6*yu3zCw%F5B;my&#h`HlX;Ak7J zxIHEz)R%j0H;zG`w4abv2)1kNYfne@L!vf@`|H1aGM>i_+Y zPi40Db1&JmX`Zq+22=E5J=-UK2K-`EvX#V!1!YK-2wN;DDsiWc?Metwo%(qKF`!+# zM+jTj6fP5T4BuMJ)X9~Y6*O{PhUW~+wOqG^(+%Dhce7uDBV+@T9fba>Qy7ii2rQ+< z?n@{7-VE><{g(QO4>3?-XxPL>0*_LIKbW&|DmaVWiwEE=31Gu*PD+uRl3s@OEw%cg z%g$##W(Ng4#L2S~SKst{yW&!=t+LwOYNwi{BxgyXj##&2xmbI!=A_u7$v2PO_GM%f zhXmdWCavHOXHRP;G9{d++sZh0WTRn2<-qc`kx3Lc>5zr~?$_}zXG&VUUpBVhk)J$* zHD6A0F-3vTBQX_Te|1~V0MONz#btG~TRMl6yh4B_UWwQ-G)>Dxsf&m3N=^qYRYlz$ zFj1@;UKsJcHq83^_$)0vCwI&^NK-YhUEdGr=>W71nN8K4r3gXe0ST9w0j{1&o(*=7 zLY^&1#dqty_?Z_m*9RyjPI<>YlVhHTKF%LY%f7BF?Z0r;8l7`O();6brlv$_c@R^k zickqxcU%@T#r^L!off#(jL-ze@Jss1ccI!|sBF`cUUOcR_`ht;9P?^;&3LHzXlh=2 zFhIt}h-`wQNE+raF5Ah+vBy^Oa@!-}-E_?Cf2O;N$vM=iU0xz3U|Wt(@pFJ?2B0EPYHI#HStW;jmky z+{J)ATbBHcEi*S^vGLg<2GAMMHuJ8Ob3>YG+0;;5A{Y?CbZKdkQ*9x!X{;$O$NOYS zatPSVM7f9Um{BoWWRpc4c7NwI$WCVaWyp!X+QP?mHf9ays@K!s6h5A%;Nm|@H8G$W zhK(sE%v&30sK&&5xN;yU=GbKymz=9v^soLr+fXqo+t?FU%M2rl@YVG^6|It4rbJPU zj0bzB<^U-L0nXc;8}1D0xfC^0vE%9VSM{Pv!$h zHd_PGC;$peL$3Wjp_Ev!(g&jn+6VhCSu0Flu@qdmt0!$->*~XzX<>6Ko;1bJmx@pm40Y)S3131QMI0|f`VTAT*n^$AWhu|Q^SFb$Fo{c$x5dtj{>ed`o(b{ zatlF4TlvX?(DQ{!lLJmj8vwwID8R6=X=`<#Zsj=!cu}VW&^0$;ccP-f64Es!Gmb z%@6IU{_Z;q1A@dg;uH;gtEjT-k_5jv*xf_uDgXq*gudaudMSYzs6AylThS`f5YsQ5byM;jNeJ9nB4yWys(ZJWVk#d<;3t4n8_EKD zxObps@w-^A^GACeFik-TYFkVCMgvQN3Zlg)iBjkz<+f6;CNSmC=$+}}o8iHXl&dUg z*xUlwxj%n0%ntukx}UabsWiaL0C2u9TVCfeB0wh0C!^@Y2y7wp^bv{m)Hesf09WL4 z$DUj8D|g$TzvH%FU@d7jKlt_`ddsYz>7{tqvyDx<**=Ow(-grpOb_w-8_!n6I zZv_z6-~#Qs?^59NtCv#?9B+ALILW*?Da`8o+-s%4ZJIm%c1P({|LZ}@kGpAws%FdTYG2+# zj+`|P779j{^7cIKWTt5FOw=b)u53;?MBF}WL;f*Au`%tqHXORp>DXJ7sV6Y#9bs#Lw(Mh&Yk9dD0?!_&woBZukZZcNHZ-A8LT_ z5EjyiBF2J>8ZDL|dVd#|`Gjout&tBZN#w!|_=IHV(+Vf2i^n+oD7LZgUK5u|*&g-i zp2VMC=wX~0LXPwgt}7CUefaD{V_JGA%SXKagenD(kW+Y{5qx_gU{>aBOR0a26Id&a ztb#EB(Tm%S?p=++{suOx%)c0!sJ7w0$D!6DmF>i`=uee`7ayhuzDsgbxO9QP>_J`y zkzVASPq=gr!MUs5_c7q9$_@QSvo^lUPBaX~c6fpg}SIDynCCL@q6@QNB?hi9V zG;@^JRgUPe$9G@G9sooN6InM3E{>dyfAVVXxkyG3VTg8I(bQO|QLu{*v(0bN(QbuK zHM*McK_se+ZYF+|1g_fZA9U2IzG5>n<3qgjxh%(ml&Pb|o>S$RUe%QotwDYV=*^;7 zdBt!*^An?_yLI11>Y<%;4r!F-;zSRBgg=h?=r6DP1zze%~_^vgmA!1cdb4geQ1nJ=p^y6g~sr8Mb| z#)MjkLViu0$x=Lr4-xuhS2*!rG4^sVOEvLfxIjeOt$Hq4qG?tvXwC~L$ z_j8to6#;fBPzlVqc&~N?xxJl?jT+*nUAL19oTPm^R{RIvp8a9>wn0!RCueYeR4ZNo zaRaXWP)-l!Q+toXusEhOz&2m-Fx?&TfQ-d!K;q)!qX7?|saf)?jN0*;+S+3O=|~x> zbjxew9deV)mB+?QVnc-ZIL#FOSia=5iy~MsQ(HG`BV1m~Hz~8eU{<;GQF=Cz#2Go~gT@ly(K~ zk-su<@%2K2Peq~sx!sOzq-LX8?KbwcF2G`kW1%1d(L zsk5fk%|6Oz7(%Z#pu!LvCuE^8teJqf#W!W^L*k=wELUTncPkCb9hE(CZ^ zUVL$xtcJ!33UfKJ^I57X1(fv}2@nCp$QHXR&8?<%51 zIC5Ow;Vg^F7k^$``U1W&wN zl!mtxLV^Sh1E0;Pe5Qm#=Y$bUzv1C)jSU}_jG*)I#&vt5d$Qa2Ww=q9#EDWlBgym1 z(O~-9*HyGk%;f!Z4!MDMT2cp`gdg_s*#(cg1hSZNK-AC)!SHUY5`L(w_zlp?i=Yo{ zKUpPd+xVQc(pRZY2(p@_-JSSu6V4Ub5>J~KTA$4>R>lNhXoa*QEVTvVd{3Ufit z&UeL&`{%wt$2w%;>^@XJ+3$Be05VT*kp3(Smcj&@me(U|Ck}vx7mqzP|0uIkqYVPX zTi&eF+IB