public function save()
{
$version = get_object_vars($this->model);
// save main table
foreach ($version as $key => $value) {
if (in_array($key, $this->getValidTableColumns("notes"))) {
$data[$key] = $value;
}
}
$this->db->insertOrUpdate("notes", $data);
$lastInsertId = $this->db->lastInsertId();
if (!$this->model->getId() && $lastInsertId) {
$this->model->setId($lastInsertId);
}
// save data table
$this->deleteData();
foreach ($this->model->getData() as $name => $meta) {
$data = $meta["data"];
$type = $meta["type"];
if ($type == "document") {
if ($data instanceof Document) {
$data = $data->getId();
}
} elseif ($type == "asset") {
if ($data instanceof Asset) {
$data = $data->getId();
}
} elseif ($type == "object") {
if ($data instanceof Object\AbstractObject) {
$data = $data->getId();
}
} elseif ($type == "date") {
if ($data instanceof \DateTimeInterface) {
$data = $data->getTimestamp();
}
} elseif ($type == "bool") {
$data = (bool) $data;
}
$this->db->insert("notes_data", ["id" => $this->model->getId(), "name" => $name, "type" => $type, "data" => $data]);
}
return true;
}