getSchemaManager()->hasTable('SiteTree_LinkTracking'); if (!$exists) { DB::alteration_message("Table SiteTree_LinkTracking has already been migrated, or doesn't exist"); return; } $pages = 0; // Ensure sync occurs on draft Versioned::withVersionedMode(function () use (&$pages) { Versioned::set_stage(Versioned::DRAFT); /** @var SiteTree[] $linkedPages */ $linkedPages = SiteTree::get() ->innerJoin( 'SiteTree_LinkTracking', '"SiteTree_LinkTracking"."SiteTreeID" = "SiteTree"."ID"' ); foreach ($linkedPages as $page) { // Command page to update symlink tracking $page->syncLinkTracking(); $pages++; } }); DB::alteration_message("Migrated page links on " . SiteTree::singleton()->i18n_pluralise($pages)); // Disable table to prevent double-migration DB::dont_require_table('SiteTree_LinkTracking'); } }