<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <title>PHPTAL news</title>
  <link href="http://phptal.org/" type="text/html"  />
  <link rel="self" href="http://phptal.org/feed.xml"/>
  <id>http://phptal.motion-twin.com/feed.xml</id>
  <icon>http://phptal.org/favicon.ico</icon>
  <logo>http://phptal.org/gfx/logo.png</logo>
  <updated>2009-07-11T02:33:00Z</updated>
	
	<entry>
		<title>PHPTAL 1.2.1 released</title>
		<updated>2009-11-25T15:00:00Z</updated>
		<id>http://phptal.motion-twin.com/atom/2009-11-25T15:00:00Z</id>
		<link rel="alternate" type="text/html" href="http://phptal.org/#release1.2.1"/>
		<link rel="alternate" type="application/gzip" href="http://phptal.org/files/PHPTAL-1.2.1.tar.gz"/>
		<content type="xhtml">
			<div xmlns="http://www.w3.org/1999/xhtml">
      <ul>
        	<li><p>New <a href="/manual/en/split/add-prefilter.html"><code>addPreFilter()</code></a> method and <a href="/manual/en/split/prefilters.html"><code>PHPTAL_PreFilter</code></a> base class for filters.</p>

        	<ul>
          		<li>You can add multiple prefilters.</li>

          		<li>Prefilters are now able to filter PHPTAL's DOM nodes in addition to just source code. This makes it much easier to implement very reliable and precise filters.</li>

        		<li><code>PHPTAL->stripComments()</code> has been implemented as a prefilter. It's smarter now – won't remove contents of comments in <code>&lt;script&gt;</code>.</li>

                <li>Added normalize space prefilter. It replaces all runs of whitespace (including newlines) with single spaces and trims attributes. It skips <code>&lt;pre></code> and supports <code>xml:space="preserve"</code>.</li>
            </ul>
            <p>Old <code>setPreFilter()</code> still works, but hasn't gained any new features.</p>
        </li>
        <li>Added methods needed to edit DOM nodes.</li>
        <li><a href="/manual/en/split/echo-execute.html"><code>echoExecute()</code></a> method for outputting result without buffering.</li>
        <li><code>metal:define-slot</code> uses lazy callbacks to avoid buffering.</li>
        <li>Added workaround for <code>&lt;?xml-stylesheet?&gt;</code> used with PHP short tags (<code>&lt;?</code>) enabled.</li>
        <li>Fixed reading of properties with same name as protected method.</li>
        <li>Fixed bug that caused newlines after PHP blocks to be lost (reported by Richard Cernava).</li>
        <li>Subclass of PHPTAL is preserved when calling external macros (based on patch sent by Jennifer Hulley-Miller).</li>
        <li>Fixed problem of DOCTYPE being written multiple times if template is reexecuted (reported by Murat Çorlu).</li>
        <li>Allowed digits in names of expression modifiers.</li>
        <li>Forbidden empty namespace URI in custom attribute handlers (fixes problem reported by Jacek Karczmarczyk).</li>
        <li>Fixed forging of line numbers in exceptions for compatibility with XDebug (suggested by Iván -DrSlump- Montes).</li>
        </ul>
				</div>
			</content>
			<author>
				<name>Kornel Lesinski</name>
				<email>k<!--x
			-->&#x6F;r&#110;&#x65;&#x6c;&#64;&#x61;<![CDATA[a]]>&#114;d&#x76;a&#x72;k&#x6d;&#101;dia&#x2E;co&#x2e;uk</email>
			</author>
		</entry>
		
	<entry>
		<title>PHPTAL 1.2.0 released (finally!)</title>
		<updated>2009-07-11T02:33:00Z</updated>
		<id>http://phptal.motion-twin.com/atom/2009-07-11T02:33:00Z</id>
		<link rel="alternate" type="text/html" href="http://phptal.org/#1.2.0"/>
		<link rel="alternate" type="application/gzip" href="http://phptal.org/files/PHPTAL-1.2.0.tar.gz"/>
		<content type="xhtml">
			<div xmlns="http://www.w3.org/1999/xhtml">
				<h3>Major changes since 1.1.<var>x</var>:</h3>
        <ul>
            <li>PHPTAL's code has been refactored, reorganized, bugfixed, prettified and commented.</li>	            
            <li>HTML5 output mode is now available if you need better compatibility with non-XHTML browsers. You can generate both HTML5 and XHTML from same templates just by <a href="/manual/en/split/set-output-mode.html">switching output mode</a>.</li>
            <li>XML parser improvements: stricter syntax and encoding checks, better handling of namespaces and entities.</li>
            <li><code>&lt;![CDATA[</code> blocks are added automatically where needed for compatibility with <code>text/html</code> and escaping is CDATA-aware.</li>
        </ul>
            
        <h3>Changes since alpha:</h3>
        <ul>	            
            <li>In HTML5 output mode <code>DOCTYPE</code> is automatically changed to <code>&lt;!DOCTYPE html></code> and namespace declarations/prefixes are omitted.</li>
            <li>Better support for SimpleXML objects.</li>
        </ul>
        
        <h3>Upgrading:</h3>
        <p><a href="http://phptal.org/#phptal120alpha">Instructions for alpha version</a> still apply.</p>
			</div>
		</content>
		<author>
			<name>Kornel Lesinski</name>
			<email>k<!--x
		-->&#x6F;r&#110;&#x65;&#x6c;&#64;&#x61;<![CDATA[a]]>&#114;d&#x76;a&#x72;k&#x6d;&#101;dia&#x2E;co&#x2e;uk</email>
		</author>
	</entry>
	
	<entry>
		<title>Refreshed website looks</title>
		<updated>2009-06-08T14:23:00Z</updated>
		<id>http://phptal.org/atom/2009-06-08T14:23:00Z</id>
		<link rel="alternate" type="text/html" href="http://phptal.org/#newwebsite"/>
		<author><name>Kornel Lesinski</name><email>k<!--x
		-->&#x6F;r&#110;&#x65;&#x6c;&#64;&#x61;<![CDATA[a]]>&#114;d&#x76;a&#x72;k&#x6d;&#101;dia&#x2E;co&#x2e;uk</email></author>
		<content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
			<p>New look, bigger text, wider columns, better typography, syntax coloring. Please send complaints/compliments <a href="/contact.html">to the mailing list</a>.</p>	  
		</div></content>
	</entry>
	<entry>
		<title>PHPTAL has a new home: phptal.org</title>
		<updated>2009-04-24T11:23:00Z</updated>
		<id>http://phptal.org/atom/2009-04-24T11:23:00Z</id>
		<link rel="alternate" type="text/html" href="http://phptal.org/"/>
		<author><name>Kornel Lesinski</name><email>k<!--x
		-->&#x6F;r&#110;&#x65;&#x6c;&#64;&#x61;<![CDATA[a]]>&#114;d&#x76;a&#x72;k&#x6d;&#101;dia&#x2E;co&#x2e;uk</email></author>
		<content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
			
   	        <p>A big thanks goes to Levi Stanley from <a href="http://www.eneservices.com/">ENE Services LLC</a> who has donated <a href="http://phptal.org">phptal.org</a> domain to the project!</p>
  	        
		</div></content>
	</entry>


  <h2>PHPTAL has a new home: phptal.org</h2>	    
  <div class="date">2009-04-24</div>
  <p>A big thanks goes to Levi Stanley from <a href="http://www.eneservices.com/">ENE Services LLC</a> who has donated <a href="http://phptal.org">phptal.org</a> domain to the project!</p>

	<entry>
		<title>Fresh PHPTAL 1.2.0 alpha package</title>
		<updated>2009-04-20T16:33:00Z</updated>
		<id>http://phptal.motion-twin.com/atom/2009-04-20T16:33:00Z</id>
		<link rel="alternate" type="text/html" href="http://phptal.org/#1.2.0a9"/>
		<link rel="alternate" type="application/gzip" href="http://phptal.org/files/PHPTAL-1.2.0a9.tar.gz"/>
		<content type="xhtml">
			<div xmlns="http://www.w3.org/1999/xhtml">
				<p>
	        		<a href="http://phptal.org/files/PHPTAL-1.2.0a9.tar.gz">Fresh alpha package</a>. Changes since last one:
	        	</p>
	        	<ul>
	        		<li>
	        			<p><code>PHPTAL_DIR</code> is gone. PHPTAL now temporarily modifies <code>include_path</code>.</p>
	        			<p><em>If</em> you have PEAR version of PHPTAL installed <em>and</em> you want to use another, incompatible version <em>and</em> you need to include files from PHPTAL's directory, you'll need to modify <code>include_path</code> to point to your preferred version first. There are helper methods <code>PHPTAL::setIncludePath()</code> and <code>
	        PHPTAL::restoreIncludePath()</code> to handle this easily.</p>
	        		</li>
	        		<li><p>DOM-related classes and methods renamed once again.</p></li>
	        		<li><p>Re-added few basic methods and properties for compatibility with custom attributes written for older PHPTAL versions.</p></li>
	        		<li><p><code>GetTextTranslator</code> sets locale's <code>LC_MESSAGES</code> only when <code>LC_ALL</code> doesn't work. This way you don't need full locale installed on the system to use <code>gettext()</code> (you should, however). <code>setLanguage()</code> now returns language that has been set.</p></li>
	        		<li><p>XML namespace of <code>phptal:*</code> attributes has changed from <code>http://xml.zope.org/namespaces/phptal</code> to <code>http://phptal.org/ns/phptal</code>.</p></li>
	        		<li><p><code>&amp;apos</code> entity is better supported.</p></li>
	        		<li><p>Lots, lots of code formatting changes and doc comments for conformance with PEAR coding standards.</p></li>
	        		<li><p>Fixed variable redefinition bug reported by Ciprian Vieru.</p></li>
	        		<li><p>Fixed parsing of code with class constants and dynamic property names in <code>php:</code> expressions (bug reported by Bobby).</p></li>
	        	</ul>
			</div>
		</content>
		<author>
			<name>Kornel Lesinski</name>
			<email>k<!--x
		-->&#x6F;r&#110;&#x65;&#x6c;&#64;&#x61;<![CDATA[a]]>&#114;d&#x76;a&#x72;k&#x6d;&#101;dia&#x2E;co&#x2e;uk</email>
		</author>
	</entry>
  <entry>
         <title>PHPTAL 1.2.0 alpha available for testing</title>
         <updated>2009-03-30T22:00:00Z</updated><id>http://phptal.motion-twin.com/atom/2009-03-30T22:00:00Z</id>
         <link rel="alternate" type="text/html" href="http://phptal.org/#1.2.0"/>
         <link rel="alternate" type="application/gzip" href="http://phptal.org/files/PHPTAL-1.2.0a9.tar.gz"/>
         <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
           <p>This is <a href="/files/PHPTAL-1.2.0a9.tar.gz">alpha release</a> (don't use it on live sites!). It includes long overdue fixes to XML parser and PHPTAL's internals 
which may require some cosmetic changes to templates. Please test it and <a href="/contact.html">report problems and bugs you find</a>.</p>
           <h3>
             Upgrading
           </h3>
           <p>The biggest difference is in handling of entities. Entities are now unescaped before passing to expressions, i.e. <code>${php:strlen('&amp;quot;')}</code> “sees” just the quote character and returns <code>1</code>. In previous versions entities were passed as-is to the expressions (and that example would return <code>6</code>).</p>
           <ul>
             <li>
               <p>Newly added unescaping of entities can expose encoding bugs. Make sure your pages declare document encoding:</p>
               <ul>
                 <li>For XHTML it's best to send <code class="short">Content-Type:application/xhtml+xml<strong>;charset=UTF-8</strong></code> or <code class="short">Content-Type:text/html<strong>;charset=UTF-8</strong></code> HTTP headers (<a href="http://keystonewebsites.com/articles/mime_type.php">here's how</a>.)</li><li>Don't use <code>text/xml</code> MIME type, use <code>application/xml</code> instead.</li><li>In HTML add appropriate <code>&lt;meta&gt;</code> tag or send <code class="short">Content-Type:text/html<strong>;charset=UTF-8</strong></code> <a href="http://php.net/header">HTTP header</a>.</li>
               </ul></li><li>
               <p>If you're not using UTF-8 encoding, you <strong>must</strong> set encoding you use via <code class="short">PHPTAL-&gt;setEncoding('ISO-8859-…')</code> (or just switch to UTF-8 already! :)</p>
               <p>Only <a href="http://php.net/html_entity_decode">some</a> 8-bit-based encodings are supported. If your encoding is not supported, you may get away with setting ISO-8859-1 instead.</p></li><li>
               <p>All constants except <code>PHPTAL_DIR</code> and <code>PHPTAL_VERSION</code> have been removed. Remove any PHPTAL-specific <code>define()</code>s and use class methods for configuration (e.g. <code class="short">PHPTAL-&gt;setPhpCodeDestination('/tmp/phptal/')</code> for custom temp directory.)</p></li><li>
               <p>Don't include any PHPTAL's files before including <code>PHPTAL.php</code>. Please report any include-related problems you get (e.g. chicken-egg problems when extending PHPTAL's classes, class not found errors, etc.)</p></li>
           </ul>
           <h3>
             Improvements
           </h3>
           <ul>
             <li>
               <p>Fixed many quirks related to handling of entities in TALES expressions.</p></li><li>
               <p>Fixed escaping in CDATA sections: special characters won't be changed to entities, <code>&lt;/</code> and <code>]]&gt;</code> will be escaped appropriately for output mode used.</p></li><li>
               <p>Improved XML namespace support. PHPTAL now rejects invalid prefixes and uses namespace URIs internally.</p></li><li>
               <p>Comments are required to be well-formed (<code class="short">--</code> is not allowed in comments.)</p></li><li>
               <p>HTML5 output mode. There's a bit of controversy around HTML5, so let me be clear: this doesn't allow “tagsoup”. PHPTAL still requires templates to be well-formed XML, and the output aims to be clean and conforming HTML5 <code>text/html</code> syntax.</p><p>HTML5 output mode is optional and enabled by <code class="short">PHPTAL-&gt;setOutputMode(PHPTAL::HTML5)</code>. The default output mode is compatible with XHTML/1.x and XHTML5.</p></li><li>
               <p>Ability to add source resolvers. You can easily implement a fake filesystem that e.g. reads templates from the database. This is better than simply using <code class="short">PHPTAL->setSource()</code>, because it allows external macros to work.</p></li><li>
               <p>Comments starting with <code class="short">&lt;!--!</code> are stripped from output.</p></li><li>
               <h4>Better error messages:</h4>
               <ul>
                 <li>When document ends prematurely, PHPTAL reports all elements that weren't closed.</li><li>Exceptions thrown when parsing templates have more accurate file and line (thanks to Wallace McGee for reporting this.)</li><li>Reworded errors about missing variables in TALES expressions.</li>
               </ul></li><li>
               <h4>Small bugs:</h4>
               <ul>
                 <li>
                   <code>${}</code> behaves more like <code>tal:content=""</code>.</li><li>
                   <code>tal:repeat</code> doesn't “leak” variables to outer scope (bug reported by Richard Cernava.)</li><li>Template cache properly supports change of output mode.</li>
               </ul></li><li>
               <h4>Performance improvements:</h4>
               <ul>
                 <li>Avoid needless reparsing. If <code>setForceReparse(true)</code> is set, templates are not even saved to disk. Test suite now runs 5-10× faster!</li><li>Removed redundant includes and require_once. <a href="/PHPTAL-includes-1.1.svg">Before</a> and <a href="/PHPTAL-includes-1.2.svg">after</a>.</li><li>Some constants are escaped at compile time.</li>
               </ul></li><li>
               <h4>Internal changes:</h4>
               <ul>
                 <li>Separated parser from document builder (this will enable custom parsers in the future.)</li><li>Removed redundant DOM classes.</li><li>Renamed many DOM classes and methods to use W3C's terminology and be more consistent across PHPTAL's codebase.</li><li>Much cleaner code for handling of DOM attributes.</li>
               </ul></li>
           </ul>
         </div></content>
      <author><name>Kornel Lesinski</name><email>kornel&#x40;aardvarkmedia.co.uk</email></author>
  </entry>       
  <entry>
      <title>Japanese Translation of the Manual</title>
      <updated>2009-03-02T10:00:00Z</updated><id>http://phptal.motion-twin.com/atom/2009-03-02T10:00:00Z</id>      
      <link rel="alternate" href="http://phptal.org/manual/ja/"/>
      <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://labs.wardish.jp/archives/11.html">Tetsuya Mito</a> has kindly provided <a href="http://phptal.org/manual/ja/">Japanese translation of the PHPTAL manual</a>.</div></content>
      <author><name>Kornel Lesinski</name><email>kornel&#x40;aardvarkmedia.co.uk</email></author>
  </entry>
  <entry>
        <title>PHPTAL 1.1.16 Released</title>
        <updated>2009-02-24T00:40:00Z</updated><id>http://phptal.motion-twin.com/atom/2009-02-24T00:40:00Z</id>      
        <link rel="alternate" type="text/html" href="http://phptal.org/#1.1.16"/>
        <link rel="alternate" type="application/gzip" href="http://phptal.org/files/PHPTAL-1.1.16.tar.gz"/>
        <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
          <p><code>$gotchas--;</code></p>
          	<ul>
          	  <li>Now templates are reparsed when prefilters are added/removed (when developing a prefilter, you may still need <code><a href="/manual/en/split/ar06s02.html">PHPTAL::setForceReparse()</a></code> to temporarily disable caching.)</li>
          	  <li>No need to include <code>Filter.php</code> before using filters.</li>
          	  <li>Calls to non-existant macros fail gracefully with exception, rather than PHP Fatal Error.</li>
          	  <li>Fixed bug which caused dynamic macro calls from inside macros that were called from another file, to fail.</li>
          	  <li>Added various subclasses of <code>PHPTAL_Exception</code>.</li>
          	</ul>
        </div></content>
        <author><name>Kornel Lesinski</name><email>kornel&#x40;aardvarkmedia.co.uk</email></author>
  </entry>
  <entry>
        <title>PHPTAL 1.1.15 Released</title>
        <updated>2009-01-17T22:00:01Z</updated><id>http://phptal.motion-twin.com/atom/2008-10-21T11:00:02Z</id>      
        <link rel="alternate" type="text/html" href="http://phptal.org/#1.1.15"/>
        <link rel="alternate" type="application/gzip" href="http://phptal.org/files/PHPTAL-1.1.15.tar.gz"/>
        <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">                        
          	<p>This release improves speed and reliability of PHPTAL. Most notably:</p>
          	<ul>
              <li><code>NULL</code> value of attribute added via <code>tal:attributes</code> now omits entire attribute in most cases (no more <code>class=""</code>!)</li>
              <li>Iteration via <code>tal:repeat</code> uses <code>Iterator</code> class exactly the same way <code>foreach()</code> (fixes problem reported by Stas Dovgodko)</li>
              <li><code>repeat/…/length</code> is read lazily,</li>
              <li>allow '<code>-</code>' in external and dynamic macro names (bug spotted by Anton),</li>
              <li><code>tal:omit-tag</code> executes condition only once,</li>
              <li>improvements in parsing of <code>${…}</code> syntax.</li>
              </ul>
            </div>            
        </content>
        <author><name>Kornel Lesinski</name><email>kornel&#x40;aardvarkmedia.co.uk</email></author>
  </entry>
      
  <entry>
        <title>Useful resources</title>
        <updated>2009-01-12T22:00:00Z</updated><id>http://phptal.motion-twin.com/atom/2008-10-21T11:00:01Z</id>      
        <link rel="alternate" type="text/html" href="http://phptal.org/#tutorial"/>
        <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://taat.pl">Tomek Pęszor</a> wrote nice <a href="http://taat.pl/article/zend_framework_tutorial/">tutorial on integration of PHPTAL with the Zend Framework</a> and started <a href="http://taat.pl/phptal_filter_library/">repository of PHPTAL filters</a>.</p></div>            
        </content>
        <author><name>Kornel Lesinski</name><email>kornel&#x40;aardvarkmedia.co.uk</email></author>
  </entry>
  <entry>
        <title>PHPTAL 1.1.14 Released</title>
        <updated>2008-11-01T22:00:00Z</updated><id>http://phptal.motion-twin.com/atom/2008-10-21T11:00:00Z</id>      
        <link rel="alternate" type="text/html" href="http://phptal.org/#1.1.14"/>
        <link rel="alternate" type="application/gzip" href="http://phptal.org/files/PHPTAL-1.1.14.tar.gz"/>
        <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">            
            <ul>
        	    <li>fixed: non-ASCII characters in translation keys aren't canonicalized by default. <code>setCanonicalize(true)</code> method of <code>PHPTAL_GetTextTranslator</code> enables old behaviour.</li>
        	    <li>added: <code>PHPTAL_TranslationService</code> now requires implementation of <code>setEncoding()</code> method. See <a href="manual/en/split/ar06s06.html#i18n-setencoding">manual</a>.</li>
    	        <li>added: support for <code>structure</code> keyword in <code>i18n:translate</code>, which disables escaping of XML entities, allowing use of <a href="manual/en/split/ar05s04.html#xhtml-in-translations">XHTML in translation strings</a>.</li>
    	        <li>added: objects that implement <code>__call</code> can now throw <code>BadMethodCallException</code> when they don't handle called method, allowing PHPTAL to handle this gracefully.</li>
    	        <li>fixed: partially removed support for old <code>tal:define</code> “feature” that caused empty elements to be omitted.</li>
    	        <li>fixed: bug in cache purging code caused up-to-date templates to be needlessly reparsed.</li>
    	        <li>Improved speed of macro calls across templates.</li>
            </ul></div>            
        </content>
        <author><name>Kornel Lesinski</name><email>kornel&#x40;aardvarkmedia.co.uk</email></author>
  </entry>
  <entry>
      <title xml:lang="de">Deutsche Übersetzung des Handbuchs</title>
      <updated>2008-10-15T14:00:00Z</updated><id>http://phptal.motion-twin.com/atom/2008-10-15T14:00:00Z</id>      
      <link rel="alternate" href="http://phptal.org/manual/de/split/"/>
      <content type="text" xml:lang="en">Axel Zöllich is working on German translation of the manual.</content>
      <author><name>Kornel Lesinski</name><email>kornel&#x40;aardvarkmedia.co.uk</email></author>
  </entry>
  <entry>
    <title>PHPTAL presentation</title>
    <updated>2008-08-20T02:00:00Z</updated><id>http://phptal.motion-twin.com/atom/2008-08-20T02:00:00Z</id>
    <link rel="alternate" type="application/pdf" href="/webstandards2008/PHPTAL.pdf" />
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
    <p>During August <a href="http://webstandards.meetup.com/130/">London Web Standards Meetup</a> I've given presentation about PHPTAL.</p>
    <p>The presentation is available for download in <a href="/webstandards2008/PHPTAL.key.zip">Apple Keynote</a> and <a href="/webstandards2008/PHPTAL.pdf">PDF</a> formats.</p>
    </div></content>
      <author><name>Kornel Lesinski</name><email>kornel&#x40;aardvarkmedia.co.uk</email></author>
    </entry>
     <entry>
       <title>PHPTAL 1.1.13 released</title>
       <link href="http://phptal.org" />
       <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"> <ul>
                 <li>New template cleanup routines based on patch by Sergio Chersovani. PHPTAL will now clean up all old template files and will recompile templates also when their timestamp changes to an older one.</li>
                 <li>Added support for PHP constants in TALES.</li>
                 <li>Improved parsing of XML with syntax errors after root node. If you start getting errors about text after root node, wrap your templates in a <code>&lt;tal:block&gt;</code> element.</li>
                 <li>Improved parsing of semicolons in PHP strings, <code>tal:attributes</code> and <code>tal:define</code>.</li>
                 <li>Fixed parsing of backslash escapes in TALES strings (bug reported by Josh Duck)</li>
                 <li>New configuration methods now work properly with external macros (bug reported by Philip Reichenberger)</li>
                 <li>Added workaround for protected <code>__isset</code>/<code>__get</code> (problem reported by Anru Chen)</li>
             </ul></div></content>
       <author><name>Kornel Lesinski</name><email>kornel&#x40;aardvarkmedia.co.uk</email></author>
       <updated>2008-07-27T12:00:00Z</updated><id>http://phptal.motion-twin.com/atom/2008-07-27T12:00:00Z</id>
     </entry>
     <entry>
       <title>PHPTAL 1.1.12 released</title>
       <link href="http://phptal.org" />
       <content type="text" xml:space="preserve">
  New RepeatController by Iván “DrSlump” Montes:
   • based on SPL iterators (to simplify the code),
   • added support for string iteration,
   • added support for letter and roman properties,
   • added support for grouping first and last properties,
   • most properties are computed as needed.

  PHPTAL is now easier to use as part of a framework or a plug-in:
   • Required files are included from directory pointed by PHPTAL_DIR constant (it's defined automatically). This makes it easier to use multiple copies of PHPTAL, and eliminates need for include_path.
   • Configuration can be changed without using constants (patch by Werner): 
       $t = PHPTAL::create('index.xhtml')
         ->setPhpCodeDestination('application/tmp/')
         ->setPhpCodeExtension('tmp')
         ->setForceReparse(true)
         ->set('title', 'My Title')
         ->set('heading', 'My Heading');

  These changes are backwards-compatible: PEAR installations are unaffected, configuration constants are still supported.
       </content>
       <author><name>Kornel Lesinski</name><email>kornel&#x40;aardvarkmedia.co.uk</email></author>
       <updated>2008-04-17T12:00:00Z</updated><id>http://phptal.motion-twin.com/atom/2008-04-17T12:00:00Z</id>
     </entry>
        <entry>
          <title>PHPTAL 1.1.11 released</title>
          <link href="http://phptal.org" />
          <content xml:space="preserve">
     Handy feature, less bugs.

     • nothing or NULL as last alternative in tal:attributes will cause attribute to be omitted entirely,
     • support for systems on which sys_get_temp_dir() does not include trailing slash,
     • fixed warning when clearing cache.
          </content>
          <author><name>Kornel Lesinski</name></author>
          <updated>2008-01-29T12:00:00Z</updated><id>http://phptal.motion-twin.com/atom/2008-01-29T12:00:00Z</id>
        </entry>
        <entry>
          <title>PHPTAL 1.0.6</title>
          <link href="http://phptal.org" />
          <content type="text">
          - fixed empty tags (link, input, ...) with XML output
          - minor PHP transformer optimisations
          - xml parser stricter about attribute value quotes
          </content>
          <author><name>Laurent Bedubourg</name></author>
          <updated>2005-03-21T12:00:00Z</updated><id>http://phptal.motion-twin.com/atom/2005-03-21T12:00:00Z</id>
        </entry>
        <entry>
          <title>PHPTAL 1.1.10 released by new maintainer</title>
          <link href="http://phptal.org" />
          <content type="text">
     The latest release adds more robust error handling and integrates PHPTAL a bit better with PHP SPL:

     • added support for Countable and ArrayAccess SPL interfaces,
     • added support for superglobals in php: TALES expressions,
     • changed default temp directory to use sys_get_temp_dir(). If this causes trouble, you can override it using define('PHPTAL_PHP_CODE_DESTINATION','/tmp/');
     • added additional safety-checks to code generation and macro execution to prevent invalid templates from triggering PHP errors,
     • fixed small bugs in XML parser,
     • fixed few error messages to be more precise and report proper file/line,
     • changed all exceptions thrown by PHPTAL to inherit PHPTAL_Exception.
          </content>
          <author><name>Kornel Lesinski</name></author>
          <updated>2008-01-26T12:00:00Z</updated><id>http://phptal.motion-twin.com/atom/2008-01-26T12:00:00Z</id>
        </entry>

    
    <entry>
      <title>PHPTAL 1.0.10 (bug fix release before 1.1 branch)</title>
      <link href="http://phptal.org/download.html" />
      <content type="text">
			- fixed echoing an object now calls its __toString() method
			- fixed false booleans are now echoed as 0 instead of '' (css using item/repeat/odd may require an update)
			- fixed tal:content, tal:replace and tal:attributes chained expression now ignores null, false and ''
			- fixed &lt;!-- comments were evaluating ${foo}
			- fixed ${foo} were evaluated inside text nodes
			- fixed doctype and xml declaration discovery inside deep macro calls
			-	fixed filemtime() warning when using setSource() with no path
			</content>
			<author><name>Laurent Bedubourg</name></author>
      <updated>2005-05-22T12:00:00Z</updated><id>http://phptal.motion-twin.com/atom/2005-05-22T12:00:00Z</id>
    </entry>
    <entry>
      <title>PHPTAL 1.1.4 (testing) released</title>
      <link href="http://phptal.org/" />
      <content type="text">
		  The 1.1 branch has finaly been released, here are some changes :
			
			- added: global and local keywords to tal:define
			- fixed: many little errors in the i18n extension
			- fixed: last path in string:foo${var} was not interpolated
			- modif: XHTML empty attributes are now echoed with a value (ie: checked="checked")
			- fixed: tal:define and content buffering fixes (patch from William Bailey)
			- fixed: pre filter usage on external macro execution
			- misc: many code refactorings which will lead to a radical library simplication in the future.

			pear upgrade http://phptal.org/testing.tar.gz
			</content>
      <author><name>Laurent Bedubourg</name></author>
      <updated>2005-12-10T12:00:01Z</updated><id>http://phptal.motion-twin.com/atom/2005-12-10T12:00:01Z</id>
    </entry>
    <entry>
      <title>English manual corrections</title>
      <link href="http://phptal.org/" />
      <content type="text">
			Many thanks to Dan Sheppard.
			</content>
      <author><name>Laurent Bedubourg</name></author>
      <updated>2005-12-10T12:00:00Z</updated><id>http://phptal.motion-twin.com/atom/2005-12-10T12:00:00Z</id>
    </entry>
    <entry>
      <title>PHPTAL 1.1.5 released</title>
      <link href="http://phptal.org/" />
      <content type="text">
		The 1.1.4 testing is stable and was improved :
		- added: PHPTAL_CommentFilter as a simple and usefull demonstration filter,
		- added: PHPTAL_PHP_CODE_EXTENSION constant based on William Bailey proposal,
		- added: MyClass.myStatic: custom expression modifiers (patch from William Bailey),
		- fixed: ;; bug in string: expressions (patch from William Bailey)
		- some manual documentation concerning local and global keywords
		</content>
      <author><name>Laurent Bedubourg</name></author>
      <updated>2006-04-09T12:00:00Z</updated><id>http://phptal.motion-twin.com/atom/2006-04-09T12:00:00Z</id>
    </entry>
    <entry>
      <title>PHPTAL 1.1.8 released</title>
      <link href="http://phptal.org/" />
      <content type="text">
		Fix and patch release
		- applied tal:repeat patch from Moritz Bechler
		- applied tales registry patch from Moritz Bechler
		- applied memory patch from 'smoking_birds_on_moon'
		- fixed setTemplate() reset existing prepared template (but not the context)
		- fixed ${structure foo} ${string:hello world}
		- added true: modifier support
		- added structure support to tal:attributes 
		</content>
      <author><name>Laurent Bedubourg</name></author>
      <updated>2006-11-20T12:00:00Z</updated><id>http://phptal.motion-twin.com/atom/2006-11-20T12:00:00Z</id>
    </entry>
    <entry>
      <title>PHPTAL 1.1.9 released</title>
      <link href="http://phptal.org" />
      <content type="text">
		Applied patch from Kornel Lesinski

		- Added phptal:cache that caches HTML of any given tag,
    		- Added phptal_tale() which returns chained TAL expressions as a single PHP expression. It's quivalent to phptal_tales(), but can be used in more contexts (i.e. ${foo | bar}),
    		- metal:fill-block can fill blocks in parent contexts,
    		- slightly improved runtime error messages.

		Other svn pending fixes:

    		- fixed "not" bug with complex php: expressions,
    		- fixed tales string backslash escaping,
    		- fixed only escape &lt; and &gt; in PCDATA,
    		- fixed php:$foo expression which is evaluated to php:${foo} equals $ctx-&gt;{$ctx-&gt;foo}.

		As annonced on the mailing like I don't have the time to maintain PHPTAL anymore, Kornel Lesinski kindly proposed himself to take the head of the project and we will plan the hand over during the following weeks. It was a pleasure to give this library to the community!

		Thanks to all PHPTAL users, Laurent Bedubourg
		</content>
      <author><name>Laurent Bedubourg</name></author>
      <updated>2007-11-25T12:00:00Z</updated><id>http://phptal.motion-twin.com/atom/2007-11-25T12:00:00Z</id>
    </entry>

    <entry>
      <title>Pupeno's article in PHP|Architect</title>
      <link href="http://www.phparch.com/issue.php?mid=52" />
      <content type="text">
      Pupeno's (Jose Pablo Ezequiel Fernandez Silva) first article 
      about PHPTAL was published on the issue 3, volume 4 of php|architect.
      
      This article introduces PHPTAL and explains most common TAL attributes 
      with some good examples.

      More articles should follow in next issues concerning advanced PHPTAL 
      usage in daily applications.
      </content>
      <author><name>Laurent Bedubourg</name></author>
      <updated>2005-03-22T12:00:00Z</updated><id>http://phptal.motion-twin.com/atom/2005-03-22T12:00:00Z</id>
    </entry>
</feed>
