<?php
/*
 * $RCSfile: OptimizeDatabaseTask.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.4 $ $Date: 2005/08/23 03:49:03 $
 * @package GalleryCore
 * @subpackage Classes
 * @author Bharat Mediratta <bharat@menalto.com>
 */

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

/**
 * This is a MaintenanceTask that will optimize all the Gallery tables in the
 * database to make Gallery run smoothly.
 *
 * @package GalleryCore
 * @subpackage Classes
 *
 */
class OptimizeDatabaseTask extends MaintenanceTask {

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

	$info['l10Domain'] = 'modules_core';
	$info['title'] = $gallery->i18n('Optimize database');
	$info['description'] = $gallery->i18n('Improve the performance of your database.  Results will vary depending on which database you\'re using, but this routine maintenance will make your Gallery run faster.  Especially useful after adding or deleting many items.');
	return $info;
    }

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

	$storage =& $gallery->getStorage();
	$ret = $storage->optimize();
	if ($ret->isError()) {
	    return array($ret->wrap(__FILE__, __LINE__), null, null);
	}

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

	$details = array($module->translate('Database optimized successfully'));

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