Admin_ElementController::noteListAction PHP Method

noteListAction() public method

public noteListAction ( )
    public function noteListAction()
    {
        $this->checkPermission("notes_events");
        $list = new Element\Note\Listing();
        $list->setLimit($this->getParam("limit"));
        $list->setOffset($this->getParam("start"));
        $sortingSettings = \Pimcore\Admin\Helper\QueryParams::extractSortingSettings($this->getAllParams());
        if ($sortingSettings['orderKey'] && $sortingSettings['order']) {
            $list->setOrderKey($sortingSettings['orderKey']);
            $list->setOrder($sortingSettings['order']);
        } else {
            $list->setOrderKey(["date", "id"]);
            $list->setOrder(["DESC", "DESC"]);
        }
        $conditions = [];
        if ($this->getParam("filter")) {
            $conditions[] = "(`title` LIKE " . $list->quote("%" . $this->getParam("filter") . "%") . " OR `description` LIKE " . $list->quote("%" . $this->getParam("filter") . "%") . " OR `type` LIKE " . $list->quote("%" . $this->getParam("filter") . "%") . ")";
        }
        if ($this->getParam("cid") && $this->getParam("ctype")) {
            $conditions[] = "(cid = " . $list->quote($this->getParam("cid")) . " AND ctype = " . $list->quote($this->getParam("ctype")) . ")";
        }
        if (!empty($conditions)) {
            $list->setCondition(implode(" AND ", $conditions));
        }
        $list->load();
        $notes = [];
        foreach ($list->getNotes() as $note) {
            $cpath = "";
            if ($note->getCid() && $note->getCtype()) {
                if ($element = Element\Service::getElementById($note->getCtype(), $note->getCid())) {
                    $cpath = $element->getRealFullPath();
                }
            }
            $e = ["id" => $note->getId(), "type" => $note->getType(), "cid" => $note->getCid(), "ctype" => $note->getCtype(), "cpath" => $cpath, "date" => $note->getDate(), "title" => $note->getTitle(), "description" => $note->getDescription()];
            // prepare key-values
            $keyValues = [];
            if (is_array($note->getData())) {
                foreach ($note->getData() as $name => $d) {
                    $type = $d["type"];
                    $data = $d["data"];
                    if ($type == "document" || $type == "object" || $type == "asset") {
                        if ($d["data"] instanceof Element\ElementInterface) {
                            $data = ["id" => $d["data"]->getId(), "path" => $d["data"]->getRealFullPath(), "type" => $d["data"]->getType()];
                        }
                    } elseif ($type == "date") {
                        if (is_object($d["data"])) {
                            $data = $d["data"]->getTimestamp();
                        }
                    }
                    $keyValue = ["type" => $type, "name" => $name, "data" => $data];
                    $keyValues[] = $keyValue;
                }
            }
            $e["data"] = $keyValues;
            // prepare user data
            if ($note->getUser()) {
                $user = Model\User::getById($note->getUser());
                if ($user) {
                    $e["user"] = ["id" => $user->getId(), "name" => $user->getName()];
                } else {
                    $e["user"] = "";
                }
            }
            $notes[] = $e;
        }
        $this->_helper->json(["data" => $notes, "success" => true, "total" => $list->getTotalCount()]);
    }