From 1c614cc22dfc6283e4c4f55dbeb8504e3e2481c3 Mon Sep 17 00:00:00 2001 From: DanielSeifert Date: Mon, 13 Mar 2017 12:32:27 +0000 Subject: [PATCH] revision adjusted --- .gitattributes | 24 +- Sources/Google Services-Installation.docx | Bin 49830 -> 51008 bytes .../layout/d3_base_googleadwordscode.tpl | 0 .../blocks/layout/d3_base_googleanalytics.tpl | 0 .../views/blocks/layout/d3_base_optout.tpl | 0 .../views/tpl/widget/d3_googleanalytics.tpl | 0 .../views/tpl/widget/d3ga_universal.tpl | 0 .../tpl/widget/inc/d3ga_universal_adwords.tpl | 0 .../widget/inc/d3ga_universal_adwordscode.tpl | 0 .../inc/d3ga_universal_campaigncode.tpl | 0 .../tpl/widget/inc/d3ga_universal_custom.tpl | 0 .../widget/inc/d3ga_universal_ecommerce.tpl | 0 .../widget/inc/d3ga_universal_remarketing.tpl | 0 .../inc/d3ga_universal_trustedstore.tpl | 0 .../d3/d3_googleanalytics/metadata.php | 2 +- .../setup/d3_googleanalytics_update.php | 16 +- setup+doku/Google Services-Installation.pdf | Bin 840460 -> 840343 bytes setup+doku/Precheck/d3precheck.php | 1040 ++++++++++++----- setup+doku/changelog.txt | 8 +- 19 files changed, 799 insertions(+), 291 deletions(-) rename changed_full/{470- => 490-}/modules/d3/d3_googleanalytics/views/blocks/layout/d3_base_googleadwordscode.tpl (100%) rename changed_full/{470- => 490-}/modules/d3/d3_googleanalytics/views/blocks/layout/d3_base_googleanalytics.tpl (100%) rename changed_full/{470- => 490-}/modules/d3/d3_googleanalytics/views/blocks/layout/d3_base_optout.tpl (100%) rename changed_full/{470- => 490-}/modules/d3/d3_googleanalytics/views/tpl/widget/d3_googleanalytics.tpl (100%) rename changed_full/{470- => 490-}/modules/d3/d3_googleanalytics/views/tpl/widget/d3ga_universal.tpl (100%) rename changed_full/{470- => 490-}/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_adwords.tpl (100%) rename changed_full/{470- => 490-}/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_adwordscode.tpl (100%) rename changed_full/{470- => 490-}/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_campaigncode.tpl (100%) rename changed_full/{470- => 490-}/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_custom.tpl (100%) rename changed_full/{470- => 490-}/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_ecommerce.tpl (100%) rename changed_full/{470- => 490-}/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_remarketing.tpl (100%) rename changed_full/{470- => 490-}/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_trustedstore.tpl (100%) diff --git a/.gitattributes b/.gitattributes index 3f493e8..174bcdb 100644 --- a/.gitattributes +++ b/.gitattributes @@ -11,18 +11,18 @@ Sources/UGA_Einstellungen.jpg -text Sources/UGA_Trichtereinrichtung.jpg -text Sources/UGA_Trichtereinrichtung_1.jpg -text Sources/trustedShops.jpg -text -changed_full/470-/modules/d3/d3_googleanalytics/views/blocks/layout/d3_base_googleadwordscode.tpl -text -changed_full/470-/modules/d3/d3_googleanalytics/views/blocks/layout/d3_base_googleanalytics.tpl -text -changed_full/470-/modules/d3/d3_googleanalytics/views/blocks/layout/d3_base_optout.tpl -text -changed_full/470-/modules/d3/d3_googleanalytics/views/tpl/widget/d3_googleanalytics.tpl -text -changed_full/470-/modules/d3/d3_googleanalytics/views/tpl/widget/d3ga_universal.tpl -text -changed_full/470-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_adwords.tpl -text -changed_full/470-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_adwordscode.tpl -text -changed_full/470-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_campaigncode.tpl -text -changed_full/470-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_custom.tpl -text -changed_full/470-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_ecommerce.tpl -text -changed_full/470-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_remarketing.tpl -text -changed_full/470-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_trustedstore.tpl -text +changed_full/490-/modules/d3/d3_googleanalytics/views/blocks/layout/d3_base_googleadwordscode.tpl -text +changed_full/490-/modules/d3/d3_googleanalytics/views/blocks/layout/d3_base_googleanalytics.tpl -text +changed_full/490-/modules/d3/d3_googleanalytics/views/blocks/layout/d3_base_optout.tpl -text +changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/d3_googleanalytics.tpl -text +changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/d3ga_universal.tpl -text +changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_adwords.tpl -text +changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_adwordscode.tpl -text +changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_campaigncode.tpl -text +changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_custom.tpl -text +changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_ecommerce.tpl -text +changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_remarketing.tpl -text +changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_trustedstore.tpl -text copy_this/.noencode -text copy_this/modules/d3/d3_googleanalytics/IntelliSenseHelper.php -text copy_this/modules/d3/d3_googleanalytics/controllers/admin/d3_cfg_googleanalytics.php -text diff --git a/Sources/Google Services-Installation.docx b/Sources/Google Services-Installation.docx index eb661cc83879a025e91be0736ce643a299c28c61..a26ab09b15a4d97d59f9f7bb771e846e9f1bcc3e 100644 GIT binary patch delta 25531 zcmV)8K*qnOg#*Bj1F(1te;ZYsS!hcD01_Mm01*HH0C#V4WG`fIV|8t1ZgehqZEWm) z-E!N=lIHzJ>^oq2vC$oCQ~al-J>o3?WINh!Yh{mncDGNQ07+292n4tQDA~H2i+zlV zx#~CAh;!9f>o=Jv*)OvSU=@D&BTBSv;hboTB!H?!R@PUUS(#aXfBA>cbH})`{J{3y zvr@HODH)bK_9nJ_byoVvkLNFsOGXfy?!!$if7ZN(<)W{t=g-YBD0}|Z(cJW}my4HZePM?7$ad`T3)-%jR`BBNjN=z&CF(6srbP&1EoSA|9GMf)6ylf2&bVwpgvKdl@+*)I?0f zHYDhMMwHA=+l`yKA8S-acxroVG*!#8i#=VZ)qKUZ!WtA4sJoVLrof=3@ z-48Q!VU>*e`1H+{>-px$0Y$gfhCvcp>HsW8-sB7Y4M&drbK%PmiwoblJ$0;Ucnhh>22K!^^+*yz8jJN~OyWe@<;b2roU*RHZf@Q+``r?0e2~ zPWT*MkAC1=T<>)c2rbEQy-(4%n1-0wuY7w#?{$U0Xal{W*LI^(ThSZc68gA`bzyRe zhAWlxTKD{fy62xR=tV2Ne!JGH@c4#f=I&VbG?q+mx7sy&NHBTw*_2Ekzca<~dkaBB ztqRCaf88h9Pn@YXGp>)kF!bi@T3`thH)J(ILnLV7Pl9?PDeuJx*3?`&kkBMcF8HTL zqkk?09#TylS$qh;I2IaY5&Ffl-M5zI`{r^kIN^)i{BzF@1Kef?V;jiOHywNA+w{t_ zt{W)7h%x2IK(g$`k0?%$OJ`t)rZKQ?EXP~We{#)Y$-)T&sR<#d7(Zfx7?rra^m|@v zUC4evvN%*$Zy(C{3jNm>&0*Zf45(Hr^+?pBTXv9~2N|SZyV>YI`XJq&G9E-PzCs0p zkLcIqijacfu1|x{EE2!rP1lccYtX1Pn?MkmM2H}3>@5012RKD^&fcjceo5RL=x4#FccOES2j_zBJSgmH|7!t=&C9&Ha@zNKXqevtPhD-Re@SrEODvf3|h2^a@`dA!s zhhvj2Qfu(KL|-nKqzahJ&=ZnwyA!$%e+?3*H{`0kvk0J#F=&Zkl9%=sn`_7EX(fK! zIIWZ=?chW~OgnE}SX+)TB#b4P^;r2Ot(`3wG6V%p*dBPAmN{YoD>GzQkf^v%%9C9~D5)dzJI zl3nk@_q?g19noy6*2|T88NPJUf8LZfAjh$aTpF-)p||d+E{mIy;iLri}gJ0Y~N<(VcM*A zTlIlhqQj2fX6CxtY_+>XUZc_zFq#g^x~bpJntroV?YG55+jZKn5r&>+`XkGR@w$Ep zmEOb7(mG3jl0eE@t`dx7=wg>tkt|AGnH3-e+$-XH?YmK z(!_c>7)EnJ+%G*tXkl?`vc+yp>>&II*(&j;Ui|4T>jQPN$>|mtolp<>Yhce8j&(u0 z2QCUP+l?jc3g{ZmYO8t78pp_*LA`)ej&F3l@wFw4V#oaAEyFi%9}6kkEg4v0z1#Pg zEsnXMADFYa9;6oy3-tN)!Ag(-vGlE1fiPt1((J;T9zQ3Ma5&3B14Xf7{q#Fg!J`Ifs__ z$~UL>wLv3j1!FYv*1Ph`3%C=-BjaChaLZz5kI#KPKq6wo6S4Z`Eru+R{$B`G!lkv@ z^C)-YE+FJ zdvR_%@DQ4(^x5!Ft@(&1vHxbmI=y)s_~T0qD1S%-9-;C;KzGqf59O|A3!wd#88^2=FQuH zD8{YPE%dYN(aX~B5nb{lzVgj-ZjeB!-|-pJEbx>*pT;nY&zMvR^+pKPt~8)?09s;n-$*~;tbCa25@4%zX{x2K_;&XE>9ffDPrQ|le}7VG#U5e#Xr?v%5!-y2MROZY z|JUTFqy{66K)pDWS^`~Xho*WlesUayN`pOnVhe`trgqSfNDGU`Ge>V&iHFae>->;PqP)EZ;8bUQJHpNfyI(7F^eJC zSxCk!T^^D>AZ-2Oxi_$lV9Z%=QrdQ!@mNz;q}u7(9I;HVNjtR~!^jR8R9}ZdJM^}J7>%aD1r0muxi~VC}}V`IZDw3LdiRLn=EY1xQIxD3cZBSp@5WX zf2Hw^ASLA!e+c+1AmzzH3I`t@Ks)*5!T;}L2LNEQ*J|}+XeZ5Q1SQSA#=Fo?#5R=b zSNb+ir%l=k$2lGVO1dkxBv|-g|C|<(LQde;GlG;>0VzL(AA1v|aIE|RAmvwUNj`=s zK5Z}Q`Y{xg_A^40R1DR3YwO63z>Hlne?8I_xeajfVM}lo3i}+k%{IXeXTBT&ZmQ)q z2%|^4t7>1oo%pRcB3W=$A91v&^MF1m#0FTl%C!iM2k_@Ank;{ua;?@!$|&)#f( zN=9RW$r%xp*j3qb`;1fb4uHwE0+Tr&V_jrKgvqA6FoU4LWLVuN1tu4mOxtpte?sRKhXppdTXHRV^)?~aX9L-9saJ5=sbb-;& z4Wqeq&;c;ISzz==jOP4u!=4)-e`cuJWL}5%P2q6nys~Poz~%y*pBpwGDqo{jVDm<7 zCP)^}W{yEOWROOI&jO#HQ;y5=nl1BULy&5SJQL^hp^{+Q1wL=Y=a26$UcUDyBB63a^AU=RY3yRPYc3GH$466KRZ4RIa@SJkj3TQ4|qT~{-9V&ON$S2+m%~3vaQR5*x%Axk0Qq~GgE-;xf`A{iq zMLzLnOzxuCGgWs8En@}Gh2E@q@N3U0Wv#&I0;3tD50$c3q!n+*f9N8u_^hOy$ewWo zQSCXUt`!(vU^HX&p;Fh1wBpSeU8JsAf#u)e$X6o^pPy6eT7l06J~KWaDs`<$E#8dJ zMe17W+|Jr_N?j{Jxd3GbvG#t~r{0 z{lmRNJ#OPdo={k16e0NTIb{?T5c50=Qq>NXQlvsm0WjIy3ePFq=m!Fr!Z2EA7#%8` z=)-vC!rOv#Q2nAhMYZ;v(qpQ%AI2Ukuw)IE)DM;Z^4fN$f0nUyC&q{6V&N5l(yZ2> zQ*KAKUI5B-IHJ9NsN9W#>0Srs6}E!*609Gha8~^}Wgt`=dky#lRaK~**ShDdi2H#( zxg1zibLoU_?I2NA1F%b+f!Z}srnQu=+R-sna z4o04LJvaU94`dkNZhLZ8;&cGloP$m!HKtM*nfQEahGPcdC5|RU0n*6@-lgYT=C!B@ z)4t{%ZVc-O>>rv#uN1sb9ya8?WBT4cda;-0n&WVu=-pyekww zFahXNf3_HQF0HGj^Yss({OBI3k&qbEkz%UxT$xfE3FNmn9ed>4(F7AbOso!I8_)J9 z)L`&s4yvZ8WN}vd4e~I-e*ul}cxFN<&MQNf3gRIn(gVDL@pFaM@- zb{By+gRz~S{P%HBGSpb#HOrd#;a^<)28&Sb1>}lktmV&gYh|kMRLP ze@W%mU+>MWd_gxOK0MGm`gB(Acb5D0&&ATcMvgyu=z7aA^j!VG@NFjR<1NuSqe4VU zpxSy)CYpkU#X9cTb5IdXT0VW4V3k;J5^j!{Z*1F7`dDU*KKIoI4 zuNWk~UbR&j#6K$2QNNw7fB6%!XlIR?rA09(vu04U(qK};nKifiG`r49=6DR7ngi6L zL8Z6LoWiwAtJ{`tlq_XrZTF4y<7zLbd$}L9j3#>kOT~#DE74?s4P$2Hm`fTNf0)-n zNM)cc*D|mvN-hy?h%gFSqPF+Sn*gOPS&B7!^Q0|kONnBNZ~E+NH*4+cK)8!G3uGkU zx2L;;*2DA~=AhYYxDt6ka2o;6nCGka3Om^vLO610GT@J#OCv{fD}IDqz;P_shda>n z$=|{^|AzOzgwdR9A71FnS3_mJ9?fE*J8lU;oxSul)LaK zQj@`*Y+E`mxF4QhfTg%2$C{Eulii=YJvs8AGm$Ii9?x=I?)@G`l&L+jUhnhpr~5n% zF~9(;EFU><;TDeCs*npDU#2#o^U|Ynqp$1&rf;i@SQ?gdSGgYjz_+;Gf9sy%U7k+ zYu2jWCSyPt`6T_ib+da_VSliRk z)D6}j6jt0re_+DSN^|p{J^wX%q9t9-GVm_a35at^U&NkE7g~=7rjyz`1UD6h>b%vc z)w3c00g3R`~;Tmlc8cDySmmmr$&-|?Ip2b<(cS1Gq1#*Gc{svcz_!p2UvoelbHDJD{`bRr?u z#J;6T0ulSq)gL$0)tKG8lmrHf1jIYetMs~A=FSd1J~_yzq2u}Br;RhR?`Cvf0W!^AIAILk*bp3 z?@p}P!XcgbaaT8h9t7~#hL(=}rN9jD#5=mnxfp2Mxgjl!RTa7QjB9UV^(7*E^#H#S z>DXtbc2yKV!NvgW@3T_9*%r-@v6YEU!=>qbh+#aLJ20B%R{8UH#G=EC*~0g{>CpEfZDPF-7O-A9 z@`)Mz25#Rpohq~<*mxENdR9@OK+tlfQDexG16Bv--0 zr(L5olxRG8en`?R*S48NIy78v()sk;pE{DTdbhJ2e{AA`jLI>M|KO5#KUdprUm4}^F{!6|R(J5=A z2Zci{5j!=ZS4ql50zD>N_4n#mzVpEr%rmb;`vxbyg;rp^@;q$$zD!gXdtqE%P0PmJ zGWhyOe|Sd&i(9*s-(acB!`hd%@Lmcf-pdln=-8bO&Otj~aq zxj{tA@wnG;#v41S)CU>c58<+~>)Z`&^Q`pIo@0I^8^XBs=B7)M7ddcOsQ^)U*r*>s z0hK#(xKntfum^S`J%7Pn^egIr@U6jJe?QQF16NpoO^DrNx;_VuN>l7tO2+E;&Q2*l z?66C_KAX}HLhM=R`uybi=+3gkbjn`Z<;h&llp=j;Ql&`0!U)@1y}v-%>?t5Cz^!0T zOz^uU1^y7`G5#gB0@&|_rIs&zxx8S+CVkm>FMz?YZbGMQAX*Se0000=1E*=mf4nfR zzy6(Jl#tb)W38FnF7s$SV?+%Mn(=|Lpqf#ZTQ-KD@f+1NyHUB0)ApCqEt$Vtz&w3tpqnpe~Tu(g5ij@#U|^%l~{8{#WA( z@h2h0Pl8KHB1l?u7Gr(V&F>($RP0VtB*jYP8?U`Nf6nAX_;5nZ zXHjsU;d4^1|7Nm9t)Pq`3@u45$1(mV0FkGA-9o^pEmc7sR zWKQO^RUUiuqxjX1G}7^KOgnK=nnQb;4fj_Ee!)_HEyu%LPO;Xy#w8RNjF?9CH(FGl z&|)(1Ze7PSCr^PbsoA_{e>$=aJ3;y|Y#1@VZ*BLw7+rlDN26;Dp$5xk7Ty8?(RZUn zBwT60nREa^zUM(+Awk;5E~Q=-H^XlB-bU)A4#M_Mn&3U`Jw6CwW$)En?RvA-tV{DY zve|f>6*N#02(H+@dZN*8(}@ZdULPc=ud@)ltEd?GvtaUUV<}4We={NnE{~WPu`1nT zz;jr-)`XlJ@BN9pafzs$pzLk!G3+r6L1G!s$PnknRm$Qy{95Fp*fZQS-7lP6%f)}0 zpoGTyb>XnQNF{`?TOXzrr?t|^ilLPn*~QZtQFeHbumAmDvIn+PHs0CfCkdc;8*khh zOcBlDLbhX8I3BA6f8@`e8z1PvI;#5OTX3|*UYK9J#mZGg&Aak+#Ch`rCq5j4L3 z2|tnay7zqVmaGY)Bq~k=UlN+b4l(qbEo#vu78zmA$_zXSe}<~3O}{;7<@x6^o@75M zWm-jEuU^(*4sLCv~x5G`=n`W(#dn-%m%9oKDKZ+9i{BwQen> zZMg;s^}q^Ef7=loOhf<58ev{QgzuKVk);|Kh#j>sf3C1`mH7sblZmD#Jr#LoaFx)` z$=a+sk)-xR=b2SoEvXl4d1mb<3akmO48oY5XQqRx$TJ)ETHX3NYl&fY_84~v#&4B` zqIYpA(6C#twnPv%dq$NFSN(RL(h5P5DU+u~s>u)0e})>WNysz_MMcfUX-S!a)2@d- zN^gpXX^)Ako~<_WCf3WrP-YM@L6?STaf*0#EOEy8GxnNm$1RkOFvefv z&qOuuf0<6LaX1urB7LuVQfcBoENS?ck_$`5i2fCKPdp?O8DvvoT@)78E2=biZD2u! zPBW$_D%HQ$E9HfIB_A69dV`x5GkbjQqY@ttkco82)h}=$FZui_>-e@7t^L zDkvyq8mMJ=j~7_j<8bNY4C24w(<%OwWZ~1^t+_WBHfMlQ(_n=hKa8swKYh5Oo9Gdm z6ZBnc0dDjK<#f`E(`UGJt@+4;L_jX9XcdV?X2>Pjpcs(^n5U>xV1?rueWV=GOAHUS zf2~~LepXFWuK`bJ^Yru7pVO1xbZS75(E~)7<)YAK4V}4maavs z+#M-HS3VwxiYN|2QvPE;j1&0!uM}+oYcJI7#dF%kC!eZ_Iane9fND5~Kn+9z z(DTuWQK&#_(RUG2w6agj8OpC5Y5IeiL4Ptb1od@(X9Eu|63B{3=W4dZ!CFx|e;0kH zl`K2x;3L(9(XzkMP_&?{7l$%hCl1b0FTUoyaXhJ~SoZ7*XOl-$CNp%W-fEtotZd61 zlT&8R_s+$;Jk1!NW~Q`7hMWvvVY8?wrf9z<_W5FtOL#VHtau`MR2v8`K7>QQ#Wb`ts|C=k5 zthiS@uGU(WMwHo@^#pIvuAYcI=F*nnMGYY>Sm$j3&9(G9ZDeay~50TdH&8wU>vD@Kw2oQM(NF?q%iU!}U+f0C_=zB4@L zz!$cUWOvO*6(zRlZt2NNuObgoW*LCp8GDN_e+y@}USvclBZ?

