Commit d2b0181e authored by jsor's avatar jsor

Rework schema column definition event

parent a1b18d86
...@@ -26,7 +26,7 @@ use Doctrine\Common\EventArgs, ...@@ -26,7 +26,7 @@ use Doctrine\Common\EventArgs,
Doctrine\DBAL\Schema\Column; Doctrine\DBAL\Schema\Column;
/** /**
* Event Arguments used when the portable column definition is generated inside Doctrine\DBAL\Schema\AbstractSchemaManager. * Event Arguments used when the portable tableColumn definition is generated inside Doctrine\DBAL\Schema\AbstractSchemaManager.
* *
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link www.doctrine-project.com * @link www.doctrine-project.com
...@@ -37,10 +37,17 @@ use Doctrine\Common\EventArgs, ...@@ -37,10 +37,17 @@ use Doctrine\Common\EventArgs,
class SchemaColumnDefinitionEventArgs extends SchemaEventArgs class SchemaColumnDefinitionEventArgs extends SchemaEventArgs
{ {
/** /**
* @var array * @var \Doctrine\DBAL\Schema\Column $column
*/ */
private $_column = null; private $_column = null;
/**
* Raw column data as fetched from the database
*
* @var array
*/
private $_tableColumn = null;
/** /**
* @var string * @var string
*/ */
...@@ -57,32 +64,49 @@ class SchemaColumnDefinitionEventArgs extends SchemaEventArgs ...@@ -57,32 +64,49 @@ class SchemaColumnDefinitionEventArgs extends SchemaEventArgs
private $_connection = null; private $_connection = null;
/** /**
* @var \Doctrine\DBAL\Schema\Column $columnDefinition * @param array $tableColumn
*/ * @param string $table
private $_columnDefinition = null; * @param string $database
/**
* @param type $column
* @param type $table
* @param type $database
* @param \Doctrine\DBAL\Connection $conn * @param \Doctrine\DBAL\Connection $conn
*/ */
public function __construct($column, $table, $database, Connection $connection) public function __construct(array $tableColumn, $table, $database, Connection $connection)
{ {
$this->_column = $column; $this->_tableColumn = $tableColumn;
$this->_table = $table; $this->_table = $table;
$this->_database = $database; $this->_database = $database;
$this->_connection = $connection; $this->_connection = $connection;
} }
/** /**
* @return array * Allows to clear the column which means the column will be excluded from
* tables column list.
*
* @param null|\Doctrine\DBAL\Schema\Column $column
* @return SchemaColumnDefinitionEventArgs
*/
public function setColumn(Column $column = null)
{
$this->_column = $column;
return $this;
}
/**
* @return array|\Doctrine\DBAL\Schema\Column
*/ */
public function getColumn() public function getColumn()
{ {
return $this->_column; return $this->_column;
} }
/**
* @return array
*/
public function getTableColumn()
{
return $this->_tableColumn;
}
/** /**
* @return string * @return string
*/ */
...@@ -114,23 +138,4 @@ class SchemaColumnDefinitionEventArgs extends SchemaEventArgs ...@@ -114,23 +138,4 @@ class SchemaColumnDefinitionEventArgs extends SchemaEventArgs
{ {
return $this->_connection->getDatabasePlatform(); return $this->_connection->getDatabasePlatform();
} }
/**
* @param \Doctrine\DBAL\Schema\Column $columnDefinition
* @return SchemaColumnDefinitionEventArgs
*/
public function setColumnDefinition(Column $columnDefinition)
{
$this->_columnDefinition = $columnDefinition;
return $this;
}
/**
* @return \Doctrine\DBAL\Schema\Column
*/
public function getColumnDefinition()
{
return $this->_columnDefinition;
}
} }
...@@ -630,25 +630,25 @@ abstract class AbstractSchemaManager ...@@ -630,25 +630,25 @@ abstract class AbstractSchemaManager
$eventManager = $this->_platform->getEventManager(); $eventManager = $this->_platform->getEventManager();
$list = array(); $list = array();
foreach ($tableColumns as $key => $column) { foreach ($tableColumns as $key => $tableColumn) {
$columnDefinition = null; $column = null;
$defaultPrevented = false; $defaultPrevented = false;
if (null !== $eventManager && $eventManager->hasListeners(Events::onSchemaColumnDefinition)) { if (null !== $eventManager && $eventManager->hasListeners(Events::onSchemaColumnDefinition)) {
$eventArgs = new SchemaColumnDefinitionEventArgs($column, $table, $database, $this->_conn); $eventArgs = new SchemaColumnDefinitionEventArgs($tableColumn, $table, $database, $this->_conn);
$eventManager->dispatchEvent(Events::onSchemaColumnDefinition, $eventArgs); $eventManager->dispatchEvent(Events::onSchemaColumnDefinition, $eventArgs);
$defaultPrevented = $eventArgs->isDefaultPrevented(); $defaultPrevented = $eventArgs->isDefaultPrevented();
$columnDefinition = $eventArgs->getColumnDefinition(); $column = $eventArgs->getColumn();
} }
if (!$defaultPrevented) { if (!$defaultPrevented) {
$columnDefinition = $this->_getPortableTableColumnDefinition($column); $column = $this->_getPortableTableColumnDefinition($tableColumn);
} }
if ($columnDefinition) { if ($column) {
$name = strtolower($columnDefinition->getQuotedName($this->_platform)); $name = strtolower($column->getQuotedName($this->_platform));
$list[$name] = $columnDefinition; $list[$name] = $column;
} }
} }
return $list; return $list;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment