Merge branch '4.4' into 4

# Conflicts:
 #	src/Dev/Tasks/MigrateFileTask.php
This commit is contained in:
Robbie Averill 2019-05-30 09:36:42 +12:00
commit 00fd74a0a1
6 changed files with 42 additions and 11 deletions

View File

@ -104,8 +104,6 @@ class MigrateFileTask extends BuildTask
ImageThumbnailHelper::singleton()->run();
$this->extend('postFileMigrationSubtask', $subtask);
}
}
$subtask = 'fix-folder-permissions';
@ -145,6 +143,8 @@ class MigrateFileTask extends BuildTask
}
$this->extend('postFileMigration');
$this->logger->info("Done!");
}
public function getDescription()

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')");

View File

@ -854,7 +854,7 @@ class SQLSelectTest extends SapphireTest
$sql = $query->sql();
$this->assertSQLEquals(
'SELECT * FROM "MyTable" AS "MyTableAlias" , '.
'SELECT * FROM "MyTable" AS "MyTableAlias" , ' .
'(SELECT * FROM "MyTable" where "something" = "whatever") as "CrossJoin"',
$sql
);