public function testSortingTree()
 {
     //        A
     //     B    C
     //   D  E     F
     //          G   H
     //
     $cmdl = 'name
     @sortable';
     $records = [];
     $records[1] = RecordFactory::instance()->createRecordFromCMDL($cmdl, ['name' => 'A', 'position' => 1, 'parent' => 0])->setId(1);
     $records[2] = RecordFactory::instance()->createRecordFromCMDL($cmdl, ['name' => 'B', 'position' => 1, 'parent' => 1])->setId(2);
     $records[3] = RecordFactory::instance()->createRecordFromCMDL($cmdl, ['name' => 'C', 'position' => 1, 'parent' => 1])->setId(3);
     $records[4] = RecordFactory::instance()->createRecordFromCMDL($cmdl, ['name' => 'D', 'position' => 1, 'parent' => 2])->setId(4);
     $records[5] = RecordFactory::instance()->createRecordFromCMDL($cmdl, ['name' => 'E', 'position' => 2, 'parent' => 2])->setId(5);
     $records[6] = RecordFactory::instance()->createRecordFromCMDL($cmdl, ['name' => 'F', 'position' => 1, 'parent' => 3])->setId(6);
     $records[7] = RecordFactory::instance()->createRecordFromCMDL($cmdl, ['name' => 'G', 'position' => 1, 'parent' => 6])->setId(7);
     $records[8] = RecordFactory::instance()->createRecordFromCMDL($cmdl, ['name' => 'H', 'position' => 2, 'parent' => 6])->setId(8);
     $subset = RecordsSorter::sortRecords($records);
     $this->assertEquals([1, 2, 4, 5, 3, 6, 7, 8], array_keys($subset));
     $subset = RecordsSorter::sortRecords($records, 0, false, 1);
     $this->assertEquals([1], array_keys($subset));
     $subset = RecordsSorter::sortRecords($records, 0, false, 2);
     $this->assertEquals([1, 2, 3], array_keys($subset));
     $subset = RecordsSorter::sortRecords($records, 2, false, 1);
     // B
     $this->assertEquals([4, 5], array_keys($subset));
     $subset = RecordsSorter::sortRecords($records, 3, false, 1);
     // C
     $this->assertEquals([6], array_keys($subset));
     $subset = RecordsSorter::sortRecords($records, 3, false, 2);
     // C
     $this->assertEquals([6, 7, 8], array_keys($subset));
     $subset = RecordsSorter::sortRecords($records, 0, true, 1);
     $this->assertEquals([1], array_keys($subset));
     $subset = RecordsSorter::sortRecords($records, 2, true, 1);
     // B
     $this->assertEquals([2, 4, 5], array_keys($subset));
 }
Ejemplo n.º 2
0
 protected function getAllRecords()
 {
     if ($this->isAllContentRecordsCaching()) {
         $cacheKey = $this->createCacheKey('allrecords', [$this->getCurrentContentTypeName()]);
         $data = $this->getCacheProvider()->fetch($cacheKey);
         if ($data) {
             $data = json_decode($data, true);
             $recordFactory = new RecordFactory(['validateProperties' => false]);
             $records = $recordFactory->createRecordsFromJSONRecordsArray($this->getCurrentContentTypeDefinition(), $data);
             return $records;
         }
         $records = parent::getAllRecords();
         $data = json_encode($records);
         $this->getCacheProvider()->save($cacheKey, $data, $this->allContentRecordsCaching);
         return $records;
     }
     return parent::getAllRecords();
 }