<?php
/*
 * $RCSfile: FlushDatabaseCacheTask.class,v $
 *
 * Gallery - a web based photo album viewer and editor
 * Copyright (C) 2000-2005 Bharat Mediratta
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or (at
 * your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
 */

/**
 * @version $Revision: 1.5 $ $Date: 2005/08/23 03:49:02 $
 * @package GalleryCore
 * @subpackage Classes
 * @author Bharat Mediratta <bharat@menalto.com>
 */

GalleryCoreApi::relativeRequireOnce('modules/core/AdminMaintenance.inc');

/**
 * This is a MaintenanceTask that will delete all the cached Smarty templates.
 *
 * @package GalleryCore
 * @subpackage Classes
 *
 */
class FlushDatabaseCacheTask extends MaintenanceTask {

    /**
     * @see MaintenanceTask::getInfo()
     */
    function getInfo() {
	global $gallery;

	$info['l10Domain'] = 'modules_core';
	$info['title'] = $gallery->i18n('Delete database cache');
	$info['description'] = $gallery->i18n('Gallery stores commonly used database information on disk for increased performance.  If you modify the database directly, you should run this task to clean out the cache and force Gallery to reload the information from the database.');
	return $info;
    }

    /**
     * @see MaintenanceTask::run()
     */
    function run() {
	global $gallery;
	$platform = $gallery->getPlatform();
	$cacheBaseDir = $gallery->getConfig('data.gallery.cache');

	list ($ret, $module) = GalleryCoreApi::loadPlugin('module', 'core');
	if ($ret->isError()) {
	    return array($ret->wrap(__FILE__, __LINE__), null, null);
	}

	$cacheDirs = array('entity', 'theme', 'module');
	$success = true;
	foreach ($cacheDirs as $dir) {
	    $dir = sprintf('%s%s', $cacheBaseDir, $dir);
	    if ($platform->file_exists($dir)) {
		if ($platform->recursiveRmDir($dir)) {
		    $details[] = $module->translate(
			array('text' => 'Successfully deleted directory: %s',
			      'arg1' => $dir));
		} else {
		    $success = false;
		    $details[] = $module->translate(
			array('text' => 'Unable to delete directory: %s',
			      'arg1' => $dir));
		}
	    }
	}

	return array(GalleryStatus::success(), $success, $details);
    }
}
?>
