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.