<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>symfony Project Blog</title>
    <link>http://www.symfony-project.org/blog/</link>
    <description>symfony Project Blog</description>
    <pubDate>Sat, 21 Nov 09 13:44:19 +0100</pubDate>
    <language>en</language>

          <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/symfony/blog" type="application/rss+xml" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
        <title>Release Candidates for symfony 1.3 and 1.4!</title>
        <link>http://feedproxy.google.com/~r/symfony/blog/~3/P_YjMEr1of8/release-candidates-for-symfony-1-3-and-1-4</link>
        <description>&lt;p&gt;On the heels of a fantastic
&lt;a href="http://www.symfony-project.org/blog/2009/11/16/bughuntday-report"&gt;BugHuntDay&lt;/a&gt;
held over the weekend, the symfony core team is happy to announce the
immediate availability of the first release candidates for versions 1.3 and
1.4.&lt;/p&gt;

&lt;blockquote class="note"&gt;&lt;p&gt;
  For those of you not familiar with the release and maintenance schedules for
  versions 1.3 and 1.4, take a look at our earlier &lt;a href="http://www.symfony-project.org/blog/2009/08/06/about-symfony-1-3-and-symfony-1-4"&gt;About symfony 1.3 and
  symfony 1.4&lt;/a&gt;
  blog post.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;These release candidates address a number of defects and add a few minor
enhancements to the 1.3 and 1.4 branches.&lt;/p&gt;

&lt;h2&gt;Optimizations&lt;/h2&gt;

&lt;p&gt;A number of components have been further optimized for these releases. Most
notable is the routing factory, which performs as much as 25% faster than just
the previous 1.3 beta2 release, though your mileage may vary. The new
&lt;code&gt;project:optimize&lt;/code&gt; task also does more now, eliminating a number of filesystem
reads when loading template helpers.&lt;/p&gt;

&lt;h2&gt;Widget Translations&lt;/h2&gt;

&lt;p&gt;The text used for the options in choice widgets is now passed through the
widget translation mechanism. As a part of this enhancement a number of
strings have been added to the translation catalogues for the Doctrine and
Propel admin generators. If you've worked on translations in the past and have
a few moments, please help by updating the translation strings added in &lt;a href="http://trac.symfony-project.org/changeset/24015#file11"&gt;this
changeset&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Two More Weeks&lt;/h2&gt;

&lt;p&gt;The stable releases of both symfony 1.3 and 1.4 are scheduled to go out two
weeks from now, with one more release candidate for each in the meantime. If
you haven't done so yet, please take a moment to upgrade a project to symfony
1.3 or start a new one with symfony 1.4. Be sure to read through &lt;a href="http://www.symfony-project.org/tutorial/1_4/en/whats-new"&gt;what's
new&lt;/a&gt;, the &lt;a href="http://www.symfony-project.org/tutorial/1_4/en/upgrade"&gt;upgrade
tutorial&lt;/a&gt; and the list
of what's been
&lt;a href="http://www.symfony-project.org/tutorial/1_4/en/deprecated"&gt;deprecated&lt;/a&gt; for
more information on these two latest releases of symfony.&lt;/p&gt;
          &lt;hr / style="margin-bottom: 5px"&gt;
          &lt;div style="font-size: 90%"&gt;
          Be trained by symfony experts
                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-DECEMBER-2009"&gt;Dec 16&lt;/a&gt; Paris                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-JANUARY-2010"&gt;Jan 20&lt;/a&gt; Paris                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-FEBRUARY-2010"&gt;Feb 24&lt;/a&gt; Paris                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-MARCH-2010"&gt;Mar 24&lt;/a&gt; Paris                    &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/symfony/blog/~4/P_YjMEr1of8" height="1" width="1"/&gt;</description>
        <guid isPermaLink="false">http://www.symfony-project.org/blog/2009/11/17/release-candidates-for-symfony-1-3-and-1-4</guid>
        <author>Kris Wallsmith</author>
        <pubDate>Tue, 17 Nov 09 11:27:00 +0100</pubDate>
        <comments />
      <feedburner:origLink>http://www.symfony-project.org/blog/2009/11/17/release-candidates-for-symfony-1-3-and-1-4</feedburner:origLink></item>
          <item>
        <title>BugHuntDay Report</title>
        <link>http://feedproxy.google.com/~r/symfony/blog/~3/oxpYWInt9mw/bughuntday-report</link>
        <description>&lt;p&gt;&lt;a href="http://www.flickr.com/photos/skoop/4109523773/" title="The BugHuntDay Room by skoop, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2803/4109523773_2cf57568b6_m.jpg" width="240" height="160" alt="The BugHuntDay Room" align="left" style="padding:2px;" /&gt;&lt;/a&gt; Last saturday was the day that the PHPBenelux usergroup organized their annual BugHuntDay. This year, the focus was on symfony, which led to 4 core team members being there amongst the attendees of the day. The day was attended by 17 people in total who seemed excited to commit some time to supporting symfony, as well as a number of people in the IRC chatroom.&lt;/p&gt;

&lt;p&gt;For the event, a seperate milestone was created in trac to keep track of the things that were fixed during the BugHuntDay and also for people to have a single place to pick their tickets from.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/skoop/4109526375/" title="Bernhard won an elephpant by skoop, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2508/4109526375_4dfd4a13dd_m.jpg" width="160" height="240" alt="Bernhard won an elephpant" align="right" style="padding:2px;" /&gt;&lt;/a&gt; Now for some statistics: 28 tickets from the milestone were closed, with a couple of additional related tickets that were encountered while working on the tickets for the BugHuntDay. Out of those, 15 were marked as fixed, 5 marked as wontfix and 8 were verified and found working in the most recent version of symfony. The focus here was on symfony 1.3, however a number of tickets also touched symfony 1.2 and backports were made accordingly.&lt;/p&gt;

&lt;p&gt;The event was a major success, thanks to the sponsor of the day, &lt;a href="http://www.intracto.be/"&gt;Intracto&lt;/a&gt;, as well as the core team members that were present. But most of all, of course, by the attendees that sacrificed some of their spare time to dig into the bowels of symfony to fix some of the open issues and get a good look at what is inside symfony.&lt;/p&gt;
          &lt;hr / style="margin-bottom: 5px"&gt;
          &lt;div style="font-size: 90%"&gt;
          Be trained by symfony experts
                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-DECEMBER-2009"&gt;Dec 16&lt;/a&gt; Paris                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-JANUARY-2010"&gt;Jan 20&lt;/a&gt; Paris                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-FEBRUARY-2010"&gt;Feb 24&lt;/a&gt; Paris                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-MARCH-2010"&gt;Mar 24&lt;/a&gt; Paris                    &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/symfony/blog/~4/oxpYWInt9mw" height="1" width="1"/&gt;</description>
        <guid isPermaLink="false">http://www.symfony-project.org/blog/2009/11/16/bughuntday-report</guid>
        <author>Stefan Koopmanschap</author>
        <pubDate>Mon, 16 Nov 09 21:27:00 +0100</pubDate>
        <comments />
      <feedburner:origLink>http://www.symfony-project.org/blog/2009/11/16/bughuntday-report</feedburner:origLink></item>
          <item>
        <title>A week of symfony #150 (9-&gt;15 November 2009)</title>
        <link>http://feedproxy.google.com/~r/symfony/blog/~3/ZzqgFufIJ64/a-week-of-symfony-150-9-15-november-2009</link>
        <description>&lt;p&gt;Symfony project development got a boost this week with the release of the &lt;a href="http://www.symfony-project.org/blog/2009/11/10/symfony-1-3-beta-2"&gt;second beta of symfony 1.3&lt;/a&gt;, the &lt;a href="http://www.symfony-project.org/blog/2009/11/10/lime-2-alpha-released"&gt;first alpha of Lime 2&lt;/a&gt; testing framework and the creation of symfony 1.4 branch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Development mailing list&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Discussions about &lt;a href="http://groups.google.es/group/symfony-devs/browse_thread/thread/7a672a5c90f5ab5d"&gt;using mail address from properties.ini for the single address delivery strategy&lt;/a&gt; and &lt;a href="http://groups.google.es/group/symfony-devs/browse_thread/thread/dbdef24f3b480a7c"&gt;moving plugins to independent system&lt;/a&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Development highlights&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23714"&gt;r23714&lt;/a&gt;: [lime 2.0] fixed regression: is(), like() etc did not return the result of the test anymore&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23720"&gt;r23720&lt;/a&gt;: [1.3] preventing sendHttpHeaders to run multiple times. Once send the method will silently do nothing&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23724"&gt;r23724&lt;/a&gt;: [1.3] sfCacheSessionStorage will set session_id() to $this-&gt;id&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23725"&gt;r23725&lt;/a&gt;: [1.0] stimulating autoloading in sfFunctionCache by calling class_exists before calling static methods&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23727"&gt;r23727&lt;/a&gt;: [1.2, 1.3] added timestamps for the releases to the changelog&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/milestone/1.3.0 beta2"&gt;Milestone 1.3.0 beta2 completed&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23738"&gt;r23738&lt;/a&gt;: [1.3] added errormessage when tests passed to sfTestFunctionalTask or sfTestUnitTask are not found&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23740"&gt;r23740&lt;/a&gt;: [1.3] added errormessage when none of the tests passed to sfTestFunctionalTask or sfTestUnitTask are not found&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23744"&gt;r23744&lt;/a&gt;: [1.3] refactored match_names in sfFinder so that it is more readable and perhaps even faster&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23762"&gt;r23762&lt;/a&gt;: [1.3] updated Swift Mailer to the latest 4.1 version&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23763"&gt;r23763&lt;/a&gt;: [1.3] added some configuration to the project:send-emails task (number of messages and time limit)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23799"&gt;r23799&lt;/a&gt;: [1.3] removed need for runtime insertion of lowercase module name into *_module_config.yml.php files. The module name is already inserted correctly by the sfDefineEnvironmentConfigHandler&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23810"&gt;r23810&lt;/a&gt;: [1.3] set svn:eol-style property to native and svn:keywords property to Id on all .php files&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23822"&gt;r23822&lt;/a&gt;: [1.3] fixed loading of application-less plugin autoloader when multiple plugins are enabled&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23852"&gt;r23852&lt;/a&gt;: [1.3] fixed assumption in propel upgrade&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23864"&gt;r23864&lt;/a&gt;: [lime 2.0] improved mock error message when multiple methods could have matched an invocation&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23880"&gt;r23880&lt;/a&gt;: [lime 2.0] added methods LimeTest::extendStub() and LimeTest::extendMock()&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23881"&gt;r23881&lt;/a&gt;: [1.4] created the 1.4 branch&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23882"&gt;r23882&lt;/a&gt;: [1.3] sfI18N now correctly rejects invalid dates when using a culture that has the dot as separator, and correctly respects am/pm markers&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23886"&gt;r23886&lt;/a&gt;: [1.0] fixed notice on undefined uri in sfCacheFilter&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23888"&gt;r23888&lt;/a&gt;: [1.3] reporting error on empty url for sfWebController#redirect&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23889"&gt;r23889&lt;/a&gt;, &lt;a href="http://trac.symfony-project.org/changeset/23890"&gt;r23890&lt;/a&gt;: [1.3, 1.4] changed sfDomCssSelector to not use a deprecated method&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23892"&gt;r23892&lt;/a&gt;: [1.3, 1.4] added Countable and Iterator interface to DOM CSS selector&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23897"&gt;r23897&lt;/a&gt;: [1.3] updated sfProtoculous javascript externals&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23898"&gt;r23898&lt;/a&gt;, &lt;a href="http://trac.symfony-project.org/changeset/23899"&gt;r23899&lt;/a&gt;, &lt;a href="http://trac.symfony-project.org/changeset/23900"&gt;r23900&lt;/a&gt;: [1.2, 1.3, 1.4] default fields are created for %%variables%% in the title of the edit, list and new action, if possible&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23901"&gt;r23901&lt;/a&gt;: [1.2, 1.3, 1.4] The last exception is reset on every new page call in functional tests&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23902"&gt;r23902&lt;/a&gt;, &lt;a href="http://trac.symfony-project.org/changeset/23903"&gt;r23903&lt;/a&gt;, &lt;a href="http://trac.symfony-project.org/changeset/23916"&gt;r23916&lt;/a&gt;, &lt;a href="http://trac.symfony-project.org/changeset/23918"&gt;r23918&lt;/a&gt;, &lt;a href="http://trac.symfony-project.org/changeset/23920"&gt;r23920&lt;/a&gt;, &lt;a href="http://trac.symfony-project.org/changeset/23921"&gt;r23921&lt;/a&gt;: [1.3, 1.4] updated some tests to use the new API&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23907"&gt;r23907&lt;/a&gt;, &lt;a href="http://trac.symfony-project.org/changeset/23911"&gt;r23911&lt;/a&gt;: [1.3] improved sfApplicationConfiguration getXYZDir caching when not using the project optimize task by lazy caching&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23910"&gt;r23910&lt;/a&gt;: [1.3, 1.4] changed CLI tests to use the new admin generator instead of the old one&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23917"&gt;r23917&lt;/a&gt;: [1.2, 1.3, 1.4] added sfFormField and sfFormFieldSchema to the safe classes in sfView. Widgets are always expected to be escaped by the developers&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23922"&gt;r23922&lt;/a&gt;, &lt;a href="http://trac.symfony-project.org/changeset/23932"&gt;r23932&lt;/a&gt;, &lt;a href="http://trac.symfony-project.org/changeset/23937"&gt;r23937&lt;/a&gt;, &lt;a href="http://trac.symfony-project.org/changeset/23939"&gt;r23939&lt;/a&gt;, &lt;a href="http://trac.symfony-project.org/changeset/23940"&gt;r23940&lt;/a&gt;: [1.4] removed deprecated stuff&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23923"&gt;r23923&lt;/a&gt;: [1.3, 1.4] changed the routing handler cache file so that it consumes less memory&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23925"&gt;r23925&lt;/a&gt;: [1.2, 1.3, 1.4] fixed sfMemcacheCache delete() operation&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23942"&gt;r23942&lt;/a&gt;: [1.4] removed internal methods that were used by the parameter holder&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23948"&gt;r23948&lt;/a&gt;, &lt;a href="http://trac.symfony-project.org/changeset/23949"&gt;r23949&lt;/a&gt;: [1.2, 1.3, 1.4] improved searching for symfony script file on windows&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23951"&gt;r23951&lt;/a&gt;: [1.2, 1.3, 1.4] fixed file validator on certain mac os configurations&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23953"&gt;r23953&lt;/a&gt;: [1.3, 1.4] made empty redirect check faster and type tolerant&lt;/li&gt;
  &lt;li&gt;&lt;del&gt;&lt;a href="http://trac.symfony-project.org/changeset/23970"&gt;r23970&lt;/a&gt;: [1.3, 1.4] improved sfPager so that it doesn't need to recount when resultsCounter exists&lt;/del&gt; (reverted)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23973"&gt;r23973&lt;/a&gt;: [1.2, 1.3, 1.4] replaced last reference of $sf_symfony_lib_dir with sfConfig::get('sf_symfony_lib_dir')&lt;/li&gt;

