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;
 }
Exemplo n.º 3
0
 /**
  * @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;
 }