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