diff --git a/application/classes/Controller/Admin/Module/Method.php b/application/classes/Controller/Admin/Module/Method.php index 3517f0b2..51c046d7 100644 --- a/application/classes/Controller/Admin/Module/Method.php +++ b/application/classes/Controller/Admin/Module/Method.php @@ -37,7 +37,7 @@ class Controller_Admin_Module_Method extends Controller_Admin_Module { ->type('success') ->body(_('Method record has been added.')); - HTTP::redirect(URL::link('admin','/module/edit/'.$mo->id)); + HTTP::redirect(URL::link('admin','module/edit/'.$mo->id)); } Block::factory() @@ -98,6 +98,8 @@ class Controller_Admin_Module_Method extends Controller_Admin_Module { ->body(sprintf(_('Unable to save Group Method for method %s and group %s'),$mmo->name,$go->name)); } } + + HTTP::redirect(URL::link('admin','module/edit/'.$mmo->module_id)); } Block::factory() diff --git a/modules/adsl/classes/Model/Service/Plugin/Adsl/Traffic.php b/modules/adsl/classes/Model/Service/Plugin/Adsl/Traffic.php index 906d0316..33723b01 100644 --- a/modules/adsl/classes/Model/Service/Plugin/Adsl/Traffic.php +++ b/modules/adsl/classes/Model/Service/Plugin/Adsl/Traffic.php @@ -21,6 +21,15 @@ class Model_Service_Plugin_Adsl_Traffic extends ORM_OSB { 'plan'=>array('model'=>'Service_Plugin_Adsl','foreign_key'=>'service_username','far_key'=>'service'), ); + private $metrics = array( + 'up_peak', + 'up_offpeak', + 'down_peak', + 'down_offpeak', + 'peer', + 'internal', + ); + public function rules() { $result = parent::rules(); @@ -30,6 +39,37 @@ class Model_Service_Plugin_Adsl_Traffic extends ORM_OSB { return $result; } + public function save(Validation $validation = NULL) { + // If all our values are zero/NULL, we'll ignore if our previous one was. + if ($this->total() !== 0) + return parent::save($validation); + + $l = ORM::factory($this->_object_name)->where('service','=',$this->service)->where('supplier_id','=',$this->supplier_id)->list_last(); + + if ($l->total() !== 0) + return parent::save($validation); + + // Fake our save, since the previous value is 0. + $this->_loaded = $this->_saved = TRUE; + $this->_changed = array(); + $this->_original_values = $this->_object; + + return $this; + } + + public function total() { + $result = 0; + + foreach ($this->metrics as $metric) { + if (is_null($this->$metric)) + $this->$metric = 0; + + $result += $this->$metric; + } + + return $result; + } + public function traffic(Model_Product_Plugin_Adsl $plan) { // Roll up the charges according to the product plan configuration return ADSL::allowance(array( @@ -43,5 +83,9 @@ class Model_Service_Plugin_Adsl_Traffic extends ORM_OSB { 'extra_up_offpeak'=>$plan->extra_up_offpeak, )); } + + public function list_last() { + return $this->order_by('date','DESC')->order_by('time','DESC')->find(); + } } ?> diff --git a/modules/adsl/classes/Task/Adsl/Traffictrim.php b/modules/adsl/classes/Task/Adsl/Traffictrim.php new file mode 100644 index 00000000..42e3e24d --- /dev/null +++ b/modules/adsl/classes/Task/Adsl/Traffictrim.php @@ -0,0 +1,44 @@ +select('service,supplier_id') + ->group_by('service,supplier_id'); + + foreach ($t->find_all() as $group) { + + $zerorow = FALSE; + foreach (ORM::factory('Service_Plugin_Adsl_Traffic')->where('service','=',$group->service)->where('supplier_id','=',$group->supplier_id)->order_by('date')->order_by('time')->find_all() as $spato) + if ($spato->total() === 0) { + if ($zerorow) { + // Cant use delete(), as our primary key is not used in this table. + $db = DB::query(Database::DELETE,DB::delete($spato->table_name()) + ->where('service','=',$group->service) + ->where('supplier_id','=',$group->supplier_id) + ->where('date','=',$spato->date) + ->where('time','=',$spato->time)); + + $db->execute(); + } + + $zerorow = TRUE; + + } else + $zerorow = FALSE; + + // An attempt to free some memory. + $spato = NULL; + } + } +} +?> diff --git a/modules/charge/classes/Controller/Reseller/Charge.php b/modules/charge/classes/Controller/Reseller/Charge.php index 12d85100..b9465adf 100644 --- a/modules/charge/classes/Controller/Reseller/Charge.php +++ b/modules/charge/classes/Controller/Reseller/Charge.php @@ -148,7 +148,7 @@ $(document).ready(function() { ->title_icon('icon-th-list') ->body(Table::factory() ->page_items(50) - ->data(ORM::factory('Charge')->where_authorised($this->ao)->where('void','is',NULL)->order_by('id DESC')->find_all()) + ->data(ORM::factory('Charge')->where_authorised($this->ao)->where('void','is',NULL)->order_by('id','DESC')->find_all()) ->columns(array( 'id'=>'ID', 'date_charge'=>'Date', diff --git a/modules/invoice/classes/Task/Invoice/Listoverdue.php b/modules/invoice/classes/Task/Invoice/Listoverdue.php index 5c403e76..6d9ce81a 100644 --- a/modules/invoice/classes/Task/Invoice/Listoverdue.php +++ b/modules/invoice/classes/Task/Invoice/Listoverdue.php @@ -11,7 +11,7 @@ */ class Task_Invoice_Listoverdue extends Minion_Task { protected function _execute(array $params) { - $overdue = ORM::factory('Invoice')->list_overdue(); + $overdue = ORM::factory('Invoice')->list_overdue(NULL,FALSE); $rtms = $invoices = array(); foreach ($overdue as $io) diff --git a/modules/product/classes/Controller/Admin/Product.php b/modules/product/classes/Controller/Admin/Product.php index 3cb3a54a..4775957e 100644 --- a/modules/product/classes/Controller/Admin/Product.php +++ b/modules/product/classes/Controller/Admin/Product.php @@ -156,7 +156,7 @@ $(document).ready(function() { * Show a list of products */ public function action_list() { - $products = ($x=$this->request->param('id')) ? ORM::factory('Product_Category',$x)->products() : ORM::factory('Product')->order_by('status DESC,prod_plugin_file')->find_all(); + $products = ($x=$this->request->param('id')) ? ORM::factory('Product_Category',$x)->products() : ORM::factory('Product')->order_by('status','DESC')->order_by('prod_plugin_file')->find_all(); Block::factory() ->title(_('Products'))