array('model'=>'ADSL_Supplier_Plan','foreign_key'=>'supplier_id','far_key'=>'id'), ); protected $_updated_column = FALSE; /** * Return a list of plans that this supplier makes available */ public function plans($active=TRUE) { $a = $this->adsl_supplier_plan; if ($active) $a->where_active(); return $a; } /** * Return a list of plans that we provide by this supplier */ public function adsl_plans($active=TRUE) { $result = array(); foreach ($this->plans($active)->find_all() as $po) foreach ($po->adsl_plan->find_all() as $apo) $result[$apo->id] = $apo; return $result; } /** * Return a list of services for this supplier * * @param boolean $active TRUE List only active Services|False List all services */ public function services($active=TRUE) { $services = array(); // Get a list of plans made for this supplier $plans = array_keys($this->adsl_plans(FALSE)); // Start with all our ADSL Plans foreach (ORM::factory('Service')->list_bylistgroup('ADSL') as $so) if (! $active OR $so->status) if (in_array($so->product->prod_plugin_data,$plans) OR in_array($so->plugin()->provided_adsl_plan_id,$plans)) array_push($services,$so); // @todo poor cludge, we should find them without using list_bylistgroup() if (! $services) foreach (ORM::factory('Service')->list_bylistgroup('HSPA') as $so) if (! $active OR $so->status) if (in_array($so->product->prod_plugin_data,$plans) OR in_array($so->plugin()->provided_adsl_plan_id,$plans)) array_push($services,$so); return $services; } } ?>