/** * Clears the dynamic cached data for a particular data object * @param DataObject $object */ public function clearDynamicCacheFor(DataObject $object) { $dynamicCache = SimpleCache::get_cache('DynamicPublisherCache'); if ($dynamicCache) { $clearUrls = array($object->Link()); if ($object->hasMethod('pagesAffectedByChanges')) { $affectedUrls = $object->pagesAffectedByChanges(); if (count($affectedUrls)) { foreach ($affectedUrls as $afUrl) { $clearUrls[] = $afUrl; } } } $clearUrls = array_unique($clearUrls); $baseUrl = $object->SiteID ? $object->Site()->getUrl() : Director::absoluteBaseURL(); foreach ($clearUrls as $absolute) { if (strpos($absolute, '://') === false) { $absolute = $baseUrl . '/' . trim($absolute, '/'); } $parts = parse_url($absolute); $host = $parts['host']; $path = '/index'; $path = isset($parts['path']) && $parts['path'] != '/' ? $parts['path'] : $path; $key = trim($parts['host'] . $path, '/'); $dynamicCache->delete($key); } } }