예제 #1
0
 public function queryChildren($resource, $id, $childresource, $request, $response)
 {
     if ($resource == 'roles') {
         // new role rest service
         $roleRestSvc = new RoleRestService();
         return $roleRestSvc->queryChildren($resource, $id, $childresource, $request, $response);
     }
     return parent::queryChildren($resource, $id, $childresource, $request, $response);
 }
예제 #2
0
 public function queryChildren($resource, $id, $childresource, $request, $response)
 {
     // handle aclroleactions in special logic
     if ($childresource != "aclroleactions") {
         return parent::queryChildren($resource, $id, $childresource, $request, $response);
     }
     $roleId = $id;
     // get page and sort parameters
     $allGetVars = $request->get();
     $queryParams = array();
     foreach ($allGetVars as $key => $value) {
         if ($key == 'page' || $key == 'rows' || $key == 'sort' || $key == 'sorder' || $key == 'format') {
             continue;
         }
         //if ($value !== null && $value !== '') {
         $queryParams[$key] = $value;
         //}
     }
     $page = $request->params('page');
     if (!$page) {
         $page = 0;
     }
     if ($page >= 1) {
         $page--;
     }
     $rows = $request->params('rows');
     if (!$rows) {
         $rows = 10;
     }
     $sort = $request->params('sort');
     $sorder = $request->params('sorder');
     // fetch acl_action records
     $aclActionDo = BizSystem::getObject("system.do.AclActionDO");
     $aclActionDo->resetRules();
     $aclActionDo->setQueryParameters($queryParams);
     $aclActionDo->setLimit($rows, $page * $rows);
     if ($sort && $sorder) {
         $aclActionDo->setSortRule("[{$sort}] {$sorder}");
     }
     $dataSet = $aclActionDo->fetch();
     $total = $aclActionDo->count();
     $totalPage = ceil($total / $rows);
     // fetch role and access records
     $dataObj = BizSystem::getObject("system.do.AclRoleActionDO");
     $dataObj->setSearchRule("[role_id]={$roleId}");
     $dataObj->setQueryParameters($queryParams);
     if ($sort && $sorder) {
         $dataObj->setSortRule("[{$sort}] {$sorder}");
     }
     $dataSet1 = $dataObj->fetch();
     foreach ($dataSet1 as $rec) {
         $actionRoleAccess[$rec['action_id']] = $rec;
     }
     $dataArr = $dataSet->toArray();
     // merge 2 datasets
     for ($i = 0; $i < count($dataArr); $i++) {
         $actionId = $dataArr[$i]['Id'];
         $dataArr[$i]['access_level'] = "0";
         if (isset($actionRoleAccess[$actionId])) {
             $dataArr[$i]['role_id'] = $roleId;
             $dataArr[$i]['access_level'] = $actionRoleAccess[$actionId]['access_level'];
         }
     }
     $format = strtolower($request->params('format'));
     return $this->setResponse(array('totalPage' => $totalPage, 'data' => $dataArr), $response, $format);
 }