AAAAPK>\)assets/.htaccessnuW+A Order allow,deny Deny from all PK>\qassets/current-32.pngnuW+APNG  IHDR szz pHYs  IDATX ŖPT}쏷n!AMaC$m"t&hLm"2)d4i)G8qL?Ѡ rYDxxwo}dA4zww;s?s]D){ٸ{ g.V0t-ݺ u u+XwE܀opO=_f<P h^o+*g7`sH9Dk(ay'a,|\T*{*ti_PjI`v~χ7Sp*(~//bZR~dJG/3ჴy%Д!>yU2̹+ޠ mf85?a*:Arv_l ^M[YM3RF^pjtEZXo?wp|~dݮ YƲ~V=SZ"aT( .o|pVBiGDr/lr'ďA}]θ]W`5(Nj|~SsU=;R^1<}}źy߅ճQJ|αwoz_s~?ïEnA5;O;:}:FGm錄mO@pÍcw2i`Αl1\. assets/nosupport-32.pngnuW+APNG  IHDR szz pHYs   ZIDATX uWkl3Oxk0P3ƴȩI("-hRVi?H-D! $!@B Dv)cH(#,ػ玽ρ]|sϹ>B&']-uufm֭UoȱTABOQjF4s߽ƭD`φ ݻW-|ᩧZL(V# II`!d~uݸ OX{zqڊ&]om*SI6& PP0E',͠xrϵD[>&5MMMqvO{dJ˄"57aHQ8ۭfI8Hl;r$ F>[єɴ+E>.`L8zG:C7vS_jG]͏!…/BE^g4Q,f1l6aYx? ?7/IB& &a%}z~4[{{Ag8W/mݸ1mڴuxvhT3hPFC:D` | Θ$ݽKB2@@G:J@'Hݑ[B-9~c-Or$sL;L| b1*dXO_zEw R/i%hE& yc1GQ((ܵf64_jkMHW"|C!qtZDӼ_BL"`i{"sWVmŕ/˜DAI ٦Ozβ#:& z2]~EJF &F\Q+QxINQ޽4zRiقVΛgw&{d(zu\I 5̐4Ng[xpsr@-B_^M bȜL$_0b CgAj'NaJc*n@bdi8q׬ÇMPvJHs6bV:bE4:`gQK ,Z*#5JE)6,ʁ#]K^KB #vw ͻs(cuDNE |XTDY.Z<q<\:b(앁.YXsDm?5eg֢q8_`4{Nk}]*_TOEKp\`Pӎ)aŧ'.:I ㆁ_ЎTX-g[SCޞ!p0m9 (28h[6}&Q 'LFyf0JA0 fq;FP3'*EzH9H$” M%T cdo7|7#zFDɹlԁ@Ad_cwGqy{z\)l cK_F nlevFNԋtZ+{{ΝkDNFƠ'):m $U@ 뭞.ͯYJ瓂=_2ƭyyב&nb({яw#gF nbJ7JJ')JJJPHOu$d8]dÆ$lL&OA Hk`,(e|(+H&Z':&IBbȹ4p; a剿hƮ@pWĉ}h_ǍNqðXlF`(N,[WwP(4 Θ?p gY _kڗ v*b x H~mjŐM*و0 nѳVۋkAf@#R^;gmҴ NXIUUse3W{? 3wb9IENDB`PK>\/qTassets/ok-24.pngnuW+APNG  IHDRw= pHYs  IDATH mLSWmo@hkaP4$(ʋɾ܊Kd#`lֲ1gt& e0`A hGA!PhK[/lq{9?BXqü@z= 06†_#`q^8Nh%BG9OGTd\a~]'@MykG>Dsx'y;laxRdٹŹ*+`6<\((WX,i(*V?5%-q ˲ՉNٯN>NoN(T01%n\!PD8D~ ֖$i0pXI_\ l8ה 63ql Aw@%<ϠQX@iZvefBRD,gR枦;;5%֦݁hWٗDӂ"sPbzoD)mJd^eNB5nPrZ|ᴴ#DLu{M/d1a#L;e@_ڲmZ*QN`h ޘu-ա~4d446Vm{(6*PC<5ۏ^Ene;4i(c$77/Cp.;4Iz)l?xd>edlx&ɒqbUpqKMUfuSnZJd?FNBvv80p}bmpy{f:C9R4$Zi:ްP(?n.8utt!|p9r'N{; &&"JJˀaldy³hZ2FH9~w,g,"p.B&U=14+ӥ D.ʧdZ$a4Q~JnvKv;(Enhi"܄b3:52>Q?~ej875@> :[n&oZւXQDn05X,*h>̅)|naL|k7CőG_}?5ozCa=k[ 8Ru…+XYj-PyAU{ΡBF?qX"鍊|2b/iG2ar31b} GOZ]4qcIENDB`PK>\п assets/liveupdate.cssnuW+A/** * @package LiveUpdate * @copyright Copyright ©2011 Nicholas K. Dionysopoulos / AkeebaBackup.com * @license GNU LGPLv3 or later */ @CHARSET "UTF-8"; .icon-48-liveupdate { background-image: url(liveupdate-48.png) } var { font-style: italic; font-weight: bold; } p.liveupdate-url { font-family: "Lucida Sans Mono", "Courier New", Courier, monospace; } div.liveupdate-notsupported, div.liveupdate-stuck { border: thin solid #990000; background: #fff0f0; padding: 1em; color: #330000; -moz-border-radius: 10px; -webkit-border-radius: 10px; -border-radius: 10px; -moz-box-shadow: 5px 5px 5px #f88; -webkit-box-shadow: 5px 5px 5px #f88; box-shadow: 5px 5px 5px #f88; } div.liveupdate-notsupported h3, div.liveupdate-stuck h3 { background: transparent url("fail-24.png") top left no-repeat; min-height: 24px; padding: 2px 0 0 28px; font-size: large; color: red; text-shadow: 1px 1px 6px #cccc00; } div.liveupdate-hasupdates { border: thin solid #999900; background: #fffff0; padding: 1em; color: #333300; -moz-border-radius: 10px; -webkit-border-radius: 10px; -border-radius: 10px; -moz-box-shadow: 5px 5px 5px #ff8; -webkit-box-shadow: 5px 5px 5px #ff8; box-shadow: 5px 5px 5px #ff8; } div.liveupdate-hasupdates h3 { background: transparent url("warn-24.png") top left no-repeat; min-height: 24px; padding: 2px 0 0 28px; font-size: large; color: #660; text-shadow: 1px 1px 6px #ffff00; } div.liveupdate-noupdates { border: thin solid #009900; background: #f0fff0; padding: 1em; color: #003300; -moz-border-radius: 10px; -webkit-border-radius: 10px; -border-radius: 10px; -moz-box-shadow: 5px 5px 5px #8f8; -webkit-box-shadow: 5px 5px 5px #8f8; box-shadow: 5px 5px 5px #8f8; } div.liveupdate-noupdates h3 { background: transparent url("ok-24.png") top left no-repeat; min-height: 24px; padding: 2px 0 0 28px; font-size: large; color: #060; text-shadow: 1px 1px 6px #00ff00; } div.liveupdate-infotable { width: 620px; margin: auto auto; padding: 2px; border: thin solid #333; background: #fefefe; -moz-border-radius: 5px; -webkit-border-radius: 5px; -border-radius: 5px; } div.liveupdate-infotable .row0 { background: #fcfcfc } div.liveupdate-infotable .row1 { background: #f0f0f0 } div.liveupdate-row { padding: 5px 1px } span.liveupdate-label { display: inline-block; width: 200px; font-weight: bold; } span.liveupdate-data { display: inline-block; width: 400px; overflow: none } p.liveupdate-buttons { text-align: center; margin: 1em; } p.liveupdate-error-needsauth { margin: 1em; background: #ffcccc; border: medium solid #ff0000; color: #660000; font-size: large; font-weight: bold; padding: 1em; text-align: center; text-shadow: 1px 1px 2px white; -moz-border-radius: 10px; -webkit-border-radius: 10px; -border-radius: 10px; -moz-box-shadow: 5px 5px 5px #f88; -webkit-box-shadow: 5px 5px 5px #f88; box-shadow: 5px 5px 5px #f88; } p.liveupdate-poweredby { font-size: 8pt; color: silver; margin: 1em 0 0.5em 0 } p.liveupdate-poweredby a { color: silver; } div.liveupdate-ftp p { margin: 1em 2em; line-height: 140%; border: thin solid #00c; padding: 0.5em; color: #006; background-color: #f0f0ff; font-size: 12pt; text-shadow: 1px 1px 3px silver } PK>\^ONassets/warn-24.pngnuW+APNG  IHDRw= pHYs  NIDATH UkUv[kX`PM . >Pė}RD((m!- FPb 6`c-5MnwMi?ffx؝;ss(c ԇ*ܾ6l՚,ޓ( v3pE>ː BF.>Tnbש4uX4a8M`߃RhL<CP ]$>U`~`卌ϤiRHMNFe(o.9\Ь X 1= Vp%z;gTŁPtCmQ[Ϋ*YǦgUgvKƇ,=s0_Y6UsFe1rKP2K ;Q[ɿ2nM3A ]%Xghpg/!j A2=K_ZU(jW74)6U4#dp@)'@4lvU) i+]Śm4L@Qssj6nvZ+_ձi%*d`b8֏7g@Y6U NL5S;*f#;u[;-3"96 o9ޓ9TattQ#I6BﱁdFnvy.Bnͣf$Z q.]f YXA8A&2}S@~#q|ER{9|;zܸ m 5,U0Ġo ~=t0"Gκsѿr*!h"x9p@~1>)6sWW?E_t5aK`K)8އBm:Cb|Mz9cv>3xO=G(z~b'# -vH5k.jPӱ5Af+ox a >ۋGY{ǰ\km‹i)e?uLd7}W<ijqcX痢Ki(tq<,d,JޅE| 0RHl ]|ĵfA͚q Yڛ!IENDB`PK>\2;\\assets/fail-24.pngnuW+APNG  IHDRw= pHYs  IDATH mVmlS~ιc;q $1 #FƠ&Ԋ jGºǴNU'X;m մ`CZʀB)]nI khY~{P*Z^sy>ǹ|N"qh@ )&0\>I4COa%JXLK|FzJGm-=ֶ 5XWf.71;4tm'./]1 tK^b۾jݱEx҃&@\ܸ]_.&u)o ~pWUuQ(L6L-`< p??:[x;$>^/Knή{kxv`&|6+Xʺe)TܼO tmv>||U>~Y͏}s]jU t+B!q̐ǯ~φe& Y8,L,M-m}eΝP__z֤WNoܨQ&NS%zd3Q;ܹ^M}a .nJ<>ljR6/ȃ H"Cjewܒk+ғhj#dlvq3؇ IvF7F131ʊ%E^63#c7.>5)Ē6.Y{unbT}6ˈ ~\P3jHzũk#-gο1mˎ~0#OX-7DѨTi#%sfͣy/G LcCCp3ł+ဪ^w\G匪ֵU25>+SmXSlٵ\) ϡ+:aC7By$3sx|ӎ-Pmv%[TQSj{ MljhR|o2{脳 -6Rs"IUmg)քÕ SI"6b9(HìKYyiYE'?lCvӎl'K.dTUYīw+7 v.,UH$9 #fvipA9O4zӲ.VfBkCCkyD\ǭRҬv$|YL.*A)CD"^tjX5vFt_ dr Ҫb>4?L}}gɱ~E*Ր+f$odN=\M,+0ɻ [+7ǵ~RL}kDY=:Y~kWṲ;A 4ixytoSHSeMM[W@pW[bme=+H;,#{ E&v?^SBi&qn9Pu2B>#=C)lztM}cf"=Đ>A>뾔Kkifi9ѠS0C!Ţ*RD[Ig谬aV;[|nX,?Ϯ[hFCM %7řŕ8\8As¹|7w %DS-Ȗ{MK4dtŵ@vEo>bpҀ͓ww D:`50P.\^|_. 4Ʒ$;GIENDB`PK>\vpVPPassets/update-32.pngnuW+APNG  IHDR szz pHYs  IDATX W[lUΜK QoR"b0& /ĤM|'>ht4BbL4'i(!1z#U Жnﻳ3?̜}9ZXu9 Ӿ %LČ.6';D V6l@p0 @~Hr4VoPJRml@2lM8A Ric TTATPB:`#Ќ~؋ %"\F<-!cfAdԈp eY(S$ -@ a+$bZ5^TgyM55)NK l" Y- RfR00k8D@!2 k I !]Q9P(EU~k"۰nk Ib#?j?ucp<0=lm)UCxmIh%N~ #UPn:)=ROH<Ⱦ;iu+`Aj&$܆E޳Bŝ 5R2Տo빼:tv R#v9FD`2@qGTm@Ŷr}Q G<Պ-}Z|hM"<'(eR(w LE[n!^+1Uu=MkTGv)}rQBX⏂XkdS]T-&|`Q.`S[v7ٛwΘ WptE׌1  %SJq޼]:V҉r;K ˰Ps^|ܝHQne"fiqŒtKx`+OEYքp D?F VSE`$a>6fn?s=[:dH0HˎOt g8w"dO(@Iج|vSK(1$ZPZ$>p6iH! z1F/C6£/ < Iy㐴пXPLҁ($E_~mz]gU$IyCV 4к>QAT!l>"Ew/[HbH+h{uwXz2$sBUqVPPa]x9BI//3N4|[\5r#ZSꑱHy2Jc $^o;'B ǞMsDgGϋy1>.Do.X$a 'fR^'CT$1e*M 2 LJoI?px=1 A<(Xnc_a |cNw[_pF@DŽp_U$-VJ|P^$a i=C R,,[UxYDJ|3xƜpHyzΘ5+@.o/$>L6XX籽 ؅c[±m':+0jDDZwF^-ʷk xSm4‚IENDB`PK>\://assets/index.htmlnuW+A PK>\^^assets/liveupdate-48.pngnuW+APNG  IHDR00W pHYs  IDAThZ p\ř1}K6Ɩm"A. %d@@%Y6VEq2+ !˧oɺl3:~G11ð=͌}W̨BI,k3ݧ敃Np.TZ$\L:('1L TW\o?TxfZ8_W}A /\zVۉcKuJd!Q.*p< zH&og+|~"@  zn'V{|qiB425"$ nLu`T=A)?ڦ{<5zztQMʙ/=W' ltZP, 0v3c~NE\R&gx_'IfbEpQ# \Tm8l)Pqݍc7Bwy XQ-W9%??,"J>P;$7u f8GiJDJ^v61"jwةA HIHĒYNIr=bf kav-Mgn&%/]4w4$ZLqsl*idOArnL|/SGLQdydrd:h h^{ẄKxX>PrkUj:.9ʼOtxKT{lH |-+6h~&9ڲÉ:czN++o#< y؃}^14np'uC HBkJr?hTJHr[ ܲT6"g NQa -j ^)? ~-ȉdJ  <#@[| VUII/TsG{6Dn[2`ףCv[/R9ԗף}b?\=%x69nBpS E<: B}):>O,]\&/~a\°~5kPU,YC-ίzWOd w{)F*/.Hǿw<֋fTⲢma3ch| zgr \!~̀y$7%Flw.ާ_Xz ;RHV_ `eQ >pWLnZ\Smc=ONv3KeYgop0 )/)1KqVնΩNIn R!p&`3SJH]bc%P/ ^"ֈӑ !/7VZg Fnq&J2w;H$d:g>1i,07w}[^a'lM%ߪj˾?7t+fddTI2E^(TBͳs&)!2G~(ږ%}#\g#BQpn38Gnw_?0I|M𣹞?(g,xto -1wP!Wk&yY)GgosPHb! XY: @)>9t詿Xꡍ/=im&c;%!7moTDt_!XFXXZdMA@Bfp\ѸB/'n|+T阛c1`+{WO$]YTB<MeH<=ZG\J ! aSe+$aԿ0xgY뭦]gS =EΥe`=Ej 0+yU|w i.L+6 CBH Tf(%a3x-TZ?`fGعj]?̟z˺ǃ'sCBiЀ76M,7:T`Vbn մkL B*Rй$mPӌ3ffISOIFoۼ) 3 ~­,!lkCCqe L]x¢8xmY@lC^u!qhԈɿq[Fhu}݀|OΒ]dgC>[h|Lzb[پy{~Е,$֪XS*X/| 60^^wq:YD:,<Xlњf_,yY~IqAnCJQ,k.D|/-_ues3U%k~xd{8KC!~G=yx0bK=zLKZ/%ˎ].5tuɦ*Há!_Į wTx|d Sl۲hKNCM&6pg7\K+xUw޿G葖 [Cg_FUP%bd C&9>cH)SGt[i*UG<3oYkz{C{ޕUiSr@M8Cfxe7I/ 9ۄĠ("+&O͡C[Pq#҄$ #0 Aնm xd]sfxsMD?XfA(ULc]&IZ^OKR++Ww׆wmw׶oizS كJCjG* odj[ ƺ*#uGcQ<>nD҃rovws1ɉ{l,|ub-+2w~:5UB"ረgD*}}  dz|0 p¼rHhqc 0SԠz"[۱g Хٖ_UU bZʹZq;IʘCo$Si/Y,GN\UUޒakͥ avЛ]$⏂HʃW:>ᇻDt8!n $vȀ$f?+hK+SY8!G*}M8zYƄ)!8r>erl*QC<;&gvX%IH7Cfje^[sMM!8ru;QIB׹8,q /C-7ޜm0w񜞜ܜN&Bj}U3owJάlصS:v8%#e}Nne V@|Ɍerc)uzVPH-/ZK1'i+R׍+'^z\%]8GbCJO lnMCeAi\)plugins/vmcalculation/.htaccessnuW+A Order allow,deny Deny from all PK>\V plugins/vmcalculation/index.htmlnuW+A PK>\)plugins/.htaccessnuW+A Order allow,deny Deny from all PK>\Vplugins/vmshipment/index.htmlnuW+A PK>\)plugins/vmshipment/.htaccessnuW+A Order allow,deny Deny from all PK>\)plugins/vmpayment/.htaccessnuW+A Order allow,deny Deny from all PK>\Vplugins/vmpayment/index.htmlnuW+A PK>\)plugins/search/.htaccessnuW+A Order allow,deny Deny from all PK>\Vplugins/vmcustom/index.htmlnuW+A PK>\)plugins/vmcustom/.htaccessnuW+A Order allow,deny Deny from all PK>\.>ffscript.vmallinone.phpnuW+AvmInstall(); } public function install () { //$this->vmInstall(); } public function discover_install () { //$this->vmInstall(); } public function postflight () { $this->vmInstall (); } public function vmInstall () { jimport ('joomla.filesystem.file'); jimport ('joomla.installer.installer'); $this->createIndexFolder (JPATH_ROOT . DS . 'plugins' . DS . 'vmcalculation'); $this->createIndexFolder (JPATH_ROOT . DS . 'plugins' . DS . 'vmcustom'); $this->createIndexFolder (JPATH_ROOT . DS . 'plugins' . DS . 'vmpayment'); $this->createIndexFolder (JPATH_ROOT . DS . 'plugins' . DS . 'vmshipment'); $this->path = JInstaller::getInstance ()->getPath ('extension_administrator'); $this->updateShipperToShipment (); $this->installPlugin ('Standard', 'plugin', 'standard', 'vmpayment'); $this->installPlugin ('Klarna', 'plugin', 'klarna', 'vmpayment'); $this->installPlugin ('KlarnaCheckout', 'plugin', 'klarnacheckout', 'vmpayment'); $this->installPlugin ('Sofort Banking/Überweisung', 'plugin', 'sofort', 'vmpayment'); $this->installPlugin ('PayPal', 'plugin', 'paypal', 'vmpayment'); $this->installPlugin ('Heidelpay', 'plugin', 'heidelpay', 'vmpayment'); //$this->installPlugin ('PayZen', 'plugin', 'payzen', 'vmpayment'); //$this->installPlugin ('SystemPay', 'plugin', 'systempay', 'vmpayment'); $this->installPlugin ('Moneybookers', 'plugin', 'moneybookers', 'vmpayment'); $this->installPlugin ('Moneybookers Credit Cards', 'plugin', 'moneybookers_acc', 'vmpayment'); $this->installPlugin ('Moneybookers Lastschrift', 'plugin', 'moneybookers_did', 'vmpayment'); $this->installPlugin ('Moneybookers iDeal', 'plugin', 'moneybookers_idl', 'vmpayment'); $this->installPlugin ('Moneybookers Giropay', 'plugin', 'moneybookers_gir', 'vmpayment'); $this->installPlugin ('Moneybookers Sofortueberweisung', 'plugin', 'moneybookers_sft', 'vmpayment'); $this->installPlugin ('Moneybookers Przelewy24', 'plugin', 'moneybookers_pwy', 'vmpayment'); $this->installPlugin ('Moneybookers Online Bank Transfer', 'plugin', 'moneybookers_obt', 'vmpayment'); $this->installPlugin ('Moneybookers Skrill Digital Wallet', 'plugin', 'moneybookers_wlt', 'vmpayment'); $this->installPlugin ('Authorize.net', 'plugin', 'authorizenet', 'vmpayment'); $this->installPlugin ('Sofort iDeal', 'plugin', 'sofort_ideal', 'vmpayment'); $this->installPlugin ('By weight, ZIP and countries', 'plugin', 'weight_countries', 'vmshipment', 1); $this->installPlugin ('Customer text input', 'plugin', 'textinput', 'vmcustom', 1); $this->installPlugin ('Product specification', 'plugin', 'specification', 'vmcustom', 1); $this->installPlugin ('Stockable variants', 'plugin', 'stockable', 'vmcustom', 1); $this->installPlugin ('Avalara Tax', 'plugin', 'avalara', 'vmcalculation' ); // $table = '#__virtuemart_customs'; // $fieldname = 'field_type'; // $fieldvalue = 'G'; // $this->addToRequired($table,$fieldname,$fieldvalue,"INSERT INTO `#__virtuemart_customs` // (`custom_parent_id`, `admin_only`, `custom_title`, `custom_tip`, `custom_value`, `custom_field_desc`, // `field_type`, `is_list`, `is_hidden`, `is_cart_attribute`, `published`) VALUES // (0, 0, 'COM_VIRTUEMART_STOCKABLE_PRODUCT', 'COM_VIRTUEMART_STOCKABLE_PRODUCT_TIP', NULL, // 'COM_VIRTUEMART_STOCKABLE_PRODUCT_DESC', 'G', 0, 0, 0, 1 );"); $this->installPlugin ('VirtueMart Product', 'plugin', 'virtuemart', 'search'); $task = JRequest::getCmd ('task'); if ($task != 'updateDatabase') { // modules auto move $src = $this->path . DS . "modules"; $dst = JPATH_ROOT . DS . "modules"; $this->recurse_copy ($src, $dst); echo "Checking VirtueMart2 modules..."; if (!$this->VmModulesAlreadyInstalled ()) { echo "Installing VirtueMart2 modules
"; if (version_compare (JVERSION, '1.6.0', 'ge')) { $defaultParams = '{"text_before":"","product_currency":"","cache":"1","moduleclass_sfx":"","class_sfx":""}'; } else { $defaultParams = "text_before=\nproduct_currency=\ncache=1\nmoduleclass_sfx=\nclass_sfx=\n"; } $this->installModule ('VM - Currencies Selector', 'mod_virtuemart_currencies', 4, $defaultParams); if (version_compare (JVERSION, '1.6.0', 'ge')) { $defaultParams = '{"product_group":"featured","max_items":"1","products_per_row":"1","display_style":"list","show_price":"1","show_addtocart":"1","headerText":"Best products","footerText":"","filter_category":"0","virtuemart_category_id":"0","cache":"0","moduleclass_sfx":"","class_sfx":""}'; } else { $defaultParams = "product_group=featured\nmax_items=1\nproducts_per_row=1\ndisplay_style=list\nshow_price=1\nshow_addtocart=1\nheaderText=Best products\nfooterText=\nfilter_category=0\ncategory_id=1\ncache=0\nmoduleclass_sfx=\nclass_sfx=\n"; } $this->installModule ('VM - Featured products', 'mod_virtuemart_product', 3, $defaultParams); if (version_compare (JVERSION, '1.6.0', 'ge')) { $defaultParams = '{"product_group":"topten","max_items":"1","products_per_row":"1","display_style":"list","show_price":"1","show_addtocart":"1","headerText":"","footerText":"","filter_category":"0","virtuemart_category_id":"0","cache":"0","moduleclass_sfx":"","class_sfx":""}'; } else { $defaultParams = "product_group=topten\nmax_items=1\nproducts_per_row=1\ndisplay_style=list\nshow_price=1\nshow_addtocart=1\nheaderText=\nfooterText=\nfilter_category=0\ncategory_id=1\ncache=0\nmoduleclass_sfx=\nclass_sfx=\n"; } $this->installModule ('VM - Best Sales', 'mod_virtuemart_product', 1, $defaultParams); if (version_compare (JVERSION, '1.6.0', 'ge')) { $defaultParams = '{"width":"20","text":"","button":"","button_pos":"right","imagebutton":"","button_text":""}'; } else { $defaultParams = "width=20\ntext=\nbutton=\nbutton_pos=right\nimagebutton=\nbutton_text=\nmoduleclass_sfx=\ncache=1\ncache_time=900\n"; } $this->installModule ('VM - Search in Shop', 'mod_virtuemart_search', 2, $defaultParams); if (version_compare (JVERSION, '1.6.0', 'ge')) { $defaultParams = '{"show":"all","display_style":"list","manufacturers_per_row":"1","headerText":"","footerText":""}'; } else { $defaultParams = "show=all\ndisplay_style=div\nmanufacturers_per_row=1\nheaderText=\nfooterText=\ncache=0\nmoduleclass_sfx=\nclass_sfx="; } $this->installModule ('VM - Manufacturer', 'mod_virtuemart_manufacturer', 5, $defaultParams); if (version_compare (JVERSION, '1.6.0', 'ge')) { $defaultParams = '{"moduleclass_sfx":"","show_price":"1","show_product_list":"1"}'; } else { $defaultParams = "moduleclass_sfx=\nshow_price=1\nshow_product_list=1\n"; } $this->installModule ('VM - Shopping cart', 'mod_virtuemart_cart', 0, $defaultParams); if (version_compare (JVERSION, '1.6.0', 'ge')) { $defaultParams = '{"Parent_Category_id":"0","layout":"default","cache":"0","moduleclass_sfx":"","class_sfx":""}'; } else { $defaultParams = "moduleclass_sfx=\nclass_sfx=\ncategory_name=default\ncache=no\n"; } $this->installModule ('VM - Category', 'mod_virtuemart_category', 6, $defaultParams); } else { echo "VirtueMart2 modules already installed
"; } // language auto move $src = $this->path . DS . "languageFE"; $dst = JPATH_ROOT . DS . "language"; $this->recurse_copy ($src, $dst); echo " VirtueMart2 language moved to the joomla language FE folder
"; // language auto move $src = $this->path . DS . "languageBE"; $dst = JPATH_ADMINISTRATOR . DS . "language"; $this->recurse_copy ($src, $dst); echo " VirtueMart2 language moved to the joomla language BE folder
"; // libraries auto move $src = $this->path . DS . "libraries"; $dst = JPATH_ROOT . DS . "libraries"; $this->recurse_copy ($src, $dst); echo " VirtueMart2 pdf moved to the joomla libraries folder
"; //update plugins, make em loggable /* $loggables = array( 'created_on' => 'DATETIME NOT NULL DEFAULT "0000-00-00 00:00:00"', 'created_by' => 'INT(11) NOT NULL DEFAULT "0"', 'modified_on'=> 'DATETIME NOT NULL DEFAULT "0000-00-00 00:00:00"', 'modified_by'=> 'INT(11) NOT NULL DEFAULT "0"', 'locked_on' =>'DATETIME NOT NULL DEFAULT "0000-00-00 00:00:00"', 'locked_by' =>'INT(11) NOT NULL DEFAULT "0"' ); foreach($loggables as $key => $value){ $this->checkAddFieldToTable('#__virtuemart_payment_paypal',$key,$value); $this->checkAddFieldToTable('#__virtuemart_payment_standard',$key,$value); $this->checkAddFieldToTable('#__virtuemart_shipment_weight_countries',$key,$value); }*/ echo "

Installing Virtuemart Plugins and modules Success.

"; echo "

You may directly uninstall this component. Your plugins will remain. But we advice to keep the AIO installer for updating

"; } else { echo "

Updated Virtuemart Plugin tables

"; } $this->updateOrderingExtensions(); return TRUE; } private function updateOrderingExtensions(){ $db = JFactory::getDBO (); $q = 'UPDATE `#__extensions` SET `ordering`= 5 WHERE `folder` ="vmpayment"'; $db->setQuery($q); $db->query(); $q = 'UPDATE `#__extensions` SET `ordering`= 1 WHERE `element` ="klarna"'; $db->setQuery($q); $db->query(); $q = 'UPDATE `#__extensions` SET `ordering`= 2 WHERE `element` ="sofort"'; $db->setQuery($q); $db->query(); $q = 'UPDATE `#__extensions` SET `ordering`= 2 WHERE `element` ="sofort_ideal"'; $db->setQuery($q); $db->query(); $q = 'UPDATE `#__extensions` SET `ordering`= 3 WHERE `element` ="paypal"'; $db->setQuery($q); $db->query(); $q = 'UPDATE `#__extensions` SET `ordering`= 100 WHERE `element` ="payzen"'; $db->setQuery($q); $db->query(); $q = 'UPDATE `#__extensions` SET `ordering`= 100 WHERE `element` ="systempay"'; $db->setQuery($q); $db->query(); } /** * Installs a vm plugin into the database * */ private function installPlugin ($name, $type, $element, $group, $published = 0, $createJPluginTable = 1) { $task = JRequest::getCmd ('task'); if ($task != 'updateDatabase') { $data = array(); $src = $this->path . DS . 'plugins' . DS . $group . DS . $element; if ($createJPluginTable) { if (version_compare (JVERSION, '1.7.0', 'ge')) { // Joomla! 1.7 code here $table = JTable::getInstance ('extension'); $data['enabled'] = $published; $data['access'] = 1; $tableName = '#__extensions'; $idfield = 'extension_id'; } elseif (version_compare (JVERSION, '1.6.0', 'ge')) { // Joomla! 1.6 code here $table = JTable::getInstance ('extension'); $data['enabled'] = $published; $data['access'] = 1; $tableName = '#__extensions'; $idfield = 'extension_id'; } else { // Joomla! 1.5 code here $table = JTable::getInstance ('plugin'); $data['published'] = $published; $data['access'] = 0; $tableName = '#__plugins'; $idfield = 'id'; } $data['name'] = $name; $data['type'] = $type; $data['element'] = $element; $data['folder'] = $group; $data['client_id'] = 0; $db = JFactory::getDBO (); $q = 'SELECT COUNT(*) FROM `' . $tableName . '` WHERE `element` = "' . $element . '" and folder = "' . $group . '" '; $db->setQuery ($q); $count = $db->loadResult (); //We write only in the table, when it is not installed already if ($count == 0) { // $table->load($count); if (version_compare (JVERSION, '1.6.0', 'ge')) { $data['manifest_cache'] = json_encode (JApplicationHelper::parseXMLInstallFile ($src . DS . $element . '.xml')); } if (!$table->bind ($data)) { $app = JFactory::getApplication (); $app->enqueueMessage ('VMInstaller table->bind throws error for ' . $name . ' ' . $type . ' ' . $element . ' ' . $group); } if (!$table->check ($data)) { $app = JFactory::getApplication (); $app->enqueueMessage ('VMInstaller table->check throws error for ' . $name . ' ' . $type . ' ' . $element . ' ' . $group); } if (!$table->store ($data)) { $app = JFactory::getApplication (); $app->enqueueMessage ('VMInstaller table->store throws error for ' . $name . ' ' . $type . ' ' . $element . ' ' . $group); } $errors = $table->getErrors (); foreach ($errors as $error) { $app = JFactory::getApplication (); $app->enqueueMessage (get_class ($this) . '::store ' . $error); } // remove duplicated } elseif ($count == 2) { $q = 'SELECT ' . $idfield . ' FROM `' . $tableName . '` WHERE `element` = "' . $element . '" ORDER BY `' . $idfield . '` DESC LIMIT 0,1'; $db->setQuery ($q); $duplicatedPlugin = $db->loadResult (); $q = 'DELETE FROM `' . $tableName . '` WHERE ' . $idfield . ' = ' . $duplicatedPlugin; $db->setQuery ($q); $db->query (); } } } if (version_compare (JVERSION, '1.7.0', 'ge')) { // Joomla! 1.7 code here $dst = JPATH_ROOT . DS . 'plugins' . DS . $group . DS . $element; } elseif (version_compare (JVERSION, '1.6.0', 'ge')) { // Joomla! 1.6 code here $dst = JPATH_ROOT . DS . 'plugins' . DS . $group . DS . $element; } else { // Joomla! 1.5 code here $dst = JPATH_ROOT . DS . 'plugins' . DS . $group; } if ($task != 'updateDatabase') { $this->recurse_copy ($src, $dst); } if ($group != 'search') { $this->updatePluginTable ($name, $type, $element, $group, $dst); } else { if (version_compare (JVERSION, '1.6.0', 'ge')) { $this->updatePluginTable ($name, $type, $element, $group, $dst); } } } public function updatePluginTable ($name, $type, $element, $group, $dst) { $app = JFactory::getApplication (); //Update Tables if (!class_exists ('VmConfig')) { require(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_virtuemart' . DS . 'helpers' . DS . 'config.php'); } if (class_exists ('VmConfig')) { $pluginfilename = $dst . DS . $element . '.php'; require ($pluginfilename); //plgVmpaymentPaypal $pluginClassname = 'plg' . ucfirst ($group) . ucfirst ($element); //Let's get the global dispatcher $dispatcher = JDispatcher::getInstance (); $config = array('type' => $group, 'name' => $group, 'params' => ''); $plugin = new $pluginClassname($dispatcher, $config); ; // $updateString = $plugin->getVmPluginCreateTableSQL(); //if(function_exists($plugin->getTableSQLFields)){ $_psType = substr ($group, 2); $tablename = '#__virtuemart_' . $_psType . '_plg_' . $element; $db = JFactory::getDBO (); $prefix = $db->getPrefix (); $query = 'SHOW TABLES LIKE "' . str_replace ('#__', $prefix, $tablename) . '"'; $db->setQuery ($query); $result = $db->loadResult (); //$app -> enqueueMessage( get_class( $this ).':: '.$query.' '.$result); if ($result) { $SQLfields = $plugin->getTableSQLFields (); $loggablefields = $plugin->getTableSQLLoggablefields (); $tablesFields = array_merge ($SQLfields, $loggablefields); $update[$tablename] = array($tablesFields, array(), array()); vmdebug ('install plugin', $update); $app->enqueueMessage (get_class ($this) . ':: VirtueMart2 update ' . $tablename); if (!class_exists ('GenericTableUpdater')) { require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'tableupdater.php'); } $updater = new GenericTableUpdater(); $updater->updateMyVmTables ($update); } //} // } else { // $app = JFactory::getApplication(); // $app -> enqueueMessage( get_class( $plugin ).':: VirtueMart2 function getTableSQLFields not found'); // } } else { $app = JFactory::getApplication (); $app->enqueueMessage (get_class ($this) . ':: VirtueMart2 must be installed, or the tables cant be updated '); } } public function installModule ($title, $module, $ordering, $params) { $params = ''; $table = JTable::getInstance ('module'); $db = $table->getDBO (); $q = 'SELECT id FROM `#__modules` WHERE `module` = "' . $module . '" '; $db->setQuery ($q); $id = $db->loadResult (); $src = JPATH_ROOT . DS . 'modules' . DS . $module; if (!empty($id)) { return; } $table->load (); if (version_compare (JVERSION, '1.7.0', 'ge')) { // Joomla! 1.7 code here $position = 'position-4'; $access = 1; } else { if (version_compare (JVERSION, '1.6.0', 'ge')) { // Joomla! 1.6 code here $access = 1; } else { // Joomla! 1.5 code here $position = 'left'; $access = 0; } } if (empty($table->title)) { $table->title = $title; } if (empty($table->ordering)) { $table->ordering = $ordering; } if (empty($table->published)) { $table->published = 1; } if (empty($table->module)) { $table->module = $module; } if (empty($table->params)) { $table->params = $params; } if (empty($table->access)) { $table->access = $access; } if (empty($table->position)) { $table->position = $position; } if (empty($table->client_id)) { $table->client_id = $client_id = 0; } // $data['manifest_cache'] =''; // if(!empty($id)){ // unset($data['manifest_cache']); // $table->load($id); // if(empty($table->manifest_cache)){ // if(version_compare(JVERSION,'1.6.0','ge')) { // $data['manifest_cache'] = json_encode(JApplicationHelper::parseXMLInstallFile($src.DS.$module.'.xml')); // } // } // } // if(empty($count)){ // if(!$table->bind($data)){ // $app = JFactory::getApplication(); // $app -> enqueueMessage('VMInstaller table->bind throws error for '.$title.' '.$module.' '.$params); // } if (!$table->check ()) { $app = JFactory::getApplication (); $app->enqueueMessage ('VMInstaller table->check throws error for ' . $title . ' ' . $module . ' ' . $params); } if (!$table->store ()) { $app = JFactory::getApplication (); $app->enqueueMessage ('VMInstaller table->store throws error for for ' . $title . ' ' . $module . ' ' . $params); } $errors = $table->getErrors (); foreach ($errors as $error) { $app = JFactory::getApplication (); $app->enqueueMessage (get_class ($this) . '::store ' . $error); } // } $lastUsedId = $table->id; $q = 'SELECT moduleid FROM `#__modules_menu` WHERE `moduleid` = "' . $lastUsedId . '" '; $db->setQuery ($q); $moduleid = $db->loadResult (); $action = ''; if (empty($moduleid)) { $q = 'INSERT INTO `#__modules_menu` (`moduleid`, `menuid`) VALUES( "' . $lastUsedId . '" , "0");'; } else { //$q = 'UPDATE `#__modules_menu` SET `menuid`= "0" WHERE `moduleid`= "'.$moduleid.'" '; } $db->setQuery ($q); $db->query (); if (version_compare (JVERSION, '1.6.0', 'ge')) { $q = 'SELECT extension_id FROM `#__extensions` WHERE `element` = "' . $module . '" '; $db->setQuery ($q); $ext_id = $db->loadResult (); // $manifestCache = str_replace('"', '\'', $data["manifest_cache"]); $action = ''; if (empty($ext_id)) { if (version_compare (JVERSION, '1.6.0', 'ge')) { $manifest_cache = json_encode (JApplicationHelper::parseXMLInstallFile ($src . DS . $module . '.xml')); } $q = 'INSERT INTO `#__extensions` (`name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `ordering`) VALUES ( "' . $module . '" , "module", "' . $module . '", "", "0", "1","' . $access . '", "0", "' . $db->getEscaped ($manifest_cache) . '", "' . $params . '","' . $ordering . '");'; } else { /* $q = 'UPDATE `#__extensions` SET `name`= "'.$module.'", `type`= "module", `element`= "'.$module.'", `folder`= "", `client_id`= "'.$client_id.'", `enabled`= "1", `access`= "'.$access.'", `protected`= "0", `ordering`= "'.$ordering.'" WHERE `extension_id`= "'.$ext_id.'" ';*/ } $db->setQuery ($q); if (!$db->query ()) { $app = JFactory::getApplication (); $app->enqueueMessage (get_class ($this) . ':: ' . $db->getErrorMsg ()); } } } public function VmModulesAlreadyInstalled () { // when the modules are already installed publish=-2 $table = JTable::getInstance ('module'); $db = $table->getDBO (); $q = 'SELECT count(*) FROM `#__modules` WHERE `module` LIKE "mod_virtuemart_%"'; $db->setQuery ($q); $count = $db->loadResult (); return $count; } /** * @author Max Milbers * @param string $tablename * @param string $fields * @param string $command */ private function alterTable ($tablename, $fields, $command = 'CHANGE') { if (empty($this->db)) { $this->db = JFactory::getDBO (); } $query = 'SHOW COLUMNS FROM `' . $tablename . '` '; $this->db->setQuery ($query); $columns = $this->db->loadResultArray (0); foreach ($fields as $fieldname => $alterCommand) { if (in_array ($fieldname, $columns)) { $query = 'ALTER TABLE `' . $tablename . '` ' . $command . ' COLUMN `' . $fieldname . '` ' . $alterCommand; $this->db->setQuery ($query); $this->db->query (); } } } /** * * @author Max Milbers * @param string $table * @param string $field * @param string $fieldType * @return boolean This gives true back, WHEN it altered the table, you may use this information to decide for extra post actions */ private function checkAddFieldToTable ($table, $field, $fieldType) { $query = 'SHOW COLUMNS FROM `' . $table . '` '; $this->db->setQuery ($query); $columns = $this->db->loadResultArray (0); if (!in_array ($field, $columns)) { $query = 'ALTER TABLE `' . $table . '` ADD ' . $field . ' ' . $fieldType; $this->db->setQuery ($query); if (!$this->db->query ()) { $app = JFactory::getApplication (); $app->enqueueMessage ('Install checkAddFieldToTable ' . $this->db->getErrorMsg ()); return FALSE; } else { return TRUE; } } return FALSE; } private function updateShipperToShipment () { if (empty($this->db)) { $this->db = JFactory::getDBO (); } if (version_compare (JVERSION, '1.6.0', 'ge')) { // Joomla! 1.6 code here $table = JTable::getInstance ('extension'); $tableName = '#__extensions'; $idfield = 'extension_id'; } else { // Joomla! 1.5 code here $table = JTable::getInstance ('plugin'); $tableName = '#__plugins'; $idfield = 'id'; } $q = 'SELECT ' . $idfield . ' FROM ' . $tableName . ' WHERE `folder` = "vmshipper" '; $this->db->setQuery ($q); $result = $this->db->loadResult (); if ($result) { $q = 'UPDATE `' . $tableName . '` SET `folder`="vmshipment" WHERE `extension_id`= ' . $result; $this->db->setQuery ($q); $this->db->query (); } } /** * copy all $src to $dst folder and remove it * * @author Max Milbers * @param String $src path * @param String $dst path * @param String $type modules, plugins, languageBE, languageFE */ private function recurse_copy ($src, $dst) { $dir = opendir ($src); $this->createIndexFolder ($dst); if (is_resource ($dir)) { while (FALSE !== ($file = readdir ($dir))) { if (($file != '.') && ($file != '..')) { if (is_dir ($src . DS . $file)) { $this->recurse_copy ($src . DS . $file, $dst . DS . $file); } else { if (JFile::exists ($dst . DS . $file)) { if (!JFile::delete ($dst . DS . $file)) { $app = JFactory::getApplication (); $app->enqueueMessage ('Couldnt delete ' . $dst . DS . $file); } } if (!JFile::move ($src . DS . $file, $dst . DS . $file)) { $app = JFactory::getApplication (); $app->enqueueMessage ('Couldnt move ' . $src . DS . $file . ' to ' . $dst . DS . $file); } } } } closedir ($dir); if (is_dir ($src)) { JFolder::delete ($src); } } else { $app = JFactory::getApplication (); $app->enqueueMessage ('Couldnt read dir ' . $dir . ' source ' . $src); } } public function uninstall () { return TRUE; } /** * creates a folder with empty html file * * @author Max Milbers * */ public function createIndexFolder ($path) { if (JFolder::create ($path)) { if (!JFile::exists ($path . DS . 'index.html')) { JFile::copy (JPATH_ROOT . DS . 'components' . DS . 'index.html', $path . DS . 'index.html'); } return TRUE; } return FALSE; } } // PLZ look in #vminstall.php# to add your plugin and module function com_install () { if (!version_compare (JVERSION, '1.6.0', 'ge')) { $vmInstall = new com_virtuemart_allinoneInstallerScript(); $vmInstall->vmInstall (); } return TRUE; } function com_uninstall () { return TRUE; } } //if defined // pure php no tag PK>\) .htaccessnuW+A Order allow,deny Deny from all PK>\ߋ config.phpnuW+A */ defined('_JEXEC') or die(); /** * Configuration class for your extension's updates. Override to your liking. */ class LiveUpdateConfig extends LiveUpdateAbstractConfig { var $_extensionName = 'com_virtuemart_allinone'; var $_extensionTitle = 'Virtuemart 2 All in one Installer'; var $_updateURL = 'http://virtuemart.net/index.php?option=com_ars&view=update&format=ini&id=4'; var $_requiresAuthorization = false; var $_versionStrategy = 'different'; function __construct() { $this->_cacerts = dirname(__FILE__).'/../assets/cacert.pem'; parent::__construct(); } }PK>\H-vm:: install.xmlnuW+A VirtueMart_allinone January 10 2014 Copyright (C) 2004-2013 Virtuemart Team. All rights reserved. http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL The VirtueMart Development Team http://www.virtuemart.net 2.0.26d script.vmallinone.php script.vmallinone.php script.vmallinone.php VirtueMart AIO index.html admin.virtuemart_allinone.php config.php assets classes language languageBE languageFE libraries plugins modules PK>\> 55#language/th-TH/th-TH.liveupdate.ininuW+A; Akeeba Live Update ; Copyright ©2011 Nicholas K. Dionysopoulos / AkeebaBackup.com ; Licensed under the GNU LGPLv3 or later LIVEUPDATE_TASK_OVERVIEW="Live Update" LIVEUPDATE_NOTSUPPORTED_HEAD="เซิฟเวอร์นี่ไม่รองรับ Live Update" LIVEUPDATE_NOTSUPPORTED_INFO="Your server indicates that Live Update is not supported. กรุณาติดต่อผู้ให้บริการโฮสและบอกให้เปิดใช้ cURL PHP extension หรือ activate the URL fopen() wrappers. If these are already enabled, please ask them to configure their firewall so that it allows access to the following URL:"; LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="คุณยังสามารถทำการปรับปรุง %s โดยการเข้าไปยังเว็บไซต์ด้วยตนเอง แล้วทำการดาวน์โหลดเวอร์ชั่นล่าสุด มาติดตั้งใหม่ ผ่านทาง การติดตั้งส่วนขยาย ในจูมล่า" LIVEUPDATE_STUCK_HEAD="Live Update has marked itself as crashed" LIVEUPDATE_STUCK_INFO="Live Update determined that it crashed the last time it tried to contact the update server. This usually indicates a host which actively blocks communications with external sites. If you would like to retry fetching the update information, please click the "Refresh update information" button below. If that results to a blank page, please contact your host and report this issue." LIVEUPDATE_ERROR_NEEDSAUTH="You have to supply your username/password or Download ID to the component's parameters before trying to upgrade to the latest release. The upgrade button will remain disabled until you do that." LIVEUPDATE_HASUPDATES_HEAD="มีเวอร์ชั่นใหม่กว่าแล้ว" LIVEUPDATE_NOUPDATES_HEAD="คุณใช้เวอร์ชั่นล่าสุดอยู่แล้ว " LIVEUPDATE_CURRENTVERSION="เวอร์ชั่นที่ติดตั้ง" LIVEUPDATE_LATESTVERSION="เวอร์ชั่น ล่าสุด" LIVEUPDATE_LATESTRELEASED="วันที่ รีรีสล่าสุด" LIVEUPDATE_DOWNLOADURL="Direct download URL" LIVEUPDATE_REFRESH_INFO="รีเฟรช เพื่อปรับปรุงข้อมูล" LIVEUPDATE_DO_UPDATE="ปรับปรุงเป็นเวอร์ชั่นล่าสุด" LIVEUPDATE_FTP_REQUIRED="Live Update determined that it needs to use FTP in order to download and install your update, but you have not saved your FTP login information in your Joomla! Global Configuration.

Please provide the FTP username and password below to proceed with the update." LIVEUPDATE_FTP="รายละเอียด FTP" LIVEUPDATE_FTPUSERNAME="FTP Username" LIVEUPDATE_FTPPASSWORD="FTP Password" LIVEUPDATE_DOWNLOAD_AND_INSTALL="ดาวน์โหลด และติดตั้งเวอร์ชั่นล่าสุด" LIVEUPDATE_DOWNLOAD_FAILED="ดาวน์โหลดแพคเกจอับเดดผิดพลาด ตรวจสอบ temp-directory ของคุณสามารถเขียนได้ หรือคุณได้ทำการเปิดตัวเลือก Joomla!'s FTP ใน site's Global Configuration แล้ว" LIVEUPDATE_EXTRACT_FAILED="การแตกไฟล์แพคเกจล้มเหลว กรุณาลองปรับปรุงส่วนขยายด้วยตนเอง" LIVEUPDATE_INVALID_PACKAGE_TYPE="ประเภทแพคเกจไม่ถูกต้อง ไม่สามารถทำการปรับปรุงได้ " LIVEUPDATE_INSTALLEXT="ติดตั้ง %s %s" LIVEUPDATE_ERROR="ผิดพลาด" LIVEUPDATE_SUCCESS="สำเร็จ" LIVEUPDATE_ICON_UNSUPPORTED="ไม่รองรับ Live Update" LIVEUPDATE_ICON_CRASHED="Live Update เสียหาย" LIVEUPDATE_ICON_CURRENT="คุณใช้งานเวอร์ชั่นล่าสุดอยู่" LIVEUPDATE_ICON_UPDATES="พบการปรับปรุง คลิกเพื่อทำการปรับปรุง"PK>\)language/th-TH/.htaccessnuW+A Order allow,deny Deny from all PK>\)language/da-DK/.htaccessnuW+A Order allow,deny Deny from all PK>\kN #language/da-DK/da-DK.liveupdate.ininuW+A; Akeeba Live Update ; Copyright ©2011 Nicholas K. Dionysopoulos / AkeebaBackup.com ; Licensed under the GNU LGPLv3 or later LIVEUPDATE_TASK_OVERVIEW="Live Opdatering" LIVEUPDATE_NOTSUPPORTED_HEAD="Live opdatering understøttes ikke af denne server" LIVEUPDATE_NOTSUPPORTED_INFO="Din server indikerer at Live opdatering ikke er understøttet. Kontakt venligst din udbyder og spørg dem om at aktivere cURL PHP udvidelsen eller aktivere URL fopen() wrappers. Hvis disse allerede er aktive, så spørg dem venligst om at konfigurere deres firewall, således at den tillader adgang til følgende :"; LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Du kan altid opdatere %s ved at besøge vores side manuelt og hente den seneste udgivelse og derefter installere den ved at bruge Joomla!'s udvidelsesinstaller." LIVEUPDATE_STUCK_HEAD="Live opdatering melder at den gik ned" LIVEUPDATE_STUCK_INFO="Live opdatering opdagede at den gik ned sidste gang den prøvede at kontakte opdateringsserveren. Dette indikerer nomalt en udbyder der aktivt blokerer kommunikation med eksterne sider. Hvis du vil forsøge at hente opdateringsinformationen igen, klik da venligst på "Opdater opdateringsinformation" herunder. Hvis det resulterer i en blank side, så kontakt venligst din udbyder og rapporter dette problem." LIVEUPDATE_ERROR_NEEDSAUTH="Du skal angive dit brugernavn/adgangskode eller Download ID i komponentens indstillinger, før du kan opdatere til den seneste version. Opdateringsknappen vil forblive inaktiv indtil da." LIVEUPDATE_HASUPDATES_HEAD="En ny version er tilgængelig" LIVEUPDATE_NOUPDATES_HEAD="Du har allerede den seneste version" LIVEUPDATE_CURRENTVERSION="Installeret version" LIVEUPDATE_LATESTVERSION="Seneste version" LIVEUPDATE_LATESTRELEASED="Seneste udgivelsesdato" LIVEUPDATE_DOWNLOADURL="Direkte download link" LIVEUPDATE_REFRESH_INFO="Opdater opdateringsinformation" LIVEUPDATE_DO_UPDATE="Opdater til seneste version" LIVEUPDATE_FTP_REQUIRED="Live opdatering har opdaget at den skal bruge FTP for at kunne hente og installere din opdatering, men da du har ikke gemt FTP logind information i din Joomla! globale konfiguration.

Angiv venligst FTP brugernavn og adgangskode herunder for at fortsætte med opdateringen." LIVEUPDATE_FTP="FTP information" LIVEUPDATE_FTPUSERNAME="FTP Brugernavn" LIVEUPDATE_FTPPASSWORD="FTP Adgangskode" LIVEUPDATE_DOWNLOAD_AND_INSTALL="Hent og installer opdatering" LIVEUPDATE_DOWNLOAD_FAILED="Hentning af opdateringspakken fejlede. Vær venligst sikker på at din temp mappe er skrivbar og at du har aktiveret Joomla!'s FTP mulighed i Joomla!'s globale konfiguration." LIVEUPDATE_EXTRACT_FAILED="Udpakning af opdateringspakken fejlede. Opdater venligst udvidelsen manuelt." LIVEUPDATE_INVALID_PACKAGE_TYPE="Ugyldig pakketype. Opdateringen kan ikke fortsætte." LIVEUPDATE_INSTALLEXT="Installer %s %s" LIVEUPDATE_ERROR="Fejl" LIVEUPDATE_SUCCESS="Korrekt" LIVEUPDATE_ICON_UNSUPPORTED="Live opdatering er ikke understøttet" LIVEUPDATE_ICON_CRASHED="Live opdatering gik ned" LIVEUPDATE_ICON_CURRENT="Du har den seneste version" LIVEUPDATE_ICON_UPDATES="OPDATERING FUNDET! OPDATER NU."PK>\)language/nb-NO/.htaccessnuW+A Order allow,deny Deny from all PK>\mfL L #language/nb-NO/nb-NO.liveupdate.ininuW+A; Akeeba Live Update ; Copyright ©2011 Nicholas K. Dionysopoulos / AkeebaBackup.com ; Licensed under the GNU LGPLv3 or later LIVEUPDATE_TASK_OVERVIEW="Live oppdatering" LIVEUPDATE_NOTSUPPORTED_HEAD="Live oppdatering støttes ikke på denne serveren" LIVEUPDATE_NOTSUPPORTED_INFO="Din server indikerer at Live oppdatering ikke støttes. Vennligst kontakt din leverandør og be dem aktivere cURL PHP eller aktivere URL fopen() wrappers. Dersom disse allerede er aktivert, kan du be dem om å konfigurere sin brannmur slik at den gir tilgang til følgende URL:"; LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Du kan alltid oppdatere manuelt%s ved å besøke vår side, laste ned den nyeste versjonen, og installere det ved hjelp av Joomla installasjonsprogrammet." LIVEUPDATE_STUCK_HEAD="Live oppdatering har markert seg selv som krasjet" LIVEUPDATE_STUCK_INFO="Live oppdatering krasjet forrige gang den prøvde å kontakte oppdateringsserveren. Dette betyr vanligvis en leverandør som aktivt blokkerer kommunikasjon med eksterne nettsteder. Hvis du ønsker å prøve å hente oppdateringsinformasjonen, klikk på knappen "Oppdater oppdateringsinformasjonen" under. Hvis dette resulterer i en blank side, kontakte din leverandør og rapportere dette problemet." LIVEUPDATE_ERROR_NEEDSAUTH="Du må oppgi brukernavn/passord eller nedlastnings ID til komponentens parametre før du forsøker å oppgradere til siste versjon. Oppgraderingsknappen vil forbli deaktivert til du gjøre det." LIVEUPDATE_HASUPDATES_HEAD="En ny versjon er tilgjengelig" LIVEUPDATE_NOUPDATES_HEAD="Du har allerede den nyeste versjonen" LIVEUPDATE_CURRENTVERSION="Installert versjon" LIVEUPDATE_LATESTVERSION="Nyeste versjon" LIVEUPDATE_LATESTRELEASED="Siste utgivelsesdato" LIVEUPDATE_DOWNLOADURL="Nedlastingsadresse" LIVEUPDATE_REFRESH_INFO="Oppdater oppdateringsinformasjonen" LIVEUPDATE_DO_UPDATE="Oppdatering til siste versjon" LIVEUPDATE_FTP_REQUIRED="Live oppdatering har behov for å bruke FTP for å laste ned og installere oppdateringen, men du har ikke lagret FTP påloggingsinformasjonen i Joomla! Global konfigurasjon .

Vennligst oppgi FTP brukernavn og passord nedenfor for å fortsette med oppdateringen." LIVEUPDATE_FTP="Informasjon" LIVEUPDATE_FTPUSERNAME="FTP brukernavn" LIVEUPDATE_FTPPASSWORD="FTP Passord" LIVEUPDATE_DOWNLOAD_AND_INSTALL="Last ned og installer oppdateringen" LIVEUPDATE_DOWNLOAD_FAILED="Nedlasting av oppdateringen mislyktes. Pass på at temp-mappen er skrivbar, eller at du har aktivert Joomla! 's FTP alternativer i Global konfigurasjon." LIVEUPDATE_EXTRACT_FAILED="Utpakking av oppdateringspakken mislyktes. Prøv å oppdatere utvidelsen manuelt." LIVEUPDATE_INVALID_PACKAGE_TYPE="Ugyldig pakke type. Oppdateringen kan ikke fortsette." LIVEUPDATE_INSTALLEXT="Installer %s %s" LIVEUPDATE_ERROR="Feil" LIVEUPDATE_SUCCESS="Vellykket" LIVEUPDATE_ICON_UNSUPPORTED="Live oppdatering støttes ikke" LIVEUPDATE_ICON_CRASHED="Live oppdatering krasjet" LIVEUPDATE_ICON_CURRENT="Du har den nyeste versjonen" LIVEUPDATE_ICON_UPDATES="OPPDATERING FUNNET! KLIKK FOR Å OPPDATERE."PK>\Xv #language/de-DE/de-DE.liveupdate.ininuW+A; Akeeba Live Update ; Copyright ©2011 Nicholas K. Dionysopoulos / AkeebaBackup.com ; Licensed under the GNU LGPLv3 or later ; Translated by Niko Winckel - www.nik-o-mat.de LIVEUPDATE_TASK_OVERVIEW="Echtzeitaktualisierung" LIVEUPDATE_NOTSUPPORTED_HEAD="Die Echtzeitaktualisierung wird auf diesem Server nicht unterstützt" LIVEUPDATE_NOTSUPPORTED_INFO="Ihr Server zeigt an, dass die Echtzeitaktualisierung nicht unterstützt wird. Bitte kontaktieren Sie Ihren Anbieter und bitten ihn, die cURL-PHP-Erweiterung zu aktivieren oder die URL fopen() Wrapper. Sollten diese schon aktviert sein, bitten Sie ihn, die Firewall so zu konfigurieren, dass sie den Zugriff auf folgende URL zulässt:"; LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Sie können immer aktualisieren %s indem Sie unsere Internetseite besuchen, die neueste Version herunterladen und ganz normal installieren." LIVEUPDATE_STUCK_HEAD="Die Echtzeitaktualisierung hat sich selbst als abgestürzt gemeldet" LIVEUPDATE_STUCK_INFO="Die Echtzeitaktualisierung hat festgestellt, dass sie beim letzten Versuch den Aktualisierungsserver zu erreichen abgestürzt ist. Dies deutet meist auf einen Anbieter hin, der die Kommunikation mit externen Servern blockiert. Sollten Sie die Aktulalisierungsinformationen nochmals abrufen wollen, klicken Sie bitte auf den Knopf "Aktualisierungsinformationen abrufen". Sollte dieser Versuch auf einer weißen Seite enden, melden Sie diesen Fehler ihrem Anbieter." LIVEUPDATE_ERROR_NEEDSAUTH="Bevor Sie eine Echtzeitaktualisierung durchführen können, müssen Sie Ihren Benutzernamen, das Passwort bzw. die Download-ID angeben. Der Aktualisierungsknopf wird solange ohne Funktion bleiben." LIVEUPDATE_HASUPDATES_HEAD="Es gibt eine neue Version" LIVEUPDATE_NOUPDATES_HEAD="Sie haben die aktuelle Version" LIVEUPDATE_CURRENTVERSION="Installierte Version" LIVEUPDATE_LATESTVERSION="Neueste Version" LIVEUPDATE_LATESTRELEASED="Neuestes Veröffentlichungsdatum" LIVEUPDATE_DOWNLOADURL="Direkte Download-URL" LIVEUPDATE_REFRESH_INFO="Aktualisierungsinformationen abrufen" LIVEUPDATE_DO_UPDATE="Auf die neueste Version aktualisieren" LIVEUPDATE_FTP_REQUIRED="Die Echtzeitaktualisierung hat festgestellt, dass FTP für die Aktualisierung und Installation verwednet werden muss. Sie haben aber noch keine FTP-Daten in der Joomla!-Konfiguraton angegeben.

BItte geben Sie Ihre FTP-Daten ein, bevor Sie mit der Aktualisierung fortfahren." LIVEUPDATE_FTP="FTP Informationen" LIVEUPDATE_FTPUSERNAME="FTP Benutzername" LIVEUPDATE_FTPPASSWORD="FTP Passwort" LIVEUPDATE_DOWNLOAD_AND_INSTALL="Aktualisierung herunterladen und installieren" LIVEUPDATE_DOWNLOAD_FAILED="Das Herunterladen des Aktualisierungspakets ist fehlgeschlagen. Bitte stellen Sie sicher, dass Ihr temp-Verzeichnis Schreibrechte besitzt und Sie Ihre FTP-Nutzerdaten in der Joomla!-Konfiguration angegeben haben." LIVEUPDATE_EXTRACT_FAILED="Das Auspacken des Aktualisierungspakets ist fehlgeschlagen. Bitte aktualisieren Sie die Erweiterung manuell." LIVEUPDATE_INVALID_PACKAGE_TYPE="Falscher Aktualisierungspakettyp. Die Aktualisierung kann nicht durchgeführt werden." LIVEUPDATE_INSTALLEXT="Installiere %s %s" LIVEUPDATE_ERROR="Fehler" LIVEUPDATE_SUCCESS="Erfolg" LIVEUPDATE_ICON_UNSUPPORTED="Echtzeitaktualisierung nicht unterstützt" LIVEUPDATE_ICON_CRASHED="Live Update abgestürzt" LIVEUPDATE_ICON_CURRENT="Sie haben die aktuelle Version" LIVEUPDATE_ICON_UPDATES="AKTUALISIERUNG GEFUNDEN! JETZT AKTUALISIEREN."PK>\)language/de-DE/.htaccessnuW+A Order allow,deny Deny from all PK>\)language/pl-PL/.htaccessnuW+A Order allow,deny Deny from all PK>\@2R #language/pl-PL/pl-PL.liveupdate.ininuW+A; $Id: pl-PL.liveupdate.ini 632 2011-05-22 20:44:46Z nikosdion $ ; Akeeba Live Update ; Copyright ©2011 Nicholas K. Dionysopoulos / AkeebaBackup.com ; Licensed under the GNU LGPLv3 or later ; Translated by: Marek Kolka - 'zorro' - http://www.zorro.cal24.pl LIVEUPDATE_TASK_OVERVIEW="Aktualizacja" LIVEUPDATE_NOTSUPPORTED_HEAD="Aktualizacja nie jest obsługiwana na tym serwerze" LIVEUPDATE_NOTSUPPORTED_INFO="Twój serwer sygnalizuje, że Aktualizacja nie jest obsługiwana. Proszę skontaktować się administratorem hosta i poprosić o włączenie rozszerzenia cURL PHP albo aktywowanie URL fopen() wrappers. Jeżeli te są już włączone, poproś o skonfigurowanie firewalla tak, by umożliwił dostęp do następującego adresu URL:"; LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Zawsze można zaktualizować %s odwiedzając naszeą witrynę ręcznie, pobranie najnowszej wersji i instalacji za pomocą instalatora rozszerzeń Joomla!." LIVEUPDATE_STUCK_HEAD="Aktualizacja oznaczona jako niepowodzenie" LIVEUPDATE_STUCK_INFO="Aktualizacja zaznacza o niepowodzeniu podczas ostatniej próby kontaktu z serwerem aktualizacji. To zwykle wskazuje na hosta, który aktywnie blokuje komunikacje z zewnętrznymi stronami. Jeśli chcesz ponowić próbę pobierania informacje o aktualizacji, kliknij przycisk "Odśwież informacje o aktualizacji" poniżej. Jeśli wynikiem jest pusta strona, proszę skontaktować się z administracją hosta i zgłosić ten problem." LIVEUPDATE_ERROR_NEEDSAUTH="Musisz podać swój login/hasło lub Download ID w parametrach komponentu przed próbą aktualizacji do najnowszej wersji. Przycisk aktualizacji pozostanie wyłączony do czasu aż to zrobisz." LIVEUPDATE_HASUPDATES_HEAD="Nowa wersja jest dostępna" LIVEUPDATE_NOUPDATES_HEAD="Masz już najnowszą wersję" LIVEUPDATE_CURRENTVERSION="Zainstalowana wersja" LIVEUPDATE_LATESTVERSION="Najnowsza wersja" LIVEUPDATE_LATESTRELEASED="Data najnowszej wersji" LIVEUPDATE_DOWNLOADURL="URL bezpośredniego pobierania" LIVEUPDATE_REFRESH_INFO="Odśwież informacje o aktualizacji" LIVEUPDATE_DO_UPDATE="Aktualizacja do najnowszej wersji" LIVEUPDATE_FTP_REQUIRED="Aktualizacja zaznacza, że musi korzystać z protokołu FTP w celu pobrania i zainstalowania aktualizacji, ale nie zostały wcześniej zapisane dane logowania FTP w twojej Konfiguracji Globalnej Joomla!.

Prosimy o podanie nazwy użytkownika i hasła FTP poniżej, aby kontynuować aktualizację." LIVEUPDATE_FTP="Informacje FTP" LIVEUPDATE_FTPUSERNAME="Login FTP" LIVEUPDATE_FTPPASSWORD="Hasło FTP" LIVEUPDATE_DOWNLOAD_AND_INSTALL="Pobierz i zainstaluj aktualizację" LIVEUPDATE_DOWNLOAD_FAILED="Pobranie pakietu aktualizacji nie powiodło się. Upewnij się, że katalog tymczasowy jest zapisywalny lub, że masz włączoną opcję FTP Joomla! w Konfiguracji Globalnej twojej witryny." LIVEUPDATE_EXTRACT_FAILED="Rozpakowanie pakietu aktualizacji nie powiodło się. Proszę spróbować aktualizacji rozszerzenia ręcznie." LIVEUPDATE_INVALID_PACKAGE_TYPE="Nieprawidłowy typ pakietu. Aktualizacja nie może być kontynuowana." LIVEUPDATE_INSTALLEXT="Instalacja %s %s" LIVEUPDATE_ERROR="Błąd" LIVEUPDATE_SUCCESS="Powodzenie" LIVEUPDATE_ICON_UNSUPPORTED="Aktualizacja nie jest obsługiwana" LIVEUPDATE_ICON_CRASHED="Aktualizacja nie powiodła się" LIVEUPDATE_ICON_CURRENT="Masz najnowszą wersję" LIVEUPDATE_ICON_UPDATES="ZNALEZIONO AKTUALIZACJĘ! Kliknij!."PK>\)language/.htaccessnuW+A Order allow,deny Deny from all PK>\)language/el-GR/.htaccessnuW+A Order allow,deny Deny from all PK>\#language/el-GR/el-GR.liveupdate.ininuW+A; Akeeba Live Update ; Copyright ©2011 Nicholas K. Dionysopoulos / AkeebaBackup.com ; Licensed under the GNU LGPLv3 or later LIVEUPDATE_TASK_OVERVIEW="Απευθείας Ενημέρωση" LIVEUPDATE_NOTSUPPORTED_HEAD="Η Απευθείας Ενημέρωση δεν υποστηρίζεται από αυτόν τον διακομιστή" LIVEUPDATE_NOTSUPPORTED_INFO="Ο διακομιστής σας δείχνει ότι η Απευθείας Ενημέρωση δεν υποστηρίζεται. Παρακαλώ επικοινωνήστε με τον πάροχο φιλοξενίας σας και ζητήστε του να ενεργοποιήσει την επέκταση cURL της PHP ή τους URL fopen() wrappers. Εάν είναι ήδη ενεργοποιημένα, παρακαλώ ζητήστε του να ανοίξει το τείχος ασφαλείας ώστε να επιτρέπει την πρόσβαση στην παρακάτω διεύθυνση URL:"; LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Μπορείτε πάντα να ενημερώστε το λογισμικό %s επισκεπτόμενοι τον ιστότοπό μας, κατεβάζοντας την τελευταία έκδοση και εγκαθιστόντας την με την εγκατάσταση εφαρμογών του Joomla!." LIVEUPDATE_STUCK_HEAD="Η Απευθείας Ενημέρωση ανίχνευσε αποτυχία λειτουργίας" LIVEUPDATE_STUCK_INFO="Η Απευθείας Ενημέρωση εντόπισε ότι η τελευταία απόπειρα επικοινωνίας με τον διακομιστή ενημερώσεων κατέληξε σε κόλλημα. Αυτό συνήθως υποδυκνείει έναν πάροχο φιλοξενίας που μπλοκάρει ενεργά τις προσπάθειες επικοινωνίας με εξωετρικούς ιστοχώρους. Εάν θα θέλατε να δοκιμάσετε να ξαναπροσπαθήσουμε να λάβουμε τις πληροφορίες ενημέρωσεις, παρακαλώ κάντε κλικ στο κουμπί "Ανανέωση πληροφοριών ενημερώσεων" πιο κάτω. Εάν αυτό οδηγήσει σε λευκή σελίδα, παρακαλώ επικοινωνήστε με τον πάροχο φιλοξενίας και αναφέρετε αυτό το πρόβλημα." LIVEUPDATE_ERROR_NEEDSAUTH="Πρέπει να εισάγετε το όνομα χρήστη και συνθηματικό ή το Αναγνωριστικό Μεταφόρτωσης στις παραμέτρους της εφαρμογής πριν προσπαθήσετε να αναβαθμίσετε στην τελευταία έκδοση. Το κουμπί ενημέρωσης θα παραμείνει ανενεργό έως ότου το κάνετε." LIVEUPDATE_HASUPDATES_HEAD="Μια νέα έκδοση είναι διαθέσιμη" LIVEUPDATE_NOUPDATES_HEAD="Έχετε ήδη την τελευταία έκδοση" LIVEUPDATE_CURRENTVERSION="Εγκατεστημένη έκδοση" LIVEUPDATE_LATESTVERSION="Τελευταία έκδοση" LIVEUPDATE_LATESTRELEASED="Ημερομηνία έκδοσης" LIVEUPDATE_DOWNLOADURL="Διεύθυνση απευθείας μεταφόρτωσης" LIVEUPDATE_REFRESH_INFO="Ανανέωση πληροφοριών ενημεερώσεων" LIVEUPDATE_DO_UPDATE="Ενημέρωση στην τελευταία έκδοση" LIVEUPDATE_FTP_REQUIRED="Η Απευθείας Ενημέρωση εντόπισε ότι απαιτείται η χρήση FTP για να μεταφορτώσει και να εγκαταστήσει την ενημέρωσή σας, αλλά δεν έχετε σώσει τις πληροφορίες εισόδου στο FTP στις Γενικές Ρυθμίσεις του Joomla!.

Παρακαλώ εισάγετε το όνομα χρήστη και το συνθηματικό για το FTP προκειμένου να προχωρήσετε με την ενημέρωση." LIVEUPDATE_FTP="Πληροφορίες FTP" LIVEUPDATE_FTPUSERNAME="Όνομα Χρήστη FTP" LIVEUPDATE_FTPPASSWORD="Συνθηματικό FTP" LIVEUPDATE_DOWNLOAD_AND_INSTALL="Μεταφόρτωση και εγκατάσταση ενημέρωσης" LIVEUPDATE_DOWNLOAD_FAILED="Η μεταφόρτωση του πακέτου ενημέρωσης απέτυχε. Παρακαλώ βεβαιωθείτε ότι ο κάταλογος προσωρινής αποθήκευσης είναι εγγράψιμος ή ότι έχετε ενεργοποιήσει τις επιλογές FTP στις Γενικές Ρυθμίσεις του ιστοχώρου σας." LIVEUPDATE_EXTRACT_FAILED="Η αποσυμπίεση του πακέτου αναβάθμισης απέτυχε. Παρακαλώ δοκιμάστε να εγκαταστήσετε την επέκταση χειροκίνητα." LIVEUPDATE_INVALID_PACKAGE_TYPE="Ο τύπος του πακέτου δεν είναι έγκυρος. Η αναβάθμιση δεν μπορεί να συνεχίσει." LIVEUPDATE_INSTALLEXT="Εγκατάσταση %s %s" LIVEUPDATE_ERROR="Σφάλμα" LIVEUPDATE_SUCCESS="Επιτυχία" LIVEUPDATE_ICON_UNSUPPORTED="Η Απευθείας Ενημέρωση δεν υποστηρίζεται" LIVEUPDATE_ICON_CRASHED="Η Απευθείας Ενημέρωση κόλλησε" LIVEUPDATE_ICON_CURRENT="Έχετε την τελευταία έκδοση" LIVEUPDATE_ICON_UPDATES="ΒΡΕΘΗΚΕ ΕΝΗΜΕΡΩΣΗ! ΚΑΝΤΕ ΚΛΙΚ ΓΙΑ ΑΝΑΒΑΘΜΙΣΗ."PK>\###language/fr-FR/fr-FR.liveupdate.ininuW+A; Package Akeeba Backup ; Version fr-FR.liveupdate.ini 2011-07-23 by Sarki ; Copyright (c)2006-2011 Nicholas K. Dionysopoulos / AkeebaBackup.com ; Licensed under the GNU GPLv3 or later ; Note : All ini files need to be saved as UTF-8 LIVEUPDATE_TASK_OVERVIEW="Live Update" LIVEUPDATE_NOTSUPPORTED_HEAD="Live Update n'est pas pris en charge sur ce serveur" LIVEUPDATE_NOTSUPPORTED_INFO="Votre serveur indique que Live Update n'est pas supporté. Veuillez contactez votre hébergeur et leur demander d'activer l'extension PHP cURL ou activer la fonction fopen URL () . Si ceux-ci sont déjà activés, veuillez leur demander de configurer leur pare-feu afin qu'il autorise l'accès à l'URL suivante:"; LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Vous pouvez toujours mettre à jour %s en visitant notre site manuellement, télécharger la dernière version et l'installer en utilisant l'extension d'installation de Joomla!" LIVEUPDATE_STUCK_HEAD="Live Update a échoué !" LIVEUPDATE_STUCK_INFO="Live Update a échoué la dernière fois qu'il a essayé de contacter le serveur de mise à jour. Cela signifie généralement que votre hébergeur bloque activement les communications avec des sites externes. Si vous souhaitez réessayer de récupérer les informations de mise à jour, cliquez sur le bouton " Rafraichir les informations de mise à jour ". S'il en résulte une page blanche, veuillez contactez votre hébergeur et lui signaler ce problème." LIVEUPDATE_ERROR_NEEDSAUTH="Pour activer le bouton de mise à jour, vous devez fournir votre nom d'utilisateur/mot de passe ( ou votre ID de Téléchargement ) dans les paramètres du composant pour pouvoir mettre à jour vers la dernière version." LIVEUPDATE_HASUPDATES_HEAD="Une nouvelle version est disponible" LIVEUPDATE_NOUPDATES_HEAD="Vous avez la dernière version" LIVEUPDATE_CURRENTVERSION="Version installée" LIVEUPDATE_LATESTVERSION="Dernière version" LIVEUPDATE_LATESTRELEASED="Date de la dernière version " LIVEUPDATE_DOWNLOADURL="URL de téléchargement directe" LIVEUPDATE_REFRESH_INFO="Rafraichir les informations de mise à jour" LIVEUPDATE_DO_UPDATE="Mettre à jour vers la dernière version" LIVEUPDATE_FTP_REQUIRED="Live Update a besoin d'utiliser la couche FTP pour télécharger et installer la mise à jour, mais vous n'avez pas sauvegardé vos informations de connexion FTP dans la Configuration globale de Joomla!

Veuillez fournir ci-dessous votre nom d'utilisateur et votre mot de passe FTP afin de procéder à la mise à jour." LIVEUPDATE_FTP="Informations FTP" LIVEUPDATE_FTPUSERNAME="Nom d'utilisateur FTP" LIVEUPDATE_FTPPASSWORD="Mot de passe FTP" LIVEUPDATE_DOWNLOAD_AND_INSTALL="Télécharger et installez la mise à jour" LIVEUPDATE_DOWNLOAD_FAILED="Le téléchargement du package de mise à jour a échoué. Assurez-vous que votre répertoire temporaire (tmp) est accessible en écriture et que vous avez activé les options FTP dans la configuration globale de Joomla!." LIVEUPDATE_EXTRACT_FAILED="L'extraction du package de mise à jour a échoué. Veuillez mettez à jour l'extension manuellement." LIVEUPDATE_INVALID_PACKAGE_TYPE="Le type du package n'est pas valide. La mise à jour ne peut pas continuer." LIVEUPDATE_INSTALLEXT="Installer %s %s" LIVEUPDATE_ERROR="Erreur" LIVEUPDATE_SUCCESS="Réussite" LIVEUPDATE_ICON_UNSUPPORTED="Live Update n'est pas pris en charge" LIVEUPDATE_ICON_CRASHED="Live Update a échoué!" LIVEUPDATE_ICON_CURRENT="Vous avez la dernière version" LIVEUPDATE_ICON_UPDATES="MISE À JOUR ! Cliquez pour l'appliquer..."PK>\)language/fr-FR/.htaccessnuW+A Order allow,deny Deny from all PK>\)language/uk-UA/.htaccessnuW+A Order allow,deny Deny from all PK>\CO#language/uk-UA/uk-UA.liveupdate.ininuW+A; Akeeba Live Update ; Copyright ©2011 Nicholas K. Dionysopoulos / AkeebaBackup.com ; Licensed under the GNU LGPLv3 or later LIVEUPDATE_TASK_OVERVIEW="Live Update" LIVEUPDATE_NOTSUPPORTED_HEAD="Live Update не підтримується на цьому сервері" LIVEUPDATE_NOTSUPPORTED_INFO="Ваш сервер сигналізує, що Live Update не підтримується. Будь ласка, зв’яжіться з вашим постачальником послуг хостингу і попросіть його ввімкнути розширення PHP cURL або активувати пакувальники URL fopen(). Якщо вони вже ввімкнені, будь ласка, попросіть його сконфігурувати мережеві екрани так, щоб вони дозволяли доступ до цих URL:"; LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Ви можете завжди оновити %s відвідавши наш сайт персонально, завантажити останній випуск та встановити його, використовуючи інсталятор розширень Joomla!." LIVEUPDATE_STUCK_HEAD="Live Update позначив себе таким, що зазнав краху" LIVEUPDATE_STUCK_INFO="Live Update визначив, що він зазнав краху останнього разу, коли намагався зв’язатися з сервером оновлень. Це зазвичай означає, що хост активно блокує комунікацію з зовнішніми сайтами. Якщо ви ви захочете спробувати знову отримати інформацію про оновлення, будь ласка, натисніть на кнопку "Оновити інформацію " нижче. Якщо це видасть пусту сторінку, будь ласка, зв’яжіться з постачальником послуг хостингу і опишіть цю проблему." LIVEUPDATE_ERROR_NEEDSAUTH="Ви повинні надати ваше ім’я користувача/пароль або ID завантаження в параметрах компоненту перед тим, як намагатися оновитися до останнього випуску. Кнопка оновлення буде залишатися неактивною, доки ви цього не зробите." LIVEUPDATE_HASUPDATES_HEAD="Доступна нова версія" LIVEUPDATE_NOUPDATES_HEAD="У вас уже встановлена остання версія" LIVEUPDATE_CURRENTVERSION="Встановлена версія" LIVEUPDATE_LATESTVERSION="Остання версія" LIVEUPDATE_LATESTRELEASED="Дата останнього випуску" LIVEUPDATE_DOWNLOADURL="URL для безпосереднього завантаження" LIVEUPDATE_REFRESH_INFO="Оновити інформацію" LIVEUPDATE_DO_UPDATE="Оновити до останньої версії" LIVEUPDATE_FTP_REQUIRED="Live Update визначив, що йому потрібно використовувати FTP для завантаження та встановлення вашого оновлення, але ви не зберегли інформацію вашого логіну FTP на сторінці Загальної Конфігурації Joomla! .

Будь ласка, надайте ім’я користувача і пароль FTP нижче, щоб продовжити процес оновлення." LIVEUPDATE_FTP="Інформація FTP" LIVEUPDATE_FTPUSERNAME="Ім’я користувача FTP" LIVEUPDATE_FTPPASSWORD="Пароль FTP" LIVEUPDATE_DOWNLOAD_AND_INSTALL="Завантажити і встановити оновлення" LIVEUPDATE_DOWNLOAD_FAILED="Завантаження пакету оновлень не вдалося. Переконайтесь, що ваш тимчасовий каталог доступний для запису або що ви ввімкнули налаштування FTP в Загальній Конфігурації Joomla!." LIVEUPDATE_EXTRACT_FAILED="Видобування пакету оновлень не вдалося. Будь ласка, спробуйте оновити розширення вручну." LIVEUPDATE_INVALID_PACKAGE_TYPE="Неправильний тип пакету. Оновлення не може бути продовжено." LIVEUPDATE_INSTALLEXT="Встановлення %s %s" LIVEUPDATE_ERROR="Помилка" LIVEUPDATE_SUCCESS="Успішно" LIVEUPDATE_ICON_UNSUPPORTED="Live Update не підтримується" LIVEUPDATE_ICON_CRASHED="Live Update зазнало краху" LIVEUPDATE_ICON_CURRENT="У вас остання версія" LIVEUPDATE_ICON_UPDATES="ЗНАЙДЕНО ОНОВЛЕННЯ! НАТИСНІТЬ ДЛЯ ЗАПУСКУ ОНОВЛЕННЯ."PK>\Ϛ[ #language/en-GB/en-GB.liveupdate.ininuW+A; Akeeba Live Update ; Copyright ©2011 Nicholas K. Dionysopoulos / AkeebaBackup.com ; Licensed under the GNU LGPLv3 or later LIVEUPDATE_TASK_OVERVIEW="Live Update" LIVEUPDATE_NOTSUPPORTED_HEAD="Live Update is not supported on this server" LIVEUPDATE_NOTSUPPORTED_INFO="Your server indicates that Live Update is not supported. Please contact your host and ask them to enable the cURL PHP extension or activate the URL fopen() wrappers. If these are already enabled, please ask them to configure their firewall so that it allows access to the following URL:"; LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="You can always update %s by visiting our site manually, downloading the latest release and installing it using Joomla!'s extension installer." LIVEUPDATE_STUCK_HEAD="Live Update has marked itself as crashed" LIVEUPDATE_STUCK_INFO="Live Update determined that it crashed the last time it tried to contact the update server. This usually indicates a host which actively blocks communications with external sites. If you would like to retry fetching the update information, please click the "Refresh update information" button below. If that results to a blank page, please contact your host and report this issue." LIVEUPDATE_ERROR_NEEDSAUTH="You have to supply your username/password or Download ID to the component's parameters before trying to upgrade to the latest release. The upgrade button will remain disabled until you do that." LIVEUPDATE_HASUPDATES_HEAD="A new version is available" LIVEUPDATE_NOUPDATES_HEAD="You already have the latest version" LIVEUPDATE_CURRENTVERSION="Installed version" LIVEUPDATE_LATESTVERSION="Latest version" LIVEUPDATE_LATESTRELEASED="Latest release date" LIVEUPDATE_DOWNLOADURL="Direct download URL" LIVEUPDATE_REFRESH_INFO="Refresh update information" LIVEUPDATE_DO_UPDATE="Update to the latest version" LIVEUPDATE_FTP_REQUIRED="Live Update determined that it needs to use FTP in order to download and install your update, but you have not saved your FTP login information in your Joomla! Global Configuration.

Please provide the FTP username and password below to proceed with the update." LIVEUPDATE_FTP="FTP Information" LIVEUPDATE_FTPUSERNAME="FTP Username" LIVEUPDATE_FTPPASSWORD="FTP Password" LIVEUPDATE_DOWNLOAD_AND_INSTALL="Download and install update" LIVEUPDATE_DOWNLOAD_FAILED="Downloading the update package failed. Make sure that your temp-directory is writable or that you have enabled Joomla!'s FTP options in your site's Global Configuration." LIVEUPDATE_EXTRACT_FAILED="Extracting the update package failed. Please try updating the extension manually." LIVEUPDATE_INVALID_PACKAGE_TYPE="Invalid package type. The update can not proceed." LIVEUPDATE_INSTALLEXT="Install %s %s" LIVEUPDATE_ERROR="Error" LIVEUPDATE_SUCCESS="Success" LIVEUPDATE_ICON_UNSUPPORTED="Live Update not supported" LIVEUPDATE_ICON_CRASHED="Live Update crashed" LIVEUPDATE_ICON_CURRENT="You have the latest version" LIVEUPDATE_ICON_UPDATES="UPDATE FOUND! CLICK TO UPDATE."PK>\)language/en-GB/.htaccessnuW+A Order allow,deny Deny from all PK>\bLD#language/ru-RU/ru-RU.liveupdate.ininuW+A; Akeeba Live Update ; Copyright ©2011 Nicholas K. Dionysopoulos / AkeebaBackup.com ; Licensed under the GNU LGPLv3 or later LIVEUPDATE_TASK_OVERVIEW="Автоматическое обновление" LIVEUPDATE_NOTSUPPORTED_HEAD="Автоматическое обновление не поддерживается на этом сервере" LIVEUPDATE_NOTSUPPORTED_INFO="Ваш сервер сообщает, что автоматическое обновление не поддерживается. Пожалуйста, обратитесь к вашему хостеру и попросите его разрешить CURL расширение для PHP или активировать функцию URL FOPEN (). Если они уже включены, пожалуйста, попросите его настроить их брандмауэр так, что он позволял получить доступ к следующему адресу:"; LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Вы всегда сможете обновить %s посетив наш сайт, вручную, загрузив последнюю версию и установив ее с помощью Joomla!." LIVEUPDATE_STUCK_HEAD="Автоматическое обновление обнаружило ошибку" LIVEUPDATE_STUCK_INFO="Автоматическое обновление обнаружило, что произошла ошибка при последнем сеансе связи с сервером обновлений. Обычно это означает, что хост блокирует связи с внешними сайтами. Если вы хотели бы снова получить информацию об обновлении, пожалуйста, нажмите кнопку "Обновить информацию об обновлении" , расположенную ниже. Если это приводит к появлению пустой страницы, пожалуйста, свяжитесь с вашим хостером и сообщите об этой проблеме." LIVEUPDATE_ERROR_NEEDSAUTH="Вы должны ввести ваше имя пользлвателя/пароль или ID загрузки в параметры компонента перед попыткой обновления до последней версии. Кнопка обновления будет оставаться неактивной, пока вы этого не сделаете." LIVEUPDATE_HASUPDATES_HEAD="Доступна новая версия" LIVEUPDATE_NOUPDATES_HEAD="У вас уже установлена последняя версия" LIVEUPDATE_CURRENTVERSION="Установленная версия" LIVEUPDATE_LATESTVERSION="Последняя версия" LIVEUPDATE_LATESTRELEASED="Дата выхода последней версии" LIVEUPDATE_DOWNLOADURL="Ссылка для прямой загрузки" LIVEUPDATE_REFRESH_INFO="Обновить информацию об обновлении" LIVEUPDATE_DO_UPDATE="Обновить до последней версии" LIVEUPDATE_FTP_REQUIRED="Автоматическое обновление определило, что необходимо использовать FTP для загрузки и установки обновления, но вы не сохранили данные для авторизации на FTP в Общих настройках Joomla!.

Просьба ввести имя пользователя и пароль FTP для продолжения обновления." LIVEUPDATE_FTP="Информация FTP" LIVEUPDATE_FTPUSERNAME="Имя пользователя FTP" LIVEUPDATE_FTPPASSWORD="Пароль FTP" LIVEUPDATE_DOWNLOAD_AND_INSTALL="Загрузить и установить обновление" LIVEUPDATE_DOWNLOAD_FAILED="Загрузка пакета обновления не удалась. Убедитесь, что временный каталог доступен для записи или что вы включили FTP в Общих настройках Joomla!." LIVEUPDATE_EXTRACT_FAILED="Извлечение пакета обновления не удалось. Пожалуйста, попробуйте обновить компонент вручную." LIVEUPDATE_INVALID_PACKAGE_TYPE="Неверный тип пакета. Обновление не может продолжаться." LIVEUPDATE_INSTALLEXT="Установлено %s %s" LIVEUPDATE_ERROR="Ошибка" LIVEUPDATE_SUCCESS="Успешно" LIVEUPDATE_ICON_UNSUPPORTED="Автоматическое обновление не поддерживается" LIVEUPDATE_ICON_CRASHED="Автоматическое обновление не прошло" LIVEUPDATE_ICON_CURRENT="У вас последняя версия" LIVEUPDATE_ICON_UPDATES="НАЙДЕНО ОБНОВЛЕНИЕ! НАЖМИТЕ ДЛЯ ОБНОВЛЕНИЯ."PK>\)language/ru-RU/.htaccessnuW+A Order allow,deny Deny from all PK>\mfL L #language/no-NO/nb-NO.liveupdate.ininuW+A; Akeeba Live Update ; Copyright ©2011 Nicholas K. Dionysopoulos / AkeebaBackup.com ; Licensed under the GNU LGPLv3 or later LIVEUPDATE_TASK_OVERVIEW="Live oppdatering" LIVEUPDATE_NOTSUPPORTED_HEAD="Live oppdatering støttes ikke på denne serveren" LIVEUPDATE_NOTSUPPORTED_INFO="Din server indikerer at Live oppdatering ikke støttes. Vennligst kontakt din leverandør og be dem aktivere cURL PHP eller aktivere URL fopen() wrappers. Dersom disse allerede er aktivert, kan du be dem om å konfigurere sin brannmur slik at den gir tilgang til følgende URL:"; LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Du kan alltid oppdatere manuelt%s ved å besøke vår side, laste ned den nyeste versjonen, og installere det ved hjelp av Joomla installasjonsprogrammet." LIVEUPDATE_STUCK_HEAD="Live oppdatering har markert seg selv som krasjet" LIVEUPDATE_STUCK_INFO="Live oppdatering krasjet forrige gang den prøvde å kontakte oppdateringsserveren. Dette betyr vanligvis en leverandør som aktivt blokkerer kommunikasjon med eksterne nettsteder. Hvis du ønsker å prøve å hente oppdateringsinformasjonen, klikk på knappen "Oppdater oppdateringsinformasjonen" under. Hvis dette resulterer i en blank side, kontakte din leverandør og rapportere dette problemet." LIVEUPDATE_ERROR_NEEDSAUTH="Du må oppgi brukernavn/passord eller nedlastnings ID til komponentens parametre før du forsøker å oppgradere til siste versjon. Oppgraderingsknappen vil forbli deaktivert til du gjøre det." LIVEUPDATE_HASUPDATES_HEAD="En ny versjon er tilgjengelig" LIVEUPDATE_NOUPDATES_HEAD="Du har allerede den nyeste versjonen" LIVEUPDATE_CURRENTVERSION="Installert versjon" LIVEUPDATE_LATESTVERSION="Nyeste versjon" LIVEUPDATE_LATESTRELEASED="Siste utgivelsesdato" LIVEUPDATE_DOWNLOADURL="Nedlastingsadresse" LIVEUPDATE_REFRESH_INFO="Oppdater oppdateringsinformasjonen" LIVEUPDATE_DO_UPDATE="Oppdatering til siste versjon" LIVEUPDATE_FTP_REQUIRED="Live oppdatering har behov for å bruke FTP for å laste ned og installere oppdateringen, men du har ikke lagret FTP påloggingsinformasjonen i Joomla! Global konfigurasjon .

Vennligst oppgi FTP brukernavn og passord nedenfor for å fortsette med oppdateringen." LIVEUPDATE_FTP="Informasjon" LIVEUPDATE_FTPUSERNAME="FTP brukernavn" LIVEUPDATE_FTPPASSWORD="FTP Passord" LIVEUPDATE_DOWNLOAD_AND_INSTALL="Last ned og installer oppdateringen" LIVEUPDATE_DOWNLOAD_FAILED="Nedlasting av oppdateringen mislyktes. Pass på at temp-mappen er skrivbar, eller at du har aktivert Joomla! 's FTP alternativer i Global konfigurasjon." LIVEUPDATE_EXTRACT_FAILED="Utpakking av oppdateringspakken mislyktes. Prøv å oppdatere utvidelsen manuelt." LIVEUPDATE_INVALID_PACKAGE_TYPE="Ugyldig pakke type. Oppdateringen kan ikke fortsette." LIVEUPDATE_INSTALLEXT="Installer %s %s" LIVEUPDATE_ERROR="Feil" LIVEUPDATE_SUCCESS="Vellykket" LIVEUPDATE_ICON_UNSUPPORTED="Live oppdatering støttes ikke" LIVEUPDATE_ICON_CRASHED="Live oppdatering krasjet" LIVEUPDATE_ICON_CURRENT="Du har den nyeste versjonen" LIVEUPDATE_ICON_UPDATES="OPPDATERING FUNNET! KLIKK FOR Å OPPDATERE."PK>\)language/no-NO/.htaccessnuW+A Order allow,deny Deny from all PK>\)language/nl-NL/.htaccessnuW+A Order allow,deny Deny from all PK>\,-R R #language/nl-NL/nl-NL.liveupdate.ininuW+A; Akeeba Live Update ; Copyright ©2011 Nicholas K. Dionysopoulos / AkeebaBackup.com ; Licensed under the GNU LGPLv3 or later ; Dutch Translation version 3.2.3 by [Robert J. Klop] info@zocors-web.nl LIVEUPDATE_TASK_OVERVIEW="Live Update" LIVEUPDATE_NOTSUPPORTED_HEAD="Live Update wordt op deze server niet ondersteund" LIVEUPDATE_NOTSUPPORTED_INFO="De server geeft aan dat Live Update niet wordt ondersteund. Neem contact op met de hoster en vraag de cURL PHP extensie of om de URL fopen() wrappers te activeren. Vraag, als ze al geactiveerd zijn, de firewall zo in te stellen dat er toegang tot de volgende URL is:"; LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="U kunt %s altijd updaten door onze site te bezoeken, de laatste versie te downloaden en doormiddel van Joomla!'s extensiebeheer te installeren." LIVEUPDATE_STUCK_HEAD="Live Update is gecrasht" LIVEUPDATE_STUCK_INFO="Live Update stelt vast dat het, de laatste keer dat het de update-server trachtte te bereiken, gecrasht is. Dit betekent meestal dat de host actief de communicatie met externe sites blokkeert. Klik, als u de update informatie opnieuw wilt ophalen, op de "Ververs update informatie" knop hieronder. Als dat leidt tot een blanco pagina, neem dan contact op met uw hoster en meld dit." LIVEUPDATE_ERROR_NEEDSAUTH="U moet uw gebruikersnaam / wachtwoord of download ID opgegeven in de parameters van de component om naar de laatste release te upgraden. De upgrade knop zal geblokkeerd blijven tot dit gedaan is." LIVEUPDATE_HASUPDATES_HEAD="Er is een nieuwe versie beschikbaar" LIVEUPDATE_NOUPDATES_HEAD="U heeft de laatste versie al" LIVEUPDATE_CURRENTVERSION="Geïnstalleerde versie" LIVEUPDATE_LATESTVERSION="Nieuwste versie" LIVEUPDATE_LATESTRELEASED="Datum laatste release" LIVEUPDATE_DOWNLOADURL="URL voor directe download" LIVEUPDATE_REFRESH_INFO="Ververs update-informatie" LIVEUPDATE_DO_UPDATE="Update naar de laatste versie" LIVEUPDATE_FTP_REQUIRED="Live Update stelt vast dat het FTP moet gebruiken om de updates te downloaden en installeren, maar uw FTP logingegevens zijn bij de Joomla algemene instellingen niet opgeslagen.

Vul a.u.b. hieronder de FTP gebruikersnaam en het wachtwoord in om verder te gaan met updaten." LIVEUPDATE_FTP="FTP informatie" LIVEUPDATE_FTPUSERNAME="FTP gebruikersnaam" LIVEUPDATE_FTPPASSWORD="FTP wachtwoord" LIVEUPDATE_DOWNLOAD_AND_INSTALL="Download en installeer de update" LIVEUPDATE_DOWNLOAD_FAILED="Het downloaden van het updatepakket is mislukt. Zorg dat de temp map beschrijfbaar is of dat de FTP opties bij de algemene instellingen goed ingevuld zijn." LIVEUPDATE_EXTRACT_FAILED="Uitpakken van het pakket mislukt. Probeer de extensie handmatig bij te werken." LIVEUPDATE_INVALID_PACKAGE_TYPE="Verkeerd pakkettype. Updaten kan niet verder gaan." LIVEUPDATE_INSTALLEXT="Installeer %s %s" LIVEUPDATE_ERROR="Fout" LIVEUPDATE_SUCCESS="Succesvol" LIVEUPDATE_ICON_UNSUPPORTED="Live Update niet ondersteund" LIVEUPDATE_ICON_CRASHED="Live Update gecrasht" LIVEUPDATE_ICON_CURRENT="U heeft de laatste versie" LIVEUPDATE_ICON_UPDATES="UPDATE GEVONDEN! KLIK OM TE UPDATEN."PK>\VtvOO#language/it-IT/it-IT.liveupdate.ininuW+A; Akeeba Live Update ; Copyright ©2011 Nicholas K. Dionysopoulos / AkeebaBackup.com ; Licensed under the GNU LGPLv3 or later ; Translation: Roberto Restelli (roberto@msoutlook.it) LIVEUPDATE_TASK_OVERVIEW="Live Update" LIVEUPDATE_NOTSUPPORTED_HEAD="La funzionalità di Live Update non è supportata su questo server" LIVEUPDATE_NOTSUPPORTED_INFO="Il vostro server indica che la funzionalità di Live Update non è supportata. Contattare il fornitore e chiedere di abilitare l'estensione PHP cURL oppure attivare le funzionalità di URL fopen(). Se queste opzioni sono già attive, far verificare la configurazione del firewall per permettere l'accesso al seguente URL:"; LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="E' sempre possibile aggiornare %s visitando il nostro sito, scaricando l'ultima versione disponibile ed installandola in Joomla usando i normali comando di installazione delle estensioni." LIVEUPDATE_STUCK_HEAD="Live Update ha rilevato un precedente crash" LIVEUPDATE_STUCK_INFO="Live Update ha determinato che nell'ultimo tentativo di contattare il server di aggiornamento l'operazioni e è fallita con un crash. Generalmente questo indica la presenza di un servizio che blocca la comunicazioen con siti esterni. Se volete riprovare a recuperare le informazioni di aggiornamento utilizzate il pulsante "Verifica disponibilità aggiornamenti" più sotto. Se il risultato è una pagina vuota, contattare il proprio fornitore per segnalare il problema." LIVEUPDATE_ERROR_NEEDSAUTH="E' necessario inserire Username e password oppure il proprio Download ID tra i paraemtri di configurazione del componente prima di tentare l'aggiornamento all'ultima versione. Il pulsante di aggiornamento sarà attivato solamente dopo l'isnerimento di tali informazioni." LIVEUPDATE_HASUPDATES_HEAD="E' disponibile una nuova versione" LIVEUPDATE_NOUPDATES_HEAD="Non sono disponibili ulteriori aggiornamenti" LIVEUPDATE_CURRENTVERSION="Versione installata" LIVEUPDATE_LATESTVERSION="Ultima versione" LIVEUPDATE_LATESTRELEASED="Data rilascio ultima versione" LIVEUPDATE_DOWNLOADURL="URL di scaricamento diretto" LIVEUPDATE_REFRESH_INFO="Verifica disponibilità aggiornamenti" LIVEUPDATE_DO_UPDATE="Aggiorna all'ultima versione" LIVEUPDATE_FTP_REQUIRED="Live Update ha determinato che è necessario l'utilizzo di FTP per scaricamente ed installare l'aggiornamento, tuttavia non sono state impostate le corrette informazioni di configurazione in Joomla. Inserire wui sotto Username e password per il servizio FTP per proseguire con l'aggiornamento." LIVEUPDATE_FTP="Informazioni FTP" LIVEUPDATE_FTPUSERNAME="Username FTP" LIVEUPDATE_FTPPASSWORD="Password FTP" LIVEUPDATE_DOWNLOAD_AND_INSTALL="Scarica ed installa aggiornamento" LIVEUPDATE_DOWNLOAD_FAILED="Lo scaricamento dell'aggiornamento è fallito. Verificare che la cartella temporanea sia scrivibile e che siano abilitate le opzioni FTP di Joomla all'interno della sezione di Configurazione Globale del sito." LIVEUPDATE_EXTRACT_FAILED="L'estrazione del pacchetto di aggiornamento è fallita. Sarà necessario effettuare l'aggiornamento tramite procedura manuale." LIVEUPDATE_INVALID_PACKAGE_TYPE="Formato del pacchetto di aggiornamento non riconosciuto. L'aggiornamento non può essere effettuato." LIVEUPDATE_INSTALLEXT="Installazione %s %s" LIVEUPDATE_ERROR="Errore" LIVEUPDATE_SUCCESS="Completato" LIVEUPDATE_ICON_UNSUPPORTED="Live Update non supportato" LIVEUPDATE_ICON_CRASHED="Live Update non funzionante correttamente" LIVEUPDATE_ICON_CURRENT="Non sono disponibili ulteriori aggiornamenti" LIVEUPDATE_ICON_UPDATES="INSTALLA NUOVO AGGIORNAMENTO!"PK>\)language/it-IT/.htaccessnuW+A Order allow,deny Deny from all PK>\ t #language/sv-SE/sv-SE.liveupdate.ininuW+A; Akeeba Live Update ; Copyright ©2011 Nicholas K. Dionysopoulos / AkeebaBackup.com ; Licensed under the GNU LGPLv3 or later LIVEUPDATE_TASK_OVERVIEW="Live Update" LIVEUPDATE_NOTSUPPORTED_HEAD="Live Update stöds inte på denna server" LIVEUPDATE_NOTSUPPORTED_INFO="Din server verkar inte stöda att Live Update körs. Kontakta din webbhotelleverantör och be dem aktivera cURL i PHP alternativt aktivera URL fopen() wrappers. Om dessa redan är aktiverade skall du be dem att konfigurera brandväggen så den tillåter tillträde från följande URL:"; LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Du kan alltid uppdatera %s genom att gå till vår webbplats manuellt, ladda ned den senaste versionen och installera den med Joomla!:s egen installerare." LIVEUPDATE_STUCK_HEAD="Live Update har markerat sig själv som kraschad" LIVEUPDATE_STUCK_INFO="Live Update har upptäckt att den kraschade förra gången den försökte kontakta uppdateringsservern. Vanligen beror detta på att webbhotellet har blockerat kommunikation med externa webbplatser. Om du ändå vill försöka hämta uppdateringsinformation, klicka på knappen "Hämta uppdateringsinformation" nedan. Om detta resulterar i en vit sida, skall du kontakta ditt webbhotell och rapportera felet." LIVEUPDATE_ERROR_NEEDSAUTH="Du måste ange ditt användarnamn/lösenord eller Nedladdnings-ID i komponentens inställningar innan du kan uppgradera till senaste versionen. Uppgraderingsknappen kommer att vara inaktiv till dess du gjort detta." LIVEUPDATE_HASUPDATES_HEAD="Det finns en ny version" LIVEUPDATE_NOUPDATES_HEAD="Du har redan senaste versionen" LIVEUPDATE_CURRENTVERSION="Installerad version" LIVEUPDATE_LATESTVERSION="Senaste version" LIVEUPDATE_LATESTRELEASED="Senaste versionsdatum" LIVEUPDATE_DOWNLOADURL="Direkt nedladdnings-URL" LIVEUPDATE_REFRESH_INFO="Hämta uppdateringsinformation" LIVEUPDATE_DO_UPDATE="Uppdatera till senaste version" LIVEUPDATE_FTP_REQUIRED="Live Update indikerar att den måste använda FTP för att kunna ladda ned och installera din uppdatering. Du måste först ange och spara dina uppgifter för FTP i Joomla!:s Globala Inställningar.

Ange användarnamn och lösenord till din FTP nedan för att kunna fortsätta uppdateringen." LIVEUPDATE_FTP="FTP-information" LIVEUPDATE_FTPUSERNAME="FTP Användarnamn" LIVEUPDATE_FTPPASSWORD="FTP Lösenord" LIVEUPDATE_DOWNLOAD_AND_INSTALL="Ladda ned och installera uppdatering" LIVEUPDATE_DOWNLOAD_FAILED="Nedladdningen av uppdateringsaketet misslyckades. Kontrollera att temp-mappen är skrivbar och att du har aktiverat Joomla!:s FTP-lager i Globala Inställningar." LIVEUPDATE_EXTRACT_FAILED="Uppackningen av uppdateringspaketet misslyckades. Prova att uppdatera tillägget manuellt." LIVEUPDATE_INVALID_PACKAGE_TYPE="Ogiltig pakettyp. Uppdateringen kan inte fortsätta." LIVEUPDATE_INSTALLEXT="Installerar %s %s" LIVEUPDATE_ERROR="FEL!" LIVEUPDATE_SUCCESS="KLART!" LIVEUPDATE_ICON_UNSUPPORTED="Live Update stöds inte" LIVEUPDATE_ICON_CRASHED="Live Update krashade" LIVEUPDATE_ICON_CURRENT="Du har den senaste versionen" LIVEUPDATE_ICON_UPDATES="UPPDATERING HITTAD! KLICKA FÖR ATT UPPDATERA."PK>\)language/sv-SE/.htaccessnuW+A Order allow,deny Deny from all PK>\)language/tr-TR/.htaccessnuW+A Order allow,deny Deny from all PK>\&c c #language/tr-TR/tr-TR.liveupdate.ininuW+A; Akeeba Live Update ; Copyright ©2011 Nicholas K. Dionysopoulos / AkeebaBackup.com ; Licensed under the GNU LGPLv3 or later LIVEUPDATE_TASK_OVERVIEW="Canlı Güncelle" LIVEUPDATE_NOTSUPPORTED_HEAD="Canlı Güncelleme bu sunucu üzerinde desteklenmiyor" LIVEUPDATE_NOTSUPPORTED_INFO="Sunucunuz Canlı Güncellemeyi desteklemiyor. Lütfen sunucu yöneticinizle görüşerek cURL PHP ekini ya da URL fopen() sarıcılarını etkinleştirmelerini isteyin. Bu ekler zaten etkinleştirilmişse, güvenlik duvarını şu İnternet adresine izin verecek şekilde ayarlamalarını isteyin:"; LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="%s güncellemelerini istediğiniz zaman el ile kurmak için, sitemizden en son sürümü indirip Joomla! bileşen kurucusu ile yükleyebilirsiniz." LIVEUPDATE_STUCK_HEAD="Canlı güncelleme hata vermiş" LIVEUPDATE_STUCK_INFO="Canlı güncelleme, güncelleme sunucusuna son bağlanma denemesinde hata verdiğini belirledi. Bu durum genellikle dışarıdaki sunuculara bağlantıları engelleyen bir sunucu yapılandırmasından kaynaklanır. Güncelleme bilgisini yeniden almak isterseniz lütfen aşağıdaki "Güncelleme bilgisini al" düğmesine tıklayın. Boş beyaz bir sayfa ile karşılaşırsanız sunucu yöneticinize bu durumu iletin." LIVEUPDATE_ERROR_NEEDSAUTH="Son sürüme güncellemeyi denemeden önce, bileşen ayarlarından kullanıcı adı/parolanızı ya da indirme kodunuzu yazmalısınız. Bu bilgileri yazana kadar Güncelle düğmesi devre dışı görünecektir." LIVEUPDATE_HASUPDATES_HEAD="Yeni bir sürüm bulundu" LIVEUPDATE_NOUPDATES_HEAD="Son sürümü kullanıyorsunuz" LIVEUPDATE_CURRENTVERSION="Kullandığınız sürüm" LIVEUPDATE_LATESTVERSION="Son sürüm" LIVEUPDATE_LATESTRELEASED="Son yayın tarihi" LIVEUPDATE_DOWNLOADURL="Doğrudan indirme adresi" LIVEUPDATE_REFRESH_INFO="Güncelleme bilgisini al" LIVEUPDATE_DO_UPDATE="Son sürüme güncelle" LIVEUPDATE_FTP_REQUIRED="Canlı Güncelle, güncellemeyi indirip kurmak yerine FTP kullanmaya gerek duyuyor, ancak FTP bilgilerinizi Joomla! Genel Ayarlarına kaydetmemişsiniz.

Lütfen güncellemeyi yapabilmek için FTP kullanıcı adı ve parolanızı aşağıya yazın." LIVEUPDATE_FTP="FTP Bilgisi" LIVEUPDATE_FTPUSERNAME="FTP Kullanıcı Adı" LIVEUPDATE_FTPPASSWORD="FTP Parolası" LIVEUPDATE_DOWNLOAD_AND_INSTALL="Güncellemeyi indir ve kur" LIVEUPDATE_DOWNLOAD_FAILED="Güncelleme paketi indirilemedi. Geçici klasörünüzün yazılabilir olduğundan ya da Joomla! Genel Ayarlarından FTP seçeneğini etkinleştirdiğinizden emin olun." LIVEUPDATE_EXTRACT_FAILED="Güncelleme paketi ayıklanamadı. Lütfen bileşeni elle güncellemeyi deneyin." LIVEUPDATE_INVALID_PACKAGE_TYPE="Geçersiz paket tipi. Güncelleme yapılamıyor." LIVEUPDATE_INSTALLEXT="%s %s kurulsun" LIVEUPDATE_ERROR="Hata" LIVEUPDATE_SUCCESS="Başarılı" LIVEUPDATE_ICON_UNSUPPORTED="Canlı Güncelleme Desteklenmiyor" LIVEUPDATE_ICON_CRASHED="Canlı Güncelleme hata verdi" LIVEUPDATE_ICON_CURRENT="Son sürümü kullanıyorsunuz" LIVEUPDATE_ICON_UPDATES="GÜNCELLEME VAR! YÜKLEMEK İÇİN TIKLAYIN."PK>\admin.virtuemart_allinone.phpnuW+A * * One-click updater for Joomla! extensions * Copyright (C) 2011 Nicholas K. Dionysopoulos / AkeebaBackup.com * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ defined('_JEXEC') or die(); require_once dirname(__FILE__).'/classes/abstractconfig.php'; require_once dirname(__FILE__).'/config.php'; $task = JRequest::getCmd('task'); if($task=='updateDatabase'){ $data = JRequest::get('get'); JRequest::setVar($data['token'], '1', 'post'); JRequest::checkToken() or jexit('Invalid Token, in ' . JRequest::getWord('task')); //Update Tables if (!class_exists( 'VmConfig' )) require(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_virtuemart'.DS.'helpers'.DS.'config.php'); if(!class_exists('Permissions')) require(JPATH_ROOT.DS.'administrator'.DS.'components'.DS.'com_virtuemart' . DS . 'helpers' . DS . 'permissions.php'); if(!Permissions::getInstance()->check('admin')){ $msg = 'Forget IT'; $this->setRedirect('index.php?option=com_virtuemart_allinone', $msg); } else { if(!class_exists('com_virtuemart_allinoneInstallerScript')) require(JPATH_ROOT.DS.'administrator'.DS.'components'.DS.'com_virtuemart_allinone'.DS.'script.vmallinone.php'); $updater = new com_virtuemart_allinoneInstallerScript(); $updater->vmInstall(); $app = JFactory::getApplication(); $app->redirect('index.php?option=com_virtuemart_allinone', 'Database updated'); } } ?>
load('com_virtuemart', JPATH_ADMINISTRATOR, 'en-GB', true); // Load English (British) $jlang->load('com_virtuemart', JPATH_ADMINISTRATOR, $jlang->getDefault(), true); // Load the site's default language $jlang->load('com_virtuemart', JPATH_ADMINISTRATOR, null, true); // Load the currently selected language ?>
load('liveupdate', $basePath, 'en-GB', true); // Load English (British) $jlang->load('liveupdate', $basePath, $jlang->getDefault(), true); // Load the site's default language $jlang->load('liveupdate', $basePath, null, true); // Load the currently selected language } /** * Handles requests to the "liveupdate" view which is used to display * update information and perform the live updates */ public static function handleRequest() { // Load language strings self::loadLanguage(); // Load the controller and let it run the show require_once dirname(__FILE__).'/classes/controller.php'; $controller = new LiveUpdateController(); $controller->execute(JRequest::getCmd('task','overview')); $controller->redirect(); } /** * Returns update information about your extension, based on your configuration settings * @return stdClass */ public static function getUpdateInformation($force = false) { require_once dirname(__FILE__).'/classes/updatefetch.php'; $update = new LiveUpdateFetch(); $info = $update->getUpdateInformation($force); $hasUpdates = $update->hasUpdates(); $info->hasUpdates = $hasUpdates; $config = LiveUpdateConfig::getInstance(); $extInfo = $config->getExtensionInformation(); $info->extInfo = (object)$extInfo; return $info; } public static function getIcon($config=array()) { // Load language strings self::loadLanguage(); $defaultConfig = array( 'option' => JRequest::getCmd('option',''), 'view' => 'liveupdate', 'mediaurl' => JURI::base().'components/'.JRequest::getCmd('option','').'/liveupdate/assets/' ); $c = array_merge($defaultConfig, $config); $url = 'index.php?option='.$c['option'].'&view='.$c['view']; $img = $c['mediaurl']; $updateInfo = self::getUpdateInformation(); if(!$updateInfo->supported) { // Unsupported $class = 'liveupdate-icon-notsupported'; $img .= 'nosupport-32.png'; $lbl = JText::_('LIVEUPDATE_ICON_UNSUPPORTED'); } elseif($updateInfo->stuck) { // Stuck $class = 'liveupdate-icon-crashed'; $img .= 'nosupport-32.png'; $lbl = JText::_('LIVEUPDATE_ICON_CRASHED'); } elseif($updateInfo->hasUpdates) { // Has updates $class = 'liveupdate-icon-updates'; $img .= 'update-32.png'; $lbl = JText::_('LIVEUPDATE_ICON_UPDATES'); } else { // Already in the latest release $class = 'liveupdate-icon-noupdates'; $img .= 'current-32.png'; $lbl = JText::_('LIVEUPDATE_ICON_CURRENT'); } return ''; } }PK>\wtW index.htmlnuW+APK>\w8lffclasses/abstractconfig.phpnuW+A */ defined('_JEXEC') or die(); /** * This is the base class inherited by the config.php file in LiveUpdate's root. * You may override it non-final members to customise its behaviour. * @author Nicholas K. Dionysopoulos * */ abstract class LiveUpdateAbstractConfig extends JObject { /** @var string The extension name, e.g. com_foobar, plg_foobar, mod_foobar, tpl_foobar etc */ protected $_extensionName = 'com_foobar'; /** @var string The human-readable name of your extension */ protected $_extensionTitle = 'Foobar Component for Joomla!'; /** * The filename of the XML manifest of your extension. Leave blank to use extensionname.xml. For example, * if the extension is com_foobar, it will look for com_foobar.xml and foobar.xml in the component's * directory. * @var string * */ protected $_xmlFilename = ''; /** @var string The information storage adapter to use. Can be 'file' or 'component' */ protected $_storageAdapter = 'file'; /** @var array The configuration options for the storage adapter used */ protected $_storageConfig = array('path' => JPATH_CACHE); /** * How to determine if a new version is available. 'different' = if the version number is different, * the remote version is newer, 'vcompare' = use version compare between the two versions, 'newest' = * compare the release dates to find the newest. I suggest using 'different' on most cases. * @var string */ protected $_versionStrategy = 'different'; /** @var The current version of your extension. Populated automatically from the XML manifest. */ protected $_currentVersion = ''; /** @var The current release date of your extension. Populated automatically from the XML manifest. */ protected $_currentReleaseDate = ''; /** @var string The URL to the INI update stream of this extension */ protected $_updateURL = ''; /** @var bool Does the download URL require authorization to download the package? */ protected $_requiresAuthorization = false; /** @var string The username to authorize a download on your site */ protected $_username = ''; /** @var string The password to authorize a download on your site */ protected $_password = ''; /** @var string The Download ID to authorize a download on your site; use it instead of the username/password pair */ protected $_downloadID = ''; /** @var string The path to a local copy of cacert.pem, required if you plan on using HTTPS URLs to fetch live udpate information or download files from */ protected $_cacerts = null; /** @var string The minimum stability level to report as available update. One of alpha, beta, rc and stable. */ protected $_minStability = 'alpha'; /** * Singleton implementation * @return LiveUpdateConfig An instance of the Live Update configuration class */ public static function &getInstance() { static $instance = null; if(!is_object($instance)) { $instance = new LiveUpdateConfig(); } return $instance; } /** * Public constructor. It populates all extension-specific fields. Override to your liking if necessary. */ public function __construct() { parent::__construct(); $this->populateExtensionInfo(); $this->populateAuthorization(); } /** * Returns the URL to the update INI stream. By default it returns the value to * the protected $_updateURL property of the class. Override with your implementation * if you want to modify its logic. */ public function getUpdateURL() { return $this->_updateURL; } /** * Override this ethod to load customized CSS and media files instead of the stock * CSS and media provided by Live Update. If you override this class it MUST return * true, otherwise LiveUpdate's CSS will be loaded after yours and will override your * settings. * * @return bool Return true to stop Live Update from loading its own CSS files. */ public function addMedia() { return false; } /** * Gets the authorization string to append to the download URL. It returns either the * download ID or username/password pair. Please override the class constructor, not * this method, if you want to fetch these values. */ public final function getAuthorization() { if(!empty($this->_downloadID)) { return "dlid=".urlencode($this->_downloadID); } if(!empty($this->_username) && !empty($this->_password)) { return "username=".urlencode($this->_username)."&password=".urlencode($this->_password); } return ""; } public final function requiresAuthorization() { return $this->_requiresAuthorization; } /** * Returns all the information we have about the extension and its update preferences * @return array The extension information */ public final function getExtensionInformation() { return array( 'name' => $this->_extensionName, 'title' => $this->_extensionTitle, 'version' => $this->_currentVersion, 'date' => $this->_currentReleaseDate, 'updateurl' => $this->_updateURL, 'requireauth' => $this->_requiresAuthorization ); } /** * Returns the information regarding the storage adapter * @return array */ public final function getStorageAdapterPreferences() { $config = $this->_storageConfig; $config['extensionName'] = $this->_extensionName; return array( 'adapter' => $this->_storageAdapter, 'config' => $config ); } public final function getVersionStrategy() { return $this->_versionStrategy; } /** * Get the current version from the XML manifest of the extension and * populate the class' properties. */ private function populateExtensionInfo() { require_once dirname(__FILE__).'/xmlslurp.php'; $xmlslurp = new LiveUpdateXMLSlurp(); $data = $xmlslurp->getInfo($this->_extensionName, $this->_xmlFilename); if(empty($this->_currentVersion)) $this->_currentVersion = $data['version']; if(empty($this->_currentReleaseDate)) $this->_currentReleaseDate = $data['date']; } /** * Fetch username/password and Download ID from the component's configuration. */ private function populateAuthorization() { if(!$this->_requiresAuthorization) return; if(substr($this->_extensionName,0,3) != 'com') return; jimport('joomla.html.parameter'); jimport('joomla.application.component.helper'); $component =& JComponentHelper::getComponent($this->_extensionName); $params = new JParameter($component->params); $this->_username = $params->getValue('username',''); $this->_password = $params->getValue('password',''); $this->_downloadID = $params->getValue('downloadid',''); } public function applyCACert(&$ch) { if(!empty($this->_cacerts)) { if(file_exists($this->_cacerts)) { @curl_setopt($ch, CURLOPT_CAINFO, $this->_cacerts); } } } public function getMinimumStability() { return $this->_minStability; } }PK>\1k+϶!!classes/download.phpnuW+A */ defined('_JEXEC') or die(); /** * Allows downloading packages over the web to your server */ class LiveUpdateDownloadHelper { /** * Downloads from a URL and saves the result as a local file * @param $url * @param $target * @return bool True on success */ public static function download($url, $target) { // Import Joomla! libraries jimport('joomla.filesystem.file'); /** @var bool Did we try to force permissions? */ $hackPermissions = false; // Make sure the target does not exist if(JFile::exists($target)) { if(!@unlink($target)) { JFile::delete($target); } } // Try to open the output file for writing $fp = @fopen($target, 'wb'); if($fp === false) { // The file can not be opened for writing. Let's try a hack. if( JFile::write($target, '') ) { if( self::chmod($target, 511) ) { $fp = @fopen($target, 'wb'); $hackPermissions = true; } } } $result = false; if($fp !== false) { // First try to download directly to file if $fp !== false $adapters = self::getAdapters(); $result = false; while(!empty($adapters) && ($result === false)) { // Run the current download method $method = 'get' . strtoupper( array_shift($adapters) ); $result = self::$method($url, $fp); // Check if we have a download if($result === true) { // The download is complete, close the file pointer @fclose($fp); // If the filesize is not at least 1 byte, we consider it failed. clearstatcache(); $filesize = @filesize($target); if($filesize <= 0) { $result = false; $fp = @fopen($target, 'wb'); } } } // If we have no download, close the file pointer if($result === false) { @fclose($fp); } } if($result === false) { // Delete the target file if it exists if(file_exists($target)) { if( !@unlink($target) ) { JFile::delete($target); } } // Download and write using JFile::write(); $result = JFile::write($target, self::downloadAndReturn($url) ); } return $result; } /** * Downloads from a URL and returns the result as a string * @param $url * @return mixed Result string on success, false on failure */ public static function downloadAndReturn($url) { $adapters = self::getAdapters(); $result = false; while(!empty($adapters) && ($result === false)) { // Run the current download method $method = 'get' . strtoupper( array_shift($adapters) ); $result = self::$method($url, null); } return $result; } /** * Does the server support PHP's cURL extension? * @return bool True if it is supported */ private static function hasCURL() { static $result = null; if(is_null($result)) { $result = function_exists('curl_init'); } return $result; } /** * Downloads the contents of a URL and writes them to disk (if $fp is not null) * or returns them as a string (if $fp is null) * @param string $url The URL to download from * @param resource $fp The file pointer to download to. Omit to return the contents. * @return bool|string False on failure, true on success ($fp not null) or the URL contents (if $fp is null) */ private static function &getCURL($url, $fp = null, $nofollow = false) { $result = false; $ch = curl_init($url); $config = new LiveUpdateConfig(); $config->applyCACert($ch); if( !@curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1) && !$nofollow ) { // Safe Mode is enabled. We have to fetch the headers and // parse any redirections present in there. curl_setopt($ch, CURLOPT_AUTOREFERER, true); curl_setopt($ch, CURLOPT_FAILONERROR, true); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($ch, CURLOPT_TIMEOUT, 30); // Get the headers $data = curl_exec($ch); curl_close($ch); // Init $newURL = $url; // Parse the headers $lines = explode("\n", $data); foreach($lines as $line) { if(substr($line, 0, 9) == "Location:") { $newURL = trim(substr($line,9)); } } // Download from the new URL if($url != $newURL) { return self::getCURL($newURL, $fp); } else { return self::getCURL($newURL, $fp, true); } } else { @curl_setopt($ch, CURLOPT_MAXREDIRS, 20); } curl_setopt($ch, CURLOPT_AUTOREFERER, true); curl_setopt($ch, CURLOPT_FAILONERROR, true); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($ch, CURLOPT_TIMEOUT, 30); // Pretend we are IE7, so that webservers play nice with us curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)'); if(is_resource($fp)) { curl_setopt($ch, CURLOPT_FILE, $fp); } $result = curl_exec($ch); curl_close($ch); return $result; } /** * Does the server support URL fopen() wrappers? * @return bool */ private static function hasFOPEN() { static $result = null; if(is_null($result)) { // If we are not allowed to use ini_get, we assume that URL fopen is // disabled. if(!function_exists('ini_get')) { $result = false; } else { $result = ini_get('allow_url_fopen'); } } return $result; } private static function &getFOPEN($url, $fp = null) { $result = false; // Track errors if( function_exists('ini_set') ) { $track_errors = ini_set('track_errors',true); } // Open the URL for reading if(function_exists('stream_context_create')) { // PHP 5+ way (best) $httpopts = Array('user_agent'=>'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)'); $context = stream_context_create( array( 'http' => $httpopts ) ); $ih = @fopen($url, 'r', false, $context); } else { // PHP 4 way (actually, it's just a fallback as we can't run Admin Tools in PHP4) if( function_exists('ini_set') ) { ini_set('user_agent', 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)'); } $ih = @fopen($url, 'r'); } // If fopen() fails, abort if( !is_resource($ih) ) { return $result; } // Try to download $bytes = 0; $result = true; $return = ''; while (!feof($ih) && $result) { $contents = fread($ih, 4096); if ($contents === false) { @fclose($ih); $result = false; return $result; } else { $bytes += strlen($contents); if(is_resource($fp)) { $result = @fwrite($fp, $contents); } else { $return .= $contents; unset($contents); } } } @fclose($ih); if(is_resource($fp)) { return $result; } elseif( $result === true ) { return $return; } else { return $result; } } /** * Detect and return available download adapters * @return array */ private static function getAdapters() { // Detect available adapters $adapters = array(); if(self::hasCURL()) $adapters[] = 'curl'; if(self::hasFOPEN()) $adapters[] = 'fopen'; return $adapters; } /** * Change the permissions of a file, optionally using FTP * @param string $file Absolute path to file * @param int $mode Permissions, e.g. 0755 */ private static function chmod($path, $mode) { if(is_string($mode)) { $mode = octdec($mode); if( ($mode < 0600) || ($mode > 0777) ) $mode = 0755; } // Initialize variables jimport('joomla.client.helper'); $ftpOptions = JClientHelper::getCredentials('ftp'); // Check to make sure the path valid and clean $path = JPath::clean($path); if ($ftpOptions['enabled'] == 1) { // Connect the FTP client jimport('joomla.client.ftp'); $ftp = &JFTP::getInstance( $ftpOptions['host'], $ftpOptions['port'], null, $ftpOptions['user'], $ftpOptions['pass'] ); } if(@chmod($path, $mode)) { $ret = true; } elseif ($ftpOptions['enabled'] == 1) { // Translate path and delete jimport('joomla.client.ftp'); $path = JPath::clean(str_replace(JPATH_ROOT, $ftpOptions['root'], $path), '/'); // FTP connector throws an error $ret = $ftp->chmod($path, $mode); } else { return false; } } }PK>\  classes/view.phpnuW+A */ defined('_JEXEC') or die(); jimport('joomla.application.component.view'); /** * The Live Update MVC view */ class LiveUpdateView extends JView { public function display($tpl = null) { // Load the CSS $config = LiveUpdateConfig::getInstance(); $this->assign('config', $config); if(!$config->addMedia()) { // No custom CSS overrides were set; include our own $document = JFactory::getDocument(); $url = JURI::base().'/components/'.JRequest::getCmd('option','').'/liveupdate/assets/liveupdate.css'; $document->addStyleSheet($url, 'text/css'); } $requeryURL = 'index.php?option='.JRequest::getCmd('option','').'&view='.JRequest::getCmd('view','liveupdate').'&force=1'; $this->assign('requeryURL', $requeryURL); $model = $this->getModel(); $extInfo = (object)$config->getExtensionInformation(); JToolBarHelper::title($extInfo->title.' – '.JText::_('LIVEUPDATE_TASK_OVERVIEW'),'liveupdate'); if(version_compare(JVERSION,'1.6.0','ge')) { $msg = 'JTOOLBAR_BACK'; } else { $msg = 'Back'; } JToolBarHelper::back($msg, 'index.php?option='.JRequest::getCmd('option','')); switch(JRequest::getCmd('task','default')) { case 'startupdate': $this->setLayout('startupdate'); $this->assign('url','index.php?option='.JRequest::getCmd('option','').'&view='.JRequest::getCmd('view','liveupdate').'&task=download'); break; case 'install': $this->setLayout('install'); // Get data from the model $state = &$this->get('State'); // Are there messages to display ? $showMessage = false; if ( is_object($state) ) { $message1 = $state->get('message'); $message2 = $state->get('extension.message'); $showMessage = ( $message1 || $message2 ); } $this->assign('showMessage', $showMessage); $this->assignRef('state', $state); break; case 'overview': default: $this->setLayout('overview'); $force = JRequest::getInt('force',0); $this->assign('updateInfo', LiveUpdate::getUpdateInformation($force)); $this->assign('runUpdateURL','index.php?option='.JRequest::getCmd('option','').'&view='.JRequest::getCmd('view','liveupdate').'&task=startupdate'); $needsAuth = !($config->getAuthorization()) && ($config->requiresAuthorization()); $this->assign('needsAuth', $needsAuth); break; } parent::display($tpl); } }PK>\gEclasses/controller.phpnuW+A */ defined('_JEXEC') or die(); jimport('joomla.application.component.controller'); /** * The Live Update MVC controller */ class LiveUpdateController extends JController { private $jversion = '15'; /** * Object contructor * @param array $config * * @return LiveUpdateController */ public function __construct($config = array()) { parent::__construct(); // Do we have Joomla! 1.6? if( version_compare( JVERSION, '1.6.0', 'ge' ) ) { $this->jversion = '16'; } $basePath = dirname(__FILE__); if($this->jversion == '15') { $this->_basePath = $basePath; } else { $this->basePath = $basePath; } $this->registerDefaultTask('overview'); } /** * Runs the overview page task */ public function overview() { $this->display(); } /** * Starts the update procedure. If the FTP credentials are required, it asks for them. */ public function startupdate() { $ftp = $this->setCredentialsFromRequest('ftp'); if($ftp === true) { // The user needs to supply the FTP credentials $this->display(); } else { // No FTP credentials required; proceed with the download $this->setRedirect('index.php?option='.JRequest::getCmd('option','').'&view='.JRequest::getCmd('view','liveupdate').'&task=download'); $this->redirect(); } } /** * Download the update package */ public function download() { $ftp = $this->setCredentialsFromRequest('ftp'); $model = $this->getThisModel(); $result = $model->download(); if(!$result) { // Download failed $msg = JText::_('LIVEUPDATE_DOWNLOAD_FAILED'); $this->setRedirect('index.php?option='.JRequest::getCmd('option','').'&view='.JRequest::getCmd('view','liveupdate').'&task=overview', $msg, 'error'); } else { // Download successful. Let's extract the package. $url = 'index.php?option='.JRequest::getCmd('option','').'&view='.JRequest::getCmd('view','liveupdate').'&task=extract'; $user = JRequest::getString('username', null, 'GET', JREQUEST_ALLOWRAW); $pass = JRequest::getString('password', null, 'GET', JREQUEST_ALLOWRAW); if($user) { $url .= '&username='.urlencode($user).'&password='.urlencode($pass); } $this->setRedirect($url); } $this->redirect(); } public function extract() { $ftp = $this->setCredentialsFromRequest('ftp'); $model = $this->getThisModel(); $result = $model->extract(); if(!$result) { // Download failed $msg = JText::_('LIVEUPDATE_EXTRACT_FAILED'); $this->setRedirect('index.php?option='.JRequest::getCmd('option','').'&view='.JRequest::getCmd('view','liveupdate').'&task=overview', $msg, 'error'); } else { // Extract successful. Let's install the package. $url = 'index.php?option='.JRequest::getCmd('option','').'&view='.JRequest::getCmd('view','liveupdate').'&task=install'; $user = JRequest::getString('username', null, 'GET', JREQUEST_ALLOWRAW); $pass = JRequest::getString('password', null, 'GET', JREQUEST_ALLOWRAW); if($user) { $url .= '&username='.urlencode($user).'&password='.urlencode($pass); } // Do we have SRP installed yet? $app = JFactory::getApplication(); $jResponse = $app->triggerEvent('onSRPEnabled'); $status = false; if(!empty($jResponse)) { $status = false; foreach($jResponse as $response) { $status = $status || $response; } } // SRP enabled, use it if($status) { $return = $url; $url = $model->getSRPURL($return); if(!$url) { $url = $return; } } $this->setRedirect($url); } $this->redirect(); } public function install() { $ftp = $this->setCredentialsFromRequest('ftp'); $model = $this->getThisModel(); $result = $model->install(); if(!$result) { // Installation failed $model->cleanup(); $this->setRedirect('index.php?option='.JRequest::getCmd('option','').'&view='.JRequest::getCmd('view','liveupdate').'&task=overview'); $this->redirect(); } else { // Installation successful. Show the installation message. if(version_compare(JVERSION,'1.6.0','ge')) { $cache = JFactory::getCache('mod_menu'); $cache->clean(); } $this->display(); } } public function cleanup() { // Perform the cleanup $ftp = $this->setCredentialsFromRequest('ftp'); $model = $this->getThisModel(); $model->cleanup(); // Force reload update information $dummy = LiveUpdate::getUpdateInformation(true); die('OK'); } /** * Displays the current view * @param bool $cachable Ignored! */ public final function display($cachable = false) { $viewLayout = JRequest::getCmd( 'layout', 'default' ); $view = $this->getThisView(); // Get/Create the model $model = $this->getThisModel(); $view->setModel($model, true); // Assign the FTP credentials from the request, or return TRUE if they are required jimport('joomla.client.helper'); $ftp = $this->setCredentialsFromRequest('ftp'); $view->assignRef('ftp', $ftp); // Set the layout $view->setLayout($viewLayout); // Display the view $view->display(); } public final function getThisView() { static $view = null; if(is_null($view)) { $basePath = ($this->jversion == '15') ? $this->_basePath : $this->basePath; $tPath = dirname(__FILE__).'/tmpl'; require_once('view.php'); $view = new LiveUpdateView(array('base_path'=>$basePath, 'template_path'=>$tPath)); } return $view; } public final function getThisModel() { static $model = null; if(is_null($model)) { require_once('model.php'); $model = new LiveUpdateModel(); $task = ($this->jversion == '15') ? $this->_task : $this->task; $model->setState( 'task', $task ); $app = JFactory::getApplication(); $menu = $app->getMenu(); if (is_object( $menu )) { if ($item = $menu->getActive()) { $params =& $menu->getParams($item->id); // Set Default State Data $model->setState( 'parameters.menu', $params ); } } } return $model; } private function setCredentialsFromRequest($client) { // Determine wether FTP credentials have been passed along with the current request jimport('joomla.client.helper'); $user = JRequest::getString('username', null, 'GET', JREQUEST_ALLOWRAW); $pass = JRequest::getString('password', null, 'GET', JREQUEST_ALLOWRAW); if ($user != '' && $pass != '') { // Add credentials to the session if (JClientHelper::setCredentials($client, $user, $pass)) { $return = false; } else { $return =& JError::raiseWarning('SOME_ERROR_CODE', 'JClientHelper::setCredentialsFromRequest failed'); } } else { // Just determine if the FTP input fields need to be shown $return = !JClientHelper::hasCredentials('ftp'); } return $return; } }PK>\+dLLclasses/storage/file.phpnuW+A */ defined('_JEXEC') or die(); /** * Live Update File Storage Class * Allows to store the update data to files on disk. Its configuration options are: * path string The absolute path to the directory where the update data will be stored as INI files * */ class LiveUpdateStorageFile extends LiveUpdateStorage { private static $filename = null; public function load($config) { $path = $config['path']; $extname = $config['extensionName']; $filename = "$path/$extname.updates.ini"; self::$filename = $filename; jimport('joomla.registry.registry'); self::$registry = new JRegistry('update'); jimport('joomla.filesystem.file'); if(JFile::exists(self::$filename)) { self::$registry->loadFile(self::$filename, 'INI'); } } public function save() { jimport('joomla.filesystem.file'); $data = self::$registry->toString('INI'); JFile::write(self::$filename, $data); } } PK>\://classes/storage/index.htmlnuW+A PK>\)classes/storage/.htaccessnuW+A Order allow,deny Deny from all PK>\? classes/storage/component.phpnuW+A */ defined('_JEXEC') or die(); /** * Live Update Component Storage Class * Allows to store the update data to a component's parameters. This is the most reliable method. * Its configuration options are: * component string The name of the component which will store our data. If not specified the extension name will be used. * key string The name of the component parameter where the serialized data will be stored. If not specified "liveupdate" will be used. */ class LiveUpdateStorageComponent extends LiveUpdateStorage { private static $component = null; private static $key = null; public function load($config) { if(!array_key_exists('component', $config)) { self::$component = $config['extensionName']; } else { self::$component = $config['component']; } if(!array_key_exists('key', $config)) { self::$key = 'liveupdate'; } else { self::$key = $config['key']; } jimport('joomla.html.parameter'); jimport('joomla.application.component.helper'); $component =& JComponentHelper::getComponent(self::$component); if(!($component->params instanceof JRegistry)) { $params = new JParameter($component->params); } else { $params = $component->params; } $data = $params->getValue(self::$key, ''); jimport('joomla.registry.registry'); self::$registry = new JRegistry('update'); self::$registry->loadINI($data); } public function save() { $data = self::$registry->toString('INI'); $db =JFactory::getDBO(); // An interesting discovery: if your component is manually updating its // component parameters before Live Update is called, then calling Live // Update will reset the modified component parameters because // JComponentHelper::getComponent() returns the old, cached version of // them. So, we have to forget the following code and shoot ourselves in // the feet. Dammit!!! /* jimport('joomla.html.parameter'); jimport('joomla.application.component.helper'); $component =& JComponentHelper::getComponent(self::$component); $params = new JParameter($component->params); $params->setValue(self::$key, $data); */ if( version_compare(JVERSION,'1.6.0','ge') ) { $sql = 'SELECT '.$db->nameQuote('params').' FROM '.$db->nameQuote('#__extensions'). ' WHERE '.$db->nameQuote('type').' = '.$db->Quote('component').' AND '. $db->nameQuote('element').' = '.$db->Quote(self::$component); $db->setQuery($sql); } else { $sql = 'SELECT '.$db->nameQuote('params').' FROM '.$db->nameQuote('#__components'). ' WHERE '.$db->nameQuote('option').' = '.$db->Quote(self::$component). " AND `parent` = 0 AND `menuid` = 0"; $db->setQuery($sql); } $rawparams = $db->loadResult(); $params = new JParameter($rawparams); $params->setValue(self::$key, $data); if( version_compare(JVERSION,'1.6.0','ge') ) { // Joomla! 1.6 $data = $params->toString('JSON'); $sql = 'UPDATE `#__extensions` SET `params` = '.$db->Quote($data).' WHERE '. "`element` = ".$db->Quote(self::$component)." AND `type` = 'component'"; } else { // Joomla! 1.5 $data = $params->toString('INI'); $sql = 'UPDATE `#__components` SET `params` = '.$db->Quote($data).' WHERE '. "`option` = ".$db->Quote(self::$component)." AND `parent` = 0 AND `menuid` = 0"; } $db->setQuery($sql); $db->query(); } } PK>\ǘ[77classes/storage/storage.phpnuW+A */ defined('_JEXEC') or die(); /** * Abstract class for the update parameters storage * @author nicholas * */ class LiveUpdateStorage { /** * The update data registry * @var JRegistry */ public static $registry = null; /** * * @param string $type * @param array $config * @return LiveUpdateStorage */ public static function getInstance($type, $config) { static $instances = array(); $sig = md5($type, serialize($config)); if(!array_key_exists($sig, $instances)) { require_once dirname(__FILE__).'/'.strtolower($type).'.php'; $className = 'LiveUpdateStorage'.ucfirst($type); $object = new $className($config); $object->load($config); $newRegistry = clone(self::$registry); $object->setRegistry($newRegistry); $instances[$sig] = $object; } return $instances[$sig]; } public function &getRegistry() { return self::$registry; } public function setRegistry($registry) { self::$registry = $registry; } public final function set($key, $value) { if($key == 'updatedata') { if(function_exists('json_encode') && function_exists('json_decode')) { $value = json_encode($value); } elseif(function_exists('base64_encode') && function_exists('base64_decode')) { $value = base64_encode(serialize($value)); } else { $value = serialize($value); } } self::$registry->setValue("update.$key", $value); } public final function get($key, $default) { $value = self::$registry->getValue("update.$key", $default); if($key == 'updatedata') { if(function_exists('json_encode') && function_exists('json_decode')) { $value = json_decode($value); } elseif(function_exists('base64_encode') && function_exists('base64_decode')) { $value = unserialize(base64_decode($value)); } else { $value = unserialize($value); } } return $value; } public function save() {} public function load($config) {} }PK>\8\classes/inihelper.phpnuW+A */ defined('_JEXEC') or die(); /** * A smart INI file parser with reproducible behaviour among different PHP versions */ class LiveUpdateINIHelper { /** * Parse an INI file and return an associative array. Since PHP versions before * 5.1 are bitches with regards to INI parsing, I use a PHP-only solution to * overcome this obstacle. * @param string $file The file to process * @param bool $process_sections True to also process INI sections * @return array An associative array of sections, keys and values */ public static function parse_ini_file( $file, $process_sections, $rawdata = false ) { if($rawdata) { return self::parse_ini_file_php($file, $process_sections, $rawdata); } else { if( version_compare(PHP_VERSION, '5.1.0', '>=') && (!$rawdata) ) { if( function_exists('parse_ini_file') ) { return parse_ini_file($file, $process_sections); } else { return self::parse_ini_file_php($file, $process_sections); } } else { return self::parse_ini_file_php($file, $process_sections, $rawdata); } } } /** * A PHP based INI file parser. * Thanks to asohn ~at~ aircanopy ~dot~ net for posting this handy function on * the parse_ini_file page on http://gr.php.net/parse_ini_file * @param string $file Filename to process * @param bool $process_sections True to also process INI sections * @param bool $rawdata If true, the $file contains raw INI data, not a filename * @return array An associative array of sections, keys and values */ static function parse_ini_file_php($file, $process_sections = false, $rawdata = false) { $process_sections = ($process_sections !== true) ? false : true; if(!$rawdata) { $ini = file($file); } else { $file = str_replace("\r","",$file); $ini = explode("\n", $file); } if (count($ini) == 0) {return array();} $sections = array(); $values = array(); $result = array(); $globals = array(); $i = 0; foreach ($ini as $line) { $line = trim($line); $line = str_replace("\t", " ", $line); // Comments if (!preg_match('/^[a-zA-Z0-9[]/', $line)) {continue;} // Sections if ($line{0} == '[') { $tmp = explode(']', $line); $sections[] = trim(substr($tmp[0], 1)); $i++; continue; } // Key-value pair list($key, $value) = explode('=', $line, 2); $key = trim($key); $value = trim($value); if (strstr($value, ";")) { $tmp = explode(';', $value); if (count($tmp) == 2) { if ((($value{0} != '"') && ($value{0} != "'")) || preg_match('/^".*"\s*;/', $value) || preg_match('/^".*;[^"]*$/', $value) || preg_match("/^'.*'\s*;/", $value) || preg_match("/^'.*;[^']*$/", $value) ){ $value = $tmp[0]; } } else { if ($value{0} == '"') { $value = preg_replace('/^"(.*)".*/', '$1', $value); } elseif ($value{0} == "'") { $value = preg_replace("/^'(.*)'.*/", '$1', $value); } else { $value = $tmp[0]; } } } $value = trim($value); $value = trim($value, "'\""); if ($i == 0) { if (substr($line, -1, 2) == '[]') { $globals[$key][] = $value; } else { $globals[$key] = $value; } } else { if (substr($line, -1, 2) == '[]') { $values[$i-1][$key][] = $value; } else { $values[$i-1][$key] = $value; } } } for($j = 0; $j < $i; $j++) { if ($process_sections === true) { if( isset($sections[$j]) && isset($values[$j]) ) $result[$sections[$j]] = $values[$j]; } else { if( isset($values[$j]) ) $result[] = $values[$j]; } } return $result + $globals; } }PK>\?$$classes/updatefetch.phpnuW+A */ defined('_JEXEC') or die(); /** * Fetches the update information from the server or the cache, depending on * whether the cache is fresh or not. */ class LiveUpdateFetch extends JObject { private $cacheTTL = 24; private $storage = null; /** * One-stop-shop function which fetches update information and tells you * if there are updates available or not, or if updates are not supported. * * @return int 0 = no updates, 1 = updates available, -1 = updates not supported, -2 = fetching updates crashes the server */ public function hasUpdates() { $updateInfo = $this->getUpdateInformation(); if($updateInfo->stuck) return -2; if(!$updateInfo->supported) return -1; $config = LiveUpdateConfig::getInstance(); $extInfo = $config->getExtensionInformation(); // Filter by stability level $minStability = $config->getMinimumStability(); $stability = strtolower($updateInfo->stability); switch($minStability) { case 'alpha': default: // Reports any stability level as an available update break; case 'beta': // Do not report alphas as available updates if(in_array($stability, array('alpha'))) return 0; break; case 'rc': // Do not report alphas and betas as available updates if(in_array($stability, array('alpha','beta'))) return 0; break; case 'stable': // Do not report alphas, betas and rcs as available updates if(in_array($stability, array('alpha','beta','rc'))) return 0; break; } // Use the version strategy to determine the availability of an update switch($config->getVersionStrategy()) { case 'newest': jimport('joomla.utilities.date'); if(empty($extInfo)) { $mine = new JDate('2000-01-01 00:00:00'); } else { $mine = new JDate($extInfo['date']); } $theirs = new JDate($updateInfo->date); return ($theirs->toUnix() > $mine->toUnix()) ? 1 : 0; break; case 'vcompare': $mine = $extInfo['version']; if(empty($mine)) $mine = '0.0.0'; $theirs = $updateInfo->version; if(empty($theirs)) $theirs = '0.0.0'; return (version_compare($theirs, $mine, 'gt')) ? 1 : 0; break; case 'different': $mine = $extInfo['version']; if(empty($mine)) $mine = '0.0.0'; $theirs = $updateInfo->version; if(empty($theirs)) $theirs = '0.0.0'; return ($theirs != $mine) ? 1 : 0; break; } } /** * Get the latest version (update) information, either from the cache or * from the update server. * * @param $force bool Set to true to force fetching fresh data from the server * * @return stdClass The update information, in object format */ public function getUpdateInformation($force = false) { // Get the Live Update configuration $config = LiveUpdateConfig::getInstance(); // Get an instance of the storage class $storageOptions = $config->getStorageAdapterPreferences(); require_once dirname(__FILE__).'/storage/storage.php'; $this->storage = LiveUpdateStorage::getInstance($storageOptions['adapter'], $storageOptions['config']); $storage = $this->storage; // Fetch information from the cache if(version_compare(JVERSION, '1.6.0', 'ge')) { $registry = $storage->getRegistry(); $lastCheck = $registry->get('lastcheck', 0); $cachedData = $registry->get('updatedata', null); } else { $lastCheck = $storage->get('lastcheck', 0); $cachedData = $storage->get('updatedata', null); } if(is_string($cachedData)) { $cachedData = trim($cachedData,'"'); $cachedData = json_decode($cachedData); } if(empty($cachedData)) { $lastCheck = 0; } // Check if the cache is at most $cacheTTL hours old $now = time(); $maxDifference = $this->cacheTTL * 3600; $difference = abs($now - $lastCheck); if(!($force) && ($difference <= $maxDifference)) { // The cache is fresh enough; return cached data return $cachedData; } else { // The cache is stale; fetch new data, cache it and return it to the caller $data = $this->getUpdateData($force); $this->storage->set('lastcheck', $now); $this->storage->set('updatedata', json_encode($data)); $this->storage->save(); return $data; } } /** * Retrieves the update data from the server, unless previous runs indicate * that the download process gets stuck and ends up in a WSOD. * * @param bool $force Set to true to force fetching new data no matter if the process is marked as stuck * @return stdClass */ private function getUpdateData($force = false) { $ret = array( 'supported' => false, 'stuck' => true, 'version' => '', 'date' => '', 'stability' => '', 'downloadURL' => '' ); // If the process is marked as "stuck", we won't bother fetching data again; well, // unless you really force me to, by setting $force = true. if($this->storage->get('stuck',0) && !$force) return (object)$ret; $ret['stuck'] = false; require_once dirname(__FILE__).'/download.php'; // First we mark Live Updates as getting stuck. This way, if fetching the update // fails with a server error, reloading the page will not result to a White Screen // of Death again. Hey, Joomla! core team, are you listening? Some hosts PRETEND to // support cURL or URL fopen() wrappers but using them throws an immediate WSOD. $this->storage->set('stuck', 1); $this->storage->save(); $config = LiveUpdateConfig::getInstance(); $extInfo = $config->getExtensionInformation(); $url = $extInfo['updateurl']; $rawData = LiveUpdateDownloadHelper::downloadAndReturn($url); // Now that we have some data returned, let's unmark the process as being stuck ;) $this->storage->set('stuck', 0); $this->storage->save(); // If we didn't get anything, assume Live Update is not supported (communication error) if(empty($rawData) || ($rawData == false)) return (object)$ret; // TODO Detect the content type of the returned update stream. For now, I will pretend it's an INI file. $data = $this->parseINI($rawData); $ret['supported'] = true; return (object)array_merge($ret, $data); } /** * Fetches update information from the server using cURL * @return string The raw server data */ private function fetchCURL() { $config = LiveUpdateConfig::getInstance(); $extInfo = $config->getExtensionInformation(); $url = $extInfo['updateurl']; $process = curl_init($url); $config = new LiveUpdateConfig(); $config->applyCACert($process); curl_setopt($process, CURLOPT_HEADER, 0); // Pretend we are Firefox, so that webservers play nice with us curl_setopt($process, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.14) Gecko/20110105 Firefox/3.6.14'); curl_setopt($process, CURLOPT_ENCODING, 'gzip'); curl_setopt($process, CURLOPT_TIMEOUT, 10); curl_setopt($process, CURLOPT_RETURNTRANSFER, 1); curl_setopt($process, CURLOPT_SSL_VERIFYPEER, false); // The @ sign allows the next line to fail if open_basedir is set or if safe mode is enabled @curl_setopt($process, CURLOPT_FOLLOWLOCATION, 1); @curl_setopt($process, CURLOPT_MAXREDIRS, 20); $inidata = curl_exec($process); curl_close($process); return $inidata; } /** * Fetches update information from the server using file_get_contents, which internally * uses URL fopen() wrappers. * @return string The raw server data */ private function fetchFOPEN() { $config = LiveUpdateConfig::getInstance(); $extInfo = $config->getExtensionInformation(); $url = $extInfo['updateurl']; return @file_get_contents($urls); } /** * Parses the raw INI data into an array of update information * @param string $rawData The raw INI data * @return array The parsed data */ private function parseINI($rawData) { $ret = array( 'version' => '', 'date' => '', 'stability' => '', 'downloadURL' => '' ); // Get the magic string $magicPos = strpos($rawData, '; Live Update provision file'); if($magicPos === false) { // That's not an INI file :( return $ret; } if($magicPos !== 0) { $rawData = substr($rawData, $magicPos); } require_once dirname(__FILE__).'/inihelper.php'; $iniData = LiveUpdateINIHelper::parse_ini_file($rawData, false, true); $ret['version'] = $iniData['version']; $ret['date'] = $iniData['date']; $config = LiveUpdateConfig::getInstance(); $auth = $config->getAuthorization(); $glue = strpos($iniData['link'],'?') === false ? '?' : '&'; $ret['downloadURL'] = $iniData['link'] . (empty($auth) ? '' : $glue.$auth); if(array_key_exists('stability', $iniData)) { $stability = $iniData['stability']; } else { // Stability not defined; guesswork mode enabled $version = $ret['version']; if( preg_match('#^[0-9\.]*a[0-9\.]*#', $version) == 1 ) { $stability = 'alpha'; } elseif( preg_match('#^[0-9\.]*b[0-9\.]*#', $version) == 1 ) { $stability = 'beta'; } elseif( preg_match('#^[0-9\.]*rc[0-9\.]*#', $version) == 1 ) { $stability = 'rc'; } elseif( preg_match('#^[0-9\.]*$#', $version) == 1 ) { $stability = 'stable'; } else { $stability = 'svn'; } } $ret['stability'] = $stability; return $ret; } }PK>\Ը!!classes/model.phpnuW+A */ defined('_JEXEC') or die(); jimport('joomla.application.component.model'); /** * The Live Update MVC model */ class LiveUpdateModel extends JModel { public function download() { // Get the path to Joomla!'s temporary directory $jreg =JFactory::getConfig(); $tmpdir = $jreg->getValue('config.tmp_path'); jimport('joomla.filesystem.folder'); // Make sure the user doesn't use the system-wide tmp directory. You know, the one that's // being erased periodically and will cause a real mess while installing extensions (Grrr!) if(realpath($tmpdir) == '/tmp') { // Someone inform the user that what he's doing is insecure and stupid, please. In the // meantime, I will fix what is broken. $tmpdir = JPATH_SITE.DS.'tmp'; } // Make sure that folder exists (users do stupid things too often; you'd be surprised) elseif(!JFolder::exists($tmpdir)) { // Darn it, user! WTF where you thinking? OK, let's use a directory I know it's there... $tmpdir = JPATH_SITE.DS.'tmp'; } // Oki. Let's get the URL of the package $updateInfo = LiveUpdate::getUpdateInformation(); $config = LiveUpdateConfig::getInstance(); $auth = $config->getAuthorization(); $url = $updateInfo->downloadURL; // Sniff the package type. If sniffing is impossible, I'll assume a ZIP package $basename = basename($url); if(strstr($basename,'?')) { $basename = substr($basename, strstr($basename,'?')+1); } if(substr($basename,-4) == '.zip') { $type = 'zip'; } elseif(substr($basename,-4) == '.tar') { $type = 'tar'; } elseif(substr($basename,-4) == '.tgz') { $type = 'tar.gz'; } elseif(substr($basename,-7) == '.tar.gz') { $type = 'tar.gz'; } else { $type = 'zip'; } // Cache the path to the package file and the temp installation directory in the session $target = $tmpdir.DS.$updateInfo->extInfo->name.'.update.'.$type; $tempdir = $tmpdir.DS.$updateInfo->extInfo->name.'_update'; $session = JFactory::getSession(); $session->set('target', $target, 'liveupdate'); $session->set('tempdir', $tempdir, 'liveupdate'); // Let's download! require_once dirname(__FILE__).'/download.php'; return LiveUpdateDownloadHelper::download($url, $target); } public function extract() { $session = JFactory::getSession(); $target = $session->get('target', '', 'liveupdate'); $tempdir = $session->get('tempdir', '', 'liveupdate'); jimport('joomla.filesystem.archive'); return JArchive::extract( $target, $tempdir); } public function install() { $session = JFactory::getSession(); $tempdir = $session->get('tempdir', '', 'liveupdate'); jimport('joomla.installer.installer'); jimport('joomla.installer.helper'); $installer =& JInstaller::getInstance(); $packageType = JInstallerHelper::detectType($tempdir); if(!$packageType) { $msg = JText::_('LIVEUPDATE_INVALID_PACKAGE_TYPE'); $result = false; } elseif (!$installer->install($tempdir)) { // There was an error installing the package $msg = JText::sprintf('LIVEUPDATE_INSTALLEXT', JText::_($packageType), JText::_('LIVEUPDATE_Error')); $result = false; } else { // Package installed sucessfully $msg = JText::sprintf('LIVEUPDATE_INSTALLEXT', JText::_($packageType), JText::_('LIVEUPDATE_Success')); $result = true; } $app = JFactory::getApplication(); $app->enqueueMessage($msg); $this->setState('result', $result); $this->setState('packageType', $packageType); if($packageType) { $this->setState('name', $installer->get('name')); $this->setState('message', $installer->message); if(version_compare(JVERSION,'1.6.0','ge')) { $this->setState('extmessage', $installer->get('extension_message')); } else { $this->setState('extmessage', $installer->get('extension.message')); } } return $result; } public function cleanup() { $session = JFactory::getSession(); $target = $session->get('target', '', 'liveupdate'); $tempdir = $session->get('tempdir', '', 'liveupdate'); jimport('joomla.installer.helper'); JInstallerHelper::cleanupInstall($target, $tempdir); $session->clear('target','liveupdate'); $session->clear('tempdir','liveupdate'); } public function getSRPURL($return = '') { $session = JFactory::getSession(); $tempdir = $session->get('tempdir', '', 'liveupdate'); jimport('joomla.installer.installer'); jimport('joomla.installer.helper'); jimport('joomla.filesystem.file'); $instModelFile = JPATH_ADMINISTRATOR.'/components/com_akeeba/models/installer.php'; if(!JFile::exists($instModelFile)) return false; require_once JPATH_ADMINISTRATOR.'/components/com_akeeba/models/installer.php'; $model = JModel::getInstance('Installer', 'AkeebaModel'); $packageType = JInstallerHelper::detectType($tempdir); $name = $model->getExtensionName($tempdir); $url = 'index.php?option=com_akeeba&view=backup&tag=restorepoint&type='.$packageType.'&name='.urlencode($name['name']); switch($type) { case 'module': case 'template': $url .= '&group='.$name['client']; break; case 'plugin': $url .= '&group='.$name['group']; break; } if(!empty($return)) $url .= '&returnurl='.urlencode($return); return $url; } }PK>\://classes/index.htmlnuW+A PK>\)classes/tmpl/.htaccessnuW+A Order allow,deny Deny from all PK>\.classes/tmpl/install.phpnuW+A */ defined( '_JEXEC' ) or die(); $state = &$this->get('State'); $message1 = $state->get('message'); $message2 = $state->get('extmessage'); ?>

Powered by Akeeba Live Update

PK>\://classes/tmpl/index.htmlnuW+A PK>\# classes/tmpl/overview.phpnuW+A */ defined('_JEXEC') or die(); ?>
updateInfo->supported): ?>

escape($this->updateInfo->extInfo->updateurl) ?>

escape($this->updateInfo->extInfo->title)); ?>

updateInfo->stuck):?>

