From cfb0d238e5e743603d7191836c8be3c885a98aa3 Mon Sep 17 00:00:00 2001 From: Tom Rix Date: Mon, 1 Mar 2010 02:53:34 +0000 Subject: [PATCH] ENHANCEMENT: Removed unnecessary subsite caching for better static publishing operation. (from r81672) --- code/Subsite.php | 35 ++++++++++++++++++++++++++++++++++- code/SubsiteDomain.php | 9 +++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/code/Subsite.php b/code/Subsite.php index b575da9..9be782d 100644 --- a/code/Subsite.php +++ b/code/Subsite.php @@ -91,6 +91,15 @@ class Subsite extends DataObject implements PermissionProvider { } } + /** + * Whenever a Subsite is written, rewrite the hostmap + * + * @return void + */ + public function onAfterWrite() { + Subsite::writeHostMap(); + } + /** * Return the domain of this site * @@ -242,7 +251,6 @@ JS; Session::set('SubsiteID', $subsiteID); // And clear caches - self::$cached_subsite = NULL ; Permission::flush_permission_cache() ; } @@ -447,6 +455,31 @@ JS; LEFT JOIN {$q}Permission{$q} ON {$q}Group{$q}.{$q}ID{$q} = {$q}Permission{$q}.{$q}GroupID{$q}" ); } + + /** + * Write a host->domain map to cache/host-map.php + * + * This is used primarily when using subsites in conjunction with StaticPublisher + * + * @return void + * @author Tom Rix + */ + static function writeHostMap($file = null) { + if (!$file) $file = Director::baseFolder().'/cache/host-map.php'; + $hostmap = array(); + + $subsites = DataObject::get('Subsite'); + + if ($subsites) foreach($subsites as $subsite) { + $domains = $subsite->Domains(); + if ($domains) foreach($domains as $domain) { + $hostmap[str_replace('www.', '', $domain->Domain)] = $subsite->domain(); + } + } + + $data = ''; + file_put_contents($file, $data); + } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // CMS ADMINISTRATION HELPERS diff --git a/code/SubsiteDomain.php b/code/SubsiteDomain.php index 4db7483..51964d6 100644 --- a/code/SubsiteDomain.php +++ b/code/SubsiteDomain.php @@ -8,4 +8,13 @@ class SubsiteDomain extends DataObject { static $has_one = array( "Subsite" => "Subsite", ); + + /** + * Whenever a Subsite Domain is written, rewrite the hostmap + * + * @return void + */ + public function onAfterWrite() { + Subsite::writeHostMap(); + } } \ No newline at end of file