Source of file SortProvider.php
Size: 1,375 Bytes - Last Modified: 2021-12-23T10:02:17+00:00
/var/www/docs.ssmods.com/process/src/code/Providers/SortProvider.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | <?php namespace Seeder; use DataObject; /** * Class SortProvider * @package Seeder */ class SortProvider extends Provider { /** * @var string */ public static $shorthand = 'sort'; /** * @var array */ private static $classCache = array(); /** * @var array */ private static $sortCache = array(); /** * @param $field * @param $state * @return int */ protected function generateField($field, $state) { if (!$state->object()) { return 0; } $obj = $state->object(); $className = $obj->class; if (!isset(self::$classCache[$className])) { $ancestry = singleton($className)->getClassAncestry(); foreach ($ancestry as $ancestor) { $fields = DataObject::custom_database_fields($ancestor); if (isset($fields[$field->name])) { self::$classCache[$className] = $ancestor; break; } } } $sortClass = self::$classCache[$className]; if (!isset(self::$sortCache[$sortClass])) { self::$sortCache[$sortClass] = $sortClass::get()->max($field->name); } $sort = self::$sortCache[$sortClass] + 1; self::$sortCache[$sortClass] = $sort; return $sort; } } |