/** * Get the data resource * * @return Mongo Cursor */ public function getData($filter_query = array()) { // print_R($filter_query);die; $cursor = $this->collection->query($filter_query)->cursor()->setReadPreference(Billrun_Factory::config()->getConfigValue('read_only_db_pref')); $this->_count = $cursor->count(); $resource = $cursor->sort($this->sort)->skip($this->offset())->limit($this->size); $ret = array(); foreach ($resource as $item) { if ($item->get('rates') && !$this->showprefix) { foreach ($item->get('rates') as $key => $rate) { $added_columns = array('t' => $key, 'tprice' => $rate['rate'][0]['price'], 'taccess' => isset($rate['access']) ? $rate['access'] : 0); if (strpos($key, 'call') !== FALSE) { $added_columns['tduration'] = Billrun_Util::durationFormat($rate['rate'][0]['interval']); } else { if ($key == 'data') { $added_columns['tduration'] = Billrun_Util::byteFormat($rate['rate'][0]['interval'], '', 0, true); } else { $added_columns['tduration'] = $rate['rate'][0]['interval']; } } $ret[] = new Mongodloid_Entity(array_merge($item->getRawData(), $added_columns, $rate)); } } else { if ($this->showprefix && (isset($filter_query['$and'][0]['key']) || isset($filter_query['$and'][0]['params.prefix']))) { foreach ($item->get('params.prefix') as $prefix) { $item_raw_data = $item->getRawData(); unset($item_raw_data['params']['prefix']); // to prevent high memory usage $entity = new Mongodloid_Entity(array_merge($item_raw_data, array('prefix' => $prefix))); $ret[] = $entity; } } else { $ret[] = $item; } } } return $ret; }
/** * Get the data resource * * @return Mongo Cursor */ public function getData($filter_query = array(), $fields = false) { $cursor = $this->getRates($filter_query); $this->_count = $cursor->count(); $resource = $cursor->sort($this->sort)->skip($this->offset())->limit($this->size); $ret = array(); foreach ($resource as $item) { if ($fields) { foreach ($fields as $field) { $row[$field] = $item->get($field); } if (isset($row['rates'])) { // convert plan ref to plan name foreach ($row['rates'] as &$rate) { if (isset($rate['plans'])) { $plans = array(); foreach ($rate['plans'] as $plan) { $plan_id = $plan['$id']; $plans[] = Billrun_Factory::plan(array('id' => $plan_id))->getName(); } $rate['plans'] = $plans; } } } $ret[] = $row; } else { if ($item->get('rates') && !$this->showprefix) { foreach ($item->get('rates') as $key => $rate) { if (is_array($rate)) { $added_columns = array('t' => $key, 'tprice' => $rate['rate'][0]['price'], 'taccess' => isset($rate['access']) ? $rate['access'] : 0); if (strpos($key, 'call') !== FALSE) { $added_columns['tduration'] = Billrun_Util::durationFormat($rate['rate'][0]['interval']); } else { if ($key == 'data') { $added_columns['tduration'] = Billrun_Util::byteFormat($rate['rate'][0]['interval'], '', 0, true); } else { $added_columns['tduration'] = $rate['rate'][0]['interval']; } } $ret[] = new Mongodloid_Entity(array_merge($item->getRawData(), $added_columns, $rate)); } } } else { if ($this->showprefix && (isset($filter_query['$and'][0]['key']) || isset($filter_query['$and'][0]['params.prefix']))) { foreach ($item->get('params.prefix') as $prefix) { $item_raw_data = $item->getRawData(); unset($item_raw_data['params']['prefix']); // to prevent high memory usage $entity = new Mongodloid_Entity(array_merge($item_raw_data, array('prefix' => $prefix))); $ret[] = $entity; } } else { $ret[] = $item; } } } } return $ret; }