public getSortTable ( SS_List $list ) : string | ||
$list | SS_List | |
return | string |
public function getSortTable(SS_List $list)
{
$field = $this->getSortField();
if ($list instanceof ManyManyList) {
$extra = $list->getExtraFields();
$table = $list->getJoinTable();
if ($extra && array_key_exists($field, $extra)) {
return $table;
}
}
$classes = ClassInfo::dataClassesFor($list->dataClass());
foreach ($classes as $class) {
if (singleton($class)->hasOwnTableDatabaseField($field)) {
return $class;
}
}
throw new Exception("Couldn't find the sort field '{$field}'");
}
/** * @covers GridFieldOrderableRows::getSortTable */ public function testGetSortTable() { $orderable = new GridFieldOrderableRows(); $parent = new GridFieldOrderableRowsTest_Parent(); $parent->write(); $this->assertEquals('GridFieldOrderableRowsTest_Ordered', $orderable->getSortTable($parent->HasMany())); $this->assertEquals('GridFieldOrderableRowsTest_Ordered', $orderable->getSortTable($parent->HasManySubclass())); $this->assertEquals('GridFieldOrderableRowsTest_Ordered', $orderable->getSortTable($parent->ManyMany())); $this->assertEquals('GridFieldOrderableRowsTest_Parent_ManyMany', $orderable->setSortField('ManyManySort')->getSortTable($parent->ManyMany())); }