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();
 }