loadComponent('JsonRequestClient'); $this->Auth->allow([ // 'search' ]); $this->set( 'naviHierarchy', (new NaviHierarchy())-> add(new NaviHierarchyEntry(__('Startseite'), 'Dashboard', 'index', false))->add(new NaviHierarchyEntry(__('Benutzer suchen'), 'StateUsers', 'search', true)) ); } public function search() { $this->loadModel('StateUsers'); $startTime = microtime(true); I18n::setLocale('de_DE'); $this->viewBuilder()->setLayout('frontend'); $searchForm = new UserSearchForm(); $timeUsed = microtime(true) - $startTime; //$this->set('timeUsed', $timeUsed); $this->set(compact('timeUsed', 'searchForm')); if ($this->request->is('post')) { $requestData = $this->request->getData(); if ($searchForm->validate($requestData)) { //var_dump($requestData); $searchString = $requestData['search']; // find user on community server db $globalSearch = '%' . $searchString . '%'; $communityUsers = $this->StateUsers ->find('all') ->contain([]); $communityUsers->where(['OR' => [ 'first_name LIKE' => $globalSearch, 'last_name LIKE' => $globalSearch, //'username LIKE' => $globalSearch, 'email LIKE' => $globalSearch ]]); //var_dump($communityUsers->toArray()); $finalUserEntrys = []; // detect states $this->loadModel('Roles'); // foreach ($pubkeySorted as $pubhex => $user) { foreach($communityUsers as $communityUser) { $finalUser = $communityUser; $finalUser['pubkeyhex'] = bin2hex(stream_get_contents($communityUser->public_key)); $state_user_id = $communityUser->id; $stateUserRole = $this->StateUserRoles->find('all')->where(['state_user_id' => $state_user_id])->all(); $role_ids = ""; foreach ($stateUserRole as $userRole) { if($role_ids != "") $role_ids .= ",".$userRole->role_id; else $role_ids = $userRole->role_id; } $roles = $this->Roles->find('all')->where(['id IN' => explode(",",$role_ids)])->all(); $role_names = ""; foreach($roles as $role) { if($role_names != "") $role_names .= "
".$role->title; else $role_names = $role->title; } $finalUser['role_name'] = $role_names; array_push($finalUserEntrys, $finalUser); } //var_dump($pubkeySorted); } else { $this->Flash->error(__('Something was invalid, please try again!')); } $this->set('finalUserEntrys', $finalUserEntrys); } $timeUsed = microtime(true) - $startTime; $this->set('timeUsed', $timeUsed); } public function assignRole() { $this->loadModel('Roles'); $this->loadModel('StateUsers'); if ($this->request->is('post')) { $requestData = $this->request->getData(); $public_hex = hex2bin($requestData['public_hex']); $stateUser = $this->StateUsers->find('all')->where(['pubkey' => $public_hex])->first(); foreach($requestData['role_id'] as $role_id) { $newStateUserRole = $this->StateUserRoles->newEntity(); $post_data = []; $post_data['state_user_id'] = $stateUser->id; $post_data['role_id'] = $role_id; $this->StateUserRoles->patchEntity($newStateUserRole, $post_data); $this->StateUserRoles->save($newStateUserRole); } $this->Flash->success(__('Role has been assigned to User.')); return $this->redirect(['controller' => 'state-user-roles', 'action' => 'search']); } $assignRoleForm = new AssignRoleForm(); $public_hex = $this->request->getParam('pass')[0]; $publichex = hex2bin($public_hex); $stateUser = $this->StateUsers->find('all')->where(['pubkey' => $publichex])->first(); $stateUserRoles = $this->StateUserRoles->find('all')->where(['state_user_id' => $stateUser->id])->all(); $role_ids = ""; foreach ($stateUserRoles as $userRole) { if($role_ids != "") $role_ids .= ",".$userRole->role_id; else $role_ids = $userRole->role_id; } $role_ids = explode(",", $role_ids); $roles = $this->Roles->find('list', array('fields' => array('id', 'title'))); $this->set('roles', $roles); $this->set('stateUser', $stateUser); $this->set('role_ids', $role_ids); $this->set('assignRoleForm', $assignRoleForm); $this->set('public_hex', $public_hex); } }