escape($this->updateInfo->extInfo->title)); ?>

updateInfo->hasUpdates ? 'hasupdates' : 'noupdates'; $auth = $this->config->getAuthorization(); $auth = empty($auth) ? '' : '?'.$auth; ?> needsAuth): ?>

updateInfo->extInfo->version ?>
updateInfo->version ?>
updateInfo->date ?>

updateInfo->hasUpdates):?> needsAuth ? 'disabled="disabled"' : ''?>

Powered by Akeeba Live Update

PK>\5FYYclasses/tmpl/startupdate.phpnuW+A */ defined('_JEXEC') or die(); ?>

Powered by Akeeba Live Update

PK>\ g,,classes/xmlslurp.phpnuW+A */ defined('_JEXEC') or die(); class LiveUpdateXMLSlurp extends JObject { private $_info = array(); public function getInfo($extensionName, $xmlName) { if(!array_key_exists($extensionName, $this->_info)) { $this->_info[$extensionName] = $this->fetchInfo($extensionName, $xmlName); } return $this->_info[$extensionName]; } /** * Gets the version information of an extension by reading its XML file * @param string $extensionName The name of the extension, e.g. com_foobar, mod_foobar, plg_foobar or tpl_foobar. * @param string $xmlName The name of the XML manifest filename. If empty uses $extensionName.xml */ private function fetchInfo($extensionName, $xmlName) { $type = strtolower(substr($extensionName,0,3)); switch($type) { case 'com': return $this->getComponentData($extensionName, $xmlName); break; case 'mod': return $this->getModuleData($extensionName, $xmlName); break; case 'plg': return $this->getPluginData($extensionName, $xmlName); break; case 'tpl': return $this->getTemplateData($extensionName, $xmlName); break; case 'pkg': return $this->getPackageData($extensionName, $xmlName); break; case 'lib': return $this->getPackageData($extensionName, $xmlName); break; default: if(strtolower(substr($extensionName, 0, 4)) == 'file') { return $this->getPackageData($extensionName, $xmlName); } else { return array('version'=>'', 'date'=>''); } } } /** * Gets the version information of a component by reading its XML file * @param string $extensionName The name of the extension, e.g. com_foobar * @param string $xmlName The name of the XML manifest filename. If empty uses $extensionName.xml */ private function getComponentData($extensionName, $xmlName) { $extensionName = strtolower($extensionName); $path = JPATH_ADMINISTRATOR.'/components/'.$extensionName; $altExtensionName = substr($extensionName,4); jimport('joomla.filesystem.file'); if(JFile::exists("$path/$xmlName")) { $filename = "$path/$xmlName"; } elseif(JFile::exists("$path/$extensionName.xml")) { $filename = "$path/$extensionName.xml"; } elseif(JFile::exists("$path/$altExtensionName.xml")) { $filename = "$path/$altExtensionName.xml"; } elseif(JFile::exists("$path/manifest.xml")) { $filename = "$path/manifest.xml"; } else { $filename = $this->searchForManifest($path); if($filename === false) $filename = null; } if(empty($filename)) { return array('version' => '', 'date' => '', 'xmlfile' => ''); } $xml = JFactory::getXMLParser('Simple'); if (!$xml->loadFile($filename)) { unset($xml); return array('version' => '', 'date' => '', 'xmlfile' => ''); } if ( ($xml->document->name() != 'install') && ($xml->document->name() != 'extension') ) { unset($xml); return array('version' => '', 'date' => '', 'xmlfile' => ''); } $data = array(); $element = & $xml->document->version[0]; $data['version'] = $element ? $element->data() : ''; $element = & $xml->document->creationDate[0]; $data['date'] = $element ? $element->data() : ''; $data['xmlfile'] = $filename; return $data; } /** * Gets the version information of a module by reading its XML file * @param string $extensionName The name of the extension, e.g. mod_foobar * @param string $xmlName The name of the XML manifest filename. If empty uses $extensionName.xml */ private function getModuleData($extensionName, $xmlName) { $extensionName = strtolower($extensionName); $altExtensionName = substr($extensionName,4); jimport('joomla.filesystem.folder'); jimport('joomla.filesystem.file'); $path = JPATH_SITE.'/modules/'.$extensionName; if(!JFolder::exists($path)) { $path = JPATH_ADMINISTRATOR.'/modules/'.$extensionName; } if(!JFolder::exists($path)) { // Joomla! 1.5 // 1. Check front-end $path = JPATH_ADMINISTRATOR.'/modules'; $filename = "$path/$xmlName"; if(!JFile::exists($filename)) { $filename = "$path/$extensionName.xml"; } if(!JFile::exists($filename)) { $filename = "$path/$altExtensionName.xml"; } // 2. Check front-end if(!JFile::exists($filename)) { $path = JPATH_SITE.'/modules'; $filename = "$path/$xmlName"; if(!JFile::exists($filename)) { $filename = "$path/$extensionName.xml"; } if(!JFile::exists($filename)) { $filename = "$path/$altExtensionName.xml"; } if(!JFile::exists($filename)) { return array('version' => '', 'date' => ''); } } } else { // Joomla! 1.6 $filename = "$path/$xmlName"; if(!JFile::exists($filename)) { $filename = "$path/$extensionName.xml"; } if(!JFile::exists($filename)) { $filename = "$path/$altExtensionName.xml"; } if(!JFile::exists($filename)) { return array('version' => '', 'date' => ''); } } if(empty($filename)) { return array('version' => '', 'date' => '', 'xmlfile' => ''); } $xml = JFactory::getXMLParser('Simple'); if (!$xml->loadFile($filename)) { unset($xml); return array('version' => '', 'date' => '', 'xmlfile' => ''); } if ($xml->document->name() != 'install') { unset($xml); return array('version' => '', 'date' => '', 'xmlfile' => ''); } $data = array(); $element = & $xml->document->version[0]; $data['version'] = $element ? $element->data() : ''; $element = & $xml->document->creationDate[0]; $data['date'] = $element ? $element->data() : ''; $data['xmlfile'] = $filename; return $data; } /** * Gets the version information of a plugin by reading its XML file * @param string $extensionName The name of the plugin, e.g. plg_foobar * @param string $xmlName The name of the XML manifest filename. If empty uses $extensionName.xml */ private function getPluginData($extensionName, $xmlName) { $extensionName = strtolower($extensionName); $altExtensionName = substr($extensionName,4); jimport('joomla.filesystem.folder'); jimport('joomla.filesystem.file'); $base = JPATH_PLUGINS; // Get a list of directories $stack = JFolder::folders($base,'.',true,true); foreach($stack as $path) { $filename = "$path/$xmlName"; if(JFile::exists($filename)) break; $filename = "$path/$extensionName.xml"; if(JFile::exists($filename)) break; $filename = "$path/$altExtensionName.xml"; if(JFile::exists($filename)) break; } if(!JFile::exists($filename)) { return array('version' => '', 'date' => '', 'xmlfile' => ''); } $xml = JFactory::getXMLParser('Simple'); if (!$xml->loadFile($filename)) { unset($xml); return array('version' => '', 'date' => '', 'xmlfile' => ''); } if ($xml->document->name() != 'install') { unset($xml); return array('version' => '', 'date' => '', 'xmlfile' => ''); } $data = array(); $element = & $xml->document->version[0]; $data['version'] = $element ? $element->data() : ''; $element = & $xml->document->creationDate[0]; $data['date'] = $element ? $element->data() : ''; $data['xmlfile'] = $filename; return $data; } /** * Gets the version information of a template by reading its XML file * @param string $extensionName The name of the template, e.g. tpl_foobar * @param string $xmlName The name of the XML manifest filename. If empty uses $extensionName.xml or templateDetails.xml */ private function getTemplateData($extensionName, $xmlName) { $extensionName = strtolower($extensionName); $altExtensionName = substr($extensionName,4); jimport('joomla.filesystem.folder'); jimport('joomla.filesystem.file'); // First look for administrator templates $path = JPATH_THEMES.'/'.$altExtensionName; if(!JFolder::exists($path)) { // Then look for front-end templates $path = JPATH_SITE.'/templates/'.$altExtensionName; if(!JFolder::exists($path)) return array('version' => '', 'date' => ''); } $filename = "$path/$xmlName"; if(!JFile::exists($filename)) { $filename = "$path/templateDetails.xml"; } if(!JFile::exists($filename)) { $filename = "$path/$extensionName.xml"; } if(!JFile::exists($filename)) { $filename = "$path/$altExtensionName.xml"; } if(!JFile::exists($filename)) { return array('version' => '', 'date' => '', 'xmlfile' => ''); } $xml = JFactory::getXMLParser('Simple'); if (!$xml->loadFile($filename)) { unset($xml); return array('version' => '', 'date' => '', 'xmlfile' => ''); } if ($xml->document->name() != 'install') { unset($xml); return array('version' => '', 'date' => '', 'xmlfile' => ''); } $data = array(); $element = & $xml->document->version[0]; $data['version'] = $element ? $element->data() : ''; $element = & $xml->document->creationDate[0]; $data['date'] = $element ? $element->data() : ''; $data['xmlfile'] = $filename; return $data; } /** * This method parses the manifest information of package, library and file * extensions. All of those extensions do not store their manifests in the * extension's directory, but in administrator/manifests. Kudos to @mbabker * for sharing this method! * * @param string $extensionName * @param string $xmlName * @return type */ private function getPackageData($extensionName, $xmlName) { $extensionName = strtolower($extensionName); $altExtensionName = substr($extensionName,4); jimport('joomla.filesystem.folder'); jimport('joomla.filesystem.file'); $path = JPATH_ADMINISTRATOR.'/manifests/packages'; $filename = "$path/$xmlName"; if(!JFile::exists($filename)) { $filename = "$path/$extensionName.xml"; } if(!JFile::exists($filename)) { $filename = "$path/$altExtensionName.xml"; } if(!JFile::exists($filename)) { return array('version' => '', 'date' => ''); } if(empty($filename)) { return array('version' => '', 'date' => '', 'xmlfile' => ''); } $xml = JFactory::getXMLParser('Simple'); if (!$xml->loadFile($filename)) { unset($xml); return array('version' => '', 'date' => '', 'xmlfile' => ''); } if ($xml->document->name() != 'extension') { unset($xml); return array('version' => '', 'date' => '', 'xmlfile' => ''); } $data = array(); $element = & $xml->document->version[0]; $data['version'] = $element ? $element->data() : ''; $element = & $xml->document->creationDate[0]; $data['date'] = $element ? $element->data() : ''; $data['xmlfile'] = $filename; return $data; } /** * Scans a directory for XML manifest files. The first XML file to be a * manifest wins. * * @var $path string The path to look into * * @return string|bool The full path to a manifest file or false if not found */ private function searchForManifest($path) { jimport('joomla.filesystem.folder'); $files = JFolder::files($path, '\.xml$', false, true); if(!empty($files)) foreach($files as $filename) { $xml = JFactory::getXMLParser('simple'); $result = $xml->loadFile($filename); if(!$result) continue; if(($xml->document->name() != 'install') && ($xml->document->name() != 'extension') && ($xml->document->name() != 'mosinstall')) continue; unset($xml); return $filename; } return false; } }PK>\)classes/.htaccessnuW+A Order allow,deny Deny from all PK>\)assets/.htaccessnuW+APK>\qassets/current-32.pngnuW+APK>\. assets/nosupport-32.pngnuW+APK>\/qTassets/ok-24.pngnuW+APK>\п 8assets/liveupdate.cssnuW+APK>\^ONH%assets/warn-24.pngnuW+APK>\2;\\&*assets/fail-24.pngnuW+APK>\vpVPP1assets/update-32.pngnuW+APK>\://X8assets/index.htmlnuW+APK>\^^8assets/liveupdate-48.pngnuW+APK>\)nLplugins/vmcalculation/.htaccessnuW+APK>\V \)Mplugins/.htaccessnuW+APK>\VkNplugins/vmshipment/index.htmlnuW+APK>\)Nplugins/vmshipment/.htaccessnuW+APK>\)Oplugins/vmpayment/.htaccessnuW+APK>\VlPplugins/vmpayment/index.htmlnuW+APK>\)Pplugins/search/.htaccessnuW+APK>\VQplugins/vmcustom/index.htmlnuW+APK>\)Rplugins/vmcustom/.htaccessnuW+APK>\.>ffRscript.vmallinone.phpnuW+APK>\) 5.htaccessnuW+APK>\ߋ config.phpnuW+APK>\H-vm:: ,install.xmlnuW+APK>\> 55#language/th-TH/th-TH.liveupdate.ininuW+APK>\))language/th-TH/.htaccessnuW+APK>\)language/da-DK/.htaccessnuW+APK>\kN #language/da-DK/da-DK.liveupdate.ininuW+APK>\)language/nb-NO/.htaccessnuW+APK>\mfL L #ylanguage/nb-NO/nb-NO.liveupdate.ininuW+APK>\Xv #language/de-DE/de-DE.liveupdate.ininuW+APK>\)4language/de-DE/.htaccessnuW+APK>\)language/pl-PL/.htaccessnuW+APK>\@2R #language/pl-PL/pl-PL.liveupdate.ininuW+APK>\) language/.htaccessnuW+APK>\)llanguage/el-GR/.htaccessnuW+APK>\#3language/el-GR/el-GR.liveupdate.ininuW+APK>\###(&language/fr-FR/fr-FR.liveupdate.ininuW+APK>\)4language/fr-FR/.htaccessnuW+APK>\)e5language/uk-UA/.htaccessnuW+APK>\CO#,6language/uk-UA/uk-UA.liveupdate.ininuW+APK>\Ϛ[ #vJlanguage/en-GB/en-GB.liveupdate.ininuW+APK>\)Vlanguage/en-GB/.htaccessnuW+APK>\bLD#Wlanguage/ru-RU/ru-RU.liveupdate.ininuW+APK>\)klanguage/ru-RU/.htaccessnuW+APK>\mfL L #llanguage/no-NO/nb-NO.liveupdate.ininuW+APK>\)/ylanguage/no-NO/.htaccessnuW+APK>\)ylanguage/nl-NL/.htaccessnuW+APK>\,-R R #zlanguage/nl-NL/nl-NL.liveupdate.ininuW+APK>\VtvOO#blanguage/it-IT/it-IT.liveupdate.ininuW+APK>\)language/it-IT/.htaccessnuW+APK>\ t #˖language/sv-SE/sv-SE.liveupdate.ininuW+APK>\)language/sv-SE/.htaccessnuW+APK>\)rlanguage/tr-TR/.htaccessnuW+APK>\&c c #9language/tr-TR/tr-TR.liveupdate.ininuW+APK>\admin.virtuemart_allinone.phpnuW+APK>\wtW Dindex.htmlnuW+APK>\w8lffclasses/abstractconfig.phpnuW+APK>\1k+϶!!Hclasses/download.phpnuW+APK>\  Bclasses/view.phpnuW+APK>\gEclasses/controller.phpnuW+APK>\+dLL.classes/storage/file.phpnuW+APK>\://2classes/storage/index.htmlnuW+APK>\)3classes/storage/.htaccessnuW+APK>\? 3classes/storage/component.phpnuW+APK>\ǘ[77Aclasses/storage/storage.phpnuW+APK>\8\kJclasses/inihelper.phpnuW+APK>\?$$Yclasses/updatefetch.phpnuW+APK>\Ը!!~classes/model.phpnuW+APK>\://classes/index.htmlnuW+APK>\)cclasses/tmpl/.htaccessnuW+APK>\.(classes/tmpl/install.phpnuW+APK>\://Tclasses/tmpl/index.htmlnuW+APK>\# ʙclasses/tmpl/overview.phpnuW+APK>\5FYYçclasses/tmpl/startupdate.phpnuW+APK>\ g,,hclasses/xmlslurp.phpnuW+APK>\)Rclasses/.htaccessnuW+APKMM