diff --git a/application/classes/controller/lnapp/templatedefault.php b/application/classes/controller/lnapp/templatedefault.php index 34e90cf6..f5970ac0 100644 --- a/application/classes/controller/lnapp/templatedefault.php +++ b/application/classes/controller/lnapp/templatedefault.php @@ -39,7 +39,7 @@ abstract class Controller_lnApp_TemplateDefault extends Controller_Template { * @var array actions that require a valid user */ protected $secure_actions = array( - 'menu' => TRUE, + 'menu' => FALSE, ); /** @@ -203,7 +203,7 @@ abstract class Controller_lnApp_TemplateDefault extends Controller_Template { * Default Method to call from the tree menu */ public function action_menu() { - $this->template->content = 'See menu on tree'; + $this->template->content = _('Please choose from the menu.'); } protected function _headimages() { diff --git a/application/classes/controller/templatedefault/admin.php b/application/classes/controller/templatedefault/admin.php new file mode 100644 index 00000000..80f0ce8a --- /dev/null +++ b/application/classes/controller/templatedefault/admin.php @@ -0,0 +1,15 @@ + diff --git a/application/classes/controller/templatedefault/user.php b/application/classes/controller/templatedefault/user.php new file mode 100644 index 00000000..e1442280 --- /dev/null +++ b/application/classes/controller/templatedefault/user.php @@ -0,0 +1,30 @@ +secure_actions) OR (! isset($this->secure_actions[Request::current()->action()]))) + throw new Kohana_Exception('Class has no security defined :class, or no security configured for :method',array(':class'=>get_class($this),':method'=>Request::current()->action())); + + parent::before(); + + $this->ao = ORM::factory('account',Auth::instance()->get_user()->id); + if (! $this->ao->loaded()) + throw new Kohana_Exception('Account doesnt exist :account ?',array(':account'=>Auth::instance()->get_user()->id)); + } +} +?> diff --git a/modules/account/classes/controller/user/account.php b/modules/account/classes/controller/user/account.php index 92551338..f729aaa3 100644 --- a/modules/account/classes/controller/user/account.php +++ b/modules/account/classes/controller/user/account.php @@ -10,40 +10,35 @@ * @copyright (c) 2010 Deon George * @license http://dev.leenooks.net/license.html */ -class Controller_User_Account extends Controller_TemplateDefault { - public $secure_actions = array( +class Controller_User_Account extends Controller_TemplateDefault_User { + protected $secure_actions = array( 'edit'=>TRUE, 'resetpassword'=>TRUE, ); public function action_resetpassword() { - $ao = Auth::instance()->get_user(); - - if (! $ao->loaded()) - throw new Kohana_Exception('Account doesnt exist :account ?',array(':account'=>$ao->id)); - // @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 - $ao->values($_POST); + $this->ao->values($_POST); // Run validation and save - if ($ao->changed()) - if ($ao->check()) { + if ($this->ao->changed()) + if ($this->ao->check()) { SystemMessage::add(array( 'title'=>_('Record updated'), 'type'=>'info', 'body'=>_('Your account record has been updated.') )); - $ao->save(); + $this->ao->save(); Request::current()->redirect('login'); } else { $output = ''; - foreach ($ao->validation()->errors('forms/login') as $field => $error) + foreach ($this->ao->validation()->errors('forms/login') as $field => $error) $output .= sprintf('
  • %s %s
  • ',$field,$error); if ($output) @@ -59,7 +54,7 @@ class Controller_User_Account extends Controller_TemplateDefault { Block::add(array( 'title'=>_('Password Reset'), 'body'=>View::factory('account/password_reset') - ->set('record',$ao), + ->set('record',$this->ao), )); } @@ -67,28 +62,23 @@ class Controller_User_Account extends Controller_TemplateDefault { * Show a product */ public function action_edit() { - $ao = Auth::instance()->get_user(); - - if (! $ao->loaded()) - throw new Kohana_Exception('Account doesnt exist :account ?',array(':account'=>$ao->id)); - // Store our new values - $ao->values($_POST); + $this->ao->values($_POST); // Run validation and save - if ($ao->changed()) - if ($ao->check()) { + if ($this->ao->changed()) + if ($this->ao->check()) { SystemMessage::add(array( 'title'=>_('Record updated'), 'type'=>'info', 'body'=>_('Your account record has been updated.') )); - $ao->save(); + $this->ao->save(); } else { $output = ''; - foreach ($ao->validation()->errors('forms/login') as $field => $error) + foreach ($this->ao->validation()->errors('forms/login') as $field => $error) $output .= sprintf('
  • %s %s
  • ',$field,$error); if ($output) @@ -102,9 +92,9 @@ class Controller_User_Account extends Controller_TemplateDefault { } Block::add(array( - 'title'=>sprintf('%s: %s - %s',_('Account Edit'),$ao->accnum(),$ao->name(TRUE)), + 'title'=>sprintf('%s: %s - %s',_('Account Edit'),$this->ao->accnum(),$this->ao->name(TRUE)), 'body'=>View::factory('account/edit') - ->set('record',$ao), + ->set('record',$this->ao), )); } } diff --git a/modules/email/classes/controller/email.php b/modules/email/classes/controller/email.php new file mode 100644 index 00000000..fc852b44 --- /dev/null +++ b/modules/email/classes/controller/email.php @@ -0,0 +1,15 @@ + diff --git a/modules/emailtemplate/classes/controller/admin/emailtemplate.php b/modules/emailtemplate/classes/controller/admin/emailtemplate.php index e4b7a341..ab18d5d9 100644 --- a/modules/emailtemplate/classes/controller/admin/emailtemplate.php +++ b/modules/emailtemplate/classes/controller/admin/emailtemplate.php @@ -10,13 +10,13 @@ * @copyright (c) 2010 Deon George * @license http://dev.leenooks.net/license.html */ -class Controller_Admin_EmailTemplate extends Controller_TemplateDefault { - public $secure_actions = array( +class Controller_Admin_EmailTemplate extends Controller_TemplateDefault_Admin { + protected $secure_actions = array( + 'add'=>TRUE, + 'edit'=>TRUE, + 'list'=>TRUE, ); - public function action_menu() { - } - /** * List our defined email templates */ diff --git a/modules/emailtemplate/classes/controller/emailtemplate.php b/modules/emailtemplate/classes/controller/emailtemplate.php new file mode 100644 index 00000000..cdb86751 --- /dev/null +++ b/modules/emailtemplate/classes/controller/emailtemplate.php @@ -0,0 +1,15 @@ + diff --git a/modules/emailtemplate/classes/model/emailtemplate.php b/modules/emailtemplate/classes/model/emailtemplate.php index a8f742ed..22d5282f 100644 --- a/modules/emailtemplate/classes/model/emailtemplate.php +++ b/modules/emailtemplate/classes/model/emailtemplate.php @@ -25,7 +25,7 @@ class Model_EmailTemplate extends ORMOSB { ); protected $_display_filters = array( - 'status'=>array( + 'active'=>array( array('StaticList_YesNo::display',array(':value')), ), ); diff --git a/modules/export/classes/controller/admin/export.php b/modules/export/classes/controller/admin/export.php index c075a003..c2ed5870 100644 --- a/modules/export/classes/controller/admin/export.php +++ b/modules/export/classes/controller/admin/export.php @@ -10,9 +10,9 @@ * @copyright (c) 2010 Open Source Billing * @license http://dev.osbill.net/license.html */ -class Controller_Admin_Export extends Controller_TemplateDefault { +class Controller_Admin_Export extends Controller_TemplateDefault_Admin { protected $control_title = 'Export'; - public $secure_actions = array( + protected $secure_actions = array( 'index'=>TRUE, 'export'=>TRUE, ); diff --git a/modules/invoice/classes/controller/admin/invoice.php b/modules/invoice/classes/controller/admin/invoice.php index aa7ca8d1..83b8d4eb 100644 --- a/modules/invoice/classes/controller/admin/invoice.php +++ b/modules/invoice/classes/controller/admin/invoice.php @@ -10,7 +10,7 @@ * @copyright (c) 2010 Open Source Billing * @license http://dev.osbill.net/license.html */ -class Controller_Admin_Invoice extends Controller_TemplateDefault { +class Controller_Admin_Invoice extends Controller_TemplateDefault_Admin { public function action_convert() { if (Config::sitemode() != KOHANA::DEVELOPMENT) throw new Kohana_Exception(__METHOD__.' can only be run in development'); diff --git a/modules/invoice/classes/controller/user/invoice.php b/modules/invoice/classes/controller/user/invoice.php index 5ea6ac49..336e9cbb 100644 --- a/modules/invoice/classes/controller/user/invoice.php +++ b/modules/invoice/classes/controller/user/invoice.php @@ -10,8 +10,8 @@ * @copyright (c) 2010 Deon George * @license http://dev.leenooks.net/license.html */ -class Controller_User_Invoice extends Controller_TemplateDefault { - public $secure_actions = array( +class Controller_User_Invoice extends Controller_TemplateDefault_User { + protected $secure_actions = array( 'download'=>TRUE, 'list'=>TRUE, 'view'=>TRUE, @@ -21,16 +21,10 @@ class Controller_User_Invoice extends Controller_TemplateDefault { * Show a product */ public function action_list() { - $id = Auth::instance()->get_user()->id; - $ao = ORM::factory('account',$id); - - if (! $ao->loaded()) - throw new Kohana_Exception('Account doesnt exist :account ?',array(':account'=>$id)); - Block::add(array( - 'title'=>sprintf('%s: %s - %s',_('Invoices For'),$ao->accnum(),$ao->name(TRUE)), + 'title'=>sprintf('%s: %s - %s',_('Invoices For'),$this->ao->accnum(),$this->ao->name(TRUE)), 'body'=>View::factory('invoice/user/list') - ->set('invoices',$ao->invoice->find_all()), + ->set('invoices',$this->ao->invoice->find_all()), )); } diff --git a/modules/invoice/classes/invoice.php b/modules/invoice/classes/invoice.php index 1dd74afe..a0448806 100644 --- a/modules/invoice/classes/invoice.php +++ b/modules/invoice/classes/invoice.php @@ -125,7 +125,7 @@ SELECT i.id AS iid,i.due_date AS due FROM ab_invoice i,ab_invoice_item ii WHERE $pdf->drawRemittenceStub(); $pdf->drawPaymentMethods(); - if ($this->io->billing_status !=1 && $this->io->suspend_billing != 1 && $this->io->due_date <= time()) + if ($this->io->billing_status !=1 && $this->io->due_date <= time()) $pdf->drawInvoiceDueNotice(); elseif($this->io->billing_status == 1) $pdf->drawInvoicePaidNotice(); diff --git a/modules/module/classes/controller/admin/module.php b/modules/module/classes/controller/admin/module.php index 8c69c7c7..638fa4cd 100644 --- a/modules/module/classes/controller/admin/module.php +++ b/modules/module/classes/controller/admin/module.php @@ -10,14 +10,37 @@ * @copyright (c) 2010 Deon George * @license http://dev.leenooks.net/license.html */ -class Controller_Admin_Module extends Controller_Module { +class Controller_Admin_Module extends Controller_TemplateDefault_Admin { + protected $secure_actions = array( + 'edit'=>TRUE, + 'list'=>TRUE, + ); + /** - * Our menu method - * - * We need this method, otherwise we have redirect from our parent + * Get the list of methods for a class */ - public function action_menu() { - $this->template->content = _('See menu on tree'); + protected function _methods($class) { + // Get a list of methods this module has + $ch = 'Controller_%s'; + $methods = array(); + + // List of classes where all our methods are, including this one. + $classes = Kohana::config('config.method_directory'); + array_unshift($classes,''); + + foreach ($classes as $c) { + $cn = sprintf($ch,$c ? $c.'_'.$class : $class); + + if (class_exists($cn)) { + $r = new ReflectionClass($cn); + + foreach ($r->getMethods() as $method) + if (preg_match('/^Controller_(.*_)?'.$class.'$/i',$method->class) AND ! preg_match('/^_/',$method->name)) + array_push($methods,str_replace('action_',($c ? $c.'_' : $c),$method->name)); + } + } + + return $methods; } /** diff --git a/modules/module/classes/controller/module.php b/modules/module/classes/controller/module.php index 18a4e5c3..fccea93a 100644 --- a/modules/module/classes/controller/module.php +++ b/modules/module/classes/controller/module.php @@ -11,42 +11,5 @@ * @license http://dev.leenooks.net/license.html */ class Controller_Module extends Controller_TemplateDefault { - public $secure_actions = array( - 'edit'=>TRUE, - 'list'=>TRUE, - 'menu'=>TRUE, - ); - - public function action_menu() { - // Redirect us to the admin menu, no user facilities here! - Request::current()->redirect('/admin/module/menu'); - } - - /** - * Get the list of methods for a class - */ - protected function _methods($class) { - // Get a list of methods this module has - $ch = 'Controller_%s'; - $methods = array(); - - // List of classes where all our methods are, including this one. - $classes = Kohana::config('config.method_directory'); - array_unshift($classes,''); - - foreach ($classes as $c) { - $cn = sprintf($ch,$c ? $c.'_'.$class : $class); - - if (class_exists($cn)) { - $r = new ReflectionClass($cn); - - foreach ($r->getMethods() as $method) - if (preg_match('/^Controller_(.*_)?'.$class.'$/i',$method->class) AND ! preg_match('/^_/',$method->name)) - array_push($methods,str_replace('action_',($c ? $c.'_' : $c),$method->name)); - } - } - - return $methods; - } } ?> diff --git a/modules/payment/classes/controller/payment.php b/modules/payment/classes/controller/payment.php new file mode 100644 index 00000000..e930dca4 --- /dev/null +++ b/modules/payment/classes/controller/payment.php @@ -0,0 +1,15 @@ + diff --git a/modules/payment/classes/controller/user/payment.php b/modules/payment/classes/controller/user/payment.php index 6ea2176f..507c1682 100644 --- a/modules/payment/classes/controller/user/payment.php +++ b/modules/payment/classes/controller/user/payment.php @@ -10,26 +10,19 @@ * @copyright (c) 2010 Deon George * @license http://dev.leenooks.net/license.html */ -class Controller_User_Payment extends Controller_TemplateDefault { - public $secure_actions = array( +class Controller_User_Payment extends Controller_TemplateDefault_User { + protected $secure_actions = array( 'list'=>TRUE, - 'view'=>TRUE, ); /** * Show a payments received */ public function action_list() { - $id = Auth::instance()->get_user()->id; - $ao = ORM::factory('account',$id); - - if (! $ao->loaded()) - throw new Kohana_Exception('Account doesnt exist :account ?',array(':account'=>$id)); - Block::add(array( - 'title'=>sprintf('%s: %s - %s',_('Payments For'),$ao->accnum(),$ao->name(TRUE)), + 'title'=>sprintf('%s: %s - %s',_('Payments For'),$this->ao->accnum(),$this->ao->name(TRUE)), 'body'=>View::factory('payment/user/list') - ->set('payments',$ao->payment->find_all()), + ->set('payments',$this->ao->payment->find_all()), )); } } diff --git a/modules/service/classes/controller/admin/service.php b/modules/service/classes/controller/admin/service.php index 8381e0a7..11ee1201 100644 --- a/modules/service/classes/controller/admin/service.php +++ b/modules/service/classes/controller/admin/service.php @@ -10,10 +10,10 @@ * @copyright (c) 2010 Open Source Billing * @license http://dev.osbill.net/license.html */ -class Controller_Admin_Service extends Controller_TemplateDefault { +class Controller_Admin_Service extends Controller_TemplateDefault_Admin { protected $control = array('Services'=>'services'); - public $secure_actions = array( + protected $secure_actions = array( 'listbycheckout'=>TRUE, 'listadslservices'=>TRUE, 'listhspaservices'=>TRUE, diff --git a/modules/service/classes/controller/service.php b/modules/service/classes/controller/service.php new file mode 100644 index 00000000..9b44367d --- /dev/null +++ b/modules/service/classes/controller/service.php @@ -0,0 +1,15 @@ + diff --git a/modules/service/classes/controller/user/service.php b/modules/service/classes/controller/user/service.php index 9045c0d9..34d90548 100644 --- a/modules/service/classes/controller/user/service.php +++ b/modules/service/classes/controller/user/service.php @@ -10,21 +10,11 @@ * @copyright (c) 2010 Deon George * @license http://dev.leenooks.net/license.html */ -class Controller_User_Service extends Controller_TemplateDefault { - public $secure_actions = array( +class Controller_User_Service extends Controller_TemplateDefault_User { + protected $secure_actions = array( 'list'=>TRUE, 'view'=>TRUE, ); - // Our acccount object - private $ao; - - public function before() { - parent::before(); - - $this->ao = ORM::factory('account',Auth::instance()->get_user()->id); - if (! $this->ao->loaded()) - throw new Kohana_Exception('Account doesnt exist :account ?',array(':account'=>Auth::instance()->get_user()->id)); - } /** * Show a product