Author: bschussek
Date: 2010-04-15 00:22:41 +0200 (Thu, 15 Apr 2010)
New Revision: 29156

Modified:
   
branches/1.3/lib/plugins/sfDoctrinePlugin/config/sfDoctrinePluginConfiguration.class.php
   
branches/1.3/lib/plugins/sfDoctrinePlugin/lib/record/sfDoctrineRecord.class.php
   
branches/1.4/lib/plugins/sfDoctrinePlugin/config/sfDoctrinePluginConfiguration.class.php
   
branches/1.4/lib/plugins/sfDoctrinePlugin/lib/record/sfDoctrineRecord.class.php
Log:
[1.3, 1.4] Fixed setting of Doctrine's default culture before records are 
initialized

Before this patch, sfDoctrineRecord::listenToChangeCultureEvent() was only 
registered
once the first model was initialized. If the event was fired before that, the 
internal
property $_defaultCulture was not updated.

After this patch, the listener is already registered in the plugin 
configuration.
The listener is guaranteed to be called on each request, because the 
constructor of
sfUser calls sfUser::setCulture() implicitely, which fires the event.


Modified: 
branches/1.3/lib/plugins/sfDoctrinePlugin/config/sfDoctrinePluginConfiguration.class.php
===================================================================
--- 
branches/1.3/lib/plugins/sfDoctrinePlugin/config/sfDoctrinePluginConfiguration.class.php
    2010-04-14 20:21:28 UTC (rev 29155)
+++ 
branches/1.3/lib/plugins/sfDoctrinePlugin/config/sfDoctrinePluginConfiguration.class.php
    2010-04-14 22:22:41 UTC (rev 29156)
@@ -69,11 +69,14 @@
     }
 
     $this->dispatcher->notify(new sfEvent($manager, 'doctrine.configure'));
+
+    // make sure the culture is intercepted
+    $this->dispatcher->connect('user.change_culture', 
array('sfDoctrineRecord', 'listenToChangeCultureEvent'));
   }
 
   /**
    * Returns options for the Doctrine schema builder.
-   * 
+   *
    * @return array
    */
   public function getModelBuilderOptions()
@@ -98,7 +101,7 @@
 
   /**
    * Returns a configuration array for the Doctrine CLI.
-   * 
+   *
    * @return array
    */
   public function getCliConfig()

Modified: 
branches/1.3/lib/plugins/sfDoctrinePlugin/lib/record/sfDoctrineRecord.class.php
===================================================================
--- 
branches/1.3/lib/plugins/sfDoctrinePlugin/lib/record/sfDoctrineRecord.class.php 
    2010-04-14 20:21:28 UTC (rev 29155)
+++ 
branches/1.3/lib/plugins/sfDoctrinePlugin/lib/record/sfDoctrineRecord.class.php 
    2010-04-14 22:22:41 UTC (rev 29156)
