Example #1
0
 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);
     }
 }