public function testSortingList() { $cmdl = 'name @sortable'; $records = []; $records[1] = RecordFactory::instance()->createRecordFromCMDL($cmdl, ['name' => 'F', 'position' => 1, 'parent' => 0])->setId(1); $records[2] = RecordFactory::instance()->createRecordFromCMDL($cmdl, ['name' => 'E', 'position' => 2, 'parent' => 0])->setId(2); $records[3] = RecordFactory::instance()->createRecordFromCMDL($cmdl, ['name' => 'D', 'position' => 3, 'parent' => 0])->setId(3); $records[4] = RecordFactory::instance()->createRecordFromCMDL($cmdl, ['name' => 'C', 'position' => 4, 'parent' => 0])->setId(4); $records[5] = RecordFactory::instance()->createRecordFromCMDL($cmdl, ['name' => 'B', 'position' => 5, 'parent' => 0])->setId(5); $records[6] = RecordFactory::instance()->createRecordFromCMDL($cmdl, ['name' => 'A'])->setId(6); $records = RecordsSorter::orderRecords($records, ['name']); $this->assertEquals([6, 5, 4, 3, 2, 1], array_keys($records)); $records = RecordsSorter::orderRecords($records, ['name-']); $this->assertEquals([1, 2, 3, 4, 5, 6], array_keys($records)); $records = RecordsSorter::orderRecords($records, ['position']); $this->assertEquals([6, 1, 2, 3, 4, 5], array_keys($records)); $records = RecordsSorter::sortRecords($records); $this->assertEquals([1, 2, 3, 4, 5], array_keys($records)); $records[1]->setPosition(6); $records = RecordsSorter::sortRecords($records); $this->assertEquals([2, 3, 4, 5, 1], array_keys($records)); }
/** * @param string|Filter $filter * @param int $page * @param null $count * @param string|Array $order * * @return Record[] */ public function getRecords($filter = '', $order = ['.id'], $page = 1, $count = null, $dataDimensions = null) { if ($dataDimensions == null) { $dataDimensions = $this->getCurrentDataDimensions(); } if ($this->readConnection instanceof FilteringConnection) { $records = $this->readConnection->getRecords($this->getCurrentContentTypeName(), $dataDimensions, $filter, $page, $count, $order); } else { $records = $this->getAllRecords($dataDimensions); if ($filter != '') { $records = RecordsFilter::filterRecords($records, $filter); } $records = RecordsSorter::orderRecords($records, $order); if ($count != null) { $records = RecordsPager::sliceRecords($records, $page, $count); } } foreach ($records as $record) { $record->setRepository($this); } return $records; }
/** * @param string|Filter $filter * @param int $page * @param null $count * @param string|Array $order * * @return Record[] */ public function getRecords($filter = '', $page = 1, $count = null, $order = ['.id']) { $records = $this->getAllRecords(); if ($filter != '') { $records = RecordsFilter::filterRecords($records, $filter); } $records = RecordsSorter::orderRecords($records, $order); if ($count != null) { $records = RecordsPager::sliceRecords($records, $page, $count); } return $records; }