silverstripe-cms/tasks/RebuildStaticCacheTask.php
Sam Minnee 387b5edd21 Merged changes from branches/2.2.2-assets:
Static publishing
Ability to lock down comments to logged-in members only

git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/cms/trunk@60470 467b73ca-7a2a-4603-9d3b-597d59a354a9
2008-08-12 02:59:27 +00:00

53 lines
1.4 KiB
PHP

<?php
/**
* @todo Make this use the Task interface once it gets merged back into trunk
*/
class RebuildStaticCacheTask extends Controller {
function init() {
if(!Director::is_cli() && !Director::isDev() && !Permission::check("ADMIN")) Security::permissionFailure();
parent::init();
}
function index() {
StaticPublisher::set_echo_progress(true);
$page = singleton('Page');
if($_GET['urls']) $urls = $_GET['urls'];
else $urls = $page->allPagesToCache();
$this->rebuildCache($urls, true);
}
/**
* Rebuilds the static cache for the pages passed through via $urls
* @param array $urls The URLs of pages to re-fetch and cache.
*/
function rebuildCache($urls, $removeAll = true) {
if(!is_array($urls)) return; // $urls must be an array
if(!Director::is_cli()) echo "<pre>\n";
echo "Rebuilding cache.\nNOTE: Please ensure that this page ends with 'Done!' - if not, then something may have gone wrong.\n\n";
$page = singleton('Page');
foreach($urls as $i => $url) {
$url = Director::makeRelative($url);
if(substr($url,-1) == '/') $url = substr($url,0,-1);
$urls[$i] = $url;
}
$urls = array_unique($urls);
if($removeAll) {
echo "Removing old cache... \n";
flush();
Filesystem::removeFolder("../cache", true);
echo "done.\n\n";
}
echo "Republishing " . sizeof($urls) . " urls...\n\n";
$page->publishPages($urls);
echo "\n\n== Done! ==";
}
}