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);
}