| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- <?php
- Lib::loadClass('RouteBase');
- class Route_UserTest extends RouteBase {
- public function handleAuth() {
- if (!User::logged()) {
- User::authByRequest();
- }
- }
- public function defaultAction() {
- UI::gora();
- UI::menu();
- try {
- $procesMenu = ProcesMenu::getInstance();
- // $procesMenu->menuAction();// like UI::menu() ?
- $userAcl = User::getAcl();
- $acl = Core_AclHelper::getAclByNamespace('default_objects/UserProcess');
- $userProcessList = $acl->getItems();
- DBG::nicePrint($userProcessList, '$userProcessList');
- $procesyInitGroup = $this->getUsedProcesInitGroupedList($userAcl);
- DBG::nicePrint($procesyInitGroup, '$procesyInitGroup');
- if (empty($procesyInitGroup)) {
- echo '<p>' . "Brak przypisanych procesów." . '</p>';
- return;
- }
- } catch (Exception $e) {
- UI::alert('danger', $e->getMessage());
- }
- UI::dol();
- }
- public function getUsedProcesInitGroupedList($userAcl) {
- $procesyInitGroup = array();
- $procesyInitList = $this->getUserProcesInitList($userAcl);
- DBG::nicePrint($procesyInitList, '$procesyInitList');
- if (empty($procesyInitList)) {
- return;
- }
- $sqlProcesyInitIds = implode(",", array_keys($procesyInitList));
- $sql = "select p.`ID`, p.`PARENT_ID`, pp.`DESC` as pp__DESC
- from `CRM_PROCES` as p
- join `CRM_PROCES` as pp on(pp.`ID`=p.`PARENT_ID`)
- where p.`ID` in({$sqlProcesyInitIds})
- ";
- $groupedProcesyInit = array();
- $db = DB::getDB();
- $res = $db->query($sql);
- while ($r = $db->fetch($res)) {
- if (!array_key_exists($r->PARENT_ID, $procesyInitGroup)) {
- $procesyInitGroup[$r->PARENT_ID] = (object)array('nr'=>$r->PARENT_ID, 'label'=>$r->pp__DESC, 'sub'=>array());
- }
- $procesyInitGroup[$r->PARENT_ID]->sub[$r->ID] = $procesyInitList[$r->ID];
- $groupedProcesyInit[] = $r->ID;
- }
- $ungroupedProcesyInit = array_diff(array_keys($procesyInitList), $groupedProcesyInit);
- if (!empty($ungroupedProcesyInit)) {
- $procesyInitGroup[$r->PARENT_ID] = (object)array('nr'=>null, 'label'=>"Pozostałe", 'sub'=>array());
- foreach ($ungroupedProcesyInit as $nr) {
- $procesyInitGroup[$r->PARENT_ID]->sub[$nr] = $procesyInitList[$nr];
- }
- }
- return $procesyInitGroup;
- }
- /**
- * List of Proces Init for user (skip filters)
- * TODO: read from CRM_PROCES_idx_GROUP_to_INIT_VIEW ?
- * TODO: read from CRM_PROCES_idx_USER_to_INIT_VIEW ? - slow
- * TODO: read from Schema_UserProcessStorageAcl ? - only for current logged in user
- */
- public function getUserProcesInitList($userAcl) {
- $userProcesInitList = array();
- $idUserGroupList = $userAcl->fetchGroups();
- $sqlIdUserGroupList = implode(",", array_keys($idUserGroupList));
- $sqlIdProcesListSql = <<<SQL
- select gi.`ID_PROCES`
- from `CRM_PROCES_idx_GROUP_to_PROCES` gi
- where gi.`ID_GROUP` in({$sqlIdUserGroupList})
- SQL;
- $fetchUserProcesInitListSql = <<<SQL
- select p.`ID`, p.`DESC`
- from `CRM_PROCES_idx` i
- join `CRM_PROCES` p on(p.`ID`=i.`idx_PROCES_INIT_ID`)
- where i.`ID_PROCES` in({$sqlIdProcesListSql})
- group by p.`ID`
- order by p.`SORT_PRIO`
- SQL;
- $db = DB::getDB();
- $res = $db->query($fetchUserProcesInitListSql);
- while ($r = $db->fetch($res)) {
- $userProcesInitList[$r->ID] = $r->DESC;
- }
- return $userProcesInitList;
- }
- }
|