&lt;li&gt;&lt;strong&gt;sfDoctrinePlugin&lt;/strong&gt;:
  &lt;ul&gt;
    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23745"&gt;r23745&lt;/a&gt;: [1.3] fixed issues in pagers, switched from IteratorAggregate to Iterator, simplified prevention of unnecessary queries, removed some whitespace&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23912"&gt;r23912&lt;/a&gt;, &lt;a href="http://trac.symfony-project.org/changeset/23914"&gt;r23914&lt;/a&gt;: [1.3, 1.4] updated some Doctrine test to use the new test API&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23919"&gt;r23919&lt;/a&gt;: [1.3] made crud generator respect singular and plural name&lt;/li&gt;

    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23924"&gt;r23924&lt;/a&gt;, &lt;a href="http://trac.symfony-project.org/changeset/23930"&gt;r23930&lt;/a&gt;, &lt;a href="http://trac.symfony-project.org/changeset/23931"&gt;r23931&lt;/a&gt;: [1.3] fixed defaults for singular and plural name for generate crud tasks in case none are specified&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23927"&gt;r23927&lt;/a&gt;: [1.3, 1.4] added a new option to change the generator class for forms and filters&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23950"&gt;r23950&lt;/a&gt;: [1.2, 1.3, 1.4] fixed doctrine modules when dealing with multiple primary keys&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23967"&gt;r23967&lt;/a&gt;: [1.3, 1.4] corrected problem with validation when i18n is used&lt;/li&gt;

    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23977"&gt;r23977&lt;/a&gt;: [1.2, 1.3, 1.4] fixed image saving for Doctrine&lt;/li&gt;
  &lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;sfPropelPlugin&lt;/strong&gt;:
  &lt;ul&gt;
    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23709"&gt;r23709&lt;/a&gt;: [1.3] added debug information for Propel in dev environment by default&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23737"&gt;r23737&lt;/a&gt;: [1.3] refactored propel initialization to sfPropelPluginConfiguration, cleaned up sfPropelDatabase to avoid creating multiple PropelConfiguration objects, removed Propel runtime classes from sfAutoload since Propel has its own autoloader, deprecated sfPropel::import() since Propel::importClass() allows autoloading&lt;/li&gt;

    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23739"&gt;r23739&lt;/a&gt;: [1.3] added hooks for specifying custom propel runtime and generator paths&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23909"&gt;r23909&lt;/a&gt;: [1.2, 1.3] updated SfObjectBuilder so that Propel objects do not query the I18N table when they are new&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23919"&gt;r23919&lt;/a&gt;: [1.3] made crud generator respect singular and plural name&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23924"&gt;r23924&lt;/a&gt;, &lt;a href="http://trac.symfony-project.org/changeset/23930"&gt;r23930&lt;/a&gt;, &lt;a href="http://trac.symfony-project.org/changeset/23931"&gt;r23931&lt;/a&gt;: [1.3] fixed defaults for singular and plural name for generate crud tasks in case none are specified&lt;/li&gt;

    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23927"&gt;r23927&lt;/a&gt;: [1.3, 1.4] added a new option to change the generator class for forms and filters&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23967"&gt;r23967&lt;/a&gt;: [1.3, 1.4] corrected problem with validation when i18n is used&lt;/li&gt;
  &lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://trac.symfony-project.com/trac/timeline?from=11%2F15%2F2009&amp;daysback=6&amp;milestone=on&amp;ticket=on&amp;changeset=on&amp;update=Update"&gt;...and many other changes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="http://components.symfony-project.org/"&gt;Symfony components&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;strong&gt;yaml&lt;/strong&gt;:
  &lt;ul&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23743"&gt;r23743&lt;/a&gt;:  added more tests&lt;/li&gt;
  &lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Development digest&lt;/strong&gt;: 284 changesets, 33 bugs reported, 55 bugs fixed, 8 enhancements suggested, 19 enhancements closed, 2 documentation defects reported, 12 documentation defects fixed, and 16 documentation edits.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Documentation&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Updated &lt;a href="http://www.symfony-project.org/jobeet/1_2/ja/"&gt;Japanese&lt;/a&gt; translation of Jobeet tutorial&lt;/li&gt;
  &lt;li&gt;Updated &lt;a href="http://trac.symfony-project.org/wiki/1day1ticket"&gt;1 day 1 ticket&lt;/a&gt;, &lt;a href="http://trac.symfony-project.org/wiki/Symfony2Discussion"&gt;Symfony 2.0&lt;/a&gt;, and &lt;a href="http://trac.symfony-project.org/wiki/SymfonyYamlMyqlWorkbenchPlugin"&gt;Symfony YAML MySQL Workbench Plugin&lt;/a&gt; pages&lt;/li&gt;

  &lt;li&gt;Updated &lt;a href="http://www.symfony-project.org/reference/1_3/en/"&gt;symfony 1.3 reference&lt;/a&gt;:
    &lt;ul&gt;
      &lt;li&gt;&lt;a href="http://www.symfony-project.org/reference/1_3/en/05-Factories"&gt;chapter 5&lt;/a&gt;: added recent changes in project:send-emails task&lt;/li&gt;
      &lt;li&gt;&lt;a href="http://www.symfony-project.org/reference/1_3/en/07-Databases"&gt;chapter 7&lt;/a&gt;: added configuration of DebugPDO&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;

  &lt;li&gt;Updated &lt;a href="http://www.symfony-project.org/reference/1_3/fr/"&gt;French&lt;/a&gt;, &lt;a href="http://www.symfony-project.org/reference/1_3/it/"&gt;Italian&lt;/a&gt;, and &lt;a href="http://www.symfony-project.org/reference/1_3/ja/"&gt;Japanese&lt;/a&gt; translations of symfony 1.3 reference&lt;/li&gt;

  &lt;li&gt;Updated &lt;a href="http://www.symfony-project.org/jobeet/1_3/Propel/en/"&gt;Jobeet 1.3 / Practical symfony 1.3 book&lt;/a&gt;:
    &lt;ul&gt;
      &lt;li&gt;&lt;a href="http://www.symfony-project.org/jobeet/1_2/Propel/en/13"&gt;chapter 13&lt;/a&gt;: made some changes to the plugin installation as the default configuration changed in 1.3&lt;/li&gt;

    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Updated &lt;a href="http://www.symfony-project.org/jobeet/1_3/Propel/it/"&gt;Italian&lt;/a&gt;, and &lt;a href="http://www.symfony-project.org/jobeet/1_3/Propel/ja/"&gt;Japanese&lt;/a&gt; translations of Jobeet 1.3 / Practical symfony 1.3 book&lt;/li&gt;
  &lt;li&gt;Updated &lt;a href="http://www.symfony-project.org/tutorial/1_3/en/deprecated"&gt;Deprecations and removals in symfony 1.3&lt;/a&gt; (added more information about replacing deprecated methods)&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;New &lt;a href="http://trac.symfony-project.com/trac/wiki/JobPostings"&gt;Job Postings&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Symfony/CSS/Javascript Developer at &lt;a href="http://clickcontact.com"&gt;clickcontact.com&lt;/a&gt; - remote or full-time based in Quebec, Canada - Contact: m [dot] bittner [at] clickcontact [dot] com&lt;/li&gt;
  &lt;li&gt;Symfony Developer at &lt;a href="http://www.bysoftchina.com/english/"&gt;Bysoft China&lt;/a&gt; - full-time based in Guangzhou, China - Contact: hr [at] bysoftchina [dot] com&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;New &lt;a href="http://trac.symfony-project.com/trac/wiki/SymfonyBloggers"&gt;symfony bloggers&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://symfonyandy.wordpress.com/"&gt;Andy's symfony blog&lt;/a&gt; (&lt;a href="http://symfonyandy.wordpress.com/feed/"&gt;feed&lt;/a&gt;) (English)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.journaweb.info"&gt;JournaWeb.info&lt;/a&gt; (&lt;a href="http://feeds.feedburner.com/Journaweb/"&gt;feed&lt;/a&gt;) (French)&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Plugins&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;New plugins&lt;/strong&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfPropelMooDooPlugin"&gt;sfPropelMooDooPlugin&lt;/a&gt;: Propel administration generator.
&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfGoogleClosureCompilerPlugin"&gt;sfGoogleClosureCompilerPlugin&lt;/a&gt;: gets all javascript urls in a head tag on a HTML page and replace them with compiled version scripts.
&lt;/li&gt;

    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfRandomImagesPlugin"&gt;sfRandomImagesPlugin&lt;/a&gt;: provides a helper to show random imagens from a folder.
&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfFormatSizePlugin"&gt;sfFormatSizePlugin&lt;/a&gt;: provides a helper to transform any value in bytes into something readable like kB, MB, GB, TB.
&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfJSLibJQueryPlugin"&gt;sfJSLibJQueryPlugin&lt;/a&gt;: convenience package containing the jQuery library version 1.3.2 and settings for use with the sfJSLibManagerPlugin.
&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfJSLibManagerPlugin"&gt;sfJSLibManagerPlugin&lt;/a&gt;: a simple plugin to manage the inclusion of a javascript library's js &amp; css assets via a single call to a static method - sfJSLibManager::addLib('my_js_lib')
&lt;/li&gt;

    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfJSLibJQueryUIPlugin"&gt;sfJSLibJQueryUIPlugin&lt;/a&gt;: convenience package containing the jQueryUI library version 1.7.2 and settings for use with the sfJSLibManagerPlugin.
