From 8c34b3a6201f1eea424e4465bf67b52d5a4bf1ac Mon Sep 17 00:00:00 2001 From: Paul Mehrer
G$BJH{p2r^Xs(-*;wf6IQ(|&t!YyGYV9u=^F%f19=&?V-@6QEAMcM?ZIF5 z%gkH6%T$N@7ds;&Pit`1IxM&C5-_rK`}{jxf!k!5PT*?s7tq9U)1nhs&V_p* zQ=@E~M_kdyd~FE??4%K1&t!eN$QP63eY3uiu729W4*fCT#c3i5`5uq(_6ph?v<*kc zZP|{c)i-8yY@{)cEZM3Wp3hzUd2CVIFwy=3A4Bj&xGrOqdtL#v`zULcc0|eOGeUO0 zCd+w>C8DRAQ_9`FjRE-!)@FWgz|+oRVI#xi9Qo 3j $PQ!f>HAPRIzpD%9(Qco&}0van?ozlqMiW& zC^+(u;%;G<#yWeRNN2d%kPMgrKYnwcU rrPgUU@; znR5v1cPSf?L`}-M2$Wpn(OY(-EyMYHGSMlec++wr6i?L>YU6t7;B2x- Ws34dsi8CkY34QVJKrs zoqCSnPvZVX-&?){_kN~o3n^NiN`s@ngg|_2+NR4Fz&`byvJUW!mJb*Sx7gW`azg`4 z>R$X3c1&0ETMw;oorsLldU?+_Ff>4`X__cr^@z#bsMc?#g{ity4pr+bAb&LU#wQL* z6fwFYjcgZqmJjsUJQufE4^^VJExcYX+Y5Wko_bo>1n5{pB_T>0E`Y4Q+1sTUPkBM{ z^s^Or_)td;*yrl#a4zE76r-~u tqc@gSxXKMkc{Lj@Wm>F?Y5oYkkR}t8;eD&KE#ay;Q@2tTkg4t;c zETM*P5uaN)?L!&x@jp8ARc~Cg%PYK3w}M~n;b8N#g4xZdcDwWks;FUZVg0q=@{jrN zOXG0QuiXGzGW;H?)f~cq&(>Ncy2yV|+0P6jSgUb4Fln7zV1nD;oJ)t8nP2oEOG4om zZt_%N5V&46q3#8B1)*M@FWTX~NqXiJT<>tHRVj!Dg2T`mw=Db#I2-d5E%t<#4JA!s zdjpU9vYZ&vQC$(9nKyc&`In-zKWi{5f@`l{EkH&Y=W>! DH#!{K>Qsx3i04CCwHGRq3loURxdYJUC@-PW!%jSt`cfA@x9&Lfb6<0C3{SioI z=3s$D6Bd8#wzCSL@rInbA?K{wxuq)`Um7l_!NxVy=&fWpZUVV=PR>j5-id6%H9h>* z=x~`>^ZJKGFIrLi@*Mh6W}NGGqst!lU2yEr_c8wN*1i;*%-ssff@tS4Xj$w)TEf!` zJ$>sJA?LfK!`B3bX6oy*y_*f5;GB1tM1_YZ8q+y1E~r>Df8TUkJA-F0P-a=`c49SO z$FKd!;&D~x`GgX@!OyncN9Sy|DPbBl7RQZy*mtRPecx@cSB*Wn4 z`fDqt4aw9G;~cdSEea9g{taq+Z%=I{_M9-3{3eN+-sBJc^6-n&lhY=ZMeG7<{;}s9 zrV`tV!SH MHwhI&6{y zmH_}j)IKHqie~-8B@*$RqS#*Z-+V;IzrL7yW+obJGRSbusKh{3*v$u4x|-B_-Q!bk zkcn+g55x|n1^3g_dduCg;qUBbUMQzJYmRXji(s)SwJ(ToF z* =)kQ1={O;WkT5zTFZapcpg$+q@k5|{^u!^^DZztC|7m0g zeeCEV&~2gvMBwjVg9r!=P6h%1AzrcpfuUaR0Wu-pUjMrR0vC*)hmFX`#rr$^R-ZLW zXMeAy`+>O*1=eCG+Hk=yA7uZt1UV0Z+Bg7!t3GZ>e;?lfSvMbl_y3pD^$*E{4}FdU e6Vtf_elO%t(ho1BjFXtm$xZa-1~W_je)BI@iLK=T delta 3250 zcmZ8jcRbYpA3yWXI2?BrXJn6ztO(_-=*Ub&5r?wJ+2gXmR)<4I<*e*=i0qM7Hf2** z;3w?9?#eF`F=gyMIuD#^pIraPyh%70wfrSYgh5n@{o}K zh_u0hKO-ELfg7Xi&>=zFxp@d}+fA3FG6QwGO`cPLy;PO;qA4q_<~WHgP1&6uoW`&F zURF}t#_dknR=$u!Xiqf+OW)F=b{!E}CzAPcTD*A (>IN4QcOoflKyxo)1h z)uOk&JQ(=JS~0S3(UF`jR{2Bhy|=?T5;-qh5Bc}Sqm?2otD&hpAI+L#whkIXuNvvR zyR~j#JnNQr_0V~BBPJtQ==&B0<3qz~zdiJrMzUy5t(-=A+qR1y5(ollRTQlO0DwRe z0N@NE>R%Ay`ssKv&eIaKP5UCWvoI~Xkvx?JE3 I^N!sRc#eS-3Fah=9rG_!+!geu`XJ8L+q+vGycf_?Gu7| zkNZiT)pyLh{fO>~ZhLFb-QIDNfKrFz;2<=+99gA!hEZU6aBdDb6>A1wx~4q9w(NBn z5cLMo^i5Kezo5k}htYY*r9d=QH*(F5lI^;a?!;k(m=KH6#g{5QiEn+s*^dufeujUX zBxVvAW3v8D+PBU>9<;!3*NrAEofDOH4eQ?O*Dd8bIh_g+)X>}p4LP0A9_i01{Tfmw z9rORmn@lN+@iL#TfY%Yi$v;QP=?o-E6HE+ql^@qakM|!7is%e;_{H~_?ymIrjV=() zk(;0{>QXCaI >XI1{RD?ni_-mN-NCEQu^E%0hHu%QnbCsl)us|QBBSG-Zo?- mh+F0kFihi3uH=# 5$Mh31?zHT9pGNMFvu~5 z=yZIao+rV47ZTZCh~v>~dY>I}bea9tv%UQM8D$}++^`Bh Qz95%*12|J znP+`rxH0s1q@Dqa@(Pu_%%x3BwZ5RnOf?+pN)+X=FdW?O>LK-2f_0vDL??Y@EzwgF ziAf~DSD!x5U33{9a@hea6IG^_x*a_R5M^+I%#r%qoR$3|lM~W2c0AMcraL}mhdYGq zZ+cV>f%M6KJaf2oQen)r^Ryg8;Cwm5*EvnXVlEYmrIfv!CbvdE-^_CUfg1{vr6#I1 zsngu7YEUa2^O7DM@<@^Qle;aNzqi399CQ;e{bc#+YZeF Cf1qNlw}8>&zl8uhzq>S+O!{Uf zM i%*Rss02BB1sKZwoE|4%M}?HI z^aoRQYz6SYJois4`Wp-nupR1*vRD?X#m{X7M!}wyrNDrOv?;cY_G|C~zY4m6M$}HD z;fS(5Jb4a<_rUnxvnH*<9{{)Rxe;5D%3}rfB-h^lXAlh@34@*IIHI}X^=P3Ru8Mio zhvo+>ts(FpmL1;HQy??}BSvR{raXtLX6}l3w2^DS&GbT2ASH+1q$vLxX$;=Y)YJ~i z&@PDx8EZaZQ@VRM@q_vst4xDn#V$AL2@D~e$$Cuk1f!g3v!3d3(@B9nH-Hdd!!~)P zKERPe*xsx>Duf(5%=GoaMtP+Fcj=+;uhKu7-ZpUXsdFx__396w9dZqUO*~p=A $# zCRE<#m*oNmY_(RCrC3|aP;PX!PLb&YXRyKj0MMm%vHf0M_e|{**9|5Xa>;0yQv6e9 zea7dGHg_bC;!JhB&Y8poH(aV9w%$68CukpW_Fz&^!eV`hG?J`a`;)2lf@MI**X(Rp zOI(MFlNa(Pjc;N@;o-DEE%AWvd%InrB6qVwbKw(iq-rOlI>*=trVcF|pMwLg-I0@o zBA)Br?ON7ox7mMesx&CvM3z2tffGkI-1F (aWLrFIKX zJi<`4Y_Rc`By@nH`s+rzqUZAK<>ZjBvCqrzkuKOy_tH_7OqRMsJ{k#edI;90${Xvr zX+J%n;&Bzu$)SE&D6@8P8*hBC%P)jJ zNv_y&6Q?ZWkS@a=vwojxYiC=8V>ZvkjWdQv7oF;Q1N67Hae^egnD7K$WQQ_C=Vnl} z4dfxB;Sw+*H8)a4H=8TEThg{0eIYGQVHBg;(vUI5mHm0Uzb|8c`dL7|6I)GJ>wsaF zxImP#W^(Q0Rh4T>1L9>hRwRTWpLUha_`Pby-ZXV}5x1--+;?qhZzCOp1)5c(pWWuX z6ECRhR7V3!dGgPQEQVhvQDiiPr&PFwTL@kBE_!B~+AdVg!^ )F^ z=WP~OX-k?q`b&A>T7U&g^6Pd(zRhXAj0H=EvEBZAqlB+^N%qjT(j!@~vSyfX!HdN} z=iELW&XYl);>@*8EEk*gAbq9`waGV20dZz8vg}QcD)rDW{DBrArgFWYA6wFRC*G6t z^d0Q@znA&7C2{o-K8%h7=_Q7U&68-paRS?VRuZ8&QUzP8=P&k9vc9b!C^fv=vWcou zzkyKy!l&BPxG9wuTqwXc4s%c@v|Y9`0;`kU16m(vLtLuzckXF-h5EgWQ>OUjXRnrF z5D=e;rn#vP 3kaVq*Vg>B^GP(}umUTgF3n z*t2*{mkps<1%$1vO6P=WDdV`n_}o!;vcG{bQGRSn^YT-!rFmYaU8pK=;q9c5V)s?k z*Akg#V8<%=i-lgYHYnXz)JJJKDKY+zh-AvXSB~rq1Cf}^SBiCco$HUyuaSveQ!%k! z#q_1NMfSwhW3(ZN^Y$c+Ec4xOg#N{D2{|d?9Y*~}nS$nMG>P}o%iKXnSWo;d(2C53 z^2FlH3q$@E-T0K_6jlt$84-EYa3Kn($c~Yp5s`!x3iyR@c)E1@#;J=OIQ1tqr{|xa zg}aTThd8bP3i-K-nxL$t0wlOe=moAb1OB@OW%%P}0V&QD#_=QRcLxOdBWZ*T#|q>8 zSy_>Zl@v#j0Eff=?(oNs#6h4il2V)il*8=o$KLz;w^&c5r2z*3z<<>IbSgF nD~G6{5v0^e _extendTwigSetup(); - $this->_twigTemplate = $this->_twig->load($this->_templateFileName); + try { + $this->_twigTemplate = $this->_twig->load($this->_templateFileName); + } catch (Twig_Error $e) { + throw new Tinebase_Exception_Backend('twig error: ' . $e->getMessage() . ' for twig source: ' . + $this->_getTwigSource()); + } } protected function _extendTwigSetup() diff --git a/tine20/Tinebase/Export/Xls.php b/tine20/Tinebase/Export/Xls.php index bb892668bcd..bfc420aee4c 100644 --- a/tine20/Tinebase/Export/Xls.php +++ b/tine20/Tinebase/Export/Xls.php @@ -405,10 +405,12 @@ public function _getTwigSource() /** @var Cell $cell */ foreach($cellIter as $cell) { if (false !== strpos($cell->getValue(), '${twig:') && - preg_match_all('/\${twig:([^}]+?)}/s', $cell->getValue(), $matches, PREG_SET_ORDER)) { + preg_match_all('/(\${twig:(.+?[^}%])})([^}]|$)/s', $cell->getValue(), $matches, PREG_SET_ORDER)) { foreach($matches as $match) { - $this->_twigMapping[$i] = $match[0]; - $source .= ($i === 0 ? '' : ',') . '{{' . $match[1] . '}}'; + $this->_twigMapping[$i] = $match[1]; + $source .= ($i === 0 ? '' : ',') . + (strpos($match[2], '{{') !== false || strpos($match[2], '{%') !== false ? $match[2] + : '{{' . $match[2] . '}}'); ++$i; } } @@ -418,11 +420,13 @@ public function _getTwigSource() foreach($this->_spreadsheet->getActiveSheet()->getDrawingCollection() as $drawing) { $desc = $drawing->getDescription(); if (false !== strpos($desc, '${twig:') && - preg_match_all('/\${twig:([^}]+?)}/s', $desc, $matches, PREG_SET_ORDER) + preg_match_all('/(\${twig:(.+?[^}%])})([^}]|$)/s', $desc, $matches, PREG_SET_ORDER) ) { foreach ($matches as $match) { - $this->_twigMapping[$i] = $match[0]; - $source .= ($i === 0 ? '' : ',') . '{{' . $match[1] . '}}'; + $this->_twigMapping[$i] = $match[1]; + $source .= ($i === 0 ? '' : ',') . + (strpos($match[2], '{{') !== false || strpos($match[2], '{%') !== false ? $match[2] + : '{{' . $match[2] . '}}'); ++$i; } } @@ -702,4 +706,4 @@ function convert($to, $from = null) return null; } } -} \ No newline at end of file +}