Skip to content

Commit 8ba6a41

Browse files
committed
Changing parameters order
1 parent 5b5859e commit 8ba6a41

16 files changed

+39
-31
lines changed

src/Mouf/Database/QueryWriter/Controllers/SelectController.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public function defaultAction($name, $sql = null, $selfedit="false") {
6868
if ($sql != null) {
6969
$this->sql = $sql;
7070
} else {
71-
$this->sql = $select->toSql(null, array(), 0, true);
71+
$this->sql = $select->toSql(array(), null, 0, true);
7272
}
7373

7474
$this->content->addFile(dirname(__FILE__)."/../../../../views/parseSql.php", $this);
@@ -164,7 +164,7 @@ public function tryQuery($name,$selfedit="false") {
164164
$this->parameters = FindParametersService::findParameters($instanceDescriptor);
165165

166166
$select = MoufManager::getMoufManagerHiddenInstance()->getInstance($name);
167-
$this->sql = $select->toSql(null, array(), 0, true);
167+
$this->sql = $select->toSql(array(), null, 0, true);
168168

169169
$this->template->getWebLibraryManager()->addLibrary(new WebLibrary(
170170
array("../../../vendor/mouf/html.widgets.evolugrid/js/evolugrid.js")
@@ -181,7 +181,7 @@ public function tryQuery($name,$selfedit="false") {
181181
*/
182182
public function getParameterizedQuery($name,$parameters,$selfedit="false") {
183183
$select = new InstanceProxy($name);
184-
echo $select->toSql(null, $parameters);
184+
echo $select->toSql($parameters);
185185
}
186186

187187
/**
@@ -193,7 +193,7 @@ public function getParameterizedQuery($name,$parameters,$selfedit="false") {
193193
*/
194194
public function runQuery($name, $parameters, $offset = null, $limit = null) {
195195
$select = new InstanceProxy($name);
196-
$sql = $select->toSql(null, $parameters);
196+
$sql = $select->toSql($parameters);
197197

198198
// TODO: point to the right dbConnection
199199
$dbConnection = new InstanceProxy("dbConnection");

src/Mouf/Database/QueryWriter/CountNbResult.php

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
<?php
22
namespace Mouf\Database\QueryWriter;
33

4-
use SQLParser\Query\Select;
5-
64
use Mouf\Utils\Value\IntValueInterface;
75

86
use Mouf\Database\DBConnection\ConnectionInterface;
@@ -18,9 +16,9 @@ class CountNbResult implements IntValueInterface {
1816
/**
1917
* The Select statement.
2018
*
21-
* @var Select
19+
* @var QueryResult
2220
*/
23-
private $select;
21+
private $queryResult;
2422

2523
/**
2624
* The connection to the database.
@@ -31,11 +29,11 @@ class CountNbResult implements IntValueInterface {
3129

3230
/**
3331
* @Important $select
34-
* @param Select $select
32+
* @param QueryResult $queryResult The query we will perform "count" upon.
3533
* @param ConnectionInterface $connection
3634
*/
37-
public function __construct(Select $select, ConnectionInterface $connection) {
38-
$this->select = $select;
35+
public function __construct(QueryResult $queryResult, ConnectionInterface $connection) {
36+
$this->queryResult = $queryResult;
3937
$this->connection = $connection;
4038
}
4139

@@ -44,8 +42,7 @@ public function __construct(Select $select, ConnectionInterface $connection) {
4442
* @see \Mouf\Utils\Value\ArrayValueInterface::val()
4543
*/
4644
public function val() {
47-
$sql = "SELECT count(*) as cnt FROM (".$this->select->toSql().") tmp";
48-
// FIXME: add support for params!
45+
$sql = "SELECT count(*) as cnt FROM (".$this->queryResult->toSql().") tmp";
4946
return $this->connection->getOne($sql);
5047
}
5148

src/Mouf/Database/QueryWriter/QueryResult.php

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use Mouf\Utils\Common\PaginableInterface;
99

1010
use Mouf\Utils\Value\ArrayValueInterface;
11+
use Mouf\Utils\Value\ValueInterface;
1112

1213
use Mouf\Database\DBConnection\ConnectionInterface;
1314

@@ -35,7 +36,7 @@ class QueryResult implements ArrayValueInterface, PaginableInterface {
3536
/**
3637
* The list of parameters to apply to the SQL request.
3738
*
38-
* @var array<string, string>|ArrayValueInterface
39+
* @var array<string, string>|array<string, ValueInterface>|ArrayValueInterface
3940
*/
4041
private $parameters = array();
4142

@@ -55,7 +56,7 @@ public function __construct(Select $select, ConnectionInterface $connection) {
5556
/**
5657
* The list of parameters to apply to the SQL request.
5758
*
58-
* @param array<string, string>|ArrayValueInterface $parameters
59+
* @param array<string, string>|array<string, ValueInterface>|ArrayValueInterface $parameters
5960
*/
6061
public function setParameters($parameters) {
6162
$this->parameters = $parameters;
@@ -67,10 +68,19 @@ public function setParameters($parameters) {
6768
*/
6869
public function val() {
6970
$parameters = ValueUtils::val($this->parameters);
70-
$pdoStatement = $this->connection->query($this->select->toSql($this->connection, $parameters), $this->offset, $this->limit);
71+
$pdoStatement = $this->connection->query($this->select->toSql($parameters, $this->connection), $this->offset, $this->limit);
7172
return new ResultSet($pdoStatement);
7273
}
7374

75+
/**
76+
* Returns the SQL for this query-result (without pagination, but with parameters accounted for)
77+
* @return string
78+
*/
79+
public function toSql() {
80+
$parameters = ValueUtils::val($this->parameters);
81+
return $this->select->toSql($parameters, $this->connection);
82+
}
83+
7484
/**
7585
* Paginates the result set.
7686
*

src/Mouf/Database/QueryWriter/Utils/FindParametersService.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ class FindParametersService {
1111
/**
1212
* Tries to find parameters recursively in the instances and retrieves the list of parameters found.
1313
*
14-
* @param unknown $instanceName
14+
* @param MoufInstanceDescriptor $instanceDescriptor
15+
* @return string[]
1516
*/
1617
public static function findParameters(MoufInstanceDescriptor $instanceDescriptor) {
1718
return array_keys(self::recursiveFindParameters($instanceDescriptor)[1]);

src/SQLParser/Node/AbstractManyInstancesOperator.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public function toInstanceDescriptor(MoufManager $moufManager) {
5555
* @param bool $ignoreConditions
5656
* @return string
5757
*/
58-
public function toSql(ConnectionInterface $dbConnection = null, array $parameters = array(), $indent = 0, $ignoreConditions = false) {
58+
public function toSql(array $parameters = array(), ConnectionInterface $dbConnection = null, $indent = 0, $ignoreConditions = false) {
5959
$sqlOperands = array();
6060
foreach ($this->operands as $operand) {
6161
$sql = NodeFactory::toSql($operand, $dbConnection, $parameters, ' ', true, $indent, $ignoreConditions);

src/SQLParser/Node/AbstractTwoOperandsOperator.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public function toInstanceDescriptor(MoufManager $moufManager) {
8787
* @param bool $ignoreConditions
8888
* @return string
8989
*/
90-
public function toSql(ConnectionInterface $dbConnection = null, array $parameters = array(), $indent = 0, $ignoreConditions = false) {
90+
public function toSql(array $parameters = array(), ConnectionInterface $dbConnection = null, $indent = 0, $ignoreConditions = false) {
9191
if ($ignoreConditions || $this->condition->isOk($parameters)) {
9292
$sql = NodeFactory::toSql($this->leftOperand, $dbConnection, $parameters, ' ', false, $indent, $ignoreConditions);
9393
$sql .= ' '.$this->getOperatorSymbol().' ';

src/SQLParser/Node/AggregateFunction.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ public function toInstanceDescriptor(MoufManager $moufManager) {
120120
* @param bool $ignoreConditions
121121
* @return string
122122
*/
123-
public function toSql(ConnectionInterface $dbConnection = null, array $parameters = array(), $indent = 0, $ignoreConditions = false) {
123+
public function toSql(array $parameters = array(), ConnectionInterface $dbConnection = null, $indent = 0, $ignoreConditions = false) {
124124
$subTreeSql = NodeFactory::toSql($this->subTree, $dbConnection, $parameters, ' ', false, $indent, $ignoreConditions);
125125
if ($subTreeSql !== null) {
126126
$sql = $this->functionName.'(';

src/SQLParser/Node/ColRef.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ public function toInstanceDescriptor(MoufManager $moufManager) {
153153
* @param bool $ignoreConditions
154154
* @return string
155155
*/
156-
public function toSql(ConnectionInterface $dbConnection = null, array $parameters = array(), $indent = 0, $ignoreConditions = false) {
156+
public function toSql(array $parameters = array(), ConnectionInterface $dbConnection = null, $indent = 0, $ignoreConditions = false) {
157157
$sql = '';
158158
if ($this->table) {
159159
$sql .= NodeFactory::escapeDBItem($this->table, $dbConnection).'.';

src/SQLParser/Node/ConstNode.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ public function toInstanceDescriptor(MoufManager $moufManager) {
8282
* @param bool $ignoreConditions
8383
* @return string
8484
*/
85-
public function toSql(ConnectionInterface $dbConnection = null, array $parameters = array(), $indent = 0, $ignoreConditions = false) {
85+
public function toSql(array $parameters = array(), ConnectionInterface $dbConnection = null, $indent = 0, $ignoreConditions = false) {
8686
if ($this->value === null) {
8787
return 'NULL';
8888
} elseif ($dbConnection != null) {

src/SQLParser/Node/Expression.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ public function toInstanceDescriptor(MoufManager $moufManager) {
159159
* @param bool $ignoreConditions
160160
* @return string
161161
*/
162-
public function toSql(ConnectionInterface $dbConnection = null, array $parameters = array(), $indent = 0, $ignoreConditions = false) {
162+
public function toSql(array $parameters = array(), ConnectionInterface $dbConnection = null, $indent = 0, $ignoreConditions = false) {
163163
$sql = NodeFactory::toSql($this->subTree, $dbConnection, $parameters, ' ', false, $indent, $ignoreConditions);
164164
if ($this->alias) {
165165
$sql .= " AS ".$this->alias;

0 commit comments

Comments
 (0)