&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfJSLibJCropPlugin"&gt;sfJSLibJCropPlugin&lt;/a&gt;: convenience package containing the Jcrop library version 0.9.8 and settings for use with the sfJSLibManagerPlugin.
&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/dhSimpleSmsPlugin"&gt;dhSimpleSmsPlugin&lt;/a&gt;: allows sending of SMS messages via the http://www.clickatell.com SMS gateway.
&lt;/li&gt;  &lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;strong&gt;Updated plugins&lt;/strong&gt;
  &lt;ul&gt;

    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfEasyAuthPlugin"&gt;sfEasyAuthPlugin&lt;/a&gt;: updated README&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/ncPropelChangeLogBehaviorPlugin"&gt;ncPropelChangeLogBehaviorPlugin&lt;/a&gt;: the plugin now tries to get the values of the foreign keys in the related table&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/lcOpenInviterPlugin"&gt;lcOpenInviterPlugin&lt;/a&gt;: restored openinviter class deleted the old plugins from the svn, fixed the checkLoginCredentials() bugs caused by the integration of the new version of open inviter&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/pkToolkitPlugin"&gt;pkToolkitPlugin&lt;/a&gt;: sfWiddgetFormJQueryDate now allows you to clear the date and go back to null pkArray::removeValue removes a value from a flat array, object retrieval refactorization, introduced a pkTaskTools class, pkWidgetFormStaticText is handy for interleaving detailed instructions with widgets without being forced to template out the entire form&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfDoctrineApplyPlugin"&gt;sfDoctrineApplyPlugin&lt;/a&gt;: corrected min_length message for the second password field and for the reset form&lt;/li&gt;

    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfImageTransformPlugin"&gt;sfImageTransformPlugin&lt;/a&gt;: preserved transparency when cropping and resizing using the GD adapter, adding alpha support to colorizing using the GD adapter, disabled alpha handling to enable font rendering&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfI18NTranslatorPlugin"&gt;sfI18NTranslatorPlugin&lt;/a&gt;: deleted logger, no more dynamic js, updated README&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfTaskLoggerPlugin"&gt;sfTaskLoggerPlugin&lt;/a&gt;: added $options and $arguments to the doProcess method, make sfTaskLoggerPurge compatible with the new method signature&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/swFormExtraPlugin"&gt;swFormExtraPlugin&lt;/a&gt;: fixed some bugs&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/pkBlogPlugin"&gt;pkBlogPlugin&lt;/a&gt;: fixed a bug with permalink generation on events, added simple upcoming events component&lt;/li&gt;

    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfSimplePagePlugin"&gt;sfSimplePagePlugin&lt;/a&gt;: separate route prefix from data dir, new configuration from app.yml, more precise 404 error, added i18n (optional) support&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfXstandardEditorPlugin"&gt;sfXstandardEditorPlugin&lt;/a&gt;: fixed html encoding issue, fixed typo in README&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfPhpunitPlugin"&gt;sfPhpunitPlugin&lt;/a&gt;: now works with sfPropelData class directly, added option connection so it can be changed&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfFilebasePlugin"&gt;sfFilebasePlugin&lt;/a&gt;: improved Doctrine Behaviour and configuration handling&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfDoctrineJCroppablePlugin"&gt;sfDoctrineJCroppablePlugin&lt;/a&gt;: using the widgetschema's name format instead of the model's table name for the id stub in order to play nicely with inheritance, added detection and use of sfJSLibManager::addLib('jcrop') if found, updated README&lt;/li&gt;

    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfAdminDashPlugin"&gt;sfAdminDashPlugin&lt;/a&gt;: added French translation&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfDoctrineGuardPlugin"&gt;sfDoctrineGuardPlugin&lt;/a&gt;: cleaned up model files, added missing action method parameters&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfExtjsThemePlugin"&gt;sfExtjsThemePlugin&lt;/a&gt;: added support for tooltip configuration to rowactions to maintain consistancy with other actions&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfDoctrineUserPlugin"&gt;sfDoctrineUserPlugin&lt;/a&gt;: made a branch for symfony 1.3&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfDoctrineSettingsPlugin"&gt;sfDoctrineSettingsPlugin&lt;/a&gt;: made a branch for symfony 1.3&lt;/li&gt;

    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfSyncContentPlugin"&gt;sfSyncContentPlugin&lt;/a&gt;: removed reference to sfPropelSyncContentPlugin&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/pkContextCMSPlugin"&gt;pkContextCMSPlugin&lt;/a&gt;: changed footer links, templates at the project level override the plugin, added recursive navigation partial, modified navigation&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/csDoctrineActAsAttachablePlugin"&gt;csDoctrineActAsAttachablePlugin&lt;/a&gt;: cleaned code up, updated for symfony 1.3, updated query efficiency&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/diemPlugin"&gt;diemPlugin&lt;/a&gt;:
      &lt;ul&gt;
        &lt;li&gt;switched to symfony 1.4&lt;/li&gt;

        &lt;li&gt;added gallery javascript admin controller&lt;/li&gt;
        &lt;li&gt;added dmMailTemplate module&lt;/li&gt;
        &lt;li&gt;removed deprecated dmModelGeneratorConfiguration and dmModelGeneratorConfigurationField classes&lt;/li&gt;
        &lt;li&gt;fixed admin export and form class generation&lt;/li&gt;
        &lt;li&gt;fixed dmAdminBreadcrumb and made it more flexible&lt;/li&gt;
        &lt;li&gt;removed deprecated admin modules dmArea, dmPage, dmPageView, dmZone and dmWidget&lt;/li&gt;

        &lt;li&gt;fixed admin chart showSuccess template when no image is available&lt;/li&gt;
        &lt;li&gt;improved google webmaster tools interface&lt;/li&gt;
        &lt;li&gt;added duplicate functionality to admin layout module&lt;/li&gt;
        &lt;li&gt;fixed default admin passsword if database has no password&lt;/li&gt;
        &lt;li&gt;added tree javascripts to core assets configuration&lt;/li&gt;
        &lt;li&gt;added mail service&lt;/li&gt;

        &lt;li&gt;added DmMailTemplate to cache_cleaner safe models configuration&lt;/li&gt;
        &lt;li&gt;fixed DmPageView and DmLayout table declaration&lt;/li&gt;
        &lt;li&gt;added french translations&lt;/li&gt;
        &lt;li&gt;improved project skeleton&lt;/li&gt;
        &lt;li&gt;fixed and improved dmBaseActions-&gt;download method&lt;/li&gt;
        &lt;li&gt;added doctrine extension DmGallery&lt;/li&gt;

        &lt;li&gt;added removeCsrfProtection, changeToEmail, submit and renderCsrfProtection methods to dmForm&lt;/li&gt;
        &lt;li&gt;made many improvements in dmAdminGeneratorBuilder&lt;/li&gt;
        &lt;li&gt;improved performances in PluginDmMediaFolderTable&lt;/li&gt;
        &lt;li&gt;fixed automatic page view attribution to page model when its module or action has been changed&lt;/li&gt;
        &lt;li&gt;created a new DmArea when a DmPageView is saved&lt;/li&gt;
        &lt;li&gt;improved performances in PluginDmWidget getValues and setValues methods&lt;/li&gt;

        &lt;li&gt;added service container dependency to dmWebResponse&lt;/li&gt;
        &lt;li&gt;refactored dmWebResponse-&gt;getAssetAliases and dmWebResponse-&gt;getCdnConfig methods to lazy load them&lt;/li&gt;
        &lt;li&gt;made dmAssetCompressor abstract class extend dmConfigurable&lt;/li&gt;
        &lt;li&gt;refactor dmBaseServiceContainer to improve performances by loading only required services for the current request&lt;/li&gt;
        &lt;li&gt;fixed dmAdminDoctrineGenerateModuleTask, dmAdminGenerateTask and dmSetupTask&lt;/li&gt;
        &lt;li&gt;added getStylesheetWebPath, getStylesheetFullPath, getJavascriptWebPath and getJavascriptFullPath methods to helper service&lt;/li&gt;

        &lt;li&gt;refactored asynchronous loading of stylesheets and javascripts on dmCoreEditCtrl.js&lt;/li&gt;
        &lt;li&gt;replaced deprecated sfWidgetFormDoctrineSelect by sfWidgetFormDoctrineChoice in dmWidgetListForm and dmWidgetShowForm classes&lt;/li&gt;
        &lt;li&gt;added checkBackground callback validator in dmWidgetContentMediaForm&lt;/li&gt;
        &lt;li&gt;fixed dmWidgetContentMediaView-&gt;doRenderForIndex declaration and implementation&lt;/li&gt;
        &lt;li&gt;added a search page check in dmWidgetAdvancedSearchFormForm-&gt;configure method&lt;/li&gt;
        &lt;li&gt;removed csrf protection from dmSearchForm&lt;/li&gt;

        &lt;li&gt;fixed dmWidgetContentTextView-&gt;doRenderForIndex method&lt;/li&gt;
        &lt;li&gt;fixed dmFrontActionGenerator to make action classes extend dmFrontModuleActions and not dmFrontModuleComponents&lt;/li&gt;
        &lt;li&gt;added front.base stylesheet to all front pages&lt;/li&gt;
        &lt;li&gt;modified dmFrontUser to store the current theme key in the user attributes, instead of using directly its storage&lt;/li&gt;
        &lt;li&gt;made front codeEditor actions use helper service to find related javascripts to load asynchronously&lt;/li&gt;
        &lt;li&gt;improved performances on front page module actions and made the messages more polite&lt;/li&gt;

        &lt;li&gt;made front page actions use helper service to find related javascripts to load asynchronously&lt;/li&gt;
        &lt;li&gt;removed form csrf protection for front forms wich need admin credentials&lt;/li&gt;
        &lt;li&gt;improved the default search form&lt;/li&gt;
        &lt;li&gt;made possible to skip the cssClass field in the dmWidgetContentMedia form template, and fixed coding standards&lt;/li&gt;
        &lt;li&gt;fixed dmWidgetContentMediaForm jQuery selectors&lt;/li&gt;
        &lt;li&gt;added postSave methods to user model classes according to sfDoctrineGuardPlugin evolution&lt;/li&gt;

        &lt;li&gt;wrote some pieces of documentation and started building the diem website&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/li&gt;
  &lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;New &lt;a href="http://trac.symfony-project.org/wiki/ApplicationsDevelopedWithSymfony"&gt;symfony powered websites&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://dpu.pmsipilot.com"&gt;http://dpu.pmsipilot.com&lt;/a&gt;: (French) free application to fully operate a (french) hospital emergency service&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://zobozdravnik-skrbinc.si"&gt;Zobozdravstvena ordinacija Škrbinc&lt;/a&gt;: (Slovenian) the website of a private dentist in Ljubljana, Slovenia&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.leprodupari.com/paris-sportifs/"&gt;Leprodupari&lt;/a&gt;: (French) learn the basics, tips and advice on online sports&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;They talked about us&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://www.lexik.fr/blog/symfony/symfony/sflexikdoctrineactascommentableplugin-ou-comment-rendre-des-objets-commentables-via-un-behavior-plugin-1002"&gt;sfLexikDoctrineActAsCommentablePlugin ou comment rendre des objets commentables via un behavior / plugin&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://akinas.com/pages/en/blog/review-of-the-new-symfony-book-from-packt-publishing/"&gt;Review of the new Symfony book&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://symfonynerds.com/blog/?p=293"&gt;Symfony versus The Law Of Demeter: does Symfony promote bad habits?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://gestadieu.blogspot.com/2009/11/what-up-on-sfadminthemejrollerplugin.html"&gt;what's up on sfAdminThemejRollerPlugin?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://symfonyandy.wordpress.com/2009/11/10/propel-1-4-stable-release/"&gt;propel 1.4 stable release&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://gestadieu.blogspot.com/2009/11/sfguarduser-sync-with-google-apps.html"&gt;SfGuardUser sync with Google Apps&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://pookey.co.uk/blog/archives/89-Embedded-forms-using-Javascript-with-sfForm.html"&gt;Embedded forms using Javascript with sfForm&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://jeka.ru/2009/11/12/sfgoogleclosurecompilerplugin-moj-pervyj-plagin-dlya-symfony/"&gt;sfGoogleClosureCompilerPlugin – Мой первый плагин для Symfony&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://www.programmez.com/actualites.php?titre_actu=Symfony-20-supportera-PHP-53&amp;id_actu=6181"&gt;Symfony 2.0 supportera PHP 5.3&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://habrahabr.ru/blogs/symfony/74654/"&gt;ORM – зло или Как я пытался кэшировать Propel в Symfony&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://habrahabr.ru/blogs/symfony/74873/"&gt;Как я подружил «memcache» и Propel в Symfony&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://clear-cache.fr/?post/2009/11/11/Advanced-filters-with-numbers-for-Doctrine"&gt;Advanced filters with numbers for Doctrine&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.denderello.com/blog/using-app-yml-options-in-your-tasks"&gt;Using app.yml options in your tasks&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.journaweb.info/2009/11/uploader-proprement-des-images-avec-symfony/"&gt;Uploader proprement des images avec Symfony&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://mattlazycat.livejournal.com/357669.html"&gt;Running Symfony scheduled tasks on an EC2 farm&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.aberic.com/wordpress/2009/11/14/aberic-lanza-al-mercado-una-nueva-version-de-los-sistemas-de-gestion-web/"&gt;ABERIC lanza al mercado una nueva versión de los sistemas de gestión web Lynx Cms&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://blog.starreveld.com/2009/11/using-symfony-di-container-with.html"&gt;Using Symfony dependency injection Container with Zend_Bootstrap&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://d.hatena.ne.jp/aki77/20091114/1258217230"&gt;symfony 1.2で携帯用にSJISで出力する際の注意点&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://emartini.wordpress.com/2009/11/14/symfony-validador-de-rut/"&gt;symfony – Validador de RUT&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.info-utiles.fr/modules/news/article.php?storyid=2694"&gt;PHP SensioLabs, Symfony 2.0 supportera PHP 5.3&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://www.cssbit.com/archives/1571"&gt;أسئلة حول Symfony&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.jurajmasar.com/solution-for-sympal-installation-problem/"&gt;Solution for Sympal installation problem&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
          &lt;hr / style="margin-bottom: 5px"&gt;
          &lt;div style="font-size: 90%"&gt;
          Be trained by symfony experts
                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-DECEMBER-2009"&gt;Dec 16&lt;/a&gt; Paris                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-JANUARY-2010"&gt;Jan 20&lt;/a&gt; Paris                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-FEBRUARY-2010"&gt;Feb 24&lt;/a&gt; Paris                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-MARCH-2010"&gt;Mar 24&lt;/a&gt; Paris                    &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/symfony/blog/~4/ZzqgFufIJ64" height="1" width="1"/&gt;</description>
        <guid isPermaLink="false">http://www.symfony-project.org/blog/2009/11/15/a-week-of-symfony-150-9-15-november-2009</guid>
        <author>Javier Eguiluz</author>
        <pubDate>Sun, 15 Nov 09 22:41:00 +0100</pubDate>
        <comments />
      <feedburner:origLink>http://www.symfony-project.org/blog/2009/11/15/a-week-of-symfony-150-9-15-november-2009</feedburner:origLink></item>
          <item>
        <title>Prepare yourself for BugHuntDay</title>
        <link>http://feedproxy.google.com/~r/symfony/blog/~3/14x7LW51D1I/prepare-yourself-for-bughuntday</link>
        <description>&lt;p&gt;With the symfony BugHuntDay just around the corner next saturday 14th of november, it is time to have a look at what you can do to prepare yourself. Luckily, one of the PHPBenelux crew members, Thijs Feryn, has &lt;a href="http://blog.feryn.eu/2009/11/preparing-for-symfony-bughuntday/"&gt;posted a tutorial on his weblog&lt;/a&gt; on what you can do to prepare for the BugHuntDay.&lt;/p&gt;

&lt;p&gt;If you want to join us in Herentals, and you have not yet registered for the event, please &lt;a href="http://www.phpbenelux.eu/en/bhdregistration"&gt;do so now&lt;/a&gt;! This will help us know how many people to expect, which is especially important since the event sponsor Intracto Group will be offering free food and drinks!&lt;/p&gt;

&lt;p&gt;If you can not make it to Herentals, don't feel bad! You can still join in on the fun. You won't need to register, but you can simply &lt;strong&gt;join us in the #symfony irc channel&lt;/strong&gt; on irc.freenode.net. Throughout the day, symfony core team members will be there to help people with joining the BugHuntDay from afar. If you want to meet some of the core team members or be eligible for food and drinks, you'll have to join us in Herentals though.&lt;/p&gt;

&lt;p&gt;We hope to see you all this saturday!&lt;/p&gt;
          &lt;hr / style="margin-bottom: 5px"&gt;
          &lt;div style="font-size: 90%"&gt;
          Be trained by symfony experts
                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-DECEMBER-2009"&gt;Dec 16&lt;/a&gt; Paris                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-JANUARY-2010"&gt;Jan 20&lt;/a&gt; Paris                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-FEBRUARY-2010"&gt;Feb 24&lt;/a&gt; Paris                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-MARCH-2010"&gt;Mar 24&lt;/a&gt; Paris                    &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/symfony/blog/~4/14x7LW51D1I" height="1" width="1"/&gt;</description>
        <guid isPermaLink="false">http://www.symfony-project.org/blog/2009/11/10/prepare-yourself-for-bughuntday</guid>
        <author>Stefan Koopmanschap</author>
        <pubDate>Tue, 10 Nov 09 21:15:00 +0100</pubDate>
        <comments />
      <feedburner:origLink>http://www.symfony-project.org/blog/2009/11/10/prepare-yourself-for-bughuntday</feedburner:origLink></item>
          <item>
        <title>symfony 1.3 beta 2</title>
        <link>http://feedproxy.google.com/~r/symfony/blog/~3/RUx_9pbFmM8/symfony-1-3-beta-2</link>
        <description>&lt;p&gt;The core team is happy to announce the immediate availability of symfony 1.3.0
beta 2. It is available for installation over PEAR or by checkout directly
from the Subversion repository. Visit the &lt;a href="http://www.symfony-project.org/installation/1_3"&gt;installation
page&lt;/a&gt; for all the details.&lt;/p&gt;

&lt;p&gt;This is the final beta release of the 1.3 branch, so there aren't too many
exciting new features to announce. Our focus has been on improving the
stability of the existing code base since the API was locked with the beta 1
release. More information about what's new in symfony 1.3 can be found in the
&lt;a href="http://www.symfony-project.org/tutorial/1_3/en/whats-new"&gt;what's new&lt;/a&gt; and
&lt;a href="http://www.symfony-project.org/tutorial/1_3/en/upgrade"&gt;upgrade&lt;/a&gt; tutorials.&lt;/p&gt;

&lt;h2&gt;Propel 1.4 stable&lt;/h2&gt;

&lt;p&gt;Integration with Propel 1.4, whose first stable version was &lt;a href="http://propel.posterous.com/propel-140-stable-is-there"&gt;just
released&lt;/a&gt;, has been
cleaned up and is now more stable and easier to customize. As Fabian
&lt;a href="http://www.symfony-project.org/blog/2009/11/08/using-propel-1-4-detailed-logging"&gt;mentioned
earlier&lt;/a&gt;,
the new Propel 1.4 detailed query logging mechanism is now easily configured
using symfony's database configuration file.&lt;/p&gt;

&lt;h2&gt;Response Validation&lt;/h2&gt;

&lt;p&gt;The response tester, which received a new method for testing the validity of a
response in the 1.3 beta 1 release, now supports XSD- and RelaxNG-based
validation as well as DTD. What's more, standard DTD definitions are now
bundled with symfony, eliminating the cost of external requests when running
these validations.&lt;/p&gt;

&lt;p&gt;Minor bugs were fixed in the newly-enhanced pager objects, the Propel upgrade
task, and the generation of form classes based on Doctrine inheritance models.&lt;/p&gt;

&lt;h2&gt;What's Next?&lt;/h2&gt;

&lt;p&gt;We plan to have two release candidate releases before releasing the first
stable version of symfony 1.3 at the end of the month. The schedule, subject
to change, is as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;16 November:&lt;/strong&gt; 1.3.0 RC1&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;23 November:&lt;/strong&gt; 1.3.0 RC2&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;30 November:&lt;/strong&gt; 1.3.0 stable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Yep, that's one release a week for the rest of the month. If you haven't done
so already, please take a moment to test upgrading an existing symfony 1.2
application to 1.3. The upgrade should go smoothly at this point, but please
post any issues you may encounter to Trac. Thank you for helping make this
coming release the best it can be!&lt;/p&gt;
          &lt;hr / style="margin-bottom: 5px"&gt;
          &lt;div style="font-size: 90%"&gt;
          Be trained by symfony experts
                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-DECEMBER-2009"&gt;Dec 16&lt;/a&gt; Paris                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-JANUARY-2010"&gt;Jan 20&lt;/a&gt; Paris                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-FEBRUARY-2010"&gt;Feb 24&lt;/a&gt; Paris                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-MARCH-2010"&gt;Mar 24&lt;/a&gt; Paris                    &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/symfony/blog/~4/RUx_9pbFmM8" height="1" width="1"/&gt;</description>
        <guid isPermaLink="false">http://www.symfony-project.org/blog/2009/11/10/symfony-1-3-beta-2</guid>
        <author>Kris Wallsmith</author>
        <pubDate>Tue, 10 Nov 09 20:41:00 +0100</pubDate>
        <comments />
      <feedburner:origLink>http://www.symfony-project.org/blog/2009/11/10/symfony-1-3-beta-2</feedburner:origLink></item>
          <item>
        <title>Lime 2 alpha released</title>
        <link>http://feedproxy.google.com/~r/symfony/blog/~3/PcsK6nHPJ5k/lime-2-alpha-released</link>
        <description>&lt;p&gt;I am happy to announce the immediate availability of &lt;strong&gt;Lime 2 alpha 1&lt;/strong&gt;! The second
version of symfony's very own testing framework has been under heavy development 
since early July. Many exciting new features have been added since then, and now
you have the opportunity to try them out!&lt;/p&gt;

&lt;p&gt;In this blog post, I want to outline the most important new features of Lime 2.&lt;/p&gt;

&lt;h2&gt;Upgrading a Project&lt;/h2&gt;

&lt;p&gt;Upgrading a symfony project to use Lime 2 is straight forward. You simply need
to replace the file &lt;code&gt;lime.php&lt;/code&gt; that comes bundled with symfony with a symbolic
link to the &lt;code&gt;lime.php&lt;/code&gt; that comes bundled with Lime 2.&lt;/p&gt;

&lt;blockquote class="tip"&gt;&lt;p&gt;
  Lime 2 is nearly completely &lt;strong&gt;backwards compatible&lt;/strong&gt;! The only thing that is not
  BC is the configuration of the harness and the coverage class. In Lime 1, this
  was done through public properties which have now been removed. Instead, you 
  can pass these properties as options to the constructor.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;First of all, checkout a copy of Lime 2 from SVN:&lt;/p&gt;