|2UqS 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 c;N&M{rcVsOSOeK;07BmNW5P$Z{ diff --git a/changed_full/470-/modules/d3/d3_googleanalytics/views/blocks/layout/d3_base_googleadwordscode.tpl b/changed_full/490-/modules/d3/d3_googleanalytics/views/blocks/layout/d3_base_googleadwordscode.tpl similarity index 100% rename from changed_full/470-/modules/d3/d3_googleanalytics/views/blocks/layout/d3_base_googleadwordscode.tpl rename to changed_full/490-/modules/d3/d3_googleanalytics/views/blocks/layout/d3_base_googleadwordscode.tpl diff --git a/changed_full/470-/modules/d3/d3_googleanalytics/views/blocks/layout/d3_base_googleanalytics.tpl b/changed_full/490-/modules/d3/d3_googleanalytics/views/blocks/layout/d3_base_googleanalytics.tpl similarity index 100% rename from changed_full/470-/modules/d3/d3_googleanalytics/views/blocks/layout/d3_base_googleanalytics.tpl rename to changed_full/490-/modules/d3/d3_googleanalytics/views/blocks/layout/d3_base_googleanalytics.tpl diff --git a/changed_full/470-/modules/d3/d3_googleanalytics/views/blocks/layout/d3_base_optout.tpl b/changed_full/490-/modules/d3/d3_googleanalytics/views/blocks/layout/d3_base_optout.tpl similarity index 100% rename from changed_full/470-/modules/d3/d3_googleanalytics/views/blocks/layout/d3_base_optout.tpl rename to changed_full/490-/modules/d3/d3_googleanalytics/views/blocks/layout/d3_base_optout.tpl diff --git a/changed_full/470-/modules/d3/d3_googleanalytics/views/tpl/widget/d3_googleanalytics.tpl b/changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/d3_googleanalytics.tpl similarity index 100% rename from changed_full/470-/modules/d3/d3_googleanalytics/views/tpl/widget/d3_googleanalytics.tpl rename to changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/d3_googleanalytics.tpl diff --git a/changed_full/470-/modules/d3/d3_googleanalytics/views/tpl/widget/d3ga_universal.tpl b/changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/d3ga_universal.tpl similarity index 100% rename from changed_full/470-/modules/d3/d3_googleanalytics/views/tpl/widget/d3ga_universal.tpl rename to changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/d3ga_universal.tpl diff --git a/changed_full/470-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_adwords.tpl b/changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_adwords.tpl similarity index 100% rename from changed_full/470-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_adwords.tpl rename to changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_adwords.tpl diff --git a/changed_full/470-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_adwordscode.tpl b/changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_adwordscode.tpl similarity index 100% rename from changed_full/470-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_adwordscode.tpl rename to changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_adwordscode.tpl diff --git a/changed_full/470-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_campaigncode.tpl b/changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_campaigncode.tpl similarity index 100% rename from changed_full/470-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_campaigncode.tpl rename to changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_campaigncode.tpl diff --git a/changed_full/470-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_custom.tpl b/changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_custom.tpl similarity index 100% rename from changed_full/470-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_custom.tpl rename to changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_custom.tpl diff --git a/changed_full/470-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_ecommerce.tpl b/changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_ecommerce.tpl similarity index 100% rename from changed_full/470-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_ecommerce.tpl rename to changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_ecommerce.tpl diff --git a/changed_full/470-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_remarketing.tpl b/changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_remarketing.tpl similarity index 100% rename from changed_full/470-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_remarketing.tpl rename to changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_remarketing.tpl diff --git a/changed_full/470-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_trustedstore.tpl b/changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_trustedstore.tpl similarity index 100% rename from changed_full/470-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_trustedstore.tpl rename to changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_trustedstore.tpl diff --git a/copy_this/modules/d3/d3_googleanalytics/metadata.php b/copy_this/modules/d3/d3_googleanalytics/metadata.php index 8981be0..984bc44 100644 --- a/copy_this/modules/d3/d3_googleanalytics/metadata.php +++ b/copy_this/modules/d3/d3_googleanalytics/metadata.php @@ -40,7 +40,7 @@ $aModule = array( 'Trusted Shops account to your shop.', ), 'thumbnail' => 'picture.png', - 'version' => '3.3.3.0', + 'version' => '3.4.0.0', 'author' => 'D³ Data Development (Inh. Thomas Dartsch)', 'email' => 'support@shopmodule.com', 'url' => 'http://www.oxidmodule.com/', diff --git a/copy_this/modules/d3/d3_googleanalytics/setup/d3_googleanalytics_update.php b/copy_this/modules/d3/d3_googleanalytics/setup/d3_googleanalytics_update.php index ea349d2..2213f94 100644 --- a/copy_this/modules/d3/d3_googleanalytics/setup/d3_googleanalytics_update.php +++ b/copy_this/modules/d3/d3_googleanalytics/setup/d3_googleanalytics_update.php @@ -21,18 +21,18 @@ class d3_googleanalytics_update extends d3install_updatebase public $sModName = 'Google Services Schnittstelle'; - public $sModVersion = '3.3.3.0'; + public $sModVersion = '3.4.0.0'; - public $sModRevision = '237'; + public $sModRevision = '242'; // heredoc syntax using for class members is available from PHP 5.3 up public $sBaseConf = - "BZtOXBwVDA5M0hEL3JqNlIwbDZ5OC9lYzM0NFM3RC82d2ZnQzU5TjgvSHduVWJtMjNZd1hkSHVpYUd5d -mdDY1h0ejBtZmVWL01VL2dlQWF4NVBJY0d0ZHErSS9yOFY2UEtMcjhMWkN5T3J2ckdNMWl4RWhKSERCd -FdkMWZKZW5IZU9BMHJNeG5NdXExaWhRYXZqMEhPeHR2cTh0dEk2L2NTYkVsNWkzbGhiQnUvSk90L1pqb -Uk4amw1UXBaMTh2aUpoZlphbmN2ZG1ZcVAxQ2pUVW9ycUFhOFQrTHRDUlc0bFh6SXFEWWFjVDVzaHVBd -XYxSzhpcGxhMTRySGFVdmlnMTNSNDJ1aXJVQmMvRC9jaWltcnJQd3JwVmdobTlhWldrVm1WOXhwWGpiR -EpqbzRPb1QyYysrcy9oZHlJV3VMUDBmTmVjMzhWOG5kd0xJdVVYcWxsYTF3PT0="; + "ZJ0MzB1N2F3em43V1dqWXkvVnc1WXVOeStnMU95aHM2d1BiZEJlbGVhbzNIcE5nTVJxQlZYOEFwU2RrK +2dBSUlQNm43Ly9ldkNZUlFEemNNNmVvVXlTNWRwSVp5RGk4UGxKb2xTckQ4U2pRWUZKVFR1bWx3N0dRU +3FzbThEOGNqSWcvZDFXNVJhSlUydEFwejZ2OFRRektPai9nNVcvWGJURGV2SGJpTkZxMjBOM1pXMkJRU +jVoN1dybnBhTlFWQ0s2Lzh4NjMvZXZMMlJHV21LTnNJcDBIWngxSkJVM3hDODZ4bzBaWS9zRHZ1WC9jY +UtkNFB6WEdzR2NLMG8yWGpMdG9XTmZsQ0lCNkdGSzZ1N0JRMFVlV3JhRXhtZ2tNUi9pd3hsMDIwRlNHY +np5bjJIQjE5aGIycW4wSGpCQXI5alVwYmJreTBRS3NMckNQODZvYXJnZjdBPT0="; public $sRequirements = ''; diff --git a/setup+doku/Google Services-Installation.pdf b/setup+doku/Google Services-Installation.pdf index 499b769a3678f321b3a25977c5f3639eb9de8dae..35fad9ccd3f7393730ab3bda6c55cfea73663ccf 100644 GIT binary patch delta 45771 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 z%0A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 WaoF%!mx;qWO^bEq<+bWu_5;4e delta 47229 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 array( 'blExec' => 1, 'aParams' => array( - 'from' => '5.2.0', + 'from' => '5.3.0', 'to' => '5.6.200', ) ), // benötigt Zend Optimizer (PHP 5.2) bzw. Zend Guard Loader (> PHP 5.2) 'hasZendLoaderOptimizer' => array( - 'blExec' => 1, + 'blExec' => 0, ), // benötigt IonCubeLoader @@ -83,7 +83,12 @@ class requConfig 'blExec' => 0, ), - // benötigt PHP-Extension (kaskadierbar (siehe "Desc1")) + // benötigt Zend Decoder oder IonCubeLoader + 'hasIonCubeOrZendLoader' => array( + 'blExec' => 0, + ), + + // benötigte PHP-Extension (kaskadierbar (siehe "Desc1")) 'hasExtension' => array( array( 'blExec' => 0, @@ -99,13 +104,29 @@ class requConfig ), ), + // benötigte cURL-Version + 'hasMinCurlVersion' => array( + 'blExec' => 0, + 'aParams' => array( + 'version' => '7.26.0', + ), + ), + + // benötigte OpenSSL-Version (Angabe in Versionsformat) + 'hasMinOpenSSLVersion' => array( + 'blExec' => 0, + 'aParams' => array( + 'version' => '1.0.1.5', + ), + ), + // minimal benötigte Shopversion (editionsgetrennt), wird (sofern möglich) Remote aktualisiert 'hasMinShopVersion' => array( 'blExec' => 1, 'aParams' => array( - 'PE' => '4.7.0', - 'CE' => '4.7.0', - 'EE' => '5.0.0' + 'PE' => '4.9.0', + 'CE' => '4.9.0', + 'EE' => '5.2.0' ), ), @@ -113,9 +134,9 @@ class requConfig 'hasMaxShopVersion' => array( 'blExec' => 1, 'aParams' => array( - 'PE' => '4.9.4', - 'CE' => '4.9.4', - 'EE' => '5.2.4' + 'PE' => '4.10.3', + 'CE' => '4.10.3', + 'EE' => '5.3.3' ), ), @@ -182,7 +203,7 @@ date_default_timezone_set('Europe/Berlin'); */ class requCheck { - public $sVersion = '4.3'; + public $sVersion = '4.10.2'; protected $_db = false; @@ -202,6 +223,8 @@ class requCheck protected $_sInFolderFileName = 'd3precheckinfolder.php'; + public $sVersionTag = '@@version@@'; + /********************** functional section ************************/ public $blGlobalResult = true; @@ -285,19 +308,41 @@ class requCheck $aIgnoreDirItems = array('.', '..'); $aCheckScripts = array(); - /** @var SplFileInfo $oFileInfo */ - foreach (new RecursiveDirectoryIterator($sFolder) as $oFileInfo) { - if (!in_array($oFileInfo->getFileName(), $aIgnoreDirItems) && $oFileInfo->isDir()) { - $aCheckScripts = array_merge($aCheckScripts, $this->_walkThroughDirs($oFileInfo->getRealPath())); - } elseif ($oFileInfo->isFile()) { - if (strtolower($oFileInfo->getFilename()) == $this->_sInFolderFileName) { - $aCheckScripts[] = str_replace('\\', '/', $oFileInfo->getRealPath()); + try { + /** @var SplFileInfo $oFileInfo */ + $oIterator = new RecursiveDirectoryIterator($sFolder); + + foreach ($oIterator as $oFileInfo) { + if (in_array($oFileInfo->getFileName(), $aIgnoreDirItems)) { + continue; + } + if ($oFileInfo->isDir()) { + $aCheckScripts = array_merge($aCheckScripts, $this->_walkThroughDirs($oFileInfo->getRealPath())); + } elseif ($oFileInfo->isFile()) { + if (strtolower($oFileInfo->getFilename()) == $this->_sInFolderFileName) { + $aCheckScripts[] = str_replace('\\', '/', $oFileInfo->getRealPath()); + } } } + } catch (UnexpectedValueException $oEx) { + sprintf($this->oLayout->translate('unableExecuteDirectoryIterator'), $oEx->getMessage()); + $this->addMessage( + sprintf($this->oLayout->translate('unableExecuteDirectoryIterator'), $oEx->getMessage()) + ); } return $aCheckScripts; } + + public function addMessage($sMessage) + { + $this->aMessages[md5($sMessage)] = $sMessage; + } + + public function getMessages() + { + return $this->aMessages; + } /** * @param $aScriptList @@ -317,15 +362,26 @@ class requCheck $aArguments ); + $sVersionUrl = $this->_getFolderCheckUrl( + $sScriptPath, + 'getVersion', + array() + ); + $sContent = serialize(null); + $sVersion = serialize(null); if ($this->_hasCurl()) { $sContent = $this->_getContentByCurl($sUrl); + $sVersion = $this->_getContentByCurl($sVersionUrl); } elseif ($this->_hasAllowUrlFopen()) { $sContent = file_get_contents($sUrl); + $sVersion = file_get_contents($sVersionUrl); } - $aReturn[$this->getBasePath($sScriptPath)] = unserialize($sContent); + $sBasePath = $this->getBasePath($sScriptPath); + $aReturn[$sBasePath] = unserialize($sContent); + $aReturn[$this->sVersionTag][$sBasePath] = unserialize($sVersion); } return $aReturn; @@ -362,15 +418,17 @@ class requCheck */ protected function _getContentByCurl($sUrl) { + $iTimeOut = 5; $ch = curl_init(); $sCurl_URL = preg_replace('@^((http|https)://)@', '', $sUrl); + curl_setopt($ch, CURLOPT_URL, $sCurl_URL); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); - curl_setopt($ch, CURLOPT_TIMEOUT, 5); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $iTimeOut); + curl_setopt($ch, CURLOPT_TIMEOUT, $iTimeOut); curl_setopt($ch, CURLOPT_POST, 0); $sContent = curl_exec($ch); curl_close($ch); @@ -431,14 +489,22 @@ class requCheck } /** - * @param $aResult + * @return string + */ + public function getVersion() + { + return $this->sVersion; + } + + /** + * @param $mResult * * @return bool */ - protected function _hasFalseInResult($aResult) + protected function _hasFalseInResult($mResult) { - if (is_array($aResult)) { - foreach ($aResult as $blResult) { + if (is_array($mResult)) { + foreach ($mResult as $blResult) { if (false === $blResult) { $this->blGlobalResult = false; @@ -449,22 +515,24 @@ class requCheck return false; } - if (false === $aResult) { + if (false === $mResult) { $this->blGlobalResult = false; + + return true; } - return !$aResult; + return false; } /** - * @param $aResult + * @param $mResult * * @return bool */ - protected function _hasNullInResult($aResult) + protected function _hasNullInResult($mResult) { - if (is_array($aResult)) { - foreach ($aResult as $blResult) { + if (is_array($mResult)) { + foreach ($mResult as $blResult) { if ($blResult === null) { $this->blGlobalResult = false; @@ -475,22 +543,23 @@ class requCheck return false; } - if ($aResult === null) { + if ($mResult === null) { $this->blGlobalResult = false; + return true; } - return !$aResult; + return false; } /** - * @param $aResult + * @param $mResult * * @return bool */ - protected function _hasNoticeInResult($aResult) + protected function _hasNoticeInResult($mResult) { - if (is_array($aResult)) { - foreach ($aResult as $blResult) { + if (is_array($mResult)) { + foreach ($mResult as $blResult) { if ($blResult === 'notice') { return true; } @@ -499,7 +568,7 @@ class requCheck return false; } - if ($aResult === 'notice') { + if ($mResult === 'notice') { return true; } @@ -538,8 +607,8 @@ class requCheck if (!$this->_db) { if (file_exists('config.inc.php')) { require_once('config.inc.php'); - $this->_db = mysql_connect($this->dbHost, $this->dbUser, $this->dbPwd); - mysql_select_db($this->dbName, $this->_db); + ini_set('error_reporting', E_ALL^E_NOTICE); + $this->_db = mysqli_connect($this->dbHost, $this->dbUser, $this->dbPwd, $this->dbName); } } @@ -627,7 +696,6 @@ class requCheck { $sGenCheckType = preg_replace("@(\_[0-9]$)@", "", $sCheckType); $oTests = new requTests($this, $this->oConfig, $this->getDb(), $this->oRemote); - if (method_exists($oTests, $sGenCheckType)) { $this->_checkResult($oTests, $sGenCheckType, $sCheckType, $aConfiguration); } else { @@ -644,17 +712,17 @@ class requCheck */ protected function _checkResult($oTests, $sGenCheckType, $sCheckType, $aConfiguration) { - $aResult = $oTests->{$sGenCheckType}($aConfiguration); + $mResult = $oTests->{$sGenCheckType}($aConfiguration); $sElementId = (md5($sGenCheckType . serialize($aConfiguration))); - if ($this->_hasNoticeInResult($aResult)) { - $this->oLayout->getUnknownItem($aResult, $sElementId, $sCheckType, $aConfiguration); - } elseif ($this->_hasNullInResult($aResult)) { - $this->oLayout->getUnknownItem($aResult, $sElementId, $sCheckType, $aConfiguration); - } elseif ($this->_hasFalseInResult($aResult)) { - $this->oLayout->getNoSuccessItem($aResult, $sElementId, $sCheckType, $aConfiguration); + if ($this->_hasNoticeInResult($mResult)) { + $this->oLayout->getUnknownItem($mResult, $sElementId, $sCheckType, $aConfiguration); + } elseif ($this->_hasNullInResult($mResult)) { + $this->oLayout->getUnknownItem($mResult, $sElementId, $sCheckType, $aConfiguration); + } elseif ($this->_hasFalseInResult($mResult)) { + $this->oLayout->getNoSuccessItem($mResult, $sElementId, $sCheckType, $aConfiguration); } else { - $this->oLayout->getSuccessItem($aResult, $sElementId, $sCheckType, $aConfiguration); + $this->oLayout->getSuccessItem($mResult, $sElementId, $sCheckType, $aConfiguration); } } @@ -696,12 +764,27 @@ class requLayout $sTranslRequCheck "$sModName" $sModVersion + - - - - - - - - + +

EOT; echo "

" . $this->translate('RequCheck') . ' "' . $this->oConfig->sModName . ' ' . $sModVersion . '"

'; echo '

' . $this->translate('ExecNotice') . '

' . PHP_EOL; @@ -777,6 +923,14 @@ EOT; $sScriptName = $_SERVER['SCRIPT_NAME']; $sTranslShopPhpInfo = $this->translate('showPhpInfo'); $sTranslDependent = $this->translate('dependentoffurther'); + + if (count($this->oBase->getMessages())) { + echo '
    '; + foreach ($this->oBase->getMessages() as $sMessage) { + echo '
  • '.$sMessage.'
  • '; + } + echo '
'; + } if ($this->oBase->blGlobalResult) { echo '

' . $this->translate('globalSuccess') . '' . @@ -806,6 +960,29 @@ EOT; return; } + /** + * @param $aResult + * + * @return bool + */ + protected function hasRemoteVersionDiff($aResult) + { + $blDiff = false; + + if (is_array($aResult) + && isset($aResult[$this->oBase->sVersionTag]) + && is_array($aResult[$this->oBase->sVersionTag]) + ) { + foreach ($aResult[$this->oBase->sVersionTag] as $sRemoteVersion) { + if (version_compare($sRemoteVersion, $this->oBase->getVersion(), '!=')) { + $blDiff = true; + } + } + } + + return $blDiff; + } + /** * @param $aResult * @param $sElementId @@ -814,12 +991,19 @@ EOT; */ public function getNoSuccessItem($aResult, $sElementId, $sCheckType, $aConfiguration) { - echo "

" . + $sText = ''; + $sDesc = ''; + if ($this->hasRemoteVersionDiff($aResult)) { + $sText = '!'; + $sDesc = strip_tags($this->translate('RemoteVersionDiff')); + } + + echo '
'.$sText.'
' . $this->_addToggleScript($aResult, $sElementId) . $this->translate($sCheckType, $aConfiguration) . $this->_addDescBox($sCheckType.'_DESC', $aConfiguration) . - "
" . PHP_EOL; + '
' . PHP_EOL; $this->getSubDirItems($aResult, $sElementId); } @@ -832,12 +1016,19 @@ EOT; */ public function getSuccessItem($aResult, $sElementId, $sCheckType, $aConfiguration) { - echo "
" . + $sText = ''; + $sDesc = ''; + if ($this->hasRemoteVersionDiff($aResult)) { + $sText = '!'; + $sDesc = strip_tags($this->translate('RemoteVersionDiff')); + } + + echo '
'.$sText.'
' . $this->_addToggleScript($aResult, $sElementId) . $this->translate($sCheckType, $aConfiguration) . $this->_addDescBox($sCheckType.'_DESC', $aConfiguration) . - "
" . PHP_EOL; + '
' . PHP_EOL; $this->getSubDirItems($aResult, $sElementId); } @@ -850,12 +1041,19 @@ EOT; */ public function getUnknownItem($aResult, $sElementId, $sCheckType, $aConfiguration) { - echo "
" . + $sText = ''; + $sDesc = ''; + if ($this->hasRemoteVersionDiff($aResult)) { + $sText = '!'; + $sDesc = strip_tags($this->translate('RemoteVersionDiff')); + } + + echo '
'.$sText.'
' . $this->_addToggleScript($aResult, $sElementId) . $this->translate($sCheckType, $aConfiguration) . $this->_addDescBox($sCheckType.'_DESC', $aConfiguration) . - "
" . PHP_EOL; + '
' . PHP_EOL; $this->getSubDirItems($aResult, $sElementId); } @@ -866,11 +1064,11 @@ EOT; */ public function getUncheckableItem($sCheckType, $aConfiguration) { - echo "
" . - $this->translate($sCheckType, $aConfiguration) . " (" . $this->translate('RequNotCheckable') . ")" . + echo '
' . + $this->translate($sCheckType, $aConfiguration) . ' (' . $this->translate('RequNotCheckable') . ')' . $this->_addDescBox($sCheckType.'_DESC', $aConfiguration) . - "
" . PHP_EOL; + '
' . PHP_EOL; } /** @@ -880,20 +1078,33 @@ EOT; public function getSubDirItems($aResult, $sElementId) { if (is_array($aResult) && count($aResult)) { - echo "' . PHP_EOL; } } @@ -929,6 +1140,7 @@ EOT; protected function _addDescBox($sTextIdent, $aConfiguration) { $sContent = "
?". + "
". "
".$this->translate($sTextIdent, $aConfiguration)."
". "
"; @@ -1116,7 +1328,7 @@ class requTranslations 'Ihres Shops aus. Nur dann können die Prüfungen erfolgreich durchgeführt werden.', 'RequSucc' => 'Bedingung erfüllt', 'RequNotSucc' => 'Bedingung nicht erfüllt', - 'RequUnknown' => 'Bedingung nicht prüfbar', + 'RequUnknown' => 'Bedingung unklar, siehe Hinweise im Hilfetext', 'RequNotCheckable' => 'Bedingung nicht prüfbar', 'hasMinPhpVersion' => 'mindestens PHP Version %1$s', 'hasMinPhpVersion_DESC' => '
Das Modul erfordert eine PHP-Version die nicht kleiner ist '. @@ -1125,12 +1337,14 @@ class requTranslations 'ist auf Ihrem Server aktiv.
'. '
Das Modul kann in '. 'PHP-Versionen kleiner als %1$s nicht ausgeführt werden. Fragen Sie Ihren Serverprovider '. - 'nach der Anpassung der PHP-Installation.
'. + 'nach der Anpassung der PHP-Installation oder kontaktieren Sie uns für eine alternative '. + 'Modulversion.'. '
Über den [+]-Button können Sie Ergebnisse zu den getesteten Verzeichnissen '. 'abrufen. Je nach Servereinstellung können die Ergebnisse abweichen. Nur die rot markierten '. 'Verzeichnisse erfordern eine Anpassung.
'. - '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen".'. - '
', + '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen". '. + 'Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', 'hasMaxPhpVersion' => 'maximal PHP Version %1$s', 'hasMaxPhpVersion_DESC' => '
Das Modul erfordert eine PHP-Version die nicht höher ist '. 'als %1$s.
'. @@ -1138,24 +1352,28 @@ class requTranslations 'ist auf Ihrem Server aktiv.'. '
Das Modul kann in '. 'PHP-Versionen höher als %1$s nicht ausgeführt werden. Fragen Sie Ihren Serverprovider '. - 'nach der Anpassung der PHP-Installation.
'. + 'nach der Anpassung der PHP-Installation oder kontaktieren Sie uns für eine alternative '. + 'Modulversion.'. '
Über den [+]-Button können Sie Ergebnisse zu den getesteten Verzeichnissen '. 'abrufen. Je nach Servereinstellung können die Ergebnisse abweichen. Nur die rot markierten '. 'Verzeichnisse erfordern eine Anpassung.
'. - '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen".'. - '
', + '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen". '. + 'Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', 'hasFromToPhpVersion' => 'Server verwendet PHP Version zwischen %1$s und %2$s', 'hasFromToPhpVersion_DESC' => '
Das Modul erfordert eine PHP-Version zwischen %1$s und %2$s.
'. '
Die passende PHP-Version '. 'ist auf Ihrem Server aktiv.
'. '
Das Modul kann '. 'außerhalb der PHP-Versionen nicht ausgeführt werden. Fragen Sie Ihren Serverprovider '. - 'nach der Anpassung der PHP-Installation.
'. + 'nach der Anpassung der PHP-Installation oder kontaktieren Sie uns für eine alternative '. + 'Modulversion.'. '
Über den [+]-Button können Sie Ergebnisse zu den getesteten Verzeichnissen '. 'abrufen. Je nach Servereinstellung können die Ergebnisse abweichen. Nur die rot markierten '. 'Verzeichnisse erfordern eine Anpassung.
'. - '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen".'. - '
', + '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen". '. + 'Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', 'hasExtension' => '%1$s-Erweiterung verfügbar', 'hasExtension_DESC' => '
Das Modul erfordert die %1$s-Servererweiterung.
'. '
Die %1$s-Erweiterung ist '. @@ -1166,8 +1384,35 @@ class requTranslations '
Über den [+]-Button können Sie Ergebnisse zu den getesteten Verzeichnissen '. 'abrufen. Je nach Servereinstellung können die Ergebnisse abweichen. Nur die rot markierten '. 'Verzeichnisse erfordern eine Anpassung.
'. - '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen".'. - '
', + '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen". '. + 'Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', + 'hasMinCurlVersion' => 'mindestens cURL Version %1$s', + 'hasMinCurlVersion_DESC' => '
Das Modul benötigt cURL ab der Version %1$s.
'. + '
cURL ist in '. + 'passender Version installiert.
'. + '
cURL ist nicht oder in einer '. + 'älteren Version installiert. Fragen Sie Ihren Serverprovider nach einer passenden '. + 'cURL-Version.
'. + '
Über den [+]-Button können Sie Ergebnisse zu den getesteten Verzeichnissen '. + 'abrufen. Je nach Servereinstellung können die Ergebnisse abweichen. Nur die rot markierten '. + 'Verzeichnisse erfordern eine Anpassung.
'. + '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen". '. + 'Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', + 'hasMinOpenSSLVersion' => 'mindestens OpenSSL Version %1$s', + 'hasMinOpenSSLVersion_DESC' => '
Das Modul benötigt OpenSSL ab der Version %1$s.
'. + '
OpenSSL ist in '. + 'passender Version installiert.
'. + '
OpenSSL ist nicht oder in '. + 'einer älteren Version installiert. Fragen Sie Ihren Serverprovider nach einer passenden '. + 'OpenSSL-Version.
'. + '
Über den [+]-Button können Sie Ergebnisse zu den getesteten Verzeichnissen '. + 'abrufen. Je nach Servereinstellung können die Ergebnisse abweichen. Nur die rot markierten '. + 'Verzeichnisse erfordern eine Anpassung.
'. + '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen". '. + 'Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', 'hasMinShopVersion' => 'mindestens Shop Version %1$s', 'hasMinShopVersion_DESC' => '
Das Modul ist ab Shopversion %1$s freigegeben.
'. '
Die Shopsoftware ist in '. @@ -1175,16 +1420,16 @@ class requTranslations '
Das Modul kann in dieser '. 'Version der Shopsoftware nicht installiert werden. Fragen Sie nach einer früheren '. 'Modulversion, die für Ihre Shopversion getestet wurde.
'. - '
Bei Fragen wenden Sie sich bitte an '. + '', 'hasMaxShopVersion' => 'maximal Shop Version %1$s', 'hasMaxShopVersion_DESC' => '
Das Modul ist bis zur Shopversion %1$s freigegeben.
'. '
Die Shopsoftware ist in '. 'passender Version installiert.
'. - '
Das Modul kann in dieser '. - 'Version der Shopsoftware nicht installiert werden. Fragen Sie nach einer aktuelleren '. + '
Wir können nicht '. + 'garantieren, dass das Modul in Ihrer Shopversion funktioniert. Fragen Sie nach einer aktuelleren '. 'Modulversion, die für Ihren Shop passt.
'. - '
Bei Fragen wenden Sie sich bitte an '. + '', 'hasMinModCfgVersion' => '%2$s (ModCfg-Eintrag "%1$s") mindestens in Version %3$s', 'hasMinModCfgVersion_DESC' => '
Das Modul benötigt die Zusatzsoftware "%2$s" mindestens in '. @@ -1194,7 +1439,7 @@ class requTranslations '
Die Zusatzsoftware ist '. 'möglicherweise gar nicht oder in falscher Version installiert. Bitte installieren Sie die '. 'Zusatzsoftware, bevor Sie diese Installation fortsetzen.
'. - '
Bei Fragen wenden Sie sich bitte an '. + '', 'hasMaxModCfgVersion' => '%2$s (ModCfg-Eintrag "%1$s") maximal in Version %3$s', 'hasMaxModCfgVersion_DESC' => '
Das Modul benötigt die Zusatzsoftware "%2$s" höchstens '. @@ -1204,7 +1449,7 @@ class requTranslations '
Die Zusatzsoftware ist '. 'möglicherweise gar nicht oder in falscher Version installiert. Bitte installieren Sie die '. 'Zusatzsoftware, bevor Sie diese Installation fortsetzen.
'. - '
Bei Fragen wenden Sie sich bitte an '. + '', 'requireNewLicence' => 'bisheriger Lizenzschlüssel kann verwendet werden', 'requireNewLicence_DESC' => '
Diese Prüfung versucht zu ermitteln, ob Sie für den '. @@ -1230,7 +1475,7 @@ class requTranslations 'Connector nicht ausgeführt werden. Bitte laden Sie sich diesen kostenfrei aus unserem Shop '. 'unter www.oxidmodule.com/'. 'connector/ und installieren diesen vorab.
'. - '
Bei Fragen wenden Sie sich bitte an '. + '', 'isShopEdition' => 'ist Shopedition %1$s', 'isShopEdition_DESC' => '
Das Modul erfordert eine dieser Shopeditionen: %1$s
'. @@ -1239,39 +1484,67 @@ class requTranslations '
Das Modul kann in Ihrer '. 'Shopedition nicht ausgeführt werden. Bitte fragen Sie nach einer Modulversion für Ihre '. 'Shopedition.
'. - '
Bei Fragen wenden Sie sich bitte an '. + '', 'hasZendLoaderOptimizer' => 'Zend Optimizer (PHP 5.2) oder Zend Guard Loader (PHP 5.3, 5.4, 5.5, 5.6) '. - 'installiert', + 'installiert (auf passendes Zend-Installationspaket achten!)', 'hasZendLoaderOptimizer_DESC' => '
Das Modul erfordert (je nach PHP-Version) den Zend Optimizer '. - 'bzw. den Zend Guard Loader.
'. + 'bzw. den Zend Guard Loader. Achten Sie darauf, ein für den verfügbaren Decoder '. + 'erstelltes Installationspaket zu verwenden.
'. '
Der passende Decoder ist '. 'auf Ihrem Server installiert.
'. + '
Der passende Decoder ist '. + 'auf Ihrem Server installiert. Es ist eine zusätzliche Erweiterungen (Zend OPcache) installiert, '. + 'die im Zusammenspiel mit dem Decoder Fehler verursachen kann.
'. '
Das Modul kann ohne den '. 'passenden Decoder nicht ausgeführt werden. Fragen Sie Ihren Serverprovider nach der '. 'Installation des passenden Zend-Decoders.
'. '
Über den [+]-Button können Sie Ergebnisse zu den getesteten Verzeichnissen '. 'abrufen. Je nach Servereinstellung können die Ergebnisse abweichen. Nur die rot markierten '. 'Verzeichnisse erfordern eine Anpassung.
'. - '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen".'. - '
', - 'hasIonCubeLoader' => 'ionCube Loader installiert', - 'hasIonCubeLoader_DESC' => '
Das Modul erfordert den IonCube Loader.
'. + '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen". '. + 'Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', + 'hasIonCubeLoader' => 'ionCube Loader installiert (auf passendes ionCube-Installationspaket achten!)', + 'hasIonCubeLoader_DESC' => '
Das Modul erfordert den ionCube Loader. Achten Sie darauf, ein '. + 'für den verfügbaren Decoder erstelltes Installationspaket zu verwenden.
'. '
Der passende Decoder ist '. 'auf Ihrem Server installiert.
'. '
Das Modul kann ohne den '. 'passenden Decoder nicht ausgeführt werden. Fragen Sie Ihren Serverprovider nach der '. - 'Installation des IonCube Loaders.
'. + 'Installation des ionCube Loaders.
'. '
Über den [+]-Button können Sie Ergebnisse zu den getesteten Verzeichnissen '. 'abrufen. Je nach Servereinstellung können die Ergebnisse abweichen. Nur die rot markierten '. 'Verzeichnisse erfordern eine Anpassung.
'. - '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen".'. - '
', + '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen". '. + 'Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', + 'hasIonCubeOrZendLoader' => 'ionCube Loader oder Zend Optimizer / Guard Loader installiert '. + '(%1$s)', + 'hasIonCubeOrZendLoader_DESC' => '
Das Modul erfordert den ionCube Loader oder den Zend '. + 'Optimizer / Guard Loader. Achten Sie darauf, ein für die verfügbaren Decoder erstelltes '. + 'Installationspaket zu verwenden (%1$s).
'. + '
Ein passender Decoder ist '. + 'auf Ihrem Server installiert.
'. + '
Ein passender Decoder ist '. + 'auf Ihrem Server installiert. Es ist jedoch ein Abbruchgrund festgestellt worden, der zu Fehlern '. + 'führen kann. Details entnehmen Sie bitte den folgenden Hinweisen.
'. + '
Das Modul kann ohne einen '. + 'passenden Decoder nicht ausgeführt werden. Fragen Sie Ihren Serverprovider nach der '. + 'Installation des ionCube Loaders oder des Zend Optimizers / Guard Loaders.
'. + '%2$s'. + '
Über den [+]-Button können Sie Ergebnisse zu den getesteten Verzeichnissen '. + 'abrufen. Je nach Servereinstellung können die Ergebnisse abweichen. Nur die rot markierten '. + 'Verzeichnisse erfordern eine Anpassung.
'. + '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen". '. + 'Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', + 'RemoteVersionDiff' => ' (Remotescript hat abweichende Version oder ist nicht '. + 'prüfbar, Ergebnis mglw. nicht sicher)', 'globalSuccess' => 'Die technische Prüfung war erfolgreich. Sie können das Modul '. 'installieren.*

', 'globalNotSuccess' => 'Die technische Prüfung war nicht erfolgreich. Bitte kontrollieren '. - 'Sie die rot '. - 'markierten Bedingungen.

', + 'Sie die rot oder orange markierten Bedingungen.

', 'deleteFile1' => 'Löschen Sie diese Datei nach der Verwendung bitte unbedingt wieder von '. 'Ihrem Server! Klicken Sie hier, um diese Datei zu löschen.', @@ -1284,6 +1557,20 @@ class requTranslations 'unableDeleteFile' => 'Datei konnte nicht gelöscht werden. Bitte löschen Sie diese '. 'manuell.', 'goodBye' => 'Auf Wiedersehen.', + 'unableExecuteDirectoryIterator' => 'Es können nicht alle Unterverzeichnisse auf weitere Prüfungen '. + 'kontrolliert werden. (%1$s)', + 'availableDecoder' => 'verfügbar: %1$s - auf passendes Installationspaket achten!', + 'noDecoderAvailable' => 'kein verwendbarer Decoder verfügbar', + 'availableDecoder_hasZendLoaderOptimizer' => 'Zend Guard Loader / Optimizer', + 'notAvailableDecoder_hasZendLoaderOptimizer' => '
  • Der Zend Guard Loader / Optimizer ist nicht '. + 'installiert.
  • ', + 'decoderIssue_hasZendLoaderOptimizer' => '
  • Der Zend-Decoder ist '. + 'auf Ihrem Server installiert. Es ist jedoch eine zusätzliche Erweiterungen (Zend OPcache) '. + 'installiert, die im Zusammenspiel mit dem Zend-Decoder Fehler verursachen kann.
  • ', + 'availableDecoder_hasIonCubeLoader' => 'ionCube Loader', + 'notAvailableDecoder_hasIonCubeLoader' => '
  • Der ionCube Loader ist nicht installiert.
  • ', + 'decoderIssue_hasIonCubeLoader' => '
  • Es wurde ein nicht definierter Abbruchgrund bei der '. + 'Verwendung des ionCube-Decoders festgestellt.
  • ', ), 'en' => array( 'RequCheck' => 'Requirement check', @@ -1291,116 +1578,193 @@ class requTranslations 'case only checks can executed succesfully.', 'RequSucc' => 'condition is fulfilled', 'RequNotSucc' => 'condition isn\'t fulfilled', - 'RequUnknown' => 'condition isn\'t checkable', + 'RequUnknown' => 'condition unclear, see notes in help text', 'RequNotCheckable' => 'condition isn\'t checkable', 'hasMinPhpVersion' => 'at least PHP version %1$s', - 'hasMinPhpVersion_DESC' => '
    requirement check result
    '. - '
    This requirement is '. - 'fulfilled.
    '. - '
    This requirement isn\'t '. - 'fulfilled. The module can\'t installed or executed.
    '. - '
    The [+] button show details for all tested directories. If you have any questions, please '. - 'contact us at support@shopmodule.com.
    ', + 'hasMinPhpVersion_DESC' => '
    The module requires a PHP version at least %1$s
    '. + '
    The appropriate version of PHP '. + 'is activated on your server.
    '. + '
    The module can not be executed within '. + 'the actived PHP version. Ask your server provider for for the adaption of your PHP installation or '. + 'contact us for another module version.
    '. + '
    The [+] button show details for all tested directories. Depending on the server settings, '. + 'the results may vary. Only the red marked directories requires adaptation.
    '. + '
    Details about your server installation you can see by clicking on the button "show PHPinfo". '. + 'If you have any questions, please contact us at '. + 'support@shopmodule.com.
    ', 'hasMaxPhpVersion' => 'not more than PHP version %1$s', - 'hasMaxPhpVersion_DESC' => '
    requirement check result
    '. - '
    This requirement is '. - 'fulfilled.
    '. - '
    This requirement isn\'t '. - 'fulfilled. The module can\'t installed or executed.
    '. - '
    The [+] button show details for all tested directories. If you have any questions, please '. - 'contact us at support@shopmodule.com.
    ', + 'hasMaxPhpVersion_DESC' => '
    The module requires a PHP version not more than %1$s
    '. + '
    The appropriate version of PHP '. + 'is activated on your server.
    '. + '
    The module can not be executed within '. + 'the actived PHP version. Ask your server provider for for the adaption of your PHP installation or '. + 'contact us for another module version.
    '. + '
    The [+] button show details for all tested directories. Depending on the server settings, '. + 'the results may vary. Only the red marked directories requires adaptation.
    '. + '
    Details about your server installation you can see by clicking on the button "show PHPinfo". '. + 'If you have any questions, please contact us at '. + 'support@shopmodule.com.
    ', 'hasFromToPhpVersion' => 'server use PHP version between %1$s and %2$s', - 'hasFromToPhpVersion_DESC'=> '
    requirement check result
    '. - '
    This requirement is '. - 'fulfilled.
    '. - '
    This requirement isn\'t '. - 'fulfilled. The module can\'t installed or executed.
    '. - '
    The [+] button show details for all tested directories. If you have any questions, please '. - 'contact us at support@shopmodule.com.
    ', + 'hasFromToPhpVersion_DESC'=> '
    The module requires a PHP version between %1$s and %2$s
    '. + '
    The appropriate version of PHP '. + 'is activated on your server.
    '. + '
    The module can not be executed within '. + 'the actived PHP version. Ask your server provider for for the adaption of your PHP installation or '. + 'contact us for another module version.
    '. + '
    The [+] button show details for all tested directories. Depending on the server settings, '. + 'the results may vary. Only the red marked directories requires adaptation.
    '. + '
    Details about your server installation you can see by clicking on the button "show PHPinfo". '. + 'If you have any questions, please contact us at '. + 'support@shopmodule.com.
    ', 'hasExtension' => '%1$s extension is available', - 'hasExtension_DESC' => '
    requirement check result
    '. - '
    This requirement is '. - 'fulfilled.
    '. - '
    This requirement isn\'t '. - 'fulfilled. The module can\'t installed or executed.
    '. - '
    The [+] button show details for all tested directories. If you have any questions, please '. - 'contact us at support@shopmodule.com.
    ', + 'hasExtension_DESC' => '
    The module requires the %1$s server extension.
    '. + '
    The %1$s server extension is '. + 'available on your server.
    '. + '
    The module can not be executed '. + 'without the %1$s extension. Ask your server provider for installing this extension.
    '. + '
    The [+] button show details for all tested directories. Depending on the server settings, '. + 'the results may vary. Only the red marked directories requires adaptation.
    '. + '
    Details about your server installation you can see by clicking on the button "show PHPinfo". '. + 'If you have any questions, please contact us at '. + 'support@shopmodule.com.
    ', + 'hasMinCurlVersion' => 'at least cURL version %1$s', + 'hasMinCurlVersion_DESC' => '
    The module requires at least cURL version %1$s.
    '. + '
    cURL is available '. + 'in a compatible version.
    '. + '
    cURL is not installed or '. + 'installed in an older version. Ask your server provider for an appropriate version.
    '. + '
    The [+] button show details for all tested directories. Depending on the server settings, '. + 'the results may vary. Only the red marked directories requires adaptation.
    '. + '
    Details about your server installation you can see by clicking on the button "show PHPinfo". '. + 'If you have any questions, please contact us at '. + 'support@shopmodule.com.
    ', + 'hasMinOpenSSLVersion' => 'at least OpenSSL version %1$s', + 'hasMinOpenSSLVersion_DESC' => '
    The module requires at least OpenSSL version %1$s.
    '. + '
    OpenSSL is availabe '. + 'in a compatible version.
    '. + '
    OpenSSL is not installed or '. + 'installed in an older version. Ask your server provider for an appropriate version.
    '. + '
    The [+] button show details for all tested directories. Depending on the server settings, '. + 'the results may vary. Only the red marked directories requires adaptation.
    '. + '
    Details about your server installation you can see by clicking on the button "show PHPinfo". '. + 'If you have any questions, please contact us at '. + 'support@shopmodule.com.
    ', 'hasMinShopVersion' => 'at least shop version %1$s', - 'hasMinShopVersion_DESC' => '
    requirement check result
    '. - '
    This requirement is '. - 'fulfilled.
    '. - '
    This requirement isn\'t '. - 'fulfilled. The module can\'t installed or executed.
    '. - '
    The [+] button show details for all tested directories. If you have any questions, please '. - 'contact us at support@shopmodule.com.
    ', + 'hasMinShopVersion_DESC' => '
    The module is released to shop version %1$s
    '. + '
    The shop software is installed '. + 'in a compatible version.
    '. + '
    We can not guarantee, '. + 'that this module works properly in your shop version. Please ask for a matching module version.
    '. + '
    If you have any questions, please contact us at '. + 'support@shopmodule.com.
    ', 'hasMaxShopVersion' => 'not more than shop version %1$s', - 'hasMaxShopVersion_DESC' => '
    requirement check result
    '. - '
    This requirement is '. - 'fulfilled.
    '. - '
    This requirement isn\'t '. - 'fulfilled. The module can\'t installed or executed.
    '. - '
    The [+] button show details for all tested directories. If you have any questions, please '. - 'contact us at support@shopmodule.com.
    ', - 'hasMinModCfgVersion' => '%2$s (ModCfg item "%1$s") has at least version %3$s', - 'hasMinModCfgVersion_DESC' => '
    requirement check result
    '. - '
    This requirement is '. - 'fulfilled.
    '. - '
    This requirement isn\'t '. - 'fulfilled. The module can\'t installed or executed.
    '. - '
    The [+] button show details for all tested directories. If you have any questions, please '. - 'contact us at support@shopmodule.com.
    ', - 'hasMaxModCfgVersion' => '%2$s (ModCfg item "%1$s") has not more than version %3$s', - 'hasMaxModCfgVersion_DESC' => '
    requirement check result
    '. - '
    This requirement is '. - 'fulfilled.
    '. - '
    This requirement isn\'t '. - 'fulfilled. The module can\'t installed or executed.
    '. - '
    The [+] button show details for all tested directories. If you have any questions, please '. - 'contact us at support@shopmodule.com.
    ', + 'hasMaxShopVersion_DESC' => '
    The module is released to shop version %1$s
    '. + '
    The shop software is installed '. + 'in a compatible version.
    '. + '
    We can not guarantee, '. + 'that this module works properly in your shop version. Please ask for a matching module version.
    '. + '
    If you have any questions, please contact us at '. + 'support@shopmodule.com.
    ', + 'hasMinModCfgVersion' => '%2$s (ModCfg item "%1$s") at least in version %3$s', + 'hasMinModCfgVersion_DESC' => '
    The module requires additional software "%2$s" at least '. + 'in version %3$s
    '. + '
    The software is installed '. + 'in a compatible version.
    '. + '
    The additional software is '. + 'not installed or in wrong version available. Please install the additional software before '. + 'proceeding this installation.
    '. + '
    If you have any questions, please contact us at '. + 'support@shopmodule.com.
    ', + 'hasMaxModCfgVersion' => '%2$s (ModCfg item "%1$s") not more than in version %3$s', + 'hasMaxModCfgVersion_DESC' => '
    The module requires additional software "%2$s" not more than '. + 'in version %3$s
    '. + '
    The software is installed '. + 'in a compatible version.
    '. + '
    The additional software is '. + 'be installed or in wrong version available. Please install the additional software before '. + 'proceeding this installation.
    '. + '
    If you have any questions, please contact us at '. + 'support@shopmodule.com.
    ', 'requireNewLicence' => 'former licence key can be used', - 'requireNewLicence_DESC' => '
    requirement check result
    '. - '
    This requirement is '. - 'fulfilled.
    '. - '
    This requirement isn\'t '. - 'fulfilled. The module can\'t installed or executed.
    '. - '
    The [+] button show details for all tested directories. If you have any questions, please '. - 'contact us at support@shopmodule.com.
    ', + 'requireNewLicence_DESC' => '
    This test tries to determine whether you need a new licence key '. + 'for the use of this module
    '. + '
    You have stored a license key '. + 'for this module, which is probably also compatible for the new module version.
    '. + '
    You need likely a new license '. + 'key for this module. Do you have already one, run the installation and then apply the license '. + 'key in the admin panel of your shop. Otherwise, you can purchase it in our shop '. + 'oxidmodule.com or also create a '. + 'free trial license key in the admin panel of your shop.
    '. + '
    If you have any questions, please contact us at '. + 'buchhaltung@shopmodule.com.
    ', 'hasModCfg' => 'Module '. 'Connector installed', - 'hasModCfg_DESC' => '
    requirement check result
    '. - '
    This requirement is '. - 'fulfilled.
    '. - '
    This requirement isn\'t '. - 'fulfilled. The module can\'t installed or executed.
    '. - '
    The [+] button show details for all tested directories. If you have any questions, please '. - 'contact us at support@shopmodule.com.
    ', + 'hasModCfg_DESC' => '
    The module requires necessarily the D3 Module Connector.
    '. + '
    The Module Connector is '. + 'installed.
    '. + '
    The module can not be executed '. + 'without the Module Connector. Please download this free of charge from our shop '. + 'www.oxidmodule.com/'. + 'connector/ and install it beforehand.
    '. + '
    If you have any questions, please contact us at '. + 'support@shopmodule.com.
    ', 'isShopEdition' => 'shop edition is %1$s', - 'isShopEdition_DESC' => '
    requirement check result
    '. - '
    This requirement is '. - 'fulfilled.
    '. - '
    This requirement isn\'t '. - 'fulfilled. The module can\'t installed or executed.
    '. - '
    The [+] button show details for all tested directories. If you have any questions, please '. - 'contact us at support@shopmodule.com.
    ', - 'hasZendLoaderOptimizer' => 'Zend Optimizer (PHP 5.2) or Zend Guard Loader (PHP 5.3, 5.4, 5.5, 5.6) installed', - 'hasZendLoaderOptimizer_DESC' => '
    requirement check result
    '. - '
    This requirement is '. - 'fulfilled.
    '. - '
    This requirement isn\'t '. - 'fulfilled. The module can\'t installed or executed.
    '. - '
    The [+] button show details for all tested directories. If you have any questions, please '. - 'contact us at support@shopmodule.com.
    ', - 'hasIonCubeLoader' => 'ionCube loader installed', - 'hasonCubeLoader_DESC' => '
    requirement check result
    '. - '
    This requirement is '. - 'fulfilled.
    '. - '
    This requirement isn\'t '. - 'fulfilled. The module can\'t installed or executed.
    '. - '
    The [+] button show details for all tested directories. If you have any questions, please '. - 'contact us at support@shopmodule.com.
    ', + 'isShopEdition_DESC' => '
    The module requires one of these shop editions: %1$s
    '. + '
    The shop is installed '. + 'in the appropriate edition.
    '. + '
    The module can not be executed '. + 'in your shop edition. Please ask for a module version for your shop edition.
    '. + '
    If you have any questions, please contact us at '. + 'support@shopmodule.com.
    ', + 'hasZendLoaderOptimizer' => 'Zend Optimizer (PHP 5.2) or Zend Guard Loader (PHP 5.3, 5.4, 5.5, 5.6) '. + 'installed (pay attention to the compatible Zend installation package!)', + 'hasZendLoaderOptimizer_DESC' => '
    The module requires (depending on the PHP version) the Zend Guard Optimizer '. + 'or the Zend Guard Loader.
    '. + '
    The appropriate decoder is '. + 'installed on your server.
    '. + '
    The decoder is '. + 'installed on your server. There is an additional installed extension (Zend OPcache), '. + 'which can cause errors in combination with the decoder.
    '. + '
    The decoder isn\'t '. + 'installed on your server. The module can\'t installed or executed. Please contact your server provider.
    '. + '
    The [+] button show details for all tested directories. Depending on the server settings, '. + 'the results may vary. Only the red marked directories requires adaptation.
    '. + '
    Details about your server installation you can see by clicking on the button "show PHPinfo". '. + 'If you have any questions, please contact us at '. + 'support@shopmodule.com.
    ', + 'hasIonCubeLoader' => 'ionCube Loader installed (pay attention to the compatible ionCube installation package!)', + 'hasIonCubeLoader_DESC' => '
    The module requires the ionCube Loader.
    '. + '
    The appropriate decoder is '. + 'installed on your server.
    '. + '
    The decoder isn\'t '. + 'installed on your server. The module can\'t installed or executed. Please contact your server provider.
    '. + '
    The [+] button show details for all tested directories. Depending on the server settings, '. + 'the results may vary. Only the red marked directories requires adaptation.
    '. + '
    Details about your server installation you can see by clicking on the button "show PHPinfo". '. + 'If you have any questions, please contact us at '. + 'support@shopmodule.com.
    ', + 'hasIonCubeOrZendLoader' => 'ionCube Loader or Zend Optimizer / Guard Loader installed '. + '(%1$s)', + 'hasIonCubeOrZendLoader_DESC' => '
    The module requires the ionCube Loader or the Zend '. + 'Optimizer / Guard Loader. Pay attention to use a compatible installation package (%1$s).
    '. + '
    One of the appropriate '. + 'decoders is installed on your server.
    '. + '
    One of the appropriate '. + 'decoder is installed on your server. An undefined abort reason has been found, which can cause '. + 'to errors. For details, please refer to the following notes.
    '. + '
    None of the decoders is '. + 'installed on your server. The module can\'t installed or executed. Please contact your server provider.
    '. + '%2$s'. + '
    The [+] button show details for all tested directories. Depending on the server settings, '. + 'the results may vary. Only the red marked directories requires adaptation.
    '. + '
    Details about your server installation you can see by clicking on the button "show PHPinfo". '. + 'If you have any questions, please contact us at '. + 'support@shopmodule.com.
    ', + 'RemoteVersionDiff' => ' (Remote script has different version or isn\'t '. + 'callable, result may not be safe)', 'globalSuccess' => 'The technical test was successful. Your server is ready for installing '. 'the module.*

    ', - 'globalNotSuccess' => 'The technical test wasn\'t successfull. Please check the red marked '. + 'globalNotSuccess' => 'The technical test wasn\'t successfull. Please check the red or orange marked '. 'conditions.

    ', 'deleteFile1' => 'Please delete this file after use on your server! Click here, to delete this file.', @@ -1412,6 +1776,19 @@ class requTranslations 'toggleswitch' => 'click for details', 'unableDeleteFile' => 'Unable to delete file. Please delete it manually.', 'goodBye' => 'Good Bye.', + 'unableExecuteDirectoryIterator' => 'Unable to check subdirectories for further checks. (%1$s)', + 'availableDecoder' => 'available: %1$s - pay attention to the compatible installation package!', + 'noDecoderAvailable' => 'no usable decoder available', + 'availableDecoder_hasZendLoaderOptimizer' => 'Zend Guard Loader / Optimizer', + 'notAvailableDecoder_hasZendLoaderOptimizer' => '
  • Zend Guard Loader / Optimizer isn\'t '. + 'available.
  • ', + 'decoderIssue_hasZendLoaderOptimizer' => '
  • The Zend decoder is '. + 'installed on your server. There is an additional installed extension (Zend OPcache), '. + 'which can cause errors in combination with the decoder.
  • ', + 'availableDecoder_hasIonCubeLoader' => 'ionCube Loader', + 'notAvailableDecoder_hasIonCubeLoader' => '
  • ionCube Loader isn\'t available.
  • ', + 'decoderIssue_hasIonCubeLoader' => '
  • An undefined abort reason has been found when using the '. + 'ionCube decoder.
  • ', ), ); } @@ -1657,7 +2034,7 @@ class requTests */ public function hasMinPhpVersion(&$aConfiguration) { - $aResult[$this->getBasePath()] = false; + $aResult = array($this->getBasePath() => false); if (version_compare(phpversion(), $aConfiguration['aParams']['version'], '>=')) { $aResult[$this->getBasePath()] = true; @@ -1675,7 +2052,7 @@ class requTests */ public function hasFromToPhpVersion(&$aConfiguration) { - $aResult[$this->getBasePath()] = false; + $aResult = array($this->getBasePath() => false); if ((version_compare(phpversion(), $aConfiguration['aParams']['from'], '>=')) && (version_compare(phpversion(), $aConfiguration['aParams']['to'], '<')) @@ -1695,7 +2072,7 @@ class requTests */ public function hasMaxPhpVersion(&$aConfiguration) { - $aResult[$this->getBasePath()] = false; + $aResult = array($this->getBasePath() => false); if (version_compare(phpversion(), $aConfiguration['aParams']['version'], '<=')) { $aResult[$this->getBasePath()] = true; @@ -1713,7 +2090,7 @@ class requTests */ public function hasExtension(&$aConfiguration) { - $aResult[$this->getBasePath()] = false; + $aResult = array($this->getBasePath() => false); if (extension_loaded($aConfiguration['aParams']['type'])) { $aResult[$this->getBasePath()] = true; @@ -1724,6 +2101,69 @@ class requTests return $aResult; } + /** + * @param $aConfiguration + * @return array + */ + public function hasMinCurlVersion(&$aConfiguration) + { + $aCurlVersion = curl_version(); + $aResult = array( + $this->getBasePath() => version_compare($aCurlVersion['version'], $aConfiguration['aParams']['version'], '>=') + ); + + $aResult = array_merge($aResult, $this->checkInSubDirs(__FUNCTION__, $aConfiguration['aParams'])); + + return $aResult; + } + + /** + * @param $aConfiguration + * @return array + */ + public function hasMinOpenSSLVersion(&$aConfiguration) + { + $aResult = array( + $this->getBasePath() => version_compare($this->get_openssl_version_number(true), $aConfiguration['aParams']['version'], '>=') + ); + + $aResult = array_merge($aResult, $this->checkInSubDirs(__FUNCTION__, $aConfiguration['aParams'])); + + return $aResult; + } + + /** + * @param bool $patch_as_number + * @param null $openssl_version_number + * @return bool|string + */ + protected function get_openssl_version_number($patch_as_number=false,$openssl_version_number=null) { + if (is_null($openssl_version_number)) $openssl_version_number = OPENSSL_VERSION_NUMBER; + $openssl_numeric_identifier = str_pad((string)dechex($openssl_version_number),8,'0',STR_PAD_LEFT); + + $openssl_version_parsed = array(); + $preg = '/(?[[:xdigit:]])(?[[:xdigit:]][[:xdigit:]])(?[[:xdigit:]][[:xdigit:]])'; + $preg.= '(?[[:xdigit:]][[:xdigit:]])(?[[:xdigit:]])/'; + preg_match_all($preg, $openssl_numeric_identifier, $openssl_version_parsed); + $openssl_version = false; + if (!empty($openssl_version_parsed)) { + $alphabet = array(1=>'a',2=>'b',3=>'c',4=>'d',5=>'e',6=>'f',7=>'g',8=>'h',9=>'i',10=>'j',11=>'k', + 12=>'l',13=>'m',14=>'n',15=>'o',16=>'p',17=>'q',18=>'r',19=>'s',20=>'t',21=>'u', + 22=>'v',23=>'w',24=>'x',25=>'y',26=>'z'); + $openssl_version = intval($openssl_version_parsed['major'][0]).'.'; + $openssl_version.= intval($openssl_version_parsed['minor'][0]).'.'; + $openssl_version.= intval($openssl_version_parsed['fix'][0]); + $patchlevel_dec = hexdec($openssl_version_parsed['patch'][0]); + if (!$patch_as_number && array_key_exists($patchlevel_dec, $alphabet)) { + $openssl_version.= $alphabet[$patchlevel_dec]; // ideal for text comparison + } + else { + $openssl_version.= '.'.$patchlevel_dec; // ideal for version_compare + } + } + return $openssl_version; + } + /** * @param $aConfiguration * @@ -1734,8 +2174,8 @@ class requTests if ($this->getDb()) { $sField = 'oxversion'; $sSelect = "SELECT " . $sField . " FROM oxshops WHERE 1 ORDER BY oxversion ASC LIMIT 1"; - $rResult = mysql_query($sSelect, $this->getDb()); - $oResult = mysql_fetch_object($rResult); + $rResult = mysqli_query($this->getDb(), $sSelect); + $oResult = mysqli_fetch_object($rResult); $oEditionResult = $this->_getShopEdition(); $sEdition = strtoupper($oEditionResult->oxedition); @@ -1770,8 +2210,8 @@ class requTests if ($this->getDb()) { $sField = 'oxversion'; $sSelect = "SELECT " . $sField . " FROM oxshops WHERE 1 ORDER BY oxversion DESC LIMIT 1"; - $rResult = mysql_query($sSelect, $this->getDb()); - $oResult = mysql_fetch_object($rResult); + $rResult = mysqli_query($this->getDb(), $sSelect); + $oResult = mysqli_fetch_object($rResult); $oEditionResult = $this->_getShopEdition(); $sEdition = strtoupper($oEditionResult->oxedition); @@ -1833,8 +2273,8 @@ class requTests if ($this->getDb()) { $sField = 'oxedition'; $sSelect = "SELECT " . $sField . " FROM oxshops WHERE 1 LIMIT 1"; - $rResult = mysql_query($sSelect, $this->getDb()); - $oResult = mysql_fetch_object($rResult); + $rResult = mysqli_query($this->getDb(), $sSelect); + $oResult = mysqli_fetch_object($rResult); return $oResult; } @@ -1850,11 +2290,11 @@ class requTests if ($this->getDb()) { $sModId = 'd3modcfg_lib'; $sSelect = "SELECT 1 as result FROM d3_cfg_mod WHERE oxmodid = '" . $sModId . "' LIMIT 1"; - $rResult = mysql_query($sSelect, $this->getDb()); - if (is_resource($rResult)) { - $oResult = mysql_fetch_object($rResult); + $rResult = mysqli_query($this->getDb(), $sSelect); + if (is_object($rResult)) { + $oResult = mysqli_fetch_object($rResult); - if ($oResult->result) { + if ((bool) $oResult->result == true) { return true; } } @@ -1879,14 +2319,15 @@ class requTests oxversion != 'basic' ORDER BY oxversion ASC LIMIT 1"; - $rResult = mysql_query($sSelect, $this->getDb()); - $aResult = mysql_fetch_assoc($rResult); + $rResult = mysqli_query($this->getDb(), $sSelect); + $oResult = mysqli_fetch_object($rResult); + $blReturn = (bool)$oResult->result; - if (!(int)$aResult['result']) { + if (false == $blReturn) { $this->setGlobalResult(false); } - return (int)$aResult['result']; + return $blReturn; } $this->setGlobalResult(false); @@ -1909,14 +2350,15 @@ class requTests oxversion != 'basic' ORDER BY oxversion ASC LIMIT 1"; - $rResult = mysql_query($sSelect, $this->getDb()); - $aResult = mysql_fetch_assoc($rResult); + $rResult = mysqli_query($this->getDb(), $sSelect); + $oResult = mysqli_fetch_object($rResult); + $blResult = (bool)$oResult->result; - if (!(int)$aResult['result']) { + if (false == $blResult) { $this->setGlobalResult(false); } - return (int)$aResult['result']; + return $blResult; } $this->setGlobalResult(false); @@ -1938,17 +2380,16 @@ class requTests oxmodid = '" . $this->oConfig->sModId . "' ORDER BY oxversion ASC LIMIT 1"; - $rResult = mysql_query($sSelect, $this->getDb()); - $aResult = mysql_fetch_assoc($rResult); + $rResult = mysqli_query($this->getDb(), $sSelect); + $oResult = mysqli_fetch_object($rResult); - if (isset($aResult) - && is_array($aResult) - && count($aResult) - && isset($aResult['oxversion']) - && $aConfiguration['aParams']['checkVersion'] + if (isset($oResult) + && is_object($oResult) + && isset($oResult->oxversion) + && isset($aConfiguration['aParams']['checkVersion']) ) { $sInstalledVersion = $this->_getConvertedVersion( - $aResult['oxversion'], + $oResult->oxversion, $aConfiguration['aParams']['remainingDigits'] ); $sNewVersion = $this->_getConvertedVersion( @@ -1980,23 +2421,31 @@ class requTests /** * @return array */ - public function hasZendLoaderOptimizer() + public function hasZendLoaderOptimizer(&$aConfiguration, $blCheckBasePathOnly = false) { $aResult = array($this->getBasePath() => false); - if ((version_compare(phpversion(), '5.2.0', '>=') && - version_compare(phpversion(), '5.2.900', '<') && - function_exists('zend_optimizer_version') - ) || ( - version_compare(phpversion(), '5.3.0', '>=') && - version_compare(phpversion(), '5.6.900', '<') && - function_exists('zend_loader_version') - ) - ) { - $aResult[$this->getBasePath()] = true; + if ((version_compare(phpversion(), '5.2.0', '>=') + && version_compare(phpversion(), '5.2.900', '<') + && function_exists('zend_optimizer_version') + ) || ( + version_compare(phpversion(), '5.3.0', '>=') + && version_compare(phpversion(), '5.6.900', '<') + && function_exists('zend_loader_version') + )) { + if (function_exists('opcache_get_status') + && ($aOpCacheStatus = opcache_get_status()) + && $aOpCacheStatus['opcache_enabled'] + ) { + $aResult[$this->getBasePath()] = null; + } else { + $aResult[$this->getBasePath()] = true; + } } - $aResult = array_merge($aResult, $this->checkInSubDirs(__FUNCTION__)); + if ($blCheckBasePathOnly == false) { + $aResult = array_merge($aResult, $this->checkInSubDirs(__FUNCTION__)); + } return $aResult; } @@ -2004,7 +2453,7 @@ class requTests /** * @return array */ - public function hasIonCubeLoader() + public function hasIonCubeLoader(&$aConfiguration, $blCheckBasePathOnly = false) { $aResult = array($this->getBasePath() => false); @@ -2012,7 +2461,59 @@ class requTests $aResult[$this->getBasePath()] = true; } - $aResult = array_merge($aResult, $this->checkInSubDirs(__FUNCTION__)); + if ($blCheckBasePathOnly == false) { + $aResult = array_merge($aResult, $this->checkInSubDirs(__FUNCTION__)); + } + + return $aResult; + } + + /** + * @return array + */ + public function hasIonCubeOrZendLoader(&$aConfiguration) + { + $oLayout = $this->getBase()->oLayout; + + $aDecoderTexts = array(); + $aDecoderErrorTexts = array(); + foreach (array('hasZendLoaderOptimizer', 'hasIonCubeLoader') as $sDecoderCheck) { + $aReturn = call_user_func_array(array($this, $sDecoderCheck), array($aConfiguration, true)); + if ($aReturn[$this->getBasePath()]) { + $aDecoderTexts[$sDecoderCheck] = $oLayout->translate('availableDecoder_'.$sDecoderCheck); + } elseif ($aReturn[$this->getBasePath()] === null) { + $aDecoderErrorTexts[$sDecoderCheck] = $oLayout->translate('decoderIssue_'.$sDecoderCheck); + } else { + $aDecoderErrorTexts[$sDecoderCheck] = $oLayout->translate('notAvailableDecoder_'.$sDecoderCheck); + } + } + + $sDecoderText = count($aDecoderTexts) ? + sprintf($oLayout->translate('availableDecoder'), implode(' + ', $aDecoderTexts)) : + $oLayout->translate('noDecoderAvailable'); + $aConfiguration['aParams'][1] = $sDecoderText; + + $sDecoderErrorText = count($aDecoderErrorTexts) ? + '
      '.implode('', $aDecoderErrorTexts).'
    ' : + ''; + $aConfiguration['aParams'][2] = $sDecoderErrorText; + + $aZendLoaderResults = $this->hasZendLoaderOptimizer($aConfiguration); + $aIonCubeLoaderResults = $this->hasIonCubeLoader($aConfiguration); + + $aResult = array(); + foreach (array_keys($aZendLoaderResults) as $sPath) { + // transfer meta data + if (strstr($sPath, '@@')) { + $aResult[$sPath] = $aZendLoaderResults[$sPath]; + } elseif ($aIonCubeLoaderResults[$sPath] || $aZendLoaderResults[$sPath]) { + $aResult[$sPath] = true; + } elseif ($aIonCubeLoaderResults[$sPath] === null || $aZendLoaderResults[$sPath] === null) { + $aResult[$sPath] = null; + } else { + $aResult[$sPath] = false; + } + } return $aResult; } @@ -2056,9 +2557,10 @@ class requTransformation $sSelect = "SELECT oxversion as result ". "FROM d3_cfg_mod ". "WHERE oxmodid = 'd3modcfg_lib' LIMIT 1"; - $rResult = mysql_query($sSelect, $this->oCheck->getDb()); - if (is_resource($rResult)) { - $oResult = mysql_fetch_object($rResult); + $rResult = mysqli_query($this->oCheck->getDb(), $sSelect); + + if (is_object($rResult)) { + $oResult = mysqli_fetch_object($rResult); if ($oResult->result) { $sCheckVersion = $oResult->result; } diff --git a/setup+doku/changelog.txt b/setup+doku/changelog.txt index 10762bd..bd5fd6c 100644 --- a/setup+doku/changelog.txt +++ b/setup+doku/changelog.txt @@ -1,5 +1,11 @@ -=> 3.3.3.0 +=> 3.4.0.0 - Remarketing (via Analytics) eingefügt +- Remarketing-Liste für Startseite eingefügt +- Template-Blöcke eingefügt +- Titel der Konfigurationsseiten angepasst +- Staffelpreisübergaben korrigiert (#3679) +- Steuerberechnung korrigiert +- Scriptsyntax angepasst => 3.3.2.0 - fix: Optionen im Admin können nicht deaktivert werden