Skip to content

Commit 21a94cb

Browse files
author
Hugo Hamon
committed
[Bridge] [Doctrine] made session table columns configurable through constructor method.
1 parent a57ce90 commit 21a94cb

File tree

4 files changed

+414
-15
lines changed

4 files changed

+414
-15
lines changed

src/Symfony/Bridge/Doctrine/HttpFoundation/DbalSessionHandler.php

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,28 +40,34 @@ class DbalSessionHandler implements \SessionHandlerInterface
4040
/**
4141
* @var string Column for session id
4242
*/
43-
private $idCol = 'sess_id';
43+
private $idCol;
4444

4545
/**
4646
* @var string Column for session data
4747
*/
48-
private $dataCol = 'sess_data';
48+
private $dataCol;
4949

5050
/**
5151
* @var string Column for timestamp
5252
*/
53-
private $timeCol = 'sess_time';
53+
private $timeCol;
5454

5555
/**
5656
* Constructor.
5757
*
58-
* @param Connection $con A connection
59-
* @param string $tableName Table name
58+
* @param Connection $con A database connection handler
59+
* @param string $tableName The session table name
60+
* @param string $idColumn The session id table column
61+
* @param string $dataColumn The session data table column
62+
* @param string $timeColumn The session time table column
6063
*/
61-
public function __construct(Connection $con, $tableName = 'sessions')
64+
public function __construct(Connection $con, $tableName = 'sessions', $idColumn = 'sess_id', $dataColumn = 'sess_data', $timeColumn = 'sess_time')
6265
{
6366
$this->con = $con;
6467
$this->table = $tableName;
68+
$this->idCol = $idColumn;
69+
$this->dataCol = $dataColumn;
70+
$this->timeCol = $timeColumn;
6571
}
6672

6773
/**

src/Symfony/Bridge/Doctrine/HttpFoundation/DbalSessionHandlerSchema.php

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,15 @@
1717
* DBAL Session Storage Schema.
1818
*
1919
* @author Johannes M. Schmitt <schmittjoh@gmail.com>
20+
* @author Hugo Hamon <hugohamon@neuf.fr>
2021
*/
2122
final class DbalSessionHandlerSchema extends Schema
2223
{
23-
public function __construct($tableName = 'sessions')
24+
public function __construct($tableName = 'sessions', $idColumn = 'sess_id', $dataColumn = 'sess_data', $timeColumn = 'sess_time')
2425
{
2526
parent::__construct();
2627

27-
$this->addSessionTable($tableName);
28+
$this->addSessionTable($tableName, $idColumn, $dataColumn, $timeColumn);
2829
}
2930

3031
public function addToSchema(Schema $schema)
@@ -34,12 +35,12 @@ public function addToSchema(Schema $schema)
3435
}
3536
}
3637

37-
private function addSessionTable($tableName)
38+
private function addSessionTable($tableName, $idColumn, $dataColumn, $timeColumn)
3839
{
3940
$table = $this->createTable($tableName);
40-
$table->addColumn('sess_id', 'string');
41-
$table->addColumn('sess_data', 'text')->setNotNull(true);
42-
$table->addColumn('sess_time', 'integer')->setNotNull(true)->setUnsigned(true);
43-
$table->setPrimaryKey(array('sess_id'));
41+
$table->addColumn($idColumn, 'string');
42+
$table->addColumn($dataColumn, 'text')->setNotNull(true);
43+
$table->addColumn($timeColumn, 'integer')->setNotNull(true)->setUnsigned(true);
44+
$table->setPrimaryKey(array($idColumn));
4445
}
4546
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php
2+
3+
namespace Symfony\Bridge\Doctrine\Tests\HttpFoundation;
4+
5+
use Symfony\Bridge\Doctrine\HttpFoundation\DbalSessionHandlerSchema;
6+
7+
class DbalSessionHandlerSchemaTest extends \PHPUnit_Framework_TestCase
8+
{
9+
public function testCreateDefaultDbalSessionHandlerSchema()
10+
{
11+
$schema = new DbalSessionHandlerSchema();
12+
13+
$this->assertTrue($schema->hasTable('sessions'));
14+
$this->assertTrue($schema->getTable('sessions')->hasColumn('sess_id'));
15+
$this->assertTrue($schema->getTable('sessions')->hasColumn('sess_data'));
16+
$this->assertTrue($schema->getTable('sessions')->hasColumn('sess_time'));
17+
}
18+
19+
public function testCreateCustomDbalSessionHandlerSchema()
20+
{
21+
$schema = new DbalSessionHandlerSchema('sf_sessions', 'id', 'data', 'time');
22+
23+
$this->assertTrue($schema->hasTable('sf_sessions'));
24+
$this->assertTrue($schema->getTable('sf_sessions')->hasColumn('id'));
25+
$this->assertTrue($schema->getTable('sf_sessions')->hasColumn('data'));
26+
$this->assertTrue($schema->getTable('sf_sessions')->hasColumn('time'));
27+
}
28+
}

0 commit comments

Comments
 (0)