&lt;pre class="command-line"&gt;&lt;code&gt;&amp;gt; svn co http://svn.symfony-project.com/tools/lime/tags/RELEASE_2_0_0_ALPHA1 lib/vendor/Lime2
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now you can replace symfony's &lt;code&gt;lime.php&lt;/code&gt;. The following commands assume that
symfony is installed in &lt;code&gt;lib/vendor/symfony&lt;/code&gt;. Fix the paths if your project
directory structure differs.&lt;/p&gt;

&lt;pre class="command-line"&gt;&lt;code&gt;&amp;gt; cd lib/vendor/symfony/lib/vendor/lime
&amp;gt; mv lime.php lime.php.1.0
&amp;gt; ln -s ../../../../Lime2/lib/lime.php lime.php
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Your done! All your tests will now use Lime 2.&lt;/p&gt;

&lt;h2&gt;Annotation Support&lt;/h2&gt;

&lt;p&gt;Often it is necessary to execute some code before every test to prepare the test 
bed. This code, also called the &lt;em&gt;fixture setup&lt;/em&gt;, had to be written manually 
before every single test in Lime 1. To avoid this code duplication, Lime 2 
features annotations to structure and control your test code.&lt;/p&gt;

&lt;pre class="php"&gt;&lt;span class="kw2"&gt;&amp;lt;?php&lt;/span&gt;
&amp;nbsp;
&lt;span class="kw1"&gt;require_once&lt;/span&gt; &lt;span class="kw3"&gt;dirname&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="kw2"&gt;__FILE__&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;.&lt;span class="st0"&gt;'/../boostrap/unit.php'&lt;/span&gt;;
LimeAnnotationSupport::&lt;span class="me2"&gt;enable&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&lt;span class="re0"&gt;$t&lt;/span&gt; = &lt;span class="kw2"&gt;new&lt;/span&gt; LimeTest&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="nu0"&gt;1&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class="co1"&gt;// @Before&lt;/span&gt;
&amp;nbsp;
  &lt;span class="kw3"&gt;copy&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'data/fixtures/test.png'&lt;/span&gt;, &lt;span class="st0"&gt;'web/uploads/test.png'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
  &lt;span class="re0"&gt;$thumbnail&lt;/span&gt; = &lt;span class="kw2"&gt;new&lt;/span&gt; CukeetThumbnail&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'web/uploads/test.png'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class="co1"&gt;// @After&lt;/span&gt;
&amp;nbsp;
  &lt;span class="kw3"&gt;unlink&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'web/uploads/test.png'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
  &lt;span class="kw3"&gt;unset&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$thumbnail&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class="co1"&gt;// @Test: resize() resizes the thumbnail&lt;/span&gt;
&amp;nbsp;
  &lt;span class="re0"&gt;$thumbnail&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;resize&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="nu0"&gt;100&lt;/span&gt;, &lt;span class="nu0"&gt;100&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
  &lt;span class="re0"&gt;$size&lt;/span&gt; = &lt;span class="kw3"&gt;getimagesize&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$thumbnail&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;getPath&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
  &lt;span class="re0"&gt;$t&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;is&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$size&lt;/span&gt;, &lt;span class="kw3"&gt;array&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="nu0"&gt;100&lt;/span&gt;, &lt;span class="nu0"&gt;100&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;, &lt;span class="st0"&gt;'The image has been resized'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class="co1"&gt;// @Test: save() saves the thumbnail under a different name&lt;/span&gt;
&amp;nbsp;
  &lt;span class="re0"&gt;$thumbnail&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;save&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
  ...&lt;/pre&gt;

&lt;p&gt;The most important annotation is &lt;code&gt;@Test&lt;/code&gt;. This annotation marks a piece of test
code and optionally takes a comment that is printed on the console. The other
annotations are &lt;code&gt;@Before&lt;/code&gt;, &lt;code&gt;@After&lt;/code&gt;, &lt;code&gt;@BeforeAll&lt;/code&gt; and &lt;code&gt;@AfterAll&lt;/code&gt;. The first
two can be used to mark code that is executed before or after &lt;em&gt;every&lt;/em&gt; test.
The other two are used to mark code to be run once before or after &lt;em&gt;all&lt;/em&gt; tests.
All code following an annotation belongs to this annotation until the next one
is opened.&lt;/p&gt;

&lt;h2&gt;Parallel Processing&lt;/h2&gt;

&lt;p&gt;Lime 2 includes the possibility to execute multiple tests simultaneously, taking
advantage of modern multi-core processors. This way, the performance of test
suite runs can be dramatically improved.&lt;/p&gt;

&lt;p&gt;This functionality is not available from the symfony tasks yet. Instead, you
need to manually setup a test suite. To do so, add the following code to a 
script called &lt;code&gt;prove.php&lt;/code&gt; in the directory &lt;code&gt;test/bin&lt;/code&gt;:&lt;/p&gt;

&lt;pre class="php"&gt;&lt;span class="kw2"&gt;&amp;lt;?php&lt;/span&gt;
&amp;nbsp;
&lt;span class="kw1"&gt;include&lt;/span&gt; &lt;span class="kw3"&gt;dirname&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="kw2"&gt;__FILE__&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;.&lt;span class="st0"&gt;'/../bootstrap/unit.php'&lt;/span&gt;;
&amp;nbsp;
&lt;span class="re0"&gt;$h&lt;/span&gt; = &lt;span class="kw2"&gt;new&lt;/span&gt; LimeTestSuite&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&lt;span class="re0"&gt;$h&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;register&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;sfFinder::&lt;span class="me2"&gt;type&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'file'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;name&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'*Test.php'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;in&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="kw3"&gt;dirname&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="kw2"&gt;__FILE__&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;.&lt;span class="st0"&gt;'/..'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class="kw3"&gt;exit&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$h&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;run&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; ? &lt;span class="nu0"&gt;0&lt;/span&gt; : &lt;span class="nu0"&gt;1&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;

&lt;p&gt;Execute the test suite from a console window:&lt;/p&gt;

&lt;pre class="command-line"&gt;&lt;code&gt;&amp;gt; php test/bin/prove.php
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;All your tests should execute as usual. Now add the switch &lt;code&gt;--processes&lt;/code&gt; to
enable parallel processing:&lt;/p&gt;

&lt;pre class="command-line"&gt;&lt;code&gt;&amp;gt; php test/bin/prove.php --processes=16
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The performance of the test suite should be better now. We'd be happy if you
shared your personal performance gain in the comments!&lt;/p&gt;

&lt;h2&gt;Powerful Mock And Stub Generation&lt;/h2&gt;

&lt;p&gt;Lime 2 features one of the most powerful yet easy to use mock and stub generators
available in PHP. Usually you want to test your classes without testing any
other classes that they depend on. This is why these other classes are usually
replaced by &lt;em&gt;fake implementations&lt;/em&gt; in tests, also called Mock and Stub objects.
Because coding these fake implementations takes a lot of time, Lime 2 generates 
fake implementations for you.&lt;/p&gt;

&lt;p&gt;To create a Stub or Mock object call &lt;code&gt;stub()&lt;/code&gt; or &lt;code&gt;mock()&lt;/code&gt; on your &lt;code&gt;LimeTest&lt;/code&gt;
object:&lt;/p&gt;

&lt;pre class="php"&gt;&lt;span class="re0"&gt;$user&lt;/span&gt; = &lt;span class="re0"&gt;$t&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;stub&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'sfUser'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;

&lt;p&gt;The basic difference between Stubs and Mocks is that Stubs ignore any unexpected
method calls by default while Mocks throw exceptions in this case.&lt;/p&gt;

&lt;p&gt;To configure a method call, just call the method with the expected parameters.
If you don't care about the parameters, pass the method name to &lt;code&gt;any()&lt;/code&gt;:&lt;/p&gt;

&lt;pre class="php"&gt;&lt;span class="re0"&gt;$user&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;setAttribute&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'foo'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&lt;span class="re0"&gt;$user&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;any&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'getAttribute'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;

&lt;p&gt;You can configure method return values, exceptions and forward method calls to
callables:&lt;/p&gt;

&lt;pre class="php"&gt;&lt;span class="re0"&gt;$user&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;getAttribute&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'foo'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;returns&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'bar'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&lt;span class="re0"&gt;$user&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;getAttribute&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'moo'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;throws&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'Exception'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class="kw2"&gt;function&lt;/span&gt; testGetAttribute&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$attribute&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt; ... &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
&lt;span class="re0"&gt;$user&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;any&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'getAttribute'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;callback&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'testGetAttribute'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;

&lt;p&gt;After configuring the expected method calls, you have to call &lt;code&gt;replay()&lt;/code&gt;. Only
now your object will behave as configured. Optionally you can call &lt;code&gt;verify()&lt;/code&gt;
after executing the test to check whether all configured methods have been
called.&lt;/p&gt;

&lt;pre class="php"&gt;&lt;span class="re0"&gt;$user&lt;/span&gt; = &lt;span class="re0"&gt;$t&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;mock&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'sfUser'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&lt;span class="re0"&gt;$user&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;getAttribute&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'username'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;returns&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'bernhard'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&lt;span class="re0"&gt;$user&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;setAttribute&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'authorized'&lt;/span&gt;, &lt;span class="kw2"&gt;true&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&lt;span class="re0"&gt;$user&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;replay&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class="re0"&gt;$form&lt;/span&gt; = &lt;span class="kw2"&gt;new&lt;/span&gt; LoginForm&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$user&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&lt;span class="co1"&gt;// internally calls getAttribute() and setAttribute()    &lt;/span&gt;
&lt;span class="re0"&gt;$form&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;save&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class="re0"&gt;$user&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;verify&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;

&lt;p&gt;When you want to test exactly how often a method was called, use either of the
count constraints:&lt;/p&gt;

&lt;pre class="php"&gt;&lt;span class="re0"&gt;$user&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;getAttribute&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'foo'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;never&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&lt;span class="re0"&gt;$user&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;getAttribute&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'foo'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;once&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&lt;span class="re0"&gt;$user&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;getAttribute&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'foo'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;atLeastOnce&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&lt;span class="re0"&gt;$user&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;getAttribute&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'foo'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;times&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="nu0"&gt;3&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&lt;span class="re0"&gt;$user&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;getAttribute&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'foo'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;between&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="nu0"&gt;2&lt;/span&gt;, &lt;span class="nu0"&gt;5&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;

&lt;p&gt;If you want to test single method parameters, use &lt;code&gt;parameter()&lt;/code&gt; with any of
the test operators (like &lt;code&gt;is()&lt;/code&gt;, &lt;code&gt;like()&lt;/code&gt; etc.) available in &lt;code&gt;LimeTest&lt;/code&gt;:&lt;/p&gt;

&lt;pre class="php"&gt;&lt;span class="re0"&gt;$mailer&lt;/span&gt; = &lt;span class="re0"&gt;$t&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;mock&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'sfMailer'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&lt;span class="re0"&gt;$mailer&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;any&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'compose'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;
       -&amp;gt;&lt;span class="me1"&gt;parameter&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="nu0"&gt;2&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;is&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'bernhard.schussek@symfony-project.com'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;
       -&amp;gt;&lt;span class="me1"&gt;parameter&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="nu0"&gt;4&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;like&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'/Your activation code is ABCXYZ/'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;
       -&amp;gt;&lt;span class="me1"&gt;returns&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$message&lt;/span&gt; = &lt;span class="re0"&gt;$t&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;stub&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'Swift_Message'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&lt;span class="re0"&gt;$mailer&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;send&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$message&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;

&lt;p&gt;More information about the Mock and Stub generator will be available in the
upcoming documentation.&lt;/p&gt;

&lt;h2&gt;Test Operator Overloading&lt;/h2&gt;

&lt;p&gt;If you ever tried comparing two Doctrine objects with &lt;code&gt;is()&lt;/code&gt;, you have
probably seen that the tests almost always fail.&lt;/p&gt;

&lt;pre class="php"&gt;&lt;span class="re0"&gt;$user&lt;/span&gt; = &lt;span class="kw2"&gt;new&lt;/span&gt; User&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&lt;span class="re0"&gt;$user&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;fromArray&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="kw3"&gt;array&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'username'&lt;/span&gt; =&amp;gt; &lt;span class="st0"&gt;'bernhard'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&lt;span class="re0"&gt;$user&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;save&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class="re0"&gt;$result&lt;/span&gt; = Doctrine::&lt;span class="me2"&gt;getTable&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'User'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;findOneByUsername&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'bernhard'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class="re0"&gt;$t&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;is&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$result&lt;/span&gt;, &lt;span class="re0"&gt;$user&lt;/span&gt;, &lt;span class="st0"&gt;'The correct user was returned'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;

&lt;p&gt;The problem is (from a testing point of view) that Doctrine stores a lot of
metadata in the records that differ from record to record, even if both
contain the same properties, primary key and relations.&lt;/p&gt;

&lt;p&gt;Lime 2 features support for overloading the test operators for specific data 
types. You can implement your own "tester" class that specifies when the operator 
should match for a value of this type.&lt;/p&gt;

&lt;pre class="php"&gt;&lt;span class="kw2"&gt;class&lt;/span&gt; myTesterDoctrineRecord &lt;span class="kw2"&gt;extends&lt;/span&gt; LimeTesterObject
&lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
  &lt;span class="coMULTI"&gt;/**
   * Matches when two Doctrine records have the same primary key,
   * attributes and relations.
   */&lt;/span&gt;
  &lt;span class="kw2"&gt;public&lt;/span&gt; &lt;span class="kw2"&gt;function&lt;/span&gt; is&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;LimeTester &lt;span class="re0"&gt;$otherValue&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt; ... &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
LimeTester::&lt;span class="me2"&gt;register&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'Doctrine_Record'&lt;/span&gt;, &lt;span class="st0"&gt;'myTesterDoctrineRecord'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class="re0"&gt;$t&lt;/span&gt;-&amp;gt;&lt;span class="me1"&gt;is&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re0"&gt;$result&lt;/span&gt;, &lt;span class="re0"&gt;$user&lt;/span&gt;, &lt;span class="st0"&gt;'The correct user was returned'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;

&lt;p&gt;The supported datatypes are &lt;code&gt;null&lt;/code&gt;, &lt;code&gt;integer&lt;/code&gt;, &lt;code&gt;boolean&lt;/code&gt;, &lt;code&gt;string&lt;/code&gt;, &lt;code&gt;double&lt;/code&gt;,
&lt;code&gt;array&lt;/code&gt;, &lt;code&gt;object&lt;/code&gt;, &lt;code&gt;resource&lt;/code&gt; and any class or interface name of your choice.&lt;/p&gt;

&lt;h2&gt;What's Next?&lt;/h2&gt;

&lt;p&gt;Many more features were added to Lime 2. These will be explained in further blog
posts and the upcoming documentation. In the next weeks, a CLI tool for 
executing Lime tests in a developer friendly way will be implemented, which is
the last major planned feature before entering beta stage.&lt;/p&gt;

