<?php defined('SYSPATH') or die('No direct access allowed.');

/**
 * This class provides User Account Update functions
 *
 * @package    OSB
 * @category   Controllers/User
 * @author     Deon George
 * @copyright  (c) 2009-2013 Open Source Billing
 * @license    http://dev.osbill.net/license.html
 */
class Controller_User_Account extends Controller_Account {
	protected $secure_actions = array(
		'edit'=>TRUE,
		'resetpassword'=>TRUE,
	);

	/**
	 * Enable User to Edit their Account Details
	 */
	public function action_edit() {
		if ($_POST AND $this->ao->values($_POST)->changed() AND (! $this->save($this->ao)))
			$this->ao->reload();

		Block::factory()
			->title(sprintf('Account: %s',$this->ao->accnum()))
			->title_icon('icon-wrench')
			->type('form-horizontal')
			->body(View::factory('account/user/edit')->set('o',$this->ao));
	}

	public function action_resetpassword() {
		if ($this->request->post()) {
			$validation = Validation::factory($this->request->post())
				->rule('password','not_empty')
				->rule('password','min_length',array(':value',6))
				->rule('password_confirm','matches',array(':validation',':field','password'));

			// Store our new values
			$this->ao->values($this->request->post());

			if (! $validation->check())
				SystemMessage::factory()
					->title(_('Record NOT updated'))
					->type('error')
					->body(_('Your password didnt pass validation.'));

			// Run validation and save
			elseif ($this->ao->changed())
				if ($this->ao->save()) {
					SystemMessage::factory()
						->title('Record updated')
						->type('success')
						->body(_('Your account record has been updated.'));

					// Log the password reset
					$this->ao->log('Password reset');

					HTTP::redirect('login');
				}
		}

		if (Kohana::$environment >= Kohana::TESTING OR Request::current()->secure())
			Script::factory()
				->type('src')
				->data('media/js/jquery/jquery.validate-1.11.1.min.js');
		else
			Script::factory()
				->type('src')
				->data('http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.min.js');

		Script::factory()
			->type('stdin')
			->data('
$("#reset").validate({
	wrapper: "div",
	errorElement: "span",

	rules: {
		password_confirm: {
			equalTo: "input[name=password]",
		},
	},
	highlight: function(element) {
		$(element).parents(".control-group").removeClass("success").addClass("error");
	},
	success: function(element) {
		$(element).parents(".control-group").removeClass("error").addClass("success");
	},
	errorPlacement: function(error, element) {
		error.appendTo(element.parents(".controls"));
	}
});
			');

		Block::factory()
			->title(sprintf('Password Reset: %s',$this->ao->accnum()))
			->title_icon('icon-cog')
			->id('reset')
			->type('form-horizontal')
			->body(View::factory('account/user/resetpassword')->set('o',$this->ao));
	}
}
?>
