Author: Kris.Wallsmith
Date: 2010-02-08 16:46:35 +0100 (Mon, 08 Feb 2010)
New Revision: 27742

Added:
   
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/ResourceTypeFormFilter.class.php
   
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/ResourceTypeForm.class.php
   
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ResourceType.class.php
   
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ResourceTypeTable.class.php
   
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/ResourceTypeFormFilter.class.php
   
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/ResourceTypeForm.class.php
   
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ResourceType.class.php
   
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ResourceTypeTable.class.php
Modified:
   
branches/1.3/lib/plugins/sfDoctrinePlugin/lib/generator/sfDoctrineFormGenerator.class.php
   
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/FormGeneratorTest.php
   
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/doctrine/schema.yml
   
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/sql/schema.sql
   
branches/1.4/lib/plugins/sfDoctrinePlugin/lib/generator/sfDoctrineFormGenerator.class.php
   
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/FormGeneratorTest.php
   
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/doctrine/schema.yml
   
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/sql/schema.sql
Log:
[1.3, 1.4] fixed generation of enum pk form widgets (closes #7959)

Modified: 
branches/1.3/lib/plugins/sfDoctrinePlugin/lib/generator/sfDoctrineFormGenerator.class.php
===================================================================
--- 
branches/1.3/lib/plugins/sfDoctrinePlugin/lib/generator/sfDoctrineFormGenerator.class.php
   2010-02-08 15:29:11 UTC (rev 27741)
+++ 
branches/1.3/lib/plugins/sfDoctrinePlugin/lib/generator/sfDoctrineFormGenerator.class.php
   2010-02-08 15:46:35 UTC (rev 27742)
@@ -331,8 +331,9 @@
   /**
    * Returns a PHP string representing options to pass to a widget for a given 
column.
    *
-   * @param  sfDoctrineColumn $column
-   * @return string    The options to pass to the widget as a PHP string
+   * @param sfDoctrineColumn $column
+   * 
+   * @return string The options to pass to the widget as a PHP string
    */
   public function getWidgetOptionsForColumn($column)
   {
@@ -342,16 +343,9 @@
     {
       $options[] = sprintf('\'model\' => $this->getRelatedModelName(\'%s\'), 
\'add_empty\' => %s', $column->getRelationKey('alias'), $column->isNotNull() ? 
'false' : 'true');
     }
-    else
+    else if ('enum' == $column->getDoctrineType() && 
is_subclass_of($this->getWidgetClassForColumn($column), 
'sfWidgetFormChoiceBase'))
     {
-      switch ($column->getDoctrineType())
-      {
-        case 'enum':
-          $values = $column->getDefinitionKey('values');
-          $values = array_combine($values, $values);
-          $options[] = "'choices' => " . str_replace("\n", '', 
$this->arrayExport($values));
-          break;
-      }
+      $options[] = '\'choices\' => 
'.$this->arrayExport(array_combine($column['values'], $column['values']));
     }
 
     return count($options) ? sprintf('array(%s)', implode(', ', $options)) : 
'';
@@ -456,8 +450,7 @@
           }
           break;
         case 'enum':
-          $values = array_combine($column['values'], $column['values']);
-          $options[] = "'choices' => " . str_replace("\n", '', 
$this->arrayExport($values));
+          $options[] = '\'choices\' => '.$this->arrayExport($column['values']);
           break;
       }
     }

Modified: 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/FormGeneratorTest.php
===================================================================
--- 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/FormGeneratorTest.php 
    2010-02-08 15:29:11 UTC (rev 27741)
+++ 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/FormGeneratorTest.php 
    2010-02-08 15:46:35 UTC (rev 27742)
@@ -12,7 +12,7 @@
 $fixtures = 'fixtures';
 require_once(dirname(__FILE__).'/../bootstrap/functional.php');
 
-$t = new lime_test(40);
+$t = new lime_test(41);
 
 $t->diag("Test that these models don't generate forms or filters classes");
 $noFormsOrFilters = array('UserGroup', 'UserPermission', 'GroupPermission');
@@ -82,3 +82,15 @@
 $test = new BlogArticleFormFilter();
 $t->is($test->getWidget('author_id')->getOption('model'), 'BlogAuthor');
 $t->is($test->getValidator('author_id')->getOption('model'), 'BlogAuthor');
