protected function getIndividualRecord($data, $request = null) { // Trigger a get hook $this->onBeforeGet($data, $request); if (!$request) { $request = new BtlRequestObject(); } $model = $this->getModel(); $tableName = $this->getTableName(); $query = $request->getQuery(); if ($query) { $data = array(); foreach ($query as $key => $val) { if ($key[0] == '_') { $data[$key] = $val; } else { $data[$key] = array(MvcQueryObjectData::LIKE => $val); } if ($val === null) { $data[$key] = array(MvcQueryObjectData::IS => null); } } } elseif ($data) { $this->performTypeCheck($data, $tableName); } else { // they passed in neither a 'data' nor a 'query' part, assume it's a query for everything $query = true; } $queryObject = new MvcQueryObject($query); $queryObject->setType('select'); $queryObject->setModel($model); $queryObject->setWhere($data); $this->configureReadFields($queryObject); $result = $this->plugin->MvcQuery->query($queryObject); if ($query) { // Trigger a get hook foreach ($result as $i => $record) { $this->onAfterGet($record); $result[$i] = $record; } } else { //TODO What do we want to do if there are no results? if (sizeof($result) == 0) { // Trigger a get hook $this->onAfterGet($result); return false; } if (sizeof($result) != 1) { throw new GsrcException(GsrcException::INVALID_NUMBER_OF_RESULTS, 'RESULT:', $result, 'LAST QUERY:', $this->plugin->MvcQuery->db->getLastQueryObject()); } $result = $result[0]; $result['_type'] = $data->_type; } return $result; }