Merge branch '4.3' into 4.4

This commit is contained in:
Robbie Averill 2019-05-30 09:35:26 +12:00
commit 14673ffd0a
4 changed files with 39 additions and 8 deletions

View File

@ -1621,9 +1621,11 @@ class FormField extends RequestHandler
*/
public function getSchemaValidation()
{
$validationList = [];
if ($this->Required()) {
return [ 'required' => true ];
$validationList['required'] = true;
}
return [];
$this->extend('updateSchemaValidation', $validationList);
return $validationList;
}
}

View File

@ -30,7 +30,7 @@ class HeaderField extends DatalessField
* @param string $title
* @param int $headingLevel
*/
public function __construct($name, $title, $headingLevel = 2)
public function __construct($name, $title = null, $headingLevel = 2)
{
$this->setHeadingLevel($headingLevel);
parent::__construct($name, $title);

View File

@ -354,7 +354,6 @@ class DataQuery
{
if ($orderby = $query->getOrderBy()) {
$newOrderby = array();
$i = 0;
foreach ($orderby as $k => $dir) {
$newOrderby[$k] = $dir;
@ -372,7 +371,6 @@ class DataQuery
if (isset($originalSelect[$col])) {
$query->selectField($originalSelect[$col], $col);
}
continue;
}
@ -402,10 +400,15 @@ class DataQuery
if (!in_array($qualCol, $query->getSelect())) {
unset($newOrderby[$k]);
$newOrderby["\"_SortColumn$i\""] = $dir;
$query->selectField($qualCol, "_SortColumn$i");
// Find the first free "_SortColumnX" slot
// and assign it to $key
$i = 0;
while (isset($orderby[$key = "\"_SortColumn$i\""])) {
++$i;
}
$i++;
$newOrderby[$key] = $dir;
$query->selectField($qualCol, "_SortColumn$i");
}
}
}

View File

@ -296,6 +296,32 @@ class DataQueryTest extends SapphireTest
static::resetDBSchema(true);
}
public function testSurrogateFieldSort()
{
$query = new DataQuery(DataQueryTest\ObjectE::class);
$query->sort(
sprintf(
'(case when "Title" = %s then 1 else 0 end)',
DB::get_conn()->quoteString('Second')
),
'DESC',
true
);
$query->sort('SortOrder', 'ASC', false);
$query->sort(
sprintf(
'(case when "Title" = %s then 0 else 1 end)',
DB::get_conn()->quoteString('Fourth')
),
'DESC',
false
);
$this->assertEquals(
$query->execute()->column('Title'),
$query->column('Title')
);
}
public function testComparisonClauseDateStartsWith()
{
DB::query("INSERT INTO \"DataQueryTest_F\" (\"MyDate\") VALUES ('1988-03-04 06:30')");