public function update()
{
try {
$this->model->setModificationDate(time());
$asset = get_object_vars($this->model);
foreach ($asset as $key => $value) {
if (in_array($key, $this->getValidTableColumns("assets"))) {
if (is_array($value)) {
$value = \Pimcore\Tool\Serialize::serialize($value);
}
$data[$key] = $value;
}
}
// metadata
$this->db->delete("assets_metadata", "cid = " . $this->model->getId());
$metadata = $this->model->getMetadata();
$data["hasMetaData"] = 0;
if (!empty($metadata)) {
foreach ($metadata as $metadataItem) {
$metadataItem["cid"] = $this->model->getId();
unset($metadataItem['config']);
if ($metadataItem["data"] instanceof Model\Element\ElementInterface) {
$metadataItem["data"] = $metadataItem["data"]->getId();
}
if (is_scalar($metadataItem["data"]) && strlen($metadataItem["data"]) > 0) {
$this->db->insert("assets_metadata", $metadataItem);
$data["hasMetaData"] = 1;
}
}
}
$this->db->insertOrUpdate("assets", $data);
// tree_locks
$this->db->delete("tree_locks", "id = " . $this->model->getId() . " AND type = 'asset'");
if ($this->model->getLocked()) {
$this->db->insert("tree_locks", ["id" => $this->model->getId(), "type" => "asset", "locked" => $this->model->getLocked()]);
}
} catch (\Exception $e) {
throw $e;
}
}