Major revamps to the template parser. Fixed a few security holes that could allow PHP to be injected in untimely places in TPL code. Improved Ux for XSS attempt in tplWikiFormat. Documented many functions. Backported much cleaner parser from 2.0 branch. Beautified a lot of code in the depths of the template class. Pretty much a small-scale Extreme Makeover.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48px"
height="48px"
id="svg4376"
sodipodi:version="0.32"
inkscape:version="0.43+devel"
sodipodi:docbase="/home/tigert/cvs/freedesktop.org/tango-icon-theme/scalable/emotes"
sodipodi:docname="face-smile-big.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape">
<defs
id="defs3">
<linearGradient
id="linearGradient3290">
<stop
style="stop-color:#fffcde;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3292" />
<stop
id="stop3294"
offset="0.64485979"
style="stop-color:#f6e76a;stop-opacity:1.0000000;" />
<stop
style="stop-color:#ffb738;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3296" />
</linearGradient>
<linearGradient
id="linearGradient3068">
<stop
style="stop-color:#696969;stop-opacity:1;"
offset="0"
id="stop3070" />
<stop
id="stop3076"
offset="0.34579438"
style="stop-color:#ffffff;stop-opacity:1.0000000;" />
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.72486681"
id="stop3078" />
<stop
style="stop-color:#5c5c5c;stop-opacity:1;"
offset="1"
id="stop3072" />
</linearGradient>
<linearGradient
id="linearGradient3050">
<stop
style="stop-color:#a40000;stop-opacity:1;"
offset="0"
id="stop3052" />
<stop
style="stop-color:#ec0000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3054" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient4565">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop4567" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop4569" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4565"
id="radialGradient1360"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.000000,0.000000,0.000000,0.333333,0.000000,25.71429)"
cx="24.714285"
cy="38.571430"
fx="24.714285"
fy="38.571430"
r="19.714285" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3290"
id="radialGradient1362"
gradientUnits="userSpaceOnUse"
cx="29.288071"
cy="15.720984"
fx="29.158466"
fy="15.755712"
r="8.9020796" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3068"
id="linearGradient1372"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.900635,0,0,0.512797,2.616633,10.42827)"
x1="11.250000"
y1="26.093750"
x2="36.875000"
y2="26.093750" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3050"
id="linearGradient1375"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.900634,0,0,0.512797,2.420862,9.703722)"
x1="23.031250"
y1="24.312500"
x2="23.031250"
y2="36.249878" />
</defs>
<sodipodi:namedview
fill="#a40000"
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="0.19607843"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.6568542"
inkscape:cx="39.083834"
inkscape:cy="29.929519"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:showpageshadow="false"
inkscape:window-width="872"
inkscape:window-height="767"
inkscape:window-x="234"
inkscape:window-y="186"
stroke="#a40000" />
<metadata
id="metadata4">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title>Face - Laughing</dc:title>
<dc:subject>
<rdf:Bag>
<rdf:li>emoticon</rdf:li>
<rdf:li>emote</rdf:li>
<rdf:li>smiley</rdf:li>
<rdf:li>laughing</rdf:li>
<rdf:li>:-D</rdf:li>
<rdf:li>:D</rdf:li>
</rdf:Bag>
</dc:subject>
<cc:license
rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
<dc:creator>
<cc:Agent>
<dc:title>Jakub Steiner</dc:title>
</cc:Agent>
</dc:creator>
<dc:source>http://jimmac.musichall.cz</dc:source>
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
<cc:permits
rdf:resource="http://web.resource.org/cc/Reproduction" />
<cc:permits
rdf:resource="http://web.resource.org/cc/Distribution" />
<cc:requires
rdf:resource="http://web.resource.org/cc/Notice" />
<cc:requires
rdf:resource="http://web.resource.org/cc/Attribution" />
<cc:permits
rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
<cc:requires
rdf:resource="http://web.resource.org/cc/ShareAlike" />
</cc:License>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<path
sodipodi:type="arc"
style="opacity:0.53164560;color:#000000;fill:url(#radialGradient1360);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.40487173;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
id="path4563"
sodipodi:cx="24.714285"
sodipodi:cy="38.571430"
sodipodi:rx="19.714285"
sodipodi:ry="6.5714288"
d="M 44.428570 38.571430 A 19.714285 6.5714288 0 1 1 5.0000000,38.571430 A 19.714285 6.5714288 0 1 1 44.428570 38.571430 z" />
<path
sodipodi:type="arc"
style="opacity:1.0000000;color:#000000;fill:url(#radialGradient1362);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#9c8c0a;stroke-width:0.48004404;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
id="path4320"
sodipodi:cx="31.112698"
sodipodi:cy="19.008621"
sodipodi:rx="8.6620579"
sodipodi:ry="8.6620579"
d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z"
transform="matrix(2.083142,0.000000,0.000000,2.083142,-40.54715,-16.49224)" />
<path
d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z"
sodipodi:ry="8.6620579"
sodipodi:rx="8.6620579"
sodipodi:cy="19.008621"
sodipodi:cx="31.112698"
id="path4322"
style="opacity:0.67721522;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.50510627;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
sodipodi:type="arc"
transform="matrix(1.979782,0.000000,0.000000,1.979782,-37.33128,-14.52746)" />
<path
style="opacity:1;color:#000000;fill:url(#linearGradient1375);fill-opacity:1;fill-rule:nonzero;stroke:#a40000;stroke-width:0.99999988;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
d="M 12.46856,21.582101 C 9.8316492,20.960126 14.333556,28.420831 24.261236,28.420831 C 34.091034,28.420831 38.930429,20.977414 36.053912,21.582101 C 28.547558,23.160051 18.888402,23.096367 12.46856,21.582101 z "
id="path2756"
sodipodi:nodetypes="czss" />
<path
style="opacity:1;color:#000000;fill:url(#linearGradient1372);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
d="M 13.536826,24.177654 L 35.068859,24.117737 C 35.851954,23.198123 36.967052,21.745691 36.121189,21.874738 C 28.097871,23.098802 19.550104,23.670967 12.259336,21.774407 C 11.09799,21.472303 12.411126,23.397376 13.536826,24.177654 z "
id="path3058"
sodipodi:nodetypes="ccssc" />
<path
sodipodi:type="arc"
style="fill:none;fill-opacity:1.0000000;stroke:#555753;stroke-width:1.0000000;stroke-linecap:butt;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
id="path1364"
sodipodi:cx="-3.8125000"
sodipodi:cy="1.8750000"
sodipodi:rx="2.9375000"
sodipodi:ry="2.8750000"
d="M -0.87500000,1.8750000 A 2.9375000,2.8750000 0 0 1 -6.3564497,3.3124999"
sodipodi:start="0.0000000"
sodipodi:end="2.6179939"
sodipodi:open="true"
transform="matrix(-0.965926,-0.258819,0.258819,-0.965926,24.53442,17.20131)" />
<path
transform="matrix(-0.965926,-0.258819,0.258819,-0.965926,15.78442,17.20131)"
sodipodi:open="true"
sodipodi:end="2.6179939"
sodipodi:start="0.0000000"
d="M -0.87500000,1.8750000 A 2.9375000,2.8750000 0 0 1 -6.3564497,3.3124999"
sodipodi:ry="2.8750000"
sodipodi:rx="2.9375000"
sodipodi:cy="1.8750000"
sodipodi:cx="-3.8125000"
id="path2094"
style="fill:none;fill-opacity:1.0000000;stroke:#555753;stroke-width:1.0000000;stroke-linecap:butt;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
sodipodi:type="arc" />
</g>
</svg>