DESC_PL)) return $zasobObj->DESC_PL; if (empty($zasobObj->OPIS)) return $zasobObj->DESC; $opis = $zasobObj->OPIS; $label = $opis; if (mb_strlen($opis) > $posLimit) { $pos = strpos($opis, ' - '); if ($pos > $posLimit || $pos < 5) { $pos = $posLimit; $label = mb_substr($opis, 0, $posLimit, 'utf-8') . '...'; } else { $label = mb_substr($opis, 0, $pos, 'utf-8'); } } return (empty($label)) ? $zasobObj->DESC : $label; } public function getMenuData($args = []) { if ($postTask = V::get('_postTask', '', $args)) { DBG::log($args, 'array', "exec '{$postTask}'"); if (!method_exists($this, "{$postTask}PostTask")) throw new Exception("Post Task not exists!"); $this->{"{$postTask}PostTask"}($args); } $userAcl = User::getAcl(); $listObjects = $userAcl->getTablesAcl(); $listUrls = $userAcl->getUrls(); // DBG::log($listUrls, 'array', "\$listUrls"); $bookmarks = UserBookmarks::getInstance()->getBookmarks(); $makeShortLabel = [ $this, 'getRawLabel' ]; return [ 'type' => 'success', 'msg' => "OK", 'body' => [ 'version' => $this->getVersion(), 'objects' => array_values( array_filter( array_map(function ($acl, $idZasob) use ($makeShortLabel) { if (!$acl) return [ 'id' => $idZasob, 'TODO' => 'TODO' ]; $zasobObj = ProcesHelper::getZasobTableInfo($acl->getID()); return [ 'id' => $acl->getID(), 'namespace' => $acl->getNamespace(), 'name' => $acl->getName(), 'desc' => $zasobObj->DESC, 'label' => ($zasobObj->DESC_PL) ? htmlspecialchars($zasobObj->DESC_PL) : $zasobObj->DESC, 'short_label' => $makeShortLabel($zasobObj), 'opis' => htmlspecialchars($zasobObj->OPIS), // 'raw_zasob_obj' => $zasobObj, ]; }, array_values($listObjects), array_keys($listObjects)), function ($infoAcl) { if (!array_key_exists('namespace', $infoAcl)) { trigger_error("Warning: problem z zasobem {$infoAcl['id']} - brak ACL", E_USER_WARNING); return false; } return true; } ) ), 'urls' => array_map(function ($label, $idZasob) { return [ 'id' => $idZasob, 'label' => (mb_strlen($label, 'utf-8') > 100) ? mb_substr($label, 0, 100, 'utf-8') . '...' : $label, 'raw_label' => $label, ]; }, array_values($listUrls), array_keys($listUrls)), 'bookmarks' => // array_filter( array_map(function ($cls, $idZasob) use ($listObjects, $listUrls) { if (array_key_exists($idZasob, $listObjects)) { $acl = $listObjects[$idZasob]; return [ 'id' => $idZasob, 'namespace' => $acl->getNamespace(), 'name' => $acl->getName(), 'label' => $acl->getRawLabel(), 'opis' => $acl->getOpis(), 'type' => 'menu', 'class' => $cls ]; } else if (array_key_exists($idZasob, $listUrls)) { return [ 'id' => $idZasob, 'name' => $listUrls[$idZasob], 'type' => 'url', 'class' => $cls ]; } return null; }, array_values($bookmarks), array_keys($bookmarks)), // , function ($bookmark) { return null !== $bookmark; }), 'idsBookmarks' => array_keys($bookmarks), ] ]; } public function addBookmarkPostTask($args) { $zasobID = V::get('_zasobID', 0, $args, 'int'); if ($zasobID <= 0) throw new Exception('Missing _zasobID'); UserBookmarks::getInstance()->addBookmark($zasobID); User::saveProfile(); } public function removeBookmarkPostTask($args) { $zasobID = V::get('_zasobID', 0, $args, 'int'); if ($zasobID <= 0) throw new Exception('Missing _zasobID'); UserBookmarks::getInstance()->removeBookmark($zasobID); User::saveProfile(); $this->getMenuData(); } public function changeBookmarkPostTask($args) { $zasobID = V::get('_zasobID', 0, $args, 'int'); if ($zasobID <= 0) throw new Exception('Missing _zasobID'); $btnCls = V::get('btnCls', '', $args); if (empty($btnCls)) { die('Error: no button class'); } UserBookmarks::getInstance()->changeBookmark($zasobID, $btnCls); User::saveProfile(); } public function sortBookmarksPostTask($args) { $idsOrdered = V::get('ids', array(), $args, 'array', array('V', 'filterPositiveInteger')); if (empty($idsOrdered)) throw new Exception('Missing ids'); UserBookmarks::getInstance()->sortBookmarks($idsOrdered); User::saveProfile(); } }