&lt;p&gt;Lime 2 is expected to enter beta stage in December or January 2010, depending on 
the amount of developer feedback on the alpha releases. You are warmly invited to 
check out the source of Lime 2, play around with it and give feedback on the 
&lt;a href="http://groups.google.com/group/symfony-users"&gt;symfony-users&lt;/a&gt; mailing list or in 
the &lt;a href="http://trac.symfony-project.com/timeline"&gt;symfony Trac&lt;/a&gt;. Just keep in mind
that the code is still alpha, so please don't use it in production.&lt;/p&gt;
          &lt;hr / style="margin-bottom: 5px"&gt;
          &lt;div style="font-size: 90%"&gt;
          Be trained by symfony experts
                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-DECEMBER-2009"&gt;Dec 16&lt;/a&gt; Paris                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-JANUARY-2010"&gt;Jan 20&lt;/a&gt; Paris                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-FEBRUARY-2010"&gt;Feb 24&lt;/a&gt; Paris                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-MARCH-2010"&gt;Mar 24&lt;/a&gt; Paris                    &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/symfony/blog/~4/PcsK6nHPJ5k" height="1" width="1"/&gt;</description>
        <guid isPermaLink="false">http://www.symfony-project.org/blog/2009/11/10/lime-2-alpha-released</guid>
        <author>Bernhard Schussek</author>
        <pubDate>Tue, 10 Nov 09 10:17:00 +0100</pubDate>
        <comments />
      <feedburner:origLink>http://www.symfony-project.org/blog/2009/11/10/lime-2-alpha-released</feedburner:origLink></item>
          <item>
        <title>A week of symfony #149 (2-&gt;8 November 2009)</title>
        <link>http://feedproxy.google.com/~r/symfony/blog/~3/pkdlomlzT_8/a-week-of-symfony-149-2-8-november-2009</link>
        <description>&lt;p&gt;Symfony documentation was heavily updated this week, mostly the new &lt;a href="http://www.symfony-project.org/jobeet/1_3/"&gt;Jobeet 1.3 book&lt;/a&gt;. Meanwhile, symfony 1.3 continued polishing some features before its long-awaited final release. ORM development activity was frenetic and both Propel and Doctrine were updated to their latest versions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Development mailing list&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Discussions about &lt;a href="http://groups.google.es/group/symfony-devs/browse_thread/thread/642a95b5fc1f9710"&gt;deprecated Errors on PHP 5.3&lt;/a&gt;, &lt;a href="http://groups.google.es/group/symfony-devs/browse_thread/thread/72ac2139b2c3bed9"&gt;module extensions&lt;/a&gt; and &lt;a href="http://groups.google.es/group/symfony-devs/browse_thread/thread/65dbccc94610125d"&gt;generator files&lt;/a&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Development highlights&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23502"&gt;r23502&lt;/a&gt;: [1.3] made test working under windows as well (ignores line breaks)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23511"&gt;r23511&lt;/a&gt;: [1.3] fixed project:optimize help&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23515"&gt;r23515&lt;/a&gt;: [1.3] fixed Form Helper use of Rich Text Editors broken by changes in autoloader&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23520"&gt;r23520&lt;/a&gt;: [1.3] references to external modules in bundled xhtml11 dtd&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23521"&gt;r23521&lt;/a&gt;: [1.3] added unit tests for sfDebug and sfTimer[Manager]&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23526"&gt;r23526&lt;/a&gt;: [1.3] updated propel upgrade to be smarter and include consideration for nested set builders&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23543"&gt;r23543&lt;/a&gt;: [1.0] fixed deprecated use of split for PHP 5.3&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23544"&gt;r23544&lt;/a&gt;: [1.3] moved getMailer() method from sfAction to sfComponent&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23545"&gt;r23545&lt;/a&gt;: [1.3] refactor the project:send-emails task to give a getMailer() method for all tasks&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23549"&gt;r23549&lt;/a&gt;: [1.3] refactored the app:routes task to give a getRouting() method for all tasks&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23567"&gt;r23567&lt;/a&gt;: [lime 2.0] fixed generating a mock class does not trigger autoloading to allow existing classes to be stubbed&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23568"&gt;r23568&lt;/a&gt;: [1.3] added some more useful output to response tester's isValid method&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23569"&gt;r23569&lt;/a&gt;: [lime 2.0] added a return value can be configured even if a callback is specified for a mocked method&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23600"&gt;r23600&lt;/a&gt;: [1.3] added real cache key (including prefix) to the partial info panel to aid checking the cache&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23651"&gt;r23651&lt;/a&gt;: [1.3] made sfTask::getRouting() lazy&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23675"&gt;r23675&lt;/a&gt;: [lime 2.0] added method -&gt;parameter() to the mock for setting constraints on single method parameters&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23677"&gt;r23677&lt;/a&gt;, &lt;a href="http://trac.symfony-project.org/changeset/23678"&gt;r23678&lt;/a&gt;: [lime 2.0] pushed deprecated methods LimeTest::compare(), LimeTest::compare(), LimeTest::hasMethod() and LimeTest::isa() down to class lime_test&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23679"&gt;r23679&lt;/a&gt;: [lime 2.0] mocks always use parameter matchers to compare method parameters now. As a result the error messages when a method is called with wrong parameters are now more clear&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23680"&gt;r23680&lt;/a&gt;: [lime 2.0] implemented method LimeTester::unregister()&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23682"&gt;r23682&lt;/a&gt;: [lime 2.0] exception objects can now be passed to LimeTest::expect(). They are compared using the new constraint classes which allows for a more flexible usage of expect() with custom exceptions&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23685"&gt;r23685&lt;/a&gt;: [lime 2.0] renamed the assert*() methods to match the more simple method names in LimeTest and LimeMockInvocationMatcherParameter&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;sfDoctrinePlugin&lt;/strong&gt;:
  &lt;ul&gt;

    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23516"&gt;r23516&lt;/a&gt;: [1.3] added a test to check if the BaseForm class exists when building Doctrine or Propel forms&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23518"&gt;r23518&lt;/a&gt;: [1.3] fixed cascade schema.yml across multiple plugins generates Plugin classes to wrong directory&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23539"&gt;r23539&lt;/a&gt;: [1.3] fix to Doctrine model building to allow packages&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23601"&gt;r23601&lt;/a&gt;: [1.2] updated Doctrine to 1.0.13&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23668"&gt;r23668&lt;/a&gt;: [1.3] fixed doctrine form inheritance when the foreign key on one inheritance model references another inheritance model&lt;/li&gt;

    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23690"&gt;r23690&lt;/a&gt;: [1.3] improved timings in doctrine logging&lt;/li&gt;
  &lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;sfPropelPlugin&lt;/strong&gt;:
  &lt;ul&gt;
    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23516"&gt;r23516&lt;/a&gt;: [1.3] added a test to check if the BaseForm class exists when building Doctrine or Propel forms&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23692"&gt;r23692&lt;/a&gt;: [1.3] now using propel 1.4.0 stable tag&lt;/li&gt;

    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23696"&gt;r23696&lt;/a&gt;: [1.3] updated Propel sfWebDebugPanel to respect configuration done in DebugPDO&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23697"&gt;r23697&lt;/a&gt;: [1.3] made Propel sfWebDebugPanel creation less magic and more explicit&lt;/li&gt;
  &lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://trac.symfony-project.com/trac/timeline?from=11%2F08%2F2009&amp;daysback=6&amp;milestone=on&amp;ticket=on&amp;changeset=on&amp;update=Update"&gt;...and many other changes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="http://components.symfony-project.org/"&gt;Symfony components&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;strong&gt;dependency injection&lt;/strong&gt;:
  &lt;ul&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23506"&gt;r23506&lt;/a&gt;:  added support for service references in parameters&lt;/li&gt;
  &lt;/ul&gt;
&lt;/li&gt;&lt;li&gt;&lt;strong&gt;yaml&lt;/strong&gt;:
  &lt;ul&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23504"&gt;r23504&lt;/a&gt;:  fixed a notice on non-defined constant&lt;/li&gt;
  &lt;/ul&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Development digest&lt;/strong&gt;: 199 changesets, 35 bugs reported, 22 bugs fixed, 4 enhancements suggested, 2 enhancements closed, 8 documentation defects reported, 17 documentation defects fixed, and 16 documentation edits.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Documentation&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Updated &lt;a href="http://www.symfony-project.org/jobeet/1_2/it/"&gt;Italian&lt;/a&gt; translation of Jobeet tutorial&lt;/li&gt;
  &lt;li&gt;Updated &lt;a href="http://trac.symfony-project.org/wiki/1day1ticket"&gt;1 day 1 ticket&lt;/a&gt;, and &lt;a href="http://trac.symfony-project.org/wiki/HowToContributeToSymfony"&gt;How to contribute to symfony&lt;/a&gt; pages&lt;/li&gt;

  &lt;li&gt;Updated &lt;a href="http://www.symfony-project.org/reference/1_3/en/"&gt;symfony 1.3 reference&lt;/a&gt;:
    &lt;ul&gt;
      &lt;li&gt;&lt;a href="http://www.symfony-project.org/reference/1_3/en/06-Admin-Generator"&gt;chapter 6&lt;/a&gt;: added two missing options in the reference book for the admin generator, fixed date_Format info&lt;/li&gt;
      &lt;li&gt;&lt;a href="http://www.symfony-project.org/reference/1_3/en/14-Other-Configuration-Files"&gt;chapter 14&lt;/a&gt;: added documentation for the module.yml configuration file&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;

  &lt;li&gt;Updated &lt;a href="http://www.symfony-project.org/reference/1_3/it/"&gt;Italian&lt;/a&gt;, and &lt;a href="http://www.symfony-project.org/reference/1_3/fr/"&gt;French&lt;/a&gt; translations of symfony 1.3 reference&lt;/li&gt;

  &lt;li&gt;Updated &lt;a href="http://www.symfony-project.org/jobeet/1_3/Propel/en/"&gt;Jobeet 1.3 / Practical symfony 1.3 book&lt;/a&gt;:
    &lt;ul&gt;
      &lt;li&gt;&lt;a href="http://www.symfony-project.org/jobeet/1_3/Propel/en/01"&gt;chapter 1&lt;/a&gt;: updated chapter 1 of Jobeet&lt;/li&gt;

      &lt;li&gt;&lt;a href="http://www.symfony-project.org/jobeet/1_2/Propel/en/03"&gt;chapter 3&lt;/a&gt;: fixed Doctrine specific shortcut, changed all doctrine:build* task to use the new doctrine:build task&lt;/li&gt;
      &lt;li&gt;&lt;a href="http://www.symfony-project.org/jobeet/1_2/Propel/en/04"&gt;chapter 4&lt;/a&gt;: added the short version of include_slot() for default values&lt;/li&gt;
      &lt;li&gt;&lt;a href="http://www.symfony-project.org/jobeet/1_2/Propel/en/05"&gt;chapter 5&lt;/a&gt;: replaced redirect() calls with the new support for objects&lt;/li&gt;
      &lt;li&gt;&lt;a href="http://www.symfony-project.org/jobeet/1_2/Propel/en/07"&gt;chapter 7&lt;/a&gt;: use the new Iterator interface of Pager&lt;/li&gt;
      &lt;li&gt;&lt;a href="http://www.symfony-project.org/jobeet/1_2/Propel/en/09"&gt;chapter 9&lt;/a&gt;: added a paragraph about --only-failed option of test:all, added a tip about the new --xml option of test:all&lt;/li&gt;

      &lt;li&gt;&lt;a href="http://www.symfony-project.org/jobeet/1_2/Propel/en/10"&gt;chapter 10&lt;/a&gt;: added usage of useFields() in Jobeet chapter 10, added a tip about how to not generate form and filter classes, replaced redirect() calls with the new support for objects&lt;/li&gt;
      &lt;li&gt;&lt;a href="http://www.symfony-project.org/jobeet/1_2/Propel/en/11"&gt;chapter 11&lt;/a&gt;: replaced redirect() calls with the new support for objects&lt;/li&gt;
      &lt;li&gt;&lt;a href="http://www.symfony-project.org/jobeet/1_2/Propel/en/13"&gt;chapter 13&lt;/a&gt;: replaced redirect() calls with the new support for objects, changed all doctrine:build* task to use the new doctrine:build task&lt;/li&gt;
      &lt;li&gt;&lt;a href="http://www.symfony-project.org/jobeet/1_2/Propel/en/15"&gt;chapter 15&lt;/a&gt;: replaced usage of contains() by matches()&lt;/li&gt;
      &lt;li&gt;&lt;a href="http://www.symfony-project.org/jobeet/1_2/Propel/en/19"&gt;chapter 19&lt;/a&gt;: use the new Iterator interface of Pager, changed all doctrine:build* task to use the new doctrine:build task&lt;/li&gt;

      &lt;li&gt;&lt;a href="http://www.symfony-project.org/jobeet/1_2/Propel/en/20"&gt;chapter 20&lt;/a&gt;: changed all doctrine:build* task to use the new doctrine:build task&lt;/li&gt;
      &lt;li&gt;&lt;a href="http://www.symfony-project.org/jobeet/1_2/Propel/en/21"&gt;chapter 21&lt;/a&gt;: replaced redirect() calls with the new support for objects&lt;/li&gt;
      &lt;li&gt;&lt;a href="http://www.symfony-project.org/jobeet/1_2/Propel/en/23"&gt;chapter 23&lt;/a&gt;: changed all doctrine:build* task to use the new doctrine:build task&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Updated &lt;a href="http://www.symfony-project.org/jobeet/1_3/Propel/it/"&gt;Italian&lt;/a&gt; translation of Jobeet 1.3 / Practical symfony 1.3 book&lt;/li&gt;

  &lt;li&gt;Updated &lt;a href="http://www.symfony-project.org/tutorial/1_3/en/deprecated"&gt;Deprecations and removals in symfony 1.3&lt;/a&gt; (added is_internal setting in the list of deprecated settings)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;New &lt;a href="http://trac.symfony-project.com/trac/wiki/JobPostings"&gt;Job Postings&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Lead Developer/Senior LAMP Engineer at &lt;a href="http://www.astrumsolar.com"&gt;Astrum Solar Inc.&lt;/a&gt; - full-time based in Columbia, MD - &lt;a href="http://washingtondc.craigslist.org/doc/sof/1450017043.html"&gt;More information&lt;a&gt;&lt;/li&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;New &lt;a href="http://trac.symfony-project.com/trac/wiki/SymfonyBloggers"&gt;symfony bloggers&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://www.metulo.net/"&gt;metulo.net&lt;/a&gt; (&lt;a href="http://www.metulo.net/feed"&gt;feed&lt;/a&gt;) (English, and French)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Plugins&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;New plugins&lt;/strong&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/rkProjectScaffolderPlugin"&gt;rkProjectScaffolderPlugin&lt;/a&gt;: this project is built up to those who, like me, uses free time for planning and sketching projects
