function getDetailedCostsArray() { if (!$this->detailedCostsArray) { // lookup the cached value $detailedCostsArray = array(); $trimmedDetailedCostIds = trim($this->detailedcost_ids); if (!empty($trimmedDetailedCostIds)) { // this field is empty for 50% of the rows in the db $ids = explode(' ', $trimmedDetailedCostIds); require_once 'modules/oqc_ExternalContractDetailedCosts/oqc_ExternalContractDetailedCosts.php'; $detailedCost = new oqc_ExternalContractDetailedCosts(); foreach ($ids as $id) { /*if (Cache::contains($id)) { if (Cache::get($id)) { $detailedCostsArray[] = Cache::get($id); } } else {*/ if ($detailedCost->retrieve($id)) { // $detailedCostsArray[] = Cache::put($id, $detailedCost->toArray()); $detailedCostsArray[] = $detailedCost->toArray(); } /* else { Cache::put($id, false); } }*/ } } // insert value into cache. subsequent requests should immediately return this cached value. $this->detailedCostsArray = $detailedCostsArray; } return $this->detailedCostsArray; }
private function saveDetailedCost($isDuplicate, $id, $cost) { $detailedCostIdString = ''; $numberOfDetailedCosts = count($_REQUEST['detailedCostMonth_' . $id]); for ($i = 0; $i < $numberOfDetailedCosts; $i++) { $detailedCostId = $_REQUEST["detailedCostId_{$id}"][$i]; $month = $_REQUEST["detailedCostMonth_{$id}"][$i]; $price = $_REQUEST["detailedCostPrice_{$id}"][$i]; $detailedCost = new oqc_ExternalContractDetailedCosts(); if (!$isDuplicate && $detailedCost->retrieve($detailedCostId)) { // the detailed cost already exists. just do an update instead of creating a new row in the database $detailedCost->price = $price; $detailedCost->month = $month; $detailedCost->cost_id = $cost->id; } else { $detailedCost = new oqc_ExternalContractDetailedCosts($price, $month, $cost->id); } $detailedCost->save(); $detailedCostIdString .= $detailedCost->id . ' '; } $cost->detailedcost_ids = trim($detailedCostIdString); $cost->save(); }