Admin_SettingsController::websiteSettingsAction PHP Метод

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

    public function websiteSettingsAction()
    {
        try {
            if ($this->getParam("data")) {
                $this->checkPermission("website_settings");
                $data = \Zend_Json::decode($this->getParam("data"));
                if (is_array($data)) {
                    foreach ($data as &$value) {
                        $value = trim($value);
                    }
                }
                if ($this->getParam("xaction") == "destroy") {
                    if (\Pimcore\Tool\Admin::isExtJS6()) {
                        $id = $data["id"];
                    } else {
                        $id = $data;
                    }
                    $setting = WebsiteSetting::getById($id);
                    $setting->delete();
                    $this->_helper->json(["success" => true, "data" => []]);
                } elseif ($this->getParam("xaction") == "update") {
                    // save routes
                    $setting = WebsiteSetting::getById($data["id"]);
                    switch ($setting->getType()) {
                        case "document":
                        case "asset":
                        case "object":
                            if (isset($data["data"])) {
                                $path = $data["data"];
                                $element = Element\Service::getElementByPath($setting->getType(), $path);
                                $data["data"] = $element ? $element->getId() : null;
                            }
                            break;
                    }
                    $setting->setValues($data);
                    $setting->save();
                    $data = $this->getWebsiteSettingForEditMode($setting);
                    $this->_helper->json(["data" => $data, "success" => true]);
                } elseif ($this->getParam("xaction") == "create") {
                    unset($data["id"]);
                    // save route
                    $setting = new WebsiteSetting();
                    $setting->setValues($data);
                    $setting->save();
                    $this->_helper->json(["data" => $setting, "success" => true]);
                }
            } else {
                // get list of routes
                $list = new WebsiteSetting\Listing();
                $list->setLimit($this->getParam("limit"));
                $list->setOffset($this->getParam("start"));
                $sortingSettings = \Pimcore\Admin\Helper\QueryParams::extractSortingSettings($this->getAllParams());
                if ($sortingSettings['orderKey']) {
                    $list->setOrderKey($sortingSettings['orderKey']);
                    $list->setOrder($sortingSettings['order']);
                } else {
                    $list->setOrderKey("name");
                    $list->setOrder("asc");
                }
                if ($this->getParam("filter")) {
                    $list->setCondition("`name` LIKE " . $list->quote("%" . $this->getParam("filter") . "%"));
                }
                $totalCount = $list->getTotalCount();
                $list = $list->load();
                $settings = [];
                foreach ($list as $item) {
                    $resultItem = $this->getWebsiteSettingForEditMode($item);
                    $settings[] = $resultItem;
                }
                $this->_helper->json(["data" => $settings, "success" => true, "total" => $totalCount]);
            }
        } catch (\Exception $e) {
            throw $e;
            $this->_helper->json(false);
        }
        $this->_helper->json(false);
    }