/**
  *
  */
 public function testWrite_WriteVersionedObjects_ObjectsWrittenToLive()
 {
     $this->markTestIncomplete('Need silverstripe-batchwrite compatibility.');
     $batchSizes = array(10, 30, 100, 300);
     foreach ($batchSizes as $batchSize) {
         $writer = new BatchedSeedWriter($batchSize);
         for ($i = 0; $i < 100; $i++) {
             $page = new \SiteTree();
             $page->Title = 'Magical Unicorn Journeys ' . $i;
             $field = $this->createField();
             $writer->write($page, $field);
         }
         $writer->finish();
         $currentStage = \Versioned::current_stage();
         \Versioned::reading_stage('Stage');
         $this->assertEquals(100, \SiteTree::get()->Count());
         \Versioned::reading_stage('Live');
         $this->assertEquals(100, \SiteTree::get()->Count());
         $pages = \SiteTree::get();
         $seeds = \SeedRecord::get();
         $writer->deleteFromStage($pages, 'Stage', 'Live');
         $writer->delete($seeds);
         $writer->finish();
         $this->assertEquals(0, \SiteTree::get()->Count());
         $this->assertEquals(0, \SeedRecord::get()->Count());
         \Versioned::reading_stage($currentStage);
     }
 }
예제 #2
0
 /**
  * @param null $key
  */
 public function unseed($key = null)
 {
     $this->outputFormatter->beginUnseed();
     // TODO delete many_many tables
     $deleted = array();
     $seeds = \SeedRecord::get();
     if ($key) {
         $seeds = $seeds->filter('Key', $key);
     }
     while ($seeds->Count()) {
         // sort by id desc to delete in reverse
         $seedBatch = $seeds->limit(1000)->sort('ID DESC');
         $classes = array();
         foreach ($seedBatch as $seed) {
             $className = $seed->SeedClassName;
             $classes[$className][] = $seed->SeedID;
             $this->writer->delete($seed);
         }
         foreach ($classes as $className => $ids) {
             $versioned = \DataObject::has_extension($className, 'Versioned');
             if ($versioned) {
                 $this->writer->deleteIDsFromStage($className, $ids, 'Stage', 'Live');
             } else {
                 $this->writer->deleteIDs($className, $ids);
             }
             $deleted[$className] = count($ids);
         }
         $this->writer->finish();
     }
     $this->outputFormatter->reportDataObjectsDeleted($deleted);
 }