@@ -22,7 +22,6 @@
 abstract class sfDoctrineRecord extends Doctrine_Record
 {
   static protected
-    $_initialized    = false,
     $_defaultCulture = 'en';
 
   /**
@@ -34,8 +33,6 @@
   {
     if ($this->getTable()->hasRelation('Translation'))
     {
-      self::initializeI18n();
-
       // only add filter to each table once
       if (!$this->getTable()->getOption('has_symfony_i18n_filter'))
       {
@@ -48,25 +45,6 @@
   }
 
   /**
-   * Initializes internationalization.
-   */
-  static public function initializeI18n()
-  {
-    if (!self::$_initialized)
-    {
-      $dispatcher = sfProjectConfiguration::getActive()->getEventDispatcher();
-      $dispatcher->connect('user.change_culture', array('sfDoctrineRecord', 
'listenToChangeCultureEvent'));
-
-      if (sfContext::hasInstance() && $user = 
sfContext::getInstance()->getUser())
-      {
-        self::$_defaultCulture = $user->getCulture();
-      }
-
-      self::$_initialized = true;
-    }
-  }
-
-  /**
    * Listens to the user.change_culture event.
    *
    * @param sfEvent An sfEvent instance
@@ -83,8 +61,6 @@
    */
   static public function setDefaultCulture($culture)
   {
-    self::initializeI18n();
-
     self::$_defaultCulture = $culture;
   }
 
@@ -95,8 +71,6 @@
    */
   static public function getDefaultCulture()
   {
-    self::initializeI18n();
-
     if (!self::$_defaultCulture)
     {
       throw new sfException('The default culture has not been set');

Modified: 
branches/1.4/lib/plugins/sfDoctrinePlugin/config/sfDoctrinePluginConfiguration.class.php
===================================================================
--- 
branches/1.4/lib/plugins/sfDoctrinePlugin/config/sfDoctrinePluginConfiguration.class.php
    2010-04-14 20:21:28 UTC (rev 29155)
+++ 
branches/1.4/lib/plugins/sfDoctrinePlugin/config/sfDoctrinePluginConfiguration.class.php
    2010-04-14 22:22:41 UTC (rev 29156)
@@ -56,11 +56,14 @@
     }
 
     $this->dispatcher->notify(new sfEvent($manager, 'doctrine.configure'));
+
+    // make sure the culture is intercepted
+    $this->dispatcher->connect('user.change_culture', 
array('sfDoctrineRecord', 'listenToChangeCultureEvent'));
   }
 
   /**
    * Returns options for the Doctrine schema builder.
-   * 
+   *
    * @return array
    */
   public function getModelBuilderOptions()
@@ -85,7 +88,7 @@
 
   /**
    * Returns a configuration array for the Doctrine CLI.
-   * 
+   *
    * @return array
    */
   public function getCliConfig()

Modified: 
branches/1.4/lib/plugins/sfDoctrinePlugin/lib/record/sfDoctrineRecord.class.php
===================================================================
--- 
branches/1.4/lib/plugins/sfDoctrinePlugin/lib/record/sfDoctrineRecord.class.php 
    2010-04-14 20:21:28 UTC (rev 29155)
+++ 
branches/1.4/lib/plugins/sfDoctrinePlugin/lib/record/sfDoctrineRecord.class.php 
    2010-04-14 22:22:41 UTC (rev 29156)
@@ -22,7 +22,6 @@
 abstract class sfDoctrineRecord extends Doctrine_Record
 {
   static protected
-    $_initialized    = false,
     $_defaultCulture = 'en';
 
   /**
@@ -34,8 +33,6 @@
   {
     if ($this->getTable()->hasRelation('Translation'))
     {
-      self::initializeI18n();
-
       // only add filter to each table once
       if (!$this->getTable()->getOption('has_symfony_i18n_filter'))
       {
@@ -48,25 +45,6 @@
   }
 
   /**
-   * Initializes internationalization.
-   */
-  static public function initializeI18n()
-  {
-    if (!self::$_initialized)
-    {
-      $dispatcher = sfProjectConfiguration::getActive()->getEventDispatcher();
-      $dispatcher->connect('user.change_culture', array('sfDoctrineRecord', 
'listenToChangeCultureEvent'));
-
-      if (sfContext::hasInstance() && $user = 
sfContext::getInstance()->getUser())
-      {
-        self::$_defaultCulture = $user->getCulture();
-      }
-
-      self::$_initialized = true;
-    }
-  }
-
-  /**
    * Listens to the user.change_culture event.
    *
    * @param sfEvent An sfEvent instance
@@ -83,8 +61,6 @@
    */
   static public function setDefaultCulture($culture)
   {
-    self::initializeI18n();
-
     self::$_defaultCulture = $culture;
   }
 
@@ -95,8 +71,6 @@
    */
   static public function getDefaultCulture()
   {
-    self::initializeI18n();
-
     if (!self::$_defaultCulture)
     {
       throw new sfException('The default culture has not been set');

-- 
You received this message because you are subscribed to the Google Groups 
"symfony SVN" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/symfony-svn?hl=en.

Reply via email to