<?php
/*  Copyright 2007, 2008 Tobias Frost <tobi@coldtobi.de> http://blog.coldtobi.de

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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

lt_include( PLOG_CLASS_PATH."class/action/admin/adminaction.class.php" );
lt_include( PLOG_CLASS_PATH."plugins/recaptcha/class/view/pluginrecaptchaconfigview.class.php" ); 

class PluginRecaptchaUpdateConfigAction extends AdminAction 
{

	var $_pluginEnabled;
	var $_pubkey;
	var $_privkey;
	var $_theme;

	/**
	 * Constructor. If nothing else, it also has to call the constructor of the parent
	 * class, BlogAction with the same parameters
	*/
        function PluginRecaptchaUpdateConfigAction( $actionInfo, $request )
        {
        	$this->AdminAction( $actionInfo, $request );
        }
		
	function validate()
	{
		$this->_pluginEnabled = (0 != ($this->_request->getValue( "pluginEnabled" )));
		$this->_pubkey  = trim($this->_request->GetValue( "PubKey"));
		$this->_privkey = trim($this->_request->GetValue( "PrivKey"));
		$this->_theme   = trim($this->_request->GetValue( "theme"));
		
		if ( $this-> _pluginEnabled )
		{
			if ( $this->_pubkey == "" || $this->_privkey == "" )
			{
				$this->_view = new PluginRecaptchaConfigView( $this->_blogInfo );
				$this->_view->setErrorMessage($this->_locale->tr("recaptcha_error_key"));
				$this->setCommonData();
				return false;
			}
		}	
		return true;
	}

	/**
	* Carries out the specified action
	*/
	function perform()
	{
		// update the plugin configurations to blog setting
		$blogSettings = $this->_blogInfo->getSettings();
		$blogSettings->setValue( "plugin_recaptcha_enabled", $this->_pluginEnabled );
		$blogSettings->setValue( "plugin_recaptcha_pubkey", $this-> _pubkey);
		$blogSettings->setValue( "plugin_recaptcha_theme", $this-> _theme);

		$locale = Locales::getLocale( $blogSettings->getValue( "locale" ) );
		$tmp =  trim($this->_locale->tr("recaptcha_mangled_key"));
		if ( $tmp != $this->_privkey )
		{
		  $blogSettings->setValue( "plugin_recaptcha_privkey", $this-> _privkey);
		}
		
		$this->_blogInfo->setSettings( $blogSettings ); 
	
		// save the blogs settings
		$blogs = new Blogs();
		if( !$blogs->updateBlog( $this->_blogInfo )) {
			$this->_view = new PluginRecaptchaConfigView( $this->_blogInfo );
			$this->_view->setErrorMessage($this->_locale->tr("error_updating_settings"));
			$this->setCommonData();
			return false;
		}
	
		// if everything went ok...
		$this->_blogInfo->setSettings( $blogSettings );
		$this->_session->setValue( "blogInfo", $this->_blogInfo );
		$this->saveSession();
		
		$this->_view = new PluginRecaptchaConfigView( $this->_blogInfo );
		$this->_view->setSuccessMessage( $this->_locale->tr("recaptcha_settings_saved_ok"));
		$this->setCommonData();
		
		// clear the cache
		CacheControl::resetBlogCache( $this->_blogInfo->getId());
		
		return true;
	}

}

?>
