<?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() { // Store our new values $this->ao->values($_POST); // Run validation and save if ($this->ao->changed()) if ($this->ao->check()) { SystemMessage::factory() ->title('Record updated') ->type('success') ->body(_('Your account record has been updated.')); $this->ao->save(); } else { $output = ''; // @todo Need to check that this still works with the new bootstrap theming foreach ($this->ao->validation()->errors('forms/login') as $field => $error) $output .= sprintf('<li><b>%s</b> %s</li>',$field,$error); if ($output) $output = sprintf('<ul>%s</ul>',$output); SystemMessage::factory() ->title(_('Record NOT updated')) ->type('error') ->body(_('Your updates didnt pass validation.').'<br/>'.$output); } 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() { // @todo Fix this next logic, since matches_ifset is not being called when the value is on the form, but empty if (empty($_POST['password_confirm'])) $_POST['password_confirm'] = ' '; // Store our new values $this->ao->values($_POST); // Run validation and save if ($this->ao->changed()) if ($this->ao->check()) { SystemMessage::factory() ->title('Record updated') ->type('success') ->body(_('Your account record has been updated.')); $this->ao->save(); // Log the password reset $this->ao->log('Password reset'); HTTP::redirect('login'); } else { // @todo Need to check that this still works with the new bootstrap theming $output = ''; foreach ($this->ao->validation()->errors('forms/login') as $field => $error) $output .= sprintf('<li><b>%s</b> %s</li>',$field,$error); if ($output) $output = sprintf('<ul>%s</ul>',$output); SystemMessage::factory() ->title(_('Record NOT updated')) ->type('error') ->body(_('Your updates didnt pass validation.').'<br/>'.$output); } // @todo To add JS password validation (minimum length and both values equal) Block::factory() ->title(sprintf('Password Reset: %s',$this->ao->accnum())) ->title_icon('icon-cog') ->type('form-horizontal') ->body(View::factory('account/user/resetpassword')->set('o',$this->ao)); } } ?>