public function createOrUpdate($data) { $additionalFields = array(); foreach ($data as $field => $value) { if (!in_array($field, $this->filterThisFields)) { $additionalFields[$field] = $value; unset($data[$field]); } } $connection = Propel::getConnection(AbeRequestsPeer::DATABASE_NAME); try { if (!isset($data['ABE_REQ_UID'])) { $data['ABE_REQ_UID'] = ''; } if ($data['ABE_REQ_UID'] == '') { $data['ABE_REQ_UID'] = G::generateUniqueID(); $data['ABE_REQ_DATE'] = date('Y-m-d H:i:s'); $AbeRequestsInstance = new AbeRequests(); } else { $AbeRequestsInstance = AbeRequestsPeer::retrieveByPK($data['ABE_REQ_UID']); } $AbeRequestsInstance->fromArray($data, BasePeer::TYPE_FIELDNAME); if ($AbeRequestsInstance->validate()) { $connection->begin(); $result = $AbeRequestsInstance->save(); $connection->commit(); return $data['ABE_REQ_UID']; } else { $message = ''; $validationFailures = $AbeRequestsInstance->getValidationFailures(); foreach ($validationFailures as $validationFailure) { $message .= $validationFailure->getMessage() . '. '; } throw new Exception('Error trying to update: ' . $message); } } catch (Exception $error) { $connection->rollback(); throw $error; } }