+
+$t->diag('Check enum primary keys');
+try
+{
+  $test = new ResourceTypeForm();
+  $t->pass('enum primary key widgets work');
+}
+catch (InvalidArgumentException $e)
+{
+  $t->fail('enum primary key widgets work');
+  $t->diag('    '.$e->getMessage());
+}

Modified: 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/doctrine/schema.yml
===================================================================
--- 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/doctrine/schema.yml
       2010-02-08 15:29:11 UTC (rev 27741)
+++ 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/doctrine/schema.yml
       2010-02-08 15:46:35 UTC (rev 27742)
@@ -209,4 +209,12 @@
   columns:
     column_1: string(255)
     column2: string(255)
-    column__3: string(255)
\ No newline at end of file
+    column__3: string(255)
+
+ResourceType:
+  columns:
+    id:
+      type: enum
+      values: [type1, type2, type3]
+      primary: true
+    name: string(255)

Modified: 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/sql/schema.sql
===================================================================
--- 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/sql/schema.sql
      2010-02-08 15:29:11 UTC (rev 27741)
+++ 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/sql/schema.sql
      2010-02-08 15:46:35 UTC (rev 27742)
@@ -13,6 +13,7 @@
 CREATE TABLE model_with_number_in_column (id INTEGER PRIMARY KEY 
AUTOINCREMENT, column_1 VARCHAR(255), column2 VARCHAR(255), column__3 
VARCHAR(255));
 CREATE TABLE permission (id INTEGER PRIMARY KEY AUTOINCREMENT, name 
VARCHAR(255));
 CREATE TABLE profile (id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER, 
first_name VARCHAR(255), last_name VARCHAR(255));
+CREATE TABLE resource_type (id VARCHAR(255), name VARCHAR(255), PRIMARY 
KEY(id));
 CREATE TABLE unique_test (id INTEGER PRIMARY KEY AUTOINCREMENT, unique_test1 
VARCHAR(255) UNIQUE, unique_test2 VARCHAR(255), unique_test3 VARCHAR(255), 
unique_test4 VARCHAR(255));
 CREATE TABLE user (id INTEGER PRIMARY KEY AUTOINCREMENT, username VARCHAR(255) 
UNIQUE, password VARCHAR(255), test VARCHAR(255));
 CREATE TABLE user_group (user_id INTEGER, group_id INTEGER, PRIMARY 
KEY(user_id, group_id));

Added: 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/ResourceTypeFormFilter.class.php
===================================================================
--- 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/ResourceTypeFormFilter.class.php
                             (rev 0)
+++ 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/ResourceTypeFormFilter.class.php
     2010-02-08 15:46:35 UTC (rev 27742)
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * ResourceType filter form.
+ *
+ * @package    symfony12
+ * @subpackage filter
+ * @author     Your name here
+ * @version    SVN: $Id$
+ */
+class ResourceTypeFormFilter extends BaseResourceTypeFormFilter
+{
+  public function configure()
+  {
+  }
+}


Property changes on: 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/ResourceTypeFormFilter.class.php
___________________________________________________________________
Added: svn:keywords
   + Id
Added: svn:eol-style
   + native

Added: 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/ResourceTypeForm.class.php
===================================================================
--- 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/ResourceTypeForm.class.php
                             (rev 0)
+++ 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/ResourceTypeForm.class.php
     2010-02-08 15:46:35 UTC (rev 27742)
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * ResourceType form.
+ *
+ * @package    symfony12
+ * @subpackage form
+ * @author     Your name here
+ * @version    SVN: $Id$
+ */
+class ResourceTypeForm extends BaseResourceTypeForm
+{
+  public function configure()
+  {
+  }
+}


Property changes on: 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/ResourceTypeForm.class.php
___________________________________________________________________
Added: svn:keywords
   + Id
Added: svn:eol-style
   + native

Added: 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ResourceType.class.php
===================================================================
--- 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ResourceType.class.php
                                (rev 0)
+++ 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ResourceType.class.php
        2010-02-08 15:46:35 UTC (rev 27742)
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * ResourceType
+ * 
+ * This class has been auto-generated by the Doctrine ORM Framework
+ * 
+ * @package    symfony12
+ * @subpackage model
+ * @author     Your name here
+ * @version    SVN: $Id$
+ */
+class ResourceType extends BaseResourceType
+{
+}


Property changes on: 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ResourceType.class.php
___________________________________________________________________
Added: svn:keywords
   + Id
Added: svn:eol-style
   + native

