owner->hasMethod('pagesAffectedByChanges')) { $urls = $this->owner->pagesAffectedByChanges($original); } else { $pages = Versioned::get_by_stage('SiteTree', 'Live', '', '', '', 10); if($pages) { foreach($pages as $page) { $urls[] = $page->AbsoluteLink(); } } } foreach($urls as $i => $url) { if(!is_string($url)) { user_error("Bad URL: " . var_export($url, true), E_USER_WARNING); continue; } if(substr($url,-1) == '/') $url = substr($url,0,-1); $urls[$i] = $url; } $urls = array_unique($urls); $this->publishPages($urls); } /** * On after unpublish, get changes and hook into underlying * functionality */ function onAfterUnpublish($page) { if (self::$disable_realtime) return; if($this->owner->hasMethod('pagesAffectedByUnpublishing')) { $urls = $this->owner->pagesAffectedByUnpublishing(); $urls = array_unique($urls); } else { $urls = array($this->owner->AbsoluteLink()); } $this->unpublishPages($urls); } /** * Get all external references to CSS, JS, */ function externalReferencesFor($content) { $CLI_content = escapeshellarg($content); $tidy = `echo $CLI_content | tidy -numeric -asxhtml`; $tidy = preg_replace('/xmlns="[^"]+"/','', $tidy); $xContent = new SimpleXMLElement($tidy); //Debug::message($xContent->asXML()); $xlinks = array( "//link[@rel='stylesheet']/@href" => false, "//script/@src" => false, "//img/@src" => false, "//a/@href" => true, ); $urls = array(); foreach($xlinks as $xlink => $assetsOnly) { $matches = $xContent->xpath($xlink); if($matches) foreach($matches as $item) { $url = $item . ''; if($assetsOnly && substr($url,0,7) != 'assets/') continue; $urls[] = $url; } } return $urls; } } ?>