Admin_KeyValueController::groupsAction PHP Метод

groupsAction() публичный Метод

public groupsAction ( )
    public function groupsAction()
    {
        if ($this->getParam("data")) {
            $dataParam = $this->getParam("data");
            $data = \Zend_Json::decode($dataParam);
            $id = $data["id"];
            $config = KeyValue\GroupConfig::getById($id);
            foreach ($data as $key => $value) {
                if ($key != "id") {
                    $setter = "set" . $key;
                    $config->{$setter}($value);
                }
            }
            $config->save();
            $this->_helper->json(["success" => true, "data" => $config]);
        } else {
            $start = 0;
            $limit = 15;
            $orderKey = "name";
            $order = "ASC";
            $sortingSettings = \Pimcore\Admin\Helper\QueryParams::extractSortingSettings($this->getAllParams());
            if ($sortingSettings['orderKey']) {
                $orderKey = $sortingSettings['orderKey'];
            }
            if ($sortingSettings['order']) {
                $order = $sortingSettings['order'];
            }
            if ($this->getParam("limit")) {
                $limit = $this->getParam("limit");
            }
            if ($this->getParam("start")) {
                $start = $this->getParam("start");
            }
            if ($this->getParam("overrideSort") == "true") {
                $orderKey = "id";
                $order = "DESC";
            }
            $list = new KeyValue\GroupConfig\Listing();
            $list->setLimit($limit);
            $list->setOffset($start);
            $list->setOrder($order);
            $list->setOrderKey($orderKey);
            if ($this->getParam("filter")) {
                $condition = "";
                $filterString = $this->getParam("filter");
                $filters = json_decode($filterString);
                $db = Db::get();
                $count = 0;
                foreach ($filters as $f) {
                    if ($count > 0) {
                        $condition .= " OR ";
                    }
                    $count++;
                    if (\Pimcore\Tool\Admin::isExtJS6()) {
                        $condition .= $db->getQuoteIdentifierSymbol() . $f->property . $db->getQuoteIdentifierSymbol() . " LIKE " . $db->quote("%" . $f->value . "%");
                    } else {
                        $condition .= $db->getQuoteIdentifierSymbol() . $f->field . $db->getQuoteIdentifierSymbol() . " LIKE " . $db->quote("%" . $f->value . "%");
                    }
                }
                $list->setCondition($condition);
            }
            $list->load();
            $configList = $list->getList();
            $rootElement = [];
            $data = [];
            foreach ($configList as $config) {
                $name = $config->getName();
                if (!$name) {
                    $name = "EMPTY";
                }
                $item = ["id" => $config->getId(), "name" => $name, "description" => $config->getDescription()];
                if ($config->getCreationDate()) {
                    $item["creationDate"] = $config->getCreationDate();
                }
                if ($config->getModificationDate()) {
                    $item["modificationDate"] = $config->getModificationDate();
                }
                $data[] = $item;
            }
            $rootElement["data"] = $data;
            $rootElement["success"] = true;
            $rootElement["total"] = $list->getTotalCount();
            return $this->_helper->json($rootElement);
        }
    }