Added: 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ResourceTypeTable.class.php
===================================================================
--- 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ResourceTypeTable.class.php
                           (rev 0)
+++ 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ResourceTypeTable.class.php
   2010-02-08 15:46:35 UTC (rev 27742)
@@ -0,0 +1,5 @@
+<?php
+
+class ResourceTypeTable extends Doctrine_Table
+{
+}


Property changes on: 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ResourceTypeTable.class.php
___________________________________________________________________
Added: svn:keywords
   + Id
Added: svn:eol-style
   + native

Modified: 
branches/1.4/lib/plugins/sfDoctrinePlugin/lib/generator/sfDoctrineFormGenerator.class.php
===================================================================
--- 
branches/1.4/lib/plugins/sfDoctrinePlugin/lib/generator/sfDoctrineFormGenerator.class.php
   2010-02-08 15:29:11 UTC (rev 27741)
+++ 
branches/1.4/lib/plugins/sfDoctrinePlugin/lib/generator/sfDoctrineFormGenerator.class.php
   2010-02-08 15:46:35 UTC (rev 27742)
@@ -331,8 +331,9 @@
   /**
    * Returns a PHP string representing options to pass to a widget for a given 
column.
    *
-   * @param  sfDoctrineColumn $column
-   * @return string    The options to pass to the widget as a PHP string
+   * @param sfDoctrineColumn $column
+   * 
+   * @return string The options to pass to the widget as a PHP string
    */
   public function getWidgetOptionsForColumn($column)
   {
@@ -342,16 +343,9 @@
     {
       $options[] = sprintf('\'model\' => $this->getRelatedModelName(\'%s\'), 
\'add_empty\' => %s', $column->getRelationKey('alias'), $column->isNotNull() ? 
'false' : 'true');
     }
-    else
+    else if ('enum' == $column->getDoctrineType() && 
is_subclass_of($this->getWidgetClassForColumn($column), 
'sfWidgetFormChoiceBase'))
     {
-      switch ($column->getDoctrineType())
-      {
-        case 'enum':
-          $values = $column->getDefinitionKey('values');
-          $values = array_combine($values, $values);
-          $options[] = "'choices' => " . str_replace("\n", '', 
$this->arrayExport($values));
-          break;
-      }
+      $options[] = '\'choices\' => 
'.$this->arrayExport(array_combine($column['values'], $column['values']));
     }
 
     return count($options) ? sprintf('array(%s)', implode(', ', $options)) : 
'';
@@ -456,8 +450,7 @@
           }
           break;
         case 'enum':
-          $values = array_combine($column['values'], $column['values']);
-          $options[] = "'choices' => " . str_replace("\n", '', 
$this->arrayExport($values));
+          $options[] = '\'choices\' => '.$this->arrayExport($column['values']);
           break;
       }
     }

Modified: 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/FormGeneratorTest.php
===================================================================
--- 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/FormGeneratorTest.php 
    2010-02-08 15:29:11 UTC (rev 27741)
+++ 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/FormGeneratorTest.php 
    2010-02-08 15:46:35 UTC (rev 27742)
@@ -12,7 +12,7 @@
 $fixtures = 'fixtures';
 require_once(dirname(__FILE__).'/../bootstrap/functional.php');
 
-$t = new lime_test(40);
+$t = new lime_test(41);
 
 $t->diag("Test that these models don't generate forms or filters classes");
 $noFormsOrFilters = array('UserGroup', 'UserPermission', 'GroupPermission');
@@ -82,3 +82,15 @@
 $test = new BlogArticleFormFilter();
 $t->is($test->getWidget('author_id')->getOption('model'), 'BlogAuthor');
 $t->is($test->getValidator('author_id')->getOption('model'), 'BlogAuthor');
+
+$t->diag('Check enum primary keys');
+try
+{
+  $test = new ResourceTypeForm();
+  $t->pass('enum primary key widgets work');
+}
+catch (InvalidArgumentException $e)
+{
+  $t->fail('enum primary key widgets work');
+  $t->diag('    '.$e->getMessage());
+}

Modified: 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/doctrine/schema.yml
===================================================================
--- 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/doctrine/schema.yml
       2010-02-08 15:29:11 UTC (rev 27741)
+++ 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/doctrine/schema.yml
       2010-02-08 15:46:35 UTC (rev 27742)
@@ -209,4 +209,12 @@
   columns:
     column_1: string(255)
     column2: string(255)
