Pimcore\Model\Object\Localizedfield\Dao::load PHP Method

load() public method

public load ( $object, $params = [] )
    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"]);
                        }
                    }
                }
            }
        }
    }