Exemplo n.º 1
0
 /**
  * Provide the user list data via json
  * @return string|json
  */
 public function data()
 {
     $page = $this->getRequestParameter('page');
     $limit = $this->getRequestParameter('rows');
     $sortBy = $this->getRequestParameter('sortby');
     $sortOrder = $this->getRequestParameter('sortorder');
     $filterQuery = $this->getRequestParameter('filterquery');
     $filterColumns = $this->getRequestParameter('filtercolumns');
     $start = $limit * $page - $limit;
     $fieldsMap = ['login' => PROPERTY_USER_LOGIN, 'firstname' => PROPERTY_USER_FIRSTNAME, 'lastname' => PROPERTY_USER_LASTNAME, 'email' => PROPERTY_USER_MAIL, 'dataLg' => PROPERTY_USER_DEFLG, 'guiLg' => PROPERTY_USER_UILG];
     // sorting
     $order = array_key_exists($sortBy, $fieldsMap) ? $fieldsMap[$sortBy] : $fieldsMap['login'];
     // filtering
     $filters = [PROPERTY_USER_LOGIN => '*'];
     if ($filterQuery) {
         if (!$filterColumns) {
             // if filter columns not set, search by all columns
             $filterColumns = array_keys($fieldsMap);
         }
         $filters = array_flip(array_intersect_key($fieldsMap, array_flip($filterColumns)));
         array_walk($filters, function (&$row, $key) use($filterQuery) {
             $row = $filterQuery;
         });
     }
     $options = array('recursive' => true, 'like' => true, 'chaining' => count($filters) > 1 ? 'or' : 'and', 'order' => $order, 'orderdir' => strtoupper($sortOrder));
     // get total user count...
     $total = $this->userService->getCountUsers($options, $filters);
     // get the users using requested paging...
     $users = $this->userService->getAllUsers(array_merge($options, ['offset' => $start, 'limit' => $limit]), $filters);
     $rolesProperty = new core_kernel_classes_Property(PROPERTY_USER_ROLES);
     $response = new stdClass();
     $readonly = array();
     $index = 0;
     foreach ($users as $user) {
         $propValues = $user->getPropertiesValues(array(PROPERTY_USER_LOGIN, PROPERTY_USER_FIRSTNAME, PROPERTY_USER_LASTNAME, PROPERTY_USER_MAIL, PROPERTY_USER_DEFLG, PROPERTY_USER_UILG, PROPERTY_USER_ROLES));
         $roles = $user->getPropertyValues($rolesProperty);
         $labels = array();
         foreach ($roles as $uri) {
             $r = new core_kernel_classes_Resource($uri);
             $labels[] = $r->getLabel();
         }
         $id = tao_helpers_Uri::encode($user->getUri());
         $firstName = empty($propValues[PROPERTY_USER_FIRSTNAME]) ? '' : (string) current($propValues[PROPERTY_USER_FIRSTNAME]);
         $lastName = empty($propValues[PROPERTY_USER_LASTNAME]) ? '' : (string) current($propValues[PROPERTY_USER_LASTNAME]);
         $uiRes = empty($propValues[PROPERTY_USER_UILG]) ? null : current($propValues[PROPERTY_USER_UILG]);
         $dataRes = empty($propValues[PROPERTY_USER_DEFLG]) ? null : current($propValues[PROPERTY_USER_DEFLG]);
         $response->data[$index]['id'] = $id;
         $response->data[$index]['login'] = (string) current($propValues[PROPERTY_USER_LOGIN]);
         $response->data[$index]['firstname'] = $firstName;
         $response->data[$index]['lastname'] = $lastName;
         $response->data[$index]['email'] = (string) current($propValues[PROPERTY_USER_MAIL]);
         $response->data[$index]['roles'] = implode(', ', $labels);
         $response->data[$index]['dataLg'] = is_null($dataRes) ? '' : $dataRes->getLabel();
         $response->data[$index]['guiLg'] = is_null($uiRes) ? '' : $uiRes->getLabel();
         if ($user->getUri() == LOCAL_NAMESPACE . DEFAULT_USER_URI_SUFFIX) {
             $readonly[$id] = true;
         }
         $index++;
     }
     $response->page = floor($start / $limit) + 1;
     $response->total = ceil($total / $limit);
     $response->records = count($users);
     $response->readonly = $readonly;
     $this->returnJson($response, 200);
 }
