Merge pull request #36 from open-sausages/pulls/better-page-generator

Improved page generation (customise depths)
This commit is contained in:
Damian Mooyman 2017-05-18 13:54:48 +12:00 committed by GitHub
commit b0ade69057

View File

@ -10,27 +10,44 @@ use SilverStripe\Dev\BuildTask;
class FTPageMakerTask extends BuildTask class FTPageMakerTask extends BuildTask
{ {
/**
* Defaults create 15,000 pages
*/
protected $pageCountByDepth = [
10,
100,
5,
1,
1
];
public function run($request) public function run($request)
{ {
echo "<h1>Making pages</h1>"; $this->generatePages();
// Creates 3^5 pages
$this->makePages(3, 5);
} }
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 = new Page();
$page->ParentID = $parentID; $page->ParentID = $parentID;
$page->Title = "Test page $prefix$i"; $page->Title = "Test page {$fullPrefix}";
$page->write(); $page->write();
$page->publish('Stage', 'Live'); $page->publish('Stage', 'Live');
echo "<li>Created '$page->Title'"; echo "Created '$page->Title'\n";
if ($depth > 1) {
$this->makePages($count, $depth-1, $prefix."$i.", $page->ID); $pageID = $page->ID;
unset($page);
if ($depth < $maxDepth-1) {
$this->generatePages($depth+1, $fullPrefix, $pageID);
} }
} }
} }
} }