&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfGoogleClosurePlugin"&gt;sfGoogleClosurePlugin&lt;/a&gt;: helps you fastly take advantage of Google's Closure JavaScript librearies
&lt;/li&gt;  &lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;strong&gt;Updated plugins&lt;/strong&gt;

  &lt;ul&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfExtraWidgetsPlugin"&gt;sfExtraWidgetsPlugin&lt;/a&gt;: changed rating star style&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfEasyAuthPlugin"&gt;sfEasyAuthPlugin&lt;/a&gt;: added base classes, added an option to allow users to log in with their email addresses or user names, confirmation emails can now be sent as HTML to improve deliverability, password reset emails are now sent in html, no need to redirect users after the auto-log-in filter so that has been removed to try to resolve problems with user sesions, the user filter now trims the user name and email address before searching for users, fixed a bug that would only return ea users who were authenticated, updated README, added a warning to the app.yml file about creating an sfEasyAuthUser class&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfGuardPlugin"&gt;sfGuardPlugin&lt;/a&gt;: created 1.3 branch&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfTaskLoggerPlugin"&gt;sfTaskLoggerPlugin&lt;/a&gt;: added new option thats allows to log only if there were things processed by the task, added new option to check if the task was already run once today, aded new option to check if the task is already running, fixed log file name and Propel schema&lt;/li&gt;

    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/pkToolkitPlugin"&gt;pkToolkitPlugin&lt;/a&gt;: cleaned up photo icons, new suggested standard fixtures settings, pkDoctrine::orderByList() allows query results to be returned in a fixed order by passing an array of object IDs, pkZendSearch now uses pkDoctrine::orderByList to provide portability between databases, use pkSignin::signin when privileges are lacking so that there's a chance for the user to log in, pkCheckboxEnables can now show/hide a selector in addition to the usual selector that gets enabled/disabled, JavaScript for a CRUD AJAX chunk form is now loaded at the end of the form so that jQuery code can affect things created by jQuery code inside the form's template and/or widgets&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/ysfOpenPlugin"&gt;ysfOpenPlugin&lt;/a&gt;: fixed default app.yml configuration, added getAccessToken to ysfApplicationWebRequest to fetch oauth access tokens from request&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfDoctrineGuardPlugin"&gt;sfDoctrineGuardPlugin&lt;/a&gt;: removed plugin form classes whose generation has been disabled and added basic test coverage of form classes&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfWeatherPlugin"&gt;sfWeatherPlugin&lt;/a&gt;: changed weather icons, updated documentation&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/swBaseApplicationPlugin"&gt;swBaseApplicationPlugin&lt;/a&gt;: tweaked CSS&lt;/li&gt;

    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/pkContextCMSPlugin"&gt;pkContextCMSPlugin&lt;/a&gt;: implemented and documented view_locked_sufficient_credentials as an alternative to the simplistic "any logged in user can see locked pages" policy which is still the default, the plumbing is now there for page-specific view credentials but the UI needs to be built, fixed the multiple select elements on the page settings form were default HTML multiple select boxes due to a JS error, if you prefer new slots to appear at the bottom of areas rather than the top you can now set app_pkContextCMS_new_slots_top to false, first changes moving toward greater SQL92 compatibility, default users and groups now includes a view_locked permission for the guest group although you still have to tweak app.yml to turn on a credentials check for locked pages, good sfSyncContentPlugin settings for CMS sites&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/lcOpenInviterPlugin"&gt;lcOpenInviterPlugin&lt;/a&gt;: committed first version, changed the $files_basebase_base values to the OpenInviter values, location of _base.php is declared properly now, commented out OpenInviter update procedure&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfDoctrineActAsTaggablePlugin"&gt;sfDoctrineActAsTaggablePlugin&lt;/a&gt;: fixed indexes for the tag table were set up with bad schema.yml syntax&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/diemPlugin"&gt;diemPlugin&lt;/a&gt;:
      &lt;ul&gt;
        &lt;li&gt;refactored the security plugin&lt;/li&gt;

        &lt;li&gt;renamed dmMigrateTask to dmGenerateMigrationTask&lt;/li&gt;
        &lt;li&gt;added admin user module classes for form and export&lt;/li&gt;
        &lt;li&gt;updated all user related classes to match new security subframework&lt;/li&gt;
        &lt;li&gt;changed all admin generator.yml table_method configuration to getAdminListQuery&lt;/li&gt;
        &lt;li&gt;made command line installer more readable&lt;/li&gt;
        &lt;li&gt;made cache_cleaner service extend dmConfigurable&lt;/li&gt;

        &lt;li&gt;disabled model validation in dmModuleManagerConfigHandler&lt;/li&gt;
        &lt;li&gt;fixed bug in dmDoctrineRecord-&gt;get&lt;/li&gt;
        &lt;li&gt;fixed bug in dmAdminGenerateTask when generating diem modules&lt;/li&gt;
        &lt;li&gt;fixed bug in dmDataTask when loading security groups&lt;/li&gt;
        &lt;li&gt;improved dmLoremizeTask output&lt;/li&gt;
        &lt;li&gt;fixed dmSecurityUser-&gt;signIn&lt;/li&gt;

        &lt;li&gt;fixed auth module layout choice&lt;/li&gt;
        &lt;li&gt;improved admin security modules configuration&lt;/li&gt;
        &lt;li&gt;fixed admin user module&lt;/li&gt;
        &lt;li&gt;made dmSecurityUser more robust and work without context instance&lt;/li&gt;
        &lt;li&gt;fixed auth layout choice when redisplaying the form after a wrong password&lt;/li&gt;
        &lt;li&gt;made possible to have 2 diem modules for 1 model&lt;/li&gt;

        &lt;li&gt;configured with_doctrine_route: false in all generator.yml files&lt;/li&gt;
        &lt;li&gt;made dmAPCCache more robust on cli environment&lt;/li&gt;
        &lt;li&gt;made dmConfig survive when dm_settings table does not exist&lt;/li&gt;
        &lt;li&gt;disabled all model checks in dmModuleManagerConfigHandler&lt;/li&gt;
        &lt;li&gt;added a Doctrine_Connection parameter to dmDb::pdo&lt;/li&gt;
        &lt;li&gt;fixed dmDoctrineQuery-&gt;whereDescendantId when the model has two or more diem modules&lt;/li&gt;
        &lt;li&gt;fixed warnings in dmFormDoctrine when embedded forms have been unsetted&lt;/li&gt;
        &lt;li&gt;fixed recursion madness in dmFileLog-&gt;fixLog&lt;/li&gt;
        &lt;li&gt;removed seo title prefix &amp; suffix from dmSeoSynchronizer&lt;/li&gt;
        &lt;li&gt;fixed dmAdminFunctionalCoverageTest urls prefixes&lt;/li&gt;
        &lt;li&gt;fixed dmCoreFunctionalCoverageTest user signin simulation&lt;/li&gt;
        &lt;li&gt;made dmMediaResource throw an exception when the source is a new instance of DmMedia&lt;/li&gt;
        &lt;li&gt;removed deprecated noRightClick jQuery function from dmCorePlugins.js&lt;/li&gt;
        &lt;li&gt;fixed front widget filters and wrap classes&lt;/li&gt;
        &lt;li&gt;fixed front ajax edit actions expect a put method instead of a post&lt;/li&gt;
        &lt;li&gt;added dmUserPlugin tasks: change-password and promote&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfAtosPaymentPlugin"&gt;sfAtosPaymentPlugin&lt;/a&gt;: added setTransactionId&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/cleverFilesystemPlugin"&gt;cleverFilesystemPlugin&lt;/a&gt;: more explicit error messages&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/lcFlowPlayerPlugin"&gt;lcFlowPlayerPlugin&lt;/a&gt;: submitted the plugin to the symfony svn repos&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/ncPropelChangeLogBehaviorPlugin"&gt;ncPropelChangeLogBehaviorPlugin&lt;/a&gt;: fixed Propel query criteria, whenever a field is rendered the 'table_name.field_name' event is triggered with the value of the field as the parameter&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfPhpunitPlugin"&gt;sfPhpunitPlugin&lt;/a&gt;: fixed SuiteLoader throws an exeption when try to use *, created classes for managing fixtures, added a module for easy runing tests and html visual result of testing, added security off for sfPhpunit module&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfFacebookConnectPlugin"&gt;sfFacebookConnectPlugin&lt;/a&gt;: added basic remember me filter&lt;/li&gt;
  &lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;New &lt;a href="http://trac.symfony-project.org/wiki/ApplicationsDevelopedWithSymfony"&gt;symfony powered websites&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://www.patw.it"&gt;People At Work&lt;/a&gt;: (English, and Italian) a company website&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.sound-cave.com"&gt;Sound Cave&lt;/a&gt;: (English, and Italian) an e-commerce (music cd - t-shirts) website&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://job.letsbuyit.com"&gt;The (second) best job in the word&lt;/a&gt;: (English) Buzz/Competition to win a job as an International Shopping Consultant&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.leproducasino.com/"&gt;Leproducasino&lt;/a&gt;: (French) learn online casino rules&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;They talked about us&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://linuxfr.org/2009/11/02/26111.html"&gt;Annonce en vidéo du forum PHP et conférences audio de Symfony 2009&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.symfonybr.com/2009/11/03/symfony-snippet-maneiras-de-acessar-o-objeto-user/"&gt;Symfony - Snippet - Maneiras de acessar o objeto User&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.lafermeduweb.net/billet/tutorial-symfony-l-objet-user-les-acces-et-les-sessions-dans-symfony-640.html"&gt;Tutorial Symfony: L'objet user, les accès et les sessions dans Symfony&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.symfony.es/2009/11/04/screencast-del-soporte-de-symfony-en-netbeans-6-8/"&gt;Screencast del soporte de Symfony en Netbeans 6.8&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://blog.servergrove.com/2009/11/04/symfony-1-3-beta-available-at-servergrove/"&gt;symfony 1.3 beta available at ServerGrove&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.foolbirds.com/1072.html"&gt;打鸟游戏修改版&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://blog.salikhovilyas.ru/2009/11/07/url-correction/"&gt;Коррекция адреса веб-страницы&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.metulo.net/how-to-send-an-email-with-symfony-1-3-and-gmail"&gt;How to send an email with symfony 1.3 and Gmail&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.pinkster.eu/2009/11/04/using-mercurial-as-vcs-for-symfony/"&gt;Using Mercurial as VCS for symfony&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.amicalement-web.net/symfony-une-utilisation-du-type-array-de-doctrine/2009/11/04/"&gt;Symfony: Une utilisation du type array de Doctrine&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.misticyoda.com/2009/11/instalar-symfony-en-fedora-11-3.html"&gt;Instalar Symfony en Fedora 11 - 3&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://avdg.wordpress.com/2009/11/07/bughuntday-symfony-project/"&gt;Bughuntday – Symfony Project&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://devfactor.blogspot.com/2009/11/sympal-installation-fix.html"&gt;Sympal installation fix&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://blog.zedzdead.net/2009/11/06/installing-symfony-and-the-jobeet-tutorial/"&gt;Installing Symfony and the jobeet tutorial&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://blog.tuvinh.com/22-open-source-php-frameworks-to-shorten-your-development-time/"&gt;22 Open Source PHP Frameworks To Shorten Your Development Time&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://d.hatena.ne.jp/brtRiver/20091104/1257301821"&gt;symfony ccで時間がかかる場合&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://d.hatena.ne.jp/innx_hidenori/20091104/1257301563"&gt;ついったーのアイコンにsymfonyアイコンをつける&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.phpkita.com/2009/11/symfony-2-0-akan-menggunakan-php-5-3/"&gt;Symfony 2.0 akan menggunakan PHP 5.3&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://emartini.wordpress.com/2009/11/02/ordenar-cadenas-de-texto-que-contengan-numeros-en-mysql-y-symfony/"&gt;Ordenar cadenas de texto que contengan números en MySQL y Symfony&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://blog.livedoor.jp/techrebornpublic/archives/51683177.html"&gt;symfonyで"Hello World"を作成する&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
          &lt;hr / style="margin-bottom: 5px"&gt;
          &lt;div style="font-size: 90%"&gt;
          Be trained by symfony experts
                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-DECEMBER-2009"&gt;Dec 16&lt;/a&gt; Paris                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-JANUARY-2010"&gt;Jan 20&lt;/a&gt; Paris                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-FEBRUARY-2010"&gt;Feb 24&lt;/a&gt; Paris                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-MARCH-2010"&gt;Mar 24&lt;/a&gt; Paris                    &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/symfony/blog/~4/pkdlomlzT_8" height="1" width="1"/&gt;</description>
        <guid isPermaLink="false">http://www.symfony-project.org/blog/2009/11/08/a-week-of-symfony-149-2-8-november-2009</guid>
        <author>Javier Eguiluz</author>
        <pubDate>Sun, 08 Nov 09 22:36:00 +0100</pubDate>
        <comments />
      <feedburner:origLink>http://www.symfony-project.org/blog/2009/11/08/a-week-of-symfony-149-2-8-november-2009</feedburner:origLink></item>
          <item>
        <title>Using Propel 1.4 detailed logging</title>
        <link>http://feedproxy.google.com/~r/symfony/blog/~3/HUZpIm8OztI/using-propel-1-4-detailed-logging</link>
        <description>&lt;p&gt;&lt;a href="http://propel.posterous.com/propel-140-stable-is-there"&gt;Today Propel 1.4 was released&lt;/a&gt; and it contains some debugging goodies.
We can use the &lt;code&gt;DebugPDO&lt;/code&gt; class to get the nifty logging into the &lt;em&gt;Web Debug Panel&lt;/em&gt;. However some more interesting information is turned off by default by Propel.
It includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Time logging

&lt;ul&gt;
&lt;li&gt;Time spent for executing this query &lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Memory logging

&lt;ul&gt;
&lt;li&gt;Peak Usage during execution of the query&lt;/li&gt;
&lt;li&gt;Total Memory usage after the query ran&lt;/li&gt;
&lt;li&gt;Memory Delta caused by executing the query&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Slow query logging

&lt;ul&gt;
&lt;li&gt;Duration after which a query is considered slow&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using this is very easy as of today / symfony 1.3 beta 2:&lt;/p&gt;

&lt;pre&gt;dev:
  propel:
    param:
      classname: DebugPDO
      debug:
        realmemoryusage: true
        details:
          time:
            enabled: true
          slow:
            enabled: true
            threshold: 0.001
          memdelta:
            enabled: true
          mempeak:
            enabled: true
          method:
            enabled: true
          mem:
            enabled: true
          querycount:
            enabled: true&lt;/pre&gt;

&lt;p&gt;The whole list can be found in the &lt;a href="http://propel.phpdb.org/docs/api/1.4/runtime/propel-util/DebugPDO.html#class_details"&gt;Propel Documentation&lt;/a&gt;. The prefix &lt;code&gt;debugpdo.logging&lt;/code&gt; is taken care of by the key &lt;code&gt;debug&lt;/code&gt;. Simply put the remaining path below it, creating a new nesting level each dot.&lt;/p&gt;

&lt;p&gt;Because Propel takes the order into account, the above configuration results into something like this:&lt;/p&gt;

&lt;div style="padding: 20px"&gt;
  &lt;img src="/uploads/assets/propel_web_debug_1_4.png" alt="Propel 1.4 detailed logging" /&gt;
