array(), ); protected $_sorting = array( 'position'=>'asc', 'sku'=>'asc', ); protected $_formats = array( 'price_type'=>array('StaticList_PriceType::display'=>array()), ); /** * Return the products for a given category */ public function category($cat) { $results = array(); foreach ($this->where('active','=',TRUE)->find_all() as $po) { if ($c = unserialize($po->avail_category_id) AND in_array($cat,$c)) array_push($results,$po); } return $results; } /** * Return the best price to the uesr based on the users group's memberships * @todo This needs to be tested with more than one price group enabled */ public function get_price_array() { if (! $this->loaded()) throw new Kohana_Exception('Call to :method where no object loaded?',array(':method'=>__METHOD__)); // Figure out our eligable groups // @todo Need to work out our default groups elsewhere, not in product // All users are members of the all user group "0" $groups = array(0); $pg = unserialize($this->price_group); if (Auth::instance()->logged_in()) foreach (Auth::instance()->get_user()->group->find_all() as $go) array_push($groups,$go->id); // Work out the best price for the user $price = array(); foreach (unserialize($this->price_group) as $bill_freq => $pg) { if ($pg['show']) foreach ($groups as $gid) { if (! empty($pg[$gid])) { if (empty($price[$bill_freq]['price_base']) OR ($pg[$gid]['price_base'] AND $price[$bill_freq]['price_base'] > $pg[$gid]['price_base'])) { $price[$bill_freq]['price_setup'] = $pg[$gid]['price_setup']; $price[$bill_freq]['price_base'] = $pg[$gid]['price_base']; } } } } return $price; } /** * Test if the product is a TRIAL product * (price_type == 2) * * @return boolean */ public function is_trial() { if ($this->price_type == 2) return TRUE; else return FALSE; } } ?>