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); $sitetreeTbl = DataObject::singleton(SiteTree::class)->baseTable(); /** @var SiteTree[] $linkedPages */ $linkedPages = SiteTree::get() ->innerJoin( 'SiteTree_LinkTracking', "\"SiteTree_LinkTracking\".\"SiteTreeID\" = \"$sitetreeTbl\".\"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'); } }