&lt;/div&gt;
          &lt;hr / style="margin-bottom: 5px"&gt;
          &lt;div style="font-size: 90%"&gt;
          Be trained by symfony experts
                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-DECEMBER-2009"&gt;Dec 16&lt;/a&gt; Paris                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-JANUARY-2010"&gt;Jan 20&lt;/a&gt; Paris                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-FEBRUARY-2010"&gt;Feb 24&lt;/a&gt; Paris                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-MARCH-2010"&gt;Mar 24&lt;/a&gt; Paris                    &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/symfony/blog/~4/HUZpIm8OztI" height="1" width="1"/&gt;</description>
        <guid isPermaLink="false">http://www.symfony-project.org/blog/2009/11/08/using-propel-1-4-detailed-logging</guid>
        <author>Fabian Lange</author>
        <pubDate>Sun, 08 Nov 09 21:22:00 +0100</pubDate>
        <comments />
      <feedburner:origLink>http://www.symfony-project.org/blog/2009/11/08/using-propel-1-4-detailed-logging</feedburner:origLink></item>
          <item>
        <title>A week of symfony #148 (26 October -&gt; 1 November 2009)</title>
        <link>http://feedproxy.google.com/~r/symfony/blog/~3/22mHn5JSu8s/a-week-of-symfony-148-26-october-1-november-2009</link>
        <description>&lt;p&gt;Symfony 1.3 completed this week another milestone with its beta 1 version release. Meanwhile, it was announced that &lt;a href="http://www.symfony-project.org/blog/2009/10/27/why-will-symfony-2-0-finally-use-php-5-3"&gt;Symfony 2.0 will finally require PHP 5.3&lt;/a&gt; and the &lt;a href="http://www.slideshare.net/fabpot/symfony-20-on-php-53"&gt;first consequences&lt;/a&gt; of this decision were shown at the PHPBarcelona conference. Lastly, symfony started a new effort to improve routing performance, defining several tests and patches.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Development mailing list&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Discussions about &lt;a href="http://groups.google.es/group/symfony-devs/browse_thread/thread/4b0cf97cdd1853c6"&gt;continuing support of symfony 1.2 code&lt;/a&gt;, &lt;a href="http://groups.google.es/group/symfony-devs/browse_thread/thread/2c355d02e01adc98"&gt;routing with sf1.3&lt;/a&gt;, &lt;a href="http://groups.google.es/group/symfony-devs/browse_thread/thread/1c6d37d0d01bfcde"&gt;ICU supplemental data in symfony i18n&lt;/a&gt;, &lt;a href="http://groups.google.es/group/symfony-devs/browse_thread/thread/f05e12bd26dcb96e"&gt;admin generator feature request&lt;/a&gt; and &lt;a href="http://groups.google.es/group/symfony-devs/browse_thread/thread/959ba6ad7a5e551c"&gt;question about 'symfony' propel behavior&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Development highlights&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23344"&gt;r23344&lt;/a&gt;: [1.2, 1.3] made DateHelperTest more robust by using a single timestamp rather than letting date() obtain them on their own&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23355"&gt;r23355&lt;/a&gt;: [1.3] fixed possible creation of inconsistent new lines in class manipulator&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23376"&gt;r23376&lt;/a&gt;: [1.2, 1.3] added a check in _call_component() to avoid unnecessary unescaping when output escaping is disabled in the settings&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23378"&gt;r23378&lt;/a&gt;: [1.3] added check for target directory before creating configuration cache in project:optimize, moved fs calls to filesystem object&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23380"&gt;r23380&lt;/a&gt;: [1.3] bundled DTDs to avoid issuing requests to w3.org&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23382"&gt;r23382&lt;/a&gt;: [1.3] added support for XSD and relaxNG to response validation&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23397"&gt;r23397&lt;/a&gt;:  updated icu-converter for newest symfony version and used icu version 4.2.1&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23398"&gt;r23398&lt;/a&gt;, &lt;a href="http://trac.symfony-project.org/changeset/23400"&gt;r23400&lt;/a&gt;: [1.3] updated icu locale data to version 4.2.1&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23405"&gt;r23405&lt;/a&gt;: [lime] fixed PHPT tests&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23430"&gt;r23430&lt;/a&gt;: [1.3] added hooks allowing to inject readymade config into routing&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23432"&gt;r23432&lt;/a&gt;: [routing_performance] initial import of routing performance test and patch alternatives&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23436"&gt;r23436&lt;/a&gt;: [1.2, 1.3] fixed count() on escaped objects that implements the Countable interface&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23439"&gt;r23439&lt;/a&gt;: [1.2, 1.3] fixed project:deploy task documentation&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23440"&gt;r23440&lt;/a&gt;: [routing_performance] modified test suite to run only one patch version and made 1.3 a patch version&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23446"&gt;r23446&lt;/a&gt;: [routing_performance] added a few more routes and parse/generate requests&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23486"&gt;r23486&lt;/a&gt;: [routing_performance] introduced cycle parameter to increase the number of calls to routing are made. added loop parameter to route queries to query more different results. added duplicate lookups to take advantage of possible caching.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;sfDoctrinePlugin&lt;/strong&gt;:
  &lt;ul&gt;
    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23361"&gt;r23361&lt;/a&gt;: [1.3] fixed sfFormFilterDoctrine uses wrong method when filtering a fk with multiple values&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23401"&gt;r23401&lt;/a&gt;: [1.3] added caching of getResults if we have something cachable&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23403"&gt;r23403&lt;/a&gt;: [1.3] fixed count method on sfDoctrinePager&lt;/li&gt;
  &lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;sfPropelPlugin&lt;/strong&gt;:
  &lt;ul&gt;
    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23346"&gt;r23346&lt;/a&gt;: [1.3] fixed bootstrapping propel unit tests with correct include path&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23357"&gt;r23357&lt;/a&gt;: [1.3] tagged custom propel builders as deprecated&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23358"&gt;r23358&lt;/a&gt;: [1.3] fixed hook names sent to sfMixer from base peer classes&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23394"&gt;r23394&lt;/a&gt;: [1.3] fixed sfMixer hooks in propel peer classes&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://trac.symfony-project.org/changeset/23401"&gt;r23401&lt;/a&gt;: [1.3] added caching of getResults if we have something cachable&lt;/li&gt;
  &lt;/ul&gt;

&lt;/li&gt;
&lt;li&gt;&lt;a href="http://trac.symfony-project.com/trac/timeline?from=11%2F01%2F2009&amp;daysback=6&amp;milestone=on&amp;ticket=on&amp;changeset=on&amp;update=Update"&gt;...and many other changes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Development digest&lt;/strong&gt;: 158 changesets, 50 bugs reported, 22 bugs fixed, 9 enhancements suggested, 4 enhancements closed, 6 documentation defects reported, and 13 documentation edits.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Documentation&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Updated &lt;a href="http://www.symfony-project.org/jobeet/1_2/ru/"&gt;Russian&lt;/a&gt; translation of Jobeet tutorial&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;New &lt;a href="http://trac.symfony-project.com/trac/wiki/SymfonyBloggers"&gt;symfony bloggers&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://www.denderello.com/blog"&gt;denderello's Blog&lt;/a&gt; (&lt;a href="http://www.denderello.com/blog.atom"&gt;feed&lt;/a&gt;) (English)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://http://blog.melimato.com/tag/symfony/"&gt;Melimato.com&lt;/a&gt; (&lt;a href="http://blog.melimato.com/tag/symfony/feed/"&gt;feed&lt;/a&gt;) (English)&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Plugins&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;New plugins&lt;/strong&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfIntranetAuthenticationPlugin"&gt;sfIntranetAuthenticationPlugin&lt;/a&gt;: allows you to use the sfDoctrineGuardPlugin remember cookie to log in automatically to multiple applications hosted on separate subdomains. It also allows you to centralize your user information.
&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfTextToImagePlugin"&gt;sfTextToImagePlugin&lt;/a&gt;: allows to use custom fonts in your websites by converting a text into an image. It is a full php non javascript solution and uses a truetype font.
&lt;/li&gt;

    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfMediaManagerPlugin"&gt;sfMediaManagerPlugin&lt;/a&gt;: (no description)
&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/prestaPaypalPlugin"&gt;prestaPaypalPlugin&lt;/a&gt;: allows to easily use Paypal API. This plugin supports express checkout, direct payment and Website payment standard.
&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfDojoPlugin"&gt;sfDojoPlugin&lt;/a&gt;: neatly integrates the awesome dojo toolkit with its built system into symfony.
&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/TraktPlugin"&gt;TraktPlugin&lt;/a&gt;: sends symfony to the Trakt Log Server.
&lt;/li&gt;  &lt;/li&gt;

