diff --git a/src/GridFieldOrderableRows.php b/src/GridFieldOrderableRows.php index 91cb6d3..d660fe2 100755 --- a/src/GridFieldOrderableRows.php +++ b/src/GridFieldOrderableRows.php @@ -18,8 +18,10 @@ use SilverStripe\ORM\DB; use SilverStripe\ORM\DataList; use SilverStripe\ORM\DataObjectInterface; use SilverStripe\ORM\ManyManyList; +use SilverStripe\ORM\Map; use SilverStripe\ORM\SS_List; use SilverStripe\ORM\SS_Map; +use SilverStripe\Versioned\Versioned; use SilverStripe\View\ViewableData; use Exception; @@ -171,12 +173,6 @@ class GridFieldOrderableRows extends RequestHandler implements return $this; } - /** - * Gets the table which contains the sort field. - * - * @param DataList $list - * @return string - */ public function getSortTable(SS_List $list) { $field = $this->getSortField(); @@ -189,12 +185,23 @@ class GridFieldOrderableRows extends RequestHandler implements return $table; } } + return DataObject::getSchema()->tableName($this->getSortTableClass($list)); + } + /** + * Gets the class which contains the sort field. + * + * @param DataList $list + * @return string + */ + public function getSortTableClass(SS_List $list) + { + $field = $this->getSortField(); $classes = ClassInfo::dataClassesFor($list->dataClass()); foreach ($classes as $class) { if (singleton($class)->hasDataBaseField($field)) { - return DataObject::getSchema()->tableName($class); + return $class; } } @@ -499,15 +506,15 @@ class GridFieldOrderableRows extends RequestHandler implements /** @var SS_List $map */ $map = $list->map('ID', $sortField); //fix for versions of SS that return inconsistent types for `map` function - if ($map instanceof SS_Map) { + if ($map instanceof Map) { $map = $map->toArray(); } // If not a ManyManyList and using versioning, detect it. $isVersioned = false; $class = $list->dataClass(); - if ($class == $this->getSortTable($list)) { - $isVersioned = $class::has_extension('SilverStripe\\ORM\\Versioning\\Versioned'); + if ($class == $this->getSortTableClass($list)) { + $isVersioned = $class::has_extension(Versioned::class); } // Loop through each item, and update the sort values which do not