diff --git a/code/tasks/FTPageMakerTask.php b/code/tasks/FTPageMakerTask.php index 60ec10b..dc9f192 100644 --- a/code/tasks/FTPageMakerTask.php +++ b/code/tasks/FTPageMakerTask.php @@ -10,27 +10,44 @@ use SilverStripe\Dev\BuildTask; class FTPageMakerTask extends BuildTask { + /** + * Defaults create 15,000 pages + */ + protected $pageCountByDepth = [ + 10, + 100, + 5, + 1, + 1 + ]; public function run($request) { - echo "

Making pages

"; - // Creates 3^5 pages - $this->makePages(3, 5); + $this->generatePages(); } - - protected function makePages($count, $depth, $prefix = "", $parentID = 0) + + protected function generatePages($depth = 0, $prefix = "", $parentID = 0) { - for ($i=1;$i<=$count;$i++) { + $maxDepth = count($this->pageCountByDepth); + $pageCount = $this->pageCountByDepth[$depth]; + + for ($i=1; $i<=$pageCount; $i++) { + $fullPrefix = $prefix ? "{$prefix}-{$i}" : $i; $page = new Page(); $page->ParentID = $parentID; - $page->Title = "Test page $prefix$i"; + $page->Title = "Test page {$fullPrefix}"; $page->write(); $page->publish('Stage', 'Live'); - echo "
  • Created '$page->Title'"; - if ($depth > 1) { - $this->makePages($count, $depth-1, $prefix."$i.", $page->ID); + echo "Created '$page->Title'\n"; + + $pageID = $page->ID; + unset($page); + + if ($depth < $maxDepth-1) { + $this->generatePages($depth+1, $fullPrefix, $pageID); } } } + }