&lt;/ul&gt;
&lt;li&gt;&lt;strong&gt;Updated plugins&lt;/strong&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/dcStatefulSecurityPlugin"&gt;dcStatefulSecurityPlugin&lt;/a&gt;: bugfix and readme update, improved documentation&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/diemPlugin"&gt;diemPlugin&lt;/a&gt;:
      &lt;ul&gt;
        &lt;li&gt;added thread_launcher to the service container. It allows to run heavy manipulations (like page synchronization) in another php processus&lt;/li&gt;
        &lt;li&gt;exploded the update_project action into 3 parts to avoid memory problems&lt;/li&gt;

        &lt;li&gt;added ajax messages when updating the project&lt;/li&gt;
        &lt;li&gt;huge performance improvement and 3x less memory usage in page_synchronizer and seo_synchronizer (use now pdo instead of doctrine when possible)&lt;/li&gt;
        &lt;li&gt;added sfImageTransform default configuration&lt;/li&gt;
        &lt;li&gt;selected usefull classes of sfImageTransform and removed the other ones because the make the autoloader too big&lt;/li&gt;
        &lt;li&gt;improved routing speed and memory usage in admin: each module now has only one route instead of 7&lt;/li&gt;
        &lt;li&gt;fixed image size bug when image can not be scaled&lt;/li&gt;

        &lt;li&gt;made page_tree_watcher_service extend dmConfigurable and added a use_thread option (can be set to auto)&lt;/li&gt;
        &lt;li&gt;made possible to inject a module manager in a record&lt;/li&gt;
        &lt;li&gt;improved automatic seo defaults&lt;/li&gt;
        &lt;li&gt;improved all logs speed and usability&lt;/li&gt;
        &lt;li&gt;added dmDb::pdo method to build raw pdo queries&lt;/li&gt;
        &lt;li&gt;made possible to change dmContext class in dm::createContext&lt;/li&gt;

        &lt;li&gt;removed dmContext dependency from dmModuleManagerConfigHandler&lt;/li&gt;
        &lt;li&gt;added dmConfig::setCulture method to allow dmConfig to work without a context instance&lt;/li&gt;
        &lt;li&gt;fixed dmString::slugify for french culture and improved its performances&lt;/li&gt;
        &lt;li&gt;added dmString::convertBytes method to convert a shorthand byte value from a PHP configuration directive to an integer value&lt;/li&gt;
        &lt;li&gt;added dmBaseActions::getBackUrl method to avoid redirections cycles&lt;/li&gt;
        &lt;li&gt;reduced max size in log default options&lt;/li&gt;

        &lt;li&gt;fixed many routing bugs due to recent admin routing refactoring&lt;/li&gt;
        &lt;li&gt;improved accuracy &amp; performances in log chart&lt;/li&gt;
        &lt;li&gt;moved tons of code from generated admin classes to extended classes: admin is more DRY, lighter and more extensible&lt;/li&gt;
        &lt;li&gt;removed deprecated classes dmDoctrineConfiguration, Doctrine_Cache_Dm, dmDoctrineTaggable&lt;/li&gt;
        &lt;li&gt;removed doctrine_config service from service container&lt;/li&gt;
        &lt;li&gt;made bread_crumb admin service shared and added an event connection to admin.edit_object to display current object name&lt;/li&gt;

        &lt;li&gt;added admin.edit_object event notification to admin generated modules&lt;/li&gt;
        &lt;li&gt;improved admin sent mails module interface&lt;/li&gt;
        &lt;li&gt;added dmProjectConfiguration::configureDoctrineCache method wich is run when project.yml configuration is loaded&lt;/li&gt;
        &lt;li&gt;improved performance on dmConfig::load by using pdo statement&lt;/li&gt;
        &lt;li&gt;simplified dmDoctrineQuery::dmCache method&lt;/li&gt;
        &lt;li&gt;removed automatic doctrine cache usage from dmDoctrineRecord queries&lt;/li&gt;

        &lt;li&gt;added dmMarkdown::brutalToText method wich will be used by seo_synchronizer&lt;/li&gt;
        &lt;li&gt;fixed bug in dmPageTreeWatcher use non-existant attribute moduleManager&lt;/li&gt;
        &lt;li&gt;improved service container performances by using dmString::camelize in hasService and getService methods&lt;/li&gt;
        &lt;li&gt;improved performance on dmTheme initialization&lt;/li&gt;
        &lt;li&gt;added static cache option to widget types and module actions. It makes the cache non-contextual&lt;/li&gt;
        &lt;li&gt;refactored dmWidgetBaseView for cleaner interface and faster execution&lt;/li&gt;

        &lt;li&gt;added built-in cache in dmWidgetBaseView&lt;/li&gt;
        &lt;li&gt;improved performances on front init filter when guessing the page from an ajax call&lt;/li&gt;
        &lt;li&gt;refactored the automatic pages seo generator&lt;/li&gt;
        &lt;li&gt;added dmDoctrineTable::getSeoColumns overridable method&lt;/li&gt;
        &lt;li&gt;added jquery ui accordion assets&lt;/li&gt;
        &lt;li&gt;made cache_cleaner service notify a dm.cache.clear_template event&lt;/li&gt;

        &lt;li&gt;provided service container to doctrine tables&lt;/li&gt;
        &lt;li&gt;fixed dmForm::renderSubmitTag input and dmForm::open method (defaults to POST)&lt;/li&gt;
        &lt;li&gt;improved performances on front i18n by loading diem translations only if the user has edition credentials&lt;/li&gt;
        &lt;li&gt;removed useless serialization on i18n message source cache methods&lt;/li&gt;
        &lt;li&gt;made event_log service listen dm.cache.clear_template&lt;/li&gt;
        &lt;li&gt;overrided PluginDmProfileTable::getSeoColumns to provide virtual access to username and email&lt;/li&gt;

        &lt;li&gt;made page_tree_watcher synchronize seo when a DmAutoSeo object has been modified&lt;/li&gt;
        &lt;li&gt;improved error handling when updated project with threads&lt;/li&gt;
        &lt;li&gt;removed deprecated dm_xhr query parameter from jQuery ajax calls&lt;/li&gt;
        &lt;li&gt;refactored seo_synchronizer service and added a validatePattern method&lt;/li&gt;
        &lt;li&gt;added dmBaseServiceContainer::reload method to create a new shared service when its parameters has been changed&lt;/li&gt;
        &lt;li&gt;added a symfony installer with a great command line configuration wizard&lt;/li&gt;

        &lt;li&gt;renamed project.yml to config.yml&lt;/li&gt;
        &lt;li&gt;removed deprecated dmActionLog module&lt;/li&gt;
        &lt;li&gt;cleaned and completed skeleton&lt;/li&gt;
        &lt;li&gt;removed deprecated common filter from filter.yml files&lt;/li&gt;
        &lt;li&gt;fixed bug on dmLogChart when site is new&lt;/li&gt;
        &lt;li&gt;cleaned dmAdminApplicationConfiguration&lt;/li&gt;

        &lt;li&gt;improved chart interface and added usefull error messages for disabled charts&lt;/li&gt;
        &lt;li&gt;removed automatic lazy_cache_key configuration in dmCorePluginConfiguration&lt;/li&gt;
        &lt;li&gt;added isModelSafe method in the cache_cleaner service to ignore some models when deciding if the template cache must be cleared&lt;/li&gt;
        &lt;li&gt;added checkProjectIsSetup in dmContext&lt;/li&gt;
        &lt;li&gt;fixed dmRequestLog when log is new&lt;/li&gt;
        &lt;li&gt;fixed uri when no script name on dmRequestLogEntry&lt;/li&gt;

        &lt;li&gt;improved dmServerCheck standalone class&lt;/li&gt;
        &lt;li&gt;added the dm:server-check task wich uses dmServerCheck&lt;/li&gt;
        &lt;li&gt;added the dm:permissions and dm:publish-assets tasks&lt;/li&gt;
        &lt;li&gt;fixed dm:setup when project has no models&lt;/li&gt;
        &lt;li&gt;disabled logging during functional tests&lt;/li&gt;
        &lt;li&gt;added DIEM_VERSION constant&lt;/li&gt;

        &lt;li&gt;changed front routing class to dmFrontRouting in front factories&lt;/li&gt;
        &lt;li&gt;added the project skeleton&lt;/li&gt;
        &lt;li&gt;removed deprecated dmMediaTools static class by dispatching to services its responsabilities&lt;/li&gt;
        &lt;li&gt;disabled log_chart service on the very beginning of the site's life&lt;/li&gt;
        &lt;li&gt;added getMediaUrl method to admin routing&lt;/li&gt;
        &lt;li&gt;simplified layout_helper services dependencies&lt;/li&gt;

        &lt;li&gt;removed useless relationAssociation controller&lt;/li&gt;
        &lt;li&gt;improved and cleaned relationForeign partial&lt;/li&gt;
        &lt;li&gt;made service container listen the context.change_action and store the current module and action&lt;/li&gt;
        &lt;li&gt;removed action_stack service from service container&lt;/li&gt;
        &lt;li&gt;made search_index and helper service do not depend on the user&lt;/li&gt;
        &lt;li&gt;made skeleton application settings more precise&lt;/li&gt;

        &lt;li&gt;added getRouting method to dmBaseActions&lt;/li&gt;
        &lt;li&gt;made cache_manager service notify a task.cache.clear event for compatibility with other plugins (like sfSuperCachePlugin)&lt;/li&gt;
        &lt;li&gt;improved dmFileLog buffer system and removed deprecated method getFilteredEntries&lt;/li&gt;
        &lt;li&gt;added filesystem dependency to front code generators&lt;/li&gt;
        &lt;li&gt;tracked and destroyed nearly all sfContext::getInstance call (or similar bad static practice) in all codebase&lt;/li&gt;
        &lt;li&gt;removed deprecated methods in dmHelper and fixed coding style in the others&lt;/li&gt;

        &lt;li&gt;simplified widget_type_manager service dependencies&lt;/li&gt;
        &lt;li&gt;added getPage method to abstract class dmWidgetProjectForm and used it in inherited classes to remove sfContext::getInstance calls&lt;/li&gt;
        &lt;li&gt;improved the setup task with step by step doctrine migration wizard&lt;/li&gt;
        &lt;li&gt;removed deprecated classes dmDoctrineMigrationBase &amp; dmGenerateMigrationsDiff&lt;/li&gt;
        &lt;li&gt;overriden sfDoctrineForm(Filter)Generator filterModels method to unset weird ToPrfxModels? generated by doctrine migrations&lt;/li&gt;
        &lt;li&gt;improved all tasks output&lt;/li&gt;

        &lt;li&gt;removed wrong assets symlink creation on publish assets task&lt;/li&gt;
        &lt;li&gt;added dmMigrate task and dmDoctrineBuildFiltersTask&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfEasyAuthPlugin"&gt;sfEasyAuthPlugin&lt;/a&gt;: edited the generator to only show relevant fields, the remember_key field is now indexed not unique, modified the processForm method to fix a redirection bug where symfony was generating invalid urls, fixed an issue redirecting users after the auto-log in filter&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/mgDynamicEmbeddedFormsPlugin"&gt;mgDynamicEmbeddedFormsPlugin&lt;/a&gt;: fixed a delete bug&lt;/li&gt;

    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/omCrossAppUrlPlugin"&gt;omCrossAppUrlPlugin&lt;/a&gt;: fixed helper&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfPhpunitPlugin"&gt;sfPhpunitPlugin&lt;/a&gt;: fixed cannot run single test instead of it runs all test in the dir&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/pkContextCMSPlugin"&gt;pkContextCMSPlugin&lt;/a&gt;: packaging, minor documentation tweaks, updated layout that loads search properly as a partial, merges completed and conflics resolved, updated navigation, added getTreeInfo() method and sample pk_context_cms_navtree() helper, implemented getAccordionInfo()&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfDoctrineApplyPlugin"&gt;sfDoctrineApplyPlugin&lt;/a&gt;: added task to clean up usernames and full names containing potential XSS and CSRF nonsense, don't display the rejected password as part of the error message shown when the password is too short&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfPropelActAsNestedSetPlugin"&gt;sfPropelActAsNestedSetPlugin&lt;/a&gt;: fully migrate plugin to symfony 1.2 and release 0.9.2&lt;/li&gt;

    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfPhpExcelPlugin"&gt;sfPhpExcelPlugin&lt;/a&gt;: updated externals of phpexcel&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfTaskLoggerPlugin"&gt;sfTaskLoggerPlugin&lt;/a&gt;: fixed database schemas&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfUnobstrusiveWidgetPlugin"&gt;sfUnobstrusiveWidgetPlugin&lt;/a&gt;: updated js template for autocompleter transformer (bug ie6), implemented Countable PHP 5 interface on sfUoWidgetTable class&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfMapFishPlugin"&gt;sfMapFishPlugin&lt;/a&gt;: fixed incorrect type cast &amp; prepare 1.0.3 release&lt;/li&gt;

    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/pkMediaPlugin"&gt;pkMediaPlugin&lt;/a&gt;: added a link next to media search to reset search criteria, media browser partial now has before and after partials as an alternative to overriding the whole thing, the current search can now be removed from the active search criteria without resorting to a breadcrumb trail&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfDoctrineJCroppablePlugin"&gt;sfDoctrineJCroppablePlugin&lt;/a&gt;: made field ids non-camelcase, changed embedded form prefix from 'embedded' to 'embedded_'&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/pkToolkitPlugin"&gt;pkToolkitPlugin&lt;/a&gt;: create-task-user task creates a locked superadmin account for use by tasks such as cron jobs when the model layer of the application checks privileges for particular objects based on user identity&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfDoctrineActAsRattablePlugin"&gt;sfDoctrineActAsRattablePlugin&lt;/a&gt;: changes some doctrine code and now it's compatible with doctrine 1.0&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.symfony-project.org/plugins/sfDoctrineGuardExtraPlugin"&gt;sfDoctrineGuardExtraPlugin&lt;/a&gt;: added schema.yml for email_address field&lt;/li&gt;

  &lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;New &lt;a href="http://trac.symfony-project.org/wiki/ApplicationsDevelopedWithSymfony"&gt;symfony powered websites&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://www.boote-schiffe-yachten.de"&gt;boote-schiffe-yachten.de&lt;/a&gt;: (Deutsch) classified ads site dedicated to ships, boats and yachts&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.a5solutions.com.br/"&gt;A5 Solutions&lt;/a&gt;: (English, and Portuguese) a company focused on integrating communication solutions to meet the most complex environments&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://tarif-angebote.de/"&gt;Tarif-Angebote&lt;/a&gt;: (Deutsch) mobile phone plans comparator&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://prepaidtarife.net/"&gt;Prepaidtarife.net&lt;/a&gt;: (Deutsch) prepaid phone rates comparator&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.theesociety.org/"&gt;The E-Society&lt;/a&gt;: (English) a simple online social network for the Entrepreneur Society at the Darden Business School at UVA&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://mybailiwick.com/"&gt;MyBailiwick&lt;/a&gt;: (English) a question and answer site&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://client.envolee.com/"&gt;Éditions de l'Envolée&lt;/a&gt;: (French) the client portal lets user download their electronic books&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://www.bodegasmuriel.com"&gt;Bodegas Muriel&lt;/a&gt;: (English, and Spanish) web oficial de Bodegas Muriel, productoras de vino D.O. La Rioja&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.leprodupoker.com/articles/"&gt;Leprodupoker&lt;/a&gt;: (French) poker rules online learning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;They talked about us&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://www.sensiolabs.com/blog/post/2009/10/22/Participez-au-forum-PHP-avec-Sensio-Labs"&gt;Participez au forum PHP avec Sensio Labs&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://news.techworld.com/applications/3204825/php-dev-rivals-face-off/"&gt;Zend/PHP conference sees framework battle royale&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://www.symfony.it/articoli/215/symfony-1-3-beta-1/"&gt;Symfony 1.3 beta 1&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.foolbirds.com/symfony-cheat-sheet.html"&gt;symfony cheat sheet&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.denderello.com/blog/give-back-some-love-at-symfony-bughuntday"&gt;Give back some love at Symfony BugHuntDay&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.denderello.com/blog/caching-your-api-calls-using-symfony-s-functional-call-caching"&gt;Caching your API calls using symfony's functional call caching&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://fiit.pl/blog/sympal-formularze-jako-komponenty"&gt;Sympal: Formularze jako Komponenty&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://dev.esl.eu/blog/2009/10/27/forwarding-to-an-action-within-a-filter/"&gt;Forwarding to an action within a filter&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://www.symfony.es/2009/10/28/el-creador-de-symfony-estara-en-la-php-barcelona-2009/"&gt;El creador de Symfony estará en la PHP Barcelona 2009&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.funstaff.ch/2009/10/28/sfdoctrineguardplugin-recuperation-de-lid-utilisateur"&gt;sfDoctrineGuardPlugin: Récupération de l’id utilisateur&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://blog.servergrove.com/2009/10/28/php-community-news-roundup/"&gt;PHP community news roundup&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.symfonybr.com/2009/10/28/cansei-de-digitar-php-symfony-agora-uso-sf/"&gt;Cansei de digitar “php symfony”, agora uso “sf”&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://symfonyguide.wordpress.com/2009/10/29/quick-doctrine-nestedset-reference/"&gt;Quick Doctrine NestedSet reference&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.symfonylab.com/postcrossing-symfony-driven-site-review/"&gt;Postcrossing symfony-driven site review&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://www.symfony.es/2009/11/01/las-novedades-de-symfony-2-php-5-3/"&gt;Las novedades de Symfony 2 + PHP 5.3&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://blog.melimato.com/bash-script-to-create-a-new-symfony-project-and-install-optional-plugins/"&gt;Bash Script to create a new symfony project and install optional plugins&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://nerdpress.org/2009/11/01/symfony-1-2-admin-generator-mit-datepicker/"&gt;symfony 1.2. Admin Generator mit Datepicker&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://askwebman.com/parttimejobs/?p=5867"&gt;First step in small-sized symfony web app - oDesk&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://purehands.net/symfony/?p=120"&gt;検索窓のつけ方&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://blogdediegoramirez.blogspot.com/2009/10/levantando-proyectos-symfony-existentes.html"&gt;Levantando proyectos symfony existentes con Netbeans 6.8 Xampp + Windows&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://nibsirahsieu.wordpress.com/2009/10/31/validasi-no-telepon-menggunakan-symfony-validator/"&gt;Validasi No Telepon menggunakan symfony validator&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://christof.damian.net/2009/10/barcelona-php-conference-day-2.html"&gt;Barcelona PHP Conference Day 2 #phpbcn2009&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.loalf.com/2009/10/symfony-swift-mailer-y-gmail-alltogether-now/"&gt;Symfony, Swift Mailer y Gmail alltogether now&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://blog.devloperworld.com/?p=152"&gt;Once Again SENSIO LABS comes with great things for developers&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.tatai.es/2009/10/31/php-conference-2009-dia-2/"&gt;PHP Conference 2009. Día 2&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://prashanthm08.blogspot.com/2009/10/ajax-in-symfony.html"&gt;Ajax in Symfony&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://tikushou.blogspot.com/2009/10/symfony-partial.html"&gt;symfony partialに渡した変数をエスケープしないで表示したい&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://sviluppare-in-rete.blogspot.com/2009/10/personalizzare-form-in-symfony.html"&gt;Personalizzare l'aspetto dei form in symfony&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://ideateca.com/blog/2009/10/curso-de-symfony-en-ideateca/"&gt;Curso de Symfony en ideateca&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://emartini.wordpress.com/2009/10/30/usando-json-con-jquery-en-symfony/"&gt;Usando JSON con jQuery en Symfony&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://blog.solucionex.com/symfony/los-comportamientos-en-symfony-behaviors"&gt;Los comportamientos en Symfony (Behaviors)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.meteenee.com/symfony-framework-1-3-beta-%E0%B8%AD%E0%B8%AD%E0%B8%81%E0%B9%81%E0%B8%A5%E0%B9%89%E0%B8%A7"&gt;Symfony framework 1.3 BETA ออกแล้ว&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://d.hatena.ne.jp/innx_hidenori/20091028/1256678741"&gt;symfony1.3のDoctrineモデルでgetter/setterのPHPDocコメントが生成されるようになった&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://blog.codingbase.org/2009/10/symfony-gultiger-application-context-in-task/"&gt;Symfony: Gültiger Application-Context in Task&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.yetersizbakiye.com/symfony/symfony-ile-doctrine-behavior-template-olusturma"&gt;Symfony ile Doctrine behavior template oluşturma&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.v-shu.com/a/?p=117"&gt;symfony如何添加分页？&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://david-gueye.fr/2009/10/26/proteger-ses-formulaires-symfony-contre-les-spams/"&gt;Protéger ses formulaires Symfony contre les spams&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.elcodigok.com.ar/2009/10/netbeans-6-8-y-symfony/"&gt;NetBeans 6.8 y Symfony&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.puentesdiaz.com.ar/blog/?p=184"&gt;Rendimiento Symfony = f(ORM)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
          &lt;hr / style="margin-bottom: 5px"&gt;
          &lt;div style="font-size: 90%"&gt;
          Be trained by symfony experts
                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-DECEMBER-2009"&gt;Dec 16&lt;/a&gt; Paris                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-JANUARY-2010"&gt;Jan 20&lt;/a&gt; Paris                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-FEBRUARY-2010"&gt;Feb 24&lt;/a&gt; Paris                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-MARCH-2010"&gt;Mar 24&lt;/a&gt; Paris                    &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/symfony/blog/~4/22mHn5JSu8s" height="1" width="1"/&gt;</description>
        <guid isPermaLink="false">http://www.symfony-project.org/blog/2009/11/01/a-week-of-symfony-148-26-october-1-november-2009</guid>
        <author>Javier Eguiluz</author>
        <pubDate>Sun, 01 Nov 09 22:44:00 +0100</pubDate>
        <comments />
      <feedburner:origLink>http://www.symfony-project.org/blog/2009/11/01/a-week-of-symfony-148-26-october-1-november-2009</feedburner:origLink></item>
          <item>
        <title>Symfony presence at PHPBarcelona Conference</title>
        <link>http://feedproxy.google.com/~r/symfony/blog/~3/5YUXOoZLDyU/symfony-presence-at-phpbarcelona-conference</link>
        <description>&lt;p&gt;This week on friday 30 and saturday 31 October, the &lt;a href="http://www.phpconference.es/"&gt;PHPBarcelona Conference&lt;/a&gt; takes place in Barcelona. During this conference, symfony will be represented by two core team members: Fabien Potencier will speak about Symfony 2 and Stefan Koopmanschap will present his "Integrating symfony and Zend Framework" talk. If you are in the area or interested in these and many other topics, then you are recommended to come by!&lt;/p&gt;

&lt;p&gt;The conference takes place at the &lt;a href="http://phpconference.es/barcelona-php-conference-2009/venue/"&gt;Citilab building&lt;/a&gt; and the &lt;a href="http://phpconference.es/barcelona-php-conference-2009/schedule/"&gt;schedule&lt;/a&gt; looks excellent. Aside from Fabien and Stefan speaking, there's a multitude of excellent speakers such as Rasmus Lerdorf, Derick Rethans, Lorna Mitchell, Damien Seguy, David Zuelke, Lars Jankowfsky, Sebastian Bergmann and many more. Tickets are only 50 euro for the full conference or 30 euro for a single day admission.&lt;/p&gt;

&lt;p&gt;If you are at the conference, come and say hi, discuss symfony and other topics, ask questions, or just hang out with fellow (symfony) community members.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Are you also speaking about symfony at a conference or user group meeting? We are planning to do 
  more regular event posts on the blog. Send an e-mail to Stefan.Koopmanschap - at - symfony-project 
  - dot - org with the information on your presentation and at what event you are presenting, so that 
  we can notify the community of your presentation.&lt;/p&gt;
&lt;/blockquote&gt;
          &lt;hr / style="margin-bottom: 5px"&gt;
          &lt;div style="font-size: 90%"&gt;
          Be trained by symfony experts
                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-DECEMBER-2009"&gt;Dec 16&lt;/a&gt; Paris                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-JANUARY-2010"&gt;Jan 20&lt;/a&gt; Paris                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-FEBRUARY-2010"&gt;Feb 24&lt;/a&gt; Paris                       - &lt;a href="http://www.sensiolabs.com/en/training/detail/SYMFONY-DOCTRINE-PARIS-MARCH-2010"&gt;Mar 24&lt;/a&gt; Paris                    &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/symfony/blog/~4/5YUXOoZLDyU" height="1" width="1"/&gt;</description>
        <guid isPermaLink="false">http://www.symfony-project.org/blog/2009/10/28/symfony-presence-at-phpbarcelona-conference</guid>
        <author>Stefan Koopmanschap</author>
        <pubDate>Wed, 28 Oct 09 00:24:00 +0100</pubDate>
        <comments />
      <feedburner:origLink>http://www.symfony-project.org/blog/2009/10/28/symfony-presence-at-phpbarcelona-conference</feedburner:origLink></item>
      </channel>
</rss>