Exemplo n.º 2
0
 /**
  * provide the user list data via json
  * @return void
  */
 public function data()
 {
     $page = $this->getRequestParameter('page');
     $limit = $this->getRequestParameter('rows');
     $sidx = $this->getRequestParameter('sortby');
     $sord = $this->getRequestParameter('sortorder');
     $start = $limit * $page - $limit;
     switch ($sidx) {
         case 'name':
             $order = PROPERTY_USER_LASTNAME;
             break;
         case 'mail':
             $order = PROPERTY_USER_MAIL;
             break;
         case 'dataLg':
             $order = PROPERTY_USER_DEFLG;
             break;
         case 'guiLg':
             $order = PROPERTY_USER_UILG;
             break;
         case 'login':
         default:
             $order = PROPERTY_USER_LOGIN;
     }
     $gau = array('order' => $order, 'orderdir' => strtoupper($sord), 'offset' => $start, 'limit' => $limit);
     // get total user count...
     $users = $this->userService->getAllUsers();
     $counti = count($users);
     // get the users using requested paging...
     $users = $this->userService->getAllUsers($gau);
     $rolesProperty = new core_kernel_classes_Property(PROPERTY_USER_ROLES);
     $readonly = array();
     $index = 0;
     foreach ($users as $user) {
         $propValues = $user->getPropertiesValues(array(PROPERTY_USER_LOGIN, PROPERTY_USER_FIRSTNAME, PROPERTY_USER_LASTNAME, PROPERTY_USER_MAIL, PROPERTY_USER_DEFLG, PROPERTY_USER_UILG, PROPERTY_USER_ROLES));
         $roles = $user->getPropertyValues($rolesProperty);
         $labels = array();
         foreach ($roles as $uri) {
             $r = new core_kernel_classes_Resource($uri);
             $labels[] = $r->getLabel();
         }
         $firstName = empty($propValues[PROPERTY_USER_FIRSTNAME]) ? '' : (string) current($propValues[PROPERTY_USER_FIRSTNAME]);
         $lastName = empty($propValues[PROPERTY_USER_LASTNAME]) ? '' : (string) current($propValues[PROPERTY_USER_LASTNAME]);
         $uiRes = empty($propValues[PROPERTY_USER_UILG]) ? null : current($propValues[PROPERTY_USER_UILG]);
         $dataRes = empty($propValues[PROPERTY_USER_DEFLG]) ? null : current($propValues[PROPERTY_USER_DEFLG]);
         $id = tao_helpers_Uri::encode($user->getUri());
         $response->data[$index]['id'] = $id;
         $response->data[$index]['login'] = (string) current($propValues[PROPERTY_USER_LOGIN]);
         $response->data[$index]['name'] = $firstName . ' ' . $lastName;
         $response->data[$index]['mail'] = (string) current($propValues[PROPERTY_USER_MAIL]);
         $response->data[$index]['roles'] = implode(', ', $labels);
         $response->data[$index]['dataLg'] = is_null($dataRes) ? '' : $dataRes->getLabel();
         $response->data[$index]['guiLg'] = is_null($uiRes) ? '' : $uiRes->getLabel();
         if ($user->getUri() == LOCAL_NAMESPACE . DEFAULT_USER_URI_SUFFIX) {
             $readonly[$id] = true;
         }
         $index++;
     }
     $response->page = floor($start / $limit) + 1;
     $response->total = ceil($counti / $limit);
     $response->records = count($users);
     $response->readonly = $readonly;
     $this->returnJson($response, 200);
 }