function run($request) { $id = $request->getVar('ID'); if (!is_numeric($id) || !$id) { echo "<p>Specify ?ID=(number)</p>"; return; } // Find all pages $contentSource = StaticSiteContentSource::get()->byID($id); $contentSource->urllist()->crawl(false, true); }
function run($request) { $id = $request->getVar('ID'); if (!is_numeric($id) || !$id) { echo "<p>Specify ?ID=(number)</p>"; return; } // Find all pages $contentSource = StaticSiteContentSource::get()->byID($id); $pages = $contentSource->Pages(); echo "<p>Looking through " . $pages->Count() . " pages</p>\n"; // Set up rewriter $pageLookup = $pages->map('StaticSiteURL', 'ID'); $baseURL = $contentSource->BaseUrl; $rewriter = new StaticSiteLinkRewriter(function ($url) use($pageLookup, $baseURL) { $fragment = ""; if (strpos($url, '#') !== false) { list($url, $fragment) = explode('#', $url, 2); $fragment = '#' . $fragment; } if ($pageLookup[$url]) { return '[sitetree_link,id=' . $pageLookup[$url] . ']' . $fragment; } else { if (substr($url, 0, strlen($baseURL)) == $baseURL) { echo "<p>WARNING: {$url} couldn't be rewritten.</p>\n"; } return $url . $fragment; } }); // Perform rewriting $changedFields = 0; foreach ($pages as $page) { $schema = $contentSource->getSchemaForURL($page->URLSegment); // Get fields to process $fields = array(); foreach ($schema->ImportRules() as $rule) { if (!$rule->PlainText) { $fields[] = $rule->FieldName; } } $fields = array_unique($fields); foreach ($fields as $field) { $newContent = $rewriter->rewriteInContent($page->{$field}); if ($newContent != $page->{$field}) { $newContent = str_replace(array('%5B', '%5D'), array('[', ']'), $newContent); $changedFields++; echo "<p>Changed {$field} on {$page->Title} (#{$page->ID}).</p>"; $page->{$field} = $newContent; } } $page->write(); } echo "<p>DONE. Amended {$changedFields} content fields.</p>" . PHP_EOL; }
public function requireDefaultRecords() { foreach (StaticSiteContentSource::get() as $source) { if (!$source->Schemas()->count()) { Debug::message("Making a schema for {$source->ID}"); $defaultSchema = new StaticSiteContentSource_ImportSchema(); $defaultSchema->Order = 1000000; $defaultSchema->AppliesTo = ".*"; $defaultSchema->DataType = "Page"; $defaultSchema->ContentSourceID = $source->ID; $defaultSchema->write(); foreach (StaticSiteContentSource_ImportRule::get()->filter(array('SchemaID' => 0)) as $rule) { $rule->SchemaID = $defaultSchema->ID; $rule->write(); } } } }