-    column__3: string(255)
\ No newline at end of file
+    column__3: string(255)
+
+ResourceType:
+  columns:
+    id:
+      type: enum
+      values: [type1, type2, type3]
+      primary: true
+    name: string(255)

Modified: 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/sql/schema.sql
===================================================================
--- 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/sql/schema.sql
      2010-02-08 15:29:11 UTC (rev 27741)
+++ 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/sql/schema.sql
      2010-02-08 15:46:35 UTC (rev 27742)
@@ -13,6 +13,7 @@
 CREATE TABLE model_with_number_in_column (id INTEGER PRIMARY KEY 
AUTOINCREMENT, column_1 VARCHAR(255), column2 VARCHAR(255), column__3 
VARCHAR(255));
 CREATE TABLE permission (id INTEGER PRIMARY KEY AUTOINCREMENT, name 
VARCHAR(255));
 CREATE TABLE profile (id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER, 
first_name VARCHAR(255), last_name VARCHAR(255));
+CREATE TABLE resource_type (id VARCHAR(255), name VARCHAR(255), PRIMARY 
KEY(id));
 CREATE TABLE unique_test (id INTEGER PRIMARY KEY AUTOINCREMENT, unique_test1 
VARCHAR(255) UNIQUE, unique_test2 VARCHAR(255), unique_test3 VARCHAR(255), 
unique_test4 VARCHAR(255));
 CREATE TABLE user (id INTEGER PRIMARY KEY AUTOINCREMENT, username VARCHAR(255) 
UNIQUE, password VARCHAR(255), test VARCHAR(255));
 CREATE TABLE user_group (user_id INTEGER, group_id INTEGER, PRIMARY 
KEY(user_id, group_id));

Added: 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/ResourceTypeFormFilter.class.php
===================================================================
--- 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/ResourceTypeFormFilter.class.php
                             (rev 0)
+++ 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/ResourceTypeFormFilter.class.php
     2010-02-08 15:46:35 UTC (rev 27742)
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * ResourceType filter form.
+ *
+ * @package    symfony12
+ * @subpackage filter
+ * @author     Your name here
+ * @version    SVN: $Id$
+ */
+class ResourceTypeFormFilter extends BaseResourceTypeFormFilter
+{
+  public function configure()
+  {
+  }
+}


Property changes on: 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/ResourceTypeFormFilter.class.php
___________________________________________________________________
Added: svn:keywords
   + Id
Added: svn:eol-style
   + native

Added: 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/ResourceTypeForm.class.php
===================================================================
--- 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/ResourceTypeForm.class.php
                             (rev 0)
+++ 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/ResourceTypeForm.class.php
     2010-02-08 15:46:35 UTC (rev 27742)
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * ResourceType form.
+ *
+ * @package    symfony12
+ * @subpackage form
+ * @author     Your name here
+ * @version    SVN: $Id$
+ */
+class ResourceTypeForm extends BaseResourceTypeForm
+{
+  public function configure()
+  {
+  }
+}


Property changes on: 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/ResourceTypeForm.class.php
___________________________________________________________________
Added: svn:keywords
   + Id
Added: svn:eol-style
   + native

Added: 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ResourceType.class.php
===================================================================
--- 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ResourceType.class.php
                                (rev 0)
+++ 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ResourceType.class.php
        2010-02-08 15:46:35 UTC (rev 27742)
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * ResourceType
+ * 
+ * This class has been auto-generated by the Doctrine ORM Framework
+ * 
+ * @package    symfony12
+ * @subpackage model
+ * @author     Your name here
+ * @version    SVN: $Id$
+ */
+class ResourceType extends BaseResourceType
+{
+}


Property changes on: 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ResourceType.class.php
___________________________________________________________________
Added: svn:keywords
   + Id
Added: svn:eol-style
   + native

Added: 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ResourceTypeTable.class.php
===================================================================
--- 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ResourceTypeTable.class.php
                           (rev 0)
+++ 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ResourceTypeTable.class.php
   2010-02-08 15:46:35 UTC (rev 27742)
@@ -0,0 +1,5 @@
+<?php
+
+class ResourceTypeTable extends Doctrine_Table
+{
+}


Property changes on: 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ResourceTypeTable.class.php
___________________________________________________________________
Added: svn:keywords
   + Id
Added: svn:eol-style
   + native

-- 
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