public function load($object, $params = [])
{
$validLanguages = Tool::getValidLanguages();
foreach ($validLanguages as &$language) {
$language = $this->db->quote($language);
}
$context = $this->model->getContext();
if ($context && $context["containerType"] == "fieldcollection") {
$containerKey = $context["containerKey"];
$index = $context["index"];
$fieldname = $context["fieldname"];
$container = Object\Fieldcollection\Definition::getByKey($containerKey);
$data = $this->db->fetchAll("SELECT * FROM " . $this->getTableName() . " WHERE ooo_id = ? AND language IN (" . implode(",", $validLanguages) . ") AND `fieldname` = ? AND `index` = ?", [$this->model->getObject()->getId(), $fieldname, $index]);
} else {
$container = $this->model->getClass();
$data = $this->db->fetchAll("SELECT * FROM " . $this->getTableName() . " WHERE ooo_id = ? AND language IN (" . implode(",", $validLanguages) . ")", $this->model->getObject()->getId());
}
foreach ($data as $row) {
foreach ($container->getFielddefinition("localizedfields")->getFielddefinitions() as $key => $fd) {
if ($fd) {
if (method_exists($fd, "load")) {
// datafield has it's own loader
$params["language"] = $row["language"];
$value = $fd->load($this->model, $params);
if ($value === 0 || !empty($value)) {
$this->model->setLocalizedValue($key, $value, $row["language"]);
}
} else {
if (is_array($fd->getColumnType())) {
$multidata = [];
foreach ($fd->getColumnType() as $fkey => $fvalue) {
$multidata[$key . "__" . $fkey] = $row[$key . "__" . $fkey];
}
$this->model->setLocalizedValue($key, $fd->getDataFromResource($multidata), $row["language"]);
} else {
$this->model->setLocalizedValue($key, $fd->getDataFromResource($row[$key]), $row["language"]);
}
}
}
}
}
}