Admin_SettingsController::redirectsAction PHP Метод

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

public redirectsAction ( )
    public function redirectsAction()
    {
        if ($this->getParam("data")) {
            $this->checkPermission("redirects");
            if ($this->getParam("xaction") == "destroy") {
                $data = \Zend_Json::decode($this->getParam("data"));
                if (\Pimcore\Tool\Admin::isExtJS6()) {
                    $id = $data["id"];
                } else {
                    $id = $data;
                }
                $redirect = Redirect::getById($id);
                $redirect->delete();
                $this->_helper->json(["success" => true, "data" => []]);
            } elseif ($this->getParam("xaction") == "update") {
                $data = \Zend_Json::decode($this->getParam("data"));
                // save redirect
                $redirect = Redirect::getById($data["id"]);
                if ($data["target"]) {
                    if ($doc = Document::getByPath($data["target"])) {
                        $data["target"] = $doc->getId();
                    }
                }
                $redirect->setValues($data);
                $redirect->save();
                $redirectTarget = $redirect->getTarget();
                if (is_numeric($redirectTarget)) {
                    if ($doc = Document::getById(intval($redirectTarget))) {
                        $redirect->setTarget($doc->getRealFullPath());
                    }
                }
                $this->_helper->json(["data" => $redirect, "success" => true]);
            } elseif ($this->getParam("xaction") == "create") {
                $data = \Zend_Json::decode($this->getParam("data"));
                unset($data["id"]);
                // save route
                $redirect = new Redirect();
                if ($data["target"]) {
                    if ($doc = Document::getByPath($data["target"])) {
                        $data["target"] = $doc->getId();
                    }
                }
                $redirect->setValues($data);
                $redirect->save();
                $redirectTarget = $redirect->getTarget();
                if (is_numeric($redirectTarget)) {
                    if ($doc = Document::getById(intval($redirectTarget))) {
                        $redirect->setTarget($doc->getRealFullPath());
                    }
                }
                $this->_helper->json(["data" => $redirect, "success" => true]);
            }
        } else {
            // get list of routes
            $list = new Redirect\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']);
            }
            if ($this->getParam("filter")) {
                $list->setCondition("`source` LIKE " . $list->quote("%" . $this->getParam("filter") . "%") . " OR `target` LIKE " . $list->quote("%" . $this->getParam("filter") . "%"));
            }
            $list->load();
            $redirects = [];
            foreach ($list->getRedirects() as $redirect) {
                if ($link = $redirect->getTarget()) {
                    if (is_numeric($link)) {
                        if ($doc = Document::getById(intval($link))) {
                            $redirect->setTarget($doc->getRealFullPath());
                        }
                    }
                }
                $redirects[] = $redirect;
            }
            $this->_helper->json(["data" => $redirects, "success" => true, "total" => $list->getTotalCount()]);
        }
        $this->_helper->json(false);
    }