mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
Merge branch '4.4' into 4
# Conflicts: # src/Dev/Tasks/MigrateFileTask.php
This commit is contained in:
commit
00fd74a0a1
@ -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()
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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')");
|
||||
|
@ -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
|
||||
);
|
||||
|
Loading…
Reference in New Issue
Block a user