public function setResolvableData($data, $primary_key_field = null, $primary_key_value = null) { $errors = array(); foreach ($data as $key => $value) { switch ($this->fields[$key]["type"]) { case "date": if ($value != "") { $data[$key] = Model::stringToTime($value); if ($data[$key] === false) { $errors[$key][] = "Invalid Date Format. Use yy/mm/dddd."; } } break; case "datetime": if ($value != "") { $data[$key] = Model::stringToTime($value, true); if ($data[$key] === false) { $errors[$key][] = "Invalid Date Format. Use yy/mm/dddd."; } } break; case "enum": if ($data[$key] != "") { $data[$key] = array_search(trim($value), $this->fields[$key]["options"]); if ($data[$key] === false) { $errors[$key][] = "Invalid Value '<b>{$value}</b>'<br/>Possible values may include <ul><li>'" . implode("'</li><li>'", $this->fields[$key]["options"]) . "'</li></ul>"; } $data[$key] = (string) $data[$key]; } break; case "boolean": $data[$key] = $value == "Yes" ? "1" : "0"; break; case "reference": if ($data[$key] != "") { $modelInfo = Model::resolvePath($this->fields[$key]["reference"]); $model = Model::load($modelInfo["model"]); $row = $model->get(array("fields" => array($modelInfo["field"]), "conditions" => "TRIM(UPPER({$this->fields[$key]["referenceValue"]}))=TRIM(UPPER('{$data[$key]}'))")); if (isset($row[0][$modelInfo["field"]])) { $data[$key] = $row[0][$modelInfo["field"]]; } else { $errors[$key][] = "Invalid Value"; } } break; } } if (count($errors) == 0) { return $this->setData($data, $primary_key_field, $primary_key_value); } else { return array("errors" => $errors); } }