/** * */ 